网站搜索

如何使用 FirewallD 限制网络访问


作为 Linux 用户,您可以选择使用 CentOS/RHEL 8 和大多数 RHEL 自带的 Firewalld 防火墙来允许或限制对某些服务或 IP 地址的网络访问基于发行版,例如 Fedora

firewalld 防火墙使用firewall-cmd 命令行实用程序来配置防火墙规则。

在执行任何配置之前,我们首先使用 systemctl 实用程序启用 firewalld 服务,如下所示:

sudo systemctl enable firewalld

启用后,您现在可以通过执行以下命令来启动 firewalld 服务:

sudo systemctl start firewalld

您可以通过运行以下命令来验证 firewalld 的状态:

sudo systemctl status firewalld

下面的输出确认 firewalld 服务已启动并正在运行。

使用 Firewalld 配置规则

现在我们已经运行了firewalld,我们可以直接进行一些配置。 Firewalld 允许您添加和阻止端口、黑名单以及白名单 IP、地址以提供对服务器的访问。完成配置后,请始终确保重新加载防火墙以使新规则生效。

添加 TCP/UDP 端口

要添加端口,例如 HTTPS 的端口 443,请使用以下语法。请注意,您必须在端口号后指定端口是 TCP 还是 UDP 端口:

sudo firewall-cmd --add-port=22/tcp --permanent

同样,要添加 UDP 端口,请指定 UDP 选项,如下所示:

sudo firewall-cmd --add-port=53/udp --permanent

--permanent 标志确保规则即使在重新启动后也仍然存在。

阻止 TCP/UDP 端口

要阻止 TCP 端口(例如端口 22),请运行以下命令。

sudo firewall-cmd --remove-port=22/tcp --permanent

同样,阻止 UDP 端口将遵循相同的语法:

sudo firewall-cmd --remove-port=53/udp --permanent

允许服务

网络服务在/etc/services文件中定义。要允许诸如 https 之类的服务,请执行以下命令:

sudo firewall-cmd --add-service=https

阻止服务

要阻止服务,例如 FTP,请执行:

sudo firewall-cmd --remove-service=https

将 IP 地址列入白名单

要允许单个 IP 地址穿过防火墙,请执行以下命令:

sudo firewall-cmd --permanent --add-source=192.168.2.50

您还可以使用 CIDR(无类域间路由)表示法允许一系列 IP 或整个子网。例如,要允许 255.255.255.0 子网中的整个子网,请执行。

sudo firewall-cmd --permanent --add-source=192.168.2.0/24

删除白名单IP地址

如果您希望删除防火墙上列入白名单的 IP,请使用 --remove-source 标志,如下所示:

sudo firewall-cmd --permanent --remove-source=192.168.2.50

对于整个子网,运行:

sudo firewall-cmd --permanent --remove-source=192.168.2.50/24

阻止 IP 地址

到目前为止,我们已经了解了如何添加和删除端口和服务,以及如何将其列入白名单和删除白名单 IP。要阻止 IP 地址,可以使用“丰富规则”来实现此目的。

例如,要阻止 IP 192.168.2.50,请运行以下命令:

sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.2.50' reject"

要阻止整个子网,请运行:

sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.2.0/24' reject"

保存防火墙规则

如果您对防火墙规则进行了任何更改,则需要运行以下命令才能立即应用更改:

sudo firewall-cmd --reload

查看防火墙规则

要查看防火墙中的所有规则,请执行以下命令:

sudo firewall-cmd --list-all

关于如何在 CentOS/RHEL 8 上使用 FirewallD 允许或限制网络访问的指南到此结束。我们希望本指南对您有所帮助。