在 Linux 中如何监控被删除的文件

检查确认

要找出谁更改或者访问了监视的文件:

# ausearch -i -k [filter key]

例如:

# ausearch -i -k mail.log_yesterday
...

type=PATH msg=audit(12/12/2013 00:30:00.407:6213) : item=0 name=/opt/sun/comms/messaging64/data/log/ inode=423325 dev=fd:00 mode=dir,700 ouid=mailsrv ogid=mail rdev=00:00 
type=CWD msg=audit(12/12/2013 00:30:00.407:6213) :  cwd=/var/opt/sun/comms/messaging64/log 
type=SYSCALL msg=audit(12/12/2013 00:30:00.407:6213) : arch=x86_64 syscall=rename success=yes exit=0 a0=7fff81d5caea a1=7fff81d5cb1f a2=0 a3=0 items=4 ppid=16442 pid=16453 auid=root uid=mailsrv gid=mail euid=mailsrv suid=mailsrv fsuid=mailsrv egid=mail sgid=mail fsgid=mail tty=(none) ses=570 comm=mv exe=/bin/mv key=mail.log_yesterday 
...

在这里,我们看到了 mail.log 文件的轮换,这是由“return_job”完成的,默认情况下在 00:30 发生,并且由用户“mailsrv”运行。
我们可以看到 mail.log_yesterday 文件被 cat(进入 mail.log),被删除,并且 mail.log_current 被重命名为 mail.log_yesterday。

问题

文件不见了,并且找不到其消失的直接原因。
在CentOS/RHEL 系统中如何监控文件访问,特别是一些特殊文件如何被删除?

可以使用 Linux auditd 服务在文件的整个生命周期中对其进行监控。

www. On IT Road .com

步骤

  1. 要在 CentOS 或者 RHEL 上安装它,请运行:
# yum install audit
  1. 要在启动时启用该服务,请运行:
# chkconfig auditd on        # For CentOS/RHEL 6
# systemctl enable auditd        # For CentOS/RHEL 7

或者暂时启动它,直到下次重新启动:

# service auditd start        # For CentOS/RHEL 6
# systemctl start auditd        # For CentOS/RHEL 7

注意:systemctl restart auditd 在 RHEL7 中不起作用,因为内核以特殊方式处理 auditd。
我们将需要停止并启动该服务。

  1. 要查看特定文件以查看是否有内容触及该文件,请运行:
# auditctl -w [filename] -p rwxa  -k [filter key]

其中:
-w [filename] :查看特定文件。

-p war :写入、追加、读取的权限过滤器。

-k [filter key] : 唯一标识审计日志的过滤键。

例如:

# auditctl -w /var/opt/sun/comms/messaging64/log/mail.log_yesterday -p rwxa -k mail.log_yesterday
  1. 要列出当前的规则集,请运行:
# auditctl -l

例如:

# auditctl -l
LIST_RULES: exit,always watch=/var/opt/sun/comms/messaging64/log/mail.log_yesterday perm=rwxa key=mail.log_yesterday
日期:2020-09-17 00:13:43 来源:oir作者:oir