Linux防火墙规则如何编写_完整流程拆解让问题迎刃而解【技巧】

2次阅读

linux防火墙规则编写关键在于理清逻辑、分步操作与验证闭环,推荐使用nftables(现代主流工具),按创建表→链→基础规则→业务规则→默认拒绝顺序实施,并需保存配置实现持久化。

Linux防火墙规则如何编写_完整流程拆解让问题迎刃而解【技巧】

Linux防火墙规则编写不难,关键在理清逻辑、分步操作、验证闭环。用 iptables(传统)或 nftables(现代推荐)均可实现,本文以 nftables 为主展开,兼顾 iptables 对照,帮你一次性打通全流程。

明确目标:先想清楚“要拦什么、放什么”

写规则前别急着敲命令,先回答三个问题:

  • 哪些端口必须对外开放?比如 22(ssh)、80/443(Web)
  • 哪些来源需要限制?比如只允许公司IP访问数据库端口(3306)
  • 是否要防常见攻击?比如防 ping 泛洪、防连接数过载、防 SYN 洪水

例如:一台Web服务器,只需开放 80、443 和管理员固定IP的22端口,其余全部拒绝——这就是最典型的“白名单思维”,也是安全基线。

选择工具:nftables 是当前主线,iptables 已逐步被替代

debian 12 / ubuntu 22.04+ / centos 8+ 默认使用 nftables,它统一了内核接口,语法更简洁、性能更好。iptables 命令实际是通过 xtables 转译为 nftables 规则运行。

  • 查当前生效规则:nft list ruleset
  • 清空所有规则(谨慎!建议先备份):nft flush ruleset
  • iptables 兼容写法仍可用,但新项目建议直接学 nftables

动手写规则:从链(chain)到规则(rule),四步落地

以 nftables 为例,按真实部署顺序组织:

Linux防火墙规则如何编写_完整流程拆解让问题迎刃而解【技巧】

达芬奇

达芬奇——你的ai创作大师

Linux防火墙规则如何编写_完整流程拆解让问题迎刃而解【技巧】 166

查看详情 Linux防火墙规则如何编写_完整流程拆解让问题迎刃而解【技巧】

  1. 创建表(table)命名空间,如 nft add table inet Filter
  2. 创建链(chain):挂载点,如 nft add chain inet filter input { type filter hook input priority 0 ; }
  3. 加基础规则:状态跟踪 + 回环放行 + 已建立连接放行
    nft add rule inet filter input ct state established,related accept
    nft add rule inet filter input iifname "lo" accept
  4. 加业务规则:按优先级由高到低添加
    nft add rule inet filter input ip saddr 203.0.113.5 tcp dport 22 accept
    nft add rule inet filter input tcp dport {80, 443} accept
    nft add rule inet filter input drop(默认拒绝,务必放在最后)

保存与持久化:重启不丢规则才是真生效

临时规则重启即失效,必须保存:

  • Ubuntu/Debian:nft list ruleset > /etc/nftables.conf,并确保 nftables 服务已启用:systemctl enable nftables
  • CentOS/RHEL:nft list ruleset > /etc/sysconfig/nftables.conf,再 systemctl enable nftables
  • 验证是否开机加载:systemctl is-enabled nftables 返回 enabled 即可

小技巧:先用 nft -f /path/to/rules.nft 测试规则文件语法,无报错再写入配置。

基本上就这些。写防火墙不是指令,而是建逻辑防线——目标清晰、工具选对、步骤闭环、持久到位。练熟几次,从建表到上线十分钟搞定。

text=ZqhQzanResources