用 inotify 增强 Debian 安全性的实操方案
一 核心思路与能力边界
二 快速落地步骤
sudo apt-get update && sudo apt-get install -y inotify-toolsgrep INOTIFY_USER /boot/config-$(uname -r),期望输出 CONFIG_INOTIFY_USER=yinotifywait -mrq --timefmt '%F %T' --format '%T %w%f %e' -e modify,attrib,close_write /etcinotifywatch -r -t 60 /var/wwwinotifywait -rme modify,attrib,move,close_write,create,delete,delete_self /srv/test --exclude '^/srv/test/(large|ignore)/'/path/monitor.shnohup /path/monitor.sh &三 典型安全场景与响应动作
| 场景 | 监控路径与事件 | 建议动作 |
|---|---|---|
| 关键系统配置被改动 | /etc 的 modify、attrib、close_write | 立即记录并告警;快照备份;必要时回滚;通知值守渠道 |
| Web 目录被写入可疑文件 | /var/www 的 create、close_write | 计算哈希并隔离新文件;阻断执行权限;告警并追溯来源 |
| 用户 SSH 授权变更 | ~/.ssh/authorized_keys 的 create、modify | 立即告警;临时禁用相关账号或强制改密;核查登录来源 |
| 可疑大量文件操作 | 任意目录的 create/delete 高频 | 触发速率限制或临时封禁;联动 Fail2Ban 更新防火墙规则 |
| 日志文件被清空或轮转异常 | /var/log/ 的 delete、move、modify | 保护日志目录(chattr +a);切换至受保护日志;告警并取证 |
| 说明:inotify 可快速“看见”变化,但**无法天然识别“哪个用户”**触发;若需精确用户归因,需与 auditd 联动(见下节)。 |
四 日志审计与用户归因
/var/log/inotify-audit.log,权限 600,属主 root:adminotifywait -mr --timefmt '%F %T' --format '%T %w%f %e' -e modify,create,delete,attrib,move /etc | while read ts f e; do echo "$ts $f $e" >> /var/log/inotify-audit.log; donesudo tee /etc/audit/rules.d/file-access.rules <<'EOF' -a always,exit -F path=/etc -F perm=wa -k etc_access -a always,exit -F path=/var/www -F perm=wa -k www_access EOFsudo systemctl restart auditdausearch -k etc_access -ts recent | tail -n 50whoami 通常只能得到监控进程的运行者,不等同于实际文件改动者;关键场景以 auditd 为准。五 稳定运行与性能调优
[Unit]
Description=Inotify File System Monitor
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/inotify-monitor.sh
Restart=always
User=root
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload && sudo systemctl enable --now inotify-monitor.servicefs.inotify.max_user_watches=524288
fs.inotify.max_user_instances=1024
fs.inotify.max_queued_events=16384
sudo sysctl -p* soft nofile 65536、* hard nofile 65536