🧭说明

firewall-cmd 是管理 Linux 防火墙 firewalld 的核心命令行工具,通过“区域”和“服务”的概念,可以灵活控制网络流量。下面这个表格汇总了它的核心操作命令,方便你快速查阅。

🔧 核心操作命令速查

操作类别 常用命令示例 主要参数/说明
服务管理 允许 HTTP:--add-service=http
禁止 SSH:--remove-service=ssh
使用预定义的服务(如 http, ssh, ftp)简化端口管理。
端口管理 开放 8080/tcp:--add-port=8080/tcp
开放端口范围:--add-port=8000-9000/tcp
关闭 3306/tcp:--remove-port=3306/tcp
直接指定端口号和协议(tcp/udp)。
区域管理 查看默认区域:--get-default-zone
设置默认区域:--set-default-zone=home
将接口 eth0 绑定到 internal 区域:--zone=internal --change-interface=eth0
区域(如 public, home, internal)代表不同的信任级别。
高级功能 IP 限制:--add-rich-rule='rule family=ipv4 source address=192.168.1.10 port port=22 protocol=tcp accept'
端口转发:--add-forward-port=port=80:proto=tcp:toport=8080
富规则(Rich Rules)实现更精细的访问控制。

⚙️ 关键配置流程

掌握以下流程和概念,能让你更得心应手地配置防火墙。

  1. 确保 firewalld 运行
    配置前,先确认防火墙服务已经启动:sudo systemctl start firewalld。检查状态命令是 sudo firewall-cmd --state,如果返回 running 则表示正在运行。

  2. 理解“临时”与“永久”规则

    • 临时生效:不加 --permanent 参数的规则会立即生效,但系统或防火墙服务重启后失效,适合测试。
    • 永久生效:加上 --permanent 参数的规则会写入配置文件,但不会立即生效,需要执行 sudo firewall-cmd --reload 来加载,此后规则会持续有效。

    ⚠️ 最佳实践:建议先添加临时规则测试,确认服务正常后,再添加永久规则并重载配置。或者直接使用 --permanent 参数添加永久规则后,再执行 --reload 使其生效。

  3. 让配置变更生效
    在修改了任何带有 --permanent 参数的规则后,或者手动修改了防火墙配置文件(如 /etc/firewalld/zones/public.xml)后,必须执行重载命令才能使永久规则生效:

    sudo firewall-cmd --reload
    

💡 实用技巧与注意事项

  • 查看现有规则:使用 sudo firewall-cmd --list-all 查看当前默认区域的完整规则。要查看所有区域的详细规则,可以使用 sudo firewall-cmd --list-all-zones
  • 慎用应急模式:在遇到安全威胁时,可以使用 sudo firewall-cmd --panic-on 来阻断所有网络连接。恢复时使用 sudo firewall-cmd --panic-off。切记,此操作会断开所有远程连接。
  • 谨慎删除默认服务:默认区域(如 public)通常预放了 SSH 等服务。在远程服务器上操作时,若贸然移除 SSH 服务(--remove-service=ssh),可能会导致自己无法连接。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