
Scripts de Segurança e Monitoramento Linux
Estes são uma coleção de scripts de segurança e monitoramento que você pode usar para monitorar sua instalação Linux em busca de eventos relacionados à segurança ou para uma investigação. Cada script funciona de forma independente e não depende dos outros scripts. Os scripts podem ser configurados para imprimir seus resultados, enviá-los para você por e-mail, ou usar o AlertR como canal de notificação.
Os scripts estão localizados no diretório scripts/. Cada script contém um breve resumo no cabeçalho do arquivo com uma descrição do que ele deve fazer, como interpretar o resultado da detecção se não for inequívoco e problemas conhecidos. Se houver dependências que precisam ser instaladas, elas também são listadas, assim como referências de onde a ideia para este script se originou (se disponível).
Cada script possui um arquivo de configuração no diretório scripts/config/ para configurá-lo. Se o arquivo de configuração não for encontrado durante a execução do script, o script usará as configurações padrão e imprimirá os resultados. Portanto, não é necessário fornecer um arquivo de configuração.
O diretório scripts/lib/ contém código compartilhado entre diferentes scripts.
Scripts que usam o prefixo monitor_ mantêm um estado e são úteis apenas para fins de monitoramento. Um único uso deles para uma investigação resultará apenas na exibição do estado atual do sistema Linux, e não em alterações que possam ser relevantes para a segurança do sistema. Se você quiser estabelecer o estado atual do seu sistema como benigno para esses scripts, pode fornecer o argumento --init.
Scripts que usam o prefixo search_ procuram por indicadores de comprometimento. Eles podem ser usados para fins de investigação. Se você quiser usá-los para fins de monitoramento, pode fornecer o argumento --monitoring para manter um estado e exibir apenas novas descobertas.
Dê uma olhada no cabeçalho do script que você deseja executar. Ele contém uma breve descrição do que este script deve fazer e quais requisitos são necessários (se houver). Se houver requisitos, instale-os antes de executar o script.
O arquivo de configuração compartilhado scripts/config/config.py contém configurações usadas por todos os scripts. Além disso, cada script pode ser configurado usando o arquivo de configuração correspondente no diretório scripts/config/. Se nenhum arquivo de configuração for encontrado, uma configuração padrão é usada e os resultados são impressos.
Finalmente, você pode executar todos os scripts configurados executando start_search.py (que está localizado no diretório principal) ou executando cada script manualmente. Um interpretador Python3 é necessário para executar os scripts.
Se você quiser usar os scripts para monitorar constantemente seu sistema Linux, você deve executar as seguintes etapas:
Configure um canal de notificação que seja suportado pelos scripts (atualmente impressão, e-mail ou AlertR).
Configure os scripts que você deseja executar usando os arquivos de configuração no diretório scripts/config/.
Execute start_search.py com o argumento --init para inicializar os scripts com o prefixo monitor_ e permitir que eles estabeleçam um estado do seu sistema. No entanto, isso pressupõe que seu sistema esteja atualmente não comprometido. Se você não tiver certeza disso, deve verificar seu estado atual.
Configure um cron job como usuário root que execute start_search.py --monitoring (por exemplo, 0 * * * * root /opt/LSMS/start_search.py --monitoring para iniciar a busca a cada hora). O argumento --monitoring faz com que os scripts relatem apenas novas descobertas, evitando assim que relatem constantemente o mesmo problema.
| Nome | Script |
|---|
| Monitoramento de arquivos cron | monitor_cron.py |
| Monitoramento do arquivo /etc/hosts | monitor_hosts_file.py |
| Monitoramento do arquivo /etc/ld.so.preload | monitor_ld_preload.py |
| Monitoramento do arquivo /etc/passwd | monitor_passwd.py |
| Monitoramento de módulos | monitor_modules.py |
| Monitoramento de arquivos authorized_keys do SSH | monitor_ssh_authorized_keys.py |
| Monitoramento de arquivos de unidade do systemd | monitor_systemd_units.py |
| Busca por programas em execução que foram deletados | search_deleted_exe.py |
| Busca por executáveis em /dev/shm | search_dev_shm.py |
| Busca por arquivos ELF ocultos | search_hidden_exe.py |
| Busca por arquivos imutáveis | search_immutable_files.py |
| Busca por entradas lastlog ausentes nos logs utmp | search_lastlog_in_utmp.py |
| Busca por programas sem arquivo (memfd_create) | search_memfd_create.py |
| Busca por falsificações de threads do kernel | search_non_kthreads.py |
| Busca por processos iniciados por uma sessão SSH agora desconectada | search_ssh_leftover_processes.py |
| Busca por flags de taint em módulos do kernel para combinações suspeitas | search_tainted_modules.py |
| Busca por indicadores de adulteração dos logs utmp | search_utmp_tampering.py |
| Script de teste para verificar se a notificação funciona | test_alert.py |
| Verificar integridade de pacotes .deb instalados | verify_deb_packages.py |