Zoeken op website

Hoe u een SSH Jump-server in Linux instelt


Een jump host (ook bekend als een jump server) is een intermediaire host of een SSH-gateway naar een extern netwerk, via welke verbinding kan worden gemaakt met een andere host in een een andere veiligheidszone, bijvoorbeeld een gedemilitariseerde zone (DMZ). Het overbrugt twee ongelijksoortige beveiligingszones en biedt gecontroleerde toegang daartussen.

Een jumphost moet sterk beveiligd en gecontroleerd worden, vooral als deze een privénetwerk en een DMZ omvat met servers die diensten leveren aan gebruikers op internet.

Een klassiek scenario is verbinding maken vanaf uw desktop of laptop vanuit het interne netwerk van uw bedrijf, dat sterk beveiligd is met firewalls en een DMZ. Om een server in een DMZ eenvoudig te beheren, kunt u er toegang toe krijgen via een jumphost.

In een notendop is een SSH Jump-server een Linux-server die wordt gebruikt als gateway naar andere Linux-servers op een particulier netwerk via het SSH-protocol.

In dit artikel laten we zien hoe je toegang krijgt tot een externe Linux-server via een jumphost, en ook zullen we de benodigde instellingen configureren in je SSH-clientconfiguraties per gebruiker.

SSH Jump-server instellen

Beschouw het volgende scenario.

Voor meer duidelijkheid vindt u hieronder een eenvoudige installatie die de rol van een SSH Jump-server demonstreert.

Redenen voor het configureren van een SSH Jump Server

Een Jump-server biedt een toegangspoort tot uw infrastructuur en verkleint het potentiële aanvalsoppervlak op uw bronnen. Het biedt ook transparant beheer van apparaten en één enkel toegangspunt tot uw bronnen.

Houd er rekening mee dat wanneer u een jumpserver in uw infrastructuur opneemt, u ervoor moet zorgen dat de server gehard is, anders is het net zo goed als er geen te gebruiken. We komen hier later in deze tutorial op terug.

Hoe u een eenvoudige SSH Jump-server maakt

Laten we ons nu concentreren op hoe u een eenvoudige SSH Jump-server kunt maken. Hier is onze eenvoudige installatie.

  • Oorspronkelijk IP-adres: 105.68.76.85.
  • Jump Server IP (we noemen deze host-jump): 173.82.232.55.
  • Bestemmings-IP (we noemen dit host_destination): 173.82.227.89.

In het bovenstaande scenario wilt u verbinding maken met HOST 2 (173.82.227.89), maar moet u via HOST 1 (173.82.232.55) gaan vanwege firewalling, routering en toegangsrechten. Er zijn een aantal geldige redenen waarom jumphosts nodig zijn.

Dynamische Jumphost-lijst

De eenvoudigste manier om verbinding te maken met een doelserver via een jumphost is het gebruik van de vlaggen -A en -J vanaf de opdrachtregel. Dit vertelt ssh om een verbinding te maken met de jumphost en van daaruit een TCP-forwarding naar de doelserver tot stand te brengen (zorg ervoor dat je een wachtwoordloze SSH-login hebt tussen machines).

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

In onze configuratie hebben we bijvoorbeeld de gebruiker james geconfigureerd op de Jump Server en tecmint geconfigureerd op het bestemmings- of doelsysteem.

De opdracht ziet er als volgt uit vanaf het oorspronkelijke IP-adres.

ssh -A -J [email  [email 

De opdracht vraagt u om het gebruikerswachtwoord van de jumpserver, gevolgd door het wachtwoord van het doelsysteem, waarna u toegang krijgt tot het doelsysteem.

Als gebruikersnamen of poorten op machines verschillen, specificeer ze dan op de terminal, zoals weergegeven.

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

Lijst met meerdere Jumphosts

Dezelfde syntaxis kan worden gebruikt om sprongen over meerdere servers te maken.

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

Statische Jumphost-lijst

Statische jumphost-lijst betekent dat u de jumphost of jumphosts kent die u nodig heeft om een machine aan te sluiten. Daarom moet u de volgende statische jumphost ‘routing’ toevoegen aan het bestand ~/.ssh/config en de hostaliassen specificeren zoals weergegeven.

### 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

Probeer nu verbinding te maken met een doelserver via een jumphost, zoals weergegeven.

ssh -J vps1 contabo

De tweede methode is om de ProxyCommand optie te gebruiken om de jumphost configuratie toe te voegen aan je ~.ssh/config of $HOME/. ssh/config-bestand zoals weergegeven.

In dit voorbeeld is de doelhost contabo en de jumphost is 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

Sla de wijzigingen op en sluit het bestand af. Om de wijzigingen toe te passen, start u de SSH-daemon opnieuw op.

sudo systemctl restart ssh

Laten we de opties verkennen die in het configuratiebestand worden gebruikt:

  • -q – Dit staat voor stille modus. Het onderdrukt waarschuwingen en diagnostische berichten.
  • -W – Verzoekt dat standaard invoer en uitvoer op de client via het beveiligde kanaal worden doorgestuurd naar HOST op PORT.
  • %h – Specificeert de host waarmee verbinding moet worden gemaakt.
  • %p – Specificeerde de poort waarmee verbinding moet worden gemaakt op de externe host.

Om vanaf uw oorspronkelijke IP-adres via de Jump Server naar het doelsysteem te ‘springen‘, voert u gewoon de volgende opdracht uit:

ssh contabo

De bovenstaande opdracht opent eerst een ssh-verbinding met vps1 op de achtergrond die wordt beïnvloed door de ProxyCommand, en start daarna de ssh-sessie met de doelserver contabo sterk>.

SSH Jump Server veiliger maken

Een van de manieren om deze configuratie veiliger te maken is door de openbare SSH-sleutel van het oorspronkelijke systeem naar de Jump Server te kopiëren, en vervolgens naar het doelsysteem, en vervolgens de wachtwoordverificatie uit te schakelen. Bekijk onze handleiding over het inschakelen van SSH-wachtwoordloze authenticatie.

Bekijk daarnaast de tips voor het verharden van SSH-servers.

Zorg er ook voor dat er geen gevoelige gegevens op de Jump-server worden opgeslagen, omdat dit kan leiden tot het lekken van toegangsgegevens zoals gebruikersnamen en wachtwoorden, wat kan leiden tot een systeembrede inbreuk.

Voor meer informatie, zie de ssh man-pagina of raadpleeg: OpenSSH/Cookbxook/Proxies en Jump Hosts.

Dat is het voor nu! In dit artikel hebben we gedemonstreerd hoe u via een jumphost toegang krijgt tot een externe server. Gebruik het onderstaande feedbackformulier om vragen te stellen of uw mening met ons te delen.