Linux防火墙firewalld安全设置

  • 2019 年 11 月 22 日
  • 笔记

背景描述

防火墙是具有很好的保护作用。入侵者必须首先穿越防火墙的安全防线,才能接触目标计算机。在公司里数据安全是最重要的,要求安全部门进行全公司进行服务器防火墙安全搭建,在原有的基础上进行安全的防火墙设置,大多数生产环境都建议开启,这样才能有效避免安全隐患等问题;本文文字偏多,但是建议大家还是花个十多分钟好好看一下防火墙的原理,这样便于后期问题排查,最后一小节也会有常用命令操作。

1.Linux防火墙概述

防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性。它通过访问控制机制,确定哪些内部服务允许外部访问,以及允许哪些外部请求可以访问内部服务。它可以根据网络传输的类型决定IP包是否可以传进或传出内部网。 防火墙通过审查经过的每一个数据包,判断它是否有相匹配的过滤规则,根据规则的先后顺序进行一一比较,直到满足其中的一条规则为止,然后依据控制机制做出相应的动作。如果都不满足,则将数据包丢弃,从而保护网络的安全。 Linux系统的防火墙功能是由内核实现的。在2.4 版及以后的内核中,包过滤机制是netfilter.CentOS 6管理工具是iptables,CentOS 7管理工具是firewalld ,firewalld 是Linux新一代的防火墙工具,它提供了支持网络/防火墙区域 (zone) 定义网络链接以及接口安全等级的动态防火墙管理。 Netfilter,位于Linux内核中的包过滤防火墙功能体系,称为Linux防火墙“内核态”。firewall-cmd,位于/bin/firewall-cmd,是用来管理防火墙的命令工具,为防火墙体系提供过滤规则/策略,决定如何过滤或处理到达防火墙主机的数据包,称为Linux防火墙的“用户态”。习惯上,上述2种称呼都可以代表Linux防火墙。

2.Linux防火墙框架

(1) netfilter框架 Linux内核包含了一个强大的网络子系统,名为netfilter,它可以为iptables内核防火墙模块提供有状态或无状态的包过滤服务,如NAT、IP伪装等,也可以因高级路由或连接状态管理的需要而修改IP头信息。而firewalld可以动态管理防火墙,将netfilter的过滤功能集于一身,它也支持允许服务或者应用程序直接添加防火墙规则的接口,netfilter所处的位置如图1所示:

图1 netfilter在防火墙中的位置

虽然防火墙模块构建在Linux内核,并且要对流经IP层的数据包进行处理,但它并没有改变IP协议栈的代码,而是通过netfilter模块将防火墙的功能引入IP层,从而实现防火墙代码和IP协议栈代码的完全分离。netfilter模块的结构。如图2所示:

图2 netfilter结构框架图

数据包从左边进入IP协议栈,进行IP校验以后,数据包被PREROUTING处理,然后就进入路由模块,由其决定该数据包是转发出去还是送给本机。若该数据包是送给本机的,则通过INPUT处理后传递给本机的上层协议;若该数据包应该被转发,则它将FORWARD处理,然后还要经POSTROUTING处理后才能传输到网络。本机进程产生的数据包要先经过OUTPUT处理后,再进行路由选择处理,然后经过POSTROUTING处理后再发送到网络。 iptables服务在/etc/sysconfig/iptables中储存配置,而firewalld将配置储存在 /usr/lib/firewalld/和/etc/firewalld/中的各种XML文件里,使用iptables的时候每一个单独更改意味着清除所有旧有的规则和从/etc/sysconfig/iptables里读取所有新的规则,使用firewalld 却不会再创建任何新的规则,仅仅运行规则中的不同。因此firewalld可以在运行时改变设置而不丢失现行配置。 Firewalld动态管理防火墙,不需要重启整个防火墙便可应用更改。因而也就没有必要重载所有内核防火墙模块。不过,要使用firewalld就要求防火墙的所有变更都要通过firewalld守护进程来实现,以确保守护进程中的状态和内核里的防火墙是一致的。另外,firewalld无法解析由iptables和iptables命令行工具添加的防火墙规则。Firewalld防火墙堆栈示意图,如图3所示。

图3 为firewalld防火墙堆栈

2.Firewall防火墙管理

