IPTables防火墙初步设置

一堆iptables命令,系统环境Debian 7.0 Wheezy。

# 允许所有loopback(lo)通信,拒绝未通过lo发往127/8的数据包。允许之后,WordPress的WP 
# SuperCache插件才能正常使用。
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# 允许SSH服务器22端口。如果客户端在120秒内尝试登录5次,屏蔽此客户端120秒
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name SSH --update --seconds 120 --hitcount 5 --rttl -j DROP
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name SSH --set -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT# 允许Web服务器80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 允许Google DNS服务器数据包通过防火墙,否则无法解析域名(前提是你的服务器使用Google DNS)
iptables -A INPUT -s 8.8.8.8 -j ACCEPT
iptables -A INPUT -s 8.8.4.4 -j ACCEPT

# 允许ICMP ping
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# 允许apt从ftp.us.debian.org和security.debian.org进行更新。但是我发现每次apt-get update
# 的时候,这两个域名解析出的IP似乎都会不同。允许DNS之后,完全可以在命令中写主机名,然后iptables
# 会把解析出的多个IP全部添加到规则中去
iptables -A INPUT -s ftp.us.debian.org -j ACCEPT
iptables -A INPUT -s security.debian.org -j ACCEPT

# 允许在WordPress内安装插件及主题
iptables -A INPUT -s wordpress.org -j ACCEPT
# 允许WordPress仪表盘显示链入链接
iptables -A INPUT -s blogsearch.google.com -j ACCEPT

# 把filter表INPUT链条和FORWARD链条默认策略设置为DROP(阻止所有发往当前主机的数据包)
# OUTPUT链条默认策略为ACCEPT(允许本机向外发数据包),不做改动
iptables -P INPUT DROP
iptables -P FORWARD DROP

目前我只能算iptables初学者,还有好多东西没搞明白。防火墙方面暂时就到这里,手头紧急任务完成后,再回过头来深入研究iptables。 (1896)


原文地址:http://caibaoz.com/blog/2013/06/06/iptables_basic_rules/