Seguridad Informática , Administración de Servidores

Guía Detallada para la Instalación y Uso de OpenVAS (GVM) en Ubuntu 24.04 con Docker

Guía detallada para instalar y configurar OpenVAS (GVM) en Ubuntu 24.04 usando Docker, con pasos para asegurar el sistema y realizar escaneos autenticados.

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:

  1. Actualiza tu sistema:

    sudo apt-get update
    
  2. Instala las dependencias necesarias:

    sudo apt-get install ca-certificates curl gnupg
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. (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.

  1. 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
    
  2. 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 servicio gsa. Cambia la línea - 127.0.0.1:9392:80 a - 9392:80 para que la interfaz web sea accesible desde cualquier IP.

  3. 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

  1. Instala Nginx:

    sudo apt install nginx
    
  2. Crea un archivo de configuración para tu dominio: Reemplaza openvas.tudominio.com por tu dominio real.

    sudo nano /etc/nginx/sites-available/openvas.conf
    
  3. 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;
        }
    }
    
  4. 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)

  1. Instala Certbot:
    sudo apt install certbot python3-certbot-nginx
    
  2. Obtén y configura el certificado:
    sudo certbot --nginx -d openvas.tudominio.com
    
    Sigue las instrucciones en pantalla. Certbot modificará tu archivo de Nginx para forzar HTTPS automáticamente.

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.

  1. Restricción en Nginx (Capa de Aplicación): Edita de nuevo el archivo sudo nano /etc/nginx/sites-available/openvas.conf y añade las siguientes líneas dentro del bloque server principal (el que tiene listen 443 ssl):

    allow TU_IP_VPN;
    deny all;
    

    Reinicia Nginx para aplicar los cambios: sudo systemctl restart nginx.

  2. Restricción en el Firewall (Capa de Red): Usaremos ufw para 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

  1. En la interfaz de OpenVAS, ve a Configuration > Credentials.
  2. Haz clic en el icono de la varita mágica (New Credential).
  3. 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.
  4. Guarda la credencial.

Paso 2: Crear el Objetivo (Target)

  1. Ve a Configuration > Targets.
  2. Crea un nuevo objetivo (New Target).
  3. 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.
  4. Guarda el objetivo.

Paso 3: Crear y Lanzar la Tarea (Task)

  1. Ve a Scans > Tasks.
  2. Crea una nueva tarea (New Task).
  3. 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.
  4. 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.