认证事件配对
单看一条登录日志说明不了问题。把失败与成功记录按来源地址和账号配对,才能看清一次入侵尝试的节奏:先在某个时间窗内密集试错,再在某个时刻成功。配对键通常取来源 IP 加账号,观察窗口是失败序列到成功记录之间的时间间隔。
基本信息
| 配对键 | 来源 IP 加账号 |
|---|---|
| 失败关键字 | Failed password、Invalid user |
| 成功关键字 | Accepted password、Accepted publickey |
| 日志位置 | Debian 系 /var/log/auth.log,RHEL 系 /var/log/secure |
| 轮转文件 | auth.log.1 与 .gz 压缩包需要一并检索 |
| 时间口径 | 统一到主时间线使用的时区 |
典型使用场景
- 判断某个来源 IP 最终是否登录成功
- 统计单个账号被尝试的次数与来源分布
- 区分口令登录与密钥登录的成功记录
- 定位爆破成功之后的第一跳动作
- 为封锁与加固策略提供来源清单
最小示例
最小示例
grep -E 'Failed password|Accepted password' /var/log/auth.log | tail -30
grep '203.0.113.10' /var/log/auth.log | grep -E 'Failed|Accepted' | tail -20
zgrep -E 'Failed password|Accepted password' /var/log/auth.log.* | tail -10
grep 'Accepted publickey' /var/log/auth.log | tail -10 # 密钥登录单独看
grep -oE 'from [0-9.]+' /var/log/auth.log | sort | uniq -c | sort -rn | head
grep -c 'Failed password' /var/log/auth.log # 失败总次数事件与关注点
| 事件 | 含义 | 关注点 |
|---|---|---|
| Failed password | 口令认证失败 | 密度与来源集中度 |
| Invalid user | 用户名不存在 | 说明在尝试猜账号 |
| Accepted password | 口令登录成功 | 来源是否就是刚才失败的 IP |
| Accepted publickey | 密钥登录成功 | 需核对密钥的授权来源 |
| Connection closed | 连接被关闭 | 配合 preauth 判断扫描行为 |
| session opened | 会话建立 | 成功后是否真的有交互 |
一次成功登录不等于攻击者已经交互:要看是否伴随会话建立、后续命令与流量;单看 Accepted 行只能说明认证通过。
只统计当前日志会漏掉早期轮转文件,长时间跨度的事件应把 .1 与 .gz 一并纳入检索。
排查过程中反复尝试登录会污染日志;测试用的账号、口令与来源都要在记录中写明,避免与分析对象混淆。