Fransys

Blog technique — Architecture, Cloud & DevOps

BlogServicesContactÀ propos

Suivez-moi

githubGitHublinkedinLinkedinmailMail

© 2026 Fransys • Fransys

Fransys

Catégories

  • Tous les articles
  • Tags
  • productivite10
  • nas10
  • ia8
  • securite7
  • linux6
  • claude-code6
  • auto-hebergement6
  • neovim5
  • docker5
  • editeur4
  • mcp3
  • vpn3
  • reseau3
  • lua2
  • terminal2
naslinuxsecuritessh

Sécuriser SSH avec des algorithmes post-quantiques

Publié le
13 janvier 2026·4 min de lecture
Avatar François GUERLEZFrançois GUERLEZ

Pourquoi le post-quantique maintenant ?

L'argument classique, c'est "oh, les ordi quantiques c'est loin encore". Peut-être. Mais il existe une menace bien concrète qui se passe maintenant : le harvest now, decrypt later. En gros, un attaquant capture votre trafic chiffré aujourd'hui, le balance dans un disque dur, et attendra 20 ans que la technologie quantique arrive pour le déchiffrer rétroactivement.

Pour un NAS perso ? Le risque est limité. Mais si vous construisez une infrastructure, autant prendre les bonnes habitudes dès le départ. OpenSSH support les algos post-quantiques depuis la 9.x, et Debian 13 a une version assez fraîche pour en profiter.

Les clés hôte : faire le ménage

Première étape : se débarrasser des clés pourries. Par défaut, Debian génère ECDSA, Ed25519, et RSA. On va supprimer ECDSA et DSA (obsolète), et garder juste Ed25519 et RSA 4096 bits :

# Supprimer les clés hôte non souhaitées
rm -f /etc/ssh/ssh_host_ecdsa_key*
rm -f /etc/ssh/ssh_host_dsa_key*

# Régénérer la clé RSA en 4096 bits si nécessaire
ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -N ""

Après, dans sshd_config, on est explicite :

# /etc/ssh/sshd_config - Clés hôte
 HostKey /etc/ssh/ssh_host_ed25519_key
 HostKey /etc/ssh/ssh_host_rsa_key
 HostKeyAlgorithms ssh-ed25519,rsa-sha2-512,rsa-sha2-256

Ed25519 en priorité : c'est compact, rapide, et basé sur Curve25519 qui est moderne. RSA 4096 en backup pour les vieux clients qui sont pas à jour.

Échanges de clés post-quantiques

Là ça devient marrant. OpenSSH propose maintenant des algos hybrides qui combinent un échange classique (X25519) avec un algo post-quantique. Si l'algo post-quantique se révèle pourri, la sécurité classique reste intacte. Et vice-versa. C'est du hedging de sécurité.

# /etc/ssh/sshd_config - Échange de clés
KexAlgorithms mlkem768x25519-sha256,sntrup761x25519-sha512@openssh.com,curve25519-sha256,diffie-hellman-group16-sha512

Décomposons ce truc :

  • mlkem768x25519-sha256 : hybride ML-KEM 768 (le standard NIST FIPS 203, qui s'appelait CRYSTALS-Kyber avant) + X25519. C'est l'option la plus récente, celle qu'ils recommandent.
  • sntrup761x25519-sha512@openssh.com : hybride NTRU Prime 761 + X25519. C'est dans OpenSSH depuis plus longtemps, c'est un excellent fallback.
  • curve25519-sha256 : échange classique, pour les clients qui comprenez pas le post-quantique encore.
  • diffie-hellman-group16-sha512 : DH classique en dernier recours.

Chiffrement et MACs

Pour le chiffrement symétrique et les codes d'authentification, on reste sur des trucs qui ont fait leurs preuves :

# /etc/ssh/sshd_config - Chiffrement
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com

ChaCha20-Poly1305 par défaut - c'est performant et bien étudié. Les AES-GCM sont là pour les machines avec accélération AES-NI (l'Intel N95 en a). Bon choix technique.

