Guía Completa: Instalación y Uso de OpenVAS (GVM) en Ubuntu 24.04 con Docker
En esta guía, aprenderás a instalar el escáner de vulnerabilidades OpenVAS (Greenbone Vulnerability Management) en un VPS con Ubuntu 24.04, utilizando contenedores de Docker. No solo cubriremos la instalación básica, sino también cómo asegurarlo con Nginx y un firewall, y cómo configurarlo para realizar escaneos profundos y efectivos.
1. Requisitos Previos e Instalación de Docker
Antes de empezar, asegúrate de que tu VPS cumple con los requisitos mínimos y de que tienes Docker instalado.
Requisitos de Hardware
- Mínimo: 2 núcleos de CPU, 4 GB de RAM, 20 GB de espacio en disco.
- Recomendado: 4 núcleos de CPU, 8 GB de RAM, 60 GB de espacio en disco.
Instalación de Docker
Si no tienes Docker, sigue estos pasos para instalarlo:
-
Actualiza tu sistema:
sudo apt-get update -
Instala las dependencias necesarias:
sudo apt-get install ca-certificates curl gnupg -
Agrega la clave GPG oficial de Docker:
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL [https://download.docker.com/linux/ubuntu/gpg](https://download.docker.com/linux/ubuntu/gpg) | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg -
Agrega el repositorio de Docker:
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] [https://download.docker.com/linux/ubuntu](https://download.docker.com/linux/ubuntu) \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null -
Instala Docker y Docker Compose:
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -
(Opcional pero recomendado) Permite a tu usuario usar Docker sin
sudo:sudo groupadd docker sudo usermod -aG docker $USER newgrp docker
2. Instalación y Configuración de GVM
Ahora desplegaremos GVM usando el archivo docker-compose oficial.
-
Crea un directorio y descarga la configuración:
export DOWNLOAD_DIR=$HOME/greenbone-community-container && mkdir -p $DOWNLOAD_DIR cd $DOWNLOAD_DIR curl -f -L [https://greenbone.github.io/docs/latest/_static/docker-compose-22.4.yml](https://greenbone.github.io/docs/latest/_static/docker-compose-22.4.yml) -o docker-compose.yml -
Modifica el archivo para permitir el acceso remoto: Abre el archivo con un editor de texto (
nano docker-compose.yml) y busca la sección del serviciogsa. Cambia la línea- 127.0.0.1:9392:80a- 9392:80para que la interfaz web sea accesible desde cualquier IP. -
Inicia los contenedores: Este proceso descargará todas las imágenes necesarias. Puede tardar bastante tiempo, ¡ten paciencia!
docker compose up -d
3. Acceso y Fortalecimiento con Nginx y Firewall
Por defecto, puedes acceder a OpenVAS a través de http://TU_IP:9392. Vamos a mejorar esto para usar un dominio, HTTPS y restringir el acceso.
Configuración de Nginx como Proxy Inverso
-
Instala Nginx:
sudo apt install nginx -
Crea un archivo de configuración para tu dominio: Reemplaza
openvas.tudominio.compor tu dominio real.sudo nano /etc/nginx/sites-available/openvas.conf -
Pega la siguiente configuración: Este es el contenido básico. Asegúrate de cambiar
server_name.server { listen 80; server_name openvas.tudominio.com; location / { proxy_pass [http://127.0.0.1:9392](http://127.0.0.1:9392); proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } -
Activa el sitio y reinicia Nginx:
sudo ln -s /etc/nginx/sites-available/openvas.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
Asegurando con HTTPS (Let’s Encrypt)
- Instala Certbot:
sudo apt install certbot python3-certbot-nginx - Obtén y configura el certificado:
Sigue las instrucciones en pantalla. Certbot modificará tu archivo de Nginx para forzar HTTPS automáticamente.
sudo certbot --nginx -d openvas.tudominio.com
Restringiendo el Acceso por IP (Máxima Seguridad)
Para que solo tú puedas acceder a la interfaz de OpenVAS, implementaremos una doble capa de seguridad. Reemplaza TU_IP_VPN por tu IP pública estática o de tu VPN.
-
Restricción en Nginx (Capa de Aplicación): Edita de nuevo el archivo
sudo nano /etc/nginx/sites-available/openvas.confy añade las siguientes líneas dentro del bloqueserverprincipal (el que tienelisten 443 ssl):allow TU_IP_VPN; deny all;Reinicia Nginx para aplicar los cambios:
sudo systemctl restart nginx. -
Restricción en el Firewall (Capa de Red): Usaremos
ufwpara bloquear todos los puertos excepto los necesarios.# Permite SSH solo desde tu IP sudo ufw allow from TU_IP_VPN to any port 22 proto tcp # Permite el tráfico web sudo ufw allow 80/tcp sudo ufw allow 443/tcp # Activa el firewall sudo ufw enable
4. Uso Óptimo de OpenVAS: Escaneos Autenticados
Para obtener resultados detallados, necesitas realizar escaneos autenticados. Esto permite a OpenVAS iniciar sesión en el objetivo y analizarlo desde dentro.
Paso 1: Crear la Credencial SSH
- En la interfaz de OpenVAS, ve a
Configuration>Credentials. - Haz clic en el icono de la varita mágica (New Credential).
- Configúralo así:
- Name: Un nombre descriptivo (ej.
Credencial SSH VPS). - Type:
Username + Password. - Username: El usuario de tu servidor objetivo (ej.
root). - Password: La contraseña de ese usuario.
- Name: Un nombre descriptivo (ej.
- Guarda la credencial.
Paso 2: Crear el Objetivo (Target)
- Ve a
Configuration>Targets. - Crea un nuevo objetivo (New Target).
- Configúralo así:
- Name: Nombre del objetivo (ej.
Mi Servidor VPS). - Hosts: La dirección IP a escanear.
- En la sección “Credentials for Authentication”, en el desplegable de SSH, selecciona la credencial que creaste en el paso anterior.
- Name: Nombre del objetivo (ej.
- Guarda el objetivo.
Paso 3: Crear y Lanzar la Tarea (Task)
- Ve a
Scans>Tasks. - Crea una nueva tarea (New Task).
- Configúrala así:
- Name: Nombre de la tarea (ej.
Análisis Semanal VPS). - Scan Config: Selecciona
Full and fast. Es el perfil más completo disponible por defecto. - Scan Targets: Selecciona el objetivo que creaste en el paso anterior.
- Name: Nombre de la tarea (ej.
- Guarda y lanza la tarea.
¡Listo! Este escaneo será mucho más lento, pero los resultados serán infinitamente más ricos y útiles, mostrándote parches faltantes, software vulnerable y configuraciones incorrectas que un escaneo externo jamás encontraría.