Security: GVM 21.04 - mit Docker in 15 Minuten zum OpenVAS Schwachstellen Scanner
Posted by Guenny onOpenVAS bzw. Greenbone Vulnerability Manager ist nicht ganz einfach zu installieren, da viele Abhängigkeiten und Pakete gebaut werden müssen.
Eine etwas ältere Anleitung ist noch auf ITrig zu finden.
Mithilfe von Docker kann der Installationsprozess stark beschleunigt werden.
Händische Konfigurationen und Updates fallen weg und innerhalb kurzer Zeit steht ein vollständig eingerichtetes Schwachstellenmanagement zur Verfügung.
GVM 21.04 mit Docker Compose installieren
Zunächst sollte Docker installiert werden.
Docker Debian installieren
apt remove docker docker-engine docker.io containerd runc
apt update
apt install apt-transport-https ca-certificates curl gnupg lsb-release git
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
apt install docker-ce docker-ce-cli containerd.io
Docker Ubuntu installieren
sudo apt remove docker docker-engine docker.io containerd runc
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release git
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
sudo echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
Docker Compose darf ebenfalls nicht fehlen
Docker Compose Debian/Ubuntu installieren
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
Installation GVM 21.04 mit Docker
# Clonen/Installieren
cd /opt
sudo git clone https://github.com/immauss/openvas.git
# Admin pw anpassen
cd openvas/
nano docker-compose.yml
# System starten
docker-compose up -d
#Logs anschauen
docker-compose logs -f
#Server überprüfen
ss -lntp |grep 8080
Der erste Start kann recht lange dauern, da im Hintergrund alle NVTs geladen werden.
Der Installationsfortschritt kann mit docker-compose logs -f verfolgt werden.
Sollten Fehler passieren, hilft meist ein Neustart des Vorgangs. Gleiches gilt für ein Update der Signaturen.
#Neustart oder Signaturen aktualisieren
cd /opt/openvas
sudo docker-compose down && docker-compose up -d
#Neueste Logs prüfen
sudo docker-compose logs --tail="50"
Schlussendlich ist das Tool unter http://localhost:8080/login erreichbar und einsatzfähig.
Allerdings empfehle ich einen Proxy mit HTTPS vorzuschalten und den Port 8080 auf Localhost umzubiegen.
Ein Proxy könnte im Docker-Compose File integriert oder direkt installiert werden.
Docker-Compose anpassen
Das Umbiegen auf Localhost, kann im Docker Compose File vorgenommen werden.
#Beispiel für eine Anpassung der docker-compose.yml
version: "3"
services:
openvas:
ports:
- "127.0.0.1:8080:9392"
environment:
- "PASSWORD=notyouradmin!"
- "USERNAME=admin"
- "RELAYHOST=172.17.0.1"
- "SMTPPORT=25"
- "REDISDBS=512" # number of Redis DBs to use
- "QUIET=false" # dump feed sync noise to /dev/null
- "NEWDB=false" # only use this for creating a blank DB
- "SKIPSYNC=false" # Skips the feed sync on startup.
- "RESTORE=false" # This probably not be used from compose... see docs.
- "DEBUG=false" # This will cause the container to stop and not actually start gvmd
- "HTTPS=false" # wether to use HTTPS or not
- "GMP=false" # to enable see docs
volumes:
- "openvas:/data"
container_name: openvas
image: immauss/openvas
volumes:
openvas:
Nginx Proxyserver einrichten
Hier ein Beispiel für einen Nginx Proxyserver (ohne Docker)
apt install nginx
sudo rm /etc/nginx/sites-enabled/default
Ein Zertifikat erstellen
sudo openssl req -x509 -newkey rsa:4096 -sha256 -days 365 -nodes -keyout gvm.itrig.key -out gvm.itrig.crt -subj "/CN=gvm.itrig.de" -addext "subjectAltName=DNS:security.itrig.de,DNS:gvm.itrig.de,IP:192.168.0.111"
#Beispiel für eine Nginx Proxy Config
nano /etc/nginx/sites-available/openvas
server {
server_name localhost;
listen 443 ssl http2;
ssl_certificate /etc/ssl/gvm.itrig.de.crt;
ssl_certificate_key /etc/ssl/gvm.itrig.de.key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
resolver 127.0.0.1;
location / {
proxy_pass http://localhost:8080;
}
}
# Symlink setzen
cd /etc/nginx/sites-enabled/
ln -s ../sites-available/openvas openvas
#Neustart Nginx
systemctl restart nginx
#Kontrolle mit
systemctl status nginx
#oder
ss -lntp
Der Scanner ist nun via https://localhost/login erreichbar.
Fazit
Für einen schnellen Test und dem Lernen am System ist GVM via Docker von github.com/immauss/openvas sicherlich geeignet. Die Builds werden übrigens wöchentlich aktualisiert und beinhalten zusätzlich auch die neuesten Feed-Updates.
Um Docker, Container, Images und Co besser im Blick zu behalten, verweise ich an dieser Stelle auf Lazydocker. Das Tool bietet einen grafischen Überblick, über alle aktiven und inaktiven Docker Komponenten.