iptables在基本过滤条件的基础上还可以扩展其他条件,在使用时需要使用-m参数来启动这些扩展功能,语法如下:
一:根据MAC地址过滤
1)根据IP过滤的规则,当对方修改IP后,防火墙会失效
iptables -F
iptables -I INPUT -s 192.168.4.10 -p tcp --dport 22 -j DROP
#设置规则禁止192.168.4.10使用ssh远程本机
但是,当client主机修改IP地址后,该规则就会失效,注意因为修改了IP,对client主机的远程连接会断开。 根据MAC地址过滤,可以防止这种情况的发生。
2)可以通过NMAP扫描对方的mac地址
nmap -n -sP 192.168.4.10
Starting Nmap 6.40 ( http://nmap.org ) at 2021-05-11 03:42 EDT
Nmap scan report for 192.168.4.10
Host is up (0.00026s latency).
MAC Address: 52:54:00:65:44:B1 (QEMU Virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
拒绝52:54:00:65:44:B1 这台主机远程本机
iptables -A INPUT -p tcp --dport 22 -m mac --mac-source 52:54:00:65:44:B1 -j DROP
二:基于多端口设置过滤规则
一次需要过滤或放行很多端口
例:一次性开启20,25,80,110,143,16501到16800所有的端口
iptables -A INPUT -p tcp -m multiport --dports 20,25,80,110,143,16501:16800 -j ACCEPT
提示:多端口还可以限制多个源端口,但因为源端口不固定,一般不会使用,限制多个源端口的参数是--sports.
三:根据IP地址范围设置规则
1)允许从 192.168.4.10-192.168.4.20 主机ssh远程登录本机
iptables -A INPUT -p tcp --dport 22 -m iprange --src-range 192.168.4.10-192.168.4.20 -j ACCEPT
注意:这里也可以限制多个目标IP的范围,参数是--dst-range,用法与--src-range一致。
2)禁止从 192.168.4.0/24 网段其他的主机ssh远程登录本机
iptables -A INPUT -p tcp --dport 22 -s 192.168.4.0/24 -j DROP
所有iptables规则都是临时规则,如果需要永久保留规则需要执行如下命令:
安装iptables-services并启动服务,保存防火墙规则。
yum -y install iptables-services
systemctl start iptables.service
systemctl enable iptables.service
service iptables save
防火墙规则存放文件:
/etc/sysconfig/iptables
iptables其他拓展模块还有很多,可以通过 man iptables-extensions 命令去查看。