apt-get install firewall-applet firewall-config firewalld
就可以直接进行 FirewallD 防火墙软件组件包的安装,其中:firewall-applet 为 FirewallD 托盘小程序,firewall-config 为 FirewallD 图形化系统配置管理工具firewalld 为 FirewallD 防火墙软件组件的主组件包,其中包含 firewall-cmd、firewall-offline-cmd 等命令行系统配置管理工具在 RedHat 8 下该防火墙组件默认已经进行了安装,如果用户进行特殊定制安装之后需要单独安装该软件组件可以使用命令yum install firewall-config
直接进行安装即可笔者在两个系统装进行过安装对比,发现该软件组件包在两个系统上除了安装命令稍有差异外,其它从配置文件到 systemd 服务配置并没有任何区别随后的内容将不再强调操作系统二、防火墙默认区域Block(阻塞)任何对该区域的连接请求都会被以 IPv4 的 icmp-host-prohibited 信息或 IPv6 的 icmp6-adm-prohibited 信息所拒绝只能从系统内部启动网络连接Dmz(隔离)用于你的隔离区内的电脑,此区域内可公开访问,可以有限地进入你的内部网络,仅仅接收经过选择的连接Drop(丢弃)对进入该区域的所有数据包丢弃,并且不进行任何回包,区域内主动发起连接的流入回程数据包允许通过,允许进行出方向的网络连接External(外部)用于在启用伪装的外部网络上使用,尤其路由器、防火墙认为在这个网络上的其它主机不可信仅仅接收经过选择的连接Home(家庭)默认其他同区域内主机可信,仅仅接收经过选择的连接同时默认放行 ssh、mdns、ipp-client、amba-client 与 dhcpv6-client 服务产生的连接Internal(内部)从描述中可以等同于家庭区域Public(公开)公共区域,也是防火墙配置的默认区域,防火墙认为该区域主机不可信仅仅接收经过选择的连接同时默认放行 ssh 与 dhcpv6-client 服务产生的连接Trusted(可信)可信区域,防火墙放行一切流量等同于关闭防火墙功能Work(工作)工作区域,防火墙认为在这个网络上的其它主机不可信仅仅接收经过选择的连接同时默认放行 ssh、ipp-client 与 dhcpv6-client 服务产生的连接这些区域的命名不言自明,用户可以很快选择一个合适的安全区域,从而简化和避开很多安全问题当然用户也可以根据自己的需要或者安全评估来根据自己的实际需求对相应安全域进行更个性化的配置,以适应自己的安全管理规范尽管有些安全域的安全规则是相同的,但之所以还要在名字上有所区别,主要是为了从习惯上让用户更好区分不同域的独特使用场景,对用户来说更好理解和便于区分三、防火墙日常管理3.1、查看防火墙当前状态查询状态:firewall-cmd --state
更多的防火墙系统服务状态信息可以使用systemctl status firewalld
在你配置新的防火墙规则之前,你需要了解如何通过命令查看当前防火墙配置查看防火墙当前配置可以通过图形界面或者在终端模式下使用命令进行在图形界面下可以直接通过点击应用程序“firewall-config”图标或者在终端窗口中输入 firewall-config 命令进行防火墙配置如果当前用户为非 root 用户,系统将弹出管理员认证窗口,用户正确输入管理员密码后,防火墙配置窗口就会打开,用户即可以按照窗口界面提供的功能进行操作用户也可以在命令行下使用 firewall-cmd工具进行防火墙配置命令行工具虽然学习起来需要一定的时间,不过该工具可以完全在系统处于终端模式下进行各种复杂的防火墙全功能配置,用户有必要进行认真的学习和掌握3.2、防火墙基础命令FirewallD 使用了区域进行数据流的管理,当用户使用 firewall-cmd --list-all 命令时,如果没有使用 --zone 指定区域,那么系统将返回默认区域的当前配置状态默认区域由配置文件 /etc/firewalld/firewalld.conf 中的字段 DefaultZone 定义,初始状态下,默认区域被定义为 public(公共区域)用户可以使用命令:firewall-cmd --get-zones
查看当前系统防火墙设置的的区域名列表,也可以使用命令:firewall-cmd --get-default-zone
查看防火墙当前的默认区域;同时,可使用命令:firewall-cmd --set-default-zone=[zonename]
或者通过直接编辑配置文件中 DefaultZone 字段的值进行默认区域的修改启动防火墙:systemctl unmask firewalldsystemctl start firewalld
让防火墙随系统启动一起启动:systemctl enable firewalld
停止防火墙:systemctl stop firewalld
停止随系统启动:systemctl disable firewalld
停止通过访问 firewalld D-Bus 接口和其他服务需要 firewalld 依赖导致的 firewalld 自动启动,更加干净的关闭 firewalld 服务:systemctl mask firewalld
按照 RedHat 的官方文档定义,防火墙运行之后被称为运行时状态,保存了启动默认参数之后的配置被称为永久状态在当前运行状态对防火墙进行的所有配置修改,系统即时生效,但重启后防火墙会恢复到它之前的永久状态,其实这一过程就是从保存之后的配置文件中加载相应配置参数的过程用户可以使用命令:fiewall-cmd--runtime-to-permanent
对当前修改过的规则即时保存为永久配置,也可以使用命令 firewall-cmd --permanent 并在其后添加其它参数永久进行修改重新启动 firewalld 将关闭所有打开的端口并停止网络通信,需要使用命令:firewall-cmd --reload
重新加载永久配置使之生效FirewallD 提供了一种系统受到攻击的紧急操作功能假设攻击者对系统进行攻击,用户可以直接使用命令:firewall-cmd --panic-on
关闭网络通信并且切断攻击者,而不用像之前那样通过物理拔除网线来进行断网操作,防止了系统在多网口环境中一次性插拔所有网线可能带来的混乱以及由此引发的系统恢复后延续问题需要恢复网络通信时用户只要使用命令:firewall-cmd --panic-off
关闭恐慌模式即可,用户也可以使用命令:firewall-cmd --query-panic
查询防火墙当前恐慌模式的状态3.2、防火墙服务管理命令用户可以通过命令行工具添加预定义的服务类型,防火墙会自动根据所需的端口并将其他设置修改为服务定义文件使用命令:firewall-cmd --list-services
可以查看当前区域内被允许的服务使用命令:firewall-cmd --get-services
可以列出所有防火墙已经给定的预定义服务名称使用命令:firewall-cmd --add-service=<service-name>
可以添加具体服务,服务名称用户可以根据自己的实际需求从预定义服务名称中选取合适的服务名进行添加完成之后用户可以使用命令:firewall-cmd --runtime-to-permanent
将对运行时的修改保存为永久用户可以通过命令 firewall-config、firewall-cmd 和 firewall-offline-cmd,或者通过直接将 /usr/lib/firewalld/services 目录的默认模板 XML 文件复制到 /etc/firewalld/services 目录中进行编辑来添加一个自定义服务类型具体过程如下:方法一:执行 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 为可选参数,如果用户不添加这两个参数执行命令时相当与在默认区域中直接添加了端口,当只选取了 --zone 参数时,命令执行的结果是在指定区域直接添加端口,此时与服务状态无关只有在使用 --service 参数时才是在相应的服务中添加端口当用户需要删除一个端口时可以使用如下命令:firewall-cmd [--zone=zone_name] [--service=service_name] --remove-port=port-number/port-type
当用户需要向不同区域添加服务时,用户可以通过如下步逐进行:firewall-cmd --add-service=ssh --zone=drop
该命令将向区域 drop 中添加 ssh 服务,其实质就是放行 ssh 服务定义中的默认 22 端口入站方向的流量及连接在多网络接口主机中,可以使用如下方法将指定的网络接口添加到需要的区域中,从而实现每个接口的安全连接区域要求,实现真正的区域化网络安全管理使用命令:firewall-cmd --get-active-zones
查看当前激活的安全区域和相应的网络接口配置使用命令firewall-cmd --zone=work --change-interface=ens3p0
则将网卡 ens3p0 加入到了 work 区域,之后所有通过该网卡的流量将受到区域安全规则的约束和限制,该配置是即时生效的并且会自动保存为永久配置用户需要将某个网卡加入到特定安全区域也可以直接使用: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=<default|ACCEPT|REJECT|DROP>
进行相应安全区域的默认规则设置3.3、使用区域根据来源来管理传入流量你可以使用区域根据来源管理流入流量,这使你可以对传入流量进行排序,并将其路由到不同区域,以允许或禁止该流量可以到达的服务如果将源添加到区域,则该区域将变为活动状态,并且来自该源的任何传入流量将通过它你可以为每个区域指定不同的设置,该设置将应用于来自给定来源的流量即使你只有一个网络接口,也可以使用更多区域通过以下实例,我们可以将特定网段对 HTTP 的请求流量进行更细致的管理,使用命令:firewall-cmd --zone=trusted --add-source=192.168.1.0/24
将该网段作为资源加入到 trusted 区中,通过命令:firewall-cmd --zone=trusted --add-service=http
将 Web 服务添加到相同区域中,随后该目标地址产生的访问 Web 服务流量将可以顺利通过3.4、防火墙锁机制为了防止本地程序比如 KVM 虚拟机组件对防火墙的修改,FirewallD 还提供了一种锁闭机制来防止本地程序或者服务组件对防火墙配置的修改,并且该命令只有 root 用户本身才可以执行用户可以使用命令:firewall-cmd --query-lockdown
查询防火墙锁闭状态,当需要锁闭时可以直接执行命令:firewall-cmd --lockdown-on
恢复到非锁闭状态时可以执行命令:firewall-cmd --lockdown-off
四、后记FirewallD 防火墙组件作为 RedHat 对自由软件社区的贡献之一,具有很好的普适性,希望通过本文的讲解使更多的用户开始熟悉该防火墙软件组件,并将其作为主机本地侧防护很好的技术手段,不断提高主机自身的 IPS 能力在当今网络环境复杂的形势下让主机具有更好的安全性和可用性点击“了解更多”可访问文内链接(图片来源网络,侵删)
0 评论