可能重复:
我的服务器被黑了应急
有一个文件,保持感染这个代码。 我无法弄清楚为什么。 所以我想logging谁上传或更改文件。 有没有办法logging谁上传或更改特定文件?
PS:没有FTPlogin。 我们只使用SSH和Plesk。
就在这里。 审计子系统有一些相当整齐的会计function。
运行以下命令将审核对该文件的更改:
auditctl -w /my/specificly/modified/file.txt -pw -k "suspect file change"
这将在这个文件上设置一个监视,无论何时它被写入修改都会被logging下来,并被logging得相当广泛。
你可以检查日志做:
ausearch -i -k "suspect file change"
这将返回如下输出:
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
如果你想要更强大的东西,你可以去寻找一些东西,比如说用户通常不倾向于这样做。 为了performance更具体的规则越好..
auditctl -a exit,always -F arch=b64 -S unlink -S rmdir -F auid=78 -F dir=/var/www/vhost
-F定义了filter,-S定义了系统调用,越多的filter在内核上的密集程度越低。 所以在这种情况下,我过滤了用户(apache),vhosts目录和arch。 Arch变成重要的b64是32位的64位b32。
您可以通过将规则放在/etc/audit.rules中进行长期设置。
由于您使用的是CentOS,因此您可以使用SELinux。 您可以重新标记文件像httpd_config_t像这样: chcon -v --type=httpd_config_t /the/html/file/in/question.html
然后SELinux会将一个错误logging到/var/log/audit/audit.log。 如果你以“宽容”模式运行SELinux,它将允许更改; 如果您正在“强制执行”模式下运行,则不允许更改。
看看: http : //wiki.centos.org/HowTos/SELinux了解更多。 注意:默认情况下,SELinux正在运行并在CentOS中执行,所以你只需要改变这个文件上的标签。