在Rocky Linux 9中配置端口过滤规则主要通过firewalld实现,结合nftables底层技术。我的实践经验分为四个阶段:
-
基础配置
- 使用
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
创建白名单规则,遇到过规则未持久化问题,后发现必须加--permanent
参数并执行--reload
。 - 配置端口拒绝策略时,
--remove-service=http
比直接拒绝更安全,避免误封SSH管理端口。
- 使用
-
高级防护
- 针对DDoS防护,通过
nft add rule ip filter INPUT tcp dport 80 meter ddos { tcp dport 80 limit rate 10/second } counter accept
实现限流,但需要定期清理nftables计数器避免内存占用。 - 使用
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --syn -m connlimit --connlimit-above 50 -j DROP
防御SYN洪水攻击,需注意内核参数net.ipv4.tcp_max_syn_backlog
的联动配置。
- 针对DDoS防护,通过
-
实践挑战
- 规则优先级冲突:曾出现IP白名单规则被全局拒绝规则覆盖,通过
firewall-cmd --list-rich-rules --zone=public --permanent
检查顺序后,采用--priority=5
参数显式定义优先级解决。 - 容器网络穿透:当Docker容器暴露端口时,发现firewalld规则失效,需在docker.service配置中追加
--iptables=false
并手动配置nftables桥接规则。
- 规则优先级冲突:曾出现IP白名单规则被全局拒绝规则覆盖,通过
-
验证与监控
- 使用
nft monitor trace
实时跟踪规则命中情况,配合conntrack -L
检查连接状态。 - 关键业务端口采用双验证机制:先通过
nc -zv
测试基础连通性,再使用hping3 -S -p 80 目标IP
模拟攻击验证防护效果。
- 使用
特别注意:Rocky Linux 9默认启用SELinux,网络规则需与/etc/selinux/targeted/contexts/files/file_contexts.local
中的端口上下文匹配,否则会导致规则生效但服务不可达。