您的位置:首页 >如何利用inotify进行系统安全监控
发布于2026-05-03 阅读(0)
扫一扫,手机访问
在系统安全领域,实时感知文件层面的风吹草动,往往是发现入侵迹象的第一道防线。今天,我们就来聊聊如何用好 inotify 这个内核级文件监控工具,为你的关键资产装上“电子眼”。
部署 inotify 监控,核心在于精准布防。思路其实很清晰:
/etc/、/root/、/var/log/、~/.ssh/authorized_keys 这类存放配置、密钥和日志的要害位置,必须重点盯防。对它们的创建(create)、删除(delete)、修改(modify)、属性变更(attrib)和移动(move)事件进行监听,任何未授权的变更都应在第一时间暴露。/tmp/、/dev/ 这类临时目录和设备目录,常常是攻击者藏匿后门或运行恶意脚本的温床。监控这些地方的异常创建和删除行为,有助于揪出那些试图隐藏的进程。max_user_watches 等资源上限,避免触及瓶颈。理论说再多,不如动手实践。下面这套最小化落地流程,能帮你快速搭建起监控能力。
sudo apt-get install inotify-toolssudo yum install inotify-tools脚本应以最小权限运行(非 root 账户为佳),生成的日志文件权限建议设为 600。
这里提供一个可直接上手的示例,监控目标包括 /etc/passwd、/root/.ssh/authorized_keys 和 /tmp 目录,关注修改、创建、删除、属性变更和移动事件。
inotifywait -mr --timefmt ‘%F %T’ --format ‘%T %w%f %e’ \
-e modify -e create -e delete -e attrib -e move \
/etc/passwd /root/.ssh/authorized_keys /tmp | while IFS= read -r ts path evt; do
echo “[$ts] $evt $path” >> /var/log/inotify_security.log
# 简单示例:发现 /tmp 下可执行文件即告警
[[ “$path” == /tmp/* && “$evt” == *CREATE* && -x “$path” ]] && \
echo “ALERT: $path created and executable!” | mail -s “Inotify Alert” sec@example.com
done
监控点选得准,事半功倍。下表梳理了核心监控目标、风险及处置思路,可以作为你的配置清单。
| 监控目标 | 关注事件 | 典型风险 | 建议处置 |
|---|---|---|---|
| /etc/passwd、/etc/shadow、/etc/ssh/sshd_config | modify、attrib | 账户与认证被篡改、后门植入 | 立刻告警;从可信备份恢复;复核最近登录与 sudo 使用 |
| ~/.ssh/authorized_keys | create、modify | 新增公钥获取持久化 | 立即移除可疑密钥;禁用相关账号或强制改密 |
| /usr/bin、/bin、/sbin 等核心二进制 | modify、attrib | 命令劫持、rootkit | 告警并下线受影响主机;从离线介质恢复;检查 ld.so.preload 等 |
| SUID/SGID 文件(如 /usr/local/bin) | attrib | 非法提权 | 发现即降权或移除 SUID;审计变更来源 |
| /tmp、/dev/shm、/var/tmp | create、delete、move | 恶意可执行文件、隐藏文件 | 告警并隔离文件;限制 /tmp 执行权限(mount -o noexec,nosuid) |
| /var/log/ | modify、create、move | 日志清理/篡改掩盖入侵 | 触发取证与集中日志回灌;保护日志完整性(如完整性校验) |
单一的监控告警往往不够,我们需要知道“是谁干的”,并能自动做出反应。
inotify 告诉你文件变了,auditd 能告诉你谁动的。两者结合,溯源链条就完整了。
sudo auditctl -w /etc/passwd -p wa -k passwd_change
或写入 /etc/audit/rules.d/audit.rules:
-a always,exit -F path=/etc/passwd -F perm=wa -k passwd_change
sudo systemctl restart auditdausearch -k passwd_change -ts recent让安全工具之间“对话”,是提升响应效率的关键。例如,当检测到 SSH 暴力破解日志被写入时,inotify 可以捕获该写入事件,自动提取日志中的攻击源 IP,并执行封禁:
iptables -A INPUT -s <攻击IP> -j DROP
同时,脚本应立刻核查 ~/.ssh/authorized_keys 文件是否被植入了新的公钥,防止攻击者通过公钥认证绕过口令登录,形成立体防御。
任何生产环境的部署,稳定与安全都是基石。对于 inotify 监控体系,以下几点需要特别注意。
cat /proc/sys/fs/inotify/{max_user_watches,max_user_instances,max_queued_events}。根据监控范围按需增大(例如 sysctl -w fs.inotify.max_user_watches=524288),避免出现“Too many open files”或队列溢出的错误。inotifywait -m / 这样的命令监控根目录,这不仅会产生海量噪音事件,严重消耗系统资源,也会让真正的安全事件淹没在无效信息中。/var/log/inotify_security.log 本身就是高价值目标,其权限应设为 600,并仅允许特定的安全审计账户读取。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9