Linux防火墙规则如何编写_最佳实践总结助你快速突破【教程】

2次阅读

linux防火墙规则编写核心是“最小权限原则”+“明确流向控制”,推荐nftables;默认策略设为DROP,先放行lo、ESTABLISHED/RELATED连接,再按需精准开放sshhttp/https端口,并限制连接频率,最后保存规则防重启丢失。

Linux防火墙规则如何编写_最佳实践总结助你快速突破【教程】

Linux防火墙规则编写核心在于“最小权限原则”+“明确流向控制”,用 iptablesnftables(推荐新系统用 nftables)实现,关键不是规则,而是理清“谁访问谁、走什么协议、开哪几个端口、默认怎么处理”。

先定策略:默认拒绝,再精准放行

绝大多数安全问题源于默认允许。务必把默认策略设为 DROP:

  • iptables:运行 iptables -P input DROPiptables -P FORWARD DROPiptables -P OUTPUT ACCEPT(出站通常宽松些)
  • nftables:在 base chain 中设 policy drop,例如:nft add chain inet Filter input { type filter hook input priority 0 ; policy drop ; }
  • 切记:执行前确保已有 SSH 规则且已测试连通,否则可能锁死自己

只开必需端口:按服务而非IP粗放放行

别写 “-s 0.0.0.0/0 -p tcp –dport 22 -j ACCEPT” 就完事——要加状态跟踪和连接限制:

  • SSH 安全写法(iptables):iptables -A INPUT -p tcp –dport 22 -m state –state NEW -m limit –limit 3/min –limit-burst 3 -j ACCEPT
  • HTTP/HTTPS(仅限 Web 服务器):iptables -A INPUT -p tcp -m multiport –dports 80,443 -m state –state NEW -j ACCEPT
  • 本地回环必须放通:iptables -A INPUT -i lo -j ACCEPT(所有规则前建议加这条)

善用连接状态(state / ct state),避免“半开漏洞”

无状态规则易被绕过。实际生效的几乎都依赖连接追踪:

Linux防火墙规则如何编写_最佳实践总结助你快速突破【教程】

刺鸟创客

一款专业高效稳定的AI内容创作平台

Linux防火墙规则如何编写_最佳实践总结助你快速突破【教程】 110

查看详情 Linux防火墙规则如何编写_最佳实践总结助你快速突破【教程】

  • 只允许已建立或相关连接响应:iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
  • nftables 对应写法:nft add rule inet filter input ct state established,related accept
  • 这条规则通常放在 INPUT 链靠前位置(但要在 lo 之后、具体服务规则之前)

保存与恢复要闭环,别让重启变“裸奔”

内存规则重启即丢。必须固化:

  • iptables:用 iptables-save > /etc/iptables/rules.v4debian/ubuntu)或 service iptables savecentos 7 及更早)
  • nftables:导出为文件 nft list ruleset > /etc/nftables.conf,并启用 systemd 服务:systemctl enable nftables
  • 每次修改后,先 nft -f /etc/nftables.confiptables-restore 测试,再确认开机加载

基本上就这些。不复杂,但容易忽略状态匹配、默认策略和持久化三个环节。写规则前先画张草图:本机哪些服务对外?哪些IP需要访问?哪些出向连接必须允许?照着画的来,比抄模板更稳。

text=ZqhQzanResources