LINUX

Cómo instalar GVM Vulnerability Scanner en Ubuntu 20.04

GVM (Greenbone Vulnerability Management) es una solución de código abierto para el análisis de vulnerabilidades y la gestión de vulnerabilidades. GVM se conocía anteriormente como OpenVAS.

Greenbone Vulnerability Manager y OpenVAS son ampliamente utilizados por varias personas en el mundo, incluidos expertos en seguridad y usuarios comunes que usaron todo esto en un conjunto de herramientas que funciona en conjunto para ejecutar las pruebas en computadoras cliente utilizando su propia base de datos de debilidades conocidas y hazañas.

En este artículo, mostraremos cómo instalar y configurar GVM en Ubuntu 20.04 para asegurarnos de que sus servidores estén protegidos contra ataques.

Sistema base

Configuraremos Greenbone Vulnerability Manager 20.08 con la instalación básica de paquetes del sistema en Ubuntu 20.04.

Instalar requisitos previos

Primero instale los siguientes paquetes de dependencias.

sudo su -
apt update &&
apt -y dist-upgrade &&
apt -y autoremove &&
apt install -y software-properties-common &&
apt install -y 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 postgresql postgresql-contrib postgresql-server-dev-all 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 &&
apt install -y texlive-latex-extra --no-install-recommends &&
apt install -y texlive-fonts-recommended &&
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 &&
apt update &&
apt -y install yarn &&
yarn install &&
yarn upgrade

Crear el usuario de GVM

Pegue los siguientes comandos en la terminal para crear el usuario gvm que se utilizará en el proceso de instalación y compilación:

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 &&
bash -c 'cat < /etc/ld.so.conf.d/gvm.conf
# gmv libs location
/opt/gvm/lib
EOF'
mkdir /opt/gvm &&
adduser gvm --disabled-password --home /opt/gvm/ --no-create-home --gecos '' &&
usermod -aG redis gvm &&
chown gvm:gvm /opt/gvm/

Ahora inicie sesión como usuario de gvm. A partir de ahora, los encabezados de título estarán marcados con qué usuario se necesita para ejecutar comandos como.

sudo su - gvm

Descargar e instalar software (GVM)

Ahora cree la carpeta src y git clone el código fuente de GVM:

mkdir src &&
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 (GVM)

En este paso compilaremos el gvm-libs desde el github:

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

Instalar openvas-smb (GVM)

Ahora ingrese al directorio openvas-smb y compile el código fuente:

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 &&
make install &&
cd /opt/gvm/src

Instale el escáner (GVM)

Como en los pasos anteriores, ahora crearemos e instalaremos el escáner openvas:

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 &&
cd /opt/gvm/src

Arreglar redis para la instalación de OpenVAS (root)

Ahora debemos cerrar la sesión actual para volver al usuario con privilegios escribiendo ‘salir’ en la terminal.
Ahora pega el siguiente código en la terminal:

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 redis-server@openvas.service &&
systemctl start redis-server@openvas.service
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
cat << /etc/systemd/system/disable-thp.service
[Unit]
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
EOF
systemctl daemon-reload &&
systemctl start disable-thp &&
systemctl enable disable-thp &&
systemctl restart redis-server

Agregue la ruta / opt / gvm / sbin a la variable secure_path:

sed 's/Defaultss.*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

Permita que el usuario que ejecuta ospd-openvas se inicie con permisos de root:

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 (GVM)

Ahora ejecutaremos greenbone-nvt-sync para actualizar las definiciones del archivo de vulnerabilidad.
Primero vuelva a la sesión de usuario de GVM:

sudo su – gvm

Y ejecuta lo siguiente:

greenbone-nvt-sync

Si obtiene errores de tiempo de espera, lo más probable es que haya un firewall en el camino. Asegúrese de abrir el puerto TCP 873. Si obtiene errores de conexión rechazada, espere un poco y vuelva a intentarlo.

Esto lleva mucho tiempo, por lo que tendrá que ser paciente.

Cargar complementos en redis con OpenVAS (GVM)

Esto puede llevar un poco de tiempo dependiendo de su hardware y no le proporciona comentarios cuando ejecuta el comando.

sudo openvas -u

Nota: Si le faltan errores de biblioteca, escriba lo siguiente (una línea a la vez):

exit
echo "/opt/gvm/lib > /etc/ld.so.conf.d/gvm.conf 
ldconfig
sudo su - gvm

Administrador de instalación (GVM)

Ahora ingrese al directorio gvmd para construir e instalar Greenbone Manager:

