全国业务电话:
9.6 防火墙(Netfilter/Firewalld)
9.6 防火墙(Netfilter/Firewalld)
 
9.6.1 防火墙(Netfilter/Firewalld)介绍
 
  在 CGSL V5 里一个相互作用的 netfilter 被引入:firewalld。firewalld 是一个系统守护进程,可以配置和监控系统的防火墙规则。应用程序可以使用 DBus 消息系统请求 firewalld 打开端口,它可以禁用或锁定开放的端口。firewalld 涵盖了 IPv4、IPv6 和 ebtables 的设置。firewalld 守护进程来源于 firewalld 包。这个包在 Basice 安装方式会被安装,而在 minimal 安装方式不会被安装。系统默认使用 firewalld 为防火墙,而不是 iptables。
 
  firewalld 是所有网络流量划分为区(zones),简化防火墙管理。例如一个包传入的网络接口时,会根据源IP地址把流量转移到用于相应的区域(zone)的防火墙规则。每个区域(zone)都预设开放的或关闭的端口和服务列表。

9.6.2 区域(zones)概念
 
  firewalld 附带了一些预定义的区域,以适合各种用途。默认区域设置为 public,网络接口将被分配到 public 区,但 lo 接口被分配到 trusted 区。下面的表详细介绍这些区域的结构,但系统管理员可能需要定制这些区域具有不同的设置。默认情况下,由系统发起的通信所有区域都允许任何入站流量与部分出站流量。

  区域名字  
 
   默认设置
 
  trusted   
 
  允许所有的流量传入。
 
  home                                                        默认拒绝传入流量,除非是涉及到出站流量或预设的 sshmdnsipp-          clientsamba-client 与 dhcpv6-client 服务。
 
  internal      默认拒绝传入流量,除非是涉及到出站流量或预设的 sshmdnsipp-  clientsamba-client 与 dhcpv6-client 服务(与 home 区相同)。
 
  work      默认拒绝传入流量,除非是涉及到出站流量或预设的 sshipp-    client 与 dhcpv6-client 服务。
 
  public      默认拒绝传入流量,除非是涉及到出站流量或预设的 ssh 与 dhcpv6-client 服  务。新加的网络接口默认会被分配到此区。
 
  external      默认拒绝传入流量,除非是涉及到出站流量或预设的 ssh 服务。IPv4 传出流    量通过该区域转发会被伪装成从 IPv4 网络接口上传出。
 
  dmz    
 
  默认拒绝传入流量,除非是涉及到出站流量或预设的 ssh 服务。
 
  block   
 
  默认拒绝所有的传入流量,除非是涉及到出站流量。
 
  drop   
 
  默认丢弃所有的传入流量,除非是涉及到出站流量(甚至不使用 ICMP 错误回    应)。

  注:想知道所有的预设区域的列表和使用方法,请查阅 firewalld.zones(5)手册。
 
  firewalld 还附带了一些预设的服务。这些服务可以用来容易地使特定网络服务流量穿过防火墙。下面的表格详细介绍防火墙中的区域的默认配置使用的预设服务的设置。

  :其他预设的服务可使用”firewall-cmd –get-services”命令查看,或者查看/usr/lib/firewalld/services 目录下的文件。
 

  引导系统时自动恢复该规则集,则可以将上面指定的这条命令放到任何一个初始化shell脚本中。
 
9.6.3 防火墙(Netfilter/ firewalld)配置
 
  修改防火墙配置有三种主要方式:
 
  ·通过修改/etc/firewalld 目录下的配置文件。
 
  ·通过使用图形化工具 firewall-config;
 
  ·通过使用命令 firewall-cmd;
 
  :firewalld 需要依赖 NetworkManager 区分网络接口属于哪个区域,使用 firewalld 配置防火墙前需要确定 NetworkManager 是正在运行。
 
  配置防火墙(firewall-config)
 
  图形化工具 firewall-config,可以检查或者修改防火墙正在运行的、和持续性的配置。通过安装 firewall-config 的 RPM 包里,firewall-config 工具可以从命令行上打开,或从应用程序菜单下 Applications > Sundry > Firewall 打开。如果是普通用户打开 firewall-config 工具需要 root 密码。
 

