查看与清除保存规则:
查看本机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
原文地址:http://blog.csdn.net/xinguimeng/article/details/44041757