FirewallD 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。firewalld通过将网络划分成不同的区域(通常情况下称为 zones),制定出不同区域之间的访问控制策略来控制不同区域间传送的数据流。它支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项。它也支持允许服务或者应用程序直接添加防火墙规则的接口。以前的 system-config-firewall/lokkit 防火墙模型是静态的,每次修改都要求防火墙完全重启。这个过程包括内核 netfilter 防火墙模块的卸载和新配置所需模块的装载等。而模块的卸载将会破坏状态防火墙和确立的连接。 相反,firewall daemon 动态管理防火墙,不需要重启防火墙便可应用更改。因而也就没有必要重载所有内核防火墙模块了。不过,要使用 firewall daemon 就要求防火墙的所有变更都要通过该守护进程来实现,以确保守护进程中的状态和内核里的防火墙是一致的。另外,firewall daemon 无法解析由 ip*tables 和 ebtables 命令行工具添加的防火墙规则。守护进程通过 D-BUS 提供当前激活的防火墙设置信息,也通过 D-BUS 接受使用 PolicyKit 认证方式做的更改。应用程序、守护进程和用户可以通过D-BUS请求启用一个防火墙特性。特性可以是预定义的防火墙功能,如:服务、端口和协议的组合、端口/数据报转发、伪装、ICMP 拦截或自定义规则等。该功能可以启用确定的一段时间也可以再次停用。

3.firewalld区域管理

网络区域定义了网络连接的可信等级。这是一个一对多的关系,这意味着一次连接可以仅仅是一个区域的一部分,而一个区域可以用于很多连接。一个IP可以看作是一个区域、一个网段可以看作是一个区域,局域网、互联网都可以看作是一个区域。例如:

  • 预定义的服务: 服务是端口和/或协议入口的组合。 备选内容包括 netfilter 助手模块以及 IPv4、Pv6地址。
  • 端口和协议: 定义了 tcp 或 udp 端口,端口可以是一个端口或者端口范围。
  • ICMP阻塞: 可以选择 Internet 控制报文协议的报文。 这些报文可以是信息请求亦可是对信息请求或错误条件创建的响应。
  • 伪装: 私有网络地址可以被映射到公开的IP地址。 这是一次正规的地址转换。
  • 端口转发: 端口可以映射到另一个端口以及/或者其它主机。 现网应用中,假设互联网是不可信任的区域,而内部网络是高度信任的区域。 为避免安全策略中禁止的一些通信,它在信任度不同的区域有各自基本的控制任务。 典型的区域包括互联网(一个没有信任的区域)和一个内部网络(一个高信任的区域)。 最终目标是在不同信任力度的区域,通过安全政策的运行和连通性模型之间,根据最少特权原则提供连通性。 例如: 公共 WIFI 网络连接应该不信任,而家庭有线网络连接就应该完全信任。 网络安全模型可以在安装、初次启动和首次建立网络连接时选择初始化。 该模型描述了主机所联的整个网络环境的可信级别,并定义了新连接的处理方式。 在 /etc/firewalld/ 的区域设定中,定义了一系列可以被快速执行到网络接口的预设定。 firewalld 提供的区域按照从不信任到信任的顺序排序。 有以下几种不同的初始化区域:
  • drop(丢弃): 任何接收的网络数据包都被丢弃,没有任何回复。 仅能有发送出去的网络连接。
  • block(限制): 任何接收的网络连接,都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝。
  • public(公共): 该区域是系统默认区域,在公共区域内使用,不能相信网络内的其它计算机不会对您的计算机造成危害,只能接收经过选取的连接。
  • external(外部): 特别是为路由器启用了伪装功能的外部网。 您不能信任来自网络的其它计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。
  • dmz(非军事区): 用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。
  • work(工作): 用于工作区。 您可以基本相信网络内的其它电脑不会危害您的电脑。 仅仅接收经过选择的连接。
  • home(家庭): 用于家庭网络。 您可以基本信任网络内的其它计算机不会危害您的计算机。 仅仅接收经过选择的连接。
  • internal(内部): 用于内部网络。 您可以基本上信任网络内的其它计算机不会威胁您的计算机。 仅仅接受经过选择的连接。
  • trusted(信任): 可接受所有的网络连接。

