如何在 CentOS 上使用 FirewallD 设置防火墙。





5.00/5 (3投票s)
关于如何在 CentOS 上设置 firewalld 的教程。
引言
在服务器上设置防火墙是抵御网络攻击的最佳防御手段之一。它通过阻止对服务器的不必要访问来提供网络安全。它根据用户定义的规则集过滤进出站网络流量。
防火墙为服务器提供了重要的安全层。与其他措施结合使用,可以防止攻击者以恶意方式访问您的服务器。总的来说,防火墙的目的是减少或消除不必要网络通信的发生,同时允许所有合法通信自由流动。它主要通过允许在不中断当前连接的情况下进行配置更改来改进安全规则管理。
在本教程中,我们将向您展示如何在 CentOS 上设置 firewalld(防火墙守护进程)。虽然还有许多其他与防火墙相关的软件包,但我们将使用 firewalld,这是一个适用于许多 Linux 发行版的防火墙管理解决方案。它允许您配置可维护的规则和规则集,并考虑您的网络环境。
教程
步骤 1 – 安装 firewalld
firewalld 在某些 Linux 发行版中默认安装。但是,如果您的服务器上未安装 firewalld,您可能需要自己安装。
您可以使用以下命令检查服务器上 firewalld 的状态
systemctl status firewalld
如果您的服务器上未安装,您可以使用此命令安装该软件包
yum install firewalld
步骤 2 – 启用并重启 firewalld
安装 firewalld 后,启用该服务并重启您的服务器。
sudo systemctl enable firewalld
sudo reboot
服务器重启后,防火墙应该会被启动,您的网络接口应该会被放入您配置的区域,或者回退到配置的默认区域,并且与区域/区域相关的任何规则都将应用于相关接口。
步骤 3 – 验证 firewalld 是否正在运行
我们可以通过输入以下命令来验证服务是否正在运行且可达
sudo firewall-cmd --state
命令的输出应该是“running”。这表明我们的防火墙已按默认配置启动并运行。
步骤 4 – 配置区域
防火墙区域定义了用于连接的接口的可信度级别。它们是由 firewalld 守护进程使用实体管理的规则集合。
以下是 FirewallD 提供的预定义区域,按照区域的可信度级别(从最不可信到最可信)排序
- drop:最低可信度级别。所有传入连接都被丢弃,不带任何通知,并且只允许传出连接。
- block:与 drop 几乎相同,只允许传出连接,但在 block 中,所有传入连接都会被拒绝,IPv4 会收到 icmp-host-prohibited 消息,IPv6 会收到 icmp6-adm-prohibited 消息。
- public:代表不受信任的公共区域。您不信任网络上的其他计算机,但您可以根据情况允许选定的传入连接。
- external:用于外部网络,当您的系统充当网关或路由器时,会启用 NAT 伪装。只允许选定的传入连接。
- internal:当您的系统充当网关或路由器时,用于内部网络。网络上的其他系统通常是受信任的。只允许选定的传入连接。
- dmz:用于位于您的隔离区(demilitarized zone)的计算机,这些计算机对网络其余部分的访问将受到限制。只允许某些传入连接。
- work:用于工作机器,通常意味着网络中的大多数计算机都是受信任的。只允许选定的传入连接。
- home:用于家庭,通常意味着网络中的其他计算机通常是受信任的。只允许选定的传入连接。
- trusted:这是可用选项中最开放的,因为所有网络连接都会被接受。网络中的所有计算机都被信任。
要获取可用区域类型的列表
sudo firewall-cmd --get-zones
要查看当前选择的默认区域
sudo firewall-cmd --get-default-zone
要查看活动区域(控制我们接口流量的区域)
sudo firewall-cmd --get-active-zones
要查看默认区域的配置,请输入以下命令
sudo firewall-cmd --list-all
创建您自己的区域
Firewalld 还允许您定义更具描述性的自定义区域。
同样重要的是将新区域添加到永久防火墙配置中,这允许您在重新加载后将配置带入当前运行的会话。输入以下命令
sudo firewall-cmd --permanent --new-zone=office
通过输入以下命令进行验证
sudo firewall-cmd --permanent --get-zones
重新加载防火墙以将这些新区域引入当前运行实例
sudo firewall-cmd --reload
步骤 5 – 将服务分配给区域
成功创建区域后,我们就可以开始将适当的服务和端口分配给我们的区域了。
您可以使用 --get-services
选项通过输入以下命令获取可用服务的列表
sudo firewall-cmd --get-services
向区域添加新服务
您可以使用 --new-service
选项结合 --permanent
选项来创建一个新的空服务
sudo firewall-cmd --permanent --new-service=<service that you want to add>
向区域添加服务
例如,如果您正在运行一个提供 HTTPS 流量的 Web 服务器,我们可以允许“public
”区域中的接口的此流量,并使其“permanent
”,方法是输入
firewall-cmd --zone=public --permanent --add-service=https
您可以添加到防火墙的其他示例服务
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=mysql
要验证操作是否成功,请输入以下命令
sudo firewall-cmd --zone=public --list-services
步骤 6 – 配置适当的端口
列出防火墙中允许的所有端口
sudo firewall-cmd --zone=public --list-ports
打开防火墙端口
要打开端口,请在区域中指定您需要打开的端口或端口范围以及相关的协议。请参阅以下命令
sudo firewall-cmd --zone=public --add-port=14000/udp
sudo firewall-cmd --zone=public --add-port=6001/tcp
我们可以使用 --list-ports
操作通过输入以下命令来验证此操作是否成功
sudo firewall-cmd --zone=work --list-ports
要使此端口添加永久有效,即使在重新加载后也存在,请输入以下命令
sudo firewall-cmd --zone=public --permanent --add-port=14000/udp
sudo firewall-cmd --zone=public --permanent --add-port=6001/tcp
要验证已添加的端口,请运行以下命令
sudo firewall-cmd --zone=work --permanent --list-ports
历史
- 2019 年 5 月 14 日:初始版本