iptables基础配置核心是按逻辑顺序设置filter表INPUT链规则:先放行回环、已建立连接,再开放业务端口,最后设默认DROP策略,并保存验证。

直接上手配置 iptables 基础包过滤规则,关键不是堆命令,而是理清逻辑顺序和默认策略。核心就三点:先放行必要流量,再拒绝其余,最后保存生效。
理解 filter 表和 INPUT 链是起点
日常服务器防护主要用 filter 表的 INPUT 链——它管的是“进来的包”。数据包到达本机后,先经过 PREROUTING,再进入 INPUT 链匹配规则;规则从上到下逐条比对,一旦匹配就执行动作(比如 ACCEPT),不再看后面的规则。
- filter 是默认表,不用显式指定(如 iptables -A INPUT 默认就在 filter 表)
- INPUT 链处理目标为本机的入站流量,比如 SSH、HTTP 请求
- OUTPUT 和 FORWARD 链日常较少动,除非你做代理或路由
按安全优先级写规则:回环→连接状态→业务端口→默认拒绝
顺序不能错,否则合法流量可能被提前拦截。推荐按这个流程操作:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 允许本地回环通信:iptables -A INPUT -i lo -j ACCEPT
- 放行已建立连接的返回包(如网页响应、SSH 回应):iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
- 开放具体服务端口,例如 Web:iptables -A INPUT -p tcp --dport 80 -j ACCEPT 和 iptables -A INPUT -p tcp --dport 443 -j ACCEPT
- 开放 SSH(建议改非标端口并限制来源,如:iptables -A INPUT -p tcp --dport 50022 -s 192.168.1.0/24 -j ACCEPT)
- 最后设默认策略:iptables -P INPUT DROP(注意是 -P,不是 -A)
别忘了保存和验证
iptables 规则重启就失效,必须手动保存。不同系统路径不同:
- Debian/Ubuntu:iptables-save > /etc/iptables/rules.v4,确保 netfilter-persistent 服务已启用
- RHEL/CentOS 7+:iptables-save > /etc/sysconfig/iptables,然后 systemctl enable iptables
验证是否生效:用 iptables -L -n -v 查看规则列表和命中计数;尝试从外部 ping 或访问端口,确认行为符合预期。
几个实用细节提醒
避免踩坑,记住这几个点:
- 操作前先备份:iptables-save > /tmp/iptables.bak,万一锁死自己还能恢复
- 不要一上来就设 -P INPUT DROP,先用 -P INPUT ACCEPT 调试,确认规则全 OK 再收紧
- 想让某条规则插在最前面(比如优先放行 ping),用 -I INPUT 1 而不是 -A
- ICMP 可以加限速防探测:iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

















