Como registrar todas as gravações em arquivos php com um diretório específico?

1

Existe uma maneira de fazer com que meu servidor centos monitore meu diretório / home para quaisquer solicitações de gravação em arquivos .php e registre o nome do arquivo e o registro de data e hora da solicitação de gravação?

Tenho a sensação de que alguém está bisbilhotando e quer ver se há gravações não autorizadas acontecendo.

    
por user3019562 09.07.2015 / 23:49

3 respostas

3

usando o auditd, primeiro você precisa ter certeza de que o serviço auditd está rodando

service auditd status
auditd (pid  2973) is running...

agora, se você tiver muitos arquivos, poderá usar o Localizar para escrever suas regras de auditoria.

find /home/ -type f -name '*.php' -exec auditctl -a exit,always -F path={} -F perm=rwa \;

Agora você pode tentar acessar um arquivo php.

cat /home/file.php 
hello world

agora você pode usar 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)

como você pode ver na saída acima, você tem as seguintes informações, PID, PPID, SYSCALL NUMBER, COMM e assim por diante.

    
por 10.07.2015 / 00:15
0

Você pode misturá-los. Não é uma solução perfeita, mas você pode rodar o md5sum em cada arquivo PHP, e então escrever isso em um arquivo. Em seguida, execute-o novamente um pouco mais tarde, escreva-o em um arquivo. Você poderia executar o diff nos dois md5sums e ver quais arquivos foram alterados.

Para fazer o md5sum recursivo, aqui . Para diff, aqui .

Você pode usar find para listar cada arquivo php em um diretório, pegar essa lista e passar essa lista para cada verificador de md5sum.

Tenha em mente que eles podem modificar este arquivo, então tome medidas para garantir que qualquer um que você suspeite não possa simplesmente mudar o md5sum.

EDIT: Como alternativa, um programa de terceiros como o auditd.

EDITAR novamente: você não precisa nem de diff, md5sum -c

    
por 09.07.2015 / 23:55
0

Eu senti que isso valeria outra resposta do que uma edição.

Semelhante à minha resposta, aqui está uma implementação real. link

Salve o script, torne-o executável e executar:

mkdir /md5s && ./md5chk

Em seguida, execute ./md5chk com um cron job ou algo assim. Se você executá-lo em segundo plano, considere colocá-lo em uma parede ou gravar em um arquivo de log (apenas ./md5chk > /var/log/md5s.log) para fornecer alertas apropriados. Adicione uma linha no topo dizendo simplesmente

date 

para obter o tempo de execução.

Alguns podem ver isso como reinventar a roda, mas

  1. Eu gosto dessa saída melhor
  2. auditd = outra dependência para o seu sistema, enquanto o md5sum é possivelmente pré-instalado
por 10.07.2015 / 00:52