Linux之iptables防火墙概述及相关规则(三)

本文涉及的产品
云防火墙,500元 1000GB
简介: Linux之iptables防火墙概述及相关规则(三)

三、规则的匹配


3.1 通用匹配

可直接使用,不依赖其他条件或扩展包括网络协议、IP地址、网络接口等条件


协议匹配

-p  协议名

地址匹配

-s  源地址、-d目的地址 #可以是IP、网段、域名、空(任何地址)

接口匹配

-i 入站网卡、-o  出站网卡

iptables -A FORWARD ! -p icmp -j ACCEPT
#没有-t指定表,就是指默认表filter表
#!代表条件取反,不是ICMP的都放通
iptables -A INPUT -s 192.168.109.132 -j DROP
#拒绝从哪个主机发数据包过来
iptables -I INPUT -i ens33 -s 192.168.109.0/24 -j DROP
#在行首插入  禁止该网段从ens33网卡进来

案例1


案例2



3.2 隐含匹配

要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类型等条件


3.2.1 端口匹配

--sport 源端口    --dport  目的端口


可以是个别端口、端口范围


--sport 1000

匹配源端口是1000的数据包

--sport 1000:3000

匹配源端口是1000-3000的数据包

--sport  :3000

匹配源端口是3000及以下的数据包

--sport  1000:

匹配源端口是1000及以上的数据包

注意:--sport和--dport必须配合-p  <协议类型>  使用



3.2.2 TCP标记匹配

--tcp-flags  TCP标记


#丢弃SYN请求包,放行其他包
# SYN,RST,ACK SYN  前面三个包逗号,然后空格跟一个,表明前面的三个里面除了这空格后面的SYN,其他都放行
[root@localhost ~]# iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN,RST,ACK SYN -j ACCEPT
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp flags:0x16/0x02
DROP       all  --  192.168.109.132      0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpts:20:21
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


3.2.3 ICMP类型匹配

--icmp-type  ICMP类型


可以是字符串、数字代码


Echo-Request(代码为8)

请求

Echo-Reply (代码为0)

回显

Destination-Unreachable(代码为3)

目标不可达

其他可用的icmp协议类型,可以执行iptables -p icmp -h  查看帮助信息


Request--(ping)


Reply --(pong)


有点类似乒乓,一个请求一个回显


iptables -A INPUT -p icmp -j DROP
#增加了此条规则不仅别人ping不通自己,自己也ping不通别人,这是因为回复回不来,数据有ping和pong一来一回,ping出去了,pong不回来,被防火墙拦截了
#如果我们想要双标,别人ping不通自己,但是自己也能ing通别人,怎么操作呢



3.3 显示匹配

要求以"-m扩展模块"的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件


多端口匹配:


-m multiport --sport   源端口列表


-m multiport --dport   目的端口列表


