Skip to main content

Greenbone auf Ubuntu mit Docker installieren

Worum geht es hier?

Diese Anleitung beschreibt Phase 1: die Einrichtung der Greenbone Community Edition auf einem Ubuntu Server 24.04 LTS mit Docker Compose. Ergänzend werden Portainer, Nginx Proxy Manager und Watchtower aufgesetzt. Den konzeptionellen Überblick zu Greenbone / OpenVAS findest du im Greenbone / OpenVAS Guide.

Ziel​

KomponenteZweck
Ubuntu 24.04 LTSHost-Betriebssystem
Docker ComposeContainer-Orchestrierung
Greenbone Community EditionSchwachstellen-Scanner
PortainerWeb-UI zur Container-Verwaltung
Nginx Proxy ManagerReverse Proxy / TLS
WatchtowerAutomatische Container-Updates (selektiv)

Weitere Rahmenbedingungen:

  • Zugriff aus Heimnetz + VPN
  • Scan-Ziel: 192.168.178.0/24

1. System vorbereiten​

Auf dem Ubuntu-Server zunächst Pakete aktualisieren und Grundwerkzeuge installieren:

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git nano ca-certificates gnupg lsb-release ufw

Docker prĂĽfen:

docker --version
docker compose version

Falls Docker schon läuft:

sudo systemctl status docker

Den eigenen Benutzer zur Docker-Gruppe hinzufĂĽgen:

sudo usermod -aG docker $USER

Danach einmal abmelden/anmelden oder:

newgrp docker

Test:

docker run hello-world

2. Projektordner erstellen​

sudo mkdir -p /opt/greenbone
sudo chown -R $USER:$USER /opt/greenbone
cd /opt/greenbone

3. Greenbone Docker Compose holen​

Greenbone stellt eine Community-Container-Variante bereit:

git clone https://github.com/greenbone/community-container.git .

AnschlieĂźend prĂĽfen:

ls -la

Du solltest eine docker-compose.yml bzw. eine compose.yaml oder ähnliche Compose-Dateien sehen.


4. Greenbone starten​

docker compose pull
docker compose up -d

Status prĂĽfen:

docker compose ps

Logs ansehen:

docker compose logs -f
Erster Start dauert lange

Der erste Start kann lange dauern, weil Feeds geladen und Datenbanken initialisiert werden.


5. Greenbone Weboberfläche öffnen​

Standardmäßig läuft die Weboberfläche meist auf:

https://<SERVER-IP>:9392

Beispiel:

https://192.168.178.50:9392

Server-IP herausfinden:

ip a

6. Firewall für Heimnetz und VPN​

Angenommen, dein Heimnetz ist 192.168.178.0/24. Greenbone-Webinterface erlauben:

sudo ufw allow from 192.168.178.0/24 to any port 9392 proto tcp

Falls dein VPN z. B. das Netz 10.8.0.0/24 nutzt, zusätzlich:

sudo ufw allow from 10.8.0.0/24 to any port 9392 proto tcp

SSH erlauben:

sudo ufw allow ssh

Firewall aktivieren:

sudo ufw enable
sudo ufw status verbose

7. Admin-Passwort finden/setzen​

Je nach Greenbone-Compose-Version wird ein Admin-Benutzer erzeugt. In den Logs nach Zugangsdaten suchen:

docker compose logs | grep -i password
docker compose logs | grep -i admin
Standard-Zugang ändern

Bei vielen Community-Container-Setups lautet der Standard-Zugang admin / admin. Ändere das Passwort unmittelbar nach dem ersten Login.

Muss das Passwort manuell gesetzt werden, brauchst du zuerst den Container-Namen aus:

docker compose ps

Der exakte Befehl zum Setzen des Passworts hängt von Container-Name und Compose-Version ab.


8. Warten bis Feeds fertig sind​

Wichtig vor dem ersten Scan

