Como ejecutar Greenbone Community Edition en un contenedor

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.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.