在Rocky Linux中,使用firewall-cmd --zone=区域名 --permanent设置防火墙区域,并通过--add-service或--add-port配置规则后,执行firewall-cmd --reload生效。
如何在 Rocky Linux 中设置并配置主机的防火墙区域?
在Rocky Linux中配置防火墙区域需基于firewalld服务实现。1. 确认firewalld状态:systemctl enable --now firewalld。2. 查看可用区域:firewall-cmd --get-zones,默认区域通过firewall-cmd --get-default-zone获取。3. 修改默认区域:firewall-cmd --set-default-zone=internal --permanent(以internal为例)。4. 添加服务到区域:firewall-cmd --zone=public --add-service=http --permanent。5. 开放自定义端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent。6. 创建自定义区域:firewall-cmd --new-zone=custom_zone --permanent,完成后必须重载:firewall-cmd --reload。关键操作需结合网络接口绑定区域,通过firewall-cmd --zone=work --change-interface=eth0实现。最后通过firewall-cmd --list-all验证规则,生产环境建议通过临时规则测试后再应用--permanent参数。
更多回答
在Rocky Linux里用自带的firewalld搞防火墙区域,简单说就是:1.查状态firewall-cmd --state;2.看当前区域firewall-cmd --get-default-zone;3.改默认区域比如sudo firewall-cmd --set-default-zone=public --permanent;4.加允许的服务比如sudo firewall-cmd --zone=public --add-service=http --permanent;5.最后sudo firewall-cmd --reload生效。记不住命令就多敲两次--help,怕翻车记得先备份规则嗷!
-
查看当前默认区域:
firewall-cmd --get-default-zone -
修改默认区域(如设置为
public):sudo firewall-cmd --set-default-zone=public -
添加服务或端口到区域(以 HTTP 和端口 8080 为例):
sudo firewall-cmd --zone=public --add-service=http --permanent sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent -
绑定网络接口到指定区域(可选,如将
eth0绑定到public):sudo firewall-cmd --zone=public --change-interface=eth0 --permanent -
重载防火墙配置:
sudo firewall-cmd --reload -
验证配置:
sudo firewall-cmd --zone=public --list-all
注意:
--permanent参数确保规则永久生效,需搭配--reload或重启防火墙服务生效。临时规则省略此参数。
在Rocky Linux中配置防火墙区域时,建议优先使用firewalld工具,因其与RHEL生态深度整合。关键步骤:1.通过firewall-cmd --get-zones确认可用区域,根据业务场景选择(如public/internal);2.使用--set-default-zone设定默认区域后,务必用--runtime-to-permanent固化配置;3.对Web/Database等业务组件,采用--add-service优先于直接开放端口;4.多网卡环境应为不同接口分配独立区域。注意:生产环境中需结合--add-rich-rule实现IP白名单,并通过--list-all-zones验证跨区域规则冲突。配置后建议模拟断网恢复,验证规则持久化有效性。
在Rocky Linux中配置防火墙区域需通过firewalld实现,我的实践经验分为以下阶段:
-
基础配置
- 安装:
sudo dnf install firewalld(部分环境预装) - 启动服务:
systemctl enable --now firewalld - 验证状态:
firewall-cmd --state输出'running'即正常
- 安装:
-
核心区域操作
- 查看默认区域:
firewall-cmd --get-default-zone - 创建自定义区域(如web-server):
sudo firewall-cmd --permanent --new-zone=web-server sudo firewall-cmd --reload - 绑定网卡接口:
sudo firewall-cmd --zone=web-server --change-interface=eth0
- 查看默认区域:
-
策略部署
- 添加服务:
sudo firewall-cmd --zone=web-server --add-service=http --permanent - 开放端口:
sudo firewall-cmd --zone=web-server --add-port=8080/tcp --permanent - 拒绝特定IP:
sudo firewall-cmd --zone=web-server --add-rich-rule='rule family=ipv4 source address=192.168.1.100 reject'
- 添加服务:
实践挑战:
- 区域优先级冲突:当接口同时属于多个区域时,通过
firewall-cmd --get-active-zones排查覆盖关系 - 服务未定义异常:需在
/usr/lib/firewalld/services/创建自定义服务XML文件(如myapp.xml) - 动态环境适配:云主机重启后网卡名称变化导致区域绑定失效,通过udev规则固定网卡名称解决
- 生产环境断连:误操作封锁SSH端口时,通过IPMI控制台执行
firewall-cmd --runtime-to-permanent回滚配置
高阶技巧:
- 使用
--timeout参数临时开放调试端口(如300秒:--add-port=4411/tcp --timeout=300) - 通过
nft list ruleset直接查看Netfilter底层规则 - 配置备份:
cp /etc/firewalld/zones/* ~/firewall_backup/
在Rocky Linux中配置防火墙区域需使用firewalld工具,遵循以下步骤:
-
检查防火墙状态:
sudo firewall-cmd --state若未运行,启动并设置开机自启:sudo systemctl enable --now firewalld -
查看可用区域:
sudo firewall-cmd --get-zones默认区域(如public)显示:sudo firewall-cmd --get-default-zone -
修改默认区域(例如切换至internal):
sudo firewall-cmd --set-default-zone=internal --permanentsudo firewall-cmd --reload -
绑定接口/源IP到特定区域:
sudo firewall-cmd --zone=work --add-interface=eth1 --permanent或指定IP段:sudo firewall-cmd --zone=trusted --add-source=192.168.1.0/24 --permanent -
服务/端口控制:
- 允许HTTP服务:
sudo firewall-cmd --zone=public --add-service=http --permanent - 开放自定义端口:
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
- 允许HTTP服务:
-
应急模式:
- 紧急阻断所有流量:
sudo firewall-cmd --panic-on - 恢复:
sudo firewall-cmd --panic-off
- 紧急阻断所有流量:
-
应用配置:
sudo firewall-cmd --reload验证规则:sudo firewall-cmd --list-all --zone=public
注意:生产环境建议先通过--runtime-to-permanent保存临时规则,避免误操作导致服务中断。SSH端口开放需优先配置,防止远程连接丢失。
在Rocky Linux中配置防火墙区域需通过firewalld服务实现,以下是具体步骤及逻辑:
-
基础验证
sudo systemctl enable --now firewalld # 启用并启动服务 firewall-cmd --state # 确认firewalld状态为running -
区域管理
- 查看默认区域:
firewall-cmd --get-default-zone - 列出所有区域:
firewall-cmd --get-zones - 修改默认区域(如切换为internal):
sudo firewall-cmd --set-default-zone=internal --permanent sudo firewall-cmd --reload - 绑定接口到区域(将eth0绑定至internal):
sudo firewall-cmd --zone=internal --add-interface=eth0 --permanent
- 查看默认区域:
-
服务配置
- 允许HTTP服务(临时+永久):
sudo firewall-cmd --zone=public --add-service=http sudo firewall-cmd --zone=public --add-service=http --permanent - 拒绝SSH访问(区域级控制):
sudo firewall-cmd --zone=public --remove-service=ssh --permanent
- 允许HTTP服务(临时+永久):
-
端口级控制
- 开放TCP 8080端口:
sudo firewall-cmd --zone=public --add-port=8080/tcp sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
- 开放TCP 8080端口:
-
高级规则
- 设置IP白名单(允许192.168.1.0/24):
sudo firewall-cmd --zone=trusted --add-source=192.168.1.0/24 --permanent - 删除无效规则:
sudo firewall-cmd --list-all --zone=public # 查看规则 sudo firewall-cmd --remove-rich-rule='rule [...]' --permanent
- 设置IP白名单(允许192.168.1.0/24):
-
生效验证
sudo firewall-cmd --reload # 重载配置 firewall-cmd --list-all --zone=public # 验证最终规则
关键逻辑:通过区域分层管理不同网络环境的安全策略,利用--permanent参数实现配置持久化,结合服务抽象和端口直控实现灵活访问控制。生产环境建议先通过--timeout=300参数测试临时规则,确认无误后再永久生效。