基于审计日志的异常行为检测实践 - 第1节
什么是审计日志?我先说说我的理解
有人问我:审计日志到底是什么?
说白了,它就是系统世界里的一份“行车记录仪”。你的服务器、应用、数据库、网络设备,每一秒都在发生各种操作。谁登录了?谁改了什么配置?谁删了文件?什么时候发生了异常?这些记录,全都写在一个个日志文件里。
我个人习惯把审计日志当成系统的“黑匣子”。不出事的时候,你可能几年都不会翻它一眼。一旦出了安全事故,它就是破案的关键线索。
举个实际例子。我之前处理过一个客户投诉:某系统半夜被篡改了关键数据。查了一圈监控、应用日志,什么都没发现。最后翻审计日志才发现,有一个不常用的运维账号,在凌晨3点用SSH登录,执行了一条删库命令。要是没审计日志,这个案子根本查不下去。
审计日志的核心定义
审计日志(Audit Log)是信息系统自动生成的一条条记录。它忠实地记录了:
- 谁(Who)——用户ID、进程名、系统账号
- 在什么时间(When)——精确到毫秒的时间戳
- 从哪里(Where)——源IP、设备、终端
- 做了什么操作(What)——增删改查、权限变更、登录登出
- 结果怎么样(Result)——成功、失败、拒绝访问
审计日志有什么用?别小看它
很多团队刚开始搞安全,总觉得审计日志是合规部门的要求,跟技术关系不大。嗯,这种想法很危险。
审计日志的作用,我总结成三个层面:
第一层:事后溯源
这是最直接的价值。出了安全事件,你得回答几个问题:
- 攻击者怎么进来的?
- 他访问了哪些系统?
- 数据有没有被带走?
- 是谁的账号被利用了?
没有审计日志,全是盲人摸象。有审计日志,你才能画出一条攻击链。
我记得有一次,客户的数据被勒索软件加密了。备份也被清了。全公司上下都很慌。我们硬是从三个月前的审计日志里,倒推出了攻击者的入侵时间窗口。后面恢复数据、修补漏洞,全凭那堆文本日志。
第二层:实时异常检测
这是这门课的核心。审计日志不是只能翻旧账。你想想看,如果能在攻击发生时就发现它,是不是更香?
比如:一个普通员工的账号,突然在凌晨3点下载了100GB数据。审计日志如果在实时流里捕捉到这种行为,就能立刻触发告警,甚至阻断操作。
说白了,审计日志就是异常行为检测的原料。没有原料,算法再牛也没用。
第三层:合规与取证
这个我就不多啰嗦了。等保、GDPR、PCI-DSS,哪个合规标准不要求审计日志?而且告的不是有日志就行,你得能查、能取、能证明日志没被篡改过。
常见审计日志类型
审计日志不是一个东西。在不同的系统层面,它长得很不一样。我习惯把它们分成几类:
| 日志类型 | 来源 | 典型记录内容 | 我重点关注什么 |
|---|---|---|---|
| 系统日志 | 操作系统(Linux /var/log、Windows Event Log) | 用户登录、进程启动、服务状态、内核消息 | 非工作时间登录、频繁的sudo切换 |
| 应用日志 | 业务系统(Nginx、Tomcat、Spring Boot) | HTTP请求、业务操作、API调用、报错堆栈 | 异常的请求体、高频错误码、奇怪的URL模式 |
| 安全日志 | 安全设备(防火墙、WAF、IDS/IPS、VPN) | 入侵告警、病毒查杀、访问控制事件 | 被阻断的流量里反复出现的源IP |
| 数据库日志 | MySQL、PostgreSQL、Oracle、MongoDB | SQL语句、事务日志、DDL/DML操作 | 批量删表、异常的慢查询、无where条件的update |
| 网络设备日志 | 路由器、交换机、防火墙 | 网络流量、连接状态、配置变更 | 端口扫描、异常的流量突增 |
你可能会问:这么多日志,全都要收吗?
嗯,这是一个好问题。我个人建议是:核心系统全量采集,边缘系统可以抽样。但安全相关的日志,比如认证、授权、权限变更、数据操作,一条都别漏。漏一条,可能就是一次安全事故的盲区。
打个比方:审计日志就像安全监控的“底片”
我做审计分析时,脑子里经常有一个画面:
每个系统操作都是一次“拍照”;
审计日志就是那一张张底片;
异常行为检测,就是给你配了一个“智能放大镜”,帮你在几百万张底片里,一眼揪出那个“不正常”的动作。
一句话总结这一章:审计日志不是简单的文本文件,它是你检测异常、回溯安全事件、满足合规要求的基石。理解它的五个W、三个层面的价值、以及常见的类型划分,是做好异常行为检测的第一步。
好了,我们先扎扎实实把基础概念理清楚。后面的章节,我会带着你一步步看日志、写规则、搭检测模型。别着急,慢慢来。