cd /opt/gvm/src/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 &&
cd /opt/gvm/src

Configurar PostgreSQL (usuario de Sudoers)

Cambie a un usuario en sudoers (no use root o gvm para esto). La sesión del usuario se cambiará con el comando «sudo -u postgres bash» a continuación.
Ejecute una línea a la vez.

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

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

Certificados de reparación (GVM)

Escriba una línea a la vez:

sudo su - gvm
gvm-manage-certs -a

Crear usuario administrador (GVM)

Esto creará un nombre de usuario y una contraseña iniciales. Recuerda cambiarlo más tarde.

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

Configurar y actualizar fuentes (GVM)

Para que los feeds se actualicen por completo, necesitaremos establecer «Propietario de importación de feeds» en el UUID del administrador. Primero, busque el UUID del nuevo usuario administrador

gvmd --get-users --verbose

Debería obtener algo como esto:

admin fb019c52-75ec-4cb6-b176-5a55a9b360bf

Use la cadena junto al administrador en el siguiente comando:

gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value (output string from the above command fb019c52-75ec-4cb6-b176-5a55a9b360bf)

Entonces, el comando de ejemplo sería:

$ gvmd --get-users --verbose
admin fb019c52-75ec-4cb6-b176-5a55a9b360bf
$ gvmd --modify-setting 78eceaec-3385-11ea-b237-28d24461215b --value fb019c52-75ec-4cb6-b176-5a55a9b360bf

Ejecute los siguientes tres comandos una línea a la vez. Si obtiene errores de conexión rechazada, intente el comando nuevamente hasta que tenga éxito. Estos comandos también llevarán algún tiempo.

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

Instalar gsa (GVM)

Nuevamente, como en los pasos anteriores, ingrese la carpeta gsa y compile el código fuente de gsa:

cd /opt/gvm/src/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 &&
cd /opt/gvm/src

Configurar OSPD-OpenVAS

Instale virtualenv (GVM)

Nota: Puede que tenga que cambiar –python python3.8 para que coincida con su versión de Python instalada.

cd /opt/gvm/src &&
export PKG_CONFIG_PATH=/opt/gvm/lib/pkgconfig:$PKG_CONFIG_PATH &&
virtualenv --python python3.8  /opt/gvm/bin/ospd-scanner/ &&
source /opt/gvm/bin/ospd-scanner/bin/activate

Instalar ospd (GVM)

Instalaremos ospd usando el instalador pip:

mkdir /opt/gvm/var/run/ospd/ &&
cd ospd &&
pip3 install . &&
cd /opt/gvm/src

Instalar ospd-openvas (GVM)

Nuevamente para ospd-openvas usaremos el instalador pip con el paquete que clonamos de github:

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

Crear secuencias de comandos de inicio (raíz)

Primero escriba exit para salir a la sesión raíz, luego pegue lo siguiente en la terminal:

cat << EOF > /etc/systemd/system/gvmd.service
[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
EOF
cat << EOF > /etc/systemd/system/gsad.service
[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
EOF
cat << EOF > /etc/systemd/system/ospd-openvas.service 
[Unit]
Description=Job that runs the ospd-openvas daemon
Documentation=man:gvm
After=network.target redis-server@openvas.service
Wants=redis-server@openvas.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
EOF

Habilitar e iniciar los servicios (root)

Ahora habilitaremos e iniciaremos los servicios GVM, también como usuario root:

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

Verifique los servicios (root)

Asegúrese de que los tres servicios se estén ejecutando (escriba una línea a la vez).

systemctl status gvmd
systemctl status gsad
systemctl status ospd-openvas

Modificar el escáner predeterminado (GVM)

Regrese a su sesión de GVM.

sudo su - gvm

Primero, obtenga el UUID del escáner que tiene el socket (ospd.sock)

gvmd --get-scanners

Luego modifique el escáner:

gvmd --modify-scanner=(INSERT SCANNER UUID HERE) --scanner-host=/opt/gvm/var/run/ospd.sock

Ejemplo:

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

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

Eso es. Ahora puede iniciar sesión en la interfaz web de GVM.

GVM
OpenVas
GVM

Conclusión

Hemos completado con éxito la instalación de GVM en Ubuntu 20.04. Ahora puede iniciar sesión con la dirección IP de su servidor. El inicio de sesión predeterminado es admin / admin como se estableció anteriormente. Háganos saber lo que piensa sobre el tutorial en los comentarios a continuación.

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba
Cerrar