Greenbone ist erst sinnvoll nutzbar, wenn die Feeds synchronisiert sind. Scans vor abgeschlossenem Feed-Sync liefern unvollständige oder fehlerhafte Ergebnisse.

PrĂĽfen:

docker compose logs -f

In der Weboberfläche später prüfen unter ungefähr:

Administration / Feed Status

Warte, bis die Feeds aktuell sind oder zumindest nicht mehr aktiv synchronisieren.


9. Zusatzdienste vorbereiten​

Portainer​

docker volume create portainer_data
docker run -d \
--name portainer \
--restart=always \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:lts

Aufrufen:

https://<SERVER-IP>:9443

Firewall:

sudo ufw allow from 192.168.178.0/24 to any port 9443 proto tcp

Nginx Proxy Manager​

Ordner erstellen:

mkdir -p /opt/nginx-proxy-manager
cd /opt/nginx-proxy-manager
nano docker-compose.yml

Inhalt einfĂĽgen:

services:
npm:
image: jc21/nginx-proxy-manager:latest
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- "80:80"
- "81:81"
- "443:443"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt

Starten:

docker compose up -d

Aufrufen:

http://<SERVER-IP>:81

Firewall:

sudo ufw allow from 192.168.178.0/24 to any port 81 proto tcp
sudo ufw allow from 192.168.178.0/24 to any port 80 proto tcp
sudo ufw allow from 192.168.178.0/24 to any port 443 proto tcp

Für das VPN-Netz später entsprechend zusätzlich erlauben.

Watchtower​

Greenbone nicht ungeprĂĽft auto-updaten

Für automatische Container-Updates ist vorsichtiges Vorgehen empfohlen. Greenbone sollte nicht ungeprüft automatisch aktualisiert werden, weil Scanner, Feeds und Datenbank empfindlich sein können. Besser: Watchtower nur per Label aktivieren.

docker run -d \
--name watchtower \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--label-enable \
--cleanup \
--schedule "0 0 4 * * *"

Das aktualisiert nur Container mit passendem Label.


10. Erster autorisierter Scan: eigenes Netzwerk​

Wenn Greenbone läuft:

  1. Login in die Weboberfläche
  2. Links zu Scans
  3. Tasks
  4. Neuer Task
  5. Target erstellen:
    • Name: Heimnetz 192.168.178.0/24
    • Hosts: 192.168.178.0/24
    • Port List: All IANA assigned TCP and UDP oder Default
    • Alive Test: Scan Config Default

Scan Config fĂĽr den Anfang:

Full and fast
Nicht aggressiv starten

FĂĽr den ersten Scan nicht direkt mit aggressiven Profilen beginnen.


11. Freigabe-/Scope-Vorlage für andere autorisierte Netzwerke​

Nur autorisierte Netzwerke scannen

Scanne ausschließlich Systeme und Netzwerke, für die du eine ausdrückliche Freigabe hast. Schwachstellen-Scans können Alarme auslösen, empfindliche Systeme stören und ohne Freigabe rechtliche Folgen haben.

FĂĽr jedes andere Netzwerk vorher schriftlich festhalten:

Scan-Freigabe

Auftraggeber:
Technischer Ansprechpartner:
Scanner-IP:
Zielnetz(e):
Ausgeschlossene Systeme:
Erlaubter Zeitraum:
Erlaubte Scan-Tiefe:
Credentialed Scan erlaubt: Ja/Nein
DoS/Stress-Tests erlaubt: Nein
Kontakt bei Störung:
Unterschrift Auftraggeber:
Datum:

Beispiel:

Zielnetz: 10.20.30.0/24
Scanner-IP: 192.168.178.50
Scan-Zeitfenster: Samstag 22:00 bis Sonntag 04:00
Scan-Profil: Full and fast
AusschlĂĽsse: Drucker, VoIP-Telefone, Produktionsserver
Credentialed Scan: Ja, nur mit bereitgestelltem Read-Only-Account
DoS/Stress-Tests: Nein