如何在 CentOS 8 上配置和管理防火墙

2023-11-02

防火墙是一种监视和过滤传入和传出网络流量的方法。它的工作原理是定义一组安全规则来确定是允许还是阻止特定流量。正确配置的防火墙是整个系统安全最重要的方面之一。

CentOS 8 附带一个名为防火墙。它是一个带有 D-Bus 接口的完整解决方案,允许您动态管理系统的防火墙。

在本教程中,我们将讨论如何在 CentOS 8 上配置和管理防火墙。我们还将解释基本的 FirewallD 概念。

先决条件#

要配置防火墙服务,您必须以 root 身份登录或具有 sudo 权限的用户 .

基本 Firewalld 概念#

firewalld 使用区域和服务的概念。根据您要配置的区域和服务,您可以控制允许或阻止进出系统的流量。

可以使用以下命令配置和管理 Firewalldfirewall-cmd命令行实用程序。

在 CentOS 8 中,iptables 被 nftables 取代,作为firewalld 守护进程的默认防火墙后端。

防火墙区域#

区域是预定义的规则集,用于指定计算机所连接的网络的信任级别。您可以将网络接口和源分配给区域。

以下是 FirewallD 提供的区域,根据区域的信任级别从不信任到信任排序:

  • drop:所有传入连接都会被丢弃,且不会发出任何通知。仅允许传出连接。
  • block:所有传入连接都被拒绝icmp-host-prohibited留言给IPv4 and icmp6-adm-prohibited对于 IPv6n。仅允许传出连接。
  • public:用于不受信任的公共区域。您不信任网络上的其他计算机,但您可以允许选定的传入连接。
  • external:当您的系统充当网关或路由器时,可在启用 NAT 伪装的外部网络上使用。仅允许选定的传入连接。
  • internal:当您的系统充当网关或路由器时,可在内部网络上使用。网络上的其他系统通常是可信的。仅允许选定的传入连接。
  • dmz:用于位于非军事区且对网络其余部分的访问受到限制的计算机。仅允许选定的传入连接。
  • work:用于工作机械。网络上的其他计算机通常是可信的。仅允许选定的传入连接。
  • home:用于家用机器。网络上的其他计算机通常是可信的。仅允许选定的传入连接。
  • trusted:接受所有网络连接。信任网络中的所有计算机。

防火墙服务#

Firewalld 服务是在区域内应用的预定义规则,并定义必要的设置以允许特定服务的传入流量。这些服务使您可以一步轻松地执行多项任务。

例如,服务可以包含有关打开端口、转发流量等的定义。

Firewalld 运行时和永久设置#

Firewalld 使用两个独立的配置集:运行时配置和永久配置。

运行时配置是实际运行配置,不会在重新启动后保留。当firewalld守护进程启动时,它会加载永久配置,该配置将成为运行时配置。

默认情况下,当使用以下命令更改 Firewalld 配置时firewall-cmd实用程序,更改将应用​​于运行时配置。要使更改永久生效,请附加--permanent命令的选项。

要应用两个配置集中的更改,您可以使用以下两种方法之一:

  1. 更改运行时配置并使其永久化:

    sudo firewall-cmd <options>sudo firewall-cmd --runtime-to-permanent
  2. 更改永久配置并重新加载firewalld守护进程:

    sudo firewall-cmd --permanent <options>sudo firewall-cmd --reload

启用防火墙D#

在 CentOS 8 上,firewalld 默认安装并启用。如果由于某种原因它没有安装在您的系统上,您可以通过键入以下内容来安装并启动守护程序:

sudo dnf install firewalldsudo systemctl enable firewalld --now

您可以通过以下方式检查防火墙服务的状态:

sudo firewall-cmd --state

如果防火墙已启用,该命令应打印running。否则,你会看到not running.

防火墙区域#

如果您没有更改它,则默认区域设置为public,并且所有网络接口都分配给该区域。

默认区域用于未明确分配给另一区域的所有内容。

您可以通过键入以下内容来查看默认区域:

