Wyszukiwanie w witrynie

Jak skonfigurować serwer skoków SSH w systemie Linux


Host przeskoku (znany również jako serwer przeskoku) to host pośredni lub brama SSH do sieci zdalnej, za pośrednictwem której można nawiązać połączenie z innym hostem w inna strefa bezpieczeństwa, na przykład strefa zdemilitaryzowana (DMZ). Łączy dwie różne strefy bezpieczeństwa i zapewnia kontrolowany dostęp między nimi.

Host skoku powinien być wysoce zabezpieczony i monitorowany, zwłaszcza gdy obejmuje sieć prywatną i DMZ z serwerami świadczącymi usługi użytkownikom w Internecie.

Klasyczny scenariusz polega na łączeniu się komputera stacjonarnego lub laptopa z wewnętrznej sieci firmy, która jest wysoce zabezpieczona zaporami ogniowymi, z strefą DMZ. Aby łatwo zarządzać serwerem w strefie DMZ, możesz uzyskać do niego dostęp poprzez hosta skoku.

W skrócie, serwer SSH Jump to serwer Linux, który jest używany jako brama do innych serwerów Linux w sieci prywatnej za pośrednictwem protokołu SSH.

W tym artykule pokażemy, jak uzyskać dostęp do zdalnego serwera Linux za pośrednictwem hosta skoku, a także skonfigurujemy niezbędne ustawienia w konfiguracjach klienta SSH dla poszczególnych użytkowników.

Konfiguracja serwera skoków SSH

Rozważ następujący scenariusz.

Dla większej przejrzystości poniżej znajduje się prosta konfiguracja demonstrująca rolę serwera SSH Jump.

Powody konfiguracji serwera skoku SSH

Serwer Jump stanowi bramę do Twojej infrastruktury i zmniejsza potencjalną powierzchnię ataku na Twoje zasoby. Zapewnia także przejrzyste zarządzanie urządzeniami i pojedynczy punkt dostępu do Twoich zasobów.

Pamiętaj, że włączając serwer skokowy do swojej infrastruktury, upewnij się, że serwer jest wzmocniony, w przeciwnym razie najlepiej byłoby go nie używać. Wrócimy do tego w dalszej części tego samouczka.

Jak utworzyć prosty serwer skoków SSH

Skupmy się teraz na tym, jak utworzyć prosty serwer SSH Jump. Oto nasza prosta konfiguracja.

  • Początkowy adres IP: 105.68.76.85.
  • IP serwera skoków (nazwiemy to skokiem hosta): 173.82.232.55.
  • Docelowy adres IP (nazwiemy go host_destination): 173.82.227.89.

W powyższym scenariuszu chcesz połączyć się z HOST 2 (173.82.227.89), ale musisz przejść przez HOST 1 (173.82.232.55) ze względu na zaporę sieciową, routingu i uprawnień dostępu. Istnieje wiele ważnych powodów, dla których potrzebne są hosty skoku.

Dynamiczna lista Jumphostów

Najprostszym sposobem połączenia się z serwerem docelowym poprzez host skoku jest użycie flag -A i -J z wiersza poleceń. To mówi ssh, aby nawiązał połączenie z hostem skoku, a następnie ustanowił stamtąd przekierowanie TCP do serwera docelowego (upewnij się, że masz możliwość logowania SSH bez hasła między komputerami).

ssh -A -J user@jump-server  user@destination server

Na przykład w naszej konfiguracji mamy użytkownika james skonfigurowanego na Serwerze skoków i tecmint skonfigurowanego w systemie docelowym.

Polecenie będzie wyglądać następująco, biorąc pod uwagę początkowy adres IP.

ssh -A -J [email  [email 

Polecenie wyświetli monit o podanie hasła użytkownika serwera skoków, a następnie hasła systemu docelowego, po którym uzyskasz dostęp do systemu docelowego.

Jeśli nazwy użytkowników lub porty na komputerach różnią się, określ je na terminalu, jak pokazano.

ssh -J username@host1:port username@host2:port	  

Lista wielu Jumphostów

Tej samej składni można użyć do wykonywania przeskoków między wieloma serwerami.

ssh -J username@host1:port,username@host2:port username@host3:port

Statyczna lista Jumphostów

Statyczna lista jumphostów oznacza, że znasz jumphost lub jumphost, których potrzebujesz, aby podłączyć maszynę. Dlatego musisz dodać następujący statyczny routing jumphosta w pliku ~/.ssh/config i określić aliasy hostów, jak pokazano.

### First jumphost. Directly reachable
Host vps1
  HostName vps1.example.org

### Host to jump to via jumphost1.example.org
Host contabo
  HostName contabo.example.org
  ProxyJump vps1

Teraz spróbuj połączyć się z serwerem docelowym za pośrednictwem hosta skoku, jak pokazano.

ssh -J vps1 contabo

Druga metoda polega na użyciu opcji ProxyCommand w celu dodania konfiguracji jumphost w pliku ~.ssh/config lub $HOME/. ssh/config, jak pokazano.

W tym przykładzie hostem docelowym jest contabo, a jumphost to vps1.

Host vps1
	HostName vps1.example.org
	IdentityFile ~/.ssh/vps1.pem
	User ec2-user

Host contabo
	HostName contabo.example.org	
	IdentityFile ~/.ssh/contabovps
	Port 22
	User admin	
	Proxy Command ssh -q -W %h:%p vps1

Zapisz zmiany i zamknij plik. Aby zastosować zmiany, zrestartuj demona SSH.

sudo systemctl restart ssh

Przyjrzyjmy się opcjom użytym w pliku konfiguracyjnym:

  • -q – oznacza tryb cichy. Blokuje ostrzeżenia i komunikaty diagnostyczne.
  • -W – Żąda przesłania standardowego wejścia i wyjścia klienta do HOST na PORT poprzez bezpieczny kanał.
  • %h – Określa host, z którym należy się połączyć.
  • %p – Określ port, z którym należy się połączyć na zdalnym hoście.

Aby „przeskoczyć” do systemu docelowego z początkowego adresu IP przez serwer przeskoku, po prostu uruchom następującą komendę:

ssh contabo

Powyższe polecenie najpierw otworzy połączenie ssh z vps1 w tle, na które wpływa ProxyCommand, a następnie rozpocznie sesję ssh z serwerem docelowym contabo.

Zwiększanie bezpieczeństwa serwera skoków SSH

Jednym ze sposobów zwiększenia bezpieczeństwa tej konfiguracji jest skopiowanie publicznego klucza SSH z systemu źródłowego do Serwera skokowego, a następnie na koniec do systemu docelowego, a następnie wyłączenie uwierzytelniania hasłem. Sprawdź nasz przewodnik na temat włączania uwierzytelniania SSH bez hasła.

Ponadto zapoznaj się ze wskazówkami dotyczącymi wzmacniania serwera SSH.

Upewnij się także, że na serwerze Jump nie znajdują się żadne wrażliwe dane, ponieważ może to prowadzić do wycieku danych uwierzytelniających, takich jak nazwy użytkowników i hasła, co może prowadzić do naruszenia bezpieczeństwa całego systemu.

Aby uzyskać więcej informacji, zobacz stronę podręcznika ssh lub zobacz: OpenSSH/Cookbxook/Proxies i Jump Hosts.

To wszystko na teraz! W tym artykule pokazaliśmy, jak uzyskać dostęp do zdalnego serwera za pośrednictwem hosta skoku. Skorzystaj z poniższego formularza opinii, aby zadać pytania lub podzielić się z nami swoimi przemyśleniami.