Linux firewalld 的用法

发布时间 2023-12-29 14:52:13作者: xiao智

大乌龙事件之防火墙作祟:
在我的初始化环境中 selinux、iptables、firewalld 是关闭的, 莫名的firewalld 是没有关闭的这是我在安装完docker后一段时间后部署jenkins才发现的,当时在排错折腾了一下午,从防火墙,负载均衡,jenkins本身服务,docker没想到firewalld开启了,我说服务器内正常运行一直没找到是什么给拦截了. 没办法关了 firewalld docker就的流量就嘎了,所以重新学习一下 Firewalld.

firewalld 是 Linux 中的一个动态防火墙管理工具,它允许配置和管理 iptables 规则。以下是一些常见的 firewalld 命令和用法:

  1. 检查 firewalld 状态:

    sudo systemctl status firewalld
    
  2. 启动 firewalld 服务:

    sudo systemctl start firewalld
    
  3. 停止 firewalld 服务:

    sudo systemctl stop firewalld
    
  4. 重新启动 firewalld 服务:

    sudo systemctl restart firewalld
    
  5. 设置 firewalld 开机启动:

    sudo systemctl enable firewalld
    
  6. 禁用 firewalld 开机启动:

    
    sudo systemctl disable firewalld
    
  7. 查看所有可用的服务:

    sudo firewall-cmd --get-services
    
  8. 查看当前活动的区域:

    sudo firewall-cmd --get-active-zones
    
  9. 查看指定区域的详细信息:

    sudo firewall-cmd --zone=public --list-all
    
  10. 开放端口:

    sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
    sudo firewall-cmd --reload
    
  11. 允许某个服务:

    sudo firewall-cmd --zone=public --add-service=http --permanent
    sudo firewall-cmd --reload
    
  12. 如果想要移除 HTTP 服务,命令可能如下:

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

    这样,HTTP 服务将从 firewalld 的配置中移除。确保在修改防火墙规则之前了解其影响,并确保不会因此而失去对系统的访问。

  13. 封锁指定 IP 地址:

    sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.2" reject' --permanent
    sudo firewall-cmd --reload
    
  14. 移除端口或服务:

    sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent
    sudo firewall-cmd --reload
    
  15. 查看 firewalld 版本:

    sudo firewall-cmd --version
    

这些命令提供了一些基本的 firewalld 操作。请根据的需求调整区域、端口和服务等设置。务必小心地配置防火墙规则,以确保系统的安全性。

--zone 选项用于指定在 firewalld 防火墙中应用规则的区域。每个区域代表一个网络区域或一个网络接口,并定义了一组预定义的规则集。不同的区域可以应用不同的防火墙规则,允许根据网络环境的不同设置不同的安全策略。

以下是一些常见的预定义区域:

  1. public: 适用于公共网络,比如互联网。
  2. internal: 适用于内部网络,通常是信任的本地网络。
  3. external: 适用于外部网络,通常是不受信任的外部网络。
  4. dmz: 适用于 DMZ(隔离区)网络,通常用于放置公共可访问的服务。

可以在规则中使用 --zone 选项来指定要应用规则的区域。例如,要在 public 区域中打开端口 80,可以执行以下命令:

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

这样,端口 80 将在 public 区域中永久地打开。请注意,添加 --permanent 选项表示这是永久性修改,然后需要通过 --reload 命令重新加载防火墙规则,以使更改生效。