Linux 认证日志监控实战:从 auth.log 到暴力破解告警

Linux 认证日志(auth.log/secure)记录着每一次登录尝试,是发现暴力破解与入侵的第一现场。本文讲解认证日志的关键事件解读、结构化切割方法,以及用观测云实现"采集—看板—告警—加固"的完整监控闭环。

最佳实践
Linux 认证日志监控实战:从 auth.log 到暴力破解告警技术指南封面

Linux 认证日志(Authentication Log)是记录系统全部身份验证事件的安全日志,Debian/Ubuntu 存放在 /var/log/auth.log,RHEL/CentOS 存放在 /var/log/secure,内容覆盖 SSH 登录、sudo 提权、用户切换与 PAM 认证全过程。 只要服务器暴露在公网,这份日志里就会持续出现来自全球的暴力破解尝试——不监控它,等于蒙着眼睛守门。

核心要点速览

  • 认证日志的核心价值:回答"(用户名)在何时哪里(IP)用什么方式(密码/密钥)登录,结果如何";
  • 重点盯四类事件:Failed passwordInvalid userAccepted(成功登录)、sudo 提权;
  • 单台服务器可用 tail -f/journalctl -u ssh 查看,但监控告警必须集中化;
  • 观测云闭环:DataKit 采集 → Pipeline 切割出用户名/IP/事件类型 → 查看器与仪表板分析 → 监控器对"root 登录成功、失败次数突增"自动告警。

认证日志里该盯哪些事件?

实时查看(Ubuntu/Debian):sudo tail -f /var/log/auth.log;RHEL/CentOS 用 /var/log/secure;systemd 系统也可用 journalctl -u ssh -f

一条典型的失败登录记录:

Feb 10 15:45:14 ubuntu-lts sshd[47343]: Failed password for root from 103.106.189.143 port 33990 ssh2

这一行就回答了五个问题:何时(Feb 10 15:45:14)、(root)、结果(密码失败)、来源(103.106.189.143:33990)、方式(ssh2)。需要重点关注的事件模式:

日志特征 含义 风险解读
Failed password for root from ... root 密码尝试失败 暴力破解进行中
Invalid user xxx from ... 尝试不存在的用户名 扫描探测常见账户名
Accepted publickey/password for ... 登录成功 需核对是否本人/白名单
sudo: ... COMMAND=... sudo 提权执行命令 权限使用审计
authentication failure(PAM) 认证失败明细 配合上文定位账户

为什么必须结构化?

原始 syslog 的消息正文是非结构化文本,"哪个 IP 失败最多"这种问题靠 grep 勉强能答,但无法持续监控、无法做看板。结构化的目标是把每条日志变成统一字段:event_name(failed_login / successful_login / sudo_command...)、usernamesrc_ipauth_method 等。

观测云落地——切割:DataKit 磁盘文件采集 auth.log 后,用 Pipeline grok 脚本在采集侧完成结构化,例如匹配失败登录并提取字段:

grok(_, "Failed password for (invalid user )?%{NOTSPACE:username} from %{IP:src_ip} port %{NUMBER:port}")

同时按规则设置标准字段:含 Failed/failure 的行 status = "error",含 Accepted 的行 status = "info"time 取日志自带时间 。切割是后续一切分析的地基——未提取 status 的日志在查看器中只能显示为 公开资料未说明 。

集中化分析:查看器与仪表板

日志上报后,在日志查看器中即可完成原需写 SQL 的分析 :

  • 看趋势:切换图表模式,按 status 堆叠,观察失败登录随时间的分布;
  • 找源头:按 src_ipusername 字段分组统计,快速回答"谁在被扫、谁在扫";
  • 归并噪声:用聚类分析把海量 Failed password 记录按模式聚合,新出现的异常模式(比如开始尝试 Invalid user admin)一眼可见。

高频分析视图(失败登录 TOP IP、被攻击 TOP 用户名、成功登录明细)可从查看器导出到仪表板,形成长期的安全监控看板。

配置告警:让入侵尝试主动找上门

监控 > 监控器 > 新建监控器 > 日志检测中配置规则检测 ,典型规则示例:

  1. root 成功登录即时告警:筛选条件 username: root AND message: "Accepted",阈值设为"出现 ≥ 1 条即触发"——任何一次 root 登录都立刻通知;
  2. 暴力破解告警:筛选 status: error AND source: auth,检测"同一 src_ip 5 分钟内失败 > 20 次";
  3. 非白名单 IP 登录成功:成功登录事件中 src_ip 不在允许清单内即触发。

告警事件经告警策略路由到钉钉/企业微信/飞书通知对象,在事件中心统一查看与认领。还可扩展检测:密码方式登录成功(应全走密钥)、非白名单用户提权到 root、登录凭据填充(同一 IP 尝试大量不同用户名)等场景。

最后一步:把监控结论变成加固动作

监控发现的问题要落地为防御措施,按优先级:

  • sshd_config 设置 PermitRootLogin no 并重启 sshd,杜绝 root 直连;
  • 禁用密码登录,只留密钥认证(PasswordAuthentication no);
  • 修改默认 22 端口,减少自动化扫描命中;
  • 用防火墙/安全组收敛可访问源,必要时上 Fail2Ban 动态封禁;
  • 开启多因素认证,最小化账户权限。

加固后若监控器再次触发"root 登录成功",基本可判定配置被篡改,需立即排查。

总结

认证日志监控的完整闭环是:看懂事件 → 结构化切割 → 集中分析 → 自动告警 → 加固防御。单机 grep 只能回答"刚才发生了什么",观测云这套链路才能做到"任何服务器上的异常登录,分钟内通知到人"。

常见问题(FAQ)

Q:auth.log 每小时几千条 Failed password,正常吗?
对公网服务器完全正常——全球扫描器 7×24 小时在跑。关键不是"有没有",而是有没有针对真实存在用户名的高频尝试、以及是否出现成功登录。这正是要用监控器而非人眼盯的原因。

Q:sudo 提权操作也需要监控吗?
需要。sudo 记录是内部权限审计的关键证据,建议对"COMMAND 含敏感操作(如 visudouseradd、写 /etc)"配置日志检测规则。

Q:认证日志里会记录密码明文吗?
正常不会。sshd 与 PAM 只记录认证结果与方式,不记录密码。但若把 sshd 的 LogLevel 调到 DEBUG3 等过高级别,可能记录敏感细节,生产环境建议保持 VERBOSE 即可。

Q:多台服务器的认证日志能统一告警吗?
可以。DataKit 上报时通过 service/source 与主机标签区分来源,监控器的一条检测规则天然覆盖所有主机,事件中心会标注事件来自哪台机器。


系列阅读:SSH 日志管理与安全分析防止敏感数据进入日志

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台