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.
Me dedico a la Administración de Sistemas y he creado este blog para compartir mis conocimientos con toda la comunidad y así aportar mi granito de arena y ayudar a todo el que lo necesite.