Cómo instalar y usar GVM Vulnerability Scanner en Ubuntu 20.04

Inicio de sesión en GVM

GVM, tambi√©n llamado ¬ęGesti√≥n de vulnerabilidades Greenbone¬Ľ, es un software de gesti√≥n y escaneo de vulnerabilidades de c√≥digo abierto que proporciona un conjunto de pruebas de vulnerabilidad de red para encontrar lagunas de seguridad en sistemas y aplicaciones. Este es un conjunto de herramientas todo en uno utilizado por muchos expertos en seguridad y usuarios normales de todo el mundo.

En este tutorial, le mostraremos cómo instalar y configurar GVM en el servidor Ubuntu 20.04.

requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Se configura una contrase√Īa de root en el servidor.

Empezando

Antes de comenzar, deber√° actualizar los paquetes de su sistema a la √ļltima versi√≥n. Puede actualizarlos usando el siguiente comando:

apt-get update -y

Una vez que su servidor esté actualizado, puede continuar con el siguiente paso.

Instalar las dependencias requeridas

Antes de comenzar, deber√° instalar todas las dependencias requeridas en su sistema. Puede instalarlos ejecutando el siguiente comando:

apt-get install software-properties-common build-essential cmake pkg-config libglib2.0-dev libgpgme-dev libgnutls28-dev uuid-dev libssh-gcrypt-dev libldap2-dev doxygen graphviz libradcli-dev libhiredis-dev libpcap-dev bison libksba-dev libsnmp-dev gcc-mingw-w64 heimdal-dev libpopt-dev xmltoman redis-server xsltproc libical-dev gnutls-bin nmap rpm nsis curl wget fakeroot gnupg sshpass socat snmp smbclient libmicrohttpd-dev libxml2-dev python3-polib gettext rsync xml-twig-tools python3-paramiko python3-lxml python3-defusedxml python3-pip python3-psutil python3-impacket virtualenv vim git texlive-latex-extra texlive-fonts-recommended -y

Una vez que todas las dependencias estén instaladas, agregue el repositorio Yarn a su sistema:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

A continuación, actualice el repositorio e instale el paquete Yarn con el siguiente comando:

apt-get update -y
apt-get install yarn -y

A continuaci√≥n, actualice Yarn a la √ļltima versi√≥n con el siguiente comando:

yarn install
yarn upgrade

Una vez que haya terminado, puede continuar con el siguiente paso.

Instalar y configurar PostgreSQL

GVM utiliza PostgreSQL como base de datos, por lo que deber√° instalar el servidor PostgreSQL en su sistema. Puedes instalarlo con el siguiente comando:

apt-get install postgresql postgresql-contrib postgresql-server-dev-all -y

Una vez finalizada la instalación, inicie sesión en PostgreSQL y cree un usuario y una base de datos para GVM:

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

Luego, conéctese a la base de datos y luego cree un rol y extensiones con el siguiente comando:

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

A continuación, salga de PostgreSQL con el siguiente comando:

exit
exit

Descargar GVM

Primero, cree un directorio y un usuario separados para GVM con el siguiente comando:

mkdir /opt/gvm
adduser gvm --disabled-password --home /opt/gvm/ --no-create-home --gecos ''

A continuación, agregue un usuario redis a GVM y establezca el permiso adecuado con el siguiente comando:

usermod -aG redis gvm
chown gvm:gvm /opt/gvm/

A continuación, cree una variable de ruta para GVM con el siguiente comando:

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

A continuación, defina la ruta de la biblioteca GVM con el siguiente comando:

nano /etc/ld.so.conf.d/gvm.conf

Agregue la siguiente línea:

/opt/gvm/lib

A continuación, inicie sesión en el usuario de GVM y cree un directorio para todos los componentes:

su - gvm
mkdir src

A continuación, descargue todos los componentes necesarios dentro del directorio src con el siguiente comando:

cd src
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
git clone -b gvm-libs-20.08 --single-branch https://github.com/greenbone/gvm-libs.git
git clone -b openvas-20.08 --single-branch https://github.com/greenbone/openvas.git 
git clone -b gvmd-20.08 --single-branch https://github.com/greenbone/gvmd.git 
git clone -b master --single-branch https://github.com/greenbone/openvas-smb.git 
git clone -b gsa-20.08 --single-branch https://github.com/greenbone/gsa.git 
git clone -b ospd-openvas-20.08 --single-branch https://github.com/greenbone/ospd-openvas.git 
git clone -b ospd-20.08 --single-branch https://github.com/greenbone/ospd.git

Instalar gvm-libs

A continuación, cambie el directorio a gvm-libs, exporte la ruta de configuración y cree un directorio de compilación con el siguiente comando:

cd gvm-libs
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build

Luego, cambie el directorio para construir y compilar gvm-libs usando el siguiente comando:

cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make install

Instalar openvas-smb

A continuación, cambie el directorio a openvas-smb, exporte la ruta de configuración y cree un directorio de compilación con el siguiente comando:

cd /opt/gvm/src
cd openvas-smb
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH
mkdir build

