Un bastion (ou jump server, jump host, jump box) est l'unique point d'entrée chiffré et audité vers une infrastructure privée, historiquement une instance Linux exposée Internet sur le port 22, durcie au maximum, par laquelle transitent toutes les connexions SSH/RDP des administrateurs. En 2026, 80% des bastions SSH artisanaux sont remplacés par des plateformes PAM (Privileged Access Management) : Teleport (open core, gratuit < 100 nodes, 12$/host/mois Enterprise), Wallix Bastion (français, certifié SecNumCloud, ~3-5k€/an entrée de gamme), HashiCorp Boundary 0.17 (octobre 2024), AWS Systems Manager Session Manager (gratuit, élimine le port 22 inbound), CyberArk PAM Self-Hosted, Delinea Secret Server. La rupture conceptuelle : passer du « bastion = point d'entrée » au « bastion = broker d'identité avec JIT access, zero standing privileges, session recording multi-protocole ». L'ANSSI impose pour les OIV (Opérateurs d'Importance Vitale) un bastion avec MFA matériel, recording signé, et PAW (Privileged Access Workstation) dédié, guide v2.0 mai 2018 mis à jour 2024. Cet article documente les trois générations de bastion, le hardening SSH opérationnel, le comparatif PAM 2026, les CVE marquantes, et les anti-patterns persistants.
Pour le contexte d'architecture : voir Zero Trust Architecture (ZTA). Pour les fondamentaux d'identité : IAM (Identity and Access Management) et RBAC.
Le bon mental model : le bastion n'est pas un proxy SSH, c'est un broker d'identité
Erreur conceptuelle la plus fréquente : penser le bastion comme un simple jump host SSH. Cette vision date de 2005-2015 et reste valable pour des homelabs ou des très petites structures (≤ 5 admins). En 2026, un bastion sérieux remplit 5 rôles distincts :
- Authentification forte centralisée, IdP unique (Okta, Entra ID, Keycloak, Auth0) avec MFA matériel (YubiKey FIDO2, carte CPS), pas de mot de passe local.
- Autorisation granulaire, RBAC ou ABAC par target (host, cluster, base de données), pas « accès root partout ».
- JIT access (Just-In-Time), l'admin demande un accès court (1-8h), validé par un peer ou un manager, certificat éphémère généré.
- Session recording multi-protocole, SSH (asciinema/tlog), RDP (vidéo MP4), HTTPS (HAR), base de données (queries log), avec hash signé pour intégrité.
- Audit trail compliance-ready, NIS2, ISO 27001 A.9, ANSSI, PCI DSS 8.3, exportable et requêtable.
Un bastion SSH artisanal couvre 1-2 de ces rôles à grand-peine. Une plateforme PAM moderne (Teleport, Wallix, CyberArk) couvre les 5. C'est cette distinction qui fait passer le bastion d'un « proxy chiffré » à un broker d'identité privilégiée.
Anatomie d'un bastion SSH durci (gen 1)
La config minimale acceptable d'un bastion SSH artisanal, typiquement déployé sur Debian 12 ou Ubuntu 24.04 LTS avec OpenSSH 9.6+ :
# /etc/ssh/sshd_config (extrait critique)
Port 22
Protocol 2
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
AuthenticationMethods publickey,keyboard-interactive:pam
PermitEmptyPasswords no
MaxAuthTries 3
LoginGraceTime 30
ClientAliveInterval 300
ClientAliveCountMax 2
AllowAgentForwarding no
AllowTcpForwarding yes
X11Forwarding no
PermitUserEnvironment no
AllowUsers admin1 admin2 admin3
KexAlgorithms curve25519-sha256@libssh.org,curve25519-sha256
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
HostKeyAlgorithms ssh-ed25519,rsa-sha2-512# Hardening complémentaire
apt install fail2ban tlog libpam-google-authenticator
# fail2ban /etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 3
findtime = 600
bantime = 3600
# Session recording avec tlog (Red Hat, MIT licence)
tlog-rec-session --writer=journal -- /bin/bash
# Audit ssh-audit (cible grade A)
ssh-audit -p 22 bastion.corp.io| Mesure | Outil | Résultat attendu |
|---|---|---|
| Cipher suites strict | sshd_config | ssh-audit grade A |
| MFA TOTP | libpam-google-authenticator | Authentification 2 facteurs |
| Brute-force protection | fail2ban | Ban 1h après 3 échecs en 10 min |
| Session recording | tlog ou auditd | Replay journalisé |
| Filtrage IP | iptables / nftables / cloud SG | Whitelist sources connues |
| Patches OS | unattended-upgrades | Patch automatique J+1 |
| Logs centralisés | syslog → SIEM | Détection IOC, retention 1 an |
| Inventaire clés | cron + script | Détection clés zombies > 90j |
Cette config tient pour ≤ 20 admins. Au-delà, la maintenance manuelle (rotation clés, audit logs, revue accès) coûte plus cher qu'une licence Teleport.
Comparatif PAM 2026 (gen 2)
Marché PAM en mai 2026, vue ingénieur :
| Solution | Modèle | Tarif indicatif | Open Source | Force | Faiblesse |
|---|---|---|---|---|---|
| Teleport | Open core (Apache 2.0 + Enterprise) | Gratuit ≤ 100 nodes, 12$/host/mois Ent. | Oui (Community) | DevX, Kubernetes natif, certs courte durée | Verrouillage Enterprise sur SSO + RBAC |
| Wallix Bastion | Closed source FR | ~3-5k€/an entrée, scalable | Non | SecNumCloud, ANSSI, multilingue | UX vieillissante, intégrations cloud limitées |
| CyberArk PAM Self-Hosted | Closed source | 100k€+/an typique | Non | Référence enterprise, vault PSM | Coût et complexité d'intégration |
| Delinea Secret Server (ex-Thycotic) | Closed source | 50-150€/user/an | Non | Bon rapport prix/fonctionnalités | Pas multi-cloud natif |
| HashiCorp Boundary | Open core | Gratuit OSS, Enterprise sur devis | Oui (MPL 2.0) | Intégration Vault, Consul, Terraform | Maturité 2026 inférieure à Teleport |
| BeyondTrust Privileged Remote Access | Closed source | Sur devis (cher) | Non | Recording riche, support 24/7 | Lourdeur déploiement |
| StrongDM | SaaS | 70$/user/mois | Non | UX excellente, multi-protocole | Pricing élevé |
| AWS SSM Session Manager | Service AWS | Gratuit | Non | Pas de port inbound, IAM intégré | AWS-only, pas multi-cloud |
| Azure Bastion | Service Azure | ~140$/mois host | Non | Pas de public IP VM, MFA Entra | Azure-only |
| GCP Identity-Aware Proxy (IAP) | Service GCP | Inclus GCP | Non | TCP forwarding, intégré IAM | GCP-only |
| Saviynt Privileged Access | SaaS | Sur devis | Non | Lifecycle complet identités | Complexité conf |
Sweet spot 2026 selon profil :
- Startup tech ≤ 50 admins : Teleport Community + IdP Okta/Entra ID, gratuit, suffisant.
- PME industrielle / banque : Wallix Bastion ou CyberArk PSM, exigences ANSSI/PCI compliance.
- Multi-cloud GAFAM-natif : Teleport Enterprise ou StrongDM, UX dev-first.
- AWS-only ≤ 100 instances : SSM Session Manager, gratuit, suffisant.
- OIV / SecNumCloud : Wallix Bastion, seule option certifiée FR mature.
# Exemple Teleport tctl rule (SSH access)
kind: role
version: v7
metadata:
name: prod-readonly
spec:
allow:
logins: ["readonly"]
node_labels:
env: ["prod"]
rules:
- resources: ["session"]
verbs: ["read", "list"]
options:
max_session_ttl: 1h
require_session_mfa: hardware_key_touch
record_session:
desktop: true
ssh: true
default: best_effortCVE bastion / PAM marquantes 2023-2025
Liste non exhaustive, focus sur impact opérationnel :
| CVE | Produit | CVSS | Date | Type |
|---|---|---|---|---|
| CVE-2024-6387 (regreSSHion) | OpenSSH 8.5p1-9.7p1 | 8.1 | 1 juillet 2024 | RCE pre-auth via signal handler |
| CVE-2024-39884 | Apache HTTP Server (jump portail) | 7.5 | juillet 2024 | Source disclosure |
| CVE-2023-48795 (Terrapin) | OpenSSH ≤ 9.5 | 5.9 | décembre 2023 | Prefix truncation handshake |
| CVE-2024-47176 + CUPS chain | cups-browsed | 9.9 | septembre 2024 | RCE bastion exposant CUPS |
| CVE-2023-40217 | Python ssl module | 5.3 | août 2023 | Bypass TLS verify (impact bastion Python) |
| CVE-2024-3094 (XZ Utils backdoor) | liblzma 5.6.0/5.6.1 | 10.0 | mars 2024 | Backdoor SSH via systemd dependency |
| CVE-2024-31497 | PuTTY ≤ 0.80 | 5.9 | avril 2024 | NIST P-521 key recovery |
| CVE-2024-45491 / 92 | libexpat (PAM dependency) | 9.1 | août 2024 | Integer overflow |
regreSSHion (CVE-2024-6387) mérite un focus particulier : RCE pre-auth root sur OpenSSH server, découverte par Qualys (1 juillet 2024), ~14 millions de serveurs exposés selon Shodan à la révélation. Race condition dans sshd quand un client n'authentifie pas avant LoginGraceTime, exploit demande des heures de tentatives mais reste exploitable. Patch OpenSSH 9.8 disponible J+0. Tout bastion non patché à J+7 = exposition critique.
XZ Utils backdoor (CVE-2024-3094) : backdoor sophistiquée injectée dans liblzma 5.6.0/5.6.1 (février-mars 2024) par un mainteneur sous pseudonyme « Jia Tan », découverte par Andres Freund (Microsoft) le 29 mars 2024. Cible : RCE via SSH sur Debian sid, Fedora 41, openSUSE Tumbleweed. Stoppée avant déploiement stable Debian/Ubuntu LTS. Leçon : supply chain attack sur composant indirect (xz n'a aucune relation directe à SSH, mais transit via systemd → libsystemd → sshd patché Debian).
JIT access et zero standing privileges (gen 3)
Le principe ZSP (Zero Standing Privileges) : aucun admin ne possède en permanence d'accès à la prod. C'est la différence majeure entre un PAM 2018 (vault de credentials longue durée) et un PAM 2026 (broker JIT avec certificats éphémères).
Workflow type Teleport Access Request :
- Admin Alice veut SSH sur
prod-db-01. Sa role par défaut n'a aucun accès prod. - Elle ouvre une Access Request dans Teleport : target
node:env=prod, raisonincident #12345 db slowdown, durée2h. - La request est routée à 2 reviewers (peer ou manager selon politique). Notification Slack/email.
- Bob (peer reviewer) consulte la justification, approuve.
- Teleport génère un certificat SSH x.509 court (TTL 2h, principals limités, hardware MFA touché).
- Alice se connecte. Session enregistrée (vidéo SSH + commandes), audit trail signé.
- Expiration auto à T+2h. Aucun credential résiduel.
Implémentations équivalentes :
- Microsoft Entra ID PIM (Privileged Identity Management), pour rôles Azure/M365.
- AWS IAM Identity Center JIT roles, via SCIM + SSO + session courte.
- HashiCorp Vault dynamic secrets, credentials DB générés à la demande, TTL 15 min.
- Saviynt Privileged Access, workflow lourd enterprise.
- CyberArk PSM Just In Time, module Enterprise Access Manager.
ROI mesurable : réduction de 80-95% de la fenêtre d'exposition d'un compte admin compromis. Si Alice se fait phisher son token Okta, sans demande active = aucun accès prod, breach contenu.
Erreurs fréquentes en exploitation bastion
| Erreur | Symptôme | Fix |
|---|---|---|
| Bastion EC2 / VM mutualisé avec autres workloads | Compromission latérale possible | Bastion dédié, hardening minimal exposé |
PermitRootLogin yes | Brute force sur compte universel | PermitRootLogin no, sudo nominatif |
PasswordAuthentication yes | Phishing + brute force réussit | Clés SSH only + MFA |
| Clés SSH 4096-bit RSA datées | Lentes, surface attaque vintage | Migrer Ed25519 (2014, RFC 8709) |
Pas de rotation des authorized_keys | 30-60% clés zombies après 12 mois | Audit trimestriel, expiry via Teleport CA |
AllowAgentForwarding yes non maîtrisé | Hijacking agent SSH du bastion compromis | Désactiver ou restreindre par user |
| Pas de logs centralisés | Forensic impossible post-incident | rsyslog → SIEM avec retention 12 mois |
| MFA seulement sur portail VPN | Bypass possible si bypass VPN | MFA aussi sur sshd via PAM ou Teleport |
| Bastion partagé prod + dev + staging | Pas de séparation, blast radius énorme | 1 bastion par environnement minimum |
| Session recording absent | Audit vide, no accountability | tlog, asciinema, ou bascule PAM |
| Pas de PAW (poste admin dédié) | Compromission bureautique → bastion | PAW VLAN séparé, EDR strict |
sudo sans audit ni MFA | Élévation silencieuse, no traçabilité | sudo -A avec MFA + auditd |
Mapping framework : bastion dans les référentiels
| Framework | Référence | Exigence bastion / PAM |
|---|---|---|
| ANSSI Recommandations Admin | v2.0 mai 2018 | Bastion dédié, MFA matériel, PAW, recording |
| ANSSI SecNumCloud | v3.2 (2022) | Bastion FR, opéré par habilités |
| NIST SP 800-53 r5 | AC-6, IA-2, AU-3 | Least privilege, MFA, audit trail |
| NIST SP 800-207 | Zero Trust | Bastion = PEP (Policy Enforcement Point) |
| ISO/IEC 27001:2022 | A.5.16, A.8.2, A.8.18 | Identity mgmt, privileged access, recording |
| PCI DSS v4.0 | 7.2, 8.3, 10.2 | RBAC, MFA, session log |
| MITRE ATT&CK | T1078 Valid Accounts | Bastion = mitigation principale |
| NIS2 directive | art. 21 §2 (g, h, i) | Authentification forte, contrôles d'accès |
| HIPAA | 45 CFR § 164.308(a)(4) | Access management |
| CIS Controls v8 | 5, 6, 8 | Account mgmt, access control mgmt, audit |
Pour aller plus loin
- VPN (Virtual Private Network), pour comprendre la complémentarité (et la migration) bastion ↔ VPN ↔ ZTNA.
- Zero Trust Architecture (ZTA), où le bastion devient un PEP (Policy Enforcement Point) au sens NIST SP 800-207.
- IAM (Identity and Access Management), pour la couche identité qui alimente le bastion.
- RBAC et ABAC, pour modéliser les autorisations granulaires côté PAM.
- PKI, Teleport et CyberArk reposent sur une PKI interne pour les certs courte durée.
- Sources externes : Teleport docs, ANSSI guide admin, NIST SP 800-207 Zero Trust, Qualys regreSSHion advisory.
Points clés à retenir
- 3 générations de bastion : (1) jump server SSH durci, (2) PAM appliance ou SaaS, (3) broker JIT avec zero standing privileges et certs éphémères.
- 80% des bastions SSH artisanaux sont remplacés par PAM en 2026, Teleport, Wallix, CyberArk, Boundary, AWS SSM, Azure Bastion, GCP IAP.
- Teleport Community gratuit ≤ 100 nodes, Enterprise 12$/host/mois ; Wallix Bastion ~3-5k€/an entrée (français, certifié SecNumCloud) ; CyberArk PAM 100k€+/an enterprise.
- ANSSI guide admin v2.0 (mai 2018, MAJ 2024) : MFA matériel, PAW dédié, session recording signé, séparation stricte.
- regreSSHion (CVE-2024-6387, juillet 2024) : RCE pre-auth root OpenSSH 8.5p1-9.7p1, ~14M serveurs exposés Shodan. Patch obligatoire J+7.
- XZ Utils backdoor (CVE-2024-3094, mars 2024, CVSS 10.0) : supply chain attack via liblzma 5.6.0/5.6.1, découverte Andres Freund. Backdoor SSH evitée de justesse.
- JIT access + ZSP : credentials générés à la demande, TTL 1-8h, validation peer/manager, expiration auto. Réduction 80-95% fenêtre exposition.
- Hardening SSH minimal 2026 : OpenSSH 9.8+, Ed25519 keys (RFC 8709),
PermitRootLogin no, MFA via PAM, fail2ban, ssh-audit grade A. - AWS SSM Session Manager : pas de port 22 inbound, IAM granulaire, log CloudWatch/S3, gratuit. Suffit pour 80% des cas AWS-only.
- Position : bastion SSH artisanal défendable ≤ 20 admins ; au-delà, migration PAM obligatoire pour ISO 27001, SOC 2, NIS2, SecNumCloud.
- Erreur n°1 : 30-60% des
authorized_keyssont zombies après 12 mois sans rotation. Justification suffisante de la migration vers certs courte durée. - Mapping ATT&CK : bastion = mitigation primaire de T1078 Valid Accounts. NIST SP 800-207 le positionne comme PEP (Policy Enforcement Point).






