linux security firewall devops sysadmin

现代 Linux 防火墙配置指南:从 Iptables 到 Nftables

掌握 modern Linux 防火墙配置。学习如何使用 nftables 规则生成器、firewalld 规则生成器,并保护您的基础设施安全。

2026-04-12

现代 Linux 防火墙配置指南

在 Linux 安全领域,防火墙是您的第一道防线。几十年来,iptables 一直是数据包过滤领域无可争议的王者。然而,Linux 内核已经进化,我们用来管理网络流量的工具也随之进化。今天,nftables 已经取代 iptables 成为首选后端,而像 firewalld 这样更高级的工具使复杂的配置变得更加容易上手。

本指南将带您了解现代 Linux 防火墙的概貌,帮助您从旧命令过渡到现代、高性能的规则集。


1. 演进:从 Iptables 到 Nftables

虽然 iptables 仍被广泛使用,但它有几个结构上的局限性,包括单体设计导致更新大型规则集时速度缓慢且难以扩展。

Nftables 规则生成器

nftables 旨在解决这些问题。它使用了更简洁的语法,并为 IPv4 和 IPv6 提供了一个统一的框架。nftables 规则生成器 是在不记忆新语法的情况下构建高性能规则的绝佳方式。

nftables 的主要优势:

  • 性能: 原子更新和更快的匹配引擎。
  • 合并规则: 无需分别使用 iptablesip6tables 命令。
  • 集合与映射: 在单个规则中高效处理数千个 IP 地址。

一个允许 SSH 的 nftables 规则示例:

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        tcp dport 22 accept
    }
}

2. 动态防火墙管理:Firewalld

对于许多发行版(如 RHEL、Fedora 和 CentOS),firewalld 是默认的管理工具。它提供了一种动态的、基于区域 (zone) 的防火墙管理方法。

Firewalld 规则生成器

与需要完全重新加载才能应用更改(这会断开现有连接)的传统防火墙不同,firewalld 支持动态更新。firewalld 规则生成器 帮助您管理:

  • 区域 (Zones): 将接口分配给不同的信任级别(例如 publicinternaldmz)。
  • 服务: 启用预定义的服务,如 httphttpsssh
  • 富规则 (Rich Rules): 创建更复杂的规则,如速率限制或记录特定流量。

常用的 firewalld 命令:

  • firewall-cmd --get-active-zones
  • firewall-cmd --zone=public --add-service=https --permanent
  • firewall-cmd --reload

3. 现代防火墙的最佳实践

无论您选择哪种工具,某些安全原则是通用的:

  1. 默认拒绝: 始终从丢弃所有传入流量的策略开始,仅明确允许必要的流量。
  2. 最小权限: 尽可能限制特定服务仅能由特定 IP 地址访问(例如,仅允许从您的公司 VPN 访问 SSH)。
  3. 状态检测: 确保您的防火墙跟踪连接状态(例如,允许“相关”和“已建立”的流量)。
  4. 日志与审计: 记录被丢弃的数据包,以帮助诊断攻击和配置错误。
  5. IPv6 准备: 确保您的防火墙规则同时覆盖 IPv4 和 IPv6 协议栈。

4. 总结:选择合适的工具

  • 使用 Nftables: 如果您需要最高性能、正在构建路由器/网关,或者更喜欢简洁、可脚本化的语法。
  • 使用 Firewalld: 如果您使用的是 Red Hat 系系统,并且想要一个用户友好、基于区域的管理界面,且支持动态更新。
  • 使用 UFW (Uncomplicated Firewall): 如果您使用的是 Ubuntu 或 Debian,并且需要最简单的方法来管理几个开放端口。

通过利用现代的 nftables 和 firewalld 规则生成器,您可以告别脆弱的旧脚本,为您的 Linux 基础设施构建强大、可扩展的安全态势。