Zdalny dostęp dostawców: bramka z nagrywaniem sesji zamiast VPN dla każdego
Konto VPN dla dostawcy daje mu dostęp do całej sieci, bez zapisu tego, co zrobił, i często na lata po zakończeniu umowy. Bramka z nagrywaniem sesji, konta czasowe w Active Directory i MFA ograniczają dostęp do konkretnych maszyn i konkretnego okna czasu.
Przewodnik Dostęp uprzywilejowany Część 5 z 5
- Konta uprzywilejowane w Active Directory: model warstw bez wdrażania całego PAM-a
- LAPS: unikalne hasło lokalnego administratora na każdej maszynie
- Logowanie do narzędzi administracyjnych przez Active Directory: LDAPS czy OIDC
- Konto awaryjne: dostęp, gdy logowanie przez katalog przestaje działać
- Zdalny dostęp dostawców: bramka z nagrywaniem sesji zamiast VPN dla każdego
Przegląd kont przed audytem: w grupie z dostępem VPN jest kilkanaście kont dostawców. Część jest współdzielona przez wszystkich pracowników firmy serwisowej, kilka należy do firm, z którymi umowa wygasła dwa lata temu, a jedno logowało się w zeszłym tygodniu, choć nikt nie zamawiał żadnych prac. Każde z tych kont daje dostęp do całej sieci wewnętrznej i nie zostawia śladu poza godziną połączenia.
Dostęp dostawcy da się zawęzić do konkretnych maszyn, konkretnej osoby i konkretnego okna czasu, z nagraniem przebiegu sesji. Potrzebna jest bramka dostępowa, konta czasowe w katalogu i prosty proces włączania dostępu na czas zlecenia.
Trzy modele dostępu
| Model | Ryzyko | Kontrola | Zapis działań |
|---|---|---|---|
| Stały VPN | komputer dostawcy w sieci wewnętrznej, konta aktywne latami, często współdzielone | reguły zapory, rzadko utrzymywane | godzina połączenia i adres IP |
| Zdalny pulpit przez narzędzie dostawcy | agent na serwerze dostępny z internetu, uwierzytelnianie poza kontrolą organizacji | zależna od konfiguracji narzędzia, zwykle niewielka | dziennik po stronie producenta narzędzia |
| Bramka z nagrywaniem sesji | bramka jest celem o wysokiej wartości | konto osobiste z MFA, okno czasu, lista połączeń | nagranie obrazu, dla SSH także wpisywane polecenia |
Stały VPN da się uzasadnić tylko dla dostawcy, który utrzymuje całe środowisko na stałe i ma umowę z wymaganiami bezpieczeństwa. Narzędzie zdalnego pulpitu instalowane na prośbę dostawcy jest najtrudniejsze do kontrolowania, bo jego dostępność zależy od konta po stronie dostawcy, a nie organizacji.
Bramka z nagrywaniem sesji
Bramka to serwer w strefie zdemilitaryzowanej, przez który dostawca łączy się z wybranymi maszynami. Dostawca otwiera przeglądarkę, loguje się do bramki osobistym kontem z drugim składnikiem i widzi wyłącznie przypisane mu połączenia: pulpit zdalny lub SSH do konkretnych serwerów. Bramka nawiązuje połączenie w jego imieniu.
- Dostęp do połączeń, nie do sieci. Zapora przepuszcza ruch do serwerów docelowych wyłącznie z adresu bramki i wyłącznie na porty potrzebnych protokołów.
- Poświadczenia wstrzykiwane przez bramkę. Hasło konta na serwerze docelowym jest zapisane w bramce i podawane automatycznie. Dostawca go nie zna.
- Nagrywanie sesji. Każda sesja jest nagrywana, a nagrania trafiają do magazynu poza bramką.
- Konta osobiste. Każdy pracownik dostawcy ma własne konto, nawet jeśli łączy się do tego samego serwera co inni.
hostname srv-app-01.corp.example.com
port 3389
username vnd-erp-svc # konto na serwerze, hasło zna tylko bramka
recording-path /var/lib/guacamole/recordings
create-recording-path true
disable-copy true # brak kopiowania z serwera do komputera dostawcy
enable-drive false # brak mapowania dysków
W Apache Guacamole nagranie sesji graficznej powstaje we własnym formacie bramki, a dołączone narzędzie guacenc konwertuje je do pliku wideo, gdy trzeba je komuś przekazać. Dla połączeń SSH parametr typescript-path zapisuje dodatkowo przebieg sesji jako tekst, który można przeszukiwać jak zwykły plik.
Po stronie serwera docelowego reguła zapory dopuszcza pulpit zdalny tylko z adresu bramki. Główną ochronę zapewnia zapora sieciowa między strefami, a reguła na hoście jest drugą warstwą.
New-NetFirewallRule -DisplayName 'RDP z bramki dostawców' -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 192.0.2.10 -Action Allow
Reguły zezwalające w zaporze Windows sumują się, więc nowa reguła niczego nie ogranicza, dopóki włączone są domyślne reguły pulpitu zdalnego dopuszczające dowolne źródło. Trzeba je wyłączyć albo zawęzić.
Konta czasowe w Active Directory
Jeśli bramka uwierzytelnia dostawców w Active Directory, konta dostawców leżą w osobnej jednostce organizacyjnej OU=Dostawcy i są domyślnie wyłączone. Nazwa ma postać vnd-<dostawca>-<osoba>, na przykład vnd-erp-jnowak, a pole Manager wskazuje pracownika odpowiedzialnego za umowę z dostawcą. To on zatwierdza zlecenia i to jego pyta się przy przeglądzie, czy konto jest jeszcze potrzebne. Koniec umowy oznacza usunięcie wszystkich kont dostawcy, a nie tylko ich wyłączenie.
Zatwierdzenie zlecenia oznacza trzy polecenia: włączenie konta, ustawienie daty wygaśnięcia i opis ze zgłoszeniem.
$account = 'vnd-erp-jnowak'
Enable-ADAccount -Identity $account
Set-ADAccountExpiration -Identity $account -DateTime '2026-10-16 18:00'
Set-ADUser -Identity $account -Description 'Zgłoszenie 4711, prace do 2026-10-16'
Po zakończeniu prac konto jest wyłączane poleceniem Disable-ADAccount, nawet jeśli data wygaśnięcia jeszcze nie minęła. Data wygaśnięcia jest zabezpieczeniem na wypadek, gdy ktoś zapomni. Clear-ADAccountExpiration nie jest używane wobec kont dostawców: konto bez daty wygaśnięcia to dokładnie ten stan, który model ma wyeliminować.
Drugi składnik jest wymagany na bramce, bo hasło do konta domenowego dostawcy zna jego pracownik i może je zapisać lub przekazać. Bramka wymaga kodu jednorazowego albo logowania przez dostawcę tożsamości, który wymusza MFA.
Proces
- Dostawca zgłasza potrzebę dostępu przez system zgłoszeń: do czego, kiedy, w jakim celu.
- Właściciel systemu zatwierdza zgłoszenie.
- Administrator włącza konto z datą wygaśnięcia i przypisuje na bramce konkretne połączenia.
- Sesja odbywa się przez bramkę i jest nagrywana.
- Po zakończeniu konto jest wyłączane, a numer zgłoszenia zostaje powiązany z nagraniem.
Pułapki
- Bramka jest celem o wysokiej wartości. Ma dostęp do wielu serwerów i przechowuje poświadczenia. Wymaga aktualizacji, MFA dla wszystkich kont, także administracyjnych, i osobnego konta administracyjnego zgodnego z modelem warstw.
- Nie przez bramkę do warstwy 0. Dostawcy nie mają połączeń do kontrolerów domeny ani hypervisorów, a bramka nie przechowuje poświadczeń z uprawnieniami domenowymi.
- Schowek i transfer plików. Domyślnie wyłączone. Włączane dla konkretnego połączenia, gdy jest uzasadnienie, bo umożliwiają wyniesienie danych.
- Nagrania jako dane osobowe. Nagranie sesji przetwarza dane osobowe pracownika dostawcy. Wymaga poinformowania dostawcy w umowie, określonej podstawy prawnej i ograniczonego czasu przechowywania, na przykład 90 dni.
Sprawdź u siebie
Włączone konta dostawców z datą wygaśnięcia i ostatnim logowaniem. Dobry wynik zawiera tylko konta z otwartym zleceniem, każde z AccountExpirationDate w ciągu najbliższych dni. Konto włączone bez daty wygaśnięcia albo z LastLogonDate sprzed miesięcy jest do wyłączenia.
Get-ADUser -SearchBase 'OU=Dostawcy,DC=corp,DC=example,DC=com' -Filter 'Enabled -eq $true' -Properties AccountExpirationDate, LastLogonDate, Description |
Select-Object SamAccountName, AccountExpirationDate, LastLogonDate, Description
Konta wygasłe, ale nadal włączone, oraz konta wygasające w ciągu 7 dni. Pierwsza lista powinna być pusta; druga pokazuje zlecenia, których koniec warto potwierdzić z właścicielem systemu.
$ou = 'OU=Dostawcy,DC=corp,DC=example,DC=com'
Search-ADAccount -AccountExpired -UsersOnly -SearchBase $ou |
Where-Object Enabled |
Select-Object SamAccountName, AccountExpirationDate
Search-ADAccount -AccountExpiring -TimeSpan 7.00:00:00 -UsersOnly -SearchBase $ou |
Select-Object SamAccountName, AccountExpirationDate
Członkowie grupy dającej dostęp VPN dostawcom, jeśli taka jeszcze istnieje. Docelowo grupa jest pusta. Konto bez daty wygaśnięcia albo nieużywane od 90 dni jest pierwsze do usunięcia z grupy.
Get-ADGroupMember -Identity 'GG-VPN-Vendors' -Recursive |
Get-ADUser -Properties LastLogonDate, AccountExpirationDate |
Select-Object SamAccountName, Enabled, LastLogonDate, AccountExpirationDate
Dostępność pulpitu zdalnego serwera docelowego z dowolnej stacji poza bramką. Dobry wynik to TcpTestSucceeded : False; True oznacza, że serwer przyjmuje połączenia RDP spoza bramki.
Test-NetConnection -ComputerName srv-app-01.corp.example.com -Port 3389