有没有办法让我的centos服务器监视我的/ home目录对.php文件的任何写请求,并logging写请求的文件名和时间戳?
我有一种感觉,我有人在旁边,只是想看看是否有未经授权的写作发生。
使用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等等。
你可以把它们哈希。 这不是一个完美的解决scheme,但是您可以在每个PHP文件上运行md5sum,然后将其写入文件。 然后再运行一次,将其写入文件。 你可以在两个md5sum上运行diff,看看哪些文件已经改变。
为了做recursionmd5sum, 在这里 。 对于差异, 在这里 。
您可以使用find来列出每个php文件在一个目录下,取出该列表,并将该列表传递给每个md5sum检查。
请记住,他们可能会修改这个文件,所以采取措施,以确保谁怀疑谁不能只是改变md5sum。
编辑:或者,像auditd第三方程序。
再次编辑:你甚至不需要diff,md5sum -c
我觉得这是值得的另一个答案,而不是一个编辑。
类似于我的回答,这里是一个实际的实现。 http://pastebin.com/jXPAL8dS
保存脚本,使其可执行,然后运行:
mkdir /md5s && ./md5chk
然后用cron作业运行./md5chk。 如果你已经在后台运行了,可以考虑把它pipe到墙上或者写一个日志文件(只要./md5chk >> /var/log/md5s.log)来提供正确的警报。 简单地说,在顶部添加一行
date
得到执行的时间。
有些人可能会认为这是重新发明轮子,但是