Security
Difficulte: Intermediate
3 min de lecture

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

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