您的位置: 新闻资讯 > 行业动态 > 正文

Firewalld:精准控制并发速度的强大防火墙(图文)


来源:mozhe 2024-10-15

Firewalld 是一款强大的动态防火墙管理工具,具有诸多显著特点。它支持网络区域定义,将网络流量划分为多个区域,每个区域都有不同限制程度的规则。例如,有信任(trusted)区域,该区域放行一切流量,等同于关闭防火墙功能;还有公共(public)区域,是防火墙配置的默认区域,认为该区域主机不可信,仅接收经过选择的连接,如默认放行 ssh 与 dhcpv6-client 服务产生的连接。
Firewalld 还支持接口安全等级的定义。它通过为不同的接口绑定特定的区域,实现对网络连接的精细管理。例如,可以将家庭网络中的接口绑定到家庭(home)区域,该区域默认其他同区域内主机可信,仅接收经过选择的连接,如 ssh、mdns、ipp-client、samba-client 或 dhcpv6-client 服务连接。
此外,Firewalld 支持 IPv4、IPv6 防火墙设置以及以太网桥接,为不同网络环境提供了全面的安全保障。它拥有运行时配置和永久配置选项,运行时配置实时生效,但在系统或 firewalld 重新启动时配置将失效;永久配置则存储在配置文件中,在防火墙重新启动或重新加载时生效。
总的来说,Firewalld 以其灵活的网络区域定义、接口安全等级管理以及多样化的配置选项,成为了 Linux 系统中一款重要的防火墙管理工具。

二、Firewalld 原理架构

(一)区域管理


Firewalld 通过将网络划分为不同的区域,制定出不同区域之间的访问控制策略,从而有效地控制不同程序区域间传送的数据流。这种区域管理的方式,使得网络安全管理更加精细化和灵活化。例如,在互联网这样不可信任的区域,Firewalld 可以设置严格的访问控制规则,阻止大部分未经授权的连接请求;而在内部网络这样高度信任的区域,可以放宽访问控制规则,允许更多的连接请求。这样,根据不同的网络环境和安全需求,将网络流量分配到不同的区域,实现了对网络安全的有效管理。

(二)Firewalld 域


Firewalld 的默认区域是 public。在这个区域中,防火墙认为该区域主机不可信,仅接收经过选择的连接。例如,默认放行 ssh 和 dhcpv6-client 服务产生的连接。除了 public 区域,Firewalld 还提供了其他多个区域,如 trusted(信任)区域可接受所有的网络连接;home(家庭)区域用于家庭网络,仅接受 ssh、mdns、ipp-client、samba-client 和 dhcpv6-client 连接;internal(内部)区域用于内部网络,连接情况与 home 区域类似;work(工作)区域用于工作区,仅接受 ssh、ipp-client 和 dhcpv6-client 服务连接;external(外部)区域用于在启用伪装的外部网络上使用,仅接受 ssh 服务的连接;dmz(非军事区)区域仅接受 ssh 服务的连接;block(限制)区域拒绝所有网络的连接;drop(丢弃)区域任何接收的网络数据包都被丢弃,没有任何回复。

(三)配置文件


Firewalld 默认提供了九个 zone 配置文件,分别是 block.xml、dmz.xml、drop.xml、external.xml、home.xml、internal.xml、public.xml、trusted.xml 和 work.xml。这些配置文件都保存在 /usr/lib/firewalld/zones/ 目录下。此外,在 /etc/firewalld/ 目录下也可以存放用户自定义的配置文件。这些配置文件定义了各个区域的具体规则和设置,包括允许的服务、端口、协议等。通过修改这些配置文件,可以实现对 Firewalld 的个性化配置,满足不同的网络安全需求。

三、与 Iptables 的异同

(一)相同点


Firewalld 与 iptables 都是 Linux 中防火墙的管理程序,虽然它们在具体的实现方式上有所不同,但其实它们的角色主要为对于防火墙策略的管理。真正的防火墙执行者是位于内核中的 netfilter。无论是 Firewalld 还是 iptables,都是通过与内核的 netfilter 交互,来实现对网络数据包的过滤和控制。

