如何利用Ubuntu日志进行安全审计
导读:Ubuntu日志安全审计实操指南 一 关键日志与用途 认证与会话:/var/log/auth.log(SSH登录、sudo 使用、PAM 认证等) 系统全局:/var/log/syslog、/var/log/kern.log(内核与系统事...
Ubuntu日志安全审计实操指南
一 关键日志与用途
- 认证与会话:/var/log/auth.log(SSH登录、sudo 使用、PAM 认证等)
- 系统全局:/var/log/syslog、/var/log/kern.log(内核与系统事件)
- 登录记录:/var/log/wtmp(成功登录会话)、/var/log/btmp(失败登录)、/var/log/lastlog(最近一次登录)
- 审计子系统:/var/log/audit/audit.log(由 auditd 记录系统调用与文件访问)
- 防火墙:/var/log/ufw.log(UFW 允许/拒绝)
- Web 服务:/var/log/apache2/ 或 /var/log/nginx/(访问与错误日志)
- 数据库:/var/log/mysql/error.log(访问拒绝、错误告警)
以上日志覆盖了身份鉴别、会话、内核、网络与应用的常见审计面,是开展安全审计的基础数据源。
二 快速排查与常用命令
- 认证与 sudo
- 失败与成功登录:grep -E “Failed password|Accepted” /var/log/auth.log
- 最近登录与失败统计:last -n 20;lastb | head
- sudo 使用频次:grep "sudo: " /var/log/auth.log | awk ‘{ print $4} ’ | sort | uniq -c | sort -nr
- 危险 sudo 命令:grep "sudo: " /var/log/auth.log | grep -E “rm|dd|chmod|chown”
- 系统与服务
- 实时查看系统日志:tail -f /var/log/syslog;journalctl -f
- 内核与硬件告警:grep -i “error|fail|security” /var/log/kern.log
- 指定服务日志:journalctl -u nginx -b
- Web 攻击线索
- 目录扫描与 404 风暴:grep " 404 " /var/log/nginx/access.log | awk ‘{ print $7} ’ | sort | uniq -c | sort -nr
- SQL 注入特征:grep -i “select|union|insert” /var/log/apache2/access.log
- 可疑 UA:grep -i “sqlmap|curl|wget|python” /var/log/nginx/access.log
- 审计子系统
- 按时间/类型检索:ausearch -ts today -te now;ausearch -m USER_CMD,USER_AUTH
- 按文件检索访问:ausearch -f /etc/passwd
- 报表汇总:aureport -au -i
以上命令覆盖日常审计的高频场景,可快速定位异常登录、提权尝试、Web 扫描与可疑系统调用。
三 建立持续审计与告警
- 启用内核级审计 auditd
- 安装与启动:sudo apt install auditd audispd-plugins;sudo systemctl enable --now auditd
- 关键规则示例(写入 /etc/audit/rules.d/audit.rules 或临时用 auditctl)
- 监控 sudo 执行的命令:sudo auditctl -a exit,always -F arch=b64 -S execve -F euid=0 -k sudo_command_exec
- 监控关键配置文件:sudo auditctl -w /etc/ssh/sshd_config -p wa -k ssh_config_change
- 监控 sudoers 访问:sudo auditctl -w /etc/sudoers -p rwa -k sudoers_access;sudo auditctl -w /etc/sudoers.d/ -p rwa -k sudoers_d_access
- 查询与报表:ausearch -k ssh_config_change;ausearch -k sudo_command_exec;aureport -au -i
- 强化 sudo 日志
- visudo 增加:Defaults logfile=“/var/log/sudo.log”;Defaults log_input,log_output;Defaults iolog_dir=“/var/log/sudo-io/%{ user} /%{ command} /%{ pid} ”
- 集中化与可视化
- 使用 rsyslog 做日志转发,配合 Logrotate 做轮转压缩
- 搭建 ELK/Graylog 或接入 SIEM(如 Splunk)做关联告警与可视化
- 简单阈值告警脚本(示例)
- 5 分钟内 SSH 失败超过阈值:
LOG=/var/log/auth.log; TH=5; tail -n 1000 $LOG | grep “sshd” | grep “Failed” | awk -v d=“$(date -d ‘5 minutes ago’ +‘%b %d %H:%M’)” ‘$0 > d’ | awk ‘{ print $11} ’ | sort | uniq -c | sort -nr | while read c ip; do [ $c -gt $TH ] & & echo “ALERT: $ip $c failures in 5m”; done
以上措施将离散日志转化为可查询、可报表、可告警的审计能力,便于持续监测与取证。
- 5 分钟内 SSH 失败超过阈值:
四 审计规则与报表模板
- 建议长期启用的 auditd 规则
- 文件与配置变更
- -w /etc/passwd -p wa -k identity
- -w /etc/shadow -p wa -k shadow
- -w /etc/ssh/sshd_config -p wa -k sshd_config
- -w /etc/sudoers -p rwa -k sudoers
- -w /etc/sudoers.d/ -p rwa -k sudoers.d
- 命令执行与权限变更
- -a exit,always -F arch=b64 -S execve -F euid=0 -k root_exec
- -a always,exit -S chmod -S fchmod -S fchmodat -k perm_change
- -a always,exit -S chown -S fchown -S fchownat -S lchown -k own_change
- 文件与配置变更
- 常用报表命令
- 登录认证概览:aureport -au -i
- 命令执行概览:aureport -x -i
- 文件访问概览:aureport -f -i
- 按时间窗口检索:ausearch -ts 2025-12-07 00:00:00 -te now
上述规则覆盖身份、配置、命令与权限四类高风险面,报表命令便于出具审计证据与周报。
五 合规与加固要点
- 确保 auth.log、syslog、kern.log、ufw.log、audit.log 等关键日志被集中采集、长期保留,并启用 logrotate 防止磁盘被占满
- 对公网暴露服务(SSH、Web、DB)开启登录失败告警与来源 IP 限速/封禁策略,减少暴力破解与扫描影响
- 定期审计 sudo 与 SSH 配置变更,变更前后留存审计记录与回滚方案
- 在 auth.log 与 audit.log 中重点检索异常来源 IP、非常规时间登录、非常用账户提权、对 /etc/passwd、/etc/shadow、/etc/ssh/sshd_config 的访问与修改、以及 Web 侧的 SQL 注入与目录扫描特征
通过日志留存、变更管控与异常模式识别的组合,可显著提升审计有效性与响应速度。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何利用Ubuntu日志进行安全审计
本文地址: https://pptw.com/jishu/765966.html
