🛡️ Qualys VMDR — przewodnik praktyczny

Od inwentarza i tagowania, przez skany uwierzytelnione, po automatyczną remediację

Qualys VMDR — od zera do skutecznego programu VM

🚀 Czym jest VMDR i kiedy ma sens

Qualys VMDR (Vulnerability Management, Detection and Response) łączy ciągły inwentarz zasobów, wykrywanie podatności, priorytetyzację w oparciu o ryzyko i remediację. To platforma, która pozwala przejść od „skanów od święta” do programu VM opartego na danych i automatyzacji.

Największe plusy VMDR:
  • Ciągły widok zasobów (Cloud Agent + Passive Sensor)
  • Skalowalność chmurowa i aktualne feedy zagrożeń
  • Ryzyko liczone kontekstowo (asset criticality, exploitability)
  • Ścieżka „od detekcji do ticketu” bez ręcznej orkiestracji

🏗️ Architektura: Cloud, Agent, Scanner

  • Qualys Cloud Platform — warstwa analityczna, raporty, API
  • Cloud Agent — lekki agent na hostach z ciągłą telemetrią
  • Virtual Scanner Appliance — skaner sieci wewnętrznej
  • Passive Sensor — obserwacja ruchu (opcjonalnie)
# Minimalne parametry Virtual Scanner Appliance appliance: cpu: 2-4 vCPU ram: 4-8 GB disk: 80+ GB network: 1 Gbps egress: - tcp/443 do regionu Qualys (np. qualysapi.qualys.eu) - udp/53 do serwerów DNS

⏱️ Szybki start: 15 minut do pierwszych danych

1) Uruchom skaner

# VMware vSphere # 1. Pobierz OVA z portalu Qualys # 2. Deploy OVA, ustaw sieć, IP i połącz z kontem Qualys (Activation Code)

2) Zainstaluj Cloud Agenta

# Linux (DEB) sudo dpkg -i qualys-cloud-agent.deb sudo /usr/local/qualys/cloud-agent/bin/qualys-cloud-agent.sh ActivationId=AK-XXXX CustomerId=CID-YYYY # Windows (PowerShell - jako Administrator) msiexec /i "QualysCloudAgent.msi" /qn ACTIVATIONID=AK-XXXX CUSTOMERID=CID-YYYY

3) Zdefiniuj pierwszy skan

scan_profile: name: "Baseline-Internal-Weekly" targets: ["10.0.10.0/24", "10.0.20.0/24"] ports: "default" performance: "normal" auth: false schedule: "Sun 01:00 Europe/Warsaw"
Pro tip: Połącz Agentów na serwerach z okresowymi skanami sieci (Scanner Appliance). Agent da głębię systemową, skaner — widok z sieci i usług.

🏷️ Inwentarz i tagowanie (serce priorytetyzacji)

Bez dobrego tagowania trudno priorytetyzować. Stwórz dynamiczne tagi według środowiska, lokalizacji, krytyczności i właściciela.

# Przykładowe tagi dynamiczne tags: - name: "ENV:Production" rule: 'asset.operatingSystem CONTAINS "Server" AND asset.network.gateway = "10.0.0.1"' - name: "CRIT:Business-Critical" rule: 'asset.attributes["criticality"] = "high"' - name: "OWNER:ERP-Team" rule: 'asset.owner = "erp@firma.pl"'
Dlaczego to ważne? Reguły SLA, alerty i dashboardy oprzesz na tagach. Gdy tagi są poprawne, VMDR samo „wie”, co jest ważne.

🎛️ Profile skanów i harmonogramy

Network vs. Authenticated

  • Network (bez uwierzytelniania): szybkie pokrycie, mniej dokładne
  • Authenticated (cred scans): pełniejsza widoczność pakietów i konfiguracji
# Dwa profile: szybki i głęboki profiles: - name: "Fast-Discovery" ports: "top-1000" nse_level: "safe" timeout: 20 schedule: "Daily 23:00" - name: "Deep-Auth-Weekly" ports: "all" auth: true detection: "aggressive" schedule: "Sun 02:00"

Harmonogramy i okna serwisowe

Tip operacyjny: Zaplanuj skany intensywne poza godzinami szczytu. Wrażliwe systemy (np. serwery baz danych) skanuj w uzgodnionych oknach i z limitem równoległości.

🔐 Skanowanie uwierzytelnione (cred scans)

Największy „skok jakości” w wynikach daje skanowanie z poświadczeniami.

  • Windows: WMI/SMB; konto domenowe z uprawnieniami do WMI
  • Linux/Unix: SSH; konto z sudo do odczytu pakietów/konfiguracji
  • Bazy i aplikacje: Konta read-only do enumeracji wersji
# Minimalne wymagania sieciowe dla cred scans Windows: - TCP 135, 139, 445 (RPC/SMB) - dynamic RPC high ports (49152-65535) Linux: - TCP 22 (SSH) HTTP/HTTPS: - TCP 80, 443 (agent/zwrotne połączenia) Qualys Cloud (region): - TCP 443 → qualysapi.qualys.[com|eu|...]
Bezpieczne tajemnice: Poświadczenia przechowuj w sejfie haseł (np. CyberArk) i integruj przez rotację. Nie używaj statycznych haseł.

📊 Odczyt wyników, CVSS i QRS

Qualys klasyfikuje podatności na podstawie CVSS, ale dodatkowo stosuje QRS (Qualys Risk Score), który dorzuca kontekst: exploitability, krytyczność zasobu, aktywne kampanie.

CVSS v3.1: 0.0 None 0.1-3.9 Low 4.0-6.9 Medium 7.0-8.9 High 9.0-10 Critical QRS (skrót): = funkcja(CVSS, exploit dostępny, CTI, krytyczność zasobu, ekspozycja)

QQL — Qualys Query Language (filtrowanie)

vulnerabilities.severity: [4,5] and vulnerabilities.type: "VULN" and asset.tags.name: "ENV:Production" and vulnerabilities.lastDetected: [now-7d .. now]

🛠️ Remediacja, SLA i integracja z ITSM

Bez automatyzacji zgłoszeń VMDR zamienia się w „ładne wykresy”. Skonfiguruj reguły, które tworzą ticket i przypisują go do właściciela na podstawie tagów.

# Przykład reguły routingowej do ITSM itsm_rule: when: severity: [4,5] tags: - "ENV:Production" then: create_ticket: system: "ServiceNow" group_by: ["asset.owner", "application"] sla: sev5: "48h" sev4: "5d" fields: short_description: "[VMDR] Krytyczna podatność na {{ asset.hostname }}" description: "QID: {{ vuln.qid }} | CVSS: {{ vuln.cvss }} | QRS: {{ vuln.qrs }} | Ostatnie wykrycie: {{ vuln.last_detected }}"
Retest: Po wdrożeniu poprawek uruchamiaj skany weryfikacyjne lub pozwól Agentowi potwierdzić usunięcie luki. Ticket zamykaj dopiero po „Verified Fixed”.

📈 Dashboardy i raporty

  • Executive: trend ryzyka, MTTR, pokrycie agentami
  • Techniczne: lista luk z QID, hosty, porty, PoC
  • Compliance: mapowanie do PCI DSS, NIST, ISO
Raporty do rozważenia: - Weekly Executive Summary (auto-mail do kierownictwa) - Patch Exceptions Report (zatwierdzone wyjątki i daty przeglądu) - High-Risk Assets (QRS top N, ostatnie 30 dni) - SLA Breaches (opóźnione remediacje)

🔗 Integracje: SIEM, CI/CD, API

SIEM

Splunk / QRadar: - Koreluj "host ma krytyczną podatność" + "anomalia logowania / IDS" - Twórz alerty o potencjalnej eksploatacji aktywnej

API i automatyzacja

# Uwaga: Podmień endpoint na region: qualysapi.qualys.com | qualysapi.qualys.eu | ... curl -u "USER:PASS" \ -H "X-Requested-With: Qualys API" \ -d "action=list&truncation_limit=1000" \ "https://qualysapi.qualys.com/api/2.0/fo/asset/host/"
import os, requests BASE = os.getenv("QUALYS_URL", "https://qualysapi.qualys.com") auth = (os.getenv("QUALYS_USER"), os.getenv("QUALYS_PASS")) hdrs = {"X-Requested-With": "Qualys API"} # Przykład: uruchomienie skanu sieci data = { "action": "launch", "scan_title": "Weekly-Prod-Scan", "ip": "10.0.10.0/24,10.0.20.0/24", "option_title": "Deep-Auth-Weekly", "iscanner_id": "12345" } r = requests.post(f"{BASE}/api/2.0/fo/scan/", auth=auth, headers=hdrs, data=data, timeout=30) print(r.status_code, r.text[:300])

CI/CD (Security Gates)

# Pseudokod pipeline stages: - build - security_scan - deploy security_scan: script: - qualys_webscan --url "$APP_URL" --profile "App-Scan" --out results.json - python fail_if.py --max-critical 0 --max-high 5 results.json allow_failure: false

💡 Najlepsze praktyki i KPI

  • Pokrycie: min. 95% zasobów produkcyjnych z Agentem lub skanerem
  • Rytm: Fast discovery codziennie, deep auth co tydzień
  • Priorytetyzacja: QRS + krytyczność biznesowa > sam CVSS
  • SLA: Critical: 48h, High: 7 dni (dostosuj do ryzyka)
  • KPI: MTTR, odsetek spełnionych SLA, wskaźnik powracających luk
Monitoring programu VM: - Coverage: % zasobów z danymi z ostatnich 7 dni - MTTR (Critical/High) - rolling 30 dni - SLA Breach Rate - % przekroczonych terminów - Reopened Vulns - % ponownie wykrytych po "fixed" - Risk Trend (QRS) - 90 dni

🧰 Troubleshooting i wydajność

Typowe problemy

  • Brak danych z Agenta: sprawdź usługę, proxy/egress 443 do regionu Qualys
  • Auth scan (Windows): WMI/SMB blokowany — otwórz 135/139/445 i dynamic RPC
  • Auth scan (Linux): SSH i sudo bez interakcji (NOPASSWD dla poleceń read-only)
  • Load skanera: Zmniejsz concurrency, rozdziel skany na segmenty
Wydajność: - max_concurrent_scans_per_appliance: 3-5 (w zależności od CPU/RAM) - dziel duże zakresy /24 na mniejsze "scan jobs" - skany UDP uruchamiaj rzadziej, celowo (wolne, podatne na FP)

⚖️ Bezpieczeństwo i etyka

Ważne: Skanuj wyłącznie systemy w uzgodnionym zakresie i z pisemną autoryzacją. Ustal reguły RoE, okna serwisowe, kontakty incydentowe. Przechowuj wyniki i poświadczenia zgodnie z polityką bezpieczeństwa.

📚 Dodatkowe zasoby

  • Dokumentacja Qualys VMDR i API (dostosuj region: .com/.eu)
  • OWASP SAMM i NIST 800‑53 — mapowanie kontroli do programu VM
  • CIS Controls v8 — szczególnie 07 (Słabości) i 12 (Logowanie/Monitoring)
🚀 Następny krok: Zbuduj „minimal viable VM program”: dynamiczne tagi + Agent + profil „Deep-Auth-Weekly” + automatyczny routing ticketów dla PROD. Po 2‑3 tygodniach dopracuj SLA i dashboardy.
📧 Wdrożenie VMDR bez bólu? Pomogę zaprojektować tagowanie, skany uwierzytelnione, KPI i automatyzację w Twojej organizacji. Skontaktuj się ze mną.