漫辰夕BLOG
🏠 首页 📚 归档 🗂️ 分类 🔗 友链
iptables 入门到跑路:15 条命令搞定 Linux 防火墙
Linux相关 Linux iptables

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

✍️ 漫辰夕 📅 2025/8/14 👁️ 32 次阅读

为什么还学 iptables?

nftables、firewalld 喊了多年,但线上老系统依旧跑 iptables。
会翻规则、能救急,是运维的基本尊严。



1. 看清现状:列出所有规则

iptables -L -n --line-numbers

-n 不把端口解析成服务名,速度翻倍。

2. 永久保存 & 重载

CentOS 7 之前:

service iptables save # 保存
service iptables restart # 重载

Debian/Ubuntu:

apt install iptables-persistent
netfilter-persistent save
netfilter-persistent reload


3. 允许 SSH(22)——先保命

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

远程操作前,先写一条允许当前会话的规则,再开默认 DROP,否则直接失联。

4. 回环口全开

iptables -A INPUT -i lo -j ACCEPT

本地进程通信被误杀,会出各种玄学 bug。

5. 已建立连接放行

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

让服务器“出去”的流量能回来。

6. 禁 ping(可选)

iptables -A INPUT -p icmp --icmp-type 8 -j DROP

防扫描,但排障时别忘关掉。

7. 放行 Web 端口

iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

multiport 一次写多个端口,简洁。

8. 限制 SSH 来源

iptables -A INPUT -p tcp -s 10.0.0.0/8 --dport 22 -j ACCEPT

只允许内网登录,暴力破解直接归零。

9. 防 SYN Flood

iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT

超出速率的 SYN 包丢弃,轻量级抗 D。

10. 封杀单 IP

iptables -I INPUT -s 1.2.3.4 -j DROP

-I 插到最前,立即生效。

11. 端口转发(DNAT)

把公网 8080 转到内网 192.168.1.10:80

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. 屏蔽常见扫描

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 暴力破解

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. 日志记录(调试神器)

iptables -A INPUT -p tcp --dport 80 -j LOG --log-prefix "HTTP: " --log-level 4

配合 journalctl -k -f 实时看命中情况。

15. 一键清空白链(慎点)

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


‹ 上一篇 linux LVM逻辑卷的创建,扩容,缩减和删除
下一篇 › Linux系统故障修复