sudo firewall-cmd --get-default-zone
public

要获取所有可用区域的列表,请键入:

sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work

要查看活动区域以及分配给它们的网络接口:

sudo firewall-cmd --get-active-zones

下面的输出显示接口eth0 and eth1被分配给public zone:

public
  interfaces: eth0 eth1

您可以使用以下命令打印区域配置设置:

sudo firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0 eth1
  sources:
  services: ssh dhcpv6-client
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

从上面的输出中,我们可以看到公共区域处于活动状态并使用默认目标,即REJECT。输出还显示该区域已被eth0 and eth1接口并允许 DHCP 客户端和 SSH 流量。

如果您想检查所有可用区域的配置,请输入:

sudo firewall-cmd --list-all-zones

该命令打印一个包含所有可用区域设置的巨大列表。

更改区域目标#

目标定义区域对于未指定的传入流量的默认行为。它可以设置为以下选项之一:default, ACCEPT, REJECT, and DROP.

要设置区域的目标,请使用以下命令指定区域--zone选项和目标--set-target option.

例如,要更改public区的目标DROP你会运行:

sudo firewall-cmd --zone=public --set-target=DROP

将接口分配给不同的区域#

您可以为不同区域创建特定的规则集并为其分配不同的接口。当您的计算机上有多个接口时,这尤其有用。

要将接口分配到不同的区域,请使用以下命令指定区域--zone选项和接口--change-interface option.

例如,以下命令分配eth1接口到work zone:

sudo firewall-cmd --zone=work --change-interface=eth1

通过键入以下内容验证更改:

sudo firewall-cmd --get-active-zones
work
  interfaces: eth1
public
  interfaces: eth0

更改默认区域#

要更改默认区域,请使用--set-default-zone选项后跟您要设为默认值的区域的名称。

例如,将默认区域更改为home您将运行以下命令:

sudo firewall-cmd --set-default-zone=home

通过以下方式验证更改:

sudo firewall-cmd --get-default-zone
home

创建新区域#

Firewalld 还允许您创建自己的区域。当您想要创建每个应用程序的规则时,这非常方便。

在以下示例中,我们将创建一个名为的新区域memcached,打开端口11211并只允许从192.168.100.30IP地址:

  1. 创建区域:

    sudo firewall-cmd --new-zone=memcached --permanent
  2. 将规则添加到区域:

    sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanentsudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanentsudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent
  3. 重新加载firewalld守护进程以激活更改:

    sudo firewall-cmd --reload

防火墙服务#

使用firewalld,您可以根据称为服务的预定义规则允许特定端口和/或源的流量。

要获取所有默认可用服务类型的列表:

sudo firewall-cmd --get-services

您可以通过打开关联的 .xml 文件来找到有关每个服务的更多信息/usr/lib/firewalld/services目录。例如,HTTP服务的定义如下:

/usr/lib/firewalld/services/http.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>WWW (HTTP)</short>
  <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description>
  <port protocol="tcp" port="80"/>
</service>

要允许公共区域中的接口传入 HTTP 流量(端口 80),仅适用于当前会话(运行时配置),请键入:

sudo firewall-cmd --zone=public --add-service=http
如果您要修改默认区域,则可以省略--zone option.

要验证服务是否已成功添加,请使用--list-services option:

sudo firewall-cmd --zone=public --list-services
ssh dhcpv6-client http

要在重新启动后保持端口 80 打开,请再次运行相同的命令--permanent选项,或执行:

sudo firewall-cmd --runtime-to-permanent

Use the --list-services随着--permanent验证您的更改的选项:

sudo firewall-cmd --permanent --zone=public --list-services
ssh dhcpv6-client http

删除服务的语法与添加服务时的语法相同。只需使用--remove-service而不是--add-service flag:

sudo firewall-cmd --zone=public --remove-service=http --permanent

上面的命令删除了http来自公共区域永久配置的服务。

创建新的 FirewallD 服务#

正如我们已经提到的,默认服务存储在/usr/lib/firewalld/services目录。创建新服务的最简单方法是将现有服务文件复制到/etc/firewalld/services目录,这是用户创建服务和修改文件设置的位置。

