有没有办法让我的 centos 服务器监视我的 /home 目录中对 .php 文件的任何写入请求并记录写入请求的文件名和时间戳?
我感觉有人在四处打探,只是想看看是否有未经授权的写入发生。
答案1
使用 auditd,首先需要确保服务 auditd 正在运行
service auditd status
auditd (pid 2973) is running...
现在,如果您有许多文件,您可以使用 find 来编写审计规则。
find /home/ -type f -name '*.php' -exec auditctl -a exit,always -F path={} -F perm=rwa \;
现在您可以尝试访问一个 php 文件。
cat /home/file.php
hello world
现在你可以使用 ausearch
ausearch -f /home/file.php
----
time->Fri Jul 10 18:11:43 2015
type=PATH msg=audit(1436479903.574:224): item=0 name="/home/file.php" inode=9469 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:home_root_t:s0 nametype=NORMAL
type=CWD msg=audit(1436479903.574:224): cwd="/root"
type=SYSCALL msg=audit(1436479903.574:224): arch=c000003e syscall=2 success=yes exit=3 a0=7fff6a695805 a1=0 a2=7fff6a693710 a3=7fff6a693160 items=1 ppid=1636 pid=3299 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=1 comm="cat" exe="/bin/cat" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)
正如您在上面的输出中看到的,您有以下信息:PID、PPID、SYSCALL NUMBER、COMM 等等。
答案2
答案3
我觉得这值得另一个答案,而不是编辑。
与我的回答类似,这是一个实际的实现。 http://pastebin.com/jXPAL8dS
保存脚本,使其可执行,然后运行:
mkdir /md5s && ./md5chk
然后使用 cron 作业或其他程序运行 ./md5chk。如果您让它在后台运行,请考虑将其通过管道传输到 wall 或写入日志文件(只需 ./md5chk >> /var/log/md5s.log)以提供适当的警报。在顶部添加一行,简单地说
date
获取执行时间。
有些人可能认为这是重新发明轮子,但
- 我更喜欢这个输出
- auditd = 系统的另一个依赖项,而 md5sum 可能是预先安装的