HCRM博客

如何优化 CentOS 中的 Firewalld 配置以增强安全性?

CentOS Firewalld 配置详解

Firewalld 是 CentOS 7 及更高版本中默认的防火墙管理工具,与 iptables 相比,firewalld 提供了更简单、更灵活的管理方式,并且支持动态更新规则而无需重启防火墙服务,本文将详细介绍 firewalld 的配置方法、区域管理、服务管理和端口管理等内容。

如何优化 CentOS 中的 Firewalld 配置以增强安全性?-图1
(图片来源网络,侵权删除)

Firewalld 简介

Firewalld 是一个动态防火墙管理器,通过内核的 netfilter 子系统实现防火墙功能,它不仅支持 IPv4,还支持 IPv6,并具备丰富的配置选项和友好的用户界面,Firewalld 使用区域(zone)和服务(service)的概念来管理网络流量,使得配置更加直观和高效。

二、Firewalld 与 iptables 的区别

1、配置方式

iptables:基于接口设置规则,所有更改都需要手动刷新规则。

firewalld:基于区域设置规则,可以动态修改单条规则而不影响其他规则。

2、规则存储

如何优化 CentOS 中的 Firewalld 配置以增强安全性?-图2
(图片来源网络,侵权删除)

iptables:规则存储在/etc/sysconfig/iptables 文件中。

firewalld:规则存储在/usr/lib/firewalld//etc/firewalld/ 目录下的 XML 文件中。

3、操作方式

iptables:每次修改规则后需要重新加载整个规则集。

firewalld:可以实时更新规则而无需重启服务。

Firewalld 区域管理

Firewalld 预定义了多个区域,每个区域都有不同的安全级别和默认行为,以下是常见的预定义区域及其描述:

如何优化 CentOS 中的 Firewalld 配置以增强安全性?-图3
(图片来源网络,侵权删除)
区域名称 描述
trusted 允许所有传入和传出流量,适用于高度信任的内部网络。
home 允许选定的服务和流量,通常用于家庭网络。
work 允许选定的服务和流量,通常用于工作环境。
public 默认区域,仅允许选定的服务和流量,适用于公共网络。
dmz 隔离区域,仅允许选定的流量,适用于非军事区(DMZ)。
block 阻止所有传入流量,但允许传出流量。
drop 丢弃所有传入流量,不产生任何响应。
internal 似于 home 区域,但通常用于内部网络。
external 类似于 public 区域,但适用于外部网络。

查看当前活动区域

firewallcmd getactivezones

设置默认区域

firewallcmd setdefaultzone=public

为指定接口绑定区域

firewallcmd zone=public addinterface=ens33

Firewalld 服务管理

Firewalld 预定义了许多常见的服务,如 HTTP、HTTPS、SSH 等,这些服务对应特定的端口和协议,可以通过服务名称来管理相应的端口。

查看可用服务

firewallcmd getservices

添加服务到指定区域

firewallcmd zone=public addservice=http

移除服务从指定区域

firewallcmd zone=public removeservice=http

Firewalld 端口管理

除了使用预定义的服务外,还可以直接管理端口。

添加端口到指定区域

firewallcmd zone=public addport=8080/tcp permanent

移除端口从指定区域

firewallcmd zone=public removeport=8080/tcp permanent

查看指定区域的端口状态

firewallcmd zone=public listports

Firewalld 富规则配置

Firewalld 支持富规则(rich rules),可以更细粒度地控制网络流量,富规则语法较为复杂,但功能强大。

示例:添加一条富规则

firewallcmd permanent addrichrule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'

查看富规则列表

firewallcmd listall permanent

删除富规则

firewallcmd permanent deleterichrule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'

Firewalld 的其他常用命令

启动 firewalld

  systemctl start firewalld

停止 firewalld

  systemctl stop firewalld

重启 firewalld

  systemctl restart firewalld

查看 firewalld 状态

  systemctl status firewalld

查看 firewalld 版本

  firewallcmd version

重新加载 firewalld 配置

  firewallcmd reload

常见问题解答(FAQs)

Q1:如何更改 firewalld 的默认区域?

A1:可以使用以下命令更改默认区域:

firewallcmd setdefaultzone=public

将默认区域设置为home

firewallcmd setdefaultzone=home

Q2:如何在 firewalld 中配置端口转发?

A2:确保开启了伪装功能:

firewallcmd addmasquerade permanent

添加端口转发规则,将本地端口 8080 的流量转发到外部地址 192.168.1.100 的 80 端口:

firewallcmd addforwardport=port=8080:proto=tcp:toport=80:toaddr=192.168.1.100 permanent

重新加载配置:

firewallcmd reload

注意:如果端口转发仍不生效,请检查内核参数net.ipv4.ip_forward 是否已启用:

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl p

通过上述步骤,您可以全面了解并掌握 CentOS 中 firewalld 的配置和管理方法,无论是简单的服务和端口管理,还是复杂的富规则配置,firewalld 都能提供强大的支持,帮助您构建安全可靠的网络环境。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/9070.html

分享:
扫描分享到社交APP
上一篇
下一篇