例如,要为 Plex Media Server 创建服务定义,您可以使用 SSH 服务文件:

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

打开新创建的plexmediaserver.xml文件并更改服务的短名称和描述<short> and <description>标签。您需要更改的最重要的标签是porttag,定义了你要打开的端口号和协议。

在下面的示例中,我们打开端口1900UDP 和32400 TCP.

/etc/firewalld/services/plexmediaserver.xml
<?xml version="1.0" encoding="utf-8"?>
<service version="1.0">
<short>plexmediaserver</short>
<description>Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.</description>
<port protocol="udp" port="1900"/>
<port protocol="tcp" port="32400"/>
</service>

保存文件并重新加载 FirewallD 服务:

sudo firewall-cmd --reload

您现在可以使用plexmediaserver您所在区域的服务与任何其他服务相同。

打开端口和源IP#

Firewalld 还允许您快速启用来自受信任 IP 地址或特定端口上的所有流量,而无需创建服务定义。

开放源IP#

要允许来自特定 IP 地址(或范围)的所有传入流量,请使用以下命令指定区域--zone选项和源 IP--add-source option.

例如,允许来自 192.168.1.10 的所有传入流量public区域,运行:

sudo firewall-cmd --zone=public --add-source=192.168.1.10

使新规则持久化:

sudo firewall-cmd --runtime-to-permanent

使用以下命令验证更改:

sudo firewall-cmd --zone=public --list-sources
192.168.1.10

删除源 IP 的语法与添加源 IP 时的语法相同。只需使用--remove-source而不是--add-source option:

sudo firewall-cmd --zone=public --remove-source=192.168.1.10

打开源端口#

要允许给定端口上的所有传入流量,请使用以下命令指定区域--zone选项以及端口和协议--add-port option.

例如,打开端口8080在当前会话的公共区域中,您将运行:

sudo firewall-cmd --zone=public --add-port=8080/tcp

该协议可以是tcp, udp, sctp, or dccp.

验证更改:

sudo firewall-cmd --zone=public --list-ports
8080

要在重新启动后保持端口打开,请使用以下命令运行相同的命令,将规则添加到永久设置:--permanent标志或通过执行:

sudo firewall-cmd --runtime-to-permanent

删除端口的语法与添加端口时的语法相同。只需使用--remove-port而不是--add-port option.

sudo firewall-cmd --zone=public --remove-port=8080/tcp

转发端口#

要将流量从一个端口转发到另一个端口,请首先使用以下命令启用所需区域的伪装--add-masquerade选项。例如,要启用伪装external区域,类型:

sudo firewall-cmd --zone=external --add-masquerade

将流量从一个端口转发到 IP 地址上的另一个端口#

在以下示例中,我们从端口转发流量80到港口8080在同一台服务器上:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080

将流量转发到另一个 IP 地址#

在以下示例中,我们从端口转发流量80到港口80在有IP的服务器上10.10.10.2:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2

将流量转发到不同端口上的另一台服务器#

在以下示例中,我们从端口转发流量80到港口8080在有IP的服务器上10.10.10.2:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

要使转发规则持久化,请使用:

sudo firewall-cmd --runtime-to-permanent

结论#

您已经学习了如何在 CentOS 8 系统上配置和管理 firewalld 服务。

确保允许系统正常运行所需的所有传入连接,同时限制所有不必要的连接。

