当前位置: 首页 > news >正文

Linux 防火墙(firewalld)详解与配置

Linux 防火墙(firewalld)详解与配置

在这里插入图片描述

一、防火墙的基本概念

防火墙是一种网络安全机制,通过隔离风险区域与安全区域的连接,实现以下核心目标:

  • 阻止未授权访问进入内部网络,过滤不安全的服务和非法用户
  • 构建防御屏障,防止入侵者接近核心防御设施
  • 限制用户对特殊网络资源的访问权限
  • 为监控互联网安全状态提供日志记录和审计依据

二、Linux 防火墙的底层与工具

1. netfilter 模块

netfilter 是 Linux 内核中的网络过滤模块,位于/lib/modules/(内核版本 uname -r查看)/kernel/net/netfilter目录,负责处理网络数据包的过滤、转发等核心功能。

2. 防火墙管理工具

  • iptables:CentOS 6 及更早版本的默认防火墙工具,基于命令行规则配置。
  • firewalld:CentOS 7 及以上版本的动态防火墙工具,支持实时规则更新,无需重启服务即可生效,是本文的核心内容。

三、firewalld 的核心概念与基础操作

1. 区域(Zone)

firewalld 通过 “区域” 管理不同信任级别的网络连接,内置 3 个特殊区域:

  • drop:强制拒绝所有传入流量,不返回任何响应(类似 “无声拒绝”)。
  • block:拒绝所有传入流量,但会返回拒绝响应(类似 “礼貌拒绝”)。
  • trusted:允许所有传入流量,无任何限制。

注意:drop 和 block 区域无论是否勾选服务,均默认禁止所有流量;trusted 区域则默认允许所有流量。

2. 基本命令行操作(firewall-cmd)

(1)查看防火墙状态与区域信息
# 查看当前区域的所有配置信息
firewall-cmd --list-all# 查看默认区域
firewall-cmd --get-default-zone#查看所有区域的配置信息
firewall-cmd --list-all-zones # 切换默认区域(例如设置为home)
firewall-cmd --set-default-zone=home
(2)管理服务与端口
# 临时添加http服务(当前生效,重启后失效)
firewall-cmd --add-service=http# 永久添加82/tcp端口(需重载生效)
firewall-cmd --add-port=82/tcp --permanent# 移除ftp服务(永久生效)
firewall-cmd --remove-service=ftp --permanent# 重载配置使永久规则生效
firewall-cmd --reload

说明:--permanent参数表示规则永久生效,需执行firewall-cmd --reload后应用;不带此参数则仅当前运行时生效。

四、富规则(Rich Rule)配置

富规则用于定义复杂的防火墙策略,支持基于源地址、服务、端口等多条件的精细控制,语法结构包括family(协议族)、source(源地址)、service(服务)、log(日志)、action(动作)等。

1. 基本动作说明

  • accept:允许流量通过。
  • reject:拒绝流量,并返回拒绝响应(如 “端口不可达”)。
  • drop:直接丢弃流量,不返回任何响应。

规则优先级:当拒绝规则与允许规则冲突时,拒绝规则优先生效

2. 富规则实战示例

(1)允许特定网段访问 http 服务
# 允许172.16.30.0/24网段访问http服务(永久生效)
firewall-cmd --add-rich-rule='rule family=ipv4source address=172.16.30.0/24service name=httpaccept
' --permanent
firewall-cmd --reload
(2)带日志记录的规则配置
# 允许172.16.30.0/24访问http,以notice级别记录日志(每分钟最多10条)
firewall-cmd --add-rich-rule='rule family=ipv4source address=172.16.30.0/24service name=httplog prefix="http_access" level=notice limit value=10/maccept
' --zone=public --permanent
firewall-cmd --reload
  • 日志级别:从高到低为emergalertcriterrorwarningnoticeinfodebug
  • limit 参数value=rate/duration,如10/m表示每分钟最多 10 条日志(s = 秒、m = 分、h = 时、d = 天)。
(3)临时拒绝特定网段的 ssh 连接
# 10分钟内(600秒)拒绝172.16.30.0/24的ssh连接,每分钟记录2条审计日志
firewall-cmd --add-rich-rule='rule family=ipv4source address=172.16.30.0/24service name=sshaudit limit value=2/mreject
' --timeout=600

