iptables配置

1、配置一个filter表的防火墙
1)查看本机关于iptables的设置情况
iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination

可以看到什么规则都没有。如果你在安装linux时没有选择启动防火墙,查看iptables时就是这样的。

2)清除原有规则
不管你在安装linux时是否启动了防火墙,如果你想设置属于自己的防火墙,那就清除现在filter的所有规则。

iptables -F #清除filter中所有规则链的规则
iptables -X #清除filter中使用者自定链中的规则
/etc/rc.d/init.d/iptables save #保存规则,这样就可以写到/etc/sysconfig/iptables文件
service iptables restart #重启才会生效

3)指定预设规则
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
备注:
上面的预设规则是要控制流入的数据包,但是流出的包不需要做太多限制,而是采取accept

4)添加规则
首先添加INPUT链,INPUT的默认规则是drop,所以我们就写需要accept(通过)的链
为了能采用远程SSH登录,我们要开启22端口。
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp –sport 22 -j ACCEPT(如果你把OUTPUT链设置成drop的话,也要写上这一条,否则无法SSH)

其他的端口也一样,如果开启了web服务器,OUTPUT设置成drop的话,同样也要添加一条链:
iptables -A OUTPUT -p tcp –sport 80 -j ACCEPT
如果做了web服务器,开启80端口:
iptables -A INPUT -p tcp –dport 80 -j ACCEPT

如果做了tp服务器,开启20、21端口:
iptables -A INPUT -p tcp –dport 21 -j ACCEPT
iptables -A INPUT -p tcp –dport 20 -j ACCEPT

如果做了邮件服务器,开启25、110端口:
iptables -A INPUT -p tcp –dport 25 -j ACCEPT
iptables -A INPUT -p tcp –dport 110 -j ACCEPT

如果做了DNS服务器,开启53端口:
iptables -A INPIT -p tcp –dport 53 -j ACCEPT

允许icmp包通过,也就是允许ping
iptables -A INPUT -p icmp -j ACCEPT(OUTPUT设置成drop的话)
iptables -A OUTPUT -p icmp -j ACCEPT(INPUT设置成drop的话)

备注:
处于更安全的方式考虑,如果你把OUTPUT链也设置成drop的话,那么你添加的规则就多一些,就像上边添加允许SSH登录一样,照着写就行。

下面写一下更加细致的规则,就是限制某台机器
比如:我们只允许192.168.0.3的机器进行SSH连接
iptables -A INPUT -s 192.168.0.3 -p tcp –dport 22 -j ACCEPT
备注:
a、如果要允许或限制一段ip地址,可用192.168.0.0/24表示192.168.0.1-255的所有ip。记得把/etc/sysconfig/iptables里的这一行删掉:
iptables -A INPUT -p tcp -m tcp –dport 22 -j ACCEPT,因为它表示所有地址都可以登录
b、凡是采用命令的方式,只在当时生效。所以需要保存,就要重启后才起作用:
/etc/rc.d/init.d/iptables save