怎么在Linux利用Logrotate确保审计日志的完整性并配合磁盘配额防止日志溢出攻击

轻瑶同学_9869

轻瑶同学_9869

2026-05-15

369人浏览

原创

需协同配置logrotate与磁盘配额:logrotate用postrotate发送sighup通知auditd,禁用restart/reload;maxsize防攻击,delaycompress避冲突;/var/log/audit须独立分区并设root配额;权限0700/0600及selinux上下文须正确;最后强制验证生效。

怎么在linux利用logrotate确保审计日志的完整性并配合磁盘配额防止日志溢出攻击

要确保审计日志不被绕过、不丢失、不因写满磁盘而中断,需把 logrotate 和磁盘配额协同用好——前者管“怎么存”,后者管“最多能存多少”。关键不是单独配置,而是让两者形成闭环控制。

logrotate 必须带 postrotate 通知 auditd,否则日志会丢
auditd 是长期运行的守护进程,它不会自动发现日志文件已被重命名或清空。如果轮转后没发信号,auditd 仍往旧路径(比如 /var/log/audit/audit.log.1)持续写入,新日志文件为空,归档不断膨胀,实际审计流已断裂。

  • 在 /etc/logrotate.d/auditd 中必须包含 postrotate ... endscript 块
  • 推荐写法:
    postrotate
        /bin/systemctl kill --signal=SIGHUP auditd 2>/dev/null || true
    endscript
  • 不要用 restart 或 reload,会中断审计上下文,导致中间事件丢失

maxsize 比 daily 更防攻击,压缩要 delaycompress
攻击者可能在短时间内触发大量审计事件(如暴力提权、批量文件篡改),仅靠 daily 触发轮转来不及止损。maxsize 50M 能在单个日志达阈值时立即切档,避免单文件撑爆分区。

  • compress 启用归档压缩节省空间
  • delaycompress 确保刚轮出的 audit.log.1 暂不压缩,auditd 还在写它;下次轮转时才压 audit.log.2,避免锁冲突或写失败

audit.log 所在分区必须启用磁盘配额,且限制 root 用户
auditd 默认以 root 身份写日志,若只对普通用户设 quota,root 仍可无限写满 /var/log 分区。正确做法是:

  • 将 /var/log/audit 单独挂载到独立小分区(如 /dev/sdb1 /var/log/audit ext4 defaults,usrquota,grpquota 0 0)
  • 编辑 /etc/fstab 加 usrquota,grpquota,然后 mount -o remount /var/log/audit
  • 对 root 用户设硬限额:setquota -u root 0 2097152 0 0 /var/log/audit(单位为 KB,即 2GB 上限)
  • 配合 auditd.conf 中的 space_left = 100 和 admin_space_left = 50(单位 MB),让 auditd 在剩余空间不足时主动告警甚至暂停记录

权限与 SELinux 上下文不能错,否则轮转静默失败
logrotate 运行身份是 root,但若 /var/log/audit/ 目录权限不是 0700、audit.log 不是 0600,或 SELinux 上下文被误改(如变成 unconfined_u:object_r:var_log_t:s0),logrotate 可能无法创建新文件或重命名旧文件,且不报错。

  • 固定权限:
    chmod 0700 /var/log/audit
    chmod 0600 /var/log/audit/audit.log
  • 恢复 SELinux 上下文:
    restorecon -Rv /var/log/audit/

验证是否真生效,不能只看配置文件

Linux Ai Server
Linux Ai Server

Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。

下载
  • 强制触发一次轮转测试:logrotate -f /etc/logrotate.d/auditd
  • 查看 auditd 是否收到 SIGHUP:journalctl -u auditd | tail -5 应有 Received SIGUP 类日志
  • 检查新日志是否开始写入:ls -l /var/log/audit/audit.log*,确认时间戳更新且大小从 0 开始增长
  • 模拟写满配额:用 dd if=/dev/zero of=/var/log/audit/fill bs=1M count=2100,观察 auditd 是否报 No space left on device 并停止记录

不复杂但容易忽略

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java 网络安全
Java 网络安全

本专题聚焦 Java 在网络安全与加密通信中的应用,系统讲解常见加密算法(MD5、SHA、AES、RSA)、数字签名、HTTPS证书配置、令牌认证(JWT、OAuth2)及常见安全漏洞防护(XSS、SQL注入、CSRF)。通过实战项目(如安全登录系统、加密文件传输工具),帮助学习者掌握 Java 安全开发与加密技术的实战能力。

2025.10.13

4745

12

PHP 安全与防护
PHP 安全与防护

本专题聚焦于PHP开发中的安全问题与防御措施,详细讲解SQL注入、XSS攻击、CSRF攻击、文件包含漏洞等常见安全风险及其修复方法。通过结合实际案例,帮助开发者理解漏洞成因,掌握输入验证、会话安全、加密存储与安全编码规范,全面提升PHP网站的安全防护水平。

2025.11.04

415

21

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4070

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3473

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2673

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6490

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6122

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3573

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3045

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习