bastion host
| Po angielsku | bastion host |
|---|---|
| Którą formą pisać | po angielsku Polski odpowiednik istnieje, ale w praktyce nikt tak nie pisze. Zostaw angielski, polski trzymaj jako synonim. |
| Inne formy | stacja przesiadkowa (właśc. jump host — pojęcie pokrewne, NIE synonim) · serwer przesiadkowy (jw.) · host bastionowy (niezaświadczony w sprawdzonych źródłach) |
| Kategoria | Sieć i infrastruktura obronna |
Bastion host to mocno utwardzony serwer wystawiony na styku sieci niezaufanej, który jest jedynym dozwolonym punktem wejścia do zasobów sieci chronionej. Słownik NIST, za instrukcją CNSSI 4009-2022, definiuje go jako komputer specjalnego przeznaczenia w sieci, zaprojektowany i skonfigurowany specjalnie po to, by wytrzymać ataki [1]. Administrator nie łączy się bezpośrednio z serwerami produkcyjnymi, tylko najpierw z bastion hostem, a stamtąd dalej. Pojęciem pokrewnym jest jump host, po polsku stacja przesiadkowa.
Jak działa
Serwery produkcyjne, na przykład serwer WWW i serwer bazy danych, nie przyjmują połączeń administracyjnych z internetu. Port SSH albo RDP jest otwarty tylko na bastion hoście, a serwery wewnętrzne akceptują sesje administracyjne wyłącznie z jego adresu. Bastion host jest przy tym maksymalnie okrojony: działa na nim tylko to, co niezbędne do przekazania sesji, co zmniejsza powierzchnię ataku. Takie utwardzanie jest istotą pojęcia [1].
Drogę administratora do serwera pokazuje schemat poniżej.
W OpenSSH przejście przez bastion obsługuje opcja ProxyJump (w wierszu poleceń -J). Wskazuje ona jeden lub kilka pośrednich hostów, odwiedzanych kolejno; klient łączy się najpierw z pośrednikiem, a stamtąd zestawia przekierowanie TCP do celu [2]. Przykładowy wpis w ~/.ssh/config:
Host bastion
HostName bastion.example.com
User admin
Host www-prod
HostName 10.0.1.20
User deploy
ProxyJump bastion
Odmiany
| Odmiana | Gdzie działa | Cechy |
|---|---|---|
| Własny bastion host | maszyna w strefie DMZ | pełna kontrola, własne utwardzanie i aktualizacje |
| Stacja przesiadkowa (jump host) | sieć przemysłowa, OT | minimum oprogramowania i dostępów [4] |
| Usługa zarządzana w chmurze | np. Azure Bastion | maszyny wirtualne bez publicznego adresu IP [3] |
W środowiskach przemysłowych CERT Polska zaleca, by dostęp zdalny był realizowany przez dedykowane stacje przesiadkowe z niezbędnym oprogramowaniem i dostępami ograniczonymi do minimum [4]. Microsoft opisuje Azure Bastion jako w pełni zarządzaną usługę, która daje połączenia RDP i SSH do maszyn wirtualnych przez TLS, bez wystawiania portów RDP i SSH na zewnątrz [3]. Maszyny wirtualne nie potrzebują wtedy publicznego adresu IP, agenta ani specjalnego klienta [3], a Microsoft wymienia wśród korzyści ochronę przed skanowaniem portów [3]. Usługa występuje w czterech wariantach: Developer, Basic, Standard i Premium; nagrywanie sesji na potrzeby zgodności daje dopiero wariant Premium [3].
W WordPressie
Na typowym hostingu współdzielonym administrator nie projektuje sieci, więc bastion host pojawia się dopiero na serwerze VPS, dedykowanym albo w chmurze. Tam strona WordPress ma zwykle serwer WWW, bazę danych i czasem osobny serwer plików. Bastion host pozwala zamknąć SSH i SFTP na wszystkich tych maszynach poza jedną.
Narzędzie WP-CLI potrafi uruchamiać polecenia na zdalnej instalacji WordPressa parametrem --ssh, w formacie z użytkownikiem, hostem, portem i ścieżką [6]. WP-CLI przekazuje polecenie do programu ssh, który uruchamia WP-CLI na zdalnej maszynie, i przyjmuje alias zapisany w ~/.ssh/config [6]. Wpis hosta z opcją ProxyJump [2] pozwala więc wykonywać polecenia WP-CLI na serwerze produkcyjnym przez bastion, bez otwierania mu SSH na świat.
Bastion host nie zastępuje ochrony samego panelu wp-admin. Panel jest dostępny przez HTTP i wymaga osobnych zabezpieczeń, na przykład uwierzytelniania wieloskładnikowego albo białej listy adresów IP.
Zagrożenia i skutki
Bastion host skupia cały dostęp administracyjny w jednym miejscu. To zaleta, bo łatwiej go pilnować, ale też ryzyko: przejęcie bastionu otwiera drogę do lateral movement w całej sieci. Dlatego oprogramowanie na nim musi być aktualne.
Przykładem jest luka regreSSHion w OpenSSH (CVE-2024-6387), opisana przez Sekurak 1 lipca 2024 roku [5]. Pozwalała ona bez uwierzytelnienia na zdalne wykonanie kodu z uprawnieniami roota na systemach Linux z biblioteką glibc; podatne były wersje poniżej 4.4p1 oraz od 8.5p1 do 9.7p1 [5]. Wśród tymczasowych środków zaradczych Sekurak wymienił ograniczenie dostępu do portu zaporą albo użycie bastion hosta z załataną wersją SSH, by ograniczyć bezpośredni dostęp do podatnych systemów [5]. Według cytowanych przez Sekurak badaczy wygranie wyścigu wymagało średnio około 10 000 prób, a uzyskanie zdalnej powłoki roota średnio 6–8 godzin [5]. Podatnych mogło być ponad 14 milionów instancji dostępnych w internecie [5]. Bastion z nieaktualnym OpenSSH byłby w tej sytuacji najsłabszym punktem, ale jeden załatany bastion chroni wiele serwerów, których port SSH nie jest widoczny z zewnątrz.
Drugim ryzykiem jest przekazywanie agenta SSH. Dokumentacja OpenSSH ostrzega, że użytkownik zdolny obejść uprawnienia plików na zdalnym hoście może przez przekazane połączenie użyć lokalnego agenta: nie wydobędzie kluczy, ale może się nimi uwierzytelniać [2]. ProxyJump zestawia przez pośrednika jedynie przekierowanie TCP [2], więc do serwera docelowego uwierzytelnia się klucz ze stacji administratora, a przekazywanie agenta nie jest potrzebne.
Dobre praktyki
- Logowanie wyłącznie kluczem, bez haseł; zob. logowanie kluczem SSH.
- Drugi składnik uwierzytelniania. CERT Polska dla środowisk przemysłowych zaleca VPN z dwuskładnikowym uwierzytelnianiem, najlepiej fizycznym tokenem, niezależnym od kontrolera domeny [4].
- Nagrywanie i rejestrowanie sesji; CERT Polska zaleca nagrywanie sesji zdalnych [4]. Logi warto wysyłać poza bastion, zgodnie z przyjętą retencją logów.
- Minimalny system, szybkie łatanie, brak innych usług i danych.
ProxyJumpzamiast kopiowania kluczy na bastion i zamiastForwardAgent[2].- Powiązanie z procesem zarządzania dostępem uprzywilejowanym (PAM): kto, kiedy i do czego ma dostęp.
W architekturze Zero Trust podobną rolę pełnią bramy dostępu weryfikujące tożsamość przy każdej sesji; zasada jednego, kontrolowanego wejścia pozostaje ta sama.
Przypisy
6- [1] Glossary: bastion host (CNSSI 4009-2022) · NIST CSRC
- [2] ssh_config(5) — OpenSSH client configuration file · OpenBSD
- [3] What is Azure Bastion? · Microsoft Learn
- [4] Bezpieczna architektura ICS · CERT Polska
- [5] Poważna luka z przeszłości znów niebezpieczna – regreSSHion (CVE-2024-6387) · Sekurak
- [6] Running commands remotely — WP-CLI Handbook · WordPress.org