Auditoria de Seguridad en GNU/Linux con Lynis

Lynis: Como Hacer una Auditoría de Seguridad en GNU/Linux Paso a Paso

Muy buenas, en este post te hablaré de Lynis, una herramienta de auditoria probablemente no muy conocida entre el grueso de usuarios, pero que te puede resultar muy útil para saber, o por lo menos tener una idea aproximada, del nivel de protección o hardening de tu sistema. Antes que nada es importante aclarar que se trata de un análisis muy general, que se encarga de analizar parámetros muy dispares entre si.

Para hacer el tutorial un poco más entretenido y práctico, realizaré el test en una instalación nueva de Ubuntu 16.04, para que veas por un lado la puntuación que se obtiene desde un principio, y luego como consigo mejorar esta puntuación con algunas de las recomendaciones que nos sugiere Lynis.

En este post verás:

  1. Qué es Lynis y como funciona
  2. Como descargar e instalar Lynis
  3. Haz una auditoria de tu sistema
  4. Análisis de los resultados
  5. Algunas recomendaciones para mejorar la puntuación
  6. Explora más opciones de análisis

Que es Lynis y Como Funciona

Lynis es una herramienta de auditoria Open Source y Free Software desarrollada y ofrecida por Cisofy. Puede correr en la gran mayoría de sistemas operativos basados en Unix, como GNU/Linux, macOS, OpenBSD y FreeBSD, entre otros.

Aunque dispone de muchas opciones de análisis (incluso se puede complementar con plugins), el funcionamiento base es el de analizar una serie de aspectos del sistema y comprobar si la configuración es la correcta.

Al final, en base a los resultados obtenidos, te ofrecerá una puntuación orientativa sobre 100, lo que ellos denominan el hardening index, junto con un buen registro de todos los warnings y las medidas correctivas que te sugiere aplicar. Pero de esto ya hablamos luego al final del examen.

Dependiendo del contexto en el que te encuentres, habrá una serie de puntos que, o directamente no aplicarán, o bien no serán suficientemente importantes como para tenerlos en cuenta, por lo que el propio Lynis ya te recomiende que deshabilites los exámenes que no apliquen en tu caso, para que la puntuación sea más acertada.

Diferencias respecto a Nessus

En este sentido, el enfoque es algo diferente a Nessus, pues mientras el segundo es más un analizador de vulnerabilidades, Lynis no se centra tanto en esto (si bien, de pasada, puede llegar a proponer medidas para corregir la existencia de ellas) sino más bien en auditar diferentes aspectos del sistema, detectando configuraciones inadecuadas y proponiendo medidas correctivas.

Como Descargar e Instalar Lynis

Dispone de una versión completamente gratuita pensada para uso particular, así como una versión de pago, con la misma funcionalidad pero un modo diferente de utilizarla, pues complementa el análisis en si con un conjunto de dashboards en el que puedes ver mucho mejor representados los diferentes parámetros.

Si optas por la versión gratuita de Lynis (que es el objeto de este post), tienes dos opciones a la hora de instalarlo en tu sistema. Por un lado, en distribuciones GNU/Linux como Ubuntu, Debian o derivados lo mas probable es que los paquetes necesarios se encuentren en los repositorios oficiales.

Instalación desde los repositorios

Está es seguramente la opción más fácil y rápida. Tan solo necesitas abrir una ventana de terminal e instalar el paquete lynis mediante un simple y rápido apt install. Aquí tienes el comando.

sudo apt install lynis

Ten en cuenta que si lo instalas desde los repositorios oficiales, probablemente no habrás obtenido la versión de Lynis más reciente, y a la hora de ejecutar el análisis el mismo programa te advertirá de ello.

Instalación desde la web: Lynis Free o Enterprise

Si por el contrario quieres instalar tu mismo la versión más reciente de Lynis, entonces lo más recomendable es descargar el paquete desde la web oficial. A continuación te pongo los enlaces de descarga tanto para la versión gratuita como para la de pago.

