Greenbone Community Edition (GCE) is an open-source platform for managing and scanning network vulnerabilities. This guide assumes you have Docker and Docker Compose installed and are familiar with using Docker. If you haven’t set these up, please follow the official Docker and Docker Compose installation guides.
Table of Contents
What is Greenbone Community Edition?
Greenbone Community Edition (GCE) is a comprehensive open-source vulnerability management solution. It integrates various tools, including the well-known OpenVAS (Open Vulnerability Assessment Scanner), to provide thorough vulnerability detection, management, and reporting capabilities. OpenVAS is the scanning engine, allowing GCE to identify potential security threats across networks and systems.
With GCE, you can detect vulnerabilities, manage them effectively, and generate detailed reports, making it an ideal choice for organizations seeking a robust, cost-effective solution to enhance their cybersecurity posture. The open-source nature of GCE also ensures transparency and flexibility, allowing users to customize the tool to fit their specific security needs.
Whether you’re a cybersecurity professional or an organization aiming to improve its security infrastructure, GCE provides the tools to identify and mitigate risks before they become critical.
Let’s Get Started!
Create a Project Directory
Start by creating a folder for your Greenbone setup:
mkdir greenbone
cd greenbone
Create the docker-compose.yml File
Inside this directory, create a docker-compose.yml file with the following content:
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:
- 127.0.0.1:9392:80
volumes:
- gvmd_socket_vol:/run/gvmd
depends_on:
- gvmd
# Sets log level of openvas to the set LOG_LEVEL within the env
# and changes log output to /var/log/openvas instead /var/log/gvm
# to reduce likelyhood of unwanted log interferences
configure-openvas:
image: greenbone/openvas-scanner:stable
volumes:
- openvas_data_vol:/mnt
- openvas_log_data_vol:/var/log/openvas
command:
- /bin/sh
- -c
- |
printf "table_driven_lsc = yes\nopenvasd_server = http://openvasd:80\n" > /mnt/openvas.conf
sed "s/127/128/" /etc/openvas/openvas_log.conf | sed 's/gvm/openvas/' > /mnt/openvas_log.conf
chmod 644 /mnt/openvas.conf
chmod 644 /mnt/openvas_log.conf
touch /var/log/openvas/openvas.log
chmod 666 /var/log/openvas/openvas.log
# shows logs of openvas
openvas:
image: greenbone/openvas-scanner:stable
restart: on-failure
volumes:
- openvas_data_vol:/etc/openvas
- openvas_log_data_vol:/var/log/openvas
command:
- /bin/sh
- -c
- |
cat /etc/openvas/openvas.conf
tail -f /var/log/openvas/openvas.log
depends_on:
configure-openvas:
condition: service_completed_successfully
openvasd:
image: greenbone/openvas-scanner:stable
restart: on-failure
environment:
# `service_notus` is set to disable everything but notus,
# if you want to utilize openvasd directly removed `OPENVASD_MODE`
OPENVASD_MODE: service_notus
GNUPGHOME: /etc/openvas/gnupg
LISTENING: 0.0.0.0:80
volumes:
- openvas_data_vol:/etc/openvas
- openvas_log_data_vol:/var/log/openvas
- gpg_data_vol:/etc/openvas/gnupg
- notus_data_vol:/var/lib/notus
# enable port forwarding when you want to use the http api from your host machine
# ports:
# - 127.0.0.1:3000:80
depends_on:
vulnerability-tests:
condition: service_completed_successfully
configure-openvas:
condition: service_completed_successfully
gpg-data:
condition: service_completed_successfully
networks:
default:
aliases:
- openvasd
ospd-openvas:
image: greenbone/ospd-openvas:stable
restart: on-failure
hostname: ospd-openvas.local
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",
"--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/
- openvas_data_vol:/etc/openvas/
- openvas_log_data_vol:/var/log/openvas
depends_on:
redis-server:
condition: service_started
gpg-data:
condition: service_completed_successfully
vulnerability-tests:
condition: service_completed_successfully
configure-openvas:
condition: service_completed_successfully
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:
openvas_data_vol:
openvas_log_data_vol:
Modify the Port Configuration
The default port mapping might restrict access to localhost. Modify the docker-compose.yml file by changing:
- "127.0.0.1:9392:80"
To:
- "9392:80"
This exposes the GSA web interface on port 9392, allowing access from any IP address.
Start the Greenbone Community Edition
With everything set up, start the service by running:
docker-compose up -d
The -d
flag ensures that Docker Compose runs the services in detached mode, allowing them to run in the background.
Wait for the feed to update
Waiting for the initial feed update to complete is crucial before conducting any scans. This update provides the latest vulnerability definitions. You can monitor the feed status via the GSA web interface. Ensure the feed status shows “OK” before initiating scans, guaranteeing the most current data.
You can find the feed status at:
http://<your_server_ip>:9392/feedstatus
Access the Greenbone Security Assistant
Once the containers are running and the feed update is complete, access the GSA web interface by navigating to http://<your_server_ip>:9392 in your web browser. Log in with the username admin
and the password you configured in the docker-compose.yml
file.
By default, a user admin with the password admin is created. This is insecure, and it is highly recommended that a new password be set.
Managing Docker Containers
To check the status of your running containers, use:
docker-compose ps
To stop and remove the containers, along with their associated networks and volumes, use:
docker-compose down
Wrapping Up
Deploying Greenbone Community Edition with Docker Compose offers a streamlined and efficient approach to vulnerability management. Following this guide, you’ve successfully built a robust security tool leveraging Docker’s flexibility. Just wait for the feed update before running any scans to ensure accurate and reliable vulnerability assessments.
References
For more information, visit https://greenbone.github.io/docs/latest/22.4/container/index.html.