当前位置: 首页 > 科技观察

FirewallD防火墙使用概述

时间:2023-03-17 20:41:52 科技观察

FirewallD由RedHat发起,提供动态防火墙管理工具,支持网络/防火墙区域(zones)来定义网络链接和接口安全等级。它支持IPv4、IPv6防火墙设置和以太网桥接,并具有运行时配置和永久配置选项。它还支持允许服务或应用程序直接添加防火墙规则的接口。由于FirewallD项目本身的自由软件性质,DebianLinux等社区发行版在软件仓库中默认包含了防火墙组件软件包。随着每个新的GNU/Linux发行版中防火墙引擎从iptables逐渐迁移到nftables,FirewallD是目前唯一可以支持两种防火墙后端引擎的前端服务组件。避免从iptables迁移到nftables的学习恐慌。笔者参考RedHat8发行版的网络配置手册,结合FirewallD防火墙在DebianLinux10社区版上的实际配置和使用,整理了服务组件的功能和日常使用。希望本文能帮助其他Linux用户掌握防火墙,提高主机通过防火墙的网络安全防御能力,营造可信的网络安全环境。1、在DebianLinux10社区版安装如下命令:apt-getinstallfirewall-appletfirewall-configfirewalld可以直接安装FirewallD防火墙软件组件包,其中:firewall-applet为FirewallD托盘小程序,firewall-config为FirewallD图形化系统配置管理工具firewalld是FirewallD防火墙软件组件的主要组件包,包括firewall-cmd、firewall-offline-cmd等命令行系统配置管理工具。在RedHat8下,防火墙组件已经默认安装。如果用户需要在特殊定制安装后单独安装软件组件,可以使用命令yuminstallfirewall-config直接安装。笔者对比了两个系统的安装,发现两个系统上的软件组件包除了安装命令略有不同外,从配置文件到systemd服务配置没有区别。下面将不再强调操作系统。2.防火墙默认区域Block(阻塞)任何对该区域的连接请求都会被拒绝,并带有IPv4icmp-host-prohibited信息或IPv6icmp6-adm-prohibited信息。网络连接只能从系统内部启动。Dmz(隔离区)适用于非军事区中的计算机,该区域可公开访问并且对内部网络的访问受限,仅接受选定的连接。Drop(丢弃)所有进入该区域的数据包都被丢弃,不发送返回包。允许区域内主动发起连接的传入返回数据包通过,允许出方向的网络连接。External(外部)用于启用伪装的外部网络,特别是路由器和防火墙认为这个网络上的其他主机是不可信任的。仅接受选定的连接。家(home)默认情况下,同一区域的其他主机是可信的,只接受选定的连接。同时默认允许ssh、mdns、ipp-client、amba-client和dhcpv6-client服务产生的连接。Internal(内部)从描述上可以等同于home区域。公共(public)公共区域也是防火墙默认配置的区域,防火墙认为该区域的主机是不可信的。仅接受选定的连接。同时默认允许ssh和dhcpv6-client服务的连接。Trusted(受信任)Trustedzone,防火墙允许所有流量。相当于关闭了防火墙功能。Work(工作)工作区,防火墙认为这个网络上的其他主机是不可信任的。仅接受选定的连接。同时默认允许ssh、ipp-client和dhcpv6-client服务产生的连接。这些区域的名称是不言自明的,用户可以快速选择合适的安全区域,从而简化和避免许多安全问题。当然,用户也可以根据自己的需要或根据自己的实际需要进行安全评估,更加个性化地配置相应的安全域,以适应自己的安全管理规范。虽然有些安全域的安全规则是一样的,但之所以有名称上的差异,主要是为了让用户从习惯上更好的区分不同域的独特使用场景,更好的理解和方便用户。区分。三、防火墙日常管理3.1.查看防火墙当前状态查询状态:firewall-cmd–state更多防火墙系统服务状态信息可以使用systemctlstatusfirewalld在配置新的防火墙规则之前,需要了解如何通过命令配置查看当前防火墙。您可以通过图形界面或在终端模式下使用命令查看防火墙的当前配置。在图形界面下,可以直接点击应用程序的“firewall-config”图标或者在终端窗口输入firewall-config命令来配置防火墙。如果当前用户为非root用户,系统会弹出管理员认证窗口。用户输入正确的管理员密码后,会打开防火墙配置窗口,用户可以根据窗口界面提供的功能进行操作。用户也可以使用firewall-cmd工具在命令行配置防火墙。虽然学习命令行工具需要一定的时间,但该工具可以在系统处于终端模式下进行各种复杂的防火墙全功能配置,用户必须认真学习掌握。3.2.防火墙基本命令FirewallD使用区域进行数据流管理。用户在使用firewall-cmd-list-all命令时,如果没有用--zone指定区域,系统将返回默认区域的当前配置状态。默认区域由配置文件/etc/firewalld/firewalld.conf中的字段DefaultZone定义。在初始状态下,默认区域被定义为公共(publiczone)。用户可以使用命令:firewall-cmd–get-zones查看当前系统防火墙设置的区域名称列表,或者使用命令:firewall-cmd-get-default-zone查看当前防火墙的默认区域;同时可以使用命令:firewall-cmd–set-default-zone=[zonename]或者直接编辑配置文件中DefaultZone字段的值来修改默认区域。启动防火墙:systemctlunmaskfirewalldsystemctlstartfirewalld让防火墙随系统启动一起启动:systemctlenablefirewalld停止防火墙:systemctlstopfirewalld停止随系统启动:systemctldisablefirewalld停止访问firewalldD-Bus接口和其他服务requirefirewallddependencies更干净地自动启动和关闭firewalld服务:systemctlmaskfirewalld是根据RedHat官方文档定义的。防火墙运行后称为运行状态,保存默认启动参数后的配置称为永久状态。在当前运行状态下对防火墙所做的所有配置修改将立即生效,但重启后防火墙将恢复到之前的永久状态。这个过程其实就是从保存的配置文件中加载相应的配置参数的过程。用户可以使用命令:fiewall-cmd--runtime-to-permanent将当前修改的规则立即保存为永久配置,或者使用命令firewall-cmd–permanent并在之后添加其他参数进行永久更改。重启firewalld会关闭所有打开的端口并停止网络通信,需要使用命令:firewall-cmd–reload重新加载永久配置才能生效。FirewallD提供了在系统受到攻击时的紧急行动功能。假设攻击者攻击系统,用户可以直接使用命令:firewall-cmd–panic-on关闭网络通信,切断攻击者,而不是像以前那样通过物理拔网线来断开网络,这样防止系统在多个网络上运行。端口环境下一次插拔所有网线可能造成的混乱以及由此导致的系统恢复后的继续运行。当需要恢复网络通信时,用户只需要使用命令:firewall-cmd--panic-off关闭panic模式,用户也可以使用命令:firewall-cmd–query-panic进行查询防火墙紧急模式的当前状态。3.2.防火墙服务管理命令用户可以通过命令行工具添加预定义的服务类型,防火墙会根据需要的端口等设置自动修改服务定义文件。使用命令:firewall-cmd--list-services查看当前区域允许的服务。使用命令:firewall-cmd--get-services列出防火墙已经给出的所有预定义服务名称。使用命令:firewall-cmd--add-service=添加具体的服务,服务名称用户可以根据自己的实际需要从预定义的服务名称中选择合适的服务名称进行添加。完成后,用户可以使用命令:firewall-cmd–runtime-to-permanent永久保存运行时修改。用户可以通过命令firewall-config、firewall-cmd和firewall-offline-cmd添加,也可以直接将/usr/lib/firewalld/services目录下的默认模板XML文件复制到/etc/firewalld/services目录下编辑A自定义服务类型。具体过程如下:方法一:执行firewall-cmd–new-service=service-name,系统会直接在/etc/firewalld/services目录下创建一个以.xml结尾的同名文件,并将添加自定义服务类型。方法二:使用编辑软件直接编辑相应目录下的XML文件,执行firewall-cmd--new-service-from-file=service-name.xml,系统会自动添加同名的自定义服务类型.端口是特定系统服务接收和区分网络流量并转发给系统服务的逻辑设备,系统守护进程通常监听特定的服务端口。防火墙在默认的服务类型配置中已经定义了对应服务需要放行的对应端口。当用户还需要释放某个服务中特定的自定义端口或端口段时,可以通过firewall-cmd来完成,格式如下:firewall-cmd[--zone=zone_name][--service=service_name]--add-port=port-number/port-type这里需要说明的是--zone和--service是可选参数。如果用户不添加这两个参数来执行命令,相当于直接添加defaultzone中的端口。当只选择--zone参数时,命令执行的结果是直接在指定区域添加端口,与服务状态无关。只有使用--service参数时才会将端口添加到相应的服务中。当用户需要删除端口时,可以使用如下命令:#firewall-cmd[--zone=zone_name][--service=service_name]remove-port=port-number/port-type当用户需要时将服务添加到不同的区域,用户可以通过以下步骤一步步进行:释放ssh服务定义流量和连接中的默认22端口入站方向。在多网络接口的主机中,可以通过以下方法将指定的网络接口加入到需要的区域中,从而实现每个接口的安全连接区域需求,实现真正的区域化网络安全管理。使用命令:firewall-cmd--get-active-zones查看当前激活的安全区域和对应的网络接口配置。使用命令firewall-cmd--zone=work--change-interface=ens3p0将网卡ens3p0添加到工作区,然后所有通过该网卡的流量都会受到区域安全规则的限制和限制。此配置将立即生效并自动保存为永久配置。用户需要将某个网卡添加到特定的安全区域或者直接使用:vi/etc/sysconfig/network-scripts/ifcfg-connection-name并在该文件下添加ZONE=zone-name这一行,网卡属于到特定的安全区域。用户可以设置安全区域的默认规则。合并规则包括三个选项:ACCEPT、REJECT和DROP。ACCEPT选项将允许所有流量,而REJECT和DROP选项将阻止所有流量进入安全区域。与REJECT不同的是DROP选项直接丢弃进入安全区域的数据包,不会向数据包的发起者回复任何信息。用户可以使用命令:firewall-cmd--zone=zone-name--set-target=设置相应安全区域的默认规则。3.3.使用区域根据来源管理传入流量您可以使用区域根据来源管理传入流量,这允许您对传入流量进行排序并将其路由到不同的区域以允许或禁止流量可以到达的服务。如果将源添加到区域,则该区域将变为活动状态,并且来自该源的任何传入流量都将通过它。您可以为每个区域指定不同的设置,这些设置将应用于来自给定来源的流量。即使您只有一个网络接口,也可以使用更多区域。通过下面的例子,我们可以更详细的管理特定网段的HTTP请求流量。使用命令:firewall-cmd--zone=trusted--add-source=192.168.1.0/24将此网段添加为资源在信任区域中,使用命令:firewall-cmd--zone=trusted-add-service=http将Web服务添加到同一个zone,目标地址产生的访问Web服务流量就会顺利通过。3.4.防火墙锁定机制为了防止KVM虚拟机组件等本地程序修改防火墙,FirewallD还提供了锁定机制,防止本地程序或服务组件修改防火墙配置,并且该命令只能由root用户执行本身。可以执行。用户可以使用命令:firewall-cmd--query-lockdown查询防火墙的锁定状态。当需要加锁时,用户可以直接执行命令:firewall-cmd--lockdown-on回到解锁状态时执行命令:firewall-cmd--lockdown-off四、后记作为RedHat的其中之一对自由软件社区的贡献,FirewallD防火墙组件具有良好的通用性。希望通过本文的讲解,让更多的用户熟悉防火墙软件组件,并将其作为主机本地端防护的良好技术手段,不断提升主机自身的IPS能力。在当今复杂的网络环境中,主机具有更好的安全性和可用性。