禁ping的相关策略
1)默认直接禁ping的问题?
[root@proxy ~]# iptables -I INPUT -p icmp -j DROP
//设置完上面的规则后,其他主机确实无法ping本机,但本机也无法ping其他主机
//当本机ping其他主机,其他主机回应也是使用icmp,对方的回应被丢弃
2)禁止其他主机ping本机,允许本机ping其他主机
[root@proxy ~]# iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
//仅禁止入站的ping请求,不拒绝入站的ping回应包
注意:关于ICMP的类型,可以参考help帮助,参考命令如下:
[root@proxy ~]# iptables -p icmp –help
防火墙扩展规则
1.根据MAC地址封锁主机
2.在一条规则中开放多个TCP服务
3.根据IP范围设置封锁规则
iptables在基本过滤条件的基础上还扩展了很多其他条件,在使用时需要使用-m参数来启动这些扩展功能,语法如下:
iptables 选项 链名称 -m 扩展模块 –具体扩展条件 -j 动作
根据MAC地址过滤
1)根据IP过滤的规则,当对方修改IP后,防火墙会失效
[root@proxy ~]# iptables -F
[root@proxy ~]# iptables -I INPUT -s 192.168.4.100 -p tcp –dport 22 -j DROP
//设置规则禁止192.168.4.100使用ssh远程本机
但是,当client主机修改IP地址后,该规则就会失效,注意因为修改了IP,对client主机的远程连接会断开,需要使用virt-manager开启虚拟机操作:
[root@client ~]# ifconfig eth0 192.168.4.101
[root@client ~]# ssh 192.168.4.5 //依然成功
根据MAC地址过滤,可以防止这种情况的发生
[root@client ~]# ip link show eth0 //查看client的MAC地址
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 52:54:00:00:00:0b brd ff:ff:ff:ff:ff:ff
[root@proxy ~]# iptables -A INPUT -p tcp –dport 2 -m mac –mac-source 52:54:00:00:00:0b -j DROP
//拒绝52:54:00:00:00:0b这台主机远程本机
步骤二:基于多端口设置过滤规则
1)一次需要过滤或放行很多端口时会比较方便
[root@proxy ~]# iptables -A INPUT -p tcp -m multiport –dports 20:22,25,80,110,143,16501:16800 -j ACCEPT
//一次性开启20,21,22,25,80,110,143,16501到16800所有的端口
提示,多端口还可以限制多个源端口,但因为源端口不固定,一般不会使用,限制多个源端口的参数是–sports.
步骤三:根据IP地址范围设置规则
1)允许从 192.168.4.10-192.168.4.20 登录
[root@proxy ~]# 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 网段其他的主机登录
[root@proxy ~]# iptables -A INPUT -p tcp –dport 22 -s 192.168.4.0/24 -j DROP