如何使用 firewalld 在 Rocky Linux 中为特定服务配置防火墙规则?

问题浏览数Icon
13
问题创建时间Icon
2025-05-01 20:01:00
回答 | 共 5 个
作者头像
starflow88

在Rocky Linux中使用firewalld为特定服务配置防火墙规则时,建议遵循以下流程:

  1. 确认服务定义:首先通过firewall-cmd --get-services检查目标服务(如http、ssh)是否在预定义列表中
  2. 永久性配置:使用--permanent参数确保规则在重启后生效,例如: firewall-cmd --permanent --add-service=http
  3. 区域选择:明确指定应用规则的zone(默认public),多网卡环境需区分应用区域
  4. 配置验证:重载规则后通过firewall-cmd --list-services --zone=public确认服务已添加
  5. 端口级控制:若服务未预定义,可直接管理端口: firewall-cmd --permanent --add-port=8080/tcp
  6. 生产环境注意:建议通过firewall-cmd --runtime-to-permanent将临时规则固化为永久配置
  7. 日志监控:启用--log-denied=all记录被拒请求,便于后期审计 多年经验表明,严格遵循服务最小化开放原则,每次修改后必须测试连通性,并通过systemctl status firewalld确认防火墙服务状态正常。
作者头像
bluepath99

在Rocky Linux上用firewalld给特定服务开权限其实挺简单的。比如要给http服务放行,先确保firewalld服务是启动的(sudo systemctl enable --now firewalld)。然后直接运行 sudo firewall-cmd --permanent --add-service=http 加规则,最后sudo firewall-cmd --reload刷新配置就行啦。用firewall-cmd --list-services能看到当前开放的规则,检查下有没有生效~ 如果服务不在预设列表里,可能要手动开端口或者自定义服务配置。

作者头像
donglin22
  1. 确认firewalld状态

    sudo systemctl status firewalld

    若未运行则启动并设置开机自启:

    sudo systemctl enable --now firewalld
  2. 查看预定义服务列表

    sudo firewall-cmd --get-services

    确认目标服务(如http、ssh)是否存在。

  3. 添加服务规则(以http为例):

    sudo firewall-cmd --zone=public --add-service=http --permanent

    --permanent表示规则持久化,重启后仍生效。

  4. 自定义端口配置(若服务未预定义):

    sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
  5. 重新加载配置

    sudo firewall-cmd --reload
  6. 验证规则生效

    sudo firewall-cmd --zone=public --list-all

    输出应包含添加的服务/端口。

注意

  • 生产环境建议通过--zone=明确指定区域
  • 紧急恢复可使用--remove-service--remove-port删除规则
  • 测试时建议先不加--permanent验证,确认无误后再持久化
作者头像
dreamloop77

使用 sudo firewall-cmd --zone=public --add-service=服务名 --permanent 添加规则,再执行 sudo firewall-cmd --reload 生效配置。

作者头像
mingzi00

要使用firewalld在Rocky Linux中为特定服务配置防火墙规则,可执行以下命令:

  1. sudo firewall-cmd --zone=public --add-service=http --permanent (添加HTTP服务)
  2. sudo firewall-cmd --reload (重载配置)

延伸知识点【富规则(Rich Rules)】: 富规则允许创建更复杂的防火墙策略,语法示例:firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept' 该规则表示:允许来自192.168.1.0/24子网的SSH连接。关键参数解析:

  • family:指定IPv4/IPv6协议族
  • source address:限定源IP地址范围
  • service name:指定受控服务名称
  • action:定义允许(accept)或拒绝(reject) 使用--remove-rich-rule可删除规则,需配合--permanent参数实现配置持久化。