A continuación, cambie el directorio para compilar y compilar openvas-smb con el siguiente comando:

cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make install

Instalar el esc√°ner OpenVAS

A continuación, cambie el directorio a openvas, exporte la ruta de configuración y cree un directorio de compilación con el siguiente comando: Publicidad

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

A continuación, cambie el directorio para compilar e instalar el escáner OpenVAS con el siguiente comando:

cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm ..
make
make doc
make install

A continuación, salga del usuario gvm con el siguiente comando:

exit

A continuación, cree la memoria caché para las bibliotecas compartidas instaladas con el siguiente comando:

export LC_ALL="C"
ldconfig

A continuación, copie el archivo de configuración de Redis del escáner OpenVAS con el siguiente comando:

cp /etc/redis/redis.conf /etc/redis/redis.orig
cp /opt/gvm/src/openvas/config/redis-openvas.conf /etc/redis/

A continuación, establezca la propiedad adecuada con el siguiente comando:

chown redis:redis /etc/redis/redis-openvas.conf

A continuación, actualice la ruta al socket Unix de Redis con el siguiente comando:

echo "db_address = /run/redis-openvas/redis.sock" > /opt/gvm/etc/openvas/openvas.conf

A continuación, habilite e inicie el servicio Redis con el siguiente comando:

systemctl enable [email protected]
systemctl start [email protected]

A continuación, deberá modificar el archivo sysctl.conf. Puedes hacerlo con el siguiente comando:

sysctl -w net.core.somaxconn=1024 
sysctl vm.overcommit_memory=1 
echo "net.core.somaxconn=1024" >> /etc/sysctl.conf 
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf

A continuación, vuelva a cargar sysctl con el siguiente comando:

sysctl -p

Crear archivo de servicio de Systemd

Primero, cree un archivo de servicio systemd para Transparent Huge Pages (THP) con el siguiente comando:

nano /etc/systemd/system/disable-thp.service

Agregue las siguientes líneas:

Description=Disable Transparent Huge Pages (THP)

[Service]
Type=simple
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"

[Install]
WantedBy=multi-user.target

Guarde y cierre el archivo, luego vuelva a cargar el servicio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicie el servicio disabled-thp y habilítelo para que se inicie al reiniciar el sistema:

systemctl start disable-thp 
systemctl enable disable-thp

A continuación, reinicie el servicio Redis para aplicar los cambios:

systemctl restart redis-server

A continuaci√≥n, deber√° conceder al usuario gvm que ejecute todos los comandos del sistema mediante sudo sin proporcionar una contrase√Īa. Puedes hacerlo con el siguiente comando:

sed 's/Defaults\s.*secure_path=\"\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin:\/snap\/bin\"/Defaults secure_path=\"\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin:\/snap\/bin:\/opt\/gvm\/sbin\"/g' /etc/sudoers | EDITOR='tee' visudo
echo "gvm ALL = NOPASSWD: /opt/gvm/sbin/openvas" > /etc/sudoers.d/gvm
echo "gvm ALL = NOPASSWD: /opt/gvm/sbin/gsad" >> /etc/sudoers.d/gvm

Actualizar NVT

A continuación, deberá actualizar el feed de Pruebas de vulnerabilidad de red desde Greenbone Security Feed/Community Feed.

Primero, inicie sesión en el usuario gvm con el siguiente comando:

su - gvm

A continuación, actualice el feed con el siguiente comando:

greenbone-nvt-sync

Una vez que se complete la actualización, actualice el servidor Redis con la misma información de VT de los archivos de VT:

sudo openvas --update-vt-info

Instale el administrador de vulnerabilidades de Greenbone

Primero, cambie el directorio a gvmd, exporte la ruta de configuración y cree un directorio de compilación con el siguiente comando:

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

A continuación, cambie el directorio para compilar e instalar gvmd con el siguiente comando:

cd build/ 
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm .. 
make 
make doc 
make install

A continuación, corrija el certificado con el siguiente comando:

gvm-manage-certs -a

Deberías obtener el siguiente resultado:

Generated private key in /tmp/tmp.gW57p1UV0s/cakey.pem.
Generated self signed certificate in /tmp/tmp.gW57p1UV0s/cacert.pem.
Installed private key to /opt/gvm/var/lib/gvm/private/CA/cakey.pem.
Installed certificate to /opt/gvm/var/lib/gvm/CA/cacert.pem.
Generated private key in /tmp/tmp.gW57p1UV0s/serverkey.pem.
Generated certificate request in /tmp/tmp.gW57p1UV0s/serverrequest.pem.
Signed certificate request in /tmp/tmp.gW57p1UV0s/serverrequest.pem with CA certificate in /opt/gvm/var/lib/gvm/CA/cacert.pem to generate certificate in /tmp/tmp.gW57p1UV0s/servercert.pem
Installed private key to /opt/gvm/var/lib/gvm/private/CA/serverkey.pem.
Installed certificate to /opt/gvm/var/lib/gvm/CA/servercert.pem.
Generated private key in /tmp/tmp.gW57p1UV0s/clientkey.pem.
Generated certificate request in /tmp/tmp.gW57p1UV0s/clientrequest.pem.
Signed certificate request in /tmp/tmp.gW57p1UV0s/clientrequest.pem with CA certificate in /opt/gvm/var/lib/gvm/CA/cacert.pem to generate certificate in /tmp/tmp.gW57p1UV0s/clientcert.pem
Installed private key to /opt/gvm/var/lib/gvm/private/CA/clientkey.pem.
Installed certificate to /opt/gvm/var/lib/gvm/CA/clientcert.pem.
Removing temporary directory /tmp/tmp.gW57p1UV0s.