配置或者增加区域:可以使用任何一种 firewalld 配置工具来配置或者增加区域,以及修改配置。工具有例如 firewall-config 这样的图形界面工具, firewall-cmd 这样的命令行工具,以及D-BUS接口。或者也可以在配置文件目录中创建或者拷贝区域文件。@PREFIX@/lib/firewalld/zones 被用于默认和备用配置,/etc/firewalld/zones 被用于用户创建和自定义配置文件。 修改区域:区域设置以 ZONE= 选项 存储在网络连接的ifcfg文件中。如果这个选项缺失或者为空,firewalld 将使用配置的默认区域。如果这个连接受到 NetworkManager 控制,也可以使用 nm-connection-editor 来修改区域。 由NetworkManager控制的网络连接:防火墙不能够通过 NetworkManager 显示的名称来配置网络连接,只能配置网络接口。因此在网络连接之前 NetworkManager 将配置文件所述连接对应的网络接口告诉 firewalld 。如果在配置文件中没有配置区域,接口将配置到 firewalld 的默认区域。如果网络连接使用了不止一个接口,所有的接口都会应用到 fiwewalld。接口名称的改变也将由 NetworkManager 控制并应用到firewalld。为了简化,网络连接将被用作与区域的关系。如果一个接口断开了,NetworkManager也将告诉firewalld从区域中删除该接口。当firewalld由systemd或者init脚本启动或者重启后,firewalld将通知NetworkManager把网络连接增加到区域。

4.Linux防火墙的基本配置与管理

CentOS 7中使用firewall-config图形界面管理的防火墙策略。也可以使用firewall-cmd命令行工具进行管理, firewall-cmd 支持全部防火墙特性,对于状态和查询模式,命令只返回状态,没有其它输出。另外还可以直接编辑/etc/firewalld/中的配置文件用来管理firewalld的策略。

  • 使用firewalld可以通过图形界面工具 firewall-config 或者命令行客户端 firewall-cmd 启用或者关闭防火墙特性。
  • 使用firewall-cmd命令行工具 firewall-cmd 支持全部防火墙特性。 对于状态和查询模式,命令只返回状态,没有其它输出。

4.1 firewall-cmd命令行工具

firewall-cmd支持防火墙的所有特性,管理员可以用它来改变系统或用户策略,通过 firewall-cmd用户可以配置防火墙允许通过的服务、端口、伪装、端口转发、和ICMP过滤器和调整 zone(区域)设置等功能。 firewall-cmd工具支持两种策略管理方式,运行时和永久设置,需要分别设置两者:

  • 处理运行时区域,运行时模式下对区域进行的修改不是永久有效的,但是即时生效,重新加载或者重启系统后修改将失效。
  • 处理永久区域,永久选项不直接影响运行时的状态,这些选项仅在重载或者重启系统时可用。
  • 防火墙启动与关闭
  • 启动防火墙: systemctl start firewalld
  • 查询防火墙状态: systemctl status firewalld
  • 开机启动防火墙: systemctl enable firewalld
  • 停止防火墙: systemctl stop firewalld
  • 开机关闭防火墙: systemctl disable firewalld

防火墙管理命令格式: firewall-cmd [Options…] firewall-cmd支持上百参数,下表为常用Options说明,如表所示:

firewall-cmd命令

说明

—get-default-zone

查询当前默认区域

—set-default-zone=

设置默认区域,会更改运行时和永久配置

—get-zones

列出所有可用区域

—get-active-zones

列出正在使用的所有区域(具有关联的接口或源)机器接口和源信息

—add-source=[—zone=]

将来自IP地址或网络/子网掩码的所有流量路由到指定区域。

—remove-source=[—zone=]

从指定区域中删除用于路由来自IP地址或网络/子网掩码的所有流量的规则

—add-interface=[—zone=]

将来自的所有流量路由到指定区域

—change-interface=[—zone=]

将接口与而非其当前区域关联

—list-all [—zone=]

列出的所有已配置接口、源、服务和端口

—list-all-zones

检索所有区域的所有信息(接口、源、端口、服务等)

—add-service=[—zone=]

允许到的流量

—add-port=[—zone=]

允许到端口的流量

—remove-service=[—zone=]

从区域允许列表中删除

—remove-port=[—zone=]

从区域允许列表中删除端口

—reload

丢弃运行时配置,并应用持久配置

4.2 firewall-config图形工具

firewall-config支持防火墙的所有特性,管理员可以用它来改变系统或用户策略,通过 firewall-config 用户可以配置防火墙允许通过的服务、端口、伪装、端口转发、和ICMP过滤器和调整 zone(区域)设置等功能以使防火墙设置更加的自由、安全和强健。 firewall-config工作界面。如图4所示。

