百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

Firewalld 防火墙示例 firewall防火墙规则

sinye56 2024-12-17 16:09 19 浏览 0 评论

本指南将教您开始使用 firewalld 以添加、更改和删除防火墙区域中的规则所需的所有知识。

如今,必须为服务器和网络配置和实现可靠的防火墙。没有它,问题不再是恶意攻击是否会伤害你,而是何时会伤害你。不幸的是,这些在互联网上很常见。

这就是 Firewalld 发挥作用的地方。Firewalld 是 Red Hat Enterprise Linux、Fedora、Oracle Linux、openSUSE、AlmaLinux、Rocky Linux 等 Linux 发行版中的默认防火墙,可提供保护服务器和网络所需的所有保护。但在我们进入如何使用它之前,让我们先解释一下它是什么。

什么是 Firewalld?

Firewalld 是一个基于区域的防火墙管理工具,它提供动态管理的防火墙,支持定义网络连接或接口的信任级别的网络区域。

此外,它还充当 Linux 内核的 Netfilter 框架的前端,提供防火墙功能。

与 iptables 链不同,它使用区域和服务管理防火墙规则。这些规则用于对传入流量进行排序并确定是否应该阻止或允许它。

如何使用 Firewalld 管理防火墙规则

管理 Firewalld 规则的主要工具是firewall-cmd. 它是一个命令行工具,为管理 Firewalld 的运行时和永久配置提供了一个界面。使用时,更改立即生效,无需重启服务。

检查 Firewalld 状态

运行以下命令以查看您的 Firewalld 是否处于活动状态:

[linuxmi@fedora www.linuxmi.com]$ sudo firewall-cmd --state

此外,要查看 Firewalld 服务的状态,请运行以下命令:



[linuxmi@fedora www.linuxmi.com]$ sudo systemctl status firewalld

如果服务由于某种原因没有启动,您可以启动它并将其设置为在系统启动时自动启动运行:

[linuxmi@fedora www.linuxmi.com]$ sudo systemctl start firewalld 
[linuxmi@fedora www.linuxmi.com]$ sudo systemctl enable firewalld
同样,您可以通过执行以下操作来停止和禁用 Firewalld 服务的自动启动:


[linuxmi@fedora www.linuxmi.com]$ sudo systemctl stop firewalld 

[linuxmi@fedora www.linuxmi.com]$ sudo systemctl disable firewalld

区域和接口

如前所述,Firewalld 是基于区域 zone 的防火墙。但这究竟是什么意思,什么是区域?

简而言之,它们是 Firewalld 组织的顶级组件。因此,区域可以为不同的连接区域提供不同级别的安全性。这个想法是为不同的网络区域制定单独的安全措施。

每个区域至少连接到一个网络接口——硬件或虚拟网络适配器。获取预配置 Firewalld 区域的列表很简单。键入命令:



[linuxmi@fedora www.linuxmi.com]$ sudo firewall-cmd --get-zones

如您所见,默认列出的区域是:

  • block:传入的网络连接被拒绝,并带有 icmp-host-prohibited 消息。仅允许由该系统发起的网络连接。
  • dmz:适用于非军事区内可公开访问的计算机,但对内部网络的访问受限。仅接受某些入站连接。
  • drop:任何传入的网络连接都被丢弃,并且不发送任何响应。只允许传出网络连接。
  • external:用于启用伪装的外部网络,主要是路由器。您不相信网络上的其他计算机不会伤害您的计算机。仅接受某些类型的入站连接。
  • home:用于在家中使用。您通常相信网络上的其他计算机不会损害您的计算机。仅接受某些类型的传入连接。
  • internal:用于内部网络。您通常相信网络上的其他计算机不会损害您的计算机。仅接受某些入站连接。
  • public:用于外部网络。您不相信网络上的其他计算机不会伤害您的计算机。仅接受某些类型的入站连接。
  • trusted:允许任何网络连接。
  • work:用于工作场所。您通常相信网络上的其他计算机不会损害您的计算机。仅接受某些入站连接。

如果您没有进行任何其他更改,Firewalld 的默认区域设置为“public”。检查默认区域:

sudo firewall-cmd --get-default-zone

要更改默认区域,例如“home”,请键入:

sudo firewall-cmd --set-default-zone=home

要列出活动区域和分配给它们的网络接口,请运行以下命令:

sudo firewall-cmd --get-active-zones

要将网络接口(在我们的示例中为 enp1s0)分配给另一个区域,例如“home”,请键入:

sudo firewall-cmd --zone=home --change-interface=enp1s0

请记住,如果您的系统上只有一个网络接口并将其分配给另一个区域,则默认情况下该区域将变为活动状态。

要获取特定区域的所有配置,例如“public”,请运行:

sudo firewall-cmd --zone=public --list-all

同样,要一次获取所有区域的配置:

sudo firewall-cmd --list-all-zones

按服务名称允许和拒绝

Firewalld 可以根据预定义的规则允许特定网络服务的流量。最简单的方法是将您需要允许的服务添加到您正在使用的区域。

