承接上文,上文介绍了iptables的工作原理,四表五链,以及基本规则的增删改查。本文为上文的拓展,继续延申iptables规则设置的匹配方式。以及如何备份,还原iptables设置,还有修改iptables的初始化设置
内容预知
1.通用匹配
1.1 协议匹配
1.2 地址匹配
1.3 接口匹配
2.隐含匹配
2.1 端口匹配
2.2 TCP标志位的匹配
2.3 ICMP的类型匹配
2.3.1 请求规则设置
2.3.2 回显匹配
2.3.3 显示目的不可达匹配
3.显示匹配
3.1 多端口匹配
3.2 IP范围匹配
3.3 MAC匹配
3.4 状态匹配
4. 备份与还原iptables规则设置
4.1 备份iptables设置
4.2 一键导出,设置为当前防火墙设置
4.3 修改iptables的默认设置
1.通用匹配
直接指定目的网段,IP地址,出入站网卡,从而直接对该类主机进行权限设置操作
通用的匹配方式一般为三种:
协议匹配 | -p 协议名 |
地址匹配 | -s 源地址、-d 目的地址 。可以是IP、网段、域名、空(任何地址 |
接口匹配 | -i 入站网卡、-o 出站网卡 |
上文中运用的实例基本都是协议匹配完成,协议匹配中还存在一个取反匹配
[root@localhost ~]#iptables -A INPUT ! -p icmp -j ACCEPT
[root@localhost ~]#iptables -nL
测试结果:
直接对IP地址,源地址,目的地址或则网段中的主机进行权限操作
[root@localhost ~]#iptables -A INPUT -s 192.168.73.110 -j DROP
[root@localhost ~]#iptables -nL
测试结果:
可以认为是对地址匹配的进一步设置,具体化到防火墙主机的网卡设置 。
[root@localhost ~]#iptables -A INPUT -i ens33 -s 192.168.73.0/24 -j DROP
2.隐含匹配
要求以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类 型等条件。
--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
这里的防火墙规则运用到了TCP的三次握手规则,我在之前的博客中有详细记录三次握手:
一次性学会传输层协议相关内容(站在外面干啥呢?点进来看看啊)_站在这别动,我去给你买橘子的博客-CSDN博客https://blog.csdn.net/qq_62462797/article/details/125764066?spm=1001.2014.3001.5501
--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
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
3.显示匹配
要求以“-m扩展模块”的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件
[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
[root@localhost ~]# iptables -A FORWARD -p udp -m iprange --src-range 192.168.73.150-192.168.73.200 -j DROP
该方式范围过于有限,且操作不方便,所以并不受行内推崇使用
-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 | 无效的封包,例如数据破损的封包状态 |
[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
最后一步设置为白名单:代表只有通过层层筛选最终能够建立联系的主机,才能够与本机进行所有端口的连接使用
4. 备份与还原iptables规则设置
我们对iptables命令行中的设置,都是临时设置,只要遇到服务器关机,或者服务重启时,所有的设置都会清空且还原为原本的设置。为此,我们可以对已经测试完毕符合我们需求的防火墙设置进行备份,在必要时,可以一键还原
格式: iptables-save >/指定的文件
[root@localhost ~]#iptables-save >/opt/iptables.bak
[root@localhost ~]#iptables-restore
iptables的默认配置文件存在于 /etc/sysconfig/iptables
若想永久修改只需要将备份的iptables文件重定向输入到默认配置文件(覆盖)
cat /opt/iptables.bak >/etc/sysconfig/iptables
或则将当前的设置修改为默认配置:
iptables-save >/etc/sysconfig/iptables
注意:无论时什么要修改方式,谨记修改重要配置先备份的原则,修改iptables默认设置前先进行备份