Linux权限审计核心是捕获真实提权行为而非权限变更本身,需通过auditd监听sudo、su等执行及root登录等内核级操作,结合规则持久化、日志实时告警与基础加固实现秒级感知与精准溯源。

Linux 权限审计的核心不是监控“权限本身是否变更”,而是捕获真实发生的提权行为——比如谁在什么时候执行了 sudo、su 或以 root 身份登录。这类行为才是攻击者横向移动或越权操作的关键痕迹,必须秒级感知、精准告警。
启用 auditd 捕获提权动作
auditd 是唯一能绕过 shell 层、直接监听内核系统调用的审计工具,不可被普通用户绕过。
- 安装并启动:
sudo yum install audit -y && sudo systemctl enable --now auditd(CentOS/RHEL)或sudo apt install auditd -y && sudo systemctl enable --now auditd(Debian/Ubuntu) - 添加审计规则到
/etc/audit/rules.d/priv-alert.rules:
-a always,exit -F path=/bin/su -F perm=x -k priv_exec -a always,exit -F path=/usr/bin/sudo -F perm=x -k priv_exec -a always,exit -F path=/bin/login -F perm=x -k priv_exec -a always,exit -F uid=0 -F perm=x -k root_exec -w /etc/sudoers -p wa -k config_change
- 重载规则:
sudo augenrules --load && sudo systemctl restart auditd - 验证:执行
sudo whoami后运行ausearch -k priv_exec | tail -3,应看到含用户、终端、命令参数的完整记录
实时解析审计日志并触发告警
不依赖复杂 SIEM,用轻量脚本即可实现秒级响应。推荐基于 inotifywait 监控日志变化 + ausearch 提取事件:
- 确保已安装:
sudo yum install inotify-tools -y(CentOS)或sudo apt install inotify-tools -y(Ubuntu) - 创建告警脚本
/usr/local/bin/audit-alert.sh,内容包含:
#!/bin/bash
while inotifywait -e modify /var/log/audit/audit.log 2>/dev/null; do
ausearch -m avc -ts recent | grep -q "key.*priv_exec" && \
logger -t "AUDIT-ALERT" "Privileged command executed" && \
echo "$(date): $(ausearch -k priv_exec -i | tail -1)" | mail -s "[ALERT] Privileged Activity" admin@example.com
done
- 赋予执行权限:
chmod +x /usr/local/bin/audit-alert.sh - 用 systemd 服务常驻运行(避免 crontab 延迟),写入
/etc/systemd/system/audit-alert.service并启用
加固基础,减少误报与绕过风险
告警再快,若基础配置松散,就容易被绕过或淹没在噪音中:
- 禁用 root 远程 SSH 登录:编辑
/etc/ssh/sshd_config,设PermitRootLogin no,然后sudo systemctl restart sshd - 限制 sudo 权限:在
/etc/sudoers中使用visudo,按最小权限原则授权,禁用%wheel ALL=(ALL) NOPASSWD: ALL类宽泛规则 - 保护审计日志:运行
sudo chown root:root /var/log/audit/audit.log && sudo chmod 600 /var/log/audit/audit.log - 开启日志完整性校验:在
/etc/audit/rules.d/中添加-w /var/log/audit/ -p wa -k audit_log,监控日志自身被篡改
补充异常登录行为识别
仅看提权命令不够,还需结合上下文判断风险等级:
- 非工作时间 root 登录:用
awk '/Accepted.*for root/ && ($2 ~ /^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)$/ && $3+0 < 7 || $3+0 > 19) {print}' /var/log/secure筛选凌晨或晚间成功登录 - 非常规 IP 登录:维护白名单(如办公网段
192.168.10.0/24),用awk '$11 !~ /^192\.168\.10\./ && /Accepted/ {print $11}' /var/log/secure抓出异常来源 - 多终端并发 root 登录:运行
w -h | awk '$1=="root"{print $2}' | sort | uniq -c | awk '$1>1',发现同一时刻多个 tty 登录


















