1. 概述
在 RHEL7 系统中,firewalld 防火墙取代了传统的 iptables 防火墙。iptables 的防火墙策略是通过内核层面的 netfilter 网络过滤器来处理的,而 firewalld 则是通过内核层面的 nftables 包过滤框架来处理。firewalld 提供了更为丰富的功能和动态更新技术,并引入了区域(zone)的概念,使得防火墙策略的管理更加灵活和高效。
2. 区域(Zone)概念
firewalld 引入了区域的概念,即预先准备了几套防火墙策略集合(策略模板)。用户可以根据生产场景的不同,选择合适的策略集合,从而实现防火墙策略之间的快速切换。
常用的区域名称及策略规则
区域名称 | 默认策略规则 |
---|---|
trusted | 允许所有的数据包进出 |
home | 拒绝进入的流量,除非与出去的流量相关;允许 ssh、mdns、ipp-client、amba-client 与 dhcpv6-client 服务的进入流量 |
Internal | 等同于 home 区域 |
work | 拒绝进入的流量,除非与出去的流量相关;允许 ssh、ipp-client 与 dhcpv6-client 服务的进入流量 |
public | 拒绝进入的流量,除非与出去的流量相关;允许 ssh、dhcpv6-client 服务的进入流量 |
external | 拒绝进入的流量,除非与出去的流量相关;允许 ssh 服务的进入流量 |
dmz | 拒绝进入的流量,除非与出去的流量相关;允许 ssh 服务的进入流量 |
block | 拒绝进入的流量,除非与出去的流量相关 |
drop | 拒绝进入的流量,除非与出去的流量相关 |
注意:firewalld 默认出口是全放开的。
3. 动静态更新技术
iptables 的每一个更改都需要先清除所有旧有的规则,然后重新加载所有的规则(包括新的和修改后的规则)。而 firewalld 的任何规则变更都不需要对整个防火墙规则重新加载,支持动态更新技术,大大提高了管理效率。
4. 配置文件
firewalld 的主配置文件是 firewalld.conf
。防火墙策略的配置文件以 xml 格式为主,存放在以下两个目录里:
/etc/firewalld
:用户配置文件/usr/lib/firewalld
:系统配置文件,包含预定义配置文件
5. 管理方式
firewalld 提供了基于 CLI(命令行界面)和基于 GUI(图形用户界面)两种管理方式:
- CLI 工具:
firewall-cmd
(终端管理工具) - GUI 工具:
firewall-config
(图形管理工具)
firewall-cmd 命令参数
参数 | 作用 |
---|---|
--get-default-zone | 查询默认的区域名称 |
--set-default-zone=<区域名称> | 设置默认的区域,使其永久生效 |
--get-zones | 显示可用的区域 |
--get-services | 显示预定义的服务 |
--get-active-zones | 显示当前正在使用的区域、来源地址和网卡名称 |
--add-source= | 将源自此 IP 或子网的流量导向指定的区域 |
--remove-source= | 不再将源自此 IP 或子网的流量导向这个区域 |
--add-interface=<网卡名称> | 将源自该网卡的所有流量都导向某个指定区域 |
--change-interface=<网卡名称> | 将某个网卡与区域进行关联 |
--list-all | 显示当前区域的网卡配置参数、资源、端口以及服务等信息 |
--list-all-zones | 显示所有区域的网卡配置参数、资源、端口以及服务等信息 |
--add-service=<服务名> | 向指定区域添加服务 |
(注意:--add-service=<服务名>
参数的作用在表格中被截断,应理解为向指定区域添加预定义的服务)
6. 总结
firewalld 防火墙以其丰富的功能、动态更新技术和区域管理概念,在 RHEL7 系统中成为了 iptables 的有力替代者。通过灵活的区域设置和高效的配置管理,firewalld 使得防火墙策略的管理变得更加简单和高效。无论是通过 CLI 还是 GUI 方式,用户都能轻松地进行防火墙策略的配置和管理。