
Linux iptables 规则配置核心在于“先设策略、再放通行、最后堵风险”。默认全通很危险,建议从清空规则、收紧默认策略起步,再按需开放服务端口和连接状态。
基础清理与默认策略设定
配置前务必清空旧规则,避免冲突或误拦截:
-
清空所有链规则:
iptables -F(filter 表);iptables -t nat -F(nat 表) -
删除自定义链:
iptables -X -
设置默认拒绝策略:
iptables -P INPUT DROP、iptables -P FORWARD DROP、iptables -P OUTPUT ACCEPT(出站通常宽松)
必须放行的基础通信
锁死 INPUT 后,若不加这些规则,本机将无法响应任何请求,甚至 SSH 都会断连:
-
允许本地回环:
iptables -A INPUT -i lo -j ACCEPT -
放行已建立和关联连接:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT(推荐用conntrack替代旧版state模块)
开放常用服务端口
按需添加,每条规则都应明确指定协议、端口和连接状态:
-
SSH(22端口):
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT -
HTTP/HTTPS:
iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT;iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT -
多端口一次性放行(如 22,80,443):
iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -m conntrack --ctstate NEW -j ACCEPT
限制恶意扫描与泛洪行为
在放行服务基础上增加防护层,防暴力尝试和 ICMP 泛洪:
-
限制 SSH 新连接速率(每分钟最多 5 次):
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m limit --limit 5/minute -j ACCEPT;再跟一条-j DROP拦截超额请求 -
限制 ping 频率:
iptables -A INPUT -p icmp -m limit --limit 5/second -j ACCEPT;之后补iptables -A INPUT -p icmp -j DROP -
封禁特定 IP:
iptables -A INPUT -s 192.168.1.100 -j DROP
保存与持久化规则
iptables 命令重启即失效,必须显式保存:
-
RHEL/CentOS 系统:
service iptables save(写入/etc/sysconfig/iptables) -
通用方法(所有发行版):
iptables-save > /etc/iptables.rules;开机加载可写入启动脚本或 systemd service,例如iptables-restore









