平时会遇到一些文件或目录被“神秘进程”删除的问题,例如之前的一个案例。
排查这类问题使用的方法一般不止一种,毕竟方法比问题多嘛^_^。今天就阐述几种排查文件增删改的方法。
方法1:audit
Audit是内核提供的一种审计工具,主要通过auditctl添加配置(策略),然后注册到kauditd内核线程,由kauditd负责具体的审计工作,并将审计内容发给auditd进程,记录到对应的日志文件。具体架构如图所示:
例如近期一个例子:/tmp目录下会定期产生一些文件,且固定大小,但不知道是哪个进程产生的
Audit可以帮助我们监视文件变化,另外我们也可以进行扩展,例如配置远程上传审计日志,对审计日志进行分析,是否有恶意调用和漏洞攻击等。小公司可以使用这种方式,大公司一般都有自研的安全agent,可以对主机安全进行实时监控。
方法2:inotify
inotify是文件系统变化通知机制,主要有inotify_init、inotify_add_watch组成。inotify_init函数主要初始化一个fd,然后inotify_add_watch添加需要监控的目录或文件以及对应的事件类型。具体架构如图所示:
使用inotify对/tmp目录进行监控效果如下:
但inotify只能监控到文件的变化,并不能捕获具体是谁引起的,即获取不到进程相关信息。
总结一下:audit是系统的审计工具,能帮助用户定位文件变化,并且能捕获到具体的进程信息,而且在主机安全和漏洞攻击等都有发挥的地方。Inotify是linux提供的一种文件系统变化通知机制,提供一些API,方便用户调用对指定文件的指定行为进行监控,但却无法获取进程信息。