基于Pyinotify打造系统完整性检测工具

本篇文章介绍了Pyinotify的特性、如何安装及使用示例,方便入门学习。

回顾上篇文章:

你真的会使用搜索引擎吗?

特性

Pyinotify 是一个监控文件系统变化的 Python 模块,Pyinotify 是基于一个叫 inotify 的 Linux 内核功能而开发的。inotify 是一个事件驱动通知程序,它的作用是通过系统调用将系统事件从内核态导出到用户态。Pyinotify 绑定了这些系统调用,并且在其上提供了一系列的接口实现,提供通用和抽象的方式来操作这些功能。

安装

使用 Python 的 pip 工具安装 Pyinotify 模块。

Quick start

安装好 Pyinotify 后,你可以参考下面的例子来快速的使用 Pyinotify 监控指定文件或目录变化。如果你指定了一个目录,Pyinotify 将监听这个目录下的所有文件,但不会监听子目录。

下面让我们对 / tmp 目录进行一些操作:

操作命令的同时 pyinotify 会监听到命令所产生的事件:

值得注意的是,Pyinotify 默认监听系统产生的所有事件。

默认事件字段解读如下:

Pyinotify 事件列表

使用示例

了解 Pyinotify 以及它所支持的系统事件后,我们可以覆写 Pyinotify 的事件方法,将事件输出成指定的格式。

code:

运行示例代码后,下面让我们对 / tmp 目录再次进行操作:

同时 Pyinotify 按照我们预期的结果将事件进行输出:

以上的示例代码中监听了所有事件,若想监听部分事件请修改 add_watch 参数部分:

你可以增加更多的事件方法,监控更多的系统关键目录。

总结

目前 Unix/Linux 下有许多类似的检查工具,如 Tripwire、Afick 等。这样的工具配置使用起来相对简单,但是不能重新定义系统产生的事件,事件报告需要通过邮件输出。使用 Pyinotify 可以根据使用需求进行简单开发并使用。它的好处是可以很方便的集成到各个系统,系统产生的事件数据还可以稍作整理然后推送到 ELK、OpenFalcon 等平台进行可视化展示和告警。

Pyinotify 更多的功能请参考官方用例:

https://github.com/seb-m/pyinotify/wiki/List-of-Examples

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180816G16PXX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券