Instalando Greenbone Vulnerability Management (OpenVAS)
En este post veremos la instalación de GVM (Greenbone Vulnerability Management) antiguamente conocido como OpenVAS (Open Vulnerability Assessment System). Una solución que nos ayudará a conocer las vulnerabilidades que tienen nuestros sistemas, y en un futuro documento lo integraremos con Centreon.
Esan dut, ideia honakoa da: gure sistemetan edozein ahulgune aztertuko eta bilatuko duen irtenbide bat ezartzea, eguneratzen dena eta zerrenda edo CVEekin alderatzen duena (Ohiko Ahulguneak eta Expozizioak). Instalazio luze baten ondoren, jadanik kudeaketa web erraz baten bidez egin ahal izango dugu (edo baita CLI ere) eskaneatzeko zereginak sortu ahal izango ditugu eta txostenetara sartzeko aukera izango dugu, aurre egiteko dituzten segurtasun arazo posibleak aztertzeko. Y bueno, beste dokumentu batean ikusi ahal izango duguna da irudikatzen duzuena, Centreonetik zentralizatzeko ahalmena, gure makinak dituzten ahulguneak kontrola ditzagun, halako makina bat araudi bat ez betetzen badu, jakin egingo dugu.
Ubuntu Server makina batekin hasten gara 20.10, GVM-20.08 beharrezko menpekotasunekin hasten gara (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
Yarn instalatzen dugu:
sudo npm install -g yarn --prefix /usr/
GVM erabiltzailearentzako profila sortzen dugu:
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 correct:
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**********@*****as.service systemctl start re**********@*****as.service
GVM-rako baimenak ezartzen ditugu. ‘visudo’ exekutatzen’ eta hurrengoa gehitzen dugu sudoers baimenak emateko:
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" ... # Sudo taldekideenak edozein komando exekutatu dezan baimentzea %sudo ALL=(DENAK:DENAK) DENAK ### GVM erabiltzaileak ospd-openvas exekutatu eta OpenVAS abiarazi dezala root baimenekin gvm ALL = NOPASSWD: /opt/gvm/sbin/openvas gvm ALL = NOPASSWD: /opt/gvm/sbin/gsad ...
Orain baimen zuzena daukagunez, NVT ahultasun probak eguneratuko ditugu (Sareko Ahultasun Probak) Greenbone komunitatearen feed-etik, 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
Corregimos los permisos y creamos las extensiones de la bd:
psql gvmd create role dba with superuser noinherit; grant dba to gvm;
create extension "uuid-ossp";
create extension "pgcrypto";
exit
exit
Generamos los certificados para GVM:
sudo su - gvm gvm-manage-certs -a
Creamos la cuenta 'admin’ administrativa para GVM, no utilizar caracteres especiales en la contraseña:
/opt/gvm/sbin/gvmd --create-user=admin --password=CONTRASEÑA
Sacamos y anotamos el UUID de la cuenta que acabamos de crear:
gvmd --get-users --verbose
Utilizando el UUID del usuario admin modificamos la configuración de gvmd:
gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Actualizamos la sincronización de los feeds de Greenbone, ojo que esto tardará:
greenbone-feed-sync --type GVMD_DATA greenbone-feed-sync --type SCAP greenbone-feed-sync --type CERT
Descargamos y compilamos Greenbone Security Assistant (GSA):
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
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
Instalamos el entorno virtual:
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
Descargamos e instalamos ospd:
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
Descargamos e instalamos ospd-openvas:
git clone -b ospd-openvas-20.08 --single-branch https://github.com/greenbone/ospd-openvas.git cd ospd-openvas/ pip3 install .
Lo siguiente será hacer que inicie Greenbone Manager con la máquina, mediante un servicio:
exit sudo su nano /etc/systemd/system/gvmd.service
E introducimos la siguiente configuración:
[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
Creamos ahora el servicio para iniciar Greenbone Security Assistant (GSA) con:
nano /etc/systemd/system/gsad.service
Y pegamos esta configuración al fichero:
[Unit] Description=Greenbone Security Assistant (gsad) Documentation=man:gsad(8) https://www.greenbone.net After=network.target Wants=gvmd.service [Service] Mota=forking PIDFile=/opt/gvm/var/run/gsad.pid Lan-Eremua=/opt/gvm ExecStart=/opt/gvm/sbin/gsad --drop-privileges=gvm Berrabiarazi=hutsegitean BerrabiaraziSeg=2min KillModua=prozesua KillSeinale=SIGINT UsteNagusiPID=ez PribatuaTmp=egia [Install] WantedBy=multi-user.target
Oraingoan ospd-openvas abiaraziko duen zerbitzua sortzen dugu:
nano /etc/systemd/system/ospd-openvas.service
eta berdina, hurrengo konfigurazioa itsatsi:
[Unit] Deskribapena=ospd-openvas demonioa exekutatzen duen lana Dokumentazioa=man:gvm Ondoren=network.target re**********@*****as.service Nahiko=re**********@*****as.service [Service] Ingurunea=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 generados los 3 servicios para levantar los demonios, recargamos, habilitamos los servicios para que arranquen con el sistema y los levantamos:
systemctl daemon-reload
systemctl enable gvmd
systemctl enable gsad
systemctl enable ospd-openvas
systemctl start gvmd
systemctl start gsad
systemctl start ospd-openvas
Zerbitzuak martxan daudela egiaztatzen dugu eta ondo goaz:
systemctl status gvmd systemctl status gsad systemctl status ospd-openvas
Jada gure Greenbone Security Assistant helbidea nabigatzaile batekin ireki ahal izango dugu: https://DIRECCIÓN_IP aurreko erabiltzailearekin sortua. Ohartuko gara that “Administrazioa” > “Feed Status”, jarri du “Update in progress…”, prozesu honek asko irabaziko du, egon behar dugu eguneratzea bukatu arte.
Ondo, eskaneatzeak egiteko aurretik, betebeharrak erabiliz, OpenVASen defektuzko eskaneatzailea aldatu behar dugu, Shell-etik gvm erabiltzaile gisa saioa hasten dugu:
sudo su - gvm
Aktualizatutako OpenVAS eskaneatzailearen UUIDa zerrendatzen eta kopiatzen dugu:
cd /opt/gvm/src/ gvmd --get-scanners gvmd --modify-scanner=08b69003-5fc2-4037-a479-93b440211c73 --scanner-host=/opt/gvm/var/run/ospd.sock
Ona eta azkenik, si queremos que se actualice de manera programada crearemos el siguiente fichero:
nano /opt/gvm/bin/openvas-update
Le ponemos 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
Lo hacemos ejecutable:
chmod a+x /opt/gvm/bin/openvas-update
Y lo ponemos en cron:
crontab -e
Y lo dejamos programado por ejemplo diariamente a las 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… eta esan bezala, en siguientes posts veremos cómo integrarlo con Centreon.











































