在RHEL7中使用firewalld配置基本防火墙

时间:2020-03-21 11:43:06  来源:igfitidea点击:

在CentOS 7或者Red Hat Enterprise 7 Linux中,我们看一下firewalld,这是配置基本防火墙的新方法。
我们将看看firewalld和firewall-cmd。

网络过滤器(Netfilter)

Linux内核具有一些强大的子系统,这些子系统允许内核模块与系统的其余部分进行交互。
这些子系统之一是称为netfilter的网络过滤子系统。
这个netfilter子系统是在CentOS 7或者Red Hat Enterprise 7 Linux系统上构建防火墙的主要组件。
netfilter子系统允许内核模块与系统接收或者发送的每个单个网络数据包进行交互。

防火墙(Firewalld)

Firewalld系统守护程序是与netfilter/iptables通信的新方法。
该系统守护程序用于在系统上配置和监视防火墙规则。
所有网络流量都由Firewalld划分为区域,并根据规则将流量发送到该区域。
这样的规则的一个例子是例如分组的源IP地址。

与防火墙交互的方法有很多:

  • 命令行工具firewall-cmd
  • 图形工具称为firewall-config
  • 或者通过编辑/etc/firewalld下的配置文件

注意:您需要重新启动或者重新加载firewalld守护程序才能使更改生效。

检查顺序

将首先检查数据包的源地址,如果此源地址配置为特定区域,则使用该区域的规则。
如果在源地址上找不到匹配项,则将检查传入接口是否有已配置的区域。
然后将使用该区域的规则。
如果没有配置区域,则将使用默认区域,默认情况下为公共区域public。
当然,如果需要,可以将默认区域更改为其他区域。
有关区域的更多信息,可以在手册中使用:man 5 firewalld.zone

# man 5 firewalld.zone

如前所述,firewall-cmd工具可用于从命令行与firewalld进行交互。
您应该注意,除非您提供选项--permanent,否则仅更改firewalld的运行配置!

查看常用的firewall-cmd示例:

//Show the help
# firewall-cmd --help

打印预定义区域zone:

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

列出为所有zone添加或者启用的内容

# firewall-cmd —list-all-zones

打印当前活动区域

# firewall-cmd --get-active-zones 
public
  interfaces: enp0s25
#

应用配置文件并删除运行时配置

# firewall-cmd --reload
success
#

为区域添加服务。
除非使用–zone指定区域,否则将使用默认区域(zone)。

//firewall-cmd --add-service=
# firewall-cmd --add-service=http
success
#

从区域中删除服务。
除非使用–zone,否则将使用默认区域。

# firewall-cmd --remove-service=http
success
#

绑定[/]到区域。
除非使用–zone,否则将使用默认区域。

//firewall-cmd --add-source=
# firewall-cmd --add-source=127.0.0.1
success
#

删除源

# firewall-cmd --remove-source=127.0.0.1
success
#

将绑定到区域。
除非使用–zone,否则将使用默认区域。

//firewall-cmd --add-interface=
# firewall-cmd --add-interface=enp0s25 
Warning: ZONE_ALREADY_SET
#

注意:在这种情况下,我们会收到警告,因为系统上只有一个NIC,因此已经设置好了。

在这种情况下,请更改默认区域dmz

# firewall-cmd --set-default-zone=dmz
success
//And back to public
# firewall-cmd --set-default-zone=public
success
#

看一下firewall-cmd的帮助,您可以使用许多其他选项。

配置/etc/firewalld/目录

在/etc/firewalld/目录中,您会找到Firewalld配置文件。
主要配置文件称为:firewalld.conf。

ls -l 查看/etc/firewalld目录:

-rw-------. 1 root root 1026 Aug  4 19:52 firewalld.conf
drwxr-x---. 2 root root    6 Jun 10 09:19 icmptypes
-rw-r-----. 1 root root  267 Jun 10 09:19 lockdown-whitelist.xml
drwxr-x---. 2 root root    6 Jun 10 09:19 services
drwxr-x---. 2 root root   23 May 24 21:32 zones

如您所见,该目录下还有一些其他目录。
使用iptables,所有内容都使用/etc/sysconfig/iptables文件进行配置,但是firewalld也使用一些xml文件。
例如,在zones目录中,您将找到文件public.xml,其内容如下:

  Public
用于公共区域。您不相信网络上的其他计算机不会损坏您的计算机。
只接受选定的传入连接。

现在,如果您添加一个服务(例如http),它将被添加到该文件中。
(注意:您当然需要添加–permanent选项才能在文件中看到它)。

# firewall-cmd --add-service=http --permanent
success
# cat ./zones/public.xml

  Public
用于公共区域。您不相信网络上的其他计算机不会损坏您的计算机。
只接受选定的传入连接。

删除服务:

# firewall-cmd --remove-service=http --permanent
success
#