图4 firewall-config工作界面分成三个部分:上面是主菜单,中间是配置选项卡,包括区域、服务设置选项卡,底部是状态栏,状态栏从左到右依次是连接状态、默认区域、锁定状态、应急模式。 在左下方角落寻找“已连接”字符,这标志着 firewall-config工具已经连接到用户区后台程序 firewalld。 (1).firewall-config 主菜单 firewall-config 主菜单包括四个选项:文件,选项,查看,帮助。其中选项子菜单是最主要的,它包括几个部分:

  • 重载防火墙: 重载防火墙规则。 例如所有现在运行的配置规则如果没有在永久配置中操作,那么系统重载后会丢失。
  • 更改连接区域: 更改网络连接的默认区域。
  • 改变默认区域: 更改网络连接的所属区域和接口。
  • 应急模式: 应急模式意味着丢弃所有的数据包。
  • 锁定: 锁定可以对防火墙配置进行加锁,只允许白名单上的应用程序进行改动。 锁定特性为 firewalld 增加了锁定本地应用或者服务配置的简单配置方式。 它是一种轻量级的应用程序策略。

(2)firewall-config配置选项卡 firewall-config 配置选项卡包括:运行时和永久。

  • 运行时: 运行时配置为当前使用的配置规则。 运行时配置并非永久有效,在重新加载时可以被恢复,而系统或者服务重启、停止时,这些选项将会丢失。
  • 永久: 永久配置规则在系统或者服务重启的时候使用。 永久配置存储在配置文件中,每次机器重启或者服务重启、重新加载时将自动恢复。

(3)firewall-config区域选项卡 区域选项卡是一个主要设置界面,firewalld 提供了10种预定义的区域,区域配置选项和通用配置信息可以在 firewall.zone(5) 的手册里查到, 区域选项卡有八个子选项卡,分别是服务、端口、伪装、端口转发、ICMP过滤器、富规则、接口、来源,如图3-1-5所示。

  • 服务: 定义区域中哪些服务是可信的。
  • 端口: 定义区域中允许访问的主机或网络访问的附加端口或端口范围。
  • 伪装: NAT伪装,是否启用IP转发,是地址转发的一种,仅支持IPv4。
  • 端口转发: NAT转发,将指向单个端口的流量将转发到相同计算机上的不同端口,或者转发到不同计算机上的端口
  • ICMP过滤器: 设置可通过的ICMP数据包类型。
  • 富规则: 是一种表达性语言,可表达firewalld基本语法中未涵盖的自定义防火墙规则,可用于表达基本的允许/拒绝规则,可用于配置记录(面向syslog和auditd)及端口转发、伪装和速率限制
  • 接口: 增加入口到区域。
  • 来源:绑定来源地址或范围。

(4)firewall-config 服务选项卡 预定义了几十种重要服务,可通过命令firewall-cmd —get-services查询,服务是端口、协议、模块和目标地址的集合,该选项卡配置只能在永久配置视图中修改服务,不能在运行时配置中修改。 服务选项卡底下包含端口和协议、模块、目标地址三种子选项卡,如图3-1-6所示。。

端口和协议:

定义需要被所有主机或网络访问的额外端口或端口区间。

模块:

添加网络过滤辅助模块。

目标地址:

如果指定了目的地址,服务项目将仅限于目的地址和类型。

