需分层监控bind mount:捕获ms_bind系统调用、监控源目录与挂载点的rwxa文件操作、审计挂载路径下可执行行为,结合ausearch识别inode跨挂载点访问、非白名单执行及批量unlinkat等异常模式。
在 bind mount 场景下实现行为无死角监控,不能只盯着挂载动作本身,而要分层覆盖:既要捕获内核级挂载/卸载调用,也要监控绑定挂载后对源目录和挂载点的文件访问、修改、执行等衍生行为。因为 bind mount 本质是 dentry 指向 inode 的重定向,攻击者可能绕过 mount 命令直接操作挂载点,所以单一审计 mount 系统调用存在盲区。
必须监控的三类关键行为
Bind Mount 的安全风险集中在“路径伪装”和“权限越界”上。需同步抓取以下三类事件:
-
挂载行为本身:包括
mount -o bind及其等价系统调用(mount系统调用中 flag 含MS_BIND); -
挂载点与源目录的双向文件操作:如写入
/mnt/bind_target实际修改的是/home/app/data,需审计该路径下所有openat、write、unlinkat、chmod等调用; -
非常规执行行为:攻击者常在 bind 挂载的目录中释放恶意二进制或脚本,应监控挂载点及其源路径下的可执行(
-p x)事件。
auditd 规则配置要点(永久生效)
将以下规则写入 /etc/audit/rules.d/bind-mount.rules,再执行 sudo augenrules --load:
- 捕获所有 bind 类挂载:
-a always,exit -F arch=b64 -S mount -F a2&0x400000 -k bind_mount
(a2&0x400000是MS_BIND标志位掩码,比仅匹配命令路径更可靠) - 监控常见 bind 挂载命令路径:
-w /bin/mount -p x -k bind_cmd-w /usr/bin/mount -p x -k bind_cmd - 对已知 bind 源目录和挂载点做细粒度监控(示例以
/home/app/data↔/mnt/bind_target为例):-w /home/app/data -p rwxa -k bind_data_src-w /mnt/bind_target -p rwxa -k bind_data_tgt
(rwxa表示读、写、执行、属性变更,覆盖绝大多数篡改场景)
识别 bind mount 下的异常行为模式
单纯日志量大,需聚焦高危信号:
- 同一
inode被多个不同挂载点访问:用ausearch -k bind_data_src -i | awk '{print $13}' | sort | uniq -c查看是否频繁出现在非预期进程上下文中; - 挂载点内出现非白名单二进制:结合
-p x规则日志,筛选出comm=sh或comm=bash启动且路径含/mnt/bind_target/的记录; - bind 挂载后立即发生大量
unlinkat或renameat:可能是清理痕迹或替换关键配置文件,用ausearch -m unlinkat,renameat -ts recent -i | grep -E "/mnt/bind_target|/home/app/data"快速定位。
补充建议:与容器运行时联动
若 bind mount 发生在 Docker/K8s 环境中,需额外关联容器上下文:
- 启用
dockerd的--log-driver=journal,并用journald关联 audit 日志中的pid和容器container_id; - 对宿主机上常见的 bind 挂载路径(如
/var/lib/kubelet/pods/、/var/run/docker.sock)单独加权告警; - 避免审计
/proc、/sys等伪文件系统,防止日志风暴——可在规则中加-F path!=/proc -F path!=/sys过滤。











