3、使用自定义链分成分成等级iptables规则: 如果,防火墙规则很多的话,这样写就显示得很乱,不明了。造成后续添加规则就在很多不便。因为,每种服务的访问量都不一样。简单的合并多个端口的做法并是不很理想。 最好为开放的每个服务都使用一条自定义链。这样,以后我们要为某服务添加或删除规则只要找到该服务对应的自定义链,就可以操作了,很方便。如下: (1)、为http 80服务自定义一条链
INPUT链调用该链
如果,使用自定义规则检测数据报文没有匹配到则返回主链INPUT 1
(2)、为https 443 服务自定义一条链
调用自定义链
如果,使用自定义规则检测数据报文没有匹配到则返回主链INPUT
(3)、为ssh服务自定义一条链
调用该链
如果,使用自定义规则检测数据报文没有匹配到则返回主链INPUT
(4)、为vsftp文件服务自定义一条链
调用该链
如果,使用自定义规则检测数据报文没有匹配到则返回主链INPUT
(5)、删除INPUT链的第6条规则(端口合并那条链) 1
使用自定义链后,规则表如下: [root@stu13 ~]# iptables --line-numbers -L -n -v Chain INPUT (policy DROP 928 packets, 83409 bytes) num pkts bytes target prot opt in out source destination 1 7351 435K ACCEPT tcp -- * * 0.0.0.0/0 192.168.60.99 state ESTABLISHED 2 6 312 http_in tcp -- * * 0.0.0.0/0 192.168.60.99 tcp dpt:80 3 0 0 https_in tcp -- * * 0.0.0.0/0 192.168.60.99 tcp dpt:443 4 2 104 ssh_in tcp -- * * 0.0.0.0/0 192.168.60.99 tcp dpt:22 5 2 104 vsftp_in tcp -- * * 0.0.0.0/0 192.168.60.99 tcp dpt:21 6 8 416 ACCEPT all -- * * 0.0.0.0/0 192.168.60.99 state RELATED 7 8 672 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy DROP 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination Chain OUTPUT (policy DROP 2 packets, 120 bytes) num pkts bytes target prot opt in out source destination 1 5842 751K ACCEPT tcp -- * * 192.168.60.99 0.0.0.0/0 state ESTABLISHED 2 0 0 ACCEPT all -- * * 192.168.60.99 0.0.0.0/0 state RELATED 3 8 672 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 Chain http_in (1 references) num pkts bytes target prot opt in out source destination 1 6 312 ACCEPT tcp -- * * 0.0.0.0/0 192.168.60.99 tcp dpt:80 state NEW 2 0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 Chain https_in (1 references) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.60.99 tcp dpt:443 state NEW 2 0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 Chain ssh_in (1 references) num pkts bytes target prot opt in out source destination 1 2 104 ACCEPT tcp -- * * 0.0.0.0/0 192.168.60.99 tcp dpt:22 state NEW 2 0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 Chain vsftp_in (1 references) num pkts bytes target prot opt in out source destination 1 2 104 ACCEPT tcp -- * * 0.0.0.0/0 192.168.60.99 tcp dpt:21 state NEW 2 0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 说明: 在INPUT链,根据实际应用情况,服务的访问繁忙程序调整,http_in、https_in、ssh_in、vsftp_in的先后顺序,来优化iptables/netfilter 的效率。 有了自定义链后,数据报文的检查流程如下图:
四、测试优化后的防火墙策略是否成功: 1、测试 http 80 服务 1 2[root@nfs ~]# curl http://192.168.60.99/index.html
This Server is OK...
2、测试 ssh 服务
Last login: Mon Aug 18 20:21:25 2014 from 192.168.60.88 3、测试vsftp 服务 D:\>ftp 192.168.60.99 连接到 192.168.60.99。 220 (vsFTPd 2.2.2) 用户(192.168.60.99:(none)): ftp 331 Please specify the password. 密码: 230 Login successful. ftp> get pub/inittab 200 PORT command successful. Consider using PASV. 150 Opening BINARY mode data connection for pub/inittab (884 bytes). 226 Transfer complete. ftp: 收到 884 字节,用时 0.07秒 12.63千字节/秒。 ftp> 4、测试ping (1)、ping本主机 D:\>ping 192.168.60.99 正在 Ping 192.168.60.99 具有 32 字节的数据: 来自 192.168.60.99 的回复: 字节=32 时间=1ms TTL=64 来自 192.168.60.99 的回复: 字节=32 时间<1ms TTL=64 来自 192.168.60.99 的回复: 字节=32 时间<1ms TTL=64 来自 192.168.60.99 的回复: 字节=32 时间<1ms TTL=64 192.168.60.99 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位): 最短 = 0ms,最长 = 1ms,平均 = 0ms (2)、本主机ping别的主机 1 [root@stu13 ~]# ping -c 1 192.168.60.88 PING 192.168.60.88 (192.168.60.88) 56(84) bytes of data. 64 bytes from 192.168.60.88: icmp_seq=1 ttl=64 time=0.590 ms --- 192.168.60.88 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 5ms rtt min/avg/max/mdev = 0.590/0.590/0.590/0.000 ms (3)、回环地址 1 [root@stu13 ~]# ping -c 1 127.0.0.1 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.375 ms --- 127.0.0.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.375/0.375/0.375/0.000 ms (责任编辑:好模板) |