Instalando o Greenbone Vulnerability Management (OpenVAS)
Neste post vamos olhar para a instalação do GVM (Gestão de Vulnerabilidades Greenbone) anteriormente conhecido como OpenVAS (Sistema Aberto de Avaliação de Vulnerabilidades). Uma solução que nos ajudará a conhecer as vulnerabilidades que os nossos sistemas têm, e num futuro documento iremos integrá-lo com o Centreon.
O que eu disse, a ideia é implementar uma solução que analise e procure qualquer vulnerabilidade nos nossos sistemas, que se atualize e compare com listas ou CVE (Vulnerabilidades e Exposições Comuns). Uma vez concluída a instalação demorada, poderemos já, através de uma gestão web simples (ou também CLI) criar tarefas de varredura e poderemos aceder aos relatórios para analisar os possíveis problemas de segurança que enfrentamos. Oh, bem, noutro documento veremos o que imaginam, o poder centralizar a partir do Centreon para podermos controlar as vulnerabilidades das nossas máquinas, assim, se alguma máquina não cumprir alguma norma, ficaremos a saber.
Começamos com uma máquina Ubuntu Server 20.10, começamos com as dependências necessárias para o 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
Instalamos o yarn:
sudo npm install -g yarn --prefix /usr/
Criamos o perfil para o utilizador do GVM:
echo 'export PATH="$CAMINHO:/opt/gvm/bin:/opt/gvm/sbin:/opt/gvm/.local/bin"' | sudo tee -a /etc/profile.d/gvm.shsudo chmod 0755 /etc/profile.d/gvm.shsource /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 correto:
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
Establecemos los permisos para GVM. ejecutando 'visudo’ y 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" ... # Permitir que os membros do grupo sudo executem qualquer comando %sudo ALL=(ALL:ALL) ALL ### Permitir que o usuário gvm execute ospd-openvas e inicie OpenVAS com privilégios de raiz gvm ALL = NOPASSWD: /opt/gvm/sbin/openvas gvm ALL = NOPASSWD: /opt/gvm/sbin/gsad ...
Ahora que ya tenemos los permsiso corretos, vamos a atualizar 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
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";
sair
sair
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-XXXXXXXXXXXX
Atualizamos 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:
[Unidade] Description=Open Vulnerability Assessment System Manager Daemon Documentation=man:gvmd(8) https (em inglês)://www.greenbone.net Wants=postgresql.service ospd-openvas.service After=postgresql.service ospd-openvas.service [Serviço] 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 [Instalar] WantedBy=multi-user.target
Creamos ahora el servicio para iniciar Greenbone Security Assistant (GSA) com:
nano /etc/systemd/system/gsad.service
Y pegamos esta configuración al fichero:
[Unidade] Description=Greenbone Security Assistant (gsad) Documentation=man:gsad(8) https (em inglês)://www.greenbone.net After=network.target Wants=gvmd.service [Serviço] 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 [Instalar] WantedBy=multi-user.target
Creamos en esta ocasión el servicio que levantará ospd-openvas con:
nano /etc/systemd/system/ospd-openvas.service
Y lo mismo, pegamos la siguiente configuración:
[Unidade] Description=Job que executa o daemon ospd-openvas Documentation=man:gvm After=network.target re**********@*****as.service Wants=re**********@*****as.service [Serviço] 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 [Instalar] 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
Verificamos que los servicios están levantados y vamos bien:
systemctl status gvmd systemctl status gsad systemctl status ospd-openvas
Podremos ya abrir con un navegador la dirección de nuestro Greenbone Security Assistant: https (em inglês)://DIRECCIÓN_IP con el usuario generado anteriormente. Nos daremos cuenta que en “Administração” > “Feed Status”, pondrá “Update in progress…”, este proceso tardará bastante, tenemos que esperar a que finalice de atualizar.
Nada mau, antes de poder hacer escaneos mediante las tareas, necesitamos modificar el scanner por defecto de OpenVAS, nos logueamos desde shell como el usuario gvm:
sudo su - gvm
Listamos y copiamos el UUID atual de los escaneo predeterminado de OpenVAS:
cd /opt/gvm/src/ gvmd --get-scanners gvmd --modify-scanner=08b69003-5fc2-4037-a479-93b440211c73 --scanner-host=/opt/gvm/var/run/ospd.sock
Vale y por último, 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
Tornamo-lo executável:
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… E o que eu disse, en siguientes posts veremos cómo integrarlo con Centreon.









































