Recherche de site Web

Comment configurer un serveur Jump SSH sous Linux


Un hôte de saut (également appelé serveur de saut) est un hôte intermédiaire ou une passerelle SSH vers un réseau distant, via lequel une connexion peut être établie avec un autre hôte dans un zone de sécurité différente, par exemple une zone démilitarisée (DMZ). Il relie deux zones de sécurité différentes et offre un accès contrôlé entre elles.

Un hôte de saut doit être hautement sécurisé et surveillé, en particulier lorsqu'il s'étend sur un réseau privé et une DMZ avec des serveurs fournissant des services aux utilisateurs sur Internet.

Un scénario classique consiste à se connecter depuis votre ordinateur de bureau ou portable depuis le réseau interne de votre entreprise, hautement sécurisé par des pare-feu, à une DMZ. Afin de gérer facilement un serveur dans une DMZ, vous pouvez y accéder via un jump host.

En un mot, un serveur SSH Jump est un serveur Linux utilisé comme passerelle vers d'autres serveurs Linux sur un réseau privé via le protocole SSH.

Dans cet article, nous montrerons comment accéder à un serveur Linux distant via un hôte de saut, et nous configurerons également les paramètres nécessaires dans vos configurations client SSH par utilisateur.

Configuration du serveur de saut SSH

Considérez le scénario suivant.

Pour plus de clarté, vous trouverez ci-dessous une configuration simple démontrant le rôle d'un serveur SSH Jump.

Raisons de configurer un serveur Jump SSH

Un serveur Jump fournit une passerelle vers votre infrastructure et réduit la surface d'attaque potentielle de vos ressources. Il offre également une gestion transparente des appareils ainsi qu'un point d'entrée unique à vos ressources.

Gardez à l’esprit que lorsque vous intégrez un serveur de saut dans votre infrastructure, assurez-vous que le serveur est renforcé, sinon ce serait aussi bien que de ne pas en utiliser un. Nous y reviendrons plus tard dans ce tutoriel.

Comment créer un simple serveur de saut SSH

Concentrons-nous maintenant sur la façon dont vous pouvez créer un simple serveur SSH Jump. Voici notre configuration simple.

  • IP d'origine : 105.68.76.85.
  • IP du Jump Server (nous appellerons cela host-jump) : 173.82.232.55.
  • IP de destination (nous l'appellerons host_destination) : 173.82.227.89.

Dans le scénario ci-dessus, vous souhaitez vous connecter à HOST 2 (173.82.227.89), mais vous devez passer par HOST 1 (173.82.232.55), à cause du pare-feu, le routage et les privilèges d'accès. Il existe un certain nombre de raisons valables pour lesquelles des hôtes de saut sont nécessaires.

Liste dynamique des Jumphosts

Le moyen le plus simple de se connecter à un serveur cible via un hôte de saut consiste à utiliser les indicateurs -A et -J de la ligne de commande. Cela indique à ssh d'établir une connexion à l'hôte de saut, puis d'établir un transfert TCP vers le serveur cible, à partir de là (assurez-vous d'avoir une connexion SSH sans mot de passe entre les machines).

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

Par exemple, dans notre configuration, l'utilisateur appelé james est configuré sur le Jump Server et tecmint configuré sur le système de destination ou cible.

La commande ressemblera à ceci à partir de l’adresse IP d’origine.

ssh -A -J [email  [email 

La commande vous demandera le mot de passe utilisateur du serveur de saut, suivi du mot de passe du système cible sur lequel vous aurez accès au système cible.

Si les noms d'utilisateur ou les ports sur les machines diffèrent, spécifiez-les sur le terminal comme indiqué.

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

Liste de plusieurs Jumphosts

La même syntaxe peut être utilisée pour effectuer des sauts sur plusieurs serveurs.

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

Liste des Jumphosts statiques

La liste des jumphosts statiques signifie que vous connaissez le jumphost ou les jumphosts dont vous avez besoin pour connecter une machine. Par conséquent, vous devez ajouter le « routage » statique jumphost suivant dans le fichier ~/.ssh/config et spécifier les alias d'hôte comme indiqué.

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

Essayez maintenant de vous connecter à un serveur cible via un hôte de saut comme indiqué.

ssh -J vps1 contabo

La deuxième méthode consiste à utiliser l'option ProxyCommand pour ajouter la configuration jumphost dans votre ~.ssh/config ou $HOME/. ssh/config comme indiqué.

Dans cet exemple, l'hôte cible est contabo et le jumphost est 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

Enregistrez les modifications et quittez le fichier. Pour appliquer les modifications, redémarrez le démon SSH.

sudo systemctl restart ssh

Explorons les options utilisées dans le fichier de configuration :

  • -q – Cela signifie mode silencieux. Il supprime les avertissements et les messages de diagnostic.
  • -W – Demande que les entrées et sorties standard du client soient transmises à HOST sur PORT via le canal sécurisé.
  • %h – Spécifie l'hôte auquel se connecter.
  • %p – Spécifié le port auquel se connecter sur l'hôte distant.

Pour « accéder au système de destination à partir de votre adresse IP d'origine via le Jump Server, exécutez simplement la commande suivante :

ssh contabo

La commande ci-dessus ouvrira d'abord une connexion ssh à vps1 en arrière-plan affecté par la ProxyCommand, puis démarrera la session ssh sur le serveur cible contabo.

Rendre le serveur SSH Jump plus sécurisé

L'un des moyens de rendre cette configuration plus sécurisée consiste à copier la clé SSH publique du système d'origine vers le Jump Server, puis enfin vers le système cible, puis à désactiver l'authentification par mot de passe. Consultez notre guide sur la façon d'activer l'authentification sans mot de passe SSH.

De plus, consultez les conseils de renforcement du serveur SSH.

Assurez-vous également qu'aucune donnée sensible n'est hébergée sur le serveur Jump, car cela pourrait entraîner une fuite des informations d'identification d'accès telles que les noms d'utilisateur et les mots de passe, entraînant une violation à l'échelle du système.

Pour plus d'informations, consultez la page de manuel ssh ou reportez-vous à : OpenSSH/Cookbxook/Proxies and Jump Hosts.

C'est tout pour le moment! Dans cet article, nous avons montré comment accéder à un serveur distant via un hôte de saut. Utilisez le formulaire de commentaires ci-dessous pour poser des questions ou partager vos réflexions avec nous.