firewalld介绍
(1).什么是firewalld?
firewalld是提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。
(2).firewalld与iptables之间的关系
firewalld 提供了一个daemon 和service,还有命令行和图形界面配置工具,它仅仅是替代了 iptables service 部分,其底层还是使用 iptables作为防火墙规则管理入口。firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。
(3).什么是区域(zone)?
在firewalld中将过滤规则集合称之为zone。一个zone就是一套过滤规则,数据包必须要经过某个zone才能入站或出站。firewalld将网卡对应到不同的区域(zone),zone 默认共有9个,分别为block、dmz、drop external、home、internal、public、trusted、work。不同的区域之间的差异是其对待数据包的默认行为不同,根据区域名字我们可以很直观的知道该区域的特征,在CentOS7系统中,默认区域被设置为public。
(4).区域(zone)说明
drop(丢弃):任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。
block(限制):任何接收的网络连接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝。
public(公共):在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接。
external(外部):特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算机,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。
dmz(非军事区):用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。
work(工作):用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅接收经过选择的连接。
home(家庭):用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅接收经过选择的连接。
internal(内部):用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅接受经过选择的连接。
trusted(信任):可接受所有的网络连接。
指定以上9个区域中的一个区域为默认区域。当接口连接加入了 NetworkManager,它们就被分配为默认区域。安装时,firewalld 里的默认区域为public。
(5).预设服务配置文件
在/usr/lib/firewalld/services/目录下存放了许多.xml结尾的配置文件,每个文件对应一个服务,例如ssh.xml。这些配置文件中存放了服务的短描述、长描述、端口号及端口协议。
[root@youxi1 ~]# cat /usr/lib/firewalld/services/ssh.xml <?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description> <port protocol="tcp" port="22"/> </service>
当默认提供的服务不够用或者需要自定义某项服务的端口时,我们需要将 service 配置文件放置在 /etc/firewalld/services/ 目录中。
/etc/firewalld/ 存放修改过的配置(优先查找,找不到再找默认的配置)
/usr/lib/firewalld/ 默认的配置
例如:将ssh服务的端口改为23591,就需要将/usr/libfirewalld/ssh.xml文件拷贝到/etc/firewalld/services/目录下,再就该文件内的端口号。
service配置文件可以更加高效的管理端口,每一个service配置文件都对应了一个网络应用(可内网可外网)。
(6).firewalld的两种重启
firewall-cmd --reload 无需断开连接
firewall-cmd --complete-reload 需要断开连接,类似重启服务