关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

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

发布时间:2022/12/5 9:16:07
香港云服务器

防火墙是一种监测和过滤传入和传出网络流量的方法。它通过定义一套安全规则来确定是否允许或阻止特定的流量。一个正确配置的防火墙是整个系统安全的最重要方面之一。

CentOS 8提供了一个名为firewalld的防火墙守护程序。它是一个完整的解决方案,有一个D-Bus接口,允许你动态地管理系统的防火墙。

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

前提条件


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

Firewalld的基本概念


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

Firewalld可以通过firewall-cmd命令行工具进行配置和管理。

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

Firewalld区域


区域是预定义的规则集,指定你的计算机所连接的网络的信任程度。你可以将网络接口和来源分配给一个区域。

下面是FirewallD提供的区,根据区的信任级别从不信任到信任排列。


  • DROP:所有传入的连接都被丢弃,没有任何通知。只允许出站连接。
  • BLOCK:所有进入的连接都会被拒绝,对于IPv4来说是icmp-host-prohibited消息,对于IPv6n来说是icmp6-adm-prohibited。只允许出站连接。
  • PUBLIC:用于不受信任的公共区域。你不信任网络上的其他计算机,但你可以允许选定的传入连接。
  • EXTERNAL:用于外部网络,当你的系统作为一个网关或路由器时,启用NAT伪装。只允许选定的传入连接。
  • INTERNAL:用于内部网络,当你的系统作为一个网关或路由器时。网络上的其他系统通常是被信任的。只允许选定的传入连接。
  • DMZ: 用于位于非军事区的计算机,这些计算机对网络其他部分的访问受到限制。只允许选定的传入连接。
  • WORK:用于工作机。网络上的其他计算机通常是被信任的。只允许选定的传入连接。
  • HOMG:用于家用机。网络上的其他计算机通常是被信任的。只允许选定的传入连接。
  • TRUST:所有网络连接都被接受。信任网络中的所有计算机。


防火墙服务


防火墙服务是预定义的规则,适用于一个区域内,并定义必要的设置,以允许特定服务的传入流量。服务允许你在一个步骤中轻松执行几个任务。

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

Firewalld运行时和永久设置


Firewalld使用两个分离的配置集,运行时和永久配置。

运行时配置是实际运行的配置,在重启时不会持续存在。当Firewalld守护进程启动时,它会加载永久配置,成为运行时配置。

默认情况下,当使用firewall-cmd工具对Firewalld配置进行修改时,这些修改被应用到运行时配置中。要使更改永久化,请在命令中添加 --permanent 选项。

要在两个配置集中应用这些变化,你可以使用以下两种方法之一。

更改运行时配置并使其永久化。


$ sudo firewall-cmd $ sudo firewall-cmd --runtime-to-permanent

改变永久配置并重新加载firewalld守护进程。

$sudo firewall-cmd --permanent $ sudo firewall-cmd --reload


启用FirewallD


在CentOS 8上,Firewalld已经安装并默认启用。如果由于某些原因,它没有安装在你的系统上,你可以通过输入以下内容来安装和启动该守护程序。


$ sudo dnf install firewalld$ sudo systemctl enable firewalld --now

你可以用以下方法检查防火墙服务的状态。

$ sudo firewall-cmd --state

如果防火墙被启用,该命令应该打印正在运行。否则,你将看到未运行。

Firewalld分区


如果你没有改变它,默认区域被设置为公共区域,所有网络接口都被分配到这个区域。

默认区域是用于所有没有明确分配给其他区域的东西。

你可以通过输入以下内容查看默认区。


$ 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和eth1被分配到公共区。

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和eth1接口使用,并允许DHCP客户端和SSH流量。

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