温馨提示×

centos stream8如何管理防火墙

小樊
37
2025-12-31 04:17:26
栏目: 智能运维

CentOS Stream 8 防火墙管理指南

一 基础操作与常用命令

  • CentOS Stream 8 中,默认使用 firewalld 管理防火墙,支持运行时与永久两种配置模式,并基于“区域”进行策略划分。常用命令如下:
    • 安装与启停
      • 安装:sudo dnf install -y firewalld
      • 启动/停止:sudo systemctl start|stop firewalld
      • 开机自启/禁用:sudo systemctl enable|disable firewalld
      • 查看状态:sudo firewall-cmd --statesystemctl status firewalld
    • 运行时与永久配置
      • 查看运行时规则:sudo firewall-cmd --list-all
      • 永久规则需加 –permanent,变更后执行 sudo firewall-cmd --reload 使配置生效
    • 区域与网卡
      • 查看默认区域:sudo firewall-cmd --get-default-zone
      • 设置默认区域:sudo firewall-cmd --set-default-zone=public
      • 查看活动区域与网卡:sudo firewall-cmd --get-active-zones
      • 将网卡加入区域:sudo firewall-cmd --zone=public --add-interface=eth0
    • 服务与端口
      • 查看预定义服务:sudo firewall-cmd --get-services
      • 开放服务(示例:HTTP/HTTPS):sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload
      • 开放端口(示例:TCP 80):sudo firewall-cmd --permanent --add-port=80/tcp && sudo firewall-cmd --reload
      • 关闭端口:sudo firewall-cmd --permanent --remove-port=80/tcp && sudo firewall-cmd --reload
    • 富规则(复杂策略)
      • 仅允许指定来源访问 SSH(示例:192.168.1.100):
        sudo firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.100” port port=“22” protocol=“tcp” accept’ && sudo firewall-cmd --reload
      • 删除富规则:将 add-rich-rule 换为 remove-rich-rule 后执行并 –reload
    • ICMP 与 Ping
      • 允许 Ping(ICMP Echo Request):sudo firewall-cmd --permanent --add-icmp-block-inversion(推荐方式,默认拒绝 ICMP,再放行 echo-request)
      • 如之前误用了 –add-icmp-block=echo-request 导致无法 ping,可移除:sudo firewall-cmd --permanent --remove-icmp-block=echo-request && sudo firewall-cmd --reload
    • 图形界面
      • 安装后可运行:sudo dnf install -y firewall-config;本地执行 firewall-config 进行可视化配置(远程 SSH 会话不建议使用 GUI)。

二 常见场景示例

  • 放行 Web 服务(HTTP/HTTPS)
    • sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload
  • 放行自定义端口(示例:TCP 8080
    • sudo firewall-cmd --permanent --add-port=8080/tcp && sudo firewall-cmd --reload
  • 仅允许指定 IP 访问 SSH(示例:203.0.113.10
    • sudo firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“203.0.113.10” port port=“22” protocol=“tcp” accept’ && sudo firewall-cmd --reload
  • 放行 MQTT、Kafka、Grafana(常见于物联网/可视化平台)
    • sudo firewall-cmd --permanent --add-port={1883,8883,9092,3000}/tcp && sudo firewall-cmd --reload
  • 允许 Ping
    • sudo firewall-cmd --permanent --add-icmp-block-inversion && sudo firewall-cmd --reload

三 最佳实践与安全建议

  • 变更前先备份当前规则:sudo firewall-cmd --runtime-to-permanent(将当前运行时配置固化为永久);必要时备份 /etc/firewalld/ 配置目录。
  • 远程维护时避免锁死:优先使用已放行的端口(如 22/TCP)进行操作;如修改 SSH 端口,先确保新端口已放行再变更 sshd 配置并重启。
  • 使用“区域”做环境隔离:对外网接口使用 public,对内网接口使用 internal/trusted,精细化控制来源与端口。
  • 明确协议与方向:添加端口时显式指定 /tcp/udp;仅开放业务必需端口,最小化暴露面。
  • 变更后校验:执行 sudo firewall-cmd --list-allsudo firewall-cmd --list-ports 核对规则;必要时用 ss -tulpen | grep <端口> 验证监听与连通性。
  • 避免工具混用:firewalld 与 iptables/nftables 不应并行启用,以免策略冲突;统一通过 firewalld 管理规则。

0