LD_PRELOAD ou similar para avisar o usuário sobre modificações em um arquivo?

1

Estou executando um script (complexo) que parece modificar em algum momento um arquivo. Eu gostaria de receber avisos sempre que o script / programa tentar escrever, chmod, chown ou executar qualquer outra tentativa que eu desaprovar. Eu quero que o programa tenha acesso normal ao resto do sistema de arquivos.

Negar acesso é uma solução, mas como tenho que executar o script como root, não funcionará. O script pode substituir qualquer configuração de controle de acesso. Mesmo se eu pudesse executar o script como não-raiz, o script poderia decidir assumir uma ramificação diferente na falha de acesso. É por isso que prefiro um aviso de acesso em vez de uma negação de acesso. Existe uma solução (por exemplo, o SE Linux)?

    
por dan3 23.10.2013 / 14:31

4 respostas

2

Existem algumas maneiras de fazer isso:

auditd

use o seguinte comando para habilitar o monitoramento auditado do arquivo (depois de certificar-se de que o serviço auditd esteja sendo executado):

auditctl -a exit,always -F path=/path/to/file

Em seguida, procure em /var/log/audit/audit.log para ver o que está acontecendo.

Use o seguinte para remover a regra quando terminar:

auditctl -d exit,always -F path=/path/to/file

fanotify

fanotify é um sistema projetado para coisas como scanners de vírus. Permite que um programa receba uma notificação de evento quando outro programa abre qualquer arquivo. O programa do monitor pode executar ações como negar acesso ao arquivo ou simplesmente registrá-lo. A vantagem aqui é que o programa de monitoramento pode simplesmente sentar no evento e não fazer nada, então o programa que está tentando abrir o arquivo apenas atrasa . Não será uma falha ou um sucesso até que o programa do monitor permita que ele continue.

O problema com esta rota é que o fanotify é novo, e não existem utilitários de linha de comando simples que você possa usar para acessá-lo. Você teria que escrever seu próprio script (se qualquer biblioteca de script tiver uma interface) ou programa.

    
por 23.10.2013 / 15:32
2

Se no Linux, chattr +i the-file impedirá qualquer operação de modificação no arquivo até mesmo em root (exceto outro chattr ).

    
por 23.10.2013 / 15:03
2

Se o seu sistema suporta dtrace (Solaris e derivados, FreeBSD, Oracle Linux, Mac OS X), um script dtrace pode registrar e até impedir as ações mencionadas nos arquivos que você deseja por qualquer usuário, incluindo root.

O Dtrace também pode ser usado para congelar o processo culpado e permitir que você decida retomar ou matá-lo.

    
por 23.10.2013 / 15:34
1

Para pequenos trabalhos de script em que o acesso fino e preciso é necessário, mas um prefere evitar lidar com ferramentas de auditoria complicadas, o utilitário "sandbox" do gentoo é excepcionalmente acessível. Em particular, ele fornece uma maneira fácil de ativar e desativar o acesso de gravação aos arquivos selecionados interativamente (para testar e, em seguida, implantar cenários).

No Gentoo, ele está disponível por padrão, mas não deve ser muito difícil de instalar em outras distros.

link

Internamente, ele é implementado na parte superior do mecanismo LD_PRELOAD puxando uma biblioteca "libsandbox.so", que intercepta e filtra as chamadas do sistema de arquivos. Ele também vem com um invólucro de shell interativo, portanto, basta digitar "sandbox" (sandbox) para colocá-lo em um shell protegido.

A funcionalidade especialmente solicitada pelo OP (falsas escritas) é suportada: link

    
por 24.10.2013 / 08:09