Haz una Exploración Completa de tu Sistema

Una vez instalado, ya estarás en disposición de realizar una primera auditoria completa de tu sistema. Para ofrecerte una referencia, he realizado este primer análisis en una instalación limpia de Ubuntu 16.04, con la configuración inicial por defecto, es decir que no he instalado nada (aparte del propio Lynis, claro), ni he aplicado ninguna configuración propia.

Esto nos permitirá establecer una comparación de resultados antes y después de aplicar algunas de las medidas que te propondré luego para mejorar la puntuación. Para realizar una primera auditoria, tan solo debes teclear lo siguiente en una ventana de terminal.

sudo lynis audit system

El escaneo completo consta de varias partes entre las cuales tendrás que ir pulsando Intro manualmente (aunque más adelante te explico como configurarlo para que no pida esto) para indicar que quieres pasar a la siguiente.

A continuación te muestro un resumen (en construcción) de las diferentes fases del análisis y que se tiene en cuenta en cada una de ellas. Puede ser que te resulte algo extenso e innecesario, pero he creído interesante profundizar mas en este punto (puedes ir al apartado siguiente aquí).

#System Tools, Debian Tests

La primera parte hace una comprobación de las herramientas disponibles y posteriormente empieza los denominados Debian Tests, que son una serie de comprobaciones propias de distros basadas en Debian, entre las cuales destacaría.

  • Sistema de archivos. Si se implementa cifrado en el disco duro. Esto incluye tanto el cifrado dm-crypt+ LUKS, que funciona a nivel de bloque, como el cifrado eCryptfs, que funciona a nivel de sistema de archivos. Es posible que te indique un Warning en este sentido si no dispones de ninguno de ellos.
  • Software. Si están instaladas herramientas de chequeo como apt-listbugs, apt-listchanges, checkrestart, debsecan, etc. Probablemente te indicará un Warning, pues generalmente no vienen instaladas por defecto.

#Boot and Services

Hace una serie de comprobaciones relacionadas con el arranque del sistema y otros servicios relacionados con él. Entre otras cosas, destacaría lo siguiente:

  • Si se dispone de GRUB2 como sustituto de GRUB (algo que ya suele ser así en las distros más modernas) y si dispone de protección con contraseña (en este caso probablemente te indicará un Warning, a no ser que lo hayas habilitado expresamente).
  • Systemctl. Hace un comprobación de los servicios que están corriendo, así como de los servicios habilitados en el arranque del sistema.

#Kernel

Hace una serie de comprobaciones básicas más relacionadas con el entorno del kernel. Podemos destacar las siguientes:

  • El nivel de ejecución por defecto o run level en el que opera el núcleo. Si el sistema arranca en un entorno gráfico y en modo multiusuario, probablemente el nivel de ejecución será de 5.
  • Si la CPU soporta NX/PAE. La mayoría de CPU soportan por defecto la funcionalidad PAE del Kernel. NX es un mecanismo de protección parecido al DEP en Windows, que también suele estar soportado siempre.
  • La versión del Kernel. Imagino que se refiere a si dispones de una versión actual, o que no se encuentre fuera de soporte.
  • Si existen actualizaciones disponibles en tu versión del kernel o si por el motivo que sea se requiere un reinicio del sistema.

#Users, Groups and Authentication

Se centra principalmente en:

  • Hacer una búsqueda de las cuentas administrativas del sistema.
  • La existencia del archivo sudoers y si está bien configurado. Por defecto no debería indicar ningún Warning en este sentido.

#Filesystems

Comprueba entre otros puntos:

  • Los puntos de montaje /home, /tmp, /var. Es posible que te indique una sugerencia en esta parte, puesto que suele ser una buena practica mantener estos directorios en particiones separadas.

#Ports and Packages

