Linux iptables 配置详解
目录
Filter 表防火墙配置
1. 查看当前规则
iptables -L -n
2. 清除原有规则
iptables -F
iptables -X
3. 设定预设规则
iptables -p INPUT DROP
iptables -p OUTPUT ACCEPT
iptables -p FORWARD DROP
INPUT 和 FORWARD 链默认 DROP,OUTPUT 链默认 ACCEPT(流入流出数据包分别按允许/禁止原则处理)。
4. 添加 INPUT 链规则
开启 SSH(22 端口):
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
WEB 服务(80 端口):
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
邮件服务(25、110 端口):
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
FTP 服务(20、21 端口):
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
DNS 服务(53 端口):
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
ICMP(ping):
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
loopback:
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT
5. 添加 OUTPUT 链规则
禁止不安全端口(31337-31340):
iptables -A OUTPUT -p tcp --sport 31337 -j DROP
iptables -A OUTPUT -p tcp --dport 31337 -j DROP
其他应禁止端口:31335、27444、27665、20034(NetBus)、9704、137-139(SMB)、2049(NFS)
6. 限制特定 IP 访问
仅允许 192.168.0.3 的 SSH 连接:
iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT
允许 192.168.0.0/24 网段:
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
排除特定 IP(!192.168.0.3 表示除外)。
删除规则:
iptables -D INPUT -p tcp --dport 22 -j ACCEPT
7. 添加 FORWARD 链规则
转发已建立和相关连接:
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
丢弃非 SYN 的新连接(防异常 TCP 包):
iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
限制 IP 碎片(防攻击):
iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
限制 ICMP 包(防 ping 泛洪):
iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
NAT 表防火墙配置
1. 查看 NAT 配置
iptables -t nat -L
2. 清除 NAT 规则
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
3. 防止外网用内网 IP 欺骗
iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
4. 禁止指定地址连接
禁止与 211.101.46.253 的所有连接:
iptables -t nat -A PREROUTING -d 211.101.46.253 -j DROP
5. 禁止指定端口
禁用全局 FTP(21 端口):
iptables -t nat -A PREROUTING -p tcp --dport 21 -j DROP
仅禁用 211.101.46.253 地址的 FTP:
iptables -t nat -A PREROUTING -p tcp --dport 21 -d 211.101.46.253 -j DROP
最终规则
状态追踪(drop 非法连接、允许已建立连接):
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
保存配置
/etc/rc.d/init.d/iptables save
service iptables restart