Instalando Greenbone Vulnerability Management (OpenVAS)

En aquest post veurem la instal·lació de GVM (Greenbone Vulnerability Management) antigament conegut com a OpenVAS (Open Vulnerability Assessment System). Una solució que ens ajudarà a conèixer les vulnerabilitats que tenen els nostres sistemes, i en un futur document l'integrarem amb Centreon.

El que s'ha dit, la idea es desplegar una solución que analice y busque cualquier vulnerabilidad en nuestros sistemas, que se actualice y compare con listas o CVE (Common Vulnerabilities and Exposures). Una vez la larga instalación, podremos ya mediante una gestión web sencilla (o también CLI) crear tareas de escaneo y podremos acceder a los informes para analizar los posibles problemas de seguridad a los que nos enfrentamos. I bo, en un altre document veurem el que imagineu, el poder centralitzar des de Centreon que puguem controlar les vulnerabilitats de les nostres màquines, així si alguna màquina no compleix alguna normativa, ho sabrem.

Comencem amb una màquina Ubuntu Server 20.10, comencem amb les dependències necessàries per a GVM-20.08 (OpenVAS 20.08):

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

Instal·lem yarn:

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

Creamos el perfil para el usuario de GVM:

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

Creamos el fichero /etc/ld.so.conf.d/gvm.conf con el siguiente contenido:

# gmv-libs location
/opt/gvm/lib

Creamos el usuario GVM, corregimos permisos y nos logueamos como él:

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

Creamos el directorio src y establecemos la variable con el path correcto:

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

Descargamos y compilamos las librerías de GVM:

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/

Descargamos y compilamos el paquete de 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/

Descargamos y compilamos 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

Configuramos 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 re**********@op*****.service
systemctl start re**********@op*****.service

Establecemos los permisos para GVM. ejecutando ‘visudoy añadimos lo siguiente para darle permisos de sudoers:

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/gvm/sbin"
...
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

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

Ahora que ya tenemos los permsiso correctos, vamos a actualizar los tests de vulnerabilidades NVT (Network Vulnerability Tests) desde el feed de la comunidad de Greenbone, ojo que este proceso tardará bastante:

exit
sudo su - gvm
greenbone-nvt-sync

Descargamos y compilamos Greenbone Vulnerability Manager (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

Configuramos la base de datos de PostgreSQL, creamos el usuario y la BD:

sudo -u postgres bash
export LC_ALL="C"
createuser -DRS gvm
createdb -O gvm gvmd

Corregim els permisos i creem les extensions de la bd:

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

Generem els certificats per a GVM:

sud el seu - gvm gvm-manage-certs -a

Creem el compte 'admin’ administrativa per a GVM, no utilitzar caràcters especials en la contrasenya:

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

Treiem i anotem l'UUID del compte que acabem de crear:

gvmd --get-users --verbose

Utilitzant l'UUID de l'usuari admin modifiquem la configuració de gvmd:

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

Actualitzem la sincronització dels feeds de Greenbone, ull que això trigarà:

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

Descarregamos i compilamos Greenbone Security Assistant (GSA):

cd src/ git clon -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 ..
fer fer doc fer instal·lar tocar /opt/gvm/var/log/gvm/gsad.log

Configuramos el entorno virtual de python:

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

Instal·lamos l'entorn virtual:

sud el seu - gvm cd /opt/gvm/src exportació 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

Descarregamos i instal·lamos ospd:

git clon -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

Descarreguem i instal·lem ospd-openves:

git clone -b ospd-openvas-20.08 --single-branch https://github.com/greenbone/ospd-openvas.git cd ospd-openvas/ pip3 install .

El següent serà fer que iniciï Greenbone Manager amb la màquina, mitjançant un servei:

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

I introduïm la següent configuració:

[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 fail-failure RestartSec=2min KillMode=process KillSignal=SIGINT GuessMainPID=no PrivateTmp=true

[Install]
WantedBy=multi-user.target

Creamos ara el servei per iniciar Greenbone Security Assistant (GSA) amb:

nano /etc/systemd/system/gsad.service

I pegamos aquesta configuració al fichero:

[Unit]
Descripció=Assistent de seguretat Greenbone (GSAD)
Documentació=home:GSAD(8) https://www.greenbone.net After=network.target Wants=gvmd.service

[Service]
Tipus = bifurcació PIDFile = / opt / gvm / var / run / gsad.pid WorkingDirectory = / opt / gvm ExecStart = / opt / gvm / gvm / sbin/gsad --drop-privileges = gvm Restart = en cas d'error RestartSec = 2min KillMode = procés KillSignal = SIGINT GuessMainPID = no PrivateTmp = true

[Install]
WantedBy=multi-user.target

Creamos en aquesta ocasió el servei que aixecarà ospd-obertes amb:

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

I el mateix, pegamos la següent configuració:

[Unit]
Descripció=Treball que executa el dimoni ospd-openvas Documentation=man:gvm After=xarxa.objectiu re**********@op*****.service
Vols=re**********@op*****.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 vegada generats els 3 serveis per aixecar els dimonis, recarreguem, habiliten els serveis perquè arrenquin amb el sistema i els aixequem:

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

Verificam que els serveis estan aixecats i anem bé:

systemctl status gvmd systemctl status gsad systemctl status ospd-openvas

Podrem ja obrir amb un navegador la direcció del nostre Greenbone Security Assistant: https://DIRECCIÓN_IP amb l' usuari generat anteriorment. Ens adonem que en “Administration” > “Feed Status”, posarà “Update in progress…”, aquest procés trigarà bastant, hem d'esperar que finalitzi d'actualitzar.

Bé, abans de poder fer escanejos mitjançant les tasques, necessitem modificar l'scanner per defecte d'OpenVAS, ens lloguem des de shell com l'usuari gvm:

sud el seu - gvm

Llistem i copiam l'UUID actual dels escaneigs d'OpenVAS:

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

Val i per últim, si volem que s'actualitzi de manera programada crearem el següent fitxer:

nano /opt/gvm/bin/openvas-update

Li posem el següent contingut:

/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

Ho fem executable:

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

I ho posem en cron:

crontab -e

I ho deixem programat per exemple diàriament a les 0h:

0 0 * * * /opt/gvm/bin/openvas-update

Esperemos que os interese, tras esta instalación lo que queda está chupado, definir los targets o destinos de los chequeos, crear tareas programadas para realizar escaneos en búsqueda de vulnerabilidades… i el que s' ha dit, en siguientes posts veremos cómo integrarlo con Centreon.

Posts recomanats

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dubtis a contactar amb mi, us intentareu ajudar sempre que pugui, compartir és viure ;) . Gaudir dels documents!!!