当前位置: 首页 > news >正文

firewall-cmd 防火墙操作技巧详解(适用于 CentOS / RHEL 系列)

firewalld 是 CentOS 和 RHEL 默认的防火墙服务,而 firewall-cmd 是其命令行管理工具。相比传统的 iptables,它更易用、支持动态规则更新,并支持区域(zone)管理。


🧭 基础命令速查表

操作命令
查看防火墙状态firewall-cmd --state
启动防火墙服务systemctl start firewalld
设置开机自启systemctl enable firewalld
查看当前区域firewall-cmd --get-active-zones
查看某区域规则firewall-cmd --zone=public --list-all
查看已开放端口firewall-cmd --list-ports
查看已开放服务firewall-cmd --list-services

🚪 开放端口与服务

✅ 临时开放端口(重启后失效)

firewall-cmd --add-port=8080/tcp

✅ 永久开放端口(推荐)

firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload

✅ 开放常见服务(如 HTTP、SSH)

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload

❌ 移除端口与服务

有时候我们需要关闭之前开放的端口或服务,可以使用以下命令:

✅ 临时移除端口(重启后失效)

firewall-cmd --remove-port=8080/tcp

✅ 永久移除端口(推荐)

firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload

✅ 移除已开放的服务(如 HTTP、SSH)

firewall-cmd --permanent --remove-service=http
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload

📋 小技巧

  • 确认端口是否已移除
    firewall-cmd --list-ports
    
  • 确认服务是否已移除
    firewall-cmd --list-services
    
  • 注意事项
    • 移除规则后立即生效,但若使用 --permanent,记得执行 --reload 才能写入配置文件。
    • 建议在移除前先确认该端口/服务是否仍被业务使用,避免误操作导致服务中断。

🌐 管理区域(Zone)

firewalld 使用区域来定义不同网络接口的安全级别,常见区域包括:

  • public:默认区域,适合公网环境
  • internal:适合内网
  • trusted:完全信任,所有流量允许

✅ 设置接口所属区域

firewall-cmd --zone=internal --change-interface=eth1

✅ 设置默认区域

firewall-cmd --set-default-zone=public

🧱 管理 IP 地址与源地址

✅ 允许某 IP 访问指定端口

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="8080" protocol="tcp" accept'
firewall-cmd --reload

✅ 拒绝某 IP 所有访问

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject'
firewall-cmd --reload

🧪 实战技巧:GitLab 容器端口放行

假设你运行了 GitLab 容器,映射了以下端口:

  • 22 → SSH
  • 80 → HTTP
  • 443 → HTTPS

你可以这样放行:

firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

🛠️ 故障排查技巧

  • 端口已开放但无法访问?

    • 检查服务是否监听对应端口:ss -tnlp | grep 8080
    • 检查 SELinux 是否阻止:getenforce(建议设置为 Permissive 或配置策略)
  • 规则修改后无效?

    • 是否加了 --permanent
    • 是否执行了 firewall-cmd --reload
  • 容器无法访问外部?

    • 检查是否启用了 masquerade(地址伪装):
      firewall-cmd --zone=public --add-masquerade
      

✅ 最佳实践建议

  • 所有规则建议使用 --permanent--reload,确保重启后仍生效。
  • 使用 rich-rule 精细控制 IP、端口、协议。
  • 定期备份防火墙配置:firewall-cmd --list-all > firewall-backup.txt
  • 配合 systemctl 管理防火墙服务状态,避免误关。
http://www.dtcms.com/a/565752.html

相关文章:

  • 视频融合平台EasyCVR结合视频智能分析技术构建高空抛物智能监控系统,守护“头顶上的安全”
  • python node 网站开发广东省建设工程执业中心网站
  • ModelEngine智能体全流程体验评测:从创建到部署的深度实践
  • 青岛北京网站建设公司哪家好一万元小型办厂设备
  • PHP:一种强大的服务器端脚本语言
  • 深入了解linux网络—— 守护进程
  • JIS A 5908-2022 刨花板检测
  • 新余网站网站建设网站建设岗位有哪些
  • C# 基于halcon的视觉工作流-章56-彩图转云图
  • 住房城乡建设部办公厅网站网址大全导航
  • 做一个网站的费用构成wordpress 表格 链接地址
  • Vision Transformer(ViT)保姆级教程:从原理到CIFAR-10实战(PyTorch)!
  • 『 QT 』QT QWidget 控件属性全解析 (三)
  • 关于Java EE应用中xml解析类的问题
  • 每日一篇-【ICRA2025】-->任务感知语义地图:超越指令的自主机器人任务分配
  • Winform控件:Chart
  • 有好看图片的软件网站模板下载咸宁建设网站
  • GitPuk零基础学习,如何进行分支管理
  • 极狐GitLab 18.5 正式发布,更新 Maven 虚拟仓库 UI(Beta)、全新个人主页、实例级合规与安全策略管理 以及 DAST 认证脚本 等
  • HAProxy 简介及配置文件详解
  • 【Java】如何保证集合的线程安全?
  • linux系统中进程通信之管道
  • ip下的网站吗wordpress建站企业
  • 企业官网项目方案(Vue3+Node 全栈)
  • 最火的传奇手游网站网站文章分类
  • 算法<C++>——二分查找
  • MIDI协议与Arduino编程
  • 【开题答辩全过程】以 儿童口腔诊所私域管理系统为例,包含答辩的问题和答案
  • 什么网站做app好网站建设的后如何发布
  • 从零开始的Qt开发指南:(二)使用Qt Creator构建项目与Qt底层机制的深度解析