0

0

Linux ausearch / aureport 的审计日志过滤与周报生成脚本模板

舞姬之光

舞姬之光

发布时间:2026-02-24 12:54:12

|

347人浏览过

|

来源于php中文网

原创

最稳的失败登录查询用 ausearch --start "today 00:00:00" --end "today 23:59:59" -m login -i | grep "res=failed",时间字符串必须加双引号,否则 shell 截断报错;查归档日志需手动指定 -f 或用 zcat | ausearch --input -。

linux ausearch / aureport 的审计日志过滤与周报生成脚本模板

ausearch 按时间范围查失败登录最常用写法

直接用 --start--end 最稳,别信网上那些用 -ts/-te 缩写又不加引号的写法——shell 一碰空格就截断,查不到东西还怪日志没记录。

  • ausearch --start "today 00:00:00" --end "today 23:59:59" -m LOGIN -i | grep "res=failed" —— -i 解析 UID/GID,-m LOGIN 锁定登录事件类型
  • 时间字符串必须加双引号,否则 today 00:00:00 被当两个参数,ausearch 报错 Invalid date format
  • 别用 now-7days 这类相对写法查周报:它按秒级计算,跨夏令时或系统时间跳变时会漏掉几小时日志
  • 如果审计日志轮转过(/var/log/audit/audit.log.1),ausearch 默认只查当前 audit.log,得加 -f /var/log/audit/audit.log.1 手动指定

aureport 生成失败登录统计时字段选错就白跑

aureport-k(key)、-m(message type)、-i(interpret)三者顺序和组合决定输出是否可用,尤其统计失败登录时,-m LOGIN 必须带,否则 -i 解出来的用户字段全是数字,没法聚合。

  • 正确命令:aureport -m LOGIN -i --failure --summary | grep "acct=" —— --failure 过滤 res=failed,--summary 按字段归总,grep "acct=" 排除无关行
  • 错误示范:aureport -i --failure --summary —— 不指定 -m LOGIN,结果混着 SYSCALL、CRED_ACQ 等事件,acct= 字段压根不出现在失败登录里
  • aureport -m LOGIN -i --start "last week" --end "today" 不能直接导出 CSV,它默认用空格对齐,字段含空格(如用户名带空格)就错位;真要进 Excel,得用 --format csv,但注意它不自动加引号,含逗号的字段会裂开

用 shell 脚本拼周报时 audit.log 轮转路径容易硬编码错

审计日志轮转不是简单后缀加数字,auditd 默认用 audit.log.N(N 从 1 开始),但 max_log_file_action=rotate 时可能生成 audit.log.1.gz,而 ausearch -f 不支持解压读取 gz 文件——脚本里直接写死 /var/log/audit/audit.log.1 会漏掉压缩归档里的事件。

Scribble Diffusion
Scribble Diffusion

使用AI将你的草图变成精致的图像

下载
  • 先查真实存在的日志文件:ls -t /var/log/audit/audit.log* | head -n 5,再用循环逐个 ausearch -f 处理,别只扫 .1
  • 遇到 .gz 文件,用 zcat + ausearch --input - 替代:zcat /var/log/audit/audit.log.1.gz | ausearch --input - -m LOGIN -i --failure
  • 脚本开头加 export TZ=UTC —— 否则本地时区 + ausearch --start "last week" 在跨时区服务器上可能算错七天边界
  • aureport 不接受管道输入,所以汇总多日数据只能先合并原始 log 行(用 ausearch -m LOGIN -i --failure --start X --end Y > tmp.log),再喂给 aureport -f tmp.log

生成周报 PDF 或邮件正文前必须过滤掉 auditd 自身重启事件

每次 systemctl restart auditd 或服务崩溃恢复,都会在日志里插一条 type=DAEMON_START,它带 acct=rootres=success,但跟人无关——不剔除的话,周报里“root 成功登录”次数虚高,运维看了第一反应是被黑了。

  • 在最终输出前加过滤:... | grep -v "type=DAEMON_START\|type=CONFIG_CHANGE\|msg=audit\([0-9]\+\): ANOM_ABEND"
  • aureport -m LOGIN 默认不包含 DAEMON_START,但如果你用 ausearch 原始抓取再自己 parse,就得手动 skip 这些 type
  • 别依赖 acct!=root 过滤——有些系统服务用 root 权限调 PAM 登录(比如某些 sudo 配置),该留还得留,重点看 typemsg 字段组合
  • PDF 生成环节建议用 wkhtmltopdf 直接转 HTML 表格,别用纯文本塞进 enscript —— 中文或长用户名会导致列宽崩坏,打印出来全是乱码

事情说清了就结束。真正麻烦的是 auditd 配置本身:比如 log_format = ENRICHED 开关会影响 -i 解析结果,还有 SELinux enabled 时部分事件字段为空——这些不在脚本层能绕开。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

866

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

452

2024.06.27

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

638

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

217

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1558

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

642

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

1027

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

980

2024.04.29

苹果官网入口与在线访问指南_中国站点快速直达与iPhone查看方法
苹果官网入口与在线访问指南_中国站点快速直达与iPhone查看方法

本专题汇总苹果官网最新可用入口及中国站点访问方式,涵盖官网直达链接、iPhone官方页面查看方法与常见访问说明,帮助用户快速进入苹果官方网站,便捷了解产品信息与官方服务。

2

2026.02.24

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.6万人学习

Git 教程
Git 教程

共21课时 | 3.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号