🔥 热门搜索

M
Memo
iptables 入门到跑路:15 条命令搞定 Linux 防火墙

iptables 入门到跑路:15 条命令搞定 Linux 防火墙

📅 2026/3/23👁️ 19 次阅读🕐 更新于 2026/3/23

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 个不兼容点》
关注博客,第一时间推送。