按消息类型检索登录事件
ausearch 按审计消息类型检索事件,登录相关内容集中在三类:USER_LOGIN 记录登录结果(成功或失败)与来源地址,USER_AUTH 记录认证尝试及失败原因,USER_ACCT 记录账号与凭据相关动作。排爆破解的用法是按失败记录聚合来源与账号;合规取证的用法是按时间窗查成功登录,确认异常时间点是谁从哪个地址进来的。它与 sshd 自身的日志互为补充:审计记录字段更规整、便于脚本统计,服务日志则包含密钥指纹等连接细节。
基本信息
| 加固项 | 登录事件审计与查询 |
|---|---|
| 适用平台 | Linux(auditd,ausearch 来自 audit 包) |
| 权限要求 | root(审计日志通常仅 root 可读) |
| 达标判据 | 登录成功与失败事件可查、可出报表 |
| 关键参数 | --success、-ts/--start、-m 指定消息类型 |
典型使用场景
- 排查 SSH 爆破解:统计失败次数与来源地址
- 等保审计取证:查某个时间窗内的成功登录记录
- 排查服务账号被用于交互登录的异常情况
- 应急响应中重建“谁是首个进入者”的时间线
- 把查询结果做成周期性报表,跟踪登录失败趋势
成功与失败分开查
成功与失败分开查
ausearch -m USER_LOGIN --success yes --start today | head -20 # 今天成功的登录
ausearch -m USER_LOGIN --success no --start today | head -20 # 今天失败的登录
ausearch -m USER_AUTH --success no -ts recent | head -20 # 最近失败的认证尝试
ausearch -m USER_ACCT --start today | head -20 # 账号相关动作
ausearch -m USER_LOGIN --success no --start today | grep -o 'addr=[0-9.]*' | sort | uniq -c | sort -rn | head # 失败来源统计交叉验证服务日志
交叉验证服务日志
grep -i 'Failed password' /var/log/secure /var/log/auth.log 2>/dev/null | tail -20
grep -i 'Accepted' /var/log/secure /var/log/auth.log 2>/dev/null | tail -10
journalctl -u sshd --since today | grep -iE 'failed|accepted' | tail -20 # systemd 系统的取法
last -n 20 # 登录历史概览消息类型与关键字段
| 消息类型或字段 | 含义 | 用法 |
|---|---|---|
| USER_LOGIN | 登录结果事件 | 含 op、acct、exe、hostname/addr、res |
| USER_AUTH | 认证尝试 | 含失败原因,用于定位爆破与配置错误 |
| USER_ACCT | 账号与凭据相关动作 | 配合排查账号被改动的情况 |
| res= | 结果字段 | success 或 failed,判断的直接依据 |
| acct= | 涉及的账号名 | 按账号聚合失败次数 |
| addr=、hostname= | 来源地址与主机名 | 定位攻击来源与内网横向痕迹 |
| exe= | 触发事件的程序 | 区分 sshd、su、sudo 等入口 |
审计记录与 sshd 自身日志各有侧重:审计条目字段固定、适合脚本聚合与长期留存;sshd 日志包含连接过程、密钥指纹与认证方法等信息。调查时两处对照,能同时得到“谁、从哪来、是否成功”与“用什么方式进来的”两类事实,避免只依赖单侧记录就下结论。
参数写法在不同版本间有差异:部分较老的 audit 版本不支持 --success,需要改用 -sv yes / -sv no;时间参数 -ts 适合相对时间(recent、today),跨月或精确区间查询要用 --start 与 --end 指定明确日期,否则容易漏查或误读范围。