5 当前的firewalld特性

  • D-BUS接口: D-BUS 接口提供防火墙状态的信息,使防火墙的启用.停用或查询设置成为可能。
  • 区域: 网络或者防火墙区域定义了连接的可信程度。 firewalld 提供了几种预定义的区域。 区域配置选项和通用配置信息可以在firewall.zone(5)的手册里查到。
  • 服务: 服务可以是一系列本端口.目的以及附加信息,也可以是服务启动时自动增加的防火墙助手模块。 预定义服务的使用使启用和禁用对服务的访问变得更加简单。 服务配置选项和通用文件信息在 firewalld.service(5) 手册里有描述。
  • ICMP类型: Internet控制报文协议 (ICMP) 被用以交换报文和互联网协议 (IP) 的错误报文。 在 firewalld 中可以使用 ICMP 类型来限制报文交换。 ICMP 类型配置选项和通用文件信息可以参阅 firewalld.icmptype(5) 手册。
  • 直接接口: 直接接口主要用于服务或者应用程序增加特定的防火墙规则。 这些规则并非永久有效,并且在收到 firewalld 通过 D-Bus 传递的启动.重启.重载信号后需要重新应用。
  • 运行时配置: 运行时配置并非永久有效,在重新加载时可以被恢复,而系统或者服务重启.停止时,这些选项将会丢失。
  • 永久配置: 永久配置存储在配置文件中,每次机器重启或者服务重启.重新加载时将自动恢复。
  • 托盘小程序: 托盘小程序 firewall-applet 为用户显示防火墙状态和存在的问题。 它也可以用来配置用户允许修改的设置。
  • 图形化配置工具: firewall daemon 主要的配置工具是 firewall-config 。 它支持防火墙的所有特性(除了由服务/应用程序增加规则使用的直接接口)。 管理员也可以用它来改变系统或用户策略。
  • 命令行客户端: firewall-cmd是命令行下提供大部分图形工具配置特性的工具。
  • 对于ebtables的支持: 要满足libvirt daemon的全部需求,在内核 netfilter 级上防止 ip*tables 和 ebtables 间访问问题,ebtables 支持是需要的。 由于这些命令是访问相同结构的,因而不能同时使用。
  • /usr/lib/firewalld中的默认/备用配置: 该目录包含了由 firewalld 提供的默认以及备用的 ICMP 类型.服务.区域配置。 由 firewalld 软件包提供的这些文件不能被修改,即使修改也会随着 firewalld 软件包的更新被重置。 其它的 ICMP 类型.服务.区域配置可以通过软件包或者创建文件的方式提供。
  • /etc/firewalld中的系统配置设置: 存储在此的系统或者用户配置文件可以是系统管理员通过配置接口定制的,也可以是手动定制的。 这些文件将重载默认配置文件。 为了手动修改预定义的 icmp 类型,区域或者服务,从默认配置目录将配置拷贝到相应的系统配置目录,然后根据需求进行修改。 如果加载了有默认和备用配置的区域,在 /etc/firewalld下的对应文件将被重命名为 .old 然后启用备用配置。

6.用户策略支持

管理员可以规定哪些用户可以使用用户交互模式和限制防火墙可用特性。 端口元数据信息(由 Lennart Poettering 提议),拥有一个端口独立的元数据信息是很好的。应用程序或服务的端口是动态的,因而端口本身并不能描述使用情况,所以对 /etc/services 的端口和协议静态分配模型不是个好的解决方案,也没有反映当前使用情况。。 元数据信息可以用来为防火墙制定简单的规则。下面是一些例子:

  • 允许外部访问文件共享应用程序或服务;
  • 允许外部访问音乐共享应用程序或服务;
  • 允许外部访问全部共享应用程序或服务;
  • 允许外部访问 torrent 文件共享应用程序或服务;
  • 允许外部访问 http 网络服务。

这里的元数据信息不只有特定应用程序,还可以是一组使用情况。例如:组“全部共享”或者组“文件共享”可以对应于全部共享或文件共享程序(如:torrent 文件共享)。这些只是例子,因而,可能并没有实际用处。 这里是在防火墙中获取元数据信息的两种可能途径:

  • 第一种是添加到 netfilter (内核空间)。 好处是每个人都可以使用它,但也有一定使用限制。 还要考虑用户或系统空间的具体信息,所有这些都需要在内核层面实现。
  • 第二种是添加到 firewall daemon 中。 这些抽象的规则可以和具体信息(如: 网络连接可信级。 作为具体个人/主机要分享的用户描述.管理员禁止完全共享的应归则等)一起使用。

第二种解决方案的好处是不需要为有新的元数据组和纳入改变(可信级.用户偏好或管理员规则等等)重新编译内核。这些抽象规则的添加使得 firewall daemon 更加自由。即使是新的安全级也不需要更新内核即可轻松添加。

7.sysctld的错误设置

实际应用中对sysctl 设置经常出现错误。 一个例子是,在 rc.sysinit 正运行时,而提供设置的模块在启动时没有装载或者重新装载该模块时会发生问题。 另一个例子是 net.ipv4.ip_forward ,防火墙设置.libvirt 和用户/管理员更改都需要它。如果有两个应用程序或守护进程只在需要时开启 ip_forwarding ,之后可能其中一个在不知道的情况下关掉服务,而另一个正需要它,此时就不得不重启它。 sysctl daemon 可以通过对设置使用内部计数来解决上面的问题。此时,当请求者不再需要时,它就会再次回到之前的设置状态或者是直接关闭它。

8 iptables 的与firewalld区别

