2020-12-19 19:02:13
Firewalld作为CentOS 7及以后版本的默认动态防火墙管理工具,通过“区域”概念和灵活的策略配置,成为现代Linux系统网络访问控制的核心组件。其限制策略涵盖端口管理、源地址限制、服务控制及高级规则设置,结合实践案例可高效实现安全需求。
一、Firewalld核心概念与区域管理区域(Zones)机制
Firewalld将网络环境划分为多个预设区域(如public、trusted、internal等),每个区域包含独立的入站、出站及转发规则集合。
典型区域用途:
public:外部网络,默认拒绝所有入站流量,仅允许已建立连接和特定服务(如SSH)。
trusted:内部可信网络,允许所有流量通过。
internal:内部网络,策略较宽松但需限制外部访问。
区域分配方式
通过命令将网络接口绑定至指定区域:
firewall-cmd --permanent --change-zone=eth0 --zone=internalfirewall-cmd --reload端口访问控制
允许特定端口(如TCP 80端口):
firewall-cmd --permanent --add-port=80/tcpfirewall-cmd --reload拒绝端口访问:替换--add-port为--remove-port即可。
源地址限制
仅允许特定子网访问SSH(如192.168.1.0/24):
firewall-cmd --permanent --zone=public --add-rich-rule=' rule family=ipv4 source address=192.168.1.0/24 port port=22 protocol=tcp accept'firewall-cmd --reload拒绝特定IP访问:将accept改为reject或drop。
服务级控制
启用预定义服务(如HTTP):
firewall-cmd --permanent --add-service=httpfirewall-cmd --reload服务定义:基于/usr/lib/firewalld/services/中的XML文件,包含协议、端口等信息。
高级规则设置
连接超时管理:通过conntrack模块设置TCP会话超时(需结合iptables规则)。
富规则(Rich Rules):支持复杂逻辑,如端口转发、日志记录等:
firewall-cmd --permanent --add-rich-rule=' rule family=ipv4 forward-port port=80 protocol=tcp to-port=8080'需求:仅允许公司内部网络(192.168.1.0/24)访问系统的TCP 8080端口。
配置网络接口区域
firewall-cmd --permanent --change-zone=eth0 --zone=internalfirewall-cmd --reload开放目标端口
firewall-cmd --permanent --zone=internal --add-port=8080/tcpfirewall-cmd --reload限制源地址
firewall-cmd --permanent --zone=internal --add-rich-rule=' rule family=ipv4 source address=192.168.1.0/24 port port=8080 protocol=tcp accept'firewall-cmd --reload验证配置
检查活跃规则:
firewall-cmd --list-all --zone=internal测试访问:从允许的子网和外部网络分别尝试连接8080端口,确认仅内部可访问。
核心优势
动态管理:无需重启服务即可应用规则变更。
直观区域模型:简化复杂网络环境的策略配置。
富规则支持:满足精细化控制需求。
使用建议
优先使用服务而非端口:预定义服务(如HTTP/SSH)已包含协议和端口信息,减少配置错误。
结合日志分析:通过--add-rich-rule='rule ... log'记录匹配流量,辅助故障排查。
定期审计规则:使用firewall-cmd --list-all-zones检查所有区域规则,避免冗余或冲突。
局限性应对
连接数限制:需通过iptables的--limit模块实现,或结合第三方工具(如fail2ban)。
高性能场景:对吞吐量要求极高的环境,可考虑直接使用iptables或nftables。
通过合理利用Firewalld的区域划分、端口控制、源地址限制及富规则功能,系统管理员能够高效构建多层次的网络访问控制体系,在保障安全性的同时满足多样化业务需求。