如果您有疑问,请随时在下面发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 CentOS 8 上配置和管理防火墙 的相关文章

  • 使用 CreateRestrictedToken(LUA_TOKEN) 从提升的进程创建低/中进程

    我正在尝试从提升的进程创建中或低完整性进程 我知道还有其他类似的问题 但它们主要关注使用资源管理器或任务计划程序等解决方法 我想坚持使用CreateRestrictedToken CreateProcessAsUser 我认为一定可以以某种
  • 防止隐藏的输入被更改

    这一直让我压力很大 我有一个隐藏的输入
  • 是否可以在 PHP 中使用 file_get_contents 来破坏 CSRF 令牌验证

    在每个会话的表单上使用令牌的 CSRF 预防方法是一种流行的方法 但是 我不明白这种令牌方式如何保护file get contentsPHP 可以获取跨域文件表单的内容 gt 它可以获取表单上的令牌并使用它 那么这种token方式是如何运作
  • 在数据库中存储密码的最佳方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 iOS 上固定证书的公钥

    在提高我们正在开发的 iOS 应用程序的安全性时 我们发现需要对服务器的 SSL 证书 全部或部分 进行 PIN 操作以防止中间人攻击 尽管有多种方法可以做到这一点 但当您搜索此内容时 我只找到了固定整个证书的示例 这种做法会带来一个问题
  • 保护 ASP.NET 网站中 Elmah RSS 源的安全

    我遵循了这个问题的答案在 ASP NET 网站中保护 Elmah 的安全 https stackoverflow com questions 1245364 securing elmah in asp net website限制对 elma
  • 使用内联样式有哪些风险?

    A 内容安全政策 https developer mozilla org en US docs Web HTTP CSP with a default src or style src指令将阻止内联样式应用于
  • CentOS:无法安装 Chromium 浏览器

    我正在尝试在 centOS 6 i 中安装 chromium 以 root 用户身份运行以下命令 cd etc yum repos d wget http repos fedorapeople org repos spot chromium
  • 对客户端 JavaScript 计算器使用 eval 安全吗?

    我正在制作一个计算器 作为用户浏览器的静态 HTML 页面 该页面并非旨在将任何信息提交回服务器 除了这个计算器之外 网页上不会出现任何其他内容 在这种情况下使用 eval 安全吗 或者换句话说 在这种情况下使用 eval 是否会导致额外的
  • 通过 URL 指定控制器类与为每个控制器编写一个脚本相比,有何优缺点?

    今年夏天我安装了两个不同的 PHP 系统 每个都使用两种不同的方法 方法 1 每个任务一个 PHP 文件 该方法需要一个PHP为每个主要任务创建文件 例如 我的上传脚本可以通过http www domain com upload php O
  • 除了用户名/密码之外的安全性?

    我有一个 Web 应用程序 其安全性要求高于普通 Web 应用程序 当任何用户访问域名时 他们都会看到两个文本字段 一个用户名字段和一个密码字段 如果他们输入有效的用户 密码 他们就可以访问 Web 应用程序 标准的东西 但是 我正在寻找超
  • Symfony2 捕获会话超时

    我有一个关于 Symfony2 的问题 希望有人能帮助我 Symfony 在哪里检查用户会话以及没有会话时该怎么办 就像重定向到登录页面一样 我发现了一些类似的问题 但不是我的意思 我为什么想知道它 如果有会话超时 我想检查调用是否是 Xm
  • SSL 速度:128 位与 256 位

    我决定使用 SSL 加密我的整个网站 即使实际上只有部分网站是必要的 最终结果是该网站现在有点慢 所以 我的问题是 我是否应该只加密网站的会员部分 请记住我在首页上有登录表单 我是否应该将加密降低到 128 位 如果站点总体较小 速度差异是
  • checkmarx - 如何解决存储的绝对路径遍历问题?

    Checkmarx v 9 3 0 HF11 我将 env 值作为 dev uat 服务器中使用的 docker 文件中的数据目录路径传递 ENV DATA app data 在本地 使用以下环境变量 数据 C 项目 应用程序 数据 get
  • .NET 中安全身份的本地化

    我想在 NET 中实现一个用于服务 客户端通信的命名管道 并遇到了这段代码 http code msdn microsoft com windowsdesktop CSNamedPipeCommunication 33b2485c view
  • 何时从容器管理的安全性转向 Apache Shiro、Spring Security 等替代方案?

    我正在尝试保护使用 JSF2 0 构建的应用程序的安全 我很困惑人们什么时候会选择使用 Shiro Spring Security 或 owasp 的 esapi 等安全替代方案 而放弃容器管理的安全性 看过一些相关问题 https sta
  • HTTP 基本身份验证 + 访问令牌?

    我正在开发一个 REST API 计划将其与 Web 和 IOS 应用程序一起使用 我打算让这个 API 在一段时间内保持私有 私有意味着我只希望我的 Web 应用程序和 ios 应用程序访问该 API 我已经阅读了许多不同的身份验证方法
  • PHP中如何有效防止跨站请求伪造(CSRF)

    我正在努力阻止CSRF https www owasp org index php Cross Site Request Forgery CSRF in php questions tagged php通过以下方式 A SESSION to
  • 尝试访问 iframe 内容(不同子域);尝试设置 CORS

    我将文件托管在domain com 其中包含一个 iframe 其文档托管在s3 domain com 我正在尝试访问 iframe 的内容 但收到以下信息 不安全的 JavaScript 尝试通过 URL 访问框架http s3 doma
  • 为什么需要 JsonRequestBehavior?

    Why is Json Request Behavior needed 如果我想限制HttpGet对我的动作的请求我可以用 HttpPost 属性 Example HttpPost public JsonResult Foo return