Configurar y actualizar feeds (GVM)

Primero, cree un usuario administrador para acceder a la interfaz web de GVM:

gvmd --create-user=admin --password=admin

A continuación, busque el UUID de un usuario administrador con el siguiente comando:

gvmd --get-users --verbose

Deberías obtener el siguiente resultado:

admin 1288cbcf-23a0-407f-8013-b7a57acc5795

A continuación, modifique la configuración de gvmd con el UUID del usuario:

gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value 1288cbcf-23a0-407f-8013-b7a57acc5795

A continuación, sincronice todos los feeds de greenbone con el siguiente comando:

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

instalar gsa

Primero, cambie el directorio a gsa, exporte la ruta de configuración y cree un directorio de compilación con el siguiente comando:

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

A continuación, cambie el directorio para compilar e instalar gsa con el siguiente comando:

cd build/ 
cmake -DCMAKE_INSTALL_PREFIX=/opt/gvm .. 
make
make doc
make install

A continuación, cree un archivo de registro para gsa con el siguiente comando:

touch /opt/gvm/var/log/gvm/gsad.log

Configurar OSPD-OpenVAS

Primero, cambie el directorio a src y exporte la ruta de configuración con el siguiente comando:

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

A continuación, cree el entorno virtual de Python con el siguiente comando:

virtualenv --python python3.8 /opt/gvm/bin/ospd-scanner/

A continuación, active el entorno virtual con el siguiente comando:

source /opt/gvm/bin/ospd-scanner/bin/activate

A continuación, cree un directorio para ospd con el siguiente comando:

mkdir /opt/gvm/var/run/ospd/

A continuación, cambie el directorio a ospd e instale ospd con pip:

cd ospd 
pip3 install .

Luego, cambie el directorio a ospd-openvas e instale ospd-openvas usando el comando pip:

cd /opt/gvm/src/ospd-openvas
pip3 install .

A continuación, salga del usuario gvm con el siguiente comando:

exit

Cree un archivo de servicio de Systemd para GVM, GSAD y OpenVAS

Primero, cree un archivo de servicio systemd para gvmd con el siguiente comando:

nano /etc/systemd/system/gvmd.service

Agregue las siguientes líneas:

[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

Guarde y cierre el archivo, luego cree un archivo de servicio systemd para gsad con el siguiente comando:

nano /etc/systemd/system/gsad.service

Agregue las siguientes líneas:

[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

Guarde y cierre el archivo, luego cree un archivo de servicio systemd para openvas con el siguiente comando:

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

Agregue las siguientes líneas:

[Unit]
Description=Job that runs the ospd-openvas daemon
Documentation=man:gvm
After=network.target [email protected]
[email protected]

[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

Guarde y cierre el archivo, luego vuelva a cargar el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicie todos los servicios y habilítelos para que se inicien al reiniciar el sistema con el siguiente comando:

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

También puede verificar el estado de todos los servicios con el siguiente comando:

systemctl status gvmd
systemctl status gsad
systemctl status ospd-openvas

Modificar esc√°ner predeterminado

Primero, inicie sesión en el usuario gvm con el siguiente comando:

sudo su - gvm

A continuación, obtenga el UUID del escáner con el siguiente comando:

gvmd --get-scanners

Debería obtener el siguiente comando:

08b69003-5fc2-4037-a479-93b440211c73  OpenVAS  /var/run/ospd/ospd.sock  0  OpenVAS Default
6acd0832-df90-11e4-b9d5-28d24461215b  CVE    0  CVE

Ahora, modifique el esc√°ner predeterminado utilizando el UUID anterior:

gvmd --modify-scanner=08b69003-5fc2-4037-a479-93b440211c73 --scanner-host=/var/run/ospd/ospd.sock

Acceder a la interfaz web de GVM

En este punto, GVM está instalado y escuchando en los puertos 80 y 443. Puede acceder a él usando la URL https://ip-de-su-servidor. Será redirigido a la página de inicio de sesión de GVM como se muestra a continuación:

Inicio de sesión en GVM

Proporcione su nombre de usuario y contrase√Īa de administrador y haga clic en el Acceso bot√≥n. Deber√≠a ver el panel de GVM en la siguiente p√°gina:

Panel de GVM

Conclusión

¬°Felicidades! ha instalado y configurado correctamente GVM en el servidor Ubuntu 20.04. Ahora puede explorar el GVM para comenzar a escanear su sistema en busca de vulnerabilidades. No dude en preguntarme si tiene alguna pregunta.

Deja una respuesta

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