当然,您首先应该知道服务的名称。但是很难记住所有服务的名称,即使它们符合预期。因此,使用以下命令,我们可以查看所有可用预定义的名称。

sudo firewall-cmd --get-services

您可以在services 目录中的相关.xml文件中找到有关这些服务的更多详细信息。/usr/lib/firewalld/例如 MySQL 服务定义如下:

cat /usr/lib/firewalld/services/mysql.xml

假设我们要启用 MySQL 服务。为此,我们--add-service=在firewalld-cmd命令后添加服务名称,并使用--zone=选项指定分配服务的区域。

sudo firewall-cmd --zone=public --add-service=mysql

现在让我们重新检查“public”区域的详细信息。

sudo firewall-cmd --zone=public --list-all

OK。我们添加了一个防火墙规则,允许传入连接到 MySQL 服务器。然而,这个规则是暂时的。这意味着该规则在系统重新启动期间将无法生存。

为了确保规则的持久性,我们必须--permanent在命令中添加选项。这样,即使在重新启动后,Firewalld 也会自动加载它。

sudo firewall-cmd --zone=public --add-service=mysql --permanent

我们必须注意一个重要细节:添加不带--permanent选项的规则使其立即可用并生效。但是,--permanent在系统重新启动之前,使用将不起作用。

因此,为了使我们的新永久规则立即生效,我们需要重新加载 Firewalld,执行:

sudo firewall-cmd --reload

这样,我们在保留状态信息的同时重新加载防火墙规则。换句话说,当前的永久配置将成为新的运行时配置。

现在让我们看看如何从防火墙中删除规则。该过程几乎与添加相同,但这次--remove-service使用了该选项。

例如,要删除 MySQL 服务,我们必须发出以下命令:

sudo firewall-cmd --zone=public --remove-service=mysql

同样,要永久删除访问权限,我们需要添加--permanent选项,然后重新加载规则以使更改立即生效。

sudo firewall-cmd --zone=public --remove-service=mysql --permanent

sudo firewall-cmd --reload

按端口号允许和拒绝

但是,有时我们必须通过指定端口号来允许访问。例如,假设您有一个服务在非标准 TCP 端口 10069 上进行侦听。因此,我们需要的不是按名称预定义服务。

幸运的是,Firewalld 提供了一种允许通过端口和协议进行访问的方法,该方法与服务名称完全相同。例如,要允许流量到 TCP 上的端口 10069,请运行:

sudo firewall-cmd --zone=public --add-port=10069/tcp

我们检查允许的端口,执行:

sudo firewall-cmd --zone=public --list-ports

当然,我们也可以通过熟悉的方式对整个区域的大图进行概览:

sudo firewall-cmd --zone=public --list-all

与使用服务名称时相同的持久性规则在这里适用。因此,为了确保我们的防火墙规则在重新启动之间仍然存在,我们需要执行以下操作:

sudo firewall-cmd --zone=public --add-port=10069/tcp --permanent

sudo firewall-cmd --reload

此外,如果您要启用的端口使用 UDP 协议而不是 TCP,则必须在该行tcp替换为。udpfirewall-cmd

从规则列表中删除端口的方法是相同的,唯一的区别是替换为--add-port=选项--remove-port=。

sudo firewall-cmd --zone=public --remove-port=10069/tcp --permanent

sudo firewall-cmd --reload

防火墙丰富的规则

熟悉 iptables 的人会轻松使用 firewalld 丰富的规则。顾名思义,它们使您能够构建具有多个标准的复杂规则,而这些标准是使用名称或基于端口的规则无法实现的。

换句话说,防火墙丰富的规则通过更自定义的粒度选项提供了更高级别的控制。此外,他们还可以配置日志记录、伪装、端口转发和速率限制。

它们的使用可以有无数种变化,所以如果你想了解更多关于它们的信息,你应该查阅官方文档。在这里,我们将提供一些简化的示例,让您了解如何使用 Firewalld 丰富的规则。

例如,假设我们要允许访问 MySQL 服务器,正如我们所知,该服务器从 IP 地址 192.168.1.69 侦听端口 3306。规则如下所示:

sudo firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.1.69" port port=3306 protocol=tcp accept'
与基于名称和端口的规则一样,Firewalld 的丰富规则不是持久的,除非--permanent指定了标志。

删除此规则的命令与上述命令相同,只是该--add-rich-rule选项应替换为--remove-rich-rule.

sudo firewall-cmd --zone=public --remove-rich-rule 'rule family="ipv4" source address="192.168.1.69" port port="3306" protocol="tcp" accept'
如果我们想要做相反的事情并阻止从 IP 地址 192.168.1.69 访问 MySQL 服务器,我们的规则是:
sudo firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.1.69" port port="3306" protocol="tcp" reject'
作为最后一个示例,我们希望将所有入站流量从端口 80 重定向到主机 192.168.1.200 上的端口 8080,我们已经安装了Tomcat 服务器。为了实现这一点,我们的 Firewalld 丰富规则应该是:
sudo firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 forward-port port=80 protocol=tcp to-port=8080 to-addr=192.168.1.200'
您可以通过运行以下命令来查看丰富的规则:
sudo firewall-cmd --zone=public --list-rich-rules