随机推荐

  • 在 NodeJS、ExpressJS 和 MySQL 中创建基本 CRUD API

    使用 ExpressJS 框架和 MySQL 数据库在 NodeJS 中创建基本的 CRUD 创建 读取 更新 删除 API 是一个简单的过程 在本教程中 我们将逐步介绍构建一个简单 API 所需的步骤 该 API 允许用户在数据库中创建
  • 如何避免 SSH 断管错误

    Secure Shell 或 SSH 是一种强大的协议 许多 IT 专业人员和网络管理员每天都使用它来建立与远程系统的安全连接 它旨在提供安全的远程登录和命令执行 但也存在一些问题 此类问题之一是 SSH 管道损坏错误 了解此错误的含义以及
  • Docker exec:在 Docker 容器中运行命令

    Docker 是一个流行的容器化平台 允许您在容器中打包 部署和运行应用程序 这 docker exec command 允许您在正在运行的 Docker 容器中运行命令 这对于调试 测试和管理容器非常有用 在本文中 我们将介绍如何使用 d
  • Windows 中哪个进程正在侦听端口

    如果您是系统管理员 您就会知道密切关注 Windows 系统上运行的进程有多么重要 有时 您可能需要找出哪个进程正在侦听特定端口 在本文中 我们将向您展示如何使用 CMD 和 PowerShell 来执行此操作 通过学习如何识别正在侦听端口
  • 如何安装和构建您的第一个 React Native 应用程序(快速入门)

    React 是 Facebook 维护的跨平台 JavaScript 库 它用于创建用户界面 使用 React Native 您可以轻松构建移动应用程序 React Native 提供应用程序的热重载 这样您就可以更快地构建您的应用程序 您
  • 如何在 Ubuntu 桌面上安装 NetBeans IDE 8.2 (PHP)

    NetBeans is the most popular IDE for development on Linux systems NetBeans editor provides many pre configured code temp
  • ChatGPT:AI语言模型的演变及其对社会的影响

    人工智能 AI 近年来已经取得了长足的进步 像这样的语言模型OpenAI 的 ChatGPT在自然语言处理和理解方面取得了长足的进步 本文将探讨 AI 语言模型的演变 重点关注 ChatGPT 其前身以及日益复杂的语言模型的社会影响 人工智
  • 如何在 Vim 中保存并退出

    VIM 是 Vi 改进版的缩写形式 它是一个免费的开源文本编辑器 可以安装在任何操作系统上 无论是 Windows 还是 Linux 操作系统 它可以在 CMD 命令行 模式以及 GUI 图形用户界面 模式下使用 它使用起来非常灵活和可靠
  • 如何在 Windows 上安装 Maven

    Apache Maven 是适用于任何软件项目的优秀构建工具 它可以帮助您管理项目代码及其构建过程 以便您的软件项目保持井井有条并保持其重点 Windows 并不是最受开发人员欢迎的操作系统 但企业和最终用户仍然广泛使用它 幸运的是 有多种
  • 如何在 Ubuntu 18.04 和 16.04 上使用 Nginx 安装多个 PHP 版本

    通常 网络托管管理器为每个 PHP 版本应用程序部署使用单独的服务器 这增加了托管成本 或者 您可以运行多个Docker多个 PHP 版本的容器 本教程帮助您在具有不同 PHP 版本的 Nginx Web 服务器上安装和配置两个 Virtu
  • 如何在 Python 中获取和更改当前工作目录

    在 Python 中处理目录中的文件时 使用绝对路径始终是一个好主意 但是 如果您使用相对路径 则需要了解当前工作目录的概念以及如何查找或更改当前工作目录 绝对路径指定从根目录开始的文件或目录位置 而相对路径从当前工作目录开始 当您运行 P
  • Grep 中的正则表达式 (Regex)

    grep是 Linux 中用于文本处理的最有用和最强大的命令之一 grep在一个或多个输入文件中搜索与正则表达式匹配的行 并将每个匹配行写入标准输出 在本文中 我们将探讨如何在 GNU 版本中使用正则表达式的基础知识grep 在大多数 Li
  • 如何在 Ubuntu 18.04 上安装和使用 Curl

    您正在学习使用以下命令下载文件的教程curl公用事业 您运行该命令并收到以下错误消息curl command not found 没有什么可担心的 这只是意味着curl您的 Ubuntu 计算机上未安装软件包 Curl 是一个命令行工具 允
  • 如何在 CentOS 上创建 sudo 用户

    The sudo命令旨在允许用户以另一个用户 默认为 root 用户 的安全权限运行程序 在本指南中 我们将向您展示如何在 CentOS 上创建具有 sudo 权限的新用户 您可以使用 sudo 用户在 CentOS 计算机上执行管理任务
  • 如何在 Linux 中挂载 NFS 共享

    网络文件系统 NFS 是一种分布式文件系统协议 允许您通过网络共享远程目录 使用 NFS 您可以在系统上安装远程目录并像使用本地文件一样使用远程文件 在 Linux 和 UNIX 操作系统上 您可以使用mount命令将共享 NFS 目录挂载
  • 如何使用 Rsync 排除文件和目录

    Rsync 是一种快速且多功能的命令行实用程序 可通过远程 shell 在两个位置之间同步文件和文件夹 使用 Rsync 您可以镜像数据 创建增量备份以及在系统之间复制文件 复制数据时 您可能需要根据名称或位置排除一个或多个文件或目录 在本
  • 如何在 CentOS 8 上安装 Slack

    Slack是世界上最受欢迎的协作平台之一 它将您的所有通信汇集在一起 Slack 中的对话按频道组织 您可以为您的团队 项目 主题或任何其他目的创建频道 您可以搜索频道或消息中发布的所有内容 Slack 还允许您通过音频或视频通话与队友交谈
  • 如何在 Debian 10 上安装 R

    R 是一种开源编程语言和免费环境 专门从事统计计算和图形表示 它由 R 统计计算基金会支持 主要供统计学家和数据挖掘人员用于开发统计软件和执行数据分析 本文提供有关如何在 Debian 10 上安装 R 的信息 先决条件 在继续本教程之前
  • 如何在 Ubuntu 20.04 上安装 MariaDB

    MariaDB 是一个开源关系数据库管理系统 它最初被设计为向后兼容的 二进制的 MySQL 直接替代品 MariaDB由MySQL的原始开发人员和开源社区开发和维护 本指南介绍了如何在 Ubuntu 20 04 上安装 MariaDB 先
  • 如何在 CentOS 8 上配置和管理防火墙

    防火墙是一种监视和过滤传入和传出网络流量的方法 它的工作原理是定义一组安全规则来确定是允许还是阻止特定流量 正确配置的防火墙是整个系统安全最重要的方面之一 CentOS 8 附带一个名为防火墙 它是一个带有 D Bus 接口的完整解决方案