Le journal auth montre 50 000 tentatives SSH sur un petit VPS staging ce week-end. Rien n'a été compromis — le mot de passe root était désactivé. Mais le bruit masque une vraie alerte, et fail2ban a banni l'IP du monitoring.
Un bastion (jump host) concentre l'administration : un seul point durci, journalisé, connu — au lieu de N serveurs avec :22 face au monde.
Modèle bastion
Architecture : administrateur → bastion (publique ou VPN-only) → cibles en réseau privé sans SSH public.
Durcissement bastion : OS minimal, mises à jour sécurité automatiques, 2FA, AllowUsers, pas de forwarding agent sauf besoin explicite documenté.
ProxyJump et ergonomie
Exemple ~/.ssh/config :
Host bastion
HostName jump.example.com
User admin
Host prod-*
ProxyJump bastion
User deploy
ControlMaster réduit la latence perçue. Le bastion n'est utile que si l'équipe l'utilise sans friction — mesurez les tickets « SSH timeout » avant d'ajouter des sauts supplémentaires.
Clés, rotation et audit
Une clé par humain, pas partagée sur Slack. authorized_keys via Ansible ou Terraform. Révoquez le jour du départ.
Le bastion connaît les clés humaines ; les cibles connaissent la clé du bastion ou des certificats SSH (Vault, step-ca). Enregistrement de session (tlog, Teleport) pour prod régulée ; minimum : centraliser auth.log vers SIEM.
Alternatives modernes
| Outil | Force | Faiblesse |
|---|---|---|
| WireGuard mesh | Pas de jump perçu | Gouvernance clés |
| SSM Session Manager | Zero inbound port | Verrouillage AWS |
| Tailscale SSH | Simplicité PME | Politique ACL à soigner |
Sur hébergement mutualisé sans SSH root, le bastion ne s'applique pas — limitez panel admin par IP et 2FA.
Durcissement progressif
Semaine 1 : bastion up, accès parallèle direct encore possible pour rollback. Semaine 2 : pare-feu ferme 22 direct sauf bastion. Semaine 3 : revue journaux. Semaine 4 : retrait accès parallèle.
Automatisez inventaire hebdo : script cloud API listant instances avec :22 public. Un oubli Terraform = régression instantanée.
Bastion et offres hébergeurs
Certains clouds proposent bastion managé ou Session Manager — évaluez coût versus petite VM jump à 5 € dans le même datacenter. Bare metal : bastion sur VM voisine réduit la latence ProxyJump.
Sauvegardez la config sshd du bastion dans Git (Ansible) : après restore snapshot, vérifiez les clés autorisées. Exigez que les prestataires passent par le bastion avec clé éphémère — révocation centralisée le jour de fin de mission.
Corrélation fail2ban bastion + SIEM : brute force sur le jump host = alerte P1, pas jail silencieuse. Pour Windows Admin, bastion Linux + tunnel RDP équivalent — même logique : concentrer et journaliser.
Le sommet : fermer 22 partout sauf sur un bastion non patché
Décider et avancer sans angle mort
Comptez les serveurs avec SSH public aujourd'hui — si c'est plus de un, le bastion est en retard. Déployez ProxyJump documenté, révoquez clés orphelines, testez rebuild bastion from Ansible trimestriel.
Exigez prestataires via bastion avec clé éphémère. Comparez VPS jump 5 € versus bastion managé via l'annuaire. Complétez avec Fail2ban : limites sur le durcissement SSH.
Questions fréquentes
Bastion ou VPN ?
Bastion = point SSH unique audité. VPN = réseau privé large. Souvent combinés selon profils d'accès.
Mot de passe autorisé sur le bastion ?
Non en prod : clés Ed25519, MFA optionnel, fail2ban ou rate limit en complément.
Comment accélérer ProxyJump ?
~/.ssh/config avec Host bastion + ProxyJump + ControlMaster pour multiplexage.
Et sans bastion ?
SSM Session Manager, Tailscale SSH, mTLS admin — pas de 22 public sur chaque nœud.
Comptez le nombre de serveurs avec SSH public aujourd'hui — si c'est plus de un, le bastion n'est pas optionnel, il est en retard.
