--- title: "Cómo instalar OpenVAS (Greenbone) en Ubuntu 24.04 con Docker" description: "Despliega OpenVAS con los contenedores oficiales de Greenbone Community Edition en Ubuntu 24.04, carga los feeds y lanza tu primer escaneo de vulnerabilidades." category: "Seguridad de Red Avanzada" language: es source: https://cubepath.com/es/docs/seguridad-de-red-avanzada/instalacion-del-escaner-de-vulnerabilidades-openvas updated: 2026-09-25 --- # Cómo instalar OpenVAS (Greenbone) en Ubuntu 24.04 con Docker OpenVAS es el motor de escaneo de vulnerabilidades de Greenbone Community Edition, la versión libre de la plataforma de Greenbone. Incluye el escáner, el gestor `gvmd`, una interfaz web y decenas de miles de pruebas de vulnerabilidades (NVT) que se actualizan a diario. En este tutorial desplegarás Greenbone Community Edition en Ubuntu 24.04 con los contenedores oficiales y Docker Compose, que es el método de instalación que mantiene Greenbone, y lanzarás un primer escaneo contra un servidor tuyo. ## Requisitos previos Para seguir esta guía necesitas: - Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath. Greenbone recomienda 4 vCPU, 8 GB de RAM y 60 GB de disco; el mínimo es 2 vCPU, 4 GB de RAM y 20 GB. - Un usuario no root con privilegios `sudo` que pertenezca al grupo `docker`. - Docker Engine y el plugin Docker Compose instalados desde el repositorio oficial de Docker. - Acceso SSH desde tu equipo, que usarás para abrir un túnel hacia la interfaz web. > Importante: escanea solo sistemas que sean tuyos o para los que tengas autorización por escrito. Un escaneo de vulnerabilidades contra terceros puede considerarse un ataque y dar lugar a denuncias de abuso contra tu servidor. ## Paso 1: Comprobar Docker Confirma que Docker y Compose funcionan con tu usuario sin `sudo`: ```bash docker version --format '{{.Server.Version}}' docker compose version ``` ```output 28.4.0 Docker Compose version v2.39.4 ``` Si el primer comando falla con `permission denied`, añade tu usuario al grupo `docker` con `sudo usermod -aG docker $USER`, cierra la sesión SSH y vuelve a entrar. ## Paso 2: Descargar el fichero Compose oficial Greenbone publica un `compose.yaml` que define todos los servicios: la base de datos PostgreSQL, Redis, `gvmd`, el escáner `ospd-openvas`, la interfaz web `gsa` y un contenedor por cada feed de datos. Crea un directorio para el despliegue y descarga el fichero: ```bash mkdir -p ~/greenbone-community-container cd ~/greenbone-community-container curl -f -O -L https://greenbone.github.io/docs/latest/_static/compose.yaml ``` Revisa qué servicios contiene y en qué puerto publica la interfaz web: ```bash docker compose -f compose.yaml config --services grep '9392' compose.yaml ``` ```output - 127.0.0.1:9392:80 ``` La interfaz web solo escucha en `127.0.0.1`, así que no queda expuesta a Internet. Mantenlo así: accederás a ella a través de un túnel SSH. ## Paso 3: Descargar las imágenes y arrancar los servicios Descarga todas las imágenes. Son varios GB, porque los contenedores de datos incluyen los feeds de vulnerabilidades: ```bash docker compose -f compose.yaml pull ``` Arranca el conjunto en segundo plano: ```bash docker compose -f compose.yaml up -d ``` Comprueba el estado de los contenedores: ```bash docker compose -f compose.yaml ps --format 'table {{.Service}}\t{{.Status}}' ``` ```output SERVICE STATUS gsa Up 2 minutes gvmd Up 2 minutes ospd-openvas Up 2 minutes pg-gvm Up 2 minutes redis-server Up 2 minutes ``` Los contenedores de datos (`vulnerability-tests`, `scap-data`, `cert-bund-data` y similares) copian los feeds a volúmenes compartidos y terminan, así que es normal que no aparezcan como `Up`. ## Paso 4: Esperar a que se carguen los feeds Tras el primer arranque, `gvmd` y el escáner importan los feeds a la base de datos. Este proceso puede tardar entre 30 minutos y varias horas según la CPU y el disco, y hasta que termine no podrás lanzar escaneos completos. Sigue el progreso en los logs de `gvmd`: ```bash docker compose -f compose.yaml logs -f gvmd ``` Verás mensajes sobre la actualización de SCAP, CERT y de las configuraciones de escaneo. Pulsa `Ctrl+C` para salir del seguimiento; los contenedores siguen funcionando. ## Paso 5: Cambiar la contraseña del administrador El despliegue crea un usuario `admin` con la contraseña `admin`. Cámbiala antes de usar la interfaz, sustituyendo `your_strong_password` por una contraseña robusta: ```bash docker compose -f compose.yaml exec -u gvmd gvmd gvmd --user=admin --new-password='your_strong_password' ``` El comando no muestra nada si termina bien. Para evitar que la contraseña quede en el historial de la shell, puedes borrar esa línea después con `history -d` o anteponer un espacio al comando si tu shell tiene `HISTCONTROL=ignorespace`. ## Paso 6: Acceder a la interfaz web por túnel SSH Desde tu equipo local, abre un túnel que reenvíe el puerto 9392 local al 9392 del servidor. Sustituye `your_user` y `your_server_ip` por tus datos: ```bash ssh -N -L 9392:127.0.0.1:9392 your_user@your_server_ip ``` Deja esa terminal abierta y visita `http://127.0.0.1:9392` en tu navegador. Inicia sesión con el usuario `admin` y la contraseña del paso anterior. En **Administration > Feed Status** verás el estado de cada feed. Cuando todos muestren `Current` en lugar de `Update in progress...`, el sistema está listo para escanear. ## Paso 7: Crear un objetivo y lanzar un escaneo Un escaneo en Greenbone se compone de un objetivo (qué hosts y puertos) y una tarea (qué configuración de escaneo usar contra ese objetivo). 1. Ve a **Configuration > Targets** y pulsa el icono de nuevo objetivo. 2. En **Name** escribe un nombre descriptivo, por ejemplo `Servidor web`. 3. En **Hosts** introduce la IP del servidor que quieres analizar. Puedes indicar varias separadas por comas o un rango CIDR. 4. En **Port List** deja `All IANA assigned TCP` para empezar. 5. Guarda el objetivo. Crea ahora la tarea: 1. Ve a **Scans > Tasks** y pulsa el icono de nueva tarea. 2. Dale un nombre y selecciona el objetivo que acabas de crear en **Scan Targets**. 3. En **Scan Config** deja `Full and fast`, que es la configuración recomendada para la mayoría de los casos. 4. Guarda la tarea y pulsa el botón de inicio (el triángulo) en la lista de tareas. El estado pasará a `Requested`, luego a `Running` con un porcentaje de progreso y, al terminar, a `Done`. Un escaneo `Full and fast` de un solo servidor suele durar entre 10 y 40 minutos. Si el servidor que escaneas expone servicios con login, puedes crear una credencial SSH en **Configuration > Credentials** y asociarla al objetivo. Con acceso autenticado, OpenVAS comprueba las versiones de los paquetes instalados y detecta muchas más vulnerabilidades que desde fuera. ## Paso 8: Revisar el informe Cuando la tarea esté en `Done`, pulsa sobre la fecha del último informe o ve a **Scans > Reports**. El informe agrupa los resultados por severidad (High, Medium, Low, Log) según su puntuación CVSS. En cada resultado encontrarás: - **Summary** y **Detection Result**: qué se ha detectado y cómo. - **Solution**: la acción recomendada, normalmente actualizar un paquete o cambiar una configuración. - **References**: los CVE y avisos de seguridad relacionados. Empieza por los resultados High en servicios expuestos a Internet. Para compartir el informe, usa el botón de descarga y elige el formato (PDF, XML, CSV o TXT, entre otros). Tras corregir un problema, vuelve a lanzar la misma tarea y compara los informes para confirmar que el hallazgo ha desaparecido. ## Paso 9: Mantener los feeds y las imágenes actualizados Los feeds de la Community Edition se publican a diario dentro de las imágenes de datos. Para actualizar feeds y servicios a la vez, descarga las imágenes nuevas y recrea los contenedores que hayan cambiado: ```bash cd ~/greenbone-community-container docker compose -f compose.yaml pull docker compose -f compose.yaml up -d ``` Si quieres automatizarlo, programa esos dos comandos en el crontab de tu usuario una vez al día fuera del horario de escaneos: ```bash crontab -e ``` ```text 30 4 * * * cd $HOME/greenbone-community-container && docker compose -f compose.yaml pull -q && docker compose -f compose.yaml up -d ``` Como el fichero `compose.yaml` evoluciona con las nuevas versiones de Greenbone, vuelve a descargarlo de vez en cuando y revisa las notas de la versión antes de sustituirlo. ## Solución de problemas - **La lista de configuraciones de escaneo o de puertos está vacía**: los feeds aún se están cargando. Espera y revisa `docker compose -f compose.yaml logs gvmd` y **Administration > Feed Status**. - **La tarea se queda en `Interrupted`**: revisa los logs del escáner con `docker compose -f compose.yaml logs ospd-openvas`. Suele deberse a falta de memoria; comprueba con `free -h` que el servidor no se queda sin RAM durante el escaneo. - **Todos los hosts aparecen como caídos**: por defecto Greenbone hace un descubrimiento previo con ICMP y TCP. Si el objetivo bloquea el ping, edita el objetivo y cambia **Alive Test** a `Consider Alive`. - **El navegador no carga `http://127.0.0.1:9392`**: comprueba que el túnel SSH sigue abierto y que en el servidor el puerto está escuchando con `ss -tlnp | grep 9392`. ## Conclusión Tienes Greenbone Community Edition funcionando en contenedores, con la interfaz web protegida detrás de un túnel SSH, los feeds cargados y un primer informe de vulnerabilidades. Los siguientes pasos lógicos son programar escaneos periódicos con **Configuration > Schedules**, añadir credenciales SSH para escaneos autenticados y combinar los resultados con un SIEM como Wazuh para seguir la remediación.