Instalacion de GVM 20 aka OpenVas sobre Ubuntu Server Instalacion de GVM 20 aka OpenVas sobre Ubuntu Server
La instalación de esta suite de seguridad que permite buscar y gestionar vulnerabilidades sobre nuestros sistemas se hace complicada para las nuevas versiones community.... Instalacion de GVM 20 aka OpenVas sobre Ubuntu Server

La instalación de esta suite de seguridad que permite buscar y gestionar vulnerabilidades sobre nuestros sistemas se hace complicada para las nuevas versiones community. En esta guia os detallamos como dejar instalado y funcionando GVM (Greenbone Vulnerability Management).

La última versión a día de hoy es GVM 20.08 siendo denominada source code edition la versión gratuita, podemos ver más info sobres esta versión:

https://community.greenbone.net/t/gvm-20-08-stable-initial-release-2020-08-12/6312

Para la instalación partimos de una máquina limpia de Ubuntu Server 20.04 con conexión a Internet y lista para comenzar la instalación, para la instalación no necesitas tener conocimientos de Linux muy avanzados ya que es simplemente copiar y pegar los comandos que aquí te indicamos, simplemente se cuidadoso en el copia pega y ve paso a paso comprobando que no falla ninguno de ellos.

Comenzamos… nos conectamos por SSH y comenzamos con los paquetes necesarios previos:

sudo apt-get install build-essential cmake gnutls-bin pkg-config glib2.0 libgnutls28-dev libssh-dev libssl-dev redis-server libhiredis-dev libxml2-dev doxygen xsltproc libldap2-dev libgcrypt-dev libpcap-dev libgpgme-dev libradcli-dev graphviz bison libksba-dev libical-dev libpq-dev postgresql postgresql-contrib postgresql-server-dev-all libopenvas-dev heimdal-dev libpopt-dev xmltoman gcc-mingw-w64 nmap libmicrohttpd-dev npm nodejs virtualenv python3-paramiko python3-lxml python3-defusedxml python3-pip python3-psutil

Instalamos el gestor de paquetes Yarn para Nodejs

sudo npm install -g yarn --prefix /usr/

Ahora vamos a crear el perfil y el usuario gvm que será con el que ejecutaremos la suite:

echo 'export PATH="$PATH:/opt/gvm/bin:/opt/gvm/sbin:/opt/gvm/.local/bin"' | sudo tee -a /etc/profile.d/gvm.sh
cd /etc/profile.d
sudo chmod 0755 gvm.sh
source /etc/profile.d/gvm.sh

Creamos el fichero y le introdimos el contenido:

sudo vi /etc/ld.so.conf.d/gvm.conf

# gmv-libs location
/opt/gvm/lib

Creamos el usuario y accedemos con él para continuar:

sudo mkdir /opt/gvm
sudo adduser gvm --disabled-password --home /opt/gvm/ --no-create-home --gecos ''
sudo usermod -aG redis gvm
sudo chown gvm:gvm /opt/gvm/
sudo su - gvm

Cambiamos algunos ajustes del usuario:

mkdir /opt/gvm/src
cd /opt/gvm/src/
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH

Una vez estamos en este punto vamos a pasar a la parte más compleja, descargar y compilar todos los modulos de la suite, empezamos con la librerias:

git clone -b gvm-libs-20.08 --single-branch https://github.com/greenbone/gvm-libs.git
cd gvm-libs/
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make install
cd /opt/gvm/src/

Samba para OpenVAS:

git clone -b master --single-branch https://github.com/greenbone/openvas-smb.git
cd openvas-smb/
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build
cd build/
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make install
cd /opt/gvm/src/

Dejamos el proceso que termine

OpenVAS Scanner:

git clone -b openvas-20.08 --single-branch https://github.com/greenbone/openvas.git
cd openvas/
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build
cd build/
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make install
exit

Configuración de Redis:

sudo su
export LC_ALL="C"
ldconfig
cp /etc/redis/redis.conf /etc/redis/redis.orig
cp /opt/gvm/src/openvas/config/redis-openvas.conf /etc/redis/
chown redis:redis /etc/redis/redis-openvas.conf
echo "db_address = /run/redis-openvas/redis.sock" > /opt/gvm/etc/openvas/openvas.conf
systemctl enable redis-server@openvas.service
systemctl start redis-server@openvas.service