五、高级功能:伪装与端口转发

1. IP 伪装(NAT 转发)

伪装功能允许内部网络通过防火墙的公网 IP 访问外部网络,需先开启内核 IP 转发:

# 开启IP转发(永久生效)
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p  # 立即生效# 对public区域启用伪装(允许172.16.30.0/24网段通过)
firewall-cmd --add-rich-rule='rule family=ipv4source address=172.16.30.0/24masquerade
' --zone=public --permanent# 或直接对区域启用伪装(所有源地址)
firewall-cmd --add-masquerade --zone=public --permanent
firewall-cmd --reload

2. 端口转发

将访问本地特定端口的流量转发到其他端口或主机。

(1)本地端口转发
# 临时将8000/tcp端口转发到80/tcp(目标地址为172.16.30.130)
firewall-cmd --add-forward-port=port=8000:proto=tcp:toport=80:toaddr=172.16.30.130
(2)基于富规则的跨网段转发
# 永久将12.12.12.0/24访问本地80端口的流量转发到172.16.30.30的80端口
firewall-cmd --add-rich-rule='rule family=ipv4source address=12.12.12.0/24forward-port port=80 protocol=tcp to-port=80 to-addr=172.16.30.30
' --permanent
firewall-cmd --reload
(3)特定网段访问转发
# 永久将172.16.30.0/24访问本地9527端口的流量转发到80端口
firewall-cmd --add-rich-rule='rule family=ipv4source address=172.16.30.0/24forward-port port=9527 protocol=tcp to-port=80
' --permanent
firewall-cmd --reload

六、补充:禁 Ping 配置

通过内核参数禁止 ICMP echo 请求(即禁 Ping):

# 永久禁Ping
echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf
sysctl -p  # 立即生效

总结

firewalld 通过区域、服务、富规则等机制实现了灵活的防火墙管理,核心操作包括:

  • 基础服务 / 端口的添加与移除;
  • 富规则的精细控制(含日志、源地址限制);
  • 伪装与端口转发的高级配置。

合理配置防火墙规则可有效提升系统安全性,实际使用中需根据业务场景选择 “最小权限” 原则,仅开放必要的服务和端口。

http://www.dtcms.com/a/318725.html

相关文章:

  • 第14届蓝桥杯Scratch选拔赛初级及中级(STEMA)真题2022年10月30日
  • Linux中firewalld(防火墙)配置与管理指南
  • 【golang】基于redis zset实现并行流量控制(计数锁)
  • InfluxDB 集群部署与高可用方案(一)
  • C基础 15_day
  • 从代码学习LLM - llama3 PyTorch版
  • css优化、提升性能方法都有哪些?
  • Nacos机制
  • 【图像处理基石】什么是数字高程模型?如何使用数字高程模型?
  • 进阶向:AI聊天机器人(NLP+DeepSeek API)
  • 双馈和永磁风机构网型跟网型联合一次调频并入同步机电网,参与系统一次调频,虚拟惯量下垂,虚拟同步机VSG控制matlab/simulink
  • 202506 电子学会青少年等级考试机器人六级实际操作真题
  • PCB工艺-四层板制作流程(简单了解下)
  • 小实验--继电器定时开闭
  • TrustZone技术详解————这篇是AI写的包括图
  • 贝叶斯算法中的参数调优
  • RK3568下用 Qt Charts 实现曲线数据展示
  • python---getsizeof和asizeof的区别
  • 17.Linux :selinux
  • LMS/NLMS最小均值算法:双麦克风降噪
  • CentOS8.5安装19c单机告警及处理
  • 碳纳米管的原子精度制造——展望
  • 福彩双色球第2025090期篮球号码分析
  • docker启动出现Error response from daemon: Container的问题【已解决】
  • 容器化运维工具(2)Kubernetes 详细教程(含图解)
  • 开发避坑指南(18): SpringBoot环境变量配置错误:占位符解析失败解决方案
  • 【数据结构与算法-Day 12】深入浅出栈:从“后进先出”原理到数组与链表双实现
  • 奔图P2500NW打印机加碳粉方法
  • 《Transformer黑魔法Mask与Softmax、Attention的关系:一个-∞符号如何让AI学会“选择性失明“》
  • 深入理解 qRegisterMetaType<T>()