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 filternft 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)增强服务级控制。
基本上就这些。根据实际环境选择合适工具,核心原则是“最小权限”,只开放必要的访问路径。安全配置不复杂,但容易忽略细节导致风险。







