Existe uma maneira de registrar quem carrega ou altera um arquivo específico? (centos) [duplicado]

2

Existe um arquivo que fica infectado com este código . Eu não consigo descobrir o porquê. Então eu quero registrar quem fazer o upload ou alterar o arquivo. Existe uma maneira de registrar quem fez o upload ou alterar um arquivo específico?

PS: não há login de FTP. Nós só usamos SSH e Plesk.

    
por nahha 08.05.2012 / 18:08

2 respostas

5

Sim, existe. O subsistema de auditoria possui alguns recursos contábeis bem legais.

A execução do seguinte comando auditará as alterações no arquivo:

auditctl -w /my/specificly/modified/file.txt -p w -k "suspect file change"

Isto irá configurar uma observação neste arquivo, sempre que ele for modificado por uma gravação, a alteração será registrada, e será registrada extensivamente.

Você pode verificar os registros:

ausearch -i -k "suspect file change"

Isso retornará a saída como:

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 

Se você quiser algo mais strong, pode optar por algo que, digamos, atenha a quaisquer exclusões de um usuário que normalmente não está inclinado a fazer isso. Para o desempenho, quanto mais específica a regra, melhor ..

auditctl -a exit,always -F arch=b64 -S unlink -S rmdir -F auid=78 -F dir=/var/www/vhost

O -F define os filtros e o -S define o syscalls, quanto mais filtros, menos intensivo ele é no kernel para rastreá-lo. Então, neste caso, eu filtro o usuário (apache), o diretório vhosts e o arch. Arch torna-se importante b64 sendo 64 bits b32 para 32 bits.

Você pode configurá-los a longo prazo colocando as regras em /etc/audit.rules.

    
por 08.05.2012 / 18:55
2

Como você está usando o CentOS, isso é algo para o qual você pode usar o SELinux. Você poderia rotular novamente o arquivo em questão como algo como httpd_config_t , assim: chcon -v --type=httpd_config_t /the/html/file/in/question.html

Em seguida, o SELinux registrará um erro em /var/log/audit/audit.log. Se você estiver executando o SELinux no modo "permissivo", permitirá a mudança; Se você estiver executando no modo "enforcing", isso não permitirá a alteração.

Dê uma olhada: link para saber mais. Nota: por padrão, o SELinux está sendo executado e aplicado no CentOS, então você deve apenas alterar o rótulo deste arquivo.

    
por 08.05.2012 / 18:32