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.

Postagens recomendadas

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Não hesite em contactar-me, Vou tentar ajudá-lo sempre que puder, Compartilhar é viver ;) . Desfrute de documentos!!!