Authentification durcie

Les mots de passe ? Non. Clés SSH uniquement :

# /etc/ssh/sshd_config - Authentification
 PermitRootLogin no
 PasswordAuthentication no
PubkeyAuthentication yes
AuthenticationMethods publickey
MaxAuthTries 3
MaxSessions 5
LoginGraceTime 30

Points clés :

  • PermitRootLogin no : on se connecte avec nasadmin, puis sudo si besoin
  • MaxAuthTries 3 : limite les tentatives de brute-force (après 3 erreurs, boff)
  • LoginGraceTime 30 : 30 secondes pour s'authentifier, pas plus. Les bots se désintéressent vite.

Bannière d'avertissement

Un détail souvent ignoré mais utile. Juridiquement, dans certaines juridictions, cette bannière c'est obligatoire pour poursuivre quelqu'un qui try de s'introduire :

# /etc/ssh/sshd_config
Banner /etc/ssh/banner.txt
# /etc/ssh/banner.txt
*************************************************************
WARNING: Unauthorized access to this system is prohibited.
All connections are monitored and recorded.
By connecting, you agree to comply with applicable policies.
*************************************************************

Ce n'est pas juste cosmétique. Franchement utile si vous travaillez dans un environnement où la compliance c'est pris au sérieux.

Automatisation avec Ansible

Tout ça ? C'est déployé via un rôle Ansible, avec la collection devsec.hardening. Cette collection applique des centaines de règles basées sur CIS et ANSSI.

Le playbook ressemble à ça :

# playbook.yml - extrait
- name: Harden SSH
  hosts: nas
  roles:
    - role: devsec.hardening.ssh_hardening
      vars:
        ssh_kex:
          - mlkem768x25519-sha256
          - sntrup761x25519-sha512@openssh.com
          - curve25519-sha256
          - diffie-hellman-group16-sha512
        ssh_host_key_algorithms:
          - ssh-ed25519
          - rsa-sha2-512
          - rsa-sha2-256
        ssh_ciphers:
          - chacha20-poly1305@openssh.com
          - aes256-gcm@openssh.com
          - aes128-gcm@openssh.com
        ssh_allow_users: nasadmin
        ssh_max_auth_retries: 3

Avantage d'Ansible : c'est idempotent. Relancer le playbook 50 fois, ça change rien. C'est exactement ce qu'on veut.

Côté client : ta clé

Pour se connecter au NAS, évidemment il faut une clé Ed25519 :

# Générer une clé Ed25519
ssh-keygen -t ed25519 -C "user@workstation"

# Vérifier les algos supportés
ssh -Q kex

La commande ssh -Q kex vous montre ce que votre client supporte. Si mlkem768x25519-sha256 apparaît, c'est bon.

Vérification

Après le déploiement, on valide :

# Voir les algos négociés lors d'une connexion
ssh -vv nasadmin@192.168.1.50 2>&1 | grep "kex:"

# Résultat attendu :
# debug1: kex: algorithm: mlkem768x25519-sha256

Et voilà.

Configurer SSH avec du post-quantique, c'est pas complexe. C'est pas coûteux en performance. C'est une mesure proactive qui te protège aujourd'hui contre les menaces de demain. Avec OpenSSH 9.x et Debian 13, tout est là - faut juste configurer les bons paramètres et laisser Ansible faire le job.

Article précédent

← Configurer Neovim from scratch avec Lua et Lazy.nvim

Article suivant

LSP natif dans Neovim 0.11 : zéro plugin, zéro compromis→
← Retour au blog

Sommaire

  • Pourquoi le post-quantique maintenant ?
  • Les clés hôte : faire le ménage
  • Échanges de clés post-quantiques
  • Chiffrement et MACs
  • Authentification durcie
  • Bannière d'avertissement
  • Automatisation avec Ansible
  • Côté client : ta clé
  • Vérification