目录
一、通用匹配
1)协议匹配
2)地址匹配
3)接口匹配
二、隐含匹配
1)端口匹配
2)TCP标志位的匹配
3)ICMP的类型匹配
①请求规则设置
②回显匹配
②显示目的不可达匹配
三、显示匹配
1 )多端口匹配
2)IP范围匹配
3)MAC匹配
4)状态匹配
四、备份与还原iptables规则设置
1)备份iptables设置
2)一键导出,设置为当前防火墙设置
3)修改iptables的默认设置
一、通用匹配
直接指定目的网段,IP地址,出入站网卡,从而直接对该类主机进行权限设置操作
通用的匹配方式一般为三种:
协议匹配 | -p 协议名 |
地址匹配 | -s 源地址、-d 目的地址 。可以是IP、网段、域名、空(任何地址 |
接口匹配 | -i 入站网卡、-o 出站网卡 |
1)协议匹配
上文中运用的实例基本都是协议匹配完成,协议匹配中还存在一个取反匹配
[root@localhost ~]#iptables -A INPUT ! -p icmp -j ACCEPT
[root@localhost ~]#iptables -nL
测试结果:
2)地址匹配
直接对IP地址,源地址,目的地址或则网段中的主机进行权限操作
[root@localhost ~]#iptables -A INPUT -s 192.168.73.110 -j DROP
[root@localhost ~]#iptables -nL
测试结果:
3)接口匹配
可以认为是对地址匹配的进一步设置,具体化到防火墙主机的网卡设置
[root@localhost ~]#iptables -A INPUT -i ens33 -s 192.168.73.0/24 -j DROP
二、隐含匹配
要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类 型等条件
1)端口匹配
--sport | 源端口 |
--dport | 目的端口 |
对于端口的指定可以为单一,也可以为一个范围
--sport 100 指定的就是匹配源端口100
--sport 100:200 就是指定100-200这个范围
--sport 100: 就是指定100及其100以上的端口
--sport 200: 就是指定200及其200以下的源端口
[root@localhost ~]#iptables -A INPUT -p tcp --dport 20:21 -j REJECT
2)TCP标志位的匹配
--tcp-flags TCP 标记
[root@localhost ~]# iptables -I INPUT -p tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN,ACK -j REJECT
[root@localhost ~]# iptables -I OUTPUT -p tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN,ACK -j REJECT
3)ICMP的类型匹配
ICMP类型可以是字符串、数字代码:
ICMP类型 | 含义 |
Echo-Request (代码为8) | 表示请求 |
Echo- -Reply (代码为0) | 表示回显 |
Dest ination-Unreachable (代码为3) | 表示目标不可达 |
--icmp-type ICMP类型
①请求规则设置
[root@localhost ~]#iptables -A INPUT -p icmp --icmp-type 8 -j REJECT
其他主机ping本机测试:
②回显匹配
[root@localhost ~]#iptables -A INPUT -p icmp --icmp-type 0 -j REJECT
其他主机ping本机测试:
如果设置到出站数据包处理链(OUTPUT上),就是双方无法进行平命令,且没有信息的回显
②显示目的不可达匹配
[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
三、显示匹配
要求以“-m扩展模块”的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件
1 )多端口匹配
- -m multiport --sport 源端口列表
- -m multiport --dport 目的端口列表
[root@localhost ~]#iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPT
[root@localhost ~]#iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT
2)IP范围匹配
- -m iprange --src-range 源IP范围
- -m iprange --dst-range 目的IP范围
[root@localhost ~]# iptables -A FORWARD -p udp -m iprange --src-range 192.168.73.150-192.168.73.200 -j DROP
3)MAC匹配
该方式范围过于有限,且操作不方便,所以并不受行内推崇使用
-m mac -- -mac- source MAC地址
iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
#禁止来自某MAC地址的数据包通过本机转发
4)状态匹配
格式:
-m state --state连接状态
状态 | 含义 |
NEW | 主机连接目标主机,在目标主机上看到的第一个想要连接的包 |
ESTABLISHED | 主机已与目标主机进行通信,判断标准只要目标主机回应了第一个包,就进入该状态 |
RELATED | 主机已与目标主机进行通信,目标主机发起新的链接方式,一般与ESTABLISHED配合使用 |
INVALID | 无效的封包,例如数据破损的封包状态 |
[root@localhost ~]# iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 443,80,22,21,20,53 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p udp --dport 53 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@localhost ~]# iptables -P INPUT DROP
最后一步设置为白名单:代表只有通过层层筛选最终能够建立联系的主机,才能够与本机进行所有端口的连接使用
四、备份与还原iptables规则设置
我们对iptables命令行中的设置,都是临时设置,只要遇到服务器关机,或者服务重启时,所有的设置都会清空且还原为原本的设置。为此,我们可以对已经测试完毕符合我们需求的防火墙设置进行备份,在必要时,可以一键还原
1)备份iptables设置
格式: iptables-save >/指定的文件
[root@localhost ~]#iptables-save >/opt/iptables.bak
2)一键导出,设置为当前防火墙设置
[root@localhost ~]#iptables-restore </opt/iptables.bak
3)修改iptables的默认设置
iptables的默认配置文件存在于 /etc/sysconfig/iptables
若想永久修改只需要将备份的iptables文件重定向输入到默认配置文件(覆盖)
cat /opt/iptables.bak >/etc/sysconfig/iptables
或则将当前的设置修改为默认配置
iptables-save >/etc/sysconfig/iptables
注意:无论时什么要修改方式,谨记修改重要配置先备份的原则,修改iptables默认设置前先进行备份