iptables是在Linux 环境下一款优秀的软件防火墙,通过配置iptables的数据流向过滤规则,可以有效的关闭、限制服务器上的各端口数据的发送和接收,提高系统的安全性。iptables有三个内置的数据流链(chains),分别是流入链(INPUT)、流出链(OUTPUT)和转发链(FORWORD),我们就是通过对这三个数据流链增加各种规则来限制数据流动。本文主要介绍INPUT和OUTPUT。
iptables是在Linux 环境下一款优秀的软件防火墙,通过配置iptables的数据流向过滤规则,可以有效的关闭、限制服务器上的各端口数据的发送和接收,提高系统的安全性。iptables有三个内置的数据流链(chains),分别是流入链(INPUT)、流出链(OUTPUT)和转发链(FORWORD),我们就是通过对这三个数据流链增加各种规则来限制数据流动。本文主要介绍INPUT和OUTPUT。
大多数Linux系统默认都会安装iptables。如果你的系统里面还没有安装它,可以使用yum命令来安装它。
在介绍如何配置iptables之前,先简单介绍一下iptables的命令,后面将会用到它们。
03 | iptables -D chain rulenum |
04 | iptables -I chain [rulenum] |
05 | iptables -R chain rulenum |
11 | iptables -P chain target |
12 | iptables -E old-chain new-chain |
在配置之前先查看一下系统中是不是已经有配置过的规则,如果你的机器没有配置过,显示和下面的类似。
如果已经有了规则,但是你确定需要重新指定可以使用下面的命令清除已有规则。
接下来按照从严的原则来配置,目的就是为了提高系统的安全性。需要阻止一切不需要的数据流动。
在阻止一切流入包之前,先要允许SSH包流入,不然会把自己挡在防火墙的外面,无法连接服务器。
1 | iptables -A INPUT -p tcp --dport 22 -j ACCEPT; |
注意这里如果你修改过SSH的默认端口,那么应该使用修改过之后的端口号,如果你不是使用SSH登录的而是使用Telnet登录,应该用telnet的端口(默认23)。
确认你上面的操作正确,不会把自己挡在防火墙外后,接下来禁止其他端口的流入包
1 | iptables -A INPUT -j DROP |
让我们抓Google的主页试试看,你的服务器停留在了解析google.com的ip地址上,因为机器已经收不到域名服务器发送过来的解析结果了。 iptables-wget-google.png
然后你可以删除上面的规则
2 | iptables -D INPUT -j DROP |
删除之后,你就可以顺利抓取Google的主页了。
当然我们为了系统的安全我们是需要这条规则的,不过不能把它放在前面,我们需要把它放到其他规则的后面,接下来先添加其他软件需要开放的端口。
01 | iptables -A INPUT -p tcp --dport 22 -j ACCEPT; |
02 | iptables -A INPUT -p tcp --dport 53 -j ACCEPT |
03 | iptables -A INPUT -p udp --dport 53 -j ACCEPT |
04 | iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT |
05 | iptables -A OUTPUT -p udp --sport 53 -j ACCEPT |
06 | iptables -A INPUT -p tcp --dport 80 -j ACCEPT |
07 | iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT |
08 | iptables -A INPUT -p tcp --dport 443 -j ACCEPT |
09 | iptables -A OUTPUT -p tcp --sport 443 -j ACCEPT |
10 | iptables -A INPUT -p tcp -m multiport --destination-port 20,21 -j ACCEPT |
11 | iptables -A OUTPUT -p tcp -m multiport --source-port 20,21 -j ACCEPT |
12 | iptables -A INPUT -p tcp -m multiport --destination-port 47,1723 -j ACCEPT |
13 | iptables -A INPUT -p gre -j ACCEPT |
14 | iptables -A OUTPUT -p tcp -m multiport --source-port 47,1723 -j ACCEPT |
15 | iptables -A OUTPUT -p gre -j ACCEPT |
16 | iptables -A INPUT -p tcp -m multiport --destination-port 25,110,143 -j ACCEPT |
17 | iptables -A OUTPUT -p tcp -m multiport --source-port 25,110,143 -j ACCEPT |
18 | iptables -A INPUT -j DROP |
把修改过的规则保存起来,重启iptables。
2 | service iptables restart |
因本文不是用Markdown格式的编辑器书写的,转换的页面可能不符合MIP标准。