防火墙配置(firewall-config)主界面
 
  在防火墙(firewall-config)配置主界面上,系统管理员可以选择修改当前的或是持续性(永久性)的配置。在大多数情况下,系统管理员将需要调整持久性(永久性)的配置,然后使用 Options > Reload Firewalld 菜单项激活防火墙的改变。
 
  如果要修改网络接口和源 IP 地址/范围所属区域,选择左侧的菜单区的 Zones 选项卡。在右侧的 Interfaces 和 Sources 标签下分别填写网络接口和源IP地址/范围。
 
  端口开放需要在 Services 标签下勾选,或通过在该区域的 Ports 标签下添加一个自定义的端口。
 
  如果一个特定的端口组在多个区域中被开放时,系统管理员也可以定义为那些端口的服务。这可以在左侧的菜单区的 Services 选项卡来完成(配置模式需要选择 Permanent/永久配置)。
 
  :在 Permanent(永久性配置)所做的任何更改需要重新启动或重新加载 firewalld 服务才生效,在 Runtime(运行时配置)所做的任何更改不会保留在 firewalld 服务重新启动或重新加载后。
 
  配置防火墙(firewall-cmd)

  对于那些偏好工作在命令行上的管理员或没有图形环境的情况,可以使用 firewalld 的命令行接口 firewall-cmd。firewall-cmd 接口为主体 firewalld 包的一部分,firewall-config 上执行的操作也可以通过 firewall-cmd 实现。
 
  下面的表列出了一些常用的 firewall-cmd 选项以及描述。注意,除非指定了--permanent 选项,几乎所有的命令都将是临时的配置。命令需要采取--zone=<ZONE>选项,以确定它们影响哪些区域。
 
firewall-cmd选项
 
描述
 
--get-default-zone
 
查询现在的默认区域。
 
--set-default-zone=<ZONE> 设置默认区域。修改默认区域会影响临时的配置(runtime)和永久的配置(permanent)。
 
--get-zones
 
列出所有可用的区域。
 
--get-active-zones 列出当前所有正在使用的区域(具有依赖于它们的接口或源IP地址/范围),以及它们的接口或源IP地址/范围。
 
--add-source=<CIDR> [--zone=<ZONE>] 添加流量路由,所有从IP地址或网络/子网掩码<CIDR>的流量转到指定区域。如果没有使用--zone=<ZONE>选项指定区域,将使用默认区域。
 
--remove-source=<CIDR> [--zone=<ZONE>] 删除流量路由,所有从IP地址或网络/子网掩码<CIDR>的流量转到指定区域的规则将被删除。如果没有使用--zone=<ZONE>选项指定区域,将使用默认区域。
 
--add-interface=<INTERFACE> [--zone=<ZONE>] 添加流量路由,所有从接口<INTERFACE>的流量转到指定区域。如果没有使用--zone=<ZONE>选项指定区域,将使用默认区域。
 
--change-interface=<INTERFACE> [--zone=<ZONE>] 将接口<INTERFACE>与区域<ZONE>关联,旧的关联将被移除。所有从接口<INTERFACE>的流量转到指定区域<ZONE>。如果没有使用--zone=<ZONE>选项指定区域,将使用默认区域。
 
--list-all [--zone=<ZONE>] 列出区域<ZONE>内所有已关联的接口,源,服务和端口。如果没有使用--zone=<ZONE>选项指定区域,将使用默认区域。
 
--list-all-zones
 
检索并列出所有的所有区域的信息。
 
--add-service-<SERVICE> [--zone=<ZONE>] 允许服务<SERVICE>通信。如果没有使用--zone=<ZONE>选项指定区域,将使用默认区域。
 
--remove-service-<SERVICE> [--zone=<ZONE>] 在区域<ZONE>允许列表中移除服务<SERVICE>。如果没有使用--zone=<ZONE>选项指定区域,将使用默认区域。
 
--add-port-<PORT/PROTOCOL> [--zone=<ZONE>] 开放端口<PORT/PROTOCOL>通信。如果没有使用--zone=<ZONE>选项指定区域,将使用默认区域。
 
--remove-port-<PORT/PROTOCOL> [--zone=<ZONE>] 在区域<ZONE>允许列表中端口<PORT/PROTOCOL>。如果没有使用--zone=<ZONE>选项指定区域,将使用默认区域。
 
--reload 重新加载firewall。临时的配置将被移除,加载永久的配置。
 

  firewall-cmd示例
 
  下面的示例默认区域设置为 dmz,来自 192.168.0.0/24 网络的所有流量被分配到 internal 区域,开放 internal 区域的MySQL 网络端口。

     
  #firewall-cmd  --set-default-zone=dmz
 
  #firewall-cmd  --permanent  --zone=internal  --add-source=192.168.0.0/24
 
  #firewall-cmd  --permanent  --zone=internal  --add-service=mysql
 
  #firewall-cmd  --reload




 
 


9.6.4 启动与关闭防火墙
 
  6.检查 firewalld 的状态
 
    # systemctl status firewalld  
 
  7.关闭防火墙
 
    # systemctl stop firewalld  
 
  8.开启防火墙
 
    # systemctl start firewalld  










 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  • 操作系统微信公众号

  • CPI微信公众号

© 2004-2020 广东中兴新支点技术有限公司  版权所有  (www.gd-linux.com)  粤ICP备15061780号-2

新支点OS业务:

QQ客服