OpenSCAP es otra de las herramientas que puedes usar para comprobar y mejorar la seguridad de tu instalación de Rocky Linux (o cualquier otra distribución Linux). Es un poco diferente a Lynis, y me gusta un poco menos, pero, aun así, te puede dar datos muy útiles para el «hardening» de tu servidor si los miras con mucho cuidado.
¿Qué va a hacer OpenSCAP? La evaluación comprueba el estado actual de tu sistema frente a un perfil de seguridad predefinido y solo vas a tener que tener cuidado de elegir la Security Policy adecuada para Rocky Linux 9 y luego, dentro de la opción anterior, seleccionar la Security Profile que más te interese, en mi caso un par creadas específicamente para servidores.
Puedes ver otras cosas que he hecho en el servidor en la entrada: Cómo montar un servidor Linux en Linode Akamai.
Instalamos OpenSCAP en Rocky Linux 9
Este paso es sencillo, porque los paquetes están en los repositorios oficiales de Rocky Linux.
sudo dnf install -y openscap-scanner scap-security-guide
El primer paquete instalar el escáner, y el segundo las políticas de seguridad. Pasamos de instalar scap-workbench, que lo único que nos hace es usar una interfaz gráfica.
Seleccionamos la Security Policy y la Security Profile
En el directorio /usr/share/xml/scap/ssg/content/ tienes las dos Security Policy disponibles. Hay una para RHEL 9 y otra para Rocky Linux 9. Adivina cuál hay que seleccionar: ssg-rl9-ds.xml
#Listamos el contenido del directorio
ls -1 /usr/share/xml/scap/ssg/content/
#Resultado
ssg-rhel9-ds.xml
ssg-rl9-ds.xml
Ahora tenemos que ver que perfiles podemos seleccionar. Hazlo con este comando:
oscap info /usr/share/xml/scap/ssg/content/ssg-rl9-ds.xml
Si te fijas, hay dos perfiles que nos puedes interesar. La única diferencia entre los dos, es que cada uno está indicado para un nivel de seguridad diferente, teniendo que cumplir más o menos requisitos. El Level 2 es más completo. Es el que voy a usar.
- CIS Red Hat Enterprise Linux 9 Benchmark for Level 2 – Server: Id: xccdf_org.ssgproject.content_profile_cis
- CIS Red Hat Enterprise Linux 9 Benchmark for Level 1 – Server: Id: xccdf_org.ssgproject.content_profile_cis_server_l1
Pero siéntete libre de probar el resto. Yo también probé el DISA STIG for Red Hat Enterprise Linux 9, pero tuve problemas en la salida del comando y no funciono muy bien.
Ejecutamos el análisis de seguridad
Cuando ya tenemos claro que perfil usar, lo podemos ejecutar desde la línea de comandos en nuestro servidor con:
oscap xccdf eval \
--profile xccdf_org.ssgproject.content_profile_cis \
--results-arf resultados.xml \
--report reporte.html \
/usr/share/xml/scap/ssg/content/ssg-rl9-ds.xml
- oscap xccdf eval: Llama al subcomando eval para evaluar el sistema contra un perfil de seguridad XCCDF (Extensible Configuration Checklist Description Format). Solo lo evalúa, no cambia nada en tu sistema.
- –profile xccdf_org.ssgproject.content_profile_cis: Especifica el perfil de seguridad que se utilizará para la evaluación.
- –results-arf resultados.xml: archivo en el que se guardarán los resultados de la evaluación en formato ARF (Assessment Results Format).
- –report reporte.html: Especifica el archivo de salida para el informe en formato HTML.
- /usr/share/xml/scap/ssg/content/ssg-rl9-ds.xml: Es el archivo de datos SCAP que contiene las reglas y la configuración para la evaluación.
¡Ojo! Es muy importante que NO uses en este comando el flag –remediate. Si pones eso, OpenSCAP va a intentar corregir de forma automática todos los problemas de seguridad que vaya encontrando… y probablemente tu sistema deje de funcionar tal y como lo habías instalado. Muy cuidado con esto.
Después de usar oscap xccdf eval, si quieres puedes hacer lo siguiente (aunque tampoco te lo recomiendo) para generar un script con las soluciones a los fallos que luego puedes aplicar:
sudo oscap xccdf generate fix --output script-solucion-fallos.sh --profile stig resultados.xml
- Si optas por hacer esto, te recomiendo que revises el script en detalle. De verdad. No lo implementes de manera global.
¿Qué te recomiendo hacer en vez de usar el flag –remediate o el script? Revisar uno a uno los problemas que OpenSCAP haya encontrado. Los puedes consultar en el archivo reporte.html que se habrá guardado en el /home del usuario donde hayas corrido el comando oscap.
Vale. Te vas a tu /home, y descargas en tu ordenador el archivo HTML para verlo en tu navegador en un bonito formato. Empieza el OpenSCAP Evaluation Report.
Nada más empezar verás el apartado Compliance and Scoring, donde te dirá las reglas que has pasado, y en las que has fallado. También la severidad de las reglas que has fallado (atento a las High) y te dará una puntuación. El resultado que ves en la siguiente imagen (un 63 %), sale después de haber usado Lynis en el mismo sistema y haber obtenido un 87 en su puntuación… ¿Qué pasa aquí? Pues que hay muchos falsos positivos y muchas reglas que no se pueden aplicar a mi sistema. Por eso te digo que es una locura usar los mecanismos automáticos de OpenSCAP para corregir todos los fallos sin haberlos mirado uno a uno.
Te recomiendo que filtres las reglas mediante la sección Rule Overview por error y fail.
¿Te pongo un par de ejemplo de algunos errores que son falsos positivos?
- Tengo instalado AIDE en mi sistema para que corra todos los días con un trabajo cron, pero en estos resultados me dice que no lo tengo activo ¿?
- También me dice que Configure SSH to use System Crypto Policy: y lo tengo configurado en el servidor SSH, pero no en el directorio que revisa OpenSCAP con sus scripts.
- Tengo los banner SSH configurados, pero no tengo el mismo texto que indican en OpenSCAP.
- Me salen errores en Firewalld porque no está activado. Ok, pero es que tengo otro firewall instalado, CSF, LFD.
- También me dice que desinstale httpd o dovecot… ¿Por qué debería hacerlo si los estoy usando? ¿Te imaginas si aplicas el script para arreglar todos tus problemas propuesto por OpenSCAP y te cargas tu servidor web? Tela.
- También me salen muchos errores en la configuración SSH, que he pasado con creces en Lynis y que he comprobado que están bien implementados.
- Y, finalmente, salen muchos errores en la auditoría con AUDITD, porque no coinciden las reglas que sugiere OpenSCAP con las que yo tengo instaladas (https://github.com/Neo23x0/auditd). En la mayoría de los casos tengo las mismas reglas, pero difieren en algunos parámetros y el script no las reconoce. Solo añado algunas de las recomendaciones, el resto son falsos positivos.
Por eso te digo que las revises una a una. Solo tienes que pinchar en alguna de las reglas. Un ejemplo. He fallado en Ensure journald is configured to send logs to rsyslog. Vale. Si pinchas en la regla, saldrá algo como esto:
Te dice por qué tienes que cumplirlo. Te dice que rutas está comprobando al hacer análisis y que está analizando y con qué patrones. Y si te fijas en los dos botones verdes. Tienes la posibilidad de ver un script que te arregla el fallo de manera automática en tu sistema mediante SHELL. O generar una solución mediante Ansible. En cualquiera de las dos, tienes que comprobar que va a funcionar bien. O puedes intentar arreglarlo tú mismo usando algún buscador o ChatGPT.
De cualquier manera. Estas soluciones son más granulares y tienes menos posibilidades de cargarte tu sistema en tu intento de hacerlo más seguro. Haz siempre un backup de los archivos que vayas a cambiar. Por seguridad. Y ten una copia de seguridad de tu servidor.
Conclusión
Usa OpenSCAP con cabeza. No te vuelvas loco. Revisa uno a uno los resultados de la prueba y vete poco a cambiando tu sistema Rocky Linux. Haz siempre copias de seguridad de las cosas que vayas a cambiar.
Ni se te pase por la cabeza (a no ser que ya tengas experiencia con la herramienta y conozcas muy bien tu sistema), usar las herramientas automáticas como el flag –remediate o el script generado por oscap xccdf generate fix (sobre todo sin haberlo revisado bien).
Empieza usando Lynis en tu sistema, que es menos liosos y te da consejos muy sabios. Te recomiendo que uses logwatch para controlar tus logs, instalar RKhunter para comprobar Rootkits, Maldet y ClamAV para malware y virus (para servidores de correo), instalar un Firewall como CSF, un HIDS como OSSEC o mejorar la seguridad de SSH, Apache o MariaDB o los parámetros del Kernel.
Referencias: