
Script di sicurezza e monitoraggio per Linux
Questa è una raccolta di script di sicurezza e monitoraggio che puoi utilizzare per monitorare la tua installazione Linux per eventi legati alla sicurezza o per un'indagine. Ogni script funziona autonomamente ed è indipendente dagli altri. Gli script possono essere configurati per stampare i risultati, inviarteli tramite email o utilizzare AlertR come canale di notifica.
Gli script si trovano nella directory scripts/. Ogni script contiene un breve riepilogo nell'intestazione del file con una descrizione di ciò che dovrebbe fare, come interpretare il risultato della rilevazione se non univoco e problemi noti. Se ha dipendenze che devono essere installate, vengono elencate, così come i riferimenti alla fonte dell'idea per questo script (se disponibili).
Ogni script ha un file di configurazione nella directory scripts/config/ per configurarlo. Se il file di configurazione non viene trovato durante l'esecuzione dello script, lo script utilizzerà le impostazioni predefinite e stamperà i risultati. Quindi non è necessario fornire un file di configurazione.
La directory scripts/lib/ contiene codice condiviso tra diversi script.
Gli script che utilizzano un prefisso monitor_ mantengono uno stato e sono utili solo per scopi di monitoraggio. Un singolo utilizzo per un'indagine mostrerà solo lo stato attuale del sistema Linux e non le modifiche che potrebbero essere rilevanti per la sicurezza del sistema. Se desideri stabilire lo stato attuale del sistema come benigno per questi script, puoi fornire l'argomento --init.
Gli script che utilizzano un prefisso search_ cercano indicatori di compromissione. Questi possono essere utilizzati per scopi di indagine. Se desideri utilizzarli per scopi di monitoraggio, puoi fornire l'argomento --monitoring per mantenere uno stato e visualizzare solo nuovi risultati.
Dai un'occhiata all'intestazione dello script che desideri eseguire. Contiene una breve descrizione di ciò che lo script dovrebbe fare e quali requisiti sono necessari (se necessari). Se sono necessari requisiti, installali prima di eseguire lo script.
Il file di configurazione condiviso scripts/config/config.py contiene impostazioni utilizzate da tutti gli script. Inoltre, ogni script può essere configurato utilizzando il file di configurazione corrispondente nella directory scripts/config/. Se non viene trovato alcun file di configurazione, viene utilizzata un'impostazione predefinita e i risultati vengono stampati.
Infine, puoi eseguire tutti gli script configurati eseguendo start_search.py (che si trova nella directory principale) o eseguendo manualmente ciascuno script. Per eseguire gli script è necessario un interprete Python3.
Se desideri utilizzare gli script per monitorare costantemente il tuo sistema Linux, devi eseguire i seguenti passaggi:
Configura un canale di notifica supportato dagli script (attualmente stampa, email o AlertR).
Configura gli script che desideri eseguire utilizzando i file di configurazione nella directory scripts/config/.
Esegui start_search.py con l'argomento --init per inizializzare gli script con il prefisso monitor_ e far loro stabilire uno stato del sistema. Tuttavia, ciò presuppone che il sistema non sia compromesso al momento. Se non ne sei sicuro, dovresti verificarne lo stato attuale.
Imposta un cron job come utente root che esegue start_search.py --monitoring (ad esempio, 0 * * * * root /opt/LSMS/start_search.py --monitoring per avviare la ricerca ogni ora). L'argomento --monitoring fa sì che gli script riportino solo nuovi risultati e quindi impedisce loro di segnalare costantemente lo stesso problema.
| Nome | Script |
|---|
| Monitoraggio file cron | monitor_cron.py |
| Monitoraggio file /etc/hosts | monitor_hosts_file.py |
| Monitoraggio file /etc/ld.so.preload | monitor_ld_preload.py |
| Monitoraggio file /etc/passwd | monitor_passwd.py |
| Monitoraggio moduli | monitor_modules.py |
| Monitoraggio file SSH authorized_keys | monitor_ssh_authorized_keys.py |
| Monitoraggio file unità systemd | monitor_systemd_units.py |
| Ricerca programmi in esecuzione eliminati | search_deleted_exe.py |
| Ricerca eseguibili in /dev/shm | search_dev_shm.py |
| Ricerca file ELF nascosti | search_hidden_exe.py |
| Ricerca file immutabili | search_immutable_files.py |
| Ricerca voci lastlog mancanti nei log utmp | search_lastlog_in_utmp.py |
| Ricerca programmi senza file (memfd_create) | search_memfd_create.py |
| Ricerca impersonificazioni di thread del kernel | search_non_kthreads.py |
| Ricerca processi avviati da una sessione SSH ora disconnessa | search_ssh_leftover_processes.py |
| Ricerca flag taint dei moduli del kernel per combinazioni sospette | search_tainted_modules.py |
| Ricerca indicatori di manomissione dei log utmp | search_utmp_tampering.py |
| Script di test per verificare il funzionamento degli avvisi | test_alert.py |
| Verifica integrità dei pacchetti .deb installati | verify_deb_packages.py |