Vamos ahora a modificar el fichero sudoers para dar permisos al usuario gvm, esto se hace con el comando visudo:

Modificamos la linea:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/gvm/sbin"

Añadimos al final:

# Allow gvm user to run ospd-openvas and launch OpenVAS with root privileges
gvm ALL = NOPASSWD: /opt/gvm/sbin/openvas
gvm ALL = NOPASSWD: /opt/gvm/sbin/gsad

Una vez echo esto, vamos a iniciar sesión con el usuario gvm y realizar la primera operación con OpenVas, actualizar los test de vulnerabilidades NVT.

exit
sudo su - gvm
greenbone-nvt-sync

Una vez finalice la actualización de los NVT, seguimos descargando y compilando módulos, ahora GVM:

cd /opt/gvm/src/
git clone -b gvmd-20.08 --single-branch https://github.com/greenbone/gvmd.git
cd gvmd/
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build
cd build/
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make install
exit

Configuración de la base de datos PostgreSQL, creación de usuario y esquema de BD:

sudo -u postgres bash

export LC_ALL="C"
createuser -DRS gvm
createdb -O gvm gvmd

Crear el rol y asignar permisos, en esta parte te recomiendo ir corriendo los comandos uno por uno:

psql gvmd

create role dba with superuser noinherit;
grant dba to gvm;create extension "uuid-ossp";create extension "pgcrypto";exit
\q
exit


Generamos los certificados de GVM:

sudo su - gvm
gvm-manage-certs -a

Ahora vamos a crear una contraseña para la cuenta de administrador de acceso a la suite GVM

/opt/gvm/sbin/gvmd --create-user=admin --password=yoursecurepassword

Obtenemos el UUID de la cuenta de admin:

gvmd --get-users --verbose

Y con eses UUID modificamos la configuración del motor gvmd:

gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

Ahora vamos a actualizar los feeds para tener nuestro GVM con las ultimas definiciones de vulnerabilidades, es un proceso lento.

Lo lanzamos y esperamos que termine. Posteriormente veremos como automatizar la actualización usando el crontab, ya que estas definiciones de vulnerabilidades se actualizan constantemente y es muy importante tenerlas actualizadas antes de nuestros escaneos.

greenbone-feed-sync --type GVMD_DATA
greenbone-feed-sync --type SCAP
greenbone-feed-sync --type CERT

Continuamos con el módulo GSA, lo descargamos y compilamos:

cd src/
git clone -b gsa-20.08 --single-branch https://github.com/greenbone/gsa.git
cd gsa/
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build
cd build/
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make install
touch /opt/gvm/var/log/gvm/gsad.log

Configurar el venv de Python

exit
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.7 python3.7-dev -y

Crear nuestro venv para GVM:

sudo su - gvm
cd /opt/gvm/src
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
virtualenv --python python3.7  /opt/gvm/bin/ospd-scanner/
source /opt/gvm/bin/ospd-scanner/bin/activate

Instalamos el siguiente módulo, ospd y ospd-openvas sobre en venv que hemos creado:

git clone -b ospd-openvas-20.08 --single-branch  https://github.com/greenbone/ospd-openvas.git
cd ospd-openvas/
pip3 install .
git clone -b ospd-20.08 --single-branch https://github.com/greenbone/ospd.git
mkdir /opt/gvm/var/run/ospd/
cd ospd/
pip3 install .
cd /opt/gvm/src

Salimos y creamos un nuevo servicio para que se inicie el Greenbone Manager al arranque:

exit
sudo su
nano /etc/systemd/system/gvmd.service

Introducimos lo siguiente en el fichero gvmd.service

[Unit]
Description=Open Vulnerability Assessment System Manager Daemon
Documentation=man:gvmd(8) https://www.greenbone.net
Wants=postgresql.service ospd-openvas.service
After=postgresql.service ospd-openvas.service