#m扩展模块可以一次指定多个端口,不必一条条写了
[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT 
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 8
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 80,22,21,20,53
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


IP范围匹配:

-m iprange --src-range  源IP范围


-m iprange --dst-range  目的IP范围


#禁止转发源地址位于192.168.109.100-192.168.109.200的udp数据包
[root@localhost ~]# iptables -A FORWARD -p udp -m iprange --src-range 192.168.109.100-192.168.109.200 -j DROP 
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 8
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 80,22,21,20,53
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
DROP       udp  --  0.0.0.0/0            0.0.0.0/0            source IP range 192.168.109.100-192.168.109.200
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


MAC地址匹配: (用的不多)

-m mac --mac-source   源MAC地址


iptables -A FORWARD -m mac --mac-source xx:xx:xx:Xx:xx:xx -j DROP
#禁止来自某MAC地址的数据包通过本机转发

状态匹配:

-m state --state连接状态


常见的连接状态:

NEW

主机连接目标主机,在目标主机上看到的第一个想要连接的包

ESTABLISHED

主机已与目标主机进行通信,判断标准只要目标主机回应了第一个包,就进入该状态

RELATED

主机已与目标主机进行通信,目标主机发起新的链接方式,一般与ESTABLISHED配合使用

INVALID

无效的封包,例如数据破损的封包状态
iptables -I INPUT -M state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#第一个包我只看22端口的包
#-p tcp是隐含匹配,可以省略-m tcp
iptables -A INPUT -p tcp -m multiport --dport 443,80,22,21,20,53 -j ACCEPT
#允许放通tcp的这些端口号
#-m multiport加载多个端口模块
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -m state --state ESTABLISHED ,RELATED -j ACCEPT
#表示与上述连接相关的数据我都放通
iptables -P INPUT DROP
#默认关闭,将以上的设置设为白名单


总结


Linux防火墙系统


组成 内核态 netilter(保存包过滤处理的规则集);用户态 iptables(防火墙规则管理工具)


四表


raw         对数据包进行状态跟踪


mangle   修改数据包内容,给数据包设置标记


nat          地址转换,转换源/目的IP或者端口


fileter       过滤数据包 放行 丢弃


五链


INPUT                入站


OUTPUT            出站


FORWARD         转发


PREROUTING    路由前修改目的地址


POSTROUTING  路由后修改源IP


链中的规则集:从上往下一次匹配,匹配到规则即停止,若都没有匹配到则按默认策略处理


iptables  -t  表  -A 在末尾添加  -j  控制类型


                        -I  在前面插入


                        -D 删除


                         -F 清空


                         -R 改


                         -nL  查


                          -P 设置默认规则


匹配条件


-p tcp|udp|icmp


-s 源IP


-d 目的IP


-i 入站网卡


-o 出站网卡


数据包通信要素

四要素

五要素

源IP        目的IP

+协议  UDP/TCP

源端口        目的端口

目录
相关文章
|
3月前
|
安全 Linux 应用服务中间件
在Linux中,包过滤防火墙与代理应用防火墙有什么区别?有哪些相应的产品?
在Linux中,包过滤防火墙与代理应用防火墙有什么区别?有哪些相应的产品?
|
3月前
|
Linux 网络安全
在Linux中,要想把iptable的规则保存到一个文件中如何做?如何恢复?
在Linux中,要想把iptable的规则保存到一个文件中如何做?如何恢复?
|
1月前
|
网络协议 Ubuntu 网络安全
|
2月前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
230 73
|
10天前
|
存储 运维 Linux
Linux防火墙firewall的使用
CentOS 7 中的 firewalld 是基于 Netfilter 的防火墙服务,支持动态配置,无需重启服务即可生效。它通过区域管理网络流量,每个区域可以设置不同的防火墙规则。默认区域为 public,可以通过命令行工具 firewall-cmd 进行管理和配置。firewalld 提供了丰富的预定义服务和区域,方便用户根据需求进行灵活配置。
29 0
|
1月前
|
运维 网络协议 安全
Linux安全运维--一篇文章全部搞懂iptables
Linux安全运维--一篇文章全部搞懂iptables
45 1
|
2月前
|
Unix Linux API
Linux内核许可规则 【ChatGPT】
Linux内核许可规则 【ChatGPT】
|
3月前
|
Linux 网络安全
linux关闭方防火墙的命令
linux关闭方防火墙的命令
84 2
|
3月前
|
网络协议 Linux
在Linux中,如何使用iptables 写⼀条规则?把来源IP为192.168.1.101访问本机80端口的包直接拒绝.
在Linux中,如何使用iptables 写⼀条规则?把来源IP为192.168.1.101访问本机80端口的包直接拒绝.
|
网络协议 安全 Linux
百度搜索:蓝易云【Linux系统下如何在防火墙开放指定端口】
在Linux系统中,防火墙是用于保护计算机安全的重要组成部分。默认情况下,大多数Linux发行版都会自带一个防火墙,如iptables、firewalld等。当我们需要运行特定的应用程序或服务时,需要在防火墙中开放相应的端口。下面就是Linux系统下如何在防火墙开放指定端口的详细步骤。
112 0
下一篇
无影云桌面