🐧Hardening en Linux - Privesc
Un correcto hardening de Linux puede eliminar la mayoría de las oportunidades de escalada de privilegios locales (si no todas). Se deben tomar las siguientes medidas, como mínimo, para reducir el riesgo de que un ataque pueda alcanzar el acceso a nivel raíz:
Actualizaciones y parches
Existen muchos exploits de escalada de privilegios rápidos y sencillos para kernels Linux desactualizados y versiones vulnerables conocidas de servicios integrados y de terceros. Realizar actualizaciones periódicas eliminará algunas de las "frutas al alcance de la mano" que se pueden aprovechar para escalar privilegios. En Ubuntu, el paquete unattended-upgrades se instala de forma predeterminada a partir de la versión 18.04 y se puede instalar manualmente en Ubuntu a partir de al menos la versión 10.04 (Lucid). Los sistemas operativos basados en Debian anteriores a Jessie también tienen este paquete disponible. En los sistemas basados en Red Hat, el paquete yum-cron realiza una tarea similar.
Gestión de configuración
Esta no es de ninguna manera una lista exhaustiva, pero algunas medidas de endurecimiento simples son:
Audita archivos y directorios escribibles y cualquier binario configurado con el bit SUID.
Asegúrese de que todos los trabajos cron y los privilegios sudo especifiquen todos los binarios utilizando la ruta absoluta.
No almacene credenciales en texto sin formato en archivos legibles para todo el mundo.
Limpia los directorios de inicio y el historial de bash.
Asegúrese de que los usuarios con pocos privilegios no puedan modificar ninguna biblioteca personalizada llamada por los programas.
Elimine todos los paquetes y servicios innecesarios que puedan aumentar potencialmente la superficie de ataque.
Considere implementar SELinux , que proporciona controles de acceso adicionales en el sistema.
Gestión de usuarios
Debemos limitar la cantidad de cuentas de usuario y de administrador en cada sistema, asegurarnos de que los intentos de inicio de sesión (válidos/no válidos) se registren y controlen. También es una buena idea aplicar una política de contraseñas segura, rotar las contraseñas periódicamente y restringir que los usuarios reutilicen contraseñas antiguas mediante el archivo /etc/security/opasswd con el módulo PAM. Debemos comprobar que los usuarios no se ubiquen en grupos que les otorguen derechos excesivos que no necesitan para sus tareas diarias y limitar los derechos de sudo según el principio del mínimo privilegio.
Existen plantillas para herramientas de automatización de la gestión de la configuración, como Puppet , SaltStack , Zabbix y Nagios , para automatizar dichas comprobaciones, y se pueden utilizar para enviar mensajes a un canal de Slack o a un buzón de correo electrónico, así como a través de otros métodos. Se pueden utilizar acciones remotas (Zabbix) y acciones de remediación (Nagios) para encontrar y corregir automáticamente estos problemas en una flota de nodos. Herramientas como Zabbix también cuentan con funciones como la verificación de suma de comprobación, que se puede utilizar tanto para el control de versiones como para confirmar que no se han alterado los binarios confidenciales. Por ejemplo, a través del archivo vfs.file.cksum .
Auditoría
Realice comprobaciones periódicas de seguridad y configuración de todos los sistemas. Existen varias líneas de base de seguridad, como las Guías de implementación técnica de seguridad (STIG) de DISA , que se pueden seguir para establecer un estándar de seguridad en todos los tipos de sistemas operativos y dispositivos. Existen muchos marcos de cumplimiento, como ISO27001 , PCI-DSS e HIPAA , que una organización puede utilizar para ayudar a establecer líneas de base de seguridad. Todas ellas deben utilizarse como guías de referencia y no como base para un programa de seguridad. Un programa de seguridad sólido debe tener controles adaptados a las necesidades de la organización, el entorno operativo y los tipos de datos que almacena y procesa (es decir, información personal de salud, datos financieros, secretos comerciales o información disponible públicamente).
Una auditoría y una revisión de configuración no reemplazan una prueba de penetración ni otros tipos de evaluaciones técnicas y prácticas, y suelen considerarse como un ejercicio de "verificación de casillas" en el que una organización "aprueba" una auditoría de controles por realizar lo mínimo indispensable. Estas revisiones pueden ayudar a complementar los análisis de vulnerabilidades y las pruebas de penetración habituales, así como los programas sólidos de gestión de parches, vulnerabilidades y configuración.
Una herramienta útil para auditar sistemas basados en Unix (Linux, MacOS, BDS, etc.) es Lynis . Esta herramienta audita la configuración actual de un sistema y proporciona consejos de refuerzo adicionales, teniendo en cuenta varios estándares. Puede ser utilizada por equipos internos, como administradores de sistemas, así como por terceros (auditores y evaluadores de penetración) para obtener una "línea de base" de la configuración de seguridad actual del sistema. Nuevamente, esta herramienta u otras similares no deben reemplazar las técnicas manuales analizadas en este módulo, pero pueden ser un complemento sólido para cubrir áreas que pueden pasarse por alto.
Después de clonar todo el repositorio, podemos ejecutar la herramienta escribiendo ./lynis audit system
y recibir un informe completo.
El análisis resultante se desglosará en advertencias:
Sugerencias:
y una sección de detalles generales del escaneo:
La herramienta es útil para informar rutas de escalada de privilegios y realizar una verificación de configuración rápida y realizará aún más verificaciones si se ejecuta como usuario root.
Conclusión
Como hemos visto, existen varias formas de aumentar los privilegios en los sistemas Linux/Unix, desde simples errores de configuración y exploits públicos para servicios vulnerables conocidos hasta el desarrollo de exploits basados en bibliotecas personalizadas. Una vez que se obtiene el acceso root, resulta más fácil usarlo como punto de apoyo para una mayor explotación de la red. El fortalecimiento de Linux (y de todos los sistemas) es fundamental para las organizaciones de todos los tamaños. Las pautas y controles de mejores prácticas existen en muchas formas diferentes. Las revisiones deben incluir una combinación de pruebas y revisiones manuales prácticas y escaneo y validación de los resultados automatizados de la configuración.
Última actualización