En esta entrada voy a explicaros como podéis instalar la herramienta gratuita Greenbone Community Edition, antiguo Openvas, que nos permitirá realizar un escáner de vulnerabilidades en nuestros distintos sistemas, detectarlos y corregirlos antes que sean explotados.
Consideraciones iniciales
Este tutorial ha sido realizado y validado sobre un servidor con Ubuntu Server 22.04.1 por lo que no puedo asegurar que funcione en versiones distintas de Ubuntu.
Requisitos
- Mínimos:
- CPU: 2 Cores
- RAM: 4 GB
- Espacio en disco: 20 GB
- Recomendados:
- CPU: 4 Cores
- RAM: 8 GB
- Espacio en disco: 60 GB
Instalación docker
El primer paso es instalar Docker. Para ello debéis ejecutar el siguiente comando:
sudo apt install docker.io
Ahora vamos a instalar python y realizar algunas configuraciones.
sudo apt install python3 python3-pip sudo python3 -m pip install --user docker-compose
También vamos a necesitar docker-compose el cual podéis instalar ejecutando el siguiente comando:
sudo apt install docker-compose
El siguiente paso será añadir nuestro usuario al grupo de docker para poder interactuar con él.
sudo usermod -aG docker $USER && su $USER
Creación archivo docker-compose
Creamos el directorio donde guardaremos el fichero docker-compose.
mkdir -p /opt/greenbone-community-container
Creamos el fichero docker-compose.yml:
nano /opt/greenbone-community-container/docker-compose.yml
Con el siguiente contenido:
services:
vulnerability-tests:
image: greenbone/vulnerability-tests
environment:
STORAGE_PATH: /var/lib/openvas/22.04/vt-data/nasl
volumes:
- vt_data_vol:/mnt
notus-data:
image: greenbone/notus-data
volumes:
- notus_data_vol:/mnt
scap-data:
image: greenbone/scap-data
volumes:
- scap_data_vol:/mnt
cert-bund-data:
image: greenbone/cert-bund-data
volumes:
- cert_data_vol:/mnt
dfn-cert-data:
image: greenbone/dfn-cert-data
volumes:
- cert_data_vol:/mnt
depends_on:
- cert-bund-data
data-objects:
image: greenbone/data-objects
volumes:
- data_objects_vol:/mnt
report-formats:
image: greenbone/report-formats
volumes:
- data_objects_vol:/mnt
depends_on:
- data-objects
gpg-data:
image: greenbone/gpg-data
volumes:
- gpg_data_vol:/mnt
redis-server:
image: greenbone/redis-server
restart: on-failure
volumes:
- redis_socket_vol:/run/redis/
pg-gvm:
image: greenbone/pg-gvm:stable
restart: on-failure
volumes:
- psql_data_vol:/var/lib/postgresql
- psql_socket_vol:/var/run/postgresql
gvmd:
image: greenbone/gvmd:stable
restart: on-failure
volumes:
- gvmd_data_vol:/var/lib/gvm
- scap_data_vol:/var/lib/gvm/scap-data/
- cert_data_vol:/var/lib/gvm/cert-data
- data_objects_vol:/var/lib/gvm/data-objects/gvmd
- vt_data_vol:/var/lib/openvas/plugins
- psql_data_vol:/var/lib/postgresql
- gvmd_socket_vol:/run/gvmd
- ospd_openvas_socket_vol:/run/ospd
- psql_socket_vol:/var/run/postgresql
depends_on:
pg-gvm:
condition: service_started
scap-data:
condition: service_completed_successfully
cert-bund-data:
condition: service_completed_successfully
dfn-cert-data:
condition: service_completed_successfully
data-objects:
condition: service_completed_successfully
report-formats:
condition: service_completed_successfully
gsa:
image: greenbone/gsa:stable
restart: on-failure
ports:
- 9392:80
volumes:
- gvmd_socket_vol:/run/gvmd
depends_on:
- gvmd
ospd-openvas:
image: greenbone/ospd-openvas:stable
restart: on-failure
cap_add:
- NET_ADMIN # for capturing packages in promiscuous mode
- NET_RAW # for raw sockets e.g. used for the boreas alive detection
security_opt:
- seccomp=unconfined
- apparmor=unconfined
command:
[
"ospd-openvas",
"-f",
"--config",
"/etc/gvm/ospd-openvas.conf",
"--mqtt-broker-address",
"mqtt-broker",
"--notus-feed-dir",
"/var/lib/notus/advisories",
"-m",
"666"
]
volumes:
- gpg_data_vol:/etc/openvas/gnupg
- vt_data_vol:/var/lib/openvas/plugins
- notus_data_vol:/var/lib/notus
- ospd_openvas_socket_vol:/run/ospd
- redis_socket_vol:/run/redis/
depends_on:
redis-server:
condition: service_started
gpg-data:
condition: service_completed_successfully
vulnerability-tests:
condition: service_completed_successfully
mqtt-broker:
restart: on-failure
image: greenbone/mqtt-broker
ports:
- 1883:1883
networks:
default:
aliases:
- mqtt-broker
- broker
notus-scanner:
restart: on-failure
image: greenbone/notus-scanner:stable
volumes:
- notus_data_vol:/var/lib/notus
- gpg_data_vol:/etc/openvas/gnupg
environment:
NOTUS_SCANNER_MQTT_BROKER_ADDRESS: mqtt-broker
NOTUS_SCANNER_PRODUCTS_DIRECTORY: /var/lib/notus/products
depends_on:
- mqtt-broker
- gpg-data
- vulnerability-tests
gvm-tools:
image: greenbone/gvm-tools
volumes:
- gvmd_socket_vol:/run/gvmd
- ospd_openvas_socket_vol:/run/ospd
depends_on:
- gvmd
- ospd-openvas
volumes:
gpg_data_vol:
scap_data_vol:
cert_data_vol:
data_objects_vol:
gvmd_data_vol:
psql_data_vol:
vt_data_vol:
notus_data_vol:
psql_socket_vol:
gvmd_socket_vol:
ospd_openvas_socket_vol:
redis_socket_vol:
Iniciar contenedor de Greenbone Community
El primer paso será utilizar docker-compose junto con el fichero que hemos creado en el paso anterior para descargarnos las imágenes que utilizarán los contenedores de Greenbone.
sudo docker-compose -f /opt/greenbone-community-container/docker-compose.yml -p greenbone-community-edition pull
Descargadas las imágenes ahora vamos a iniciar el contenedor:
sudo docker-compose -f /opt/greenbone-community-container/docker-compose.yml -p greenbone-community-edition up -d
Para llevar un seguimiento del inicio de los distintos servicios (tardan un poco en arrancar) podemos ejecutar el siguiente comando. Si queremos salir del log sólo hay que pulsar la combinación de teclas CTRL + C
sudo docker-compose -f /opt/greenbone-community-container/docker-compose.yml -p greenbone-community-edition logs -f
Acceso a la interfaz web de Greenbone Community
Una vez se han iniciado todos los servicios abrimos un navegador y pondremos la siguiente dirección http://direccionIP o nombre DNS del servidor: 9392 para que nos aparezca la pantalla de login de la aplicación en la que podremos logarnos con el usuario por defecto que será admin y la contraseña admin.
Y ya tenemos lista la aplicación para empezar a configurarla y empezar a lanzar nuestros primeros escáner de vulnerabilidad y así conseguir que nuestros sistemas sean un poquito más seguros 😊.
Como siempre espero os haya sido de utilidad.

