Rocky Linux 9 一般用 firewalld 管理防火墙。简单说:1. 开终端输 sudo firewall-cmd --permanent --add-port=端口号/tcp(或udp)允许特定端口;2. 要限制IP的话加 --add-rich-rule='rule family=ipv4 source address=IP地址 port port=端口号 protocol=tcp reject' 这种格式。改完记得 sudo firewall-cmd --reload 生效,用 --list-all 看规则。注意别手滑把自己SSH端口封了!
如何在 Rocky Linux 9 中配置端口过滤规则来限制网络访问?
回答
| 共 5 个
-
安装firewalld(若未安装):
sudo dnf install firewalld -y sudo systemctl enable --now firewalld -
允许特定IP访问端口(示例:允许192.168.1.10访问TCP 22端口):
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.10/32" port protocol="tcp" port="22" accept' -
拒绝所有其他IP访问端口(示例:拒绝其他IP访问TCP 80端口):
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" port protocol="tcp" port="80" reject' -
重载配置并生效:
sudo firewall-cmd --reload -
验证规则:
sudo firewall-cmd --list-rich-rules -
删除规则(如需撤销):
sudo firewall-cmd --permanent --zone=public --remove-rich-rule='rule内容' sudo firewall-cmd --reload
注意:
- 使用
--permanent参数保证规则重启后生效 - 协议类型(tcp/udp)需与实际服务匹配
- 可通过
nmap或telnet工具测试端口过滤效果
在 Rocky Linux 9 中,可使用 firewalld 配置端口过滤规则。例如,限制 SSH 端口仅允许特定 IP 访问:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'firewall-cmd --reload
延伸知识点:firewalld 的富规则(Rich Rules) 富规则允许复杂条件配置:
family:协议族(ipv4/ipv6)source address:源 IP 或网段port/protocol:端口及协议类型action:accept/reject/drop 例:拒绝 192.168.1.0/24 以外的所有 HTTP 请求:firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source not address=192.168.1.0/24 service name=http drop'使用--list-rich-rules查看规则,--remove-rich-rule删除规则。
在Rocky Linux 9中配置端口过滤规则建议通过firewalld或iptables实现。以下为常用方案:
方案一:firewalld(推荐)
- 启动服务:
systemctl enable --now firewalld - 限制特定IP访问端口(示例允许192.168.1.100访问SSH):
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.1.100 port port=22 protocol=tcp accept' - 全局禁止端口(示例禁止3306端口):
firewall-cmd --permanent --remove-port=3306/tcp - 重载生效:
firewall-cmd --reload
方案二:iptables
- 禁止所有IP访问端口(示例禁止80端口):
iptables -A INPUT -p tcp --dport 80 -j DROP - 允许指定IP段(示例允许10.0.0.0/24访问443):
iptables -A INPUT -p tcp -s 10.0.0.0/24 --dport 443 -j ACCEPT - 持久化规则:
iptables-save > /etc/sysconfig/iptables systemctl enable iptables
验证命令:
- 查看生效规则:
firewall-cmd --list-all或iptables -L -n -v - 端口扫描测试:
nmap -p 端口号 目标IP
在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中的端口上下文匹配,否则会导致规则生效但服务不可达。
推荐
热门问答
部分内容依据人工智能生成,仅供参考,可能有误请注意甄别