辛星解读Linux下iptables的配置


查看与清除保存规则:

查看本机iptables设置: iptables -L -n

清除预设表filter中的所有规则连的规则: iptables -F

清除预设表filter中使用者自定链中的规则: iptables -X

把当前配置保存: /etc/rc.d/init.d/iptables save

重启iptables功能: service iptables restart

设定预设规则:

iptables -p INPUT DROP

iptables -p OUTPUT ACCEPT

iptables -p FORWARD DROP

上面的意思是超出了iptables里的filter表中的两个链规则(INPUT、FORWARD)时,不在这两个规则包里的数据包直接DROP,也就是放弃。这样的配置还是很安全的,我们要控制流入数据包。而对于OUTPUT链,也就是流出的包,我们不用做太多限制,而是采用ACCEPT,也就是说,不在这个规则里的包也可以通过。

也就是说INPUT、FORWARD这两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过。当然我们也可以三个链都使用DROP,但是这样要写的规则就会增加。如果我们只想要有限的几个规则,比如只作为web服务器,那么我们还是推荐这三个链都是DROP。

INPUT链:

INPUT链的默认规则是DROP,我们就需要写ACCEPT(通过)的链:

为了能远程登录,我们要开启22端口,操作为:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT (注意,如果我们把OUTPUT设置为DROP的时候要写上它,如果我们忘了写它,那么会出现始终无法ssh的情况)

如果我们做了web服务器,我们需要开启80端口,操作为:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

当然如果我们的WEB服务器把OUTPUT也设置为了DROP,那么还需要加上:

iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

如果我们做了邮件服务器,通常需要开启25和110端口:

iptables -A INPUT -p tcp --dport 110 -j ACCEPT

iptables -A INPUT -p tcp --dport 25 -j ACCEPT

如果我们做了DNS服务器,那么通常开启53端口:

iptables -A INPUT -p tcp --dport 53 -j ACCEPT

允许loopback,不然会导致DNS无法正常关闭等问题:

iptables -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)

iptables -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)

OUTPUT链:

由于OUTPUT链默认规则是ACCEPT,所以我们需要些DORP(放弃)的链。

我们可以减少不安全的端口连接,比如31337,如下:

iptables -A OUTPUT -p tcp --sport 31337 -j DROP

iptables -A OUTPUT -p tcp --dport 31337 -j DROP

比如我们只允许192.168.0.101的机器进行SSH连接,如下:

iptables -A INPUT -s 192.168.0.101 -p tcp --dport 22 -j ACCEPT

如果要允许或者限制一段IP可以用192.168.0.0/24表示192.168.0.1-255之间的所有IP,这里的24是子网掩码数。

如果我们允许所有IP都可以进行SSH连接,如下:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

保存配置:

因为对于命令的方式,都是即时生效的,如果想要重启后也生效,就要写入到/etc/sysconfig/iptables里面。

我们可以使用/etc/rc.d/init.d/iptables save来保存当前配置到配置文件中

FORWARD链:

FORWARD链的默认规则也是DROP,所以我们就写需要ACCEPT的链,对正在转发链的监控。

首先我们需要开启转发功能,在做NAT时,FORWARD默认规则是DROP时,必须做:

iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLLISHED -j ACCEPT

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

我们丢弃坏的TCP包:

iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP

我们处理IP碎片数量,防止攻击,允许每秒100个:

iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包:

iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

相关内容