(二)不同点

  1. 配置方式:iptables 仅能通过命令行进行配置,对于不熟悉命令行操作的用户来说,配置起来可能较为复杂。而 firewalld 提供了图形接口,类似 Windows 防火墙的操作方式,更加直观和易于操作。
  1. 规则变动处理:iptables 每一个单独更改意味着清除所有旧的规则,并从 /etc/sysconfig/iptables 中读取所有新的规则。这可能会导致在规则更改过程中,网络连接中断。而 firewalld 在有规则变动后,可以仅仅运行规则中的不同之处,即在 firewalld 运行时间内,改变设置时可以不丢失现行链接,保证了网络连接的稳定性。
  1. 配置文件位置:iptables 的配置文件在 /etc/sysconfig/iptables 中。而 firewalld 的配置文件在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件中。
  1. 是否有守护进程:iptables 没有守护进程,并不能算是真正意义上的服务。而 firewalld 有守护进程,能够实时监控网络连接,及时响应安全事件。
  1. 控制方式:iptables 通过控制端口来控制服务,而 firewalld 则是通过控制协议来控制端口。这种控制方式的差异,使得 firewalld 在管理网络服务时更加灵活和精细。

四、实战操作

(一)规则状态


Firewalld 有两种规则状态,分别是运行时(runtime)和持久配置(permanent)。运行时状态下,修改规则马上生效,但这种生效是临时的,一旦系统或 firewalld 重新启动,这些规则将会失效。例如,在运行时添加一个新的服务到某个区域,这个服务的访问规则会立即生效,但在系统重启后,这个规则就会消失。持久配置状态下,修改规则后需要重载才会生效。在持久配置状态下添加新的防火墙规则,这些规则不会马上生效,需要使用firewall-cmd --reload命令重新加载防火墙配置或者重启系统后才会生效。例如,添加一个新的端口到某个区域,并设置为持久配置,在执行firewall-cmd --reload命令后,这个端口的访问规则才会生效,并且在系统重启后仍然有效。

(二)配置文件


Firewalld 的配置文件分为不同优先级。/etc/firewalld/{services,zones}/.xml 文件优先级最高,在持久配置模式生效的策略会放到这里。/lib/firewalld/{services,zones}/.xml 文件优先级要低些,是一些默认配置,可以当做模板使用。以下 options 可以组合使用,比如--permanent表示配置写入到配置文件,永久生效;--reload表示重载配置文件,永久生效;--zone=指定区域,默认是 public 等。具体的 options 可以通过man firewall-cmd或者firewall-cmd --help查看帮助,这里只列出一些常用的 option。

(三)增删改查操作

  1. 查看规则:可以使用firewall-cmd --list-all --zone=<区域名>查看指定区域的配置信息。例如,firewall-cmd --list-all --zone=public可以查看 public 区域的配置信息,包括活动的区域名称、默认启动的区域目标、ICMP 协议类型黑白名单开关、关联的网卡接口、来源地址、允许通过的服务、端口、协议、是否允许 IP 伪装等信息。
  1. 增加规则:可以使用firewall-cmd --add-<规则类型>=<具体内容> --zone=<区域名>来增加规则。例如,firewall-cmd --add-service=http --zone=public --permanent可以将 http 服务添加到 public 区域,并设置为持久配置。添加端口可以使用firewall-cmd --add-port=<端口号>/<协议> --zone=<区域名>,添加源地址可以使用firewall-cmd --add-source=<源地址> --zone=<区域名>等。
  1. 删除规则:与增加规则类似,使用firewall-cmd --remove-<规则类型>=<具体内容> --zone=<区域名>来删除规则。例如,firewall-cmd --remove-service=http --zone=public --permanent可以从 public 区域删除 http 服务。删除端口使用firewall-cmd --remove-port=<端口号>/<协议> --zone=<区域名>,删除源地址使用firewall-cmd --remove-source=<源地址> --zone=<区域名>等。
  1. 改正规则:可以先删除旧的规则,然后再添加新的规则来实现改正规则的目的。例如,如果要修改某个区域允许的服务,可以先删除旧的服务,然后再添加新的服务。或者直接使用firewall-cmd --change-<规则类型>=<新内容> --zone=<区域名>来修改规则,但这种方式并不是所有规则类型都支持。

五、直接规则

(一)增加规则


