Criando um script para monitorar /root/.bashrc

0

Eu queria escrever um script para monitorar o arquivo /root/.bashrc e notificá-lo quando isso acontecer ou impedir que a alteração ocorra sem algum tipo de autenticação.

Como eu faria isso? Eu nunca escrevi um script para algo assim. Se você precisar que eu diga uma linguagem específica que eu usaria, seria o Python 2 ou o bash. Haveria uma maneira mais fácil de fazer isso?

    
por StrangeRanger 24.07.2017 / 22:57

2 respostas

0

Pyinotify, abordagem simples

Como você solicitou Python entre possíveis variações de soluções, existe o módulo pyinotify do Python. Estou usando pessoalmente o Python 3. A solução pode ser tão simples quanto python3 -m pyinotify <FILE> ou você pode escrever um script completo, se necessário.

Veja um exemplo em ação:

Script

Umapossibilidadedeumscriptpersonalizadopodeserfeitaatravésdamodificaçãodotutorialfornecidono repositório oficial do GitHub para pyinotify . Como você está preocupado apenas com modificações no arquivo, implementei o script apenas para isso, mas ele pode ser alterado para incluir outros eventos.

#!/usr/bin/env python3
import pyinotify
import sys

class EventHandler(pyinotify.ProcessEvent):
    def process_IN_MODIFY(self, event):
        print("File",sys.argv[1]," was modified:",event.pathname)

wm = pyinotify.WatchManager()
mask = pyinotify.IN_MODIFY
handler = EventHandler()
notifier = pyinotify.Notifier(wm, handler)
wdd = wm.add_watch(sys.argv, mask, rec=True)
notifier.loop()

E aqui está um pequeno teste:

Levandomaislonge

Emambososcasos,tudooquevocêprecisafazeréiniciarocomandocomprivilégiosderootpormeiode/etc/rc.localouviacron,eéisso.Asaídapodeserenviadaparaalgumtipodearquivodelogouparaenviarumanotificaçãoaousuárioadmin.Pessoalmente,eulançariadoiscomandos-umcomprivilégiosderootquegravaemumarquivodelogeoutroqueobservaoarquivodelogembuscadealteraçõeseenviaumanotificaçãodaGUIparaousuário.Possibilidadessãoinfinitasaqui,entãousesuaimaginação.

Aprocuradealteraçõespodeserfeitaatravésdamanutençãodobackupdoarquivo(talvezfeitonoiníciodoscript),eassimqueoarquivoformodificado-executediffouviapróprioscriptPythonviadifflib . Você também pode incorporar a verificação de md5 ou sha256 hashsums na equação, mas eles não são muito úteis, exceto por saber que o arquivo foi alterado. Outro problema é que a execução de um script notificador não impede alterações que possam ter ocorrido enquanto o sistema estava off-line, ou seja, se alguém inicializasse o USB ao vivo ou saísse do disco rígido e estivesse conectado à máquina dele e só modificasse o arquivo. Isso pode ser mitigado criptografando o disco rígido. Isso também significa que você provavelmente deve verificar as alterações assim que o script for iniciado.

Quanto a descobrir quem alterou o arquivo, considere a possibilidade de correlacionar a data de modificação e a data de login dos usuários como root / sudo. É claro que tenho que avisar: essa é uma tarefa um pouco sem esperança. Um usuário desonesto com habilidades de root pode alterar os logs e apagar a presença desse usuário, deixando pouca ou nenhuma indicação de quem possa ter sido. Os usuários que adquiriram poderes de root podem até alterar seu script. Concluindo, a melhor segurança para evitar que seu arquivo confidencial seja modificado é impedir que qualquer pessoa possa abrir o arquivo em primeiro lugar.

    
por Sergiy Kolodyazhnyy 25.07.2017 / 01:31
0

Isso pode funcionar: sudo inotifywatch -r /root/.bashrc

Para mais informações, consulte a página man.

    
por Camden 24.07.2017 / 23:03