Como faço para detectar o que está mudando a propriedade de arquivos no Linux?

1

Eu herdei um monte de servidores Linux (Ubuntu Precise) e atualmente estou tendo problemas com a propriedade de uma pasta mudando para "root" com bastante frequência. Nós rodamos o fantoche, que muda a propriedade para o usuário, mas algo mais muda um pouco mais tarde.

Atualmente estou registrando as permissões no arquivo a cada 30 segundos para tentar diminuir um tempo para ver se há alguma coisa nos logs, etc. É um grande servidor ocupado, então sem mais informações não é fácil encontrar nada em registros.

Existe uma maneira de o Linux detectar quando uma propriedade de arquivo / pasta é alterada e detectar o processo responsável?

    
por Colin Coghill 12.08.2014 / 03:27

3 respostas

6

Acho que você pode usar auditoria para um arquivo / diretório específico ou pode escrever uma regra personalizada com base em sua exigência

        auditctl -w <path to the file you need to monitor> -p war -k test

        Where -w is for specifying file path
        -p is for permission access (read,write,execute and attribute change)
        -k key name,you can give name you can use to filter audit rule

Então você pode pesquisar usando

        ausearch -ts today -k test

Por exemplo, eu usei isso, criei este arquivo / tmp / test e depois escrevi alguns dados aleatórios

       auditctl -w /tmp/test -p warx -k test

e, em seguida, execute este comando

       ausearch -ts today -k test

      --ts for start date
      -k is for key string

Então a saída disso

  type=SYSCALL msg=audit(1407949301.821:63216): arch=c000003e syscall=191 success=no
  exit=-61 a0=eacca0 a1=3600005db7 a2=7fff15265180 a3=84 items=1 ppid=2384 pid=16921
  auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=10096
  comm="vim" exe="/usr/bin/vim" key="test"

Então, se você verificar a última linha de saída, ele mostrará que o comando executado é vim e com uid = 0, que é root

Se você quiser fazer essas alterações persistentes na reinicialização, dentro de /etc/audit/audit.rules adicione a entrada como esta

  -w /tmp/test -p warx -k test

e verifique se o serviço auditd está funcionando e funcionando

  service auditd status 

Para mais informações você pode consultar link

    
por 13.08.2014 / 13:43
4

Um rápido google revela inotify api no kernel do Linux.

Inotify (inode notify) is a Linux kernel subsystem that acts to extend filesystems to notice changes to the filesystem, and report those changes to applications

Não consigo encontrar aplicativos que permitam assistir a um arquivo diretamente com o inotify. No entanto, existe o pacote inotify-tools que permite que você acesse a API em scripts.

Ele por si só não lhe diz quem mudou o quê, mas você pode usar esta API para criar um script para reduzi-lo. Por exemplo, combinando-o com lsof e ps

    
por 12.08.2014 / 05:21
0

Desculpe, não há nada no sistema Linux padrão que faça logging em tal nível. Você provavelmente terá que escrever um script, no entanto, mesmo que seja uma tentativa de acertar ou errar.

Hmmmm .... você pode definir o bit imutável no arquivo para protegê-lo e ver quem reclama que ele não pode ser alterado:

 chattr +i filename1 ... filenamen
    
por 12.08.2014 / 04:04