[Service]
Type=forking
User=gvm
Group=gvm
PIDFile=/opt/gvm/var/run/gvmd.pid
WorkingDirectory=/opt/gvm
ExecStart=/opt/gvm/sbin/gvmd --osp-vt-update=/opt/gvm/var/run/ospd.sock
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
Restart=on-failure
RestartSec=2min
KillMode=process
KillSignal=SIGINT
GuessMainPID=no
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Hacemos lo mismo para el GSA (Greenbone Security Assitant):

nano /etc/systemd/system/gsad.service

Introducimos lo siguiente en el fichero gsad.service:

[Unit]
Description=Greenbone Security Assistant (gsad)
Documentation=man:gsad(8) https://www.greenbone.net
After=network.target
Wants=gvmd.service

[Service]
Type=forking
PIDFile=/opt/gvm/var/run/gsad.pid
WorkingDirectory=/opt/gvm
ExecStart=/opt/gvm/sbin/gsad --drop-privileges=gvm
Restart=on-failure
RestartSec=2min
KillMode=process
KillSignal=SIGINT
GuessMainPID=no
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Misma operación para el servicio ospd-openvas:

nano /etc/systemd/system/ospd-openvas.service

Introducimos lo siguiente en el fichero ospd-openvas.service:

[Unit]
Description=Job that runs the ospd-openvas daemon
Documentation=man:gvm
After=network.target redis-server@openvas.service
Wants=redis-server@openvas.service

[Service]
Environment=PATH=/opt/gvm/bin/ospd-scanner/bin:/opt/gvm/bin:/opt/gvm/sbin:/opt/gvm/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Type=forking
User=gvm
Group=gvm
WorkingDirectory=/opt/gvm
PIDFile=/opt/gvm/var/run/ospd-openvas.pid
ExecStart=/opt/gvm/bin/ospd-scanner/bin/python /opt/gvm/bin/ospd-scanner/bin/ospd-openvas --pid-file /opt/gvm/var/run/ospd-openvas.pid --unix-socket=/opt/gvm/var/run/ospd.sock --log-file /opt/gvm/var/log/gvm/ospd-scanner.log --lock-file-dir /opt/gvm/var/run/ospd/
Restart=on-failure
RestartSec=2min
KillMode=process
KillSignal=SIGINT
GuessMainPID=no
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Una vez tenemos los tres servicios configuramos, vamos a habilitarlos, ya casi estamos terminando:

systemctl daemon-reload
systemctl enable gvmd
systemctl enable gsad
systemctl enable ospd-openvas
systemctl start gvmd
systemctl start gsad
systemctl start ospd-openvas

Podemos verificar los servicios y si esta todo ok lo tenemos:

systemctl status gvmd
systemctl status gsad
systemctl status ospd-openvas

Debemos ver algo así en cada uno de ellos:

Abrimos un navegador web y accedemos por https://ip_de_la_maquina, ya podemos logarnos con el usuario y contraseña que generamos antes:

Modificar el escaner por defecto y programar el update automático de los feeds:

sudo su - gvm
cd /opt/gvm/src/
gvmd --get-scanners
gvmd --modify-scanner=08b69003-5fc2-4037-a479-93b440211c73  --scanner-host=/opt/gvm/var/run/ospd.sock

Creamos el fichero de update para el cron:

touch /opt/gvm/bin/openvas-update
chmod a+x /opt/gvm/bin/openvas-update
nano /opt/gvm/bin/openvas-update

Con el siguiente contenido:

/opt/gvm/bin/greenbone-nvt-sync
/opt/gvm/sbin/greenbone-feed-sync --type GVMD_DATA
/opt/gvm/sbin/greenbone-feed-sync --type SCAP
/opt/gvm/sbin/greenbone-feed-sync --type CERT

Nos falta programar el update a las 12 de la noche en el crontab:

Esperamos a que los feeds esten totalmente actualizados antes de empezar a realizar escaneos:

En próximas entradas veremos como añadir sondas para escnaeo de redes remotas e integrarlo todo sobre un mismo manager.

 

Referencias:

https://community.greenbone.net/t/gvm20-08-install-on-ubuntu-20-04-script/7409

https://linoxide.com/install-gvm-vulnerability-scanner-on-ubuntu-20-04/

 

gpinero

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

CAPTCHA ImageChange Image

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies