Accueil

Bastion SSH : Sécuriser l'Accès à Vos Serveurs

Security
Difficulte: Intermediate
3 min de lecture

Découvrez pourquoi et comment utiliser un bastion SSH pour sécuriser l'accès à vos serveurs en production ou dans le cloud.

Retour aux tutoriels

L'essentiel

  • Un bastion (ou jump host) est le seul point d'entrée exposé vers un réseau privé : au lieu de N serveurs à exposer, durcir et surveiller, il n'y en a plus qu'un, et tous les accès sont journalisés au même endroit.
  • Côté client, tout tient dans ~/.ssh/config avec la directive ProxyJump et une IdentityFile distincte pour le bastion et pour les serveurs finaux ; ssh serveur-prive-1 traverse alors le bastion de façon transparente.
  • ProxyJump n'expose jamais la clé privée du serveur final au bastion, contrairement à l'agent forwarding (ssh -A) : si le bastion est compromis, un attaquant peut se servir du socket de votre agent pour se connecter à vos serveurs en votre nom.
  • Un motif générique évite de répéter un bloc par machine : Host serveur-prive-* avec HostName %h.lan, où %h est remplacé par ce que vous tapez.
  • Le durcissement du bastion n'est pas optionnel : mises à jour régulières, Fail2ban contre le bruteforce, pare-feu n'ouvrant que le port SSH (22) et si possible depuis des IP de confiance, /etc/ssh/sshd_config sans accès root et en authentification par clé uniquement.
Qu'est-ce qu'un bastion SSH ?
Un bastion SSH (ou "jump host") est un serveur unique, durci et surveillé, qui sert de seul point d'entrée pour accéder à d'autres serveurs au sein d'un réseau privé. Plutôt que d'exposer chaque serveur à Internet, seul le bastion est accessible de l'extérieur.

Pourquoi Utiliser un Bastion ?

  • Réduction de la surface d'attaque : Au lieu de N serveurs exposés, vous n'en avez plus qu'un à sécuriser et à surveiller.
  • Centralisation de l'audit : Tous les accès passent par un seul point, ce qui facilite grandement la journalisation et l'audit des connexions.
  • Gestion simplifiée des accès : Vous pouvez gérer les droits d'accès au réseau privé depuis un seul endroit.
  • Pas besoin de VPN : Pour un accès SSH simple, un bastion est souvent plus léger et plus simple à maintenir qu'un VPN complet.

Schéma d'une architecture avec bastion


Votre poste de travail ---> Internet ---> [Bastion SSH] ---> Réseau privé (Serveurs Web, BDD, etc.)
(Clé A)                       (Clé A)      (Clé B)

L'utilisateur s'authentifie sur le bastion (avec la Clé A), puis depuis le bastion, il s'authentifie sur le serveur final (avec la Clé B).

Configuration

Étape 1 : Le serveur bastion

Choisissez une machine (une petite VM est souvent suffisante) et installez une distribution Linux minimale. Appliquez les meilleures pratiques de sécurité :

  • Mises à jour régulières.
  • Fail2ban pour contrer les attaques par force brute.
  • UFW (ou autre pare-feu) pour ne autoriser que le port SSH (22) et uniquement depuis des IPs de confiance si possible.
  • Configuration de /etc/ssh/sshd_config durcie (pas d'accès root, authentification par clé uniquement, etc.).

Étape 2 : Configuration du client SSH (votre machine)

La méthode moderne et recommandée est d'utiliser la directive ProxyJump dans votre fichier ~/.ssh/config. C'est beaucoup plus simple et sécurisé que les anciennes méthodes comme l'agent forwarding.

Modifiez ou créez le fichier ~/.ssh/config :


# Connexion au bastion
Host bastion
    HostName bastion.votre-domaine.com
    User admin_bastion
    IdentityFile ~/.ssh/id_rsa_bastion

# Connexion aux serveurs privés via le bastion
Host serveur-privé-*
    HostName %h.lan # %h est remplacé par ce que vous tapez (ex: serveur-privé-1.lan)
    User admin_serveur
    IdentityFile ~/.ssh/id_rsa_serveur_privé
    ProxyJump bastion

Étape 3 : Connexion transparente

Grâce à cette configuration, vous pouvez maintenant vous connecter directement à votre serveur privé. OpenSSH s'occupera de la connexion intermédiaire via le bastion de manière transparente.

ssh serveur-privé-1

C'est tout ! Vous êtes connecté à serveur-privé-1 en passant par bastion.

Simplicité et Sécurité
La directive ProxyJump gère la connexion de bout en bout sans exposer votre clé privée du serveur final au bastion, ce qui est un avantage majeur par rapport à d'autres méthodes.

Copier des fichiers avec scp

La configuration fonctionne aussi directement avec scp :

scp mon_fichier.txt serveur-privé-1:~/
Agent Forwarding (-A)
Évitez d'utiliser l'agent forwarding (ssh -A) via un bastion si vous n'avez pas une confiance absolue en sa sécurité et en ses administrateurs. Si le bastion est compromis, un attaquant pourrait utiliser le socket de votre agent pour se connecter à vos serveurs privés en votre nom. ProxyJump n'a pas ce risque.

Conclusion

Mettre en place un bastion SSH est une des mesures les plus efficaces pour sécuriser une infrastructure réseau. C'est une étape fondamentale qui réduit considérablement les risques. Grâce à la fonctionnalité ProxyJump d'OpenSSH, son utilisation est devenue transparente et plus sécurisée que jamais.

MR

Écrit par

Morgann Riu

Expert en cybersécurité et administration Linux. Je partage mes connaissances à travers des tutoriels gratuits et des formations pour aider les administrateurs systèmes et développeurs à sécuriser leurs infrastructures.

Questions fréquentes

ProxyJump ou agent forwarding (ssh -A), lequel utiliser pour traverser un bastion ?
ProxyJump, sans hésiter. Avec ssh -A, le bastion a accès au socket de votre agent SSH : s'il est compromis, un attaquant peut s'en servir pour se connecter à vos serveurs privés sous votre identité, sans jamais voler de clé. ProxyJump établit le tunnel de bout en bout et la clé privée du serveur final ne quitte jamais votre poste de travail. N'utilisez l'agent forwarding via un bastion que si vous avez une confiance absolue en sa sécurité et en ses administrateurs.
Comment copier un fichier vers un serveur situé derrière le bastion ?
Il n'y a rien de particulier à faire : une fois le bloc ProxyJump présent dans ~/.ssh/config, scp l'utilise exactement comme ssh. La commande scp mon_fichier.txt serveur-prive-1:~/ traverse le bastion de manière transparente. C'est l'un des intérêts de configurer le rebond dans ~/.ssh/config plutôt que dans une commande ponctuelle : tous les outils qui s'appuient sur OpenSSH en bénéficient.
Faut-il écrire un bloc Host par serveur privé dans ~/.ssh/config ?
Non, et c'est vite ingérable sur un parc. Utilisez un motif générique du type Host serveur-prive-* associé à HostName %h.lan : %h est remplacé par ce que vous avez réellement tapé, donc ssh serveur-prive-1 résout vers serveur-prive-1.lan. Un seul bloc, portant User, IdentityFile et ProxyJump bastion, couvre alors toute la flotte.
Un bastion SSH remplace-t-il un VPN ?
Pour un simple besoin d'accès SSH à des machines d'un réseau privé, oui, et c'est même souvent le meilleur compromis : un bastion est plus léger à déployer et à maintenir qu'un VPN complet, et il centralise l'audit des connexions sur un point unique. Il ne couvre en revanche que ce qui transite par SSH. Dès que vous avez besoin d'exposer d'autres protocoles au poste client, un VPN redevient pertinent.
Que faut-il durcir sur la machine bastion elle-même ?
Comme c'est la seule machine exposée à Internet, elle concentre tout le risque. Une petite VM avec une distribution Linux minimale suffit, mais elle doit être tenue à jour, protégée par Fail2ban contre les attaques par force brute, et filtrée par un pare-feu (UFW ou équivalent) n'autorisant que le port SSH 22, idéalement restreint à des IP de confiance. Le fichier /etc/ssh/sshd_config doit être durci : connexion root désactivée et authentification par clé uniquement.

Partager ce tutoriel

Cet article vous a plu ?

Cet article vous a-t-il été utile ?

Merci pour votre retour !

Commentaires

Recommandé pour vous

Article de fond sur le sujet

Checklist Sécurité Linux

30 points essentiels pour sécuriser un serveur Linux. Recevez aussi les nouveaux tutoriels par email.

Pas de spam. Désabonnement en 1 clic.