结论

我们的指南到此结束。我希望你觉得它有帮助。您现在应该很好地了解 Firewalld 是什么以及如何使用它来保护您的计算机和网络。了解它将使您能够使用该工具的灵活性和功能。

相关推荐

一个不错的软件版本命名规范!

之前写了一篇如何自动生成版本号的文章,《让你的C程序,自动打印版本信息》初衷是让自己的程序在运行时自动打印与版本相关的信息,避免测试时因为版本信息不确定导致的一些功能对应不上去的问题,当时留了一个坑,...

国产操作系统迎来发展风口 公务领域更能培育起Linux生态

谷歌和微软在俄罗斯市场的一番套路猛如虎,就让我们深刻地意识到了,只有自己的东西才能靠得住。也由此,国内操作系统发展迎来了发展风口。我就看到有朋友就秀出了他们单位采购的纯国产的主机,一款华为的主机,纯国...

5个大有“前途”的Linux桌面发行版本

ZD至顶网CIO与应用频道08月27日专栏:Linux无处不在。你的服务器里,你的电话、汽车、手表、烤面包机、冰箱……和台式机里都有Linux的身影。虽然在桌面上见到Linux的用户比在自动调温...

Linux 常用应用软件大全

编译自:https://www.fossmint.com/most-used-linux-applications/作者:MartinsD.Okoi译者:HankChow对于许多应用程序...

Linux 4.1 系列的最大版本 4.1.18 LTS发布,带来大量修改

(LCTT译注:这是一则过期的消息,但是为了披露更新内容,还是发布出来给大家参考)著名的内核维护者GregKroah-Hartman貌似正在度假中,因为SashaLevin2016年2月16日的...

Linux发行版需要杀软吗?卡巴斯基推出免费KVRT病毒扫描清理工具

IT之家6月4日消息,你认为使用Linux发行版,需要杀毒软件吗?或许很多用户认为Linux发行版偏小众,因此受到黑客攻击的风险也相对较小,不过卡巴斯基并不这么认为,近期推出了适用于...

适合开发人员的 5款 Linux 发行版

什么是Linux?Linux是基于Unix的操作系统。由LinusTorvalds开发于1991年首次发布其内核。因为Linux是开源软件,其发行版由不同组织发布,因此不同的发行版具有不同的风格...

VMware Workstation 17.0 Pro 发布:新增 TPM 2.0 完美兼容Win11

IT之家11月18日消息,VMwareWorkstation17.0Pro现已发布,它带来了许多新特性,例如微软Windows11硬性要求:虚拟可信平台模块(TPM)2.0。...

你是否需要一个容器专用的Linux发行版本?

单单使用容器是不够的,提供商们认为你需要一个容器专用的Linux发行版本。我们可以让容器在不同的操作系统上运行,不同的操作系统都有自己的虚拟化服务,如:SolarisZones、BSDJails、...

Tizen 3.0版本发布 采用Linux 4.1内核

2015-09-2111:31:39作者:马荣【中关村在线软件资讯】9月21日消息:尽管三星靠着Android系统设备在移动市场赚钱,但是仍然没有忘记自家的Tizen开发。现在Tizen3.0版...

欧拉操作系统演进:应用累计超130万套 支持鲲鹏、英特尔、飞腾等芯片

21世纪经济报道记者倪雨晴深圳报道4月15日,在欧拉开发者大会(openEulerDeveloperDay2022)的主论坛上,欧拉首个数字基础设施全场景长周期版openEuler22.03...

Papyros:以Material Design为灵感的Linux发行版本

项目团队并不希望只是采用传统的桌面主题,而是致敬谷歌Android系统的MaterialDesign设计语言想要打造出某些不同以往足够吸引用户的Linux发行版本,自然该版本还在不断的更新和改进中,...

比特网早报:全国空间计量技术委员会成立,银河麒麟操作系统上架微信Linux4.0.0版本

2024年11月6日消息,昨夜今晨,科技圈都发生了哪些大事?行业大咖抛出了哪些新的观点?比特网为您带来值得关注的科技资讯:全国空间计量技术委员会在北京成立近日,经市场监管总局批准,全国空间计量技术委员...

2024年最稳定的5个Linux发行版,赶紧收藏!

Linux是最流行的免费开源平台之一。Linux已被广泛使用,因为它安全、可扩展和灵活。Linux发行版收集开源代码,对其进行编译,并将其组合成一个可以轻松启动和安装的操作系统。它们还提供不同的...

彰显Linux生态繁华,Ubuntu、Fedora等四发行版同时发布新版本

上周对于开源社区来说是忙碌的一周。EndeavourOS和TrueNASScale于周二(4月16日)发布,Fedora于周三(4月17日)发布,Ubuntu于周四(4月18日)发布。四个新版本中都...

取消回复欢迎 发表评论: