第一章:审计日志与异常检测概述

各位同学好,我是老周。今天咱们来聊聊这门课的第一个话题——审计日志和异常检测。

先讲个我自己的事吧。几年前我接手一个安全审计项目,客户说他们的系统被黑了,但翻遍所有日志什么也没发现。我去了现场才发现,他们压根没开审计功能。嗯,这其实挺常见的。很多人觉得日志是存来应付合规检查的,但说白了,它更像是系统的“黑匣子”。

什么是审计日志?

审计日志,就是系统里谁、在什么时候、从哪、干了什么、结果什么样的记录。它不是普通的业务日志,而是专门用来做事后追溯和问责的。

  • 谁:用户ID、服务账号、进程名
  • 什么时候:时间戳,最好精确到毫秒
  • 从哪:源IP、终端设备、地理位置
  • 干了什么:操作类型、执行命令、访问资源
  • 结果:成功、失败、异常中断

你想想看,一条完整的审计日志应该像一份合同签名记录:时间、地点、人物、事件、结果,一个都不能少。

为什么要做异常检测?

我举个例子。有一次我在监控一个电商平台的后台日志,发现凌晨三点有个账号连续登录了一百多次,每次都输错密码。这种模式叫“暴力破解”。如果用肉眼去翻,每天几千万条日志,根本不可能。这就是为什么我们要用异常检测——让机器帮我们发现那些“不对劲”的事。

场景 正常行为 异常行为
登录系统 工作时间内,1-3次尝试 凌晨批量登录,失败率高
文件访问 读取自己负责的部门文件 频繁访问高层人事档案
数据导出 一次导出不超过1000条 半夜导出全量用户表
命令执行 日常运维操作 执行rm -rf / 等危险命令

异常检测的核心挑战

我在实际项目里遇到过三个最头疼的问题:

  1. 标签难拿:什么是“正常”什么是“异常”,很多时候得靠人肉打标。我曾经在金融项目里,让安全团队花了整整两周标注了五万条日志,才勉强够用。
  2. 概念漂移:系统行为在变。比如双十一期间流量暴增,之前的正常阈值全都不准了。
  3. 误报率:如果模型一天给你报一千个“异常”,你就不会再信它了。

避坑提醒:我曾经见过一个团队,一上来就上深度学习模型,结果调了三个月,精度始终上不去。后来发现,他们连最基本的基线都没建好。记住:先做规则,后做模型。

本章知识体系

下面这张图,是把审计日志异常检测的整体流程串起来。你看,从最底层的日志采集,到特征提取,再到模型训练和告警响应,每一步都有它的门道。

审计日志异常检测核心流程 数据采集 日志预处理 特征提取 异常检测 告警与响应 日志源:系统、应用、网络 遵循:RFC 5424, OWASP 注意:不要采集 PII 数据 特征类型: · 时间序列特征 · 统计分布特征 · 序列模式特征 常用算法: · 孤立森林 · 自编码器 · LSTM 输出: · 风险评分 (0-100) · 异常标签 (0/1) · 根因分析建议

关键点:审计日志异常检测不是单纯的机器学习问题,而是系统工程。从日志格式统一、时序对齐、特征工程到模型上线,每一步都可能踩坑。我在项目里习惯先搭一个最简单的统计基线——比如每小时登录次数超过3倍标准差就算异常——再逐步加规则和模型。

什么时候需要上模型?

不是所有场景都需要AI。我的建议是:

  • 规则能搞定:比如禁止凌晨访问——写个if判断就够了,别折腾模型。
  • 规则搞不定:比如发现一个员工突然在周末下载了平时从没碰过的项目代码——这种模式匹配不了,需要模型去学“他到底在干嘛”。

我的习惯:先拉三个月的历史日志做基线分析,算出每个维度的均值、标准差和分位数。这一步做扎实了,后续无论是上规则还是上模型,心里都有底。