Instalando y usando OpenVAS

Hoy veremos una gran utilidad que podremos utilizar para realizar análisis de seguridad sobre nuestra infraestructura, qué menos que de vez en cuando saber cuántas vulnerabilidades tenemos para estar algo más seguros ante un ataque de un Virus, Troyano o Ramon ware de turno. En este documento instalaremos OpenVAS 9 en una máquina Debian 9 Stretch y veremos un uso básico para sacar un informe, en un siguiente documento lo integraremos con… Nagios!

 

Comenzamos instalando y descargando los prerequisitos además de los fuentes de OpenVAS 9 y unos extras:

apt-get install -y build-essential cmake bison flex libpcap-dev pkg-config libglib2.0-dev libgpgme11-dev uuid-dev sqlfairy xmltoman doxygen libssh-dev libksba-dev libldap2-dev libsqlite3-dev libmicrohttpd-dev libxml2-dev libxslt1-dev xsltproc clang rsync rpm nsis alien sqlite3 libhiredis-dev libgcrypt11-dev libgnutls28-dev redis-server texlive-latex-base texlive-latex-recommended linux-headers-$(uname -r) python python-pip mingw-w64 heimdal-multidev libpopt-dev libglib2.0-dev gnutls-bin certbot nmap ufw
wget http://wald.intevation.org/frs/download.php/2420/openvas-libraries-9.0.1.tar.gz
wget http://wald.intevation.org/frs/download.php/2423/openvas-scanner-5.1.1.tar.gz
wget http://wald.intevation.org/frs/download.php/2448/openvas-manager-7.0.2.tar.gz
wget http://wald.intevation.org/frs/download.php/2429/greenbone-security-assistant-7.0.2.tar.gz
wget http://wald.intevation.org/frs/download.php/2397/openvas-cli-1.4.5.tar.gz
wget http://wald.intevation.org/frs/download.php/2377/openvas-smb-1.0.2.tar.gz
wget http://wald.intevation.org/frs/download.php/2401/ospd-1.2.0.tar.gz
wget http://wald.intevation.org/frs/download.php/2405/ospd-debsecan-1.2b1.tar.gz
wget http://wald.intevation.org/frs/download.php/2218/ospd-nmap-1.0b1.tar.gz

Los descomprimimos con:

for i in $(ls *.tar.gz); do tar zxf $i; done

Los compilamos y los instalamos:

cd openvas-libraries-9.0.1
cmake . && make && make doc && make install
cd ../openvas-manager-7.0.2
cmake . && make && make doc && make install
cd ../openvas-scanner-5.1.1
cmake . && make && make doc && make install
cd ../openvas-cli-1.4.5
cmake . && make && make doc && make install
cd ../reenbone-security-assistant-7.0.2
cmake . && make && make doc && make install
cd ../ospd-1.2.0
python setup.py build && python setup.py install
cd ../ospd-debsecan-1.2b1
python setup.py build && python setup.py install
cd ../ospd-nmap-1.0b1
python setup.py build && python setup.py install

Editamos ‘/etc/redis/redis.conf’ para integrar Redis con OpenVAS, modificamos el puerto a 0 y descomentamos el fichero para Unix socket & sus permisos, quedando así:

port 0
unixsocket /tmp/redis.sock
unixsocketperm 700

Reiniciamos el servicio de Redis para recargar la configuración:

service redis-server restart

 

Creamos un enlace simbólico para que OpenVAS use el socket de Redis, confirmamos que las librerías compiladas anteriormente se han cargado correctamente y arrancamos el demonio de OpenVAS:

ln -s /tmp/systemd-private-*-redis-server.service-*/tmp/redis.sock /tmp/redis.sock
ldconfig
openvassd

 

Es hora de actualizar las bases de datos y recrear la cache:

greenbone-nvt-sync
greenbone-scapdata-sync
greenbone-certdata-sync
openvasmd --progress --rebuild

 

Continuamos creando el certificado autofirmado para el uso de https:

openvas-manage-certs -a

 

Arrancamos el Scanner seguido del Manager de OpenVAS y el Greenbone Security Assistant con:

openvassd
openvasmd
gsad

Creamos un usuario admin

openvasmd --create-user=admin --role=Admin

 

Creamos un fichero que nos permitirá actualizar las bases de datos de forma programada ‘vim/usr/local/sbin/openvas-db-update’ y añadimos:

#!/bin/bash
echo "Updating OpenVAS Databases"
greenbone-nvt-sync
greenbone-scapdata-sync
greenbone-certdata-sync

 

Lo hacemos ejecutable con ‘chmod +x /usr/local/sbin/openvas-db-update’, y lo programamos en cron para que se ejecute a diario a las 0h con:

crontab -e
     0 0 * * * /usr/local/sbin/openvas-db-update

 

Creamos el servicio OpenVAS Manager con ‘vim /etc/systemd/system/openvas-manager.service’

[Unit]
Description=Open Vulnerability Assessment System Manager Daemon
Documentation=man:openvasmd(8) http://www.openvas.org/
Wants=openvas-scanner.service

[Service]
Type=forking
PIDFile=/usr/local/var/run/openvasmd.pid
ExecStart=/usr/local/sbin/openvasmd --database=/usr/local/var/lib/openvas/mgr/tasks.db

