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
上一篇
下一篇