OpenVAS/GVM — skanowanie podatności serwerów i aplikacji
Opublikowano: 10 kwietnia 2026 · Kategoria: Bezpieczeństwo
Czy Twój serwer ma znane podatności? OpenSSH z przestarzałą wersją, Apache bez łatki na CVE z ubiegłego roku, PHP 7.4 po EOL — skaner podatności to odpowiedź na pytanie "co powinienem naprawić". GVM (Greenbone Vulnerability Management), często nazywany OpenVAS, to kompletna platforma skanowania podatności z bogatą bazą ponad 60 000 testów NVT (Network Vulnerability Tests). Ten artykuł pokazuje instalację przez Docker, tworzenie pierwszego skanu i interpretację raportu.
Instalacja GVM przez Docker
Instalacja GVM bezpośrednio na systemie jest skomplikowana (wiele zależności). Docker to zdecydowanie najprostsze podejście. Wymagania: min. 4 GB RAM (rekomendowane 8 GB) i ~20 GB wolnego miejsca na dysku (baza NVT jest duża):
# Uruchom GVM przez oficjalny kontener Greenbone
docker run -d \
--name gvm \
-p 9392:9392 \
-e PASSWORD="admin_haslo" \
-v gvm-data:/data \
greenbone/community-edition
# Pierwsze uruchomienie pobiera baze NVT (20-40 min!)
# Monitoruj postep:
docker logs -f gvm 2>&1 | grep -E "sync|feed|NVT|Starting"
# Gdy zobaczysz "Starting Greenbone Security Assistant" - gotowe
# Dashboard: https://TWOJE-IP:9392
# Login: admin / admin_haslo
# Sprawdz status feedow (NVT, SCAP, CERT)
docker exec gvm gvm-cli --gmp-username admin --gmp-password admin_haslo \
socket --xml "<get_feeds/>"
# Jesli wolisz docker-compose:
cat > docker-compose.yml << 'EOF'
version: '3'
services:
gvm:
image: greenbone/community-edition
ports:
- "9392:9392"
environment:
- PASSWORD=admin_haslo
volumes:
- gvm-data:/data
restart: unless-stopped
volumes:
gvm-data:
EOF
docker compose up -d Tworzenie pierwszego skanu
Po zalogowaniu do dashboardu GSA (Greenbone Security Assistant) możesz stworzyć skan przez kreator. Poniżej opis kroków przez UI i alternatywnie przez API:
- Scans → Tasks → New Task — lub użyj Wizard (ikona różdżki) dla uproszczonego kreatora.
- Name: Wpisz czytelną nazwę (np. "Web Server Audit 2026-04-10").
- Scan Config: Wybierz typ skanu — "Full and fast" jest rekomendowany dla kompletności; "Discovery" jest szybki ale powierzchowny.
- Target: Stwórz nowy target: Configuration → Targets → New Target. Wpisz IP lub zakres (np. 10.0.0.1 lub 10.0.0.0/24).
- Credentials (opcjonalnie): Dla authenticated scan — stwórz credentials w Configuration → Credentials (typ SSH key lub password).
- Start scan: Kliknij Play. Monitoruj postęp w Scans → Tasks.
# Alternatywnie przez gvm-cli (command line) docker exec -it gvm gvm-cli \ --gmp-username admin --gmp-password admin_haslo \ socket --xml "<get_tasks/>" # Lub przez API REST (OpenAPI 3.0) curl -k -u admin:admin_haslo \ https://localhost:9392/api/v1/tasks # Sprawdz dostepne konfiguracje skanowania docker exec gvm gvm-cli \ --gmp-username admin --gmp-password admin_haslo \ socket --xml "<get_scan_configs/>" | \ grep -o '<name>[^<]*</name>'
Typy skanów — kiedy używać którego
| Konfiguracja skanu | Czas (1 host) | Dokładność | Kiedy używać |
|---|---|---|---|
| Discovery | 5-15 min | Niska | Inwentaryzacja hostów, otwarte porty |
| Host Discovery | 1-3 min | Bardzo niska | Tylko czy host jest żywy (ping) |
| System Discovery | 10-20 min | Średnia | OS fingerprint, otwarte usługi |
| Full and fast | 30-90 min | Wysoka | Standardowy audit bezpieczeństwa |
| Full and fast ultimate | 60-180 min | Bardzo wysoka | Compliance, pełny pentest wstępny |
| Web Application Abridged | 20-60 min | Wysoka (web) | Skanowanie aplikacji webowych |
Interpretacja raportu i CVSS scores
Po zakończeniu skanu przejdź do Scans → Reports → kliknij raport. Każda podatność ma: CVSS Score, opis, CVE numer i zwykle rekomendowane działanie. Priorytetyzuj:
- Critical (9.0-10.0) — natychmiast. Podatności takie jak zdalne wykonanie kodu bez uwierzytelnienia. Przykład: log4shell, shellshock.
- High (7.0-8.9) — pilnie, max kilka dni. Zdalne wykonanie kodu z uwierzytelnieniem lub lokalna eskalacja uprawnień.
- Medium (4.0-6.9) — planowo, np. w ciągu miesiąca. XSS, CSRF, ujawnienie informacji, przestarzałe algorytmy kryptograficzne.
- Low (0.1-3.9) — tech debt, w ramach normalnych aktualizacji. Informacje diagnostyczne, przestarzałe nagłówki HTTP.
Eksport raportów i harmonogram automatyczny
# Eksport raportu przez UI: # Reports -> kliknij raport -> Download Report # Formaty: PDF, HTML, XML, CSV, TXT, LaTeX # Eksport przez gvm-cli REPORT_ID="uuid-raportu" docker exec gvm gvm-cli \ --gmp-username admin --gmp-password admin_haslo \ socket --xml \ "<get_reports report_id='$REPORT_ID' format_id='c402cc3e-b531-11e1-9163-406186ea4fc5'/>" \ > /tmp/raport.xml # Harmonogram automatyczny: # Scans -> Schedules -> New Schedule # Ustaw: raz w tygodniu, co miesiac, etc. # Powiaz schedule z taskiem (Task -> Edit -> Schedule) # Konfiguracja alertow email po skanowaniu: # Configuration -> Alerts -> New Alert # Event: Task finished # Condition: Severity at least High # Method: Email -> podaj SMTP i adres odbiorcy