On-Prem Scanning — tunel, AD/LDAP, vCenter

Gdy ZEUS działa w chmurze, a klient ma środowisko on-premise (np. domenę AD, flotę Windows, vCenter) za firewallem bez portów inbound — łączymy je tunelem reverse-SSH. Studio On-Prem Scanning udostępnia te dane operatorowi.

Topologia

ZEUS (cloud)  →  127.0.0.1:9100  →  (reverse SSH)  →  lsn-vm:9100
                                                          │
                                                          └─→ lsn_probe_agent.py
                                                               · Get-LsnForest.ps1   (AD/LDAP)
                                                               · Get-LsnInventory.ps1 (sieć)
                                                               · Get-LsnPerf.ps1      (WinRM)
                                                               · pyVmomi (vCenter), SMB, SQL
  • Kierunek: pull. Frontend woła /api/v1/lsn-onprem/<probe>, backend trafia na localhost:9100, tunel przekierowuje do agenta na maszynie klienta.
  • Brak inbound u klienta — jedyny wymóg to outbound SSH z lsn-vm do ZEUS.
  • Agent nasłuchuje tylko na 127.0.0.1 — tunel to jedyna droga wejścia.

Probe'y (sondy)

ProbeŹródłoCo zwraca
/forestGet-LsnForest.ps1las AD: domeny, DC, sites, trusty, grupy uprzywilejowane
/forest?fullpaged LDAPcała domena: wszyscy users/groups/computers/OU/SPN/GPO/trusty
/ad-users, /gposLDAPużytkownicy i obiekty GPO
/inventorynetwork sweepARP + ICMP + banner-grab
/winrm-perf, /winrm-eventsWinRMperf + Windows Event Log
/vcenterpyVmomiVM-y, hosty, datastore
/file-shares, /sql-instancesSMB / SQL Browserudziały i instancje SQL

Pełny scrape domeny (paged LDAP)

AD ucina pojedynczą odpowiedź na MaxPageSize (domyślnie 1000), więc zwykły zapytanie cicho obcina dużą domenę. Get-LsnForest.ps1 -Full używa PageResultRequestControl, by przejść całą domenę stronami:

$page = [System.DirectoryServices.Protocols.PageResultRequestControl]::new(1000)
# ...pętla po stronach aż Cookie.Length == 0 → komplet obiektów

To realizuje wymóg „zescrapuj cały AD i LDAP". ADFS pokrywa osobny probe (federation metadata XML + WinRM moduł ADFS).

Warstwa cache + scheduler

Worker lsn_onprem_warmup_tick (ARQ) co ~4 min pre-grzeje cache probe'ów, więc studio renderuje < 100 ms. Działa fail-open — błąd tunelu nie psuje auth.

Konfiguracja (skrót)

LSN_ONPREM_ENABLED=1
LSN_ONPREM_HOST=127.0.0.1
LSN_ONPREM_PORT=9100
LSN_ONPREM_TOKEN=<token>

Runbook operatora: scripts/lsn-probe/REVERSE_TUNNEL.md.

Bezpieczeństwo: użytkownik lsn-tunnel po stronie ZEUS ma ForceCommand /bin/false i permitlisten="9100" — nawet wyciek klucza nie daje shella, tylko jeden pre-autoryzowany reverse-forward. Wszystkie probe'y są read-only.


To zaawansowany temat, ale kluczowy dla wdrożeń hybrydowych — pozwala pokazać klientowi cały las AD i flotę Windows bez otwierania jednego portu inbound.