防火墙
文章目录
1. 防火墙介绍
防火墙是一种获取安全的方法,有助于实施一个比较广泛的安全性政策,用以确定系统中允许提供的服务和访问。它的使用在一定的程度上减少了系统被网络攻击成功的概率,加固了系统的安全。同时SELinux端口标签可以用来控制网络服务所使用的网络端口。
1.1 firewalld简介
Linux内核中包含netfilter,它是网络流量操作(如数据包过滤、网络地址转换和端口转换)的框架。Netfilter是红帽企业Linux 8防火墙的主要组件。Linux内核中还包括nftables,这是一个新的过滤器和数据包分类子系统,其增强了netfilter的部分代码,但仍保留了netfilter的架构。
Firewalld是一个动态防火墙管理器,它是nftables框架的前端。firewalld曾使用iptables命令来直接配置netfilter,在nftables推出之前,firewalld作为一种改进iptables服务的替代方案。在RHEL 8中,firewalld仍然是推荐的前端,使用它来管理防火墙规则集。firewalld通过firewalld.service服务来控制。
1.2 firewalld预定义区域
Firewalld上有一些预定义区域,每个区域都有着自己特定的用途,可分别进行自定义。默认情况下,如果传入的流量属于系统启动通信的一部分,则所有区域都允许这些传入流量和所有传出流量。
区域 | 默认配置功能 |
---|---|
block | 拒绝所有传入的流量,但会有返回拒绝提示 |
dmz | 允许预定义服务(如ssh等)流量传入,拒绝其他传入的流量 |
drop | 丢弃所有传入流 |
external | 允许预定义服务(如ssh等)流量传入,拒绝其他传入的流量。通过此区域转发的IPv4传出流量将进行伪装 |
home | 允许预定义服务(如ssh、dhcpv6-client、mdns、samba-client)等流量传入,拒绝其他传入的流量 |
internal | 允许预定义服务(如ssh、dhcpv6-client、mdns、samba-client)等流量传入,拒绝其他传入的流量 |
public | 默认区域,允许预定义服务(如ssh、dhcpv6-client等)流量传入,拒绝其他传入的流量 |
trusted | 允许所有传入流量 |
work | 允许与预定义的服务匹配的流量,拒绝其他传入的流量 |
2. firewalld管理
firewalld支持运行时配置和永久配置这两种配置模式。
- 运行时配置模式下进行的firewalld配置更改,会立即生效,但是当系统重新启动后,所做的更改将失效。
- 永久配置模式下进行的firewalld配置更改,则会永久生效(系统重新启动后生效),但需要运行firewall-cmd --reload命令重载防火墙激活运行时配置模式下的配置。运行时配置的更改,适用于管理员在防火墙上测试新的或不确定的规则,这些规则可能会对主机造成一些危险。
2.1 命令行管理工具firewall-cmd
通过命令行工具firewall-cmd管理firewalld时,若没有提供"–permanent"选项,则所有配置都作用于运行时配置。更改运行时配置时,可以在firewall-cmd命令行的结尾添加"–timeout=“选项,当该运行时配置更改没有合理运行时,该更改会在超时时间超时时被删除。当提供”–permanent"选项时,则所有的配置都作用于永久配置,然后需要"firewall-cmd --reload"命令激活这些更改。
使用firewall-cmd工具设置firewalld时,若未提供"–zone="选项,则该设置作用于默认区域。
2.2 管理firewalld中的域
列出当前所有可用区域
firewall-cmd --get-zones
查看当前默认区域
firewall-cmd --get-default-zone
列出public区域所有的配置
firewall-cmd --list-all --zone=public
将home区域设置为默认区域
firewall-cmd --set-default-zone=home
2.3 管理firewalld中的规则
更改运行时配置:添加服务http,设置超时时间为30s,并查看该设置
firewall-cmd --add-service=http --timeout=30
firewall-cmd --list-all
更改永久配置:在防火墙添加端口3306,协议是tcp,并激活配置
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
更改永久配置:在防火墙上添加一组连续的端口,如500-600,协议是tcp,并激活配置
firewall-cmd --add-port=500-600/tcp --permanent
firewall-cmd --reload
更改永久配置:在防火墙上移除端口3306,协议是tcp,并激活配置
firewall-cmd --remove-port=3306/tcp --permanent
firewall-cmd --reload
2.4 管理富规则
Firewalld富规则为管理员提供了一种丰富的表达性语言,通过这种语言可表达firewalld的基本语法中未涵盖的自定义防火墙规则。富规则可用于表达基本的允许和拒绝的规则,同时也可以用于配置伪装、端口转发及记录和速率限制。
富规则的语法格式如下:
rule
[family]
[source]
[destination]
service | port | protocol | icmp-block | masquerade | forward-port
[log]
[audit]
[accept | reject | drop]
富规则的重要选项主要有4个
选项 | 描述 |
---|---|
–add-rich-rule=‘’ [–zone=] | 向区域中添加富规则,若未提供–zone=选项,则使用默认区域 |
–remove-rich-rule=‘’ [–zone=] | 从区域中删除富规则,若未提供–zone=选项,则使用默认区域 |
–query-rich-rule=‘’ [–zone=] | 从区域中查询富规则是否已经添加到该区域, 如果已经添加则返回yes,否则返回no。 若未提供–zone=选项,则使用默认区域 |
–list-rich-rules [–zone=] | 从区域中查询富规则。 |
富规则使用示例
接受来自10.10.10.0/24网络内主机访问http服务,更改永久配置并激活(动作accept)
firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.10.10.0/24 service name=http accept’ --permanent
firewall-cmd --reload
-cmd --add-rich-rule='rule family=ipv4 source address=10.10.10.0/24 service name=http accept’ --permanent
firewall-cmd --reload