有没有办法记录谁上传或更改了特定文件?(centos)

nah*_*hha 2 ssh hacking centos ftp

可能重复:
我的服务器被黑了 紧急情况

有一个文件会一直感染代码。我不明白为什么。所以我想记录谁上传或更改文件。有没有办法记录谁上传或更改了特定文件?

PS:没有FTP登录。我们只使用 SSH 和 Plesk。

Mat*_*Ife 5

就在这里。审计子系统有一些非常简洁的会计功能。

运行以下命令将审核对文件的更改:

auditctl -w /my/specificly/modified/file.txt -p w -k "suspect file change"
Run Code Online (Sandbox Code Playgroud)

这将在这个文件上设置一个监视,每当它被写入修改时,更改将被记录,并且被广泛记录。

您可以检查日志:

ausearch -i -k "suspect file change"
Run Code Online (Sandbox Code Playgroud)

这将返回输出,例如:

type=PATH msg=audit(05/08/2012 17:32:32.353:13118) : item=1 name=/tmp/test.txt inode=5767528 dev=fd:00 mode=file,644 ouid=root ogid=root rdev=00:00 obj=staff_u:object_r:user_tmp_t:s0 
type=PATH msg=audit(05/08/2012 17:32:32.353:13118) : item=0 name=/tmp/ inode=5767169 dev=fd:00 mode=dir,sticky,777 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:tmp_t:s0 
type=CWD msg=audit(05/08/2012 17:32:32.353:13118) :  cwd=/home/matthew/Testbed/C/fanotify 
type=SYSCALL msg=audit(05/08/2012 17:32:32.353:13118) : arch=x86_64 syscall=unlinkat success=yes exit=0 a0=0xffffffffffffff9c a1=0xb540c0 a2=0x0 a3=0x7fff50cfba20 items=2 ppid=13699 pid=2773 auid=matthew uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts0 ses=2 comm=rm exe=/usr/bin/rm subj=staff_u:sysadm_r:sysadm_t:s0 key=some file 
Run Code Online (Sandbox Code Playgroud)

如果你想要更强大的东西,你可以去做一些事情,比如监视用户通常不倾向于这样做的任何删除。对于性能,规则越具体越好。

auditctl -a exit,always -F arch=b64 -S unlink -S rmdir -F auid=78 -F dir=/var/www/vhost
Run Code Online (Sandbox Code Playgroud)

-F 定义过滤器,-S 定义系统调用,过滤器越多,内核跟踪它的强度就越小。所以在这种情况下,我过滤用户 (apache)、vhosts 目录和 arch。Arch 变得很重要 b64 是 64 位 b32 为 32 位。

您可以通过将规则放在 /etc/audit.rules 中来长期设置这些。