Linux 通过 iptables、firewalld 和 nftables 实现网络 ACL 功能,用于精细控制网络流量。1. iptables 通过规则链匹配 IP、端口 等条件执行 ACCEPT、DROP 或 REJECT 操作,需注意规则顺序并设置默认拒绝策略;2. firewalld 采用区域管理机制,支持动态配置,可将 接口 或源 IP 加入特定区域以应用不同策略,并区分运行时与永久规则;3. nftables 为新一代 工具,语法简洁高效,支持统一规则管理,适合复杂场景;4. 配置时应保留远程会话权限,启用日志记录,定期清理冗余规则,并结合 TCP Wrappers 增强服务级安全,遵循最小权限原则。

在 Linux 系统中,网络 ACL(访问控制列表)主要用于控制进出系统的网络流量,实现细粒度的访问控制。虽然 Linux 不像传统 防火墙 设备那样直接提供“网络 ACL”这一术语,但通过 iptables、nftables 和 firewalld 等 工具,可以实现等效甚至更强大的网络访问控制功能。
使用 iptables 配置网络访问规则
iptables 是 Linux 中最常用的包过滤工具,可用于设置网络 ACL 级别的访问策略。
常见操作包括:
- 允许特定 IP 访问某 端口:
iptables -A INPUT -s 192.168.1.100 -p tcp –dport 22 -j ACCEPT - 拒绝某个 IP 段的访问:
iptables -A INPUT -s 10.0.0.0/8 -j DROP - 仅允许本地 子网 访问 Web 服务:
iptables -A INPUT -s 192.168.1.0/24 -p tcp –dport 80 -j ACCEPT
iptables -A INPUT -p tcp –dport 80 -j REJECT
规则按顺序匹配,因此策略顺序至关重要。建议最后添加一条默认拒绝规则以增强安全性。
使用 firewalld 进行动态管理
firewalld 是现代 Linux 发行版(如 CentOS、RHEL、Fedora)中默认的防火墙管理工具,支持区域(zone)概念,便于实现网络 ACL 逻辑。
常用配置方式:
- 将接口加入指定区域(如internal):
firewall-cmd –zone=internal –add-interface=eth0 - 允许特定源 IP 访问服务:
firewall-cmd –permanent –zone=trusted –add-source=192.168.1.50
firewall-cmd –zone=trusted –add-service=http - 拒绝并禁止响应:
firewall-cmd –permanent –zone=drop –add-source=10.10.10.1
firewalld 支持运行时与永久规则分离,修改后需重载生效:
firewall-cmd –reload
采用 nftables 统一管理(推荐新部署)
nftables 是 iptables 的继任者,语法更简洁,性能更高,适合复杂 ACL 策略部署。
示例:创建基本访问控制表
nft add table ip filter
nft add chain ip filter input {type filter hook input priority 0 ;}
nft add rule ip filter input ip saddr 192.168.2.0/24 tcp dport 22 accept
nft add rule ip filter input tcp dport 22 drop
可通过保存规则文件实现持久化:
nft list ruleset > /etc/nftables.conf
关键注意事项
- 远程操作时务必保留当前会话的访问权限,避免被锁定。
- 启用日志记录可疑连接尝试:
iptables -A INPUT -j LOG –log-prefix “BLOCKED: “ - 定期审查规则有效性,删除冗余条目。
- 结合 TCP Wrappers(/etc/hosts.allow、/etc/hosts.deny)增强服务级控制。
基本上就这些。根据实际环境选择合适工具,核心原则是“最小权限”,只开放必要的访问路径。安全配置不复杂,但容易忽略细节导致风险。