ExecReload=/bin/kill -HUP $MAINPID
# Kill the main process with SIGTERM and after TimeoutStopSec (defaults to 1m30) kill remaining processes with SIGKILL
KillMode=mixed

[Install]
WantedBy=multi-user.target

Lo hacemos ejecutable: chmod +x /etc/systemd/system/openvas-manager.service Creamos el servicio OpenVAS Scanner con: ‘vim /etc/systemd/system/openvas-scanner.service’

[Unit]
Description=Open Vulnerability Assessment System Manager Daemon
Documentation=man:openvasmd(8) http://www.openvas.org/
Wants=openvas-scanner.service

[Service]
Type=forking
PIDFile=/usr/local/var/run/openvasmd.pid
ExecStart=/usr/local/sbin/openvasmd --database=/usr/local/var/lib/openvas/mgr/tasks.db

ExecReload=/bin/kill -HUP $MAINPID
# Kill the main process with SIGTERM and after TimeoutStopSec (defaults to 1m30) kill remaining processes with SIGKILL
KillMode=mixed

[Install]
WantedBy=multi-user.target

Lo hacemos ejecutable:

chmod +x /etc/systemd/system/openvas-scanner.service

Creamos el servicio Greenbone Security Assistant con: ‘vim /etc/systemd/system/greenbone-security-assistant.service’

[Unit]
Description=Greenbone Security Assistant
Documentation=man:gsad(8) http://www.openvas.org/
Wants=openvas-manager.service

[Service]
Type=simple
PIDFile=/usr/local/var/run/gsad.pid
ExecStart=/usr/local/sbin/gsad --foreground

[Install]
WantedBy=multi-user.target

Lo hacemos ejecutable:

chmod +x /etc/systemd/system/greenbone-security-assistant.service

Bien, ahora podemos probar la instalación si es correcta mediante un script que bajamos e ejecutamos:

cd ~
wget --no-check-certificate https://svn.wald.intevation.org/svn/openvas/trunk/tools/openvas-check-setup
chmod +x openvas-check-setup
./openvas-check-setup --v9

Si todo ha ido bien, ahora podremos poner los servicios para que arranquen con el sistema de forma automática:

systemctl enable openvas-manager.service
systemctl enable openvas-scanner.service
systemctl enable greenbone-security-assistant.service

 

Editamos /etc/systemd/system/redis.service, deberemos modificar el valor ‘PrivateTmp=no’ y debajo de ‘ReadWriteDirectories=-/var/run/redis’ añadimos ‘ReadWriteDirectories=-/tmp’.

 

Creamos este fichero: ‘vim /root/arranca_openvasmd.sh’ y lo hacemos ejecutable con el siguiente contenido:

#!/bin/bash
/usr/local/sbin/openvasmd -a 127.0.0.1 -p 9391

Y finalizamos poniendolo en el cron para que cuando arranque el sistema lo ejecute, con ‘crontab -e’, añadimos:

@reboot /root/arranca_openvasmd.sh


Por fin ya podremos abrir un navegador contra la dirección IP de la máquina https://openvas, nos validaremos con el usuario que hemos creado en los pasos anteriores!

 

Tras loguearnos veremos un panel vacio, ya que todavía no tenemos tareas de análisis, sí vemos en cambio los resultados de la BD con las vulnerabilidades que tenemos. Lo primero de todo será dar de alta las máquinas a las que haremos un escaneo. «Configuration» > «Targets».

 

Para crear un Target, debemos pulsar sobre el icono de la estrellica,

 


Podremos añadir diferentes destinos, bien rangos IP, equipos individuales, definir diferentes rangos de puertos o métodos de detección, además si queremos realizar los chequeos con credenciales para acceso por SSH, SMB, ESXi o SNMP. Bueno, en este caso analizaré sólo un equipo, es un host ESXi de VMware, versión 6 Update 3, indicamos la dirección IP & pulsamos en «Create»,

 

 

Una vez definido el Target, lo que haremos será crear la Tarea para ejecutarlo, vamos a «Scans» > «Tasks»,

 

Y pulsamos de nuevo sobre la estrella para crear una Tarea nueva con «New Task»,

 

Indicamos un nombre a la tarea, añadimos el Target que queremos analizar y modificamos los parámetros a nuestro antojo para realizar los tests más o menos profundos, etc… «Create» para crear la Tarea.

 

Veremos la tarea creada, si queremos ejecutarla ahora pulsaremos sobre el icono verde del Play!

 

 

… Y nada, esperamos mientras ejecuta todos los testeos que hayamos indicado sobre esta máquina…

 

Cuando se haya finalizado la tarea de análisis, podremos pinchar en la fecha del Report para visualizar los posibles riesgos que tiene la máquina,

 

 

Y nos mostrará las vulnerabilidades detectadas, podremos analizar el problema y su posible solución para corregir esto y evitar comprometer la información y el servicio de la máquina.

 

 

Como podréis imaginar, la herramienta nos da más posibilidades, curiosear y probar distintos tipos de escaneo. Os recomiendo que vayáis creando tareas individuales o bien una genérica con todos vuestros equipos añadiendo rangos IPs, no sólo para que nos saque los colores y nos pongamos las pilas con la corrección de los fallos de seguridad, si no por que los necesitaréis para un siguiente artículo que viene…

 

Héctor Herrero