直接规则主要用于使服务和应用程序能够增加规则。在 Firewalld 中,直接规则的添加可以通过firewall-cmd命令来实现。例如,添加一个直接规则以将某个 IP 范围列入黑名单,可以使用以下命令:firewall-cmd --direct --add-rule ipv4 filter INPUT -s 192.168.0.0/24 -j DROP。这个命令会将来自192.168.0.0/24这个 IP 范围的数据包在INPUT链上直接丢弃。直接规则的用途在于可以更加灵活地控制网络流量,不受常规 Firewalld 规则的限制。例如,如果需要对特定的 IP 地址或端口进行非常精确的控制,直接规则可以提供更高效的解决方案。

(二)删除规则


删除直接规则同样可以使用firewall-cmd命令。例如,如果要删除上面添加的将192.168.0.0/24列入黑名单的直接规则,可以使用以下命令:firewall-cmd --direct --remove-rule ipv4 filter INPUT -s 192.168.0.0/24 -j DROP。在实际操作中,需要谨慎使用直接规则的删除操作,确保不会误删重要的规则导致网络安全问题。在删除规则之前,最好先确认该规则是否真的不再需要,并且可以通过查看当前的防火墙规则状态来确认删除操作的准确性。例如,可以使用firewall-cmd --list-all命令查看当前所有区域的规则信息,确认要删除的规则是否存在。

六、限制并发速度方法


实际的网络环境中,有时需要对网络连接的并发速度进行限制,以确保系统的稳定性和安全性。Firewalld 提供了一些方法来实现这一目标。
一种常见的方法是使用富规则(rich rules)进行限制。富规则可以精确控制网络流量,对于限制并发速度非常有用。例如,可以使用以下命令添加富规则,限制每秒最多 3 个并发连接:firewall-cmd --add-rich-rule='rule limit value="3/s"'。这个规则将限制任何连接的并发速度为每秒 3 个。
另外,还可以结合其他工具来实现更复杂的限制。例如,可以使用iptables的connlimit模块来限制每一个客户端 IP 的并发连接数。假设要限制特定端口(如 80 端口)的并发连接数为 10,可以使用以下命令:iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j REJECT。这个命令将拒绝超过 10 个并发连接的请求到 80 端口。
在使用 Firewalld 限制并发速度时,需要注意以下几点:
首先,要谨慎选择限制的并发速度值。如果设置得过低,可能会影响正常用户的使用体验;如果设置得过高,可能无法达到限制的目的。可以根据实际的网络流量和系统负载情况进行调整。
其次,在设置限制规则时,最好先进行测试,以确保规则的有效性和稳定性。可以使用一些工具来模拟网络流量,观察规则的效果。
最后,要定期检查和调整限制规则。随着网络环境的变化和系统负载的变化,可能需要对并发速度的限制进行调整。
总之,通过 Firewalld 可以有效地限制网络连接的并发速度,提高系统的稳定性和安全性。在实际应用中,需要根据具体情况选择合适的方法和工具,并进行合理的配置和调整。
 

墨者安全 防护盾

墨者安全作为专业级别安全防护专家,在应对 Webshell 风险隐患方面展现出了卓越的能力。其拥有全面的检测机制,能够精准识别 Webshell 的各种类型和变体,无论是复杂的大马,还是隐蔽的内存马,都难逃其敏锐的监测。
墨者安全防护盾具备强大的实时监控功能,对服务器的各项活动进行 7*24 小时不间断的监视。一旦发现任何可疑的 Webshell 活动迹象,立即发出警报,并迅速采取隔离和清除措施,将风险扼杀在萌芽状态。
在防护策略上,墨者安全防护盾采用了多层次的防御体系。不仅能够在网络层面阻挡外部的恶意访问和攻击,还能深入系统内部,对服务器的文件系统、进程等进行深度检查和保护,确保 Webshell 无法植入和运行。
同时,墨者安全防护盾拥有快速的应急响应能力。当 Webshell 攻击事件发生时,专业的安全团队能够迅速介入,进行深入的分析和处理,最大程度减少攻击带来的损失,并帮助用户快速恢复服务器的正常运行。
墨者安全防护盾还注重用户教育和培训,为用户提供关于 Webshell 防范的专业知识和最佳实践,帮助用户提升自身的安全意识和防范能力,共同构建坚实的网络安全防线。

热门文章

X

7x24 小时

免费技术支持

15625276999


-->