auditd通过拦截mount和umount2系统调用实现内核级挂载变更监控,需启用服务、配置持久化规则(-a always,exit -F arch=b64 -S mount/umount2 -k mount_prod)、结合ausearch分析设备、路径、用户及进程上下文以识别异常挂载。

要监控全站生产环境的 mount 挂载变更,核心是捕获内核级挂载动作本身,而非依赖命令行工具。auditd 通过拦截 mount 和 umount2 系统调用实现无绕过记录,覆盖脚本、容器、自定义二进制等所有触发方式。
确保 auditd 服务稳定运行
生产环境不能依赖临时规则或手动启停:
- 确认服务已启用并开机自启:
sudo systemctl enable --now auditd - 检查内核审计功能开启:
sudo auditctl -s | grep enabled,输出中enabled=1才有效 - 验证 auditd 日志路径和磁盘空间策略,编辑
/etc/audit/auditd.conf,设置log_file = /var/log/audit/audit.log和space_left_action = email防止日志满盘失联
配置精准、持久的挂载审计规则
规则必须写入 /etc/audit/rules.d/ 并重载,避免重启失效:
- 新建文件
/etc/audit/rules.d/20-mount-production.rules - 写入以下两行(适配 x86_64 架构):
-a always,exit -F arch=b64 -S mount -F success=1 -k mount_prod-a always,exit -F arch=b64 -S umount2 -F success=1 -k mount_prod -
-F success=1只记录成功挂载,避免失败尝试刷屏;-k mount_prod统一标签,便于全站统一检索与告警 - 加载规则:
sudo augenrules --load(自动合并、重写audit.rules并通知服务生效) - 验证加载结果:
sudo auditctl -l | grep mount_prod应有两条输出
增强识别移动与外部存储接入
仅记录系统调用不够,需快速区分是否为非法外设挂载:
- 事后筛选设备主次号:
sudo ausearch -m mount -i -k mount_prod | grep "dev=\"[0-9]\+:[0-9]\+\"" - 结合
lsblk -o NAME,TRAN,MODEL,SIZE反查设备类型,重点关注tran=usb、model=USB Flash或nvm类 NVMe 外置盘 - 检查挂载点路径:
sudo ausearch -m mount -i -k mount_prod | grep -E "(media|mnt.*usb|mnt.*ext)" - 排查 bind 挂载伪装:
sudo ausearch -m mount -i -k mount_prod | grep -i "bind",此类可能隐藏真实源设备
关联上下文定位操作主体
单条 mount 日志无法判断是否异常,必须结合用户、时间、进程链分析:
- 查执行用户与登录会话:
sudo ausearch -m mount -ts recent -i -k mount_prod | grep -E "(auid=|uid=|comm=)" - 识别非交互式来源:若
comm=systemd或comm=cron且无对应运维工单,即属高风险 - 提取完整命令行:
sudo ausearch -m mount -i -k mount_prod --input-logs | aureport -f -i --key mount_prod(需log_format = ENRICHED在auditd.conf中启用) - 比对基线时间窗口:例如凌晨 2:17 出现
mount /dev/sdc1 /mnt/backup,但当日无备份任务排期,应立即响应

