En esta fase, las comprobaciones se centran principalmente en los siguientes puntos.

  • Disponibilidad de un gestor de paquetes.
  • Existencia de un repositorio de seguridad en el archivo sources.list. Este es generalmente de donde proceden las actualizaciones importantes de seguridad, y suele ser mantenido por el equipo de seguridad de cada distribución.
  • Existencia de paquetes vulnerables y paquetes desactualizados respecto a la ultima versión disponible en los repositorios.
  • Existencia de una herramienta de auditoria de paquetes. En el caso de APT es apt-check, que suele venir siempre instalado.

#Software: firewalls

Comprueba si existe alguna configuración explícita del cortafuegos del kernel Iptables para filtrar las conexiones entrantes.

  • Por defecto Ubuntu dispone de UFW pero viene deshabilitado, por lo que este punto seguramente te lo marcara con un Warning.

#Databases

Por defecto, Ubuntu o Debian, en sus versiones de escritorio, no disponen de ningún software de gestión de bases de datos, por lo que este test no aplica.

  • En caso de que si dispongas de algún software como MySQL, comprobará que las configuraciones básicas sean las correctas.

#Security Frameworks

Comprueba entre otros puntos:

  • La presencia de AppArmor y si está bien configurado (viene por defecto en Ubuntu).
  • La presencia de SELinux (no viene por defecto en Ubuntu). Lo utilizan distribuciones como RedHat y Fedora en contra de AppArmor.

Analiza los Resultados

Acabada tu primera auditoria con Lynis, es hora de pasar a la parte de resultados. Esta se compone de una lista de Warnings y Sugerencias, tras la cual le sigue el Hardening index, del que ya te he hablado antes.

Lynis. Análisis de Resultados Iniciales

Para que te hagas una idea, este es el resultado que he obtenido yo en una instalación limpia de Ubuntu 16.04 en una máquina virtual, y tras haber instalado todas las actualizaciones del sistema. Ten cuenta, eso si, que el sistema analizado contaba con la opción de cifrado de disco duro LUKS, algo que influye en el resultado final.

Si lo prefieres, tambien puedes consultar a posteriori los resultados del análisis junto con el listado de todas las sugerencias en el archivo de logs generado automáticamente tras el análisis.

sudo gedit /var/log/lynis.log

Algunas Recomendaciones Para Mejorar la Puntuación

Dependiendo de como tengas configurado tu sistema, estas recomendaciones serán unas u otras, pero por tal de hacerlo del modo más “estándar” posible, me basaré en la puntuación que se obtiene en una instalación reciente de Ubuntu 16.04 LTS, sin haber aplicado ninguna modificación adicional más allá de instalar las actualizaciones pertinentes.

Evidentemente mejoras a aplicar hay muchísimas, de hecho queda patente si te fijas en detalle con el listado de recomendaciones del final del análisis. Del mismo modo, puede que no todas las mejoras sean tu caso, al igual que habrá otras tantas difíciles de implementar, sobretodo si no tienes conocimientos avanzados en administración de sistemas GNU/Linux.

Con el listado de abajo no pretendo ni mucho menos cubrir todos los puntos, sino darte una serie de recomendaciones probadas, fáciles y rápidas de aplicar, con las que tu mismo podrás comprobar una mejora considerable en los resultados. A partir de aquí, lo profundo que quieras llegar ya depende de ti, de tus necesidades y de tus conocimientos.

#Habilita el Firewall del Kernel

No solo habilitarlo, también configurarlo para denegar todas las conexiones entrantes por defecto. Al final de lo que se trata es de comunicarte con Iptables, ya sea directamente, a través de herramientas intermedias como UFW o Arno Iptables, como te indico a continuación.

  • La más fácil, sobretodo si estás en Ubuntu, es habilitar UFW, que automáticamente te creará una serie de reglas en Iptables para denegar todas las conexiones entrantes por defecto. Solo habilitando UFW, Lynis ya me ha subido el hardening index de 55 a 59.
  • Otra opción utilizar el script Arno Iptables Firewall, que en lo que se refiere a denegar las conexiones entrantes, vendría a hacer la misma función que UFW, aunque seguramente habrá diferencias en el conjunto de reglas utilizadas.

