CentOS 7上安装配置FirewallD防火墙详解

正确配置的防火墙是整个系统安全性中最重要的方面之一。

FirewallD是一个完整的防火墙解决方案,用于管理系统的iptables规则,并提供用于对其进行操作的D-Bus接口。 从CentOS 7开始,FirewallD将替换iptables为默认的防火墙管理工具。

在本教程中,我们将向您展示如何在CentOS 7系统上使用FirewallD设置防火墙,并向您解释基本的FirewallD概念。

CentOS 7上安装配置FirewallD防火墙详解

必要条件

在开始本教程之前,请确保使用具有sudo权限的用户帐户或root用户登录服务器。最佳做法是将管理命令作为sudo用户而不是root用户运行,如果您的CentOS系统上没有sudo用户,则可以按照这些说明创建一个。

Firewalld基本概念

FirewallD使用区域和服务的概念,而不是iptables链和规则。根据您要配置的区域和服务,您可以控制允许或禁止进出系统的流量。

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

Firewalld区域

区域是预定义的规则集,用于根据计算机连接到的网络上的信任级别指定应允许的流量。您可以将网络接口和源分配给区域。

Bellow是FirewallD提供的区域,根据区域的信任级别从不信任到可信:

drop:删除所有传入连接而不发出任何通知。仅允许传出连接。

block:所有传入连接都被拒绝,其中包含用于IPv4的icmp-host-prohibited消息和用于IPv6n的icmp6-adm-prohibited。仅允许传出连接。

公众:用于不受信任的公共场所。您不信任网络上的其他计算机,但您可以允许选定的传入连接。

external:用于在系统充当网关或路由器时启用NAT伪装的外部网络。仅允许选定的传入连接。

internal:用于在系统充当网关或路由器时在内部网络上使用。网络上的其他系统通常是可信的。仅允许选定的传入连接。

dmz:用于位于非军事区的计算机,该计算机对网络其余部分的访问权限有限。仅允许选定的传入连接。

工作:用于工作机器。网络上的其他计算机通常是可信的。仅允许选定的传入连接。

home:用于家用机器。网络上的其他计算机通常是可信的。仅允许选定的传入连接。

trusted:接受所有网络连接。信任网络中的所有计算机。

防火墙服务

Firewalld服务是在区域内应用的预定义规则,并定义必要的设置以允许特定服务的传入流量。

Firewalld运行时和永久设置

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

运行时配置是实际运行的配置,并且在重新启动时不会持久。 当Firewalld服务启动时,它会加载永久配置,从而成为运行时配置。

默认情况下,使用firewall-cmd实用程序更改Firewalld配置时,更改将应用于运行时配置,以使更改成为永久性,您需要使用--permanent标志。

安装并启用FirewallD

01、安装FirewallD

默认情况下,Firewalld安装在CentOS 7上,但如果系统上未安装,则可以通过键入以下命令安装软件包:

sudo yum install firewalld

02、检查防火墙状态。

默认情况下禁用Firewalld服务。 您可以使用以下命令检查防火墙状态

sudo firewall-cmd --state

如果您刚刚安装或从未激活过,则该命令将打印不运行,否则您将看到正在运行。

03、启用FirewallD

要启动FirewallD服务并在引导类型上启用它:

sudo systemctl start firewalld
sudo systemctl enable firewalld

如下图:

如何在CentOS 7上安装配置FirewallD防火墙详解

使用Firewalld区域

首次启用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

输出:

public
  interfaces: ens33

上面的输出告诉我们,接口ens33分配给public区域。

您可以使用以下方式打印区域配置设置:

sudo firewall-cmd --zone=public --list-all

输出:

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services: ssh dhcpv6-client
  ports: 3389/tcp 21/tcp 60000-65535/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

以上命令截图如下:

如何在CentOS 7上安装配置FirewallD防火墙详解

从上面的输出中,我们可以看到公共区域处于活动状态并设置为默认值,由ens33接口使用。还允许与DHCP客户端和SSH相关的连接。

如果要检查所有可用区域的配置,请键入:

sudo firewall-cmd --list-all-zones

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

如下图:

如何在CentOS 7上安装配置FirewallD防火墙详解

更改接口区域

您可以使用--zone标志结合--change-interface标志轻松更改接口区域。 以下命令将eth1接口分配给工作区:

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,您可以根据称为服务的预定义规则允许特定端口的流量。

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

sudo firewall-cmd --get-services

如何在CentOS 7上安装配置FirewallD防火墙

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

/usr/lib/firewalld/services/http.xml

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12346.html