Linux防火墙规则如何编写_常见误区解析避免新手踩坑【指导】

2次阅读

linux防火墙规则需理解匹配顺序、状态机制与持久化逻辑:规则自上而下匹配,限制性规则须前置;必须放行RELATED/ESTABLISHED连接;–permanent仅保存配置,须reload或save才生效;firewalld需明确zone、接口与服务关系。

Linux防火墙规则如何编写_常见误区解析避免新手踩坑【指导】

Linux防火墙规则不是写完就生效的配置清单,而是需要理解匹配逻辑、执行顺序和状态机制的一套运行策略。新手常因忽略底层原理,导致服务不通、规则失效或安全形同虚设。

规则顺序决定一切

防火墙按从上到下的顺序逐条匹配,一旦命中就立即执行动作(ACCEPT/DROP/REJECT),不再继续检查后续规则。比如:

  • 先写 iptables -A input -p tcp --dport 22 -j ACCEPT,再写 iptables -A INPUT -s 192.168.1.100 -j DROP —— 后者对ssh完全无效,因为流量早已被前面的规则放行
  • 正确做法是:把限制性规则(如封IP、限端口)放在允许性规则之前;或者用-I插入到链首,而非-A追加到末尾
  • firewalld虽不直接暴露链序,但富规则(rich rules)也按添加顺序生效,--permanent后必须firewall-cmd --reload才真正载入顺序

别忘了连接状态管理

现代防火墙默认启用连接跟踪(conntrack),但新手常漏配“已建立连接”的放行规则,结果自己连不上服务器。

  • iptables中务必包含:iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT(或新版用-m conntrack --ctstate
  • firewalld默认自动处理响应流量,但若手动添加了--direct规则或关闭了默认zone策略,就得自己补上状态相关逻辑
  • 测试时可用ss -tnnetstat -tn确认连接是否处于ESTABLISHED状态,再比对规则是否覆盖

永久生效 ≠ 立即生效

很多命令加了--permanent就以为万事大吉,其实只是写进配置文件,没重载就不会跑在内存里。

Linux防火墙规则如何编写_常见误区解析避免新手踩坑【指导】

万相营造

阿里妈妈推出的AI电商营销工具

Linux防火墙规则如何编写_常见误区解析避免新手踩坑【指导】 168

查看详情 Linux防火墙规则如何编写_常见误区解析避免新手踩坑【指导】

  • firewalld中:--add-port=80/tcp --permanent只存到/etc/firewalld/zones/public.xml,必须跟firewall-cmd --reload
  • iptables中:service iptables savecentos 6)或iptables-save > /etc/sysconfig/iptables(CentOS 7+)才是持久化,重启后靠systemctl enable iptables加载
  • 验证是否真生效:用firewall-cmd --list-portsiptables -L -n看运行中的规则,而不是只查配置文件

混淆区域、接口与服务概念

firewalld用zone管理策略,但新手常把public、internal、trusted混用,或误以为“开了服务就等于开了端口”。

  • firewall-cmd --add-service=http本质是打开80/tcp + 对应的富规则,但前提是当前zone(如public)已激活且该接口归属此zone
  • 查接口归属:firewall-cmd --get-zone-of-Interface=eth0;查活跃zone:firewall-cmd --get-active-zones
  • 不要在trusted zone随便加外部网卡——它默认允许所有入站,相当于关了防火墙

基本上就这些。规则本身不复杂,容易踩坑的地方都在逻辑衔接和操作闭环上。

text=ZqhQzanResources