firewalld 和 iptables service 之间最本质区别是:

  • iptables service 在 /etc/sysconfig/iptables 中储存配置,而 firewalld 将配置储存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件里,要注意,当 firewalld 在Linux上安装失败时, /etc/sysconfig/iptables 文件就不存在。
  • 使用 iptables service,每一个单独更改意味着清除所有旧有的规则和从 /etc/sysconfig/iptables里读取所有新的规则,然而使用 firewalld 却不会再创建任何新的规则;仅仅运行规则中的不同之处。 因此,firewalld 可以在运行时间内,改变设置而不丢失现行连接。

9 常用命令

(1) firewalld的基本使用

启动:systemctl start firewalld 关闭:systemctl stop firewalld 查看状态:systemctl status firewalld 开机禁用 :systemctl disable firewalld 开机启用 :systemctl enable firewalld

(2) systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。

启动一个服务:systemctl start firewalld.service 关闭一个服务:systemctl stop firewalld.service 重启一个服务:systemctl restart firewalld.service 显示一个服务的状态:systemctl status firewalld.service 在开机时启用一个服务:systemctl enable firewalld.service 在开机时禁用一个服务:systemctl disable firewalld.service 查看服务是否开机启动:systemctl is-enabled firewalld.service 查看已启动的服务列表:systemctl list-unit-files|grep enabled 查看启动失败的服务列表:systemctl —failed

(3) 配置firewalld-cmd

#《实例一》防火墙查询  firewall-cmd --version    //查看版本  firewall-cmd --help  // 查看帮助  firewall-cmd --state // 显示状态  firewall-cmd --get-services //获取支持服务列表(firewalld内置服务支持)  firewall-cmd --zone=public --list-ports  //查看所有打开的端口  firewall-cmd --list-forward-ports  //查看转发的端口  fierewall-cmd –reload        //重新加载防火墙策略  firewall-cmd --get-active-zones  //查看区域信息  firewall-cmd --list-all-zones  //列出全部启用的区域的特性  firewall-cmd --list-services  //显示防火墙当前服务  firewall-cmd --get-zone-of-interface=eth0  //查看指定接口所属区域  firewall-cmd --panic-on   //拒绝所有包  firewall-cmd --panic-offfir  //取消拒绝状态  firewall-cmd --query-panic  //查看是否拒绝  # 《实例二》 运行时区域策略设置示例(注:以下示例不加zone的为默认区域public)  firewall-cmd --add-service=ssh        //允许 ssh 服务通过  firewall-cmd --remove-service=ssh        //禁止 ssh 服务通过  firewall-cmd --add-service=samba --timeout=600        //临时允许 samba 服务通过 600 秒  firewall-cmd --add-service=http --zone=work        //允许http服务通过work区域  firewall-cmd --zone=work --add-service=http        //从work区域打开http服务  firewall-cmd --zone=internal --add-port=443/tcp        //打开 443/tcp 端口在内部区域(internal)  firewall-cmd --zone=internal --remove-port=443/tcp        //关闭443/tcp 端口在内部区域(internal)  firewall-cmd --add-interface=eth0        //打开网卡eth0  firewall-cmd --remove-interface=eth0        //关闭网卡eth0   #《 实例三》 永久区域策略设置示例(注:以下示例不加zone的为默认区域public;永久设置均需重新加载防火墙策略或重启系统)  firewall-cmd --permanent --add-service=ftp        //永久允许 ftp 服务通过  firewall-cmd --permanent --remove-service=ftp        //永久禁止 ftp 服务通过  firewall-cmd --permanent --add-service=http --zone=external     //永久允许http服务通过external区域  firewall-cmd --permanent --add-service=http --zone=external     //永久允许http服务通过external区域  firewall-cmd --permanent --zone=internal --add-port=111/tcp        //打开 111/tcp 端口在内部区域(internal)  firewall-cmd --permanent --zone=internal --remove-port=111/tcp        //关闭 111/tcp 端口在内部区域(internal)  firewall-cmd --permanent --add-interface=eth0      //永久打开网卡eth0  firewall-cmd --permanent --remove-interface=eth0        //永久关闭网卡eth0  firewall-cmd --permanent --zone=public --add-port=8080-8083/tcp  //添加多个端口  firewall-cmd --permanent --zone=public --remove-port=81/tcp //删除某个端口  firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.1.51" accept" //删除某个IP  firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept" //  firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="9200" accept"  //针对某个ip段访问  firewall-cmd --reload   //添加操作后别忘了执行重载才会生效