Greenbone auf Ubuntu mit Docker installieren
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​
| Komponente | Zweck |
|---|---|
| Ubuntu 24.04 LTS | Host-Betriebssystem |
| Docker Compose | Container-Orchestrierung |
| Greenbone Community Edition | Schwachstellen-Scanner |
| Portainer | Web-UI zur Container-Verwaltung |
| Nginx Proxy Manager | Reverse Proxy / TLS |
| Watchtower | Automatische 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
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
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​
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​
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:
- Login in die Weboberfläche
- Links zu Scans
- Tasks
- Neuer Task
- 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
FĂĽr den ersten Scan nicht direkt mit aggressiven Profilen beginnen.
11. Freigabe-/Scope-Vorlage für andere autorisierte Netzwerke​
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