iptables 一般配置

自己总结了一些iptables的典型配置,写成一个脚本,如果配置丢失直接执行这个脚本就可以了:
/etc/sysconfig/iptables-config 需要添加一个ftp模块 (2.4内核经测试没问题,其他版本内核不确定)

# Load additional iptables modules (nat helpers)
#   Default: -none-
# Space separated list of nat helpers (e.g. 'ip_nat_ftp ip_nat_irc'), which
# are loaded after the firewall rules are applied. Options for the helpers are
# stored in /etc/modprobe.conf.
IPTABLES_MODULES="ip_conntrack_ftp"

xt_recent模块需要修改配置(iptables 1.4.7版本,之前版本可能不同),修改列表大小
/etc/modeprob.d/xt_recent.conf

options xt_recent ip_list_tot=1024 ip_pkt_list_tot=200

iptables.rules.sh(注意顺序,弄错了会非常麻烦)

#!/bin/sh
#清除 iptables 内一切现存的规则
iptables -F

#设置 INPUT、FORWARD、及 OUTPUT 链的缺省策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

#localhost
iptables -A INPUT -i lo -j ACCEPT

#允许属于现存及相关连接的封包
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#Anti-attack
iptables -I INPUT -i eth0 -p tcp --dport 80 -m connlimit --connlimit-above 30 -j REJECT
iptables -A INPUT -i eth0 -p tcp --dport 80 -m recent --name bad_80_access --update --seconds 60 --hitcount 150 -j REJECT
iptables -A INPUT -i eth0 -p tcp --dport 80 -m recent --name bad_80_access --set -j ACCEPT

#Allow HTTP and HTTPS connections from anywhere (the normal ports for websites and SSL).
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

#FTP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT

#MySQL
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

#Allow ping
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

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

#svn
#iptables -A INPUT -p tcp --dport 3690 -j ACCEPT

#sphinx
iptables -A INPUT -p tcp --dport 9312 -j ACCEPT

iptables -I INPUT -s 192.162.0.0/16 -j DROP

#must save first
/sbin/service iptables save
#restart
/sbin/service iptables restart
#策略改变了,需要重启服务添加fail2ban规则链
service fail2ban restart

如果遇到 iptables: Unknown error 4294967295 移步这里

发表评论

电子邮件地址不会被公开。

*