CentOS 7 firewalld
背景介绍
firewalld 是 CentOS 7 的默认防火墙管理工具,它通过充当 Linux 内核的 netfilter 框架的前端来提供防火墙功能,与传统的 iPTABLes 相比,firewalld 提供了更易于使用的界面和更多的功能,例如动态配置、服务管理以及基于区域的规则管理,本文将详细介绍 firewalld 的基本概念和使用方法,帮助用户在 CentOS 7 中高效地管理和配置防火墙。
基本概念
区域(Zones)
区域是 firewalld 的核心概念之一,用于定义网络连接的信任级别,每个区域都有一组预定义的规则,这些规则决定了该区域内允许或拒绝的流量,常见的区域包括:
public: 用于不受信任的公共区域。
external: 用于在系统充当网关或路由器时启用 NAT 伪装的外部网络。
internal: 当系统充当网关或路由器时,可在内部网络上使用。
work: 用于工作机。
home: 用于家庭计算机。
trusted: 接受所有网络连接。
dmz: 用于位于非军事区的计算机,这些计算机对网络其余部分的访问将受到限制。
block: 拒绝所有传入连接,但允许传出连接。
drop: 删除所有传入连接,而无任何通知,仅允许传出连接。
服务(Services)
服务是预定义的规则集,代表一组端口和协议,便于管理,HTTP 服务对应于 80 端口的 TCP 流量。
规则(Rules)
规则决定哪些流量被允许或拒绝,规则可以应用于特定的区域、服务或端口。
安装和启动 firewalld
在 CentOS 7 中,firewalld 默认已经安装,你可以通过以下命令检查其状态:
sudo systemctl status firewalld
如果未安装,可以使用以下命令进行安装:
sudo yum install firewalld
启动并设置为开机自启动:
sudo systemctl start firewalld sudo systemctl enable firewalld
基本配置
查看当前区域和规则
你可以使用以下命令查看当前配置的区域和规则:
sudo firewallcmd getactivezones sudo firewallcmd listall
添加和删除服务
firewalld 允许通过服务名称添加规则,要允许 HTTP 服务:
sudo firewallcmd zone=public addservice=http permanent
要删除服务,可以使用:
sudo firewallcmd zone=public removeservice=http permanent
添加和删除端口
如果你需要直接管理端口,可以使用以下命令:
添加端口(8080):
sudo firewallcmd zone=public addport=8080/tcp permanent
删除端口:
sudo firewallcmd zone=public removeport=8080/tcp permanent
重新加载防火墙
在进行任何更改后,需重新加载防火墙以使其生效:
sudo firewallcmd reload
查看和监控日志
防火墙的日志可以帮助你监控流量和潜在的安全问题,可以通过 journalctl 查看相关日志:
sudo journalctl u firewalld
常见问题解答(FAQs)
Q1: 如何更改默认区域?
A1: 要更改默认区域,可以使用以下命令:
sudo firewallcmd setdefaultzone=home
然后重新加载防火墙:
sudo firewallcmd reload
Q2: 如何允许特定 IP 访问某个端口?
A2: 你可以使用 rich rule 来允许特定 IP 访问某个端口,允许 IP 地址192.168.1.100
访问 HTTP 服务的 80 端口:
sudo firewallcmd permanent addrichrule="rule family=ipv4 source address=192.168.1.100/32 port port=80 protocol=tcp accept" sudo firewallcmd reload