尽管工作在Linux核的网络过滤器代码上,总体上和旧有的配置防火墙的方法是不兼容的。Red Hat Enterprise Linux 7 和其他的新版本则需要依靠新的配置方法。
本文的所有命令都基于RHEL 7.
防火墙工作网络
首先,检查防火墙是否在运行。使用列表1中的systemctl status firewalld命令。
列表1.下面的序列表明防火墙是活动状态且在运行中。这些斜线是有帮助的,当你试图将表1全面显示出来,使用-1命令。
[rootrhelserver ~]# systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
Active: active (running) since Thu 2014-05-22 07:48:08 EDT; 14min ago
Main PID: 867 (firewalld)
CGroup: /system.slice/firewalld.service
└─867 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
May 22 07:48:08 rhelserver.example. systemd[1]: Started firewalld - dynami…
防火墙中的一切都与一个或者多个区域相关联。
配置之后,RHEL 7服务器正常会在公共区域,但是你也许会想将它放置在另一个网络配置防火墙访问。这时使用firewall-cmd --get-default-zone命令,该命令显示你的服务器在哪一个网络。如果你想查看配置特定网络的详细信息,你可以使用列表2中的firewall-cmd --zone=zonename --list-all命令。
列表2.
rootrhelserver ~]# firewall-cmd --get-default-zone
public
[rootrhelserver ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
[rootrhelserver ~]# firewall-cmd --zone=public --list-all
public (default, active)
interfaces: ens33
sources:
services: dhcpv6-client sander ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
改变当前区域并不难:使用firewall-cmd --set-default-zone=home命令,该命令可用于从公共网络到家庭网络制定一个默认网络。
服务和其他构件
在区域中有一些基本的构件块,其中服务是最重要的。防火墙使用管理员创建在/usr/lib/firewalld/services(系统默认服务) 和/etc/firewalld/services文件下的XML文件,配置的自身服务集。XML文件时通过列表3中的例子创建的。
列表3.
[rootrhelserver services]# cat ftp.xml
vsftpd package installed for this option to be useful.
每一个服务定义都需要一个简短的名字、描述和端口网络用于指定需要使用的协议、端口和模块名。
列表4.以下是创建防火墙服务的例子
[rootrhelserver services]# cat sander.xml