Linux防火墙规则如何编写_深度讲解提升系统稳定性【技巧】

2次阅读

linux防火墙 规则遵循最小权限原则,强调规则顺序、默认策略设为 DROP、状态跟踪(ESTABLISHED/RELATED)、及时保存持久化及修改前备份验证。

Linux 防火墙规则如何编写_深度讲解提升系统稳定性【技巧】

Linux防火墙 规则的核心是“最小权限原则”——只放行必需的流量,其余一律拒绝。写错一条规则可能导致服务不可用或安全缺口,所以不能靠试错,得理解底层逻辑和常见陷阱。

iptables 规则顺序决定一切

iptables 按链中规则从上到下逐条匹配,一旦命中就执行动作(ACCEPT/DROP),不再继续。所以 允许规则必须放在拒绝规则之前,否则全被拦住。

  • 错误写法:iptables -A input -j DROP(追加到最后)→ 后面再加的允许规则根本没机会生效
  • 正确做法:iptables -I INPUT 1 -p tcp –dport 22 -j ACCEPT(用 - I 插入到最前面)
  • 查看当前顺序:iptables -L INPUT -n –line-numbers,带行号方便定位和删除

默认策略比单条规则更关键

很多人只关注添加规则,却忽略链的默认策略(policy)。INPUT 链默认是 ACCEPT,意味着没匹配到任何规则的包全放行——这等于裸奔。

  • 生产环境建议:先设为 DROP,再逐步放开必要 端口
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
  • 切记:设置 - P 前务必确保已有 ssh 等管理 端口 放行规则,否则可能锁死远程连接
  • 临时救急:本地终端执行 iptables -P INPUT ACCEPT 可快速恢复访问

状态跟踪让规则更精准可靠

单纯靠端口判断不安全(比如有人伪造 SYN 包打开放端口)。启用 conntrack 模块后,可用状态(RELATED, ESTABLISHED)识别合法回包和关联连接。

  • 必备基础规则:iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
  • 配合使用 -m conntrack 更现代:iptables -A INPUT -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT
  • 这样就能放心 DROP 所有新连接请求(-m state –state NEW),只留白名单端口

保存与持久化是稳定运行的前提

iptables 命令改的是内存中的规则,重启就丢失。必须显式保存并配置开机加载。

  • debian/ubuntuiptables-save > /etc/iptables/rules.v4,并确保 netfilter-persistent 服务启用
  • RHEL/centos 7+:service iptables save 或用iptables-save > /etc/sysconfig/iptables
  • 检查是否生效:systemctl list-unit-files | grep iptables,确认服务已启用

基本上就这些。规则不在多,在准;不在快,在稳。每次修改前先备份 iptables-save > /tmp/iptables.bak,改完用iptables -L -n 验证,再测试连通性。不复杂但容易忽略。

站长
版权声明:本站原创文章,由 站长 2025-12-20发表,共计1258字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources