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

Firewalld 日志配置 3 步实战:从默认关闭到独立日志文件(附 rsyslog 规则)

Firewalld 日志配置 3 步实战:从默认关闭到独立日志文件(附 rsyslog 规则)

在 Linux 服务器运维中,防火墙日志是排查网络问题、分析安全事件的重要依据。然而 Firewalld 默认关闭日志记录功能,且日志混杂在系统消息文件中,给日常运维带来诸多不便。本文将手把手带你完成 Firewalld 日志从零配置的全流程,重点解决三个核心问题:如何启用日志记录?如何分离日志到独立文件?如何验证配置生效?

1. 理解 Firewalld 日志机制

Firewalld 作为 RHEL/CentOS 等主流 Linux 发行版的默认防火墙解决方案,其日志系统设计有以下几个特点:

  • 默认关闭策略:出于性能考虑,新安装的系统不会记录被拒绝的连接请求
  • 四级粒度控制:支持按单播(unicast)、广播(broadcast)、组播(multicast)或全部(all)类型记录
  • 内核级日志:通过内核的 netfilter 框架生成日志,原始日志默认写入/var/log/messages
  • 动态生效:多数配置变更无需重启服务,通过--reload即可应用

实际生产环境中,我们通常需要记录所有被拒绝的访问(all),同时将日志分离到独立文件。这既便于日志分析,也能避免系统日志文件过快膨胀。

2. 配置日志记录功能

2.1 检查当前日志状态

在开始配置前,先确认系统的当前日志设置:

# 查看当前日志记录级别 firewall-cmd --get-log-denied # 检查配置文件默认值 grep LogDenied /etc/firewalld/firewalld.conf

若输出为off或配置文件中显示LogDenied=off,则表示日志功能未启用。

2.2 设置日志记录级别

Firewalld 提供四种日志记录粒度:

参数值记录内容适用场景
all所有被拒绝的连接安全审计等需要完整记录的场景
unicast仅记录单播包(常见于常规网络通信)默认推荐配置
broadcast仅记录广播包特殊网络环境调试
multicast仅记录组播包组播应用调试

设置方法(以 all 为例):

# 临时生效(重启后失效) firewall-cmd --set-log-denied=all # 永久生效 firewall-cmd --set-log-denied=all --permanent firewall-cmd --reload

提示:生产环境中如果性能敏感,建议先用unicast级别测试,再根据实际情况调整。

2.3 验证配置

执行以下命令确认配置已生效:

# 检查运行时状态 firewall-cmd --get-log-denied # 查看内核日志(新开终端) tail -f /var/log/messages | grep -i reject

此时如果从外部访问被拒绝的端口,应该能在日志中看到类似记录:

IN=eth0 OUT= MAC=... SRC=192.168.1.100 DST=192.168.1.1 LEN=60 ... PROTO=TCP SPT=54321 DPT=22

3. 分离日志到独立文件

默认日志混杂在系统消息中,长期运行会导致文件过大。下面通过 rsyslog 实现日志分离。

3.1 创建 rsyslog 配置

新建/etc/rsyslog.d/firewalld.conf文件,内容如下:

# 捕获 DROP 和 REJECT 动作的日志 :msg, contains, "_DROP" /var/log/firewalld.log & stop :msg, contains, "_REJECT" /var/log/firewalld.log & stop

关键配置说明:

  • contains匹配内核日志中的特定字符串
  • & stop表示匹配后停止后续处理
  • 文件路径可根据需要修改,确保目录存在且有写入权限

3.2 设置日志轮转

创建/etc/logrotate.d/firewalld配置文件:

/var/log/firewalld.log { daily missingok rotate 7 compress delaycompress notifempty create 0600 root root }

3.3 应用配置

# 重启 rsyslog 服务 systemctl restart rsyslog # 测试配置(在新终端执行) logger -t kernel "TEST _REJECT message" # 验证日志文件 tail -f /var/log/firewalld.log

4. 高级应用与排错

4.1 日志分析技巧

获取被拒绝最多的 IP 地址:

grep 'FINAL_REJECT' /var/log/firewalld.log | awk '{print $10}' | sort | uniq -c | sort -nr | head -10

实时监控关键端口访问:

tail -f /var/log/firewalld.log | grep -E 'DPT=(80|443|22)'

4.2 常见问题解决

问题1:日志文件未创建

  • 检查 rsyslog 服务状态:systemctl status rsyslog
  • 验证配置语法:rsyslogd -N1
  • 检查目录权限:ls -ld /var/log/

问题2:日志记录不全

  • 确认 firewalld 日志级别:firewall-cmd --get-log-denied
  • 检查内核日志缓冲:dmesg | grep -i reject
  • 临时提高日志级别:echo "module nf_log_ipv4 +p" > /sys/kernel/debug/dynamic_debug/control

问题3:性能影响显著

  • 调整日志级别为 unicast
  • 限制日志速率:firewall-cmd --set-log-denied-rate=5/60s
  • 使用专门的日志服务器集中处理

5. 安全加固建议

完成基础配置后,建议进一步优化:

  1. 日志文件权限

    chmod 600 /var/log/firewalld.log chown root:root /var/log/firewalld.log
  2. 日志归档策略

    • 重要环境建议日志保留至少 90 天
    • 使用 ELK 或 Graylog 等工具集中管理
  3. 自动化响应

    # 示例:自动封禁频繁尝试的 IP grep 'FINAL_REJECT' /var/log/firewalld.log | awk '{print $10}' | sort | uniq -c | awk '$1 > 10 {print $2}' | xargs -I {} firewall-cmd --add-rich-rule='rule family="ipv4" source address="{}" reject'
  4. 性能监控指标

    • 日志生成速率:grep -c FINAL_REJECT /var/log/firewalld.log
    • 日志文件大小:du -h /var/log/firewalld.log

这套配置已在 CentOS 7/8 和 RHEL 7/8 环境中验证通过,适用于物理机、虚拟机及容器环境。根据实际网络流量调整日志级别和轮转策略,可在安全审计和系统性能间取得平衡。

http://www.cnnetsun.cn/news/3312838.html

相关文章:

  • 5分钟掌握AI换脸神器:roop-unleashed零门槛深度伪造指南
  • 如何用多层架构设计打造稳定的自定义固件系统?
  • 2026年爆火的AI智能体工程师岗位解析|零基础小白程序员转型攻略
  • 终极解决方案:5步快速清理Zotero文献重复难题,让学术管理效率翻倍!
  • Elixir v1.20:当动态语言学会“思考”,渐进式类型的全新里程碑
  • MapReduce 性能调优实战:从3个案例看Shuffle与Combiner优化策略
  • eulerfs实战案例:在真实生产环境中部署持久内存文件系统
  • yum 3种离线下载工具对比:downloadonly vs yumdownloader vs repotrack 依赖包数量实测
  • GitBook 3.2.3 插件配置实战:5个必装插件提升静态站点体验
  • Hydra(九头蛇)工具使用(非常详细)从零基础入门到精通,看完这一篇就够了。
  • SMUDebugTool完整指南:掌握AMD Ryzen处理器深度调试的终极方法
  • 免费解锁Wand专业版:3个简单步骤获得无限游戏修改功能
  • Excel 甘特图 3 步进阶:从静态表格到动态进度跟踪(含公式模板)
  • 高效解密网易云音乐NCM文件:专业图形界面工具实战指南
  • Gemma.cpp本地部署指南:CPU上高效运行轻量级大语言模型
  • Adobe Animate 2024 父子级关系:3步完成行星公转动画(附图层绑定技巧)
  • VSCode Git 集成 3 种实战:从 HTTPS 克隆到 SSH 密钥配置与推送优化
  • 山西太原热门的GEO公司有哪些
  • 高压安全隔离系统设计与ISOM8710+PIC32MZ应用
  • XXE漏洞靶场搭建与实战:从环境配置到无回显利用深度解析
  • 世界上第一个计算机算法:1843年洛芙莱斯注释G全解析
  • 遗传算法工程落地核心:适应度设计、多样性维持与收敛判定
  • GitLab/GitHub 多账户管理:4种方案避免 `project not found` 权限错误
  • 高德猎鹰轨迹服务 V1 API 实战:5步构建圆形电子围栏与状态判断
  • CPU、GPU、NPU等处理单元详解:从架构原理到异构计算实战指南
  • 2026年AI写作论文工具哪家强?5款主流工具实测对比,科研人这样选不踩坑
  • 遗传算法工程化实践:从早熟收敛到可诊断优化系统
  • 武汉智能体产品对比:3个选型关键指标
  • 【架构实战】Elasticsearch搜索架构:从倒排索引到集群调优
  • Python俄罗斯方块进阶:计分系统与7-Bag预览队列实现详解