#Proteger Grub con Contraseña

Como habrás visto a lo largo del análisis, uno de los puntos aspectos que tiene en cuenta Lynis, es si el gestor de arranque Grub está protegido con contraseña. Esto te ayudará a evitar que otros usuarios puedan acceder a la línea de comandos de Grub, o que arranquen en modo de recuperación.

  • Te adjunto una guía en la que tienes detallados todos los pasos que debes seguir en caso de optar por esta medida.

#Utiliza Cifrado Completo de tu Disco Duro o del directorio Home

Esto es algo que, aunque puedes realizar a posteriori, lo mejor es realizarlo en el momento de la instalación.

  • La mayoría de distribuciones te dan la opción de utilizar LVM, junto con el cifrado completo de tu disco duro, comúnmente conocido como LUKS.
  • Otra opción alternativa es optar por cifrar el directorio Home mediante eCryptfs.

#Instala una herramienta Antimalware

Si has estado alerta a lo largo del examen, habrás visto que una de las comprobaciones que realiza Lynis es verificar si dispones de un Antivirus como ClamAV. Esto es algo que podría ser más o menos discutido, pero lo cierto es que de cara a Lynis, el hecho de contar con él te hace ganar puntos.

#Instala un Analizador de Rootkits

Otra cosa que tiene en cuenta Lynis a lo largo del escaneo (y que afecta a la puntuación global que obtienes al final) es si dispones de una herramienta de escaneo de rootkits.

#Instala un IDS o IPS

Otro de los parámetros analizados es el hecho de disponer de un sistema de detección de intrusos (IDS o Intrusion Detection System por sus siglas en ingles). Este es uno de los puntos que probablemente debes valorar si aplica en tu caso.

Mientras que en el caso de un administrador de sistemas responsable de toda una red de ordenadores es algo frecuente (sobretodo de cara a la protección de toda la red), para un uso personal probablemente no lo necesitas (aunque depende también de tus conocimientos y expectativas de seguridad)

  • Uno de los IPS más conocidos y utilizados en GNU/Linux es probablemente Snort. De momento no lo conozco de primera mano (es una asignatura pendiente) pero si en un futuro me animo a probarlo, aquí tendrás tu guía enlazada.

#Instala herramientas de chequeo de paquetes

No hace falta que los instales todos, pero a continuación te presento un listado de los que recomienda Lynis, por si te quieres informar sobre ellos y valorar si te interesan o no. En este post te hablo de algunos de ellos.

  • Con apt-listbugs podrás conocer los bugs críticos relativos a uno o varios paquetes antes de ser instalados mediante APT.
  • La herramienta apt-listchanges te indicará los cambios más significativos antes de un upgrade mediante APT.

#Comprueba la mejora

Una vez aplicadas todas estas mejoras, o como mínimo aquellas que consideres aplicables a tu caso de acuerdo a tus necesidades, conocimientos, etc., que mejor que realizar el mismo examen y comprobar la mejora.

sudo lynis audit system

Por supuesto que hay muchas otras mejoras que puedes aplicar, pero se trata de valorar realmente cuales puedes aplicar, de acuerdo también a la mejora real que crees que va a portar, a los conocimientos de que dispongas, etc.

Explora más Opciones de Análisis

[EN CONSTRUCCIÓN]

Anuncios

4 comments

  1. Jesús · diciembre 12

    Bueno felicitarte por este Blog y la información tan interesante que aportas. Saludos.

    Me gusta

    • Yuri · diciembre 12

      Muchas gracias por el comment Jesus!
      Me alegra saber que el blog te resulta de utilidad;)
      Espero poder publicar más a menudo..

      Me gusta

  2. Fred Cespedes · septiembre 10

    Interesante artículo ,muchas gracias por compartir .

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s