温馨提示×

Ubuntu inotify如何检测恶意软件

小樊
45
2025-12-26 11:29:08
栏目: 智能运维

Ubuntu inotify检测恶意软件的实用方案

工作原理与定位

  • inotifyLinux 内核提供的文件系统事件机制,可实时捕获目录与文件的创建、删除、修改、属性变更等事件,适合做“文件篡改与可疑落盘”的实时告警与阻断。它并不等同于杀毒引擎,不能仅凭事件判断“是否为恶意”,但可与审计、完整性校验、反病毒引擎联动,形成主机侧入侵检测与响应闭环。

快速落地步骤

  • 安装工具
    • Ubuntu 上安装命令行工具集:sudo apt-get install inotify-tools
  • 最小可用监控脚本
    • 监控关键目录并记录事件与时间戳,示例:
      • inotifywait -mrq --timefmt ‘%F %T’ --format ‘%T %w%f %e’
        -e create -e modify -e delete -e attrib -e move
        /etc /usr/bin /usr/sbin /bin /sbin /var/www /root/.ssh
        | while read ts path event; do echo “[$ts] $event $path” >> /var/log/inotify-alert.log # 可在此处加入:邮件/企业微信/钉钉告警、隔离脚本等 done
  • 作为系统服务常驻
    • 将上述脚本保存为 /usr/local/bin/inotify-mon.sh,创建 /etc/systemd/system/inotify-mon.service
      • [Unit] Description=Inotify File Monitor After=network.target
      • [Service] ExecStart=/usr/local/bin/inotify-mon.sh Restart=always User=root
      • [Install] WantedBy=multi-user.target
    • 启用与启动:sudo systemctl daemon-reload && sudo systemctl enable --now inotify-mon.service
  • 运行与验证
    • 查看实时日志:tail -f /var/log/inotify-alert.log
    • 手动触发测试:在受监控目录创建/修改文件,确认日志与告警是否产生。

关键监控点与判定逻辑

  • 建议优先覆盖的高价值路径与判定思路如下(事件类型以 inotify 的 create/modify/delete/attrib/move 为主):
监控路径 关注事件 可能威胁 建议动作
/etc /usr/bin /usr/sbin /bin /sbin modify, attrib 系统命令被替换、后门植入 立即告警;快照取证;校验包完整性(见下节);必要时下线修复
/root/.ssh /home/*/.ssh create, modify 新增公钥、SSH 后门 告警并阻断可疑密钥登录;核查 authorized_keys 来源
/etc/crontab /etc/cron.d /etc/init.d create, modify 持久化挖矿/反弹Shell 告警并回滚变更;审查定时任务合法性
/var/www /var/lib/wordpress create, modify WebShell 落盘 告警并隔离文件;结合 WAF/日志溯源
/tmp /dev/shm create, delete 临时目录驻留恶意可执行文件 告警并清理;限制 /tmp 执行权限(noexec)
日志目录(如 /var/log) modify, attrib 日志清理/篡改以掩盖痕迹 告警并保护日志完整性(只读挂载/外部日志)
  • 判定要点
    • 短时间内在系统目录出现可执行文件(如 /tmp/.hidden)且为 create + close_write 连续事件,风险高。
    • attrib 事件伴随权限变为 4755/2755(SUID/SGID) 需重点核查。
    • /root/.ssh/authorized_keys 被修改且来源不明,极可能为入侵迹象。

溯源与自动化响应

  • 关联用户与进程溯源
    • inotify 本身不直接提供“哪个用户/进程触发的事件”,建议与 auditd 联动:
      • 配置审计规则(示例):sudo auditctl -w /etc/passwd -p wa -k passwd_change
      • 发生 inotify 告警后,用 ausearch -k passwd_change 查询对应 auid/pid/ppid 与时间戳,还原操作链。
  • 完整性校验与基线对比
    • 使用发行版包管理校验:rpm -V dpkg -V 检查被监控目录中属于包管理的文件是否被篡改(适用于 /bin /sbin /usr/bin 等)。
  • 自动响应与联动
    • 在 inotify 脚本中接入:
      • 告警通道(邮件/企业微信/钉钉/Slack Webhook)。
      • 隔离动作(将可疑文件移至隔离区并 chattr +i 防改写,或移动到只读挂载点)。
      • 临时阻断(结合 iptables/fail2ban 对来源 IP 封禁,或暂停相关服务)。
  • 反病毒引擎协同
    • 部署 ClamAV/maldet,并启用其基于 inotify 的目录监控能力,对落盘文件进行实时扫描与清除,弥补仅依赖事件判定的不足。

性能与误报控制

  • 控制监控范围:仅监控关键目录与文件,避免递归整个 /
  • 精简事件集:只订阅与风险相关的事件(如 create/modify/delete/attrib/move),减少噪声。
  • 事件去抖与聚合:对同一目标的短时间批量事件做合并告警,避免告警风暴。
  • 权限与运行账户:以 最小权限运行监控脚本;日志文件权限设为 600,仅管理员可读写。
  • 资源与稳定性:在高并发写入目录(如日志/缓存)使用更严格的过滤;必要时拆分监控进程与队列处理。

0