
Scripts de seguridad y monitoreo para Linux
Estos son una colección de scripts de seguridad y monitoreo que puedes usar para monitorear tu instalación de Linux en busca de eventos relacionados con la seguridad o para una investigación. Cada script funciona por sí solo y es independiente de otros scripts. Los scripts pueden configurarse para imprimir sus resultados, enviarlos por correo o usar AlertR como canal de notificación.
Los scripts se encuentran en el directorio scripts/. Cada script contiene un breve resumen en el encabezado del archivo con una descripción de lo que se supone que debe hacer, cómo interpretar el resultado de la detección si no es inequívoco y los problemas conocidos. Si tiene dependencias que deben instalarse, también se enumeran, así como referencias sobre de dónde proviene la idea para este script (si está disponible).
Cada script tiene un archivo de configuración en el directorio scripts/config/ para configurarlo. Si el archivo de configuración no se encuentra durante la ejecución del script, el script recurrirá a la configuración predeterminada e imprimirá los resultados. Por lo tanto, no es necesario proporcionar un archivo de configuración.
El directorio scripts/lib/ contiene código que se comparte entre diferentes scripts.
Los scripts que usan un prefijo monitor_ mantienen un estado y solo son útiles para fines de monitoreo. Un único uso de ellos para una investigación solo resultará en mostrar el estado actual del sistema Linux y no los cambios que puedan ser relevantes para la seguridad del sistema. Si deseas establecer el estado actual de tu sistema como benigno para estos scripts, puedes proporcionar el argumento --init.
Los scripts que usan un prefijo search_ buscan indicadores de una intrusión. Estos pueden usarse con fines de investigación. Si deseas usarlos para fines de monitoreo, puedes proporcionar el argumento --monitoring para mantener un estado y solo mostrar nuevos hallazgos.
Echa un vistazo al encabezado del script que deseas ejecutar. Contiene una breve descripción de lo que este script debe hacer y qué requisitos son necesarios (si es que se necesitan). Si se necesitan requisitos, instálalos antes de ejecutar el script.
El archivo de configuración compartido scripts/config/config.py contiene configuraciones que utilizan todos los scripts. Además, cada script se puede configurar usando el archivo de configuración correspondiente en el directorio scripts/config/. Si no se encuentra ningún archivo de configuración, se utiliza una configuración predeterminada y se imprimen los resultados.
Finalmente, puedes ejecutar todos los scripts configurados ejecutando start_search.py (que se encuentra en el directorio principal) o ejecutando cada script manualmente. Se necesita un intérprete de Python3 para ejecutar los scripts.
Si deseas usar los scripts para monitorear tu sistema Linux constantemente, debes realizar los siguientes pasos:
Configura un canal de notificación compatible con los scripts (actualmente impresión, correo o AlertR).
Configura los scripts que deseas ejecutar usando los archivos de configuración en el directorio scripts/config/.
Ejecuta start_search.py con el argumento --init para inicializar los scripts con el prefijo monitor_ y permitirles establecer un estado de tu sistema. Sin embargo, esto asume que tu sistema no está actualmente comprometido. Si no estás seguro de esto, debes verificar su estado actual.
Configura una tarea cron como usuario root que ejecute start_search.py --monitoring (por ejemplo, 0 * * * * root /opt/LSMS/start_search.py --monitoring para iniciar la búsqueda cada hora). El argumento --monitoring hace que los scripts solo informen nuevos hallazgos y así evita que informen constantemente el mismo problema.
| Nombre | Script |
|---|
| Monitoreo de archivos cron | monitor_cron.py |
| Monitoreo del archivo /etc/hosts | monitor_hosts_file.py |
| Monitoreo del archivo /etc/ld.so.preload | monitor_ld_preload.py |
| Monitoreo del archivo /etc/passwd | monitor_passwd.py |
| Monitoreo de módulos | monitor_modules.py |
| Monitoreo de archivos authorized_keys de SSH | monitor_ssh_authorized_keys.py |
| Monitoreo de archivos de unidades systemd | monitor_systemd_units.py |
| Búsqueda de programas eliminados en ejecución | search_deleted_exe.py |
| Búsqueda de ejecutables en /dev/shm | search_dev_shm.py |
| Búsqueda de archivos ELF ocultos | search_hidden_exe.py |
| Búsqueda de archivos inmutables | search_immutable_files.py |
| Búsqueda de entradas lastlog faltantes en los registros utmp | search_lastlog_in_utmp.py |
| Búsqueda de programas sin archivo (memfd_create) | search_memfd_create.py |
| Búsqueda de suplantaciones de hilos del kernel | search_non_kthreads.py |
| Búsqueda de procesos iniciados por una sesión SSH ahora desconectada | search_ssh_leftover_processes.py |
| Búsqueda de flags de taint de módulos del kernel para combinaciones sospechosas | search_tainted_modules.py |
| Búsqueda de indicadores de manipulación de los registros utmp | search_utmp_tampering.py |
| Script de prueba para verificar si la alerta funciona | test_alert.py |
| Verificar integridad de paquetes .deb instalados | verify_deb_packages.py |