Cómo instalar y utilizar el escáner de vulnerabilidades Vuls en Ubuntu 22.04
Vuls es un escáner de vulnerabilidades sin agente, gratuito y de código abierto para Linux y FreeBSD. Vuls está escrito principalmente en Go y puede ejecutarse en cualquier lugar. Puedes ejecutar Vuls en Cloud, on-premise y Docker, y es compatible con las principales distribuciones. Vuls proporciona un escaneado de alta calidad compatible con múltiples bases de datos de vulnerabilidades, como NVD, JVN, OVAL, RHSA/ALAS/ELSA/FreeBSD-SA.
Con Vuls, puedes escanear múltiples sistemas operativos con múltiples métodos. Puedes escanear el local de tu host, y también puedes escanear hosts/servidores remotos vía SSH. También proporciona múltiples métodos para escanear, un escaneo rápido que no requiere privilegios de root, y un escaneo profundo que requiere privilegios de root. Vuls puede escanear varios servidores de destino a la vez. Cuando el escaneo haya terminado, puedes enviar el resultado por Email y Slack.
En este tutorial, instalarás Vuls -un escáner de vulnerabilidades de código abierto y sin agentes- en un servidor Ubuntu 22.04. También configurarás Vuls creando el archivo de configuración y construyendo las bases de datos de Vuls mediante las herramientas de línea de comandos proporcionadas por Vuls. Después, también escanearás tu servidor con Vuls y escanearás el servidor remoto mediante SSH y Vuls.
Este tutorial también incluye la instalación e integración de VulsRepo -una aplicación web que te permite mostrar los resultados del escaneo de Vuls a través del navegador web- con Vuls.
Requisitos previos
Para completar esta guía, debes asegurarte de que tienes los siguientes requisitos:
- Un servidor Linux que ejecute el servidor Ubuntu 22.04 – En este ejemplo se utilizará una máquina Ubuntu con el nombre de host‘vuls‘ y la dirección IP‘192.168.5.20‘.
- Un usuario no root con privilegios de administrador sudo/root.
- Se utilizará un servidor adicional como máquina de destino para el escaneo remoto de servidores a través de Vuls.
Con estos requisitos listos, ya puedes empezar a instalar Vuls en tu máquina Ubuntu.
Instalación de Vuls mediante el script instalador
Vuls es un escáner de seguridad que se puede utilizar para escanear las principales distribuciones de Linux, FreeBSD, en la nube, en las instalaciones, y también es compatible con Docker. Vuls puede instalarse en varios sistemas operativos manualmente o mediante un script instalador, y también puede instalarse con Docker.
En esta sección, instalarás Vuls automáticamente en una máquina Ubuntu 22.04 mediante el script instalador de Vuls.
Introduce el siguiente comando para instalar Vuls en tu máquina. Esto descargará el script instalador de Vuls‘install.sh‘ y lo ejecutará en tu servidor.
bash <( curl -s https://raw.githubusercontent.com/vulsio/vulsctl/master/install-host/install.sh )
A continuación se muestra una salida similar que se imprimirá en tu terminal.
Así, el script instalador de Vuls ‘install.sh’ realizará las siguientes tareas:
- Instalar dependencias básicas como gcc, git, wget, curl y la herramienta de base de datos sqlite3.
- Instalar Go la última versión manualmente desde el paquete binario.
- Compilar e instalar Vuls con algunas herramientas adicionales como go-cti, go-kev, go-exploitdb, go-msfdb, go-cve-dictionary, goval-dictionary y gost.
Cuando finalice la instalación, el archivo binario vuls y las demás herramientas se almacenarán en el directorio«/usr/local/bin«.
Introduce el siguiente comando para verificar la lista de archivos binarios en el directorio ‘ /usr/local/bin/‘.
ls /usr/local/bin/
Deberías recibir una salida como ésta – Obtendrás el archivo binario vuls, go-cti, go-kev, go-exploitdb, go-msfdb, go-cve-dictionary, goval-dictionary y gost.
Con esto, ya has instalado Vuls en tu máquina Ubuntu mediante el script instalador. En el siguiente paso, empezarás a configurar la instalación de Vuls.
Configurar el escáner de vulnerabilidades Vuls
Antes de utilizar Vuls, debes definir y crear el archivo de configuración para Vuls y configurar el directorio de datos que se utilizará para almacenar los datos de Vuls.
En esta sección, configurarás el directorio de datos de Vuls en ‘/usr/share/vuls-data’ y crearás un nuevo archivo de configuración de Vuls‘config.toml‘. También definirás varias bases de datos CVE y configurarás el primer escaneo que se puede utilizar para escanear la máquina local o el servidor actual.
Al ejecutar el comando vuls, debes estar en el directorio de trabajo ‘/usr/share/vuls-data‘, donde se encuentra el archivo de configuración ‘config.toml’.
Introduce el siguiente comando para crear un nuevo directorio de datos ‘/usr/share/vuls-data’ para Vuls. A continuación, crea un nuevo archivo de configuración‘/usr/share/vuls-data/config.tom l’ utilizando el comando touch que aparece a continuación.
mkdir -p /usr/share/vuls-data touch /usr/share/vuls-data/config.toml
Abre el archivo de configuración ‘ /usr/share/vuls-data/config.toml’ utilizando el siguiente comando del editor nano.
nano /usr/share/vuls-data/config.toml
Añade las siguientes líneas al archivo.
[cveDict] type = "sqlite3" SQLite3Path = "/usr/share/vuls-data/cve.sqlite3" [ovalDict] type = "sqlite3" SQLite3Path = "/usr/share/vuls-data/oval.sqlite3" [gost] type = "sqlite3" SQLite3Path = "/usr/share/vuls-data/gost.sqlite3" [metasploit] type = "sqlite3" SQLite3Path = "/usr/share/vuls-data/go-msfdb.sqlite3" [servers] [servers.localhost] host = "localhost" port = "local" scanMode = [ "fast" ] #scanMode = ["fast", "fast-root", "deep", "offline"]
Guarda y cierra el archivo cuando hayas terminado.
Con esto, definirás 4 bases de datos vuls con el formato SQLite3 que se tomarán del directorio de datos vuls‘/usr/share/vuls-data/‘. Las 4 bases de datos que se utilizarán en este ejemplo son:
- CVE (Vulnerabilidades y Exposiciones Comunes).
- OVAL (Lenguaje Abierto de Vulnerabilidad y Evaluación).
- Gost: rastrea la seguridad de distribuciones Linux como Rehat, Debian, Ubuntu y el sistema operativo Microsoft Windows.
- CVEs de los módulos de Metasploit-Framework.
También definirás el primer escaneo llamado‘localhost‘ que te permite escanear la máquina local actual a través de SSH y el‘scanMode‘ o método es‘fast’, que no requiere el privilegio de root y no necesita dependencias.
A continuación, mueve tu directorio de trabajo a‘/usr/share/vuls-data/‘. Siempre que ejecutes el comando ‘vuls’, deberás estar en este directorio, donde se encuentra el archivo de configuración ‘config.toml’.
cd /usr/share/vuls-data/
Introduce el comando ‘vuls‘ que aparece a continuación para verificar la configuración.
vuls configtest
Si tienes éxito, deberías recibir una salida similar en la pantalla de tu terminal.
Llegados a este punto, ya has creado la configuración de Vuls, definido las bases de datos de Vuls y escaneado el localhost. En el siguiente paso, crearás bases de datos vuls mediante varias herramientas de línea de comandos proporcionadas por Vuls.
Además, si quieres crear un archivo de configuración de Vuls completo, introduce el siguiente comando para generar un ejemplo de configuración de Vuls.
vuls discover 127.0.0.1/32
Esto imprimirá un ejemplo de configuración de Vuls en tu terminal.
Crear bases de datos Vuls CVE
Dentro del archivo de configuración de Vuls ‘config.toml’ has definido 4 bases de datos utilizando gost (Security Tracker), OVAL, CVE y Metasploit-Framework CVEs. Antes de escanear cualquier servidor objetivo, debes asegurarte de que las bases de datos de Vuls están creadas y disponibles en el directorio de datos de Vuls ‘/usr/share/vuls-data’.
En esta sección, crearás la base de datos Vuls mediante las herramientas de línea de comandos Vuls que tengas instaladas y disponibles en el directorio ‘/usr/local/bin’. Generarás bases de datos Vuls de Gost (Security Tracker) para el sistema Ubuntu, la base de datos CVE de NVD (NIST National Vulnerability Database), la base de datos OVAL de Ubuntu y la base de datos CVEs de Metasploit-Framework.
Cada base de datos se puede generar con una herramienta específica que tengas instalada. Para el uso básico de la herramienta de línea de comandos Vuls, puedes imprimir la página de ayuda de las herramientas Vuls con el siguiente formato.
vuls-command help
Para empezar, introduce el siguiente comando‘gost‘ para construir y generar la base de datos vuls de Security Tracker. En este ejemplo, generarás una base de datos vuls del rastreador de seguridad para la distribución Ubuntu en el archivo de destino‘/usr/share/vuls-data/gost.sqlite3‘.
gost fetch ubuntu --dbpath /usr/share/vuls-data/gost.sqlite3
Introduce el siguiente comando ‘go-cve-dictionary‘ para generar la base de datos vuls para CVE. El comando ‘go-cve-dictionary‘ admite dos fuentes de proveedores de CVE, NVD del Nist y JVD de la JVN japonesa. En este ejemplo, generarás la base de datos CVE desde Nist a ‘/usr/share/vuls-data/cve.sqlite3‘.
go-cve-dictionary fetch nvd --dbpath /usr/share/vuls-data/cve.sqlite3
A continuación se muestra una salida cuando toda la base de datos de CVEs está terminada.
A continuación, genera la base de datos vuls de OVAL utilizando el comando‘goval-dictionary‘ que aparece más abajo. OVAL proporciona varios diccionarios para varias distribuciones y versiones de Linux. En este ejemplo, generarás una base de datos de OVAL para Ubuntu 22 en el archivo ‘/usr/share/vuls-data/oval.sqlite3‘.
goval-dictionary fetch ubuntu 22 --dbpath /usr/share/vuls-data/oval.sqlite3
Por último, introduce el siguiente comando‘go-msfdb‘ para generar la base de datos CVE a partir de los módulos de Metasploit-Framework. El archivo de la base de datos de vuls se almacenará en‘/usr/share/vuls-data/go-msfdb.sqlite3‘.
go-msfdb fetch msfdb --dbpath /usr/share/vuls-data/go-msfdb.sqlite3
Cuando se generen las bases de datos vuls, introduce el siguiente comando para verificar la lista de bases de datos vuls.
ls /usr/share/vuls-data/*.sqlite3
Deberías ver las bases de datos Vuls‘gost.sqlite3’, ‘cve.sqlite3’, ‘oval.sqlite3‘ y ‘go-msfdb.sqlite3‘ generadas y disponibles en el directorio ‘/usr/share/vuls-data/‘.
Llegados a este punto, has instalado Vuls, configurado el directorio de datos de Vuls, creado el archivo de configuración de Vuls y definido varias bases de datos vuls que se utilizarán como base de datos de origen para el escaneo. También has creado el primer escaneo llamado «localhost», que te permite escanear la máquina local que estés utilizando en ese momento.
En el siguiente paso, empezarás a escanear tu máquina local, y después crearás también otro escaneo que escaneará el servidor remoto con Vuls.
Escanear la máquina local con Vuls
Dentro del archivo de configuración de Vuls‘config.toml‘ has creado tu primer escaneo llamado ‘localhost’ que te permite escanear tu máquina actual con Vuls. En esta sección, escanearás tu máquina actual con Vuls.
A continuación se muestra el primer escaneo de Vuls que has creado. Este escaneará el servidor de destino‘localhost‘ con el tipo de conexión como‘local‘ y el‘scanMode’ es‘fast‘, lo que no requiere ningún privilegio de root para ello.
[servers.localhost] host = "localhost" port = "local" scanMode = [ "fast" ] #scanMode = ["fast", "fast-root", "deep", "offline"]
Para empezar, introduce el siguiente comando para iniciar el escaneo de tu sistema, Este comando escaneará todos los servidores de destino que estén disponibles en el archivo de configuración‘config.toml‘.
vuls scan
Para escanear un servidor de destino específico, puedes utilizar el nombre del escaneo como parámetro. Esto sólo escaneará el servidor de destino llamado‘localhost‘.
vuls scan localhost
Cuando finalice el proceso de escaneado, deberías obtener una salida similar a ésta: puedes ver que Vuls detectará los sistemas operativos actuales del servidor de destino y, a continuación, empezará a escanear el sistema con las bases de datos vuls disponibles. Además, puedes ver el resumen del escaneo en la parte inferior de la salida.
A continuación, introduce el siguiente comando para ver y mostrar los informes detallados de tu escaneo.
vuls tui
Deberías ver 4 columnas en la pantalla de tu terminal, la lista de servidores objetivo, la lista de CVE detectados, una columna que te muestra los detalles del CVE, y la columna que muestra la lista de paquetes afectados. Puedes pulsar el botón TAB para pasar de una columna a otra.
Por último, pulsa el botón Ctrl+C para finalizar el visor de vuls.
Además, también puedes hacer un seguimiento del historial de escaneos que has realizado escribiendo el siguiente comando‘vuls‘.
vuls history
Con esto, has aprendido a escanear el servidor de destino utilizando Vuls y a ver o mostrar el resultado mediante el comando ‘vulstui‘. A continuación, aprenderás a escanear una máquina o servidor remoto con Vuls.
Escanear un servidor remoto con Vuls
En esta sección, aprenderás a escanear el servidor remoto utilizando Vuls a través de SSH. A continuación se muestran los detalles del servidor que se utilizará como máquina de destino:
Hostname IP Address OS ------------------------------------------ debian-server 192.168.5.75 Debian 11
A continuación se indican los pasos de las tareas para configurar Vuls y escanear el servidor remoto mediante SSH:
- Instalar dependencias en el servidor de destino – cuando sea necesario y dependiendo del scanMode.
- Recupera la base de datos CVE adicional para tu sistema específico. Asegúrate de que tienes la base de datos Vuls adecuada como servidor de destino.
- Añade y define el escaneo de destino en el archivo de configuración de Vuls ‘config.toml’.
- Inicia el escaneo de tu servidor objetivo.
Ahora vamos a empezar.
En primer lugar, inicia sesión en el servidor remoto de destino e instala las dependencias de los paquetes‘debian-goodies‘ y‘reboot-notifier‘ utilizando el siguiente comando‘apt install‘. Es necesario instalar estos paquetes en el servidor Debian de destino.
sudo apt install debian-goodies reboot-notifier
Introduce y cuando se te pida y pulsa ENTER para continuar.
Ahora dirígete al servidor Vuls y recupera una nueva base de datos CVE para tu sistema específico. En este ejemplo, reconstruirás la nueva base de datos para OVAL y gost añadiendo el contenido del diccionario para la distribución Debian Linux.
Introduce el siguiente comando para añadir un nuevo contenido de OVAL para la distribución Debian 11 a la base de datos existente‘/usr/share/vuls-data/oval.sqlite3‘
goval-dictionary fetch debian 11 --dbpath /usr/share/vuls-data/oval.sqlite3
Introduce la siguiente orden para añadir un nuevo rastreador de seguridad para la distribución Debian al archivo de base de datos vuls gost ‘/usr/share/vuls-data/gost.sqlite3‘.
gost fetch debian --dbpath /usr/share/vuls-data/gost.sqlite3
A continuación, abre el archivo de configuración de vuls‘/usr/share/vuls-data/config.toml‘ utilizando el siguiente comando del editor nano.
nano /usr/share/vuls-data/config.toml
Añade las siguientes líneas al final del mismo. Con esto, crearás un nuevo escaneo llamado ‘debian-server’ con la dirección IP de host detallada‘192.168.5.75‘, el servicio SSH ejecutándose en el puerto por defecto’22‘, el usuario por defecto que se utilizará es‘debian‘, y utilizando la autenticación basada en clave vía SSH con la clave privada‘~/.ssh/id_ed25519‘. Y el‘scanMode’ que utilizarás es‘fast-root‘, que requiere los privilegios de root en el servidor de destino, así que asegúrate de que tu usuario tiene el sudo sin contraseña.
[servers.debian-server] host = "192.168.5.75" port = "22" user = "debian" keyPath = "~/.ssh/id_ed25519" scanMode = [ "fast-root" ] # "fast", "fast-root" or "deep"
Guarda y cierra el archivo cuando hayas terminado.
Ahora introduce el siguiente comando vuls para verificar el archivo de configuración‘config.toml‘. Esto garantizará que tienes la configuración adecuada de Vuls antes de escanear los servidores de destino.
vuls configtest
Deberías ver una salida como ésta: Vuls comprobará si los servidores de destino están listos o no, verificando las dependencias disponibles y los privilegios necesarios para realizar las tareas de escaneado. También en la parte inferior, deberías ver la lista de servidores de destino que están listos para escanear, en este ejemplo‘localhost‘ y‘debian-server‘.
Ahora introduce el siguiente comando para empezar a escanear todos los servidores de destino disponibles en el archivo‘config.toml‘. En este ejemplo, el siguiente comando escaneará los dos servidores de destino‘localhost’ y ‘debian-server‘.
vuls scan
O puedes especificar el escaneo a un servidor de destino concreto escribiendo el comando vuls a continuación.
vuls scan debian-server
A continuación se muestra una salida cuando finaliza el escaneo. En este ejemplo, estás escaneando el servidor de destino ‘localhost‘ con el scanMode‘fast‘ y el servidor de destino‘debian-server’ con el scanMode‘fast-root‘.
Introduce el siguiente comando para comprobar el resultado del escaneo que has realizado. En la columna de la lista de hosts, deberías ver el resultado del escaneo del servidor de destino «debian-server».
vuls tui
Pulsa Ctrl+C para salir de la ventana vuls tui.
Ahora, si compruebas el historial de escaneos mediante el comando«historial de vuls», deberías ver dos resultados de escaneos diferentes: el primer escaneo tenía como objetivo «localhost» y el segundo tenía como objetivo«localhost» y«debian-server«.
vuls history
Llegados a este punto, has aprendido el uso básico de Vuls para escanear el servidor local y el servidor remoto a través de SSH. También has aprendido a reconstruir la base de datos de Vuls y a mostrar o ver el resultado del escaneo a través de la Interfaz de Usuario Basada en Terminal (TUI) de Vuls.
A continuación, aprenderás a instalar e integrar VulsRepo con Vuls.
Integración con VulsRepo como Panel Web de Administración para Vuls
VulsRepo es una aplicación web que se puede utilizar para ver o mostrar los resultados de los escaneos de Vuls a través del navegador web. Esto permite a un administrador mostrar fácilmente los resultados del escaneo como una tabla dinámica de Excel en el navegador web.
En esta sección, descargarás VulsRepo e integrarás VulsRepo con tu servidor Vuls. Al final, también verificarás el resultado del escaneo de Vuls desde tu navegador web a través de la aplicación web VulsRepo.
En primer lugar, desplázate al directorio de datos de Vuls‘/usr/share/vuls-data/‘ y escribe el siguiente comando‘vuls report‘ para generar los informes de Vuls en un archivo json.
cd /usr/share/vuls-data/ vuls report -format-json
Ahora desplázate al directorio de trabajo ‘/opt‘ y descarga el código fuente de VulsRepo mediante el siguiente comando ‘git clone‘. El código fuente de VulsRepo estará disponible en el directorio‘/opt/vulsrepo/‘.
cd /opt/ git clone https://github.com/ishiDACo/vulsrepo.git
Cambia el directorio de trabajo a ‘/opt/vulsrepo/server/‘.
cd /opt/vulsrepo/server/
Copia la configuración por defecto en‘vulsrepo-config.toml‘ y ábrela mediante el comando del editor nano que aparece a continuación.
cp vulsrepo-config.toml.sample vulsrepo-config.toml nano vulsrepo-config.toml
Cambia la configuración por defecto con las siguientes líneas. El parámetro‘resultsPath‘ debe ser el directorio de‘resultados’ de datos Vuls‘/usr/share/vuls-data/results‘. Para los parámetros ‘serverPort‘ y‘serverIP‘, ajústalos con los datos de tu servidor.
[Server] rootPath = "/opt/vulsrepo" resultsPath = "/usr/share/vuls-data/results" serverPort = "5111" serverIP = "192.168.5.20"
Guarda y cierra el archivo cuando hayas terminado.
A continuación, introduce el siguiente comando para ejecutar el archivo binario de‘vulsrepo-server‘ y ejecuta el panel web de VulsRepo.
./vulsrepo-server
Deberías recibir una salida como ésta en tu terminal – Puedes ver que VulsRepo se está ejecutando en la dirección IP del servidor‘192.168.5.20‘ con el puerto‘5111‘.
Abre tu navegador web y visita la dirección IP del servidor seguida del puerto 5111 (es decir: http://192.168.5.20:5111/). Deberías ver la página de la aplicación web VulsRepo.
En el menú de la izquierda, deberías ver la lista de resultados de escaneado disponibles en formato json. Selecciona el resultado del escaneo que desees revisar y haz clic en«Enviar«.
A continuación se muestra un ejemplo de los resultados del escaneo de los servidores de destino‘localhost‘ y‘debian-server‘ mostrados en un navegador web utilizando VulsRepo.
Con esto, ya has instalado e integrado la aplicación web VulsRepo con tu servidor Vuls. Ahora puedes ver los resultados del escaneo fácilmente desde el navegador web a través de la aplicación VulsRepo.
Conclusión
En este tutorial, has instalado Vuls, un escáner de vulnerabilidades de código abierto y sin agente, en un servidor Ubuntu 22.04. También has configurado Vuls, has creado escaneos, y también has configurado las bases de datos de Vuls a partir de múltiples fuentes como CVEs del NIST, OVAL, Linux Distribution Security Tracker, y los CVEs de Metasplot-Framework.
Además, también has aprendido a escanear máquinas locales con Vuls y a escanear el servidor remoto mediante SSH y Vuls. También has aprendido el uso básico de Vuls para ver el resultado del escaneo a través de la interfaz basada en terminal.
Al final, también has instalado e integrado Vuls con VulsRepo, lo que te permite ver y mostrar los resultados del escaneo de Vuls desde el navegador web. Para saber más, visita la documentación oficial de Vuls.