第一篇:动态防火墙firewalld和静态防火墙iptables

时间:2023-03-10 04:26:35
第一篇:动态防火墙firewalld和静态防火墙iptables

动态防火墙firewalld

firewalld提供了一个动态管理的防火墙,它支持网络(network)/防火墙区域(firewall zones )来定义网络连接( network connections )或接口(interfaces)的信任级别(trust level)。它支持IPv4、IPv6防火墙设置和以太网桥,并且有一个运行时配置选项(runtime )和永久配置选项(runtime )。它还支持一个可以让服务或应用程序直接添加防火墙规则的接口。

带有system-config-firewall / lokkit的以前的防火墙模型是静态的,每次更改都需要完全重新启动防火墙。这也包括卸载防火墙netfilter内核模块并加载新配置所需的模块。卸载模块破坏了有状态的防火墙并建立了连接。

然而,防火墙守护进程(firewall daemon)动态管理防火墙并应用更改,而无需重新启动整个防火墙。因此不需要重新加载所有防火墙内核模块。但是使用防火墙守护进程需要使用该守护进程修改所有防火墙,以确保守护进程中的状态与内核中的防火墙保持同步。防火墙守护进程无法解析由ip * tables和ebtables命令行工具添加的防火墙规则。

守护进程通过D-BUS提供有关当前活动防火墙设置的信息,并使用PolicyKit身份验证方法(PolicyKit authentication methods)通过D-BUS接受更改。

守护进程

应用程序,守护进程和用户可以请求通过D-BUS启用防火墙功能。功能可以是预定义的防火墙功能之一,如服务,端口和协议组合,端口/数据包转发,伪装或icmp阻塞。该功能可以启用一段时间,或者可以再次禁用。

通过所谓的直接接口(direct interface),其他服务(例如libvirt)可以使用iptables arguments 和parameters添加自己的规则。

netfilter防火墙助手(The netfilter firewall helpers)(用于amanda,ftp,samba和tftp服务等)也由守护进程处理,只要它们是预定义服务的一部分。加载其他助手( additional helpers)不是当前接口(current interface)的一部分。对于某些助手(helpers),只有在模块处理的所有连接都关闭后才能卸载。因此连接跟踪信息(connection tracking information)在这里很重要,需要考虑。

静态防火墙(system-config-firewall / lokkit)

具有system-config-firewall和lokkit的实际静态防火墙模型仍然可以找到(available )且可用(usable),但不是和守护进程同时运行的。用户或管理员可以通过启用相应的服务来决定应使用哪种防火墙方案。

在安装时或在第一次启动时计划为防火墙方案添加一个选择器。其他方案的配置将保持原封不动,如需启用,只需简单切换模型即可。

防火墙守护进程(The firewall daemon)独立于system-config-firewall,但不应该同时使用。

在iptables和ip6tables服务中使用静态防火墙规则

如果您想要使用iptables和ip6tables服务配置自己的静态防火墙规则,请安装iptables-services并禁用firewalld并启用iptables和ip6tables:

dnf install iptables-services
systemctl mask firewalld.service
systemctl enable iptables.service
systemctl enable ip6tables.service

对于静态防火墙规则,请使用/etc/sysconfig/iptables和/etc/sysconfig/ip6tables

注意:软件包iptables和iptables-services不提供用于服务的防火墙规则。这些服务可用于兼容性以及希望使用自己的防火墙规则的人员。尽管你可以安装和使用system-config-firewall来创建规则。为了能够使用system-config-firewall,你必须停止firewalld。

在创建与服务配合使用的规则后,停止firewalld并启动iptables和ip6tables服务:

systemctl stop firewalld.service
systemctl start iptables.service
systemctl start ip6tables.service