OpenVAS (Open Vulnerability Assessment System) es una poderosa herramienta de análisis de vulnerabilidades que forma parte de Greenbone Vulnerability Manager (GVM). Permite escanear redes, servidores y dispositivos en busca de vulnerabilidades conocidas. OpenVAS es ampliamente utilizado por profesionales de la ciberseguridad para realizar auditorías y análisis de seguridad.
OpenVAS tiene la capacidad de realizar escaneos de red, incluidas pruebas autenticadas y no autenticadas.
Es totalmente gratuito y se puede instalar con apt en Kali Linux
Instalación
Instalar requisitos
Si al ejecutar el gvm-setup nos da el siguiente error deberemos cambiar del clúster 16 al 17 de PostgreSQL:
Instalar asistente de Greenbone
Reiniciar OpenVAS
Crear base de datos
Crear un nuevo usuario para OpenVAS
Actualizar feeds de vulnerabilidades
Iniciar OpenVAS
Errores comunes de instalación
Error de versión de PostgreSQL
Configurar PostgreSQL
OpenVAS necesita tener habilitado el clúster de PostgreSQL 17. Si tenemos una versión anterior podemos deshabilitarla de la siguiente manera:
Cambiar PostgreSQL 17 al puerto 5432
Edita la configuración del clúster de PostgreSQL 17 para que use el puerto 5432. Modifica el archivo postgresql.conf de la versión 17:
Busca la línea donde se especifica el puerto y cambia 5433 por 5432:
Iniciar clúster PostgreSQL17
Este comando hará lo siguiente:
Configura los servicios necesarios (PostgreSQL, Redis, etc.).
Descarga el feed de vulnerabilidades de Greenbone actualizado.
Configura las bases de datos y los servicios de OpenVAS.
Anota las credenciales generadas. Al final del proceso, verás algo como:
Si lo necesitas, puedes cambiar la contraseña usando:
Eliminar el clúster antiguo (opcional)
Si confirmas que PostgreSQL 17 está funcionando correctamente, puedes eliminar el clúster antiguo (versión 16):
Error de collation
El mensaje indica que la base de datos PostgreSQL tiene una discordancia de versión de collation entre lo que fue usado al crearla y lo que ofrece nuestro sistema actual.
Sigue los pasos sugeridos para corregir el problema de collation en la base de datos:
1. Accede a PostgreSQL como usuario postgres:
2. Permitir cambios en template1:
3. Reconstruir índices y actualizar la collation en template1:
4. Marcar template1 como plantilla nuevamente:
5. Hacer lo mismo con template0:
6. Salir del cliente de PostgreSQL:
Error al arrancar PostgreSQL
Reiniciar servicio::
Escaneo con OpenVAS
Una vez logueados debemos esperar hasta que se sincronicen los feeds en Administration/Feed Status. Deben quedar en Status Current.
Esto es importante, ya que sino los escaneos pueden arrojar errores o no funcionar.
1. Añadir nuevo target
En Configuration/Targets hacemos clic en el botón de la esquina superior izquierda:
Aquí añadimos el nombre del host, descripción y puertos a escanear. Para escanear todos los puertos disponibles podemos usar:
# Actualizar paquetes y instalar gvm
sudo apt update
sudo apt install gvm
sudo gvm-setup
# Instalar UFW (opcional)
sudo apt install ufw
# Habilita UFW y permite el acceso al servidor de OpenVAS por los puertos 80 y 9392
sudo ufw enable
sudo ufw allow 80
sudo ufw allow 9392
sudo gvm-setup
[>] Starting PostgreSQL service
[-] ERROR: The default PostgreSQL version (16) is not 17 that is required by libgvmd
[-] ERROR: libgvmd needs PostgreSQL 17 to use the port 5432
[-] ERROR: Use pg_upgradecluster to update your PostgreSQL cluster
# Instala el asistente de greenbone
sudo gvm-check-setup
sudo gvm-start
# Abre un navegador en localhost por el puerto 9392
https://localhost:9392/
sudo gvm-stop
sudo gvm-start
REINDEX DATABASE template1;
ALTER DATABASE template1 REFRESH COLLATION VERSION;
sudo runuser -u postgres -- /usr/share/gvm/create-postgresql-database
[i] User _gvm already exists in PostgreSQL
[*] Creating database
[*] Creating permissions
CREATE ROLE
[*] Applying permissions
GRANT ROLE
[*] Creating extension uuid-ossp
CREATE EXTENSION
[*] Creating extension pgcrypto
CREATE EXTENSION
[*] Creating extension pg-gvm
CREATE EXTENSION
sudo runuser -u _gvm -- gvmd --create-user=kali --password=kali
User created.
sudo greenbone-feed-sync
sudo gvm-check-setup
sudo gvm-start
# Abre un navegador en localhost por el puerto 9392
https://localhost:9392/
sudo gvm-setup
[>] Starting PostgreSQL service
[-] ERROR: The default PostgreSQL version (16) is not 17 that is required by libgvmd
[-] ERROR: libgvmd needs PostgreSQL 17 to use the port 5432
[-] ERROR: Use pg_upgradecluster to update your PostgreSQL cluster
# Combrobar clusters de PostgreSQL
pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
16 main 5432 online postgres /var/lib/postgresql/16/main /var/log/postgresql/postgresql-16-main.log
17 main 5433 online postgres /var/lib/postgresql/17/main /var/log/postgresql/postgresql-17-main.log
# Detener cluster de PostgreSQL
sudo pg_ctlcluster 16 main stop
sudo nano /etc/postgresql/17/main/postgresql.conf
port = 5432
afsh4ck@kali$ sudo pg_ctlcluster 17 main start
afsh4ck@kali$ sudo gvm-setup
User created: admin
Password: some-random-password
sudo gvmd --user=admin --new-password=admin
sudo pg_dropcluster 16 main --stop
[*] Creating database
createdb: error: falló la creación de la base de datos: ERROR: discordancia en la versión de «collation» de la base de datos patrón «template1»
DETALLE: La base de datos patrón fue creada usando la versión 2.38, pero el sistema operativo provee la versión 2.40.
SUGERENCIA: Reconstruya todos los objetos de la base de datos patrón afectados por este ordenamiento y ejecute ALTER DATABASE template1 REFRESH COLLATION VERSION, o construya PostgreSQL con la versión correcta de la biblioteca.
sudo -u postgres psql
UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
REINDEX DATABASE template1;
ALTER DATABASE template1 REFRESH COLLATION VERSION;
UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';
UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template0';
REINDEX DATABASE template0;
ALTER DATABASE template0 REFRESH COLLATION VERSION;
UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template0';
\q
sudo -u postgres psql
psql: error: falló la conexión al servidor en el socket «/var/run/postgresql/.s.PGSQL.5432»: No existe el fichero o el directorio
¿Está el servidor en ejecución localmente y aceptando conexiones en ese socket?