Zaktualizowano 6 min czytania

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.

Rys. 1. Dostawca widzi tylko przypisane połączenia, nie zna haseł, a każda sesja jest nagrywana; firewall przepuszcza ruch do serwerów wyłącznie z bramki.

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

ModelRyzykoKontrolaZapis działań
Stały VPNkomputer dostawcy w sieci wewnętrznej, konta aktywne latami, często współdzielonereguły zapory, rzadko utrzymywanegodzina połączenia i adres IP
Zdalny pulpit przez narzędzie dostawcyagent na serwerze dostępny z internetu, uwierzytelnianie poza kontrolą organizacjizależna od konfiguracji narzędzia, zwykle niewielkadziennik po stronie producenta narzędzia
Bramka z nagrywaniem sesjibramka jest celem o wysokiej wartościkonto 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

  1. Dostawca zgłasza potrzebę dostępu przez system zgłoszeń: do czego, kiedy, w jakim celu.
  2. Właściciel systemu zatwierdza zgłoszenie.
  3. Administrator włącza konto z datą wygaśnięcia i przypisuje na bramce konkretne połączenia.
  4. Sesja odbywa się przez bramkę i jest nagrywana.
  5. 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