Linux日志审计怎么做_系统日志审计思路

5次阅读

linux 日志审计需构建“谁、何时、从哪、做什么、结果如何”证据链,核心是分层采集、重点加固、结构化归集、异常聚焦;涵盖 auth.log、audit.log、sudo.log 等日志源,强化 sudo 落盘、auditd 持久化规则、远程集中存储,并通过字段提取、高危信号告警和轻量工具链实现高效分析。

Linux 日志审计怎么做_系统日志审计思路

Linux 日志审计不是简单翻看几个文件,而是围绕“谁、在何时、从哪来、做了什么、结果如何”建立可验证、难篡改、易分析的证据链。核心在于分层采集、重点加固、结构化归集、异常聚焦。

一、先理清关键日志源和对应行为

不同日志记录不同维度的行为,必须明确每类日志的职责边界:

  • /var/log/auth.log 或 /var/log/secure:记录所有身份验证动作——SSH 登录(成功 / 失败)、su 切换用户、sudo 提权、passwd 改密、useradd 等账户操作。这是溯源“谁干了什么”的第一现场。
  • /var/log/audit/audit.log(auditd 产出):内核级审计日志,可精确捕获系统调用(如 execve 执行命令)、文件访问(如读写 /etc/shadow)、权限变更等,不受 shell 层干扰,防绕过能力强。
  • /var/log/sudo.log(需手动启用):专用于记录 sudo 命令本身及完整参数,比 auth.log 更干净、更聚焦提权行为,适合与 rsyslog 联动发往远程服务器。
  • /var/log/btmp:仅存失败登录尝试,用 lastb 查看,是发现暴力破解的第一线索。
  • /var/log/wtmp:记录所有成功登录和登出,用 last 命令解析,可查会话时长与终端来源。

二、必须加固的三个基础环节

原始日志默认不具备审计可用性,需主动加固:

  • sudo 日志强制落盘:编辑/etc/sudoers,添加Defaults logfile="/var/log/sudo.log";确认该文件属主为 root、权限 600,并由 rsyslog 或 auditd 接管归档。
  • auditd 规则持久化 :不只用auditctl 临时加规则,要把关键规则写入 /etc/audit/rules.d/custom.rules,例如:
    -a always,exit -F arch=b64 -S execve -F euid!=uid -k privilege_escalation
    -w /etc/passwd -p wa -k identity_change
    然后运行augenrules --load 生效。
  • 远程日志集中存储:配置 rsyslog 将 auth、sudo、audit 等关键日志通过 TCP 或 RELP 协议实时转发至专用日志服务器,避免本地日志被删改。

三、日常分析要抓结构化字段和异常模式

人工扫日志效率低,应提取固定字段并设置触发条件:

  • /var/log/secure 中用 awk 提取:时间、用户、源 IP、动作(ssh/su/sudo)、命令(若含)、退出码,导出为 CSV 便于筛选。
  • 定义高危信号自动告警:
    — 非工作时间(22:00–06:00)出现 sudo 或 root shell 启动;
    — 同一 IP 5 分钟内尝试登录≥3 个不同账号;
    — 普通用户首次执行 stracedd if=/dev/sdainotifywait 等敏感工具。
  • 对关键路径做访问监控:用 auditctl -w /etc -p wa -k etc_access,或用inotifywait 配合 logger 把变动写入独立日志。

四、工具链要简洁实用,不堆砌

不必强上 ELK,中小规模可组合轻量工具:

  • 查实时事件:ausearch -m execve -i --start today | aureport -f -i
  • 筛登录异常:grep "Failed password" /var/log/auth.log | awk '{print $(NF-2)}' | sort | uniq -c | sort -nr
  • 生成周期报告:logwatch --range 'between -7 days and today' --service sshd --output html
  • 远程日志校验:sha256sum /var/log/sudo.log每日快照,比对哈希值是否被篡改。
text=ZqhQzanResources