
iptables 入门到跑路:15 条命令搞定 Linux 防火墙
iptables 入门到跑路:15 条命令搞定 Linux 防火墙
2026-03-23 · 漫辰夕
标签:iptables, Linux, 防火墙, 运维
为什么还学 iptables?
nftables、firewalld 喊了多年,但线上老系统依旧跑 iptables。
会翻规则、能救急,是运维的基本尊严。
1. 看清现状:列出所有规则
bash
iptables -L -n --line-numbers
-n 不把端口解析成服务名,速度翻倍。
2. 永久保存 & 重载
CentOS 7 之前:
bash
service iptables save # 保存
service iptables restart # 重载
Debian/Ubuntu:
bash
apt install iptables-persistent
netfilter-persistent save
netfilter-persistent reload
3. 允许 SSH(22)——先保命
bash
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
远程操作前,先写一条允许当前会话的规则,再开默认 DROP,否则直接失联。
4. 回环口全开
bash
iptables -A INPUT -i lo -j ACCEPT
本地进程通信被误杀,会出各种玄学 bug。
5. 已建立连接放行
bash
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
让服务器“出去”的流量能回来。
6. 禁 ping(可选)
bash
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
防扫描,但排障时别忘关掉。
7. 放行 Web 端口
bash
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
multiport 一次写多个端口,简洁。
8. 限制 SSH 来源
bash
iptables -A INPUT -p tcp -s 10.0.0.0/8 --dport 22 -j ACCEPT
只允许内网登录,暴力破解直接归零。
9. 防 SYN Flood
bash
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
超出速率的 SYN 包丢弃,轻量级抗 D。
10. 封杀单 IP
bash
iptables -I INPUT -s 1.2.3.4 -j DROP
-I 插到最前,立即生效。
11. 端口转发(DNAT)
把公网 8080 转到内网 192.168.1.10:80
bash
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.1.10:80
iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp --dport 80 -j MASQUERADE
别忘了开 net.ipv4.ip_forward = 1
12. 屏蔽常见扫描
bash
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
干掉 NULL 包与 SYN/FIN 畸形包。
13. 限速 SSH 暴力破解
bash
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
60 秒内同一 IP 新建连接 ≥4 直接拉黑。
14. 日志记录(调试神器)
bash
iptables -A INPUT -p tcp --dport 80 -j LOG --log-prefix "HTTP: " --log-level 4
配合 journalctl -k -f 实时看命中情况。
15. 一键清空白链(慎点)
bash
iptables -F
iptables -X
iptables -Z
本地终端执行,远程慎用!
小结速查表
| 场景 | 关键选项 |
|---|---|
| 放行端口 | -A INPUT -p tcp --dport N -j ACCEPT |
| 封 IP | -I INPUT -s IP -j DROP |
| 已建立连接 | -m state --state ESTABLISHED,RELATED |
| 端口转发 | -t nat -A PREROUTING … DNAT |
| 限速 | -m limit --limit 1/s |
| 永久保存 | service iptables save / netfilter-persistent |
下篇预告
《nftables 迁移踩坑:iptables 到 nft 的 7 个不兼容点》
关注博客,第一时间推送。