🚀 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]
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ą.