Page cover

⚙️OpenVAS

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.

Instalación

Instalar requisitos

# 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

Si al ejecutar el gvm-setup nos da el siguiente error deberemos cambiar del clúster 16 al 17 de PostgreSQL:

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

Instalar asistente de Greenbone

# Instala el asistente de greenbone
sudo gvm-check-setup
sudo gvm-start

# Abre un navegador en localhost por el puerto 9392
https://localhost:9392/

Reiniciar OpenVAS

sudo gvm-stop
sudo gvm-start
REINDEX DATABASE template1;
ALTER DATABASE template1 REFRESH COLLATION VERSION;

Crear base de datos

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

Crear un nuevo usuario para OpenVAS

sudo runuser -u _gvm -- gvmd --create-user=kali --password=kali
User created.

Actualizar feeds de vulnerabilidades

sudo greenbone-feed-sync

Iniciar OpenVAS

sudo gvm-check-setup
sudo gvm-start

# Abre un navegador en localhost por el puerto 9392
https://localhost:9392/

Errores comunes de instalación

Error de versión de PostgreSQL

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

Configurar PostgreSQL

OpenVAS necesita tener habilitado el clúster de PostgreSQL 17. Si tenemos una versión anterior podemos deshabilitarla de la siguiente manera:

# 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

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:

sudo nano /etc/postgresql/17/main/postgresql.conf

Busca la línea donde se especifica el puerto y cambia 5433 por 5432:

port = 5432

Iniciar clúster PostgreSQL17

afsh4ck@kali$ sudo pg_ctlcluster 17 main start

afsh4ck@kali$ sudo gvm-setup

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:

User created: admin
Password: some-random-password

Si lo necesitas, puedes cambiar la contraseña usando:

sudo gvmd --user=admin --new-password=admin

Eliminar el clúster antiguo (opcional)

Si confirmas que PostgreSQL 17 está funcionando correctamente, puedes eliminar el clúster antiguo (versión 16):

sudo pg_dropcluster 16 main --stop

Error de collation

[*] 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.

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:

sudo -u postgres psql

2. Permitir cambios en template1:

UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';

3. Reconstruir índices y actualizar la collation en template1:

REINDEX DATABASE template1;
ALTER DATABASE template1 REFRESH COLLATION VERSION;

4. Marcar template1 como plantilla nuevamente:

UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';

5. Hacer lo mismo con template0:

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';

6. Salir del cliente de PostgreSQL:

\q

Error al arrancar PostgreSQL

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?

Reiniciar servicio::

sudo systemctl restart postgresql

Escaneo con OpenVAS

Una vez logueados debemos esperar hasta que se sincronicen los feeds en Administration/Feed Status. Deben quedar en Status Current.

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:

T:1-65535,U:1-65535

2. Crear Task de escaneo

En Scan/Tasks añadimos una nueva tarea:

Última actualización

¿Te fue útil?