← Toutes les règles
SOCLE-CLD-SSH-028// SSHmoyenneruntime effectif

Configurer le MaxStartups de SSH

Limiter le débit des connexions SSH simultanées non authentifiées avec MaxStartups réglé sur 10:30:60.

Vérifié sur l’état résolu en cours d’exécution (ex. sshd -T, sysctl, systemctl show), attrape les drop-ins et Include qu’une lecture de fichier raterait. Réserve : runtime ≠ persistance ; une valeur correcte maintenant peut ne pas survivre à un redémarrage.

Un PASS prouve✓ actif maintenant✓ sur disque✓ survit au rebootle verdict qualifié →
Debian 12CIS 1.1.0Debian 13CIS 1.0.0FedoraRHEL 10 / Rocky 10 / AlmaLinux 10RHEL 8 / Rocky 8 / AlmaLinux 8CIS 4.0.0RHEL 9 / Rocky 9 / AlmaLinux 9CIS 2.0.0Ubuntu 22.04CIS 3.0.0Ubuntu 24.04CIS 1.0.0Ubuntu 26.04
Un seul check, mappé sur 2 normes

Pavois vérifie la configuration effective, l’état résolu et réellement appliqué, pas un fichier. Les scanners basés fichier (OVAL/SCAP, Lynis) ratent les Include, drop-ins et défauts runtime ; ce check voit ce qui est réellement en vigueur.

Un mapping est une référence croisée vers l’endroit où chaque norme situe cette exigence, ancrée et recoupée, pas une affirmation d’équivalence. Un check réussi est une preuve vers ces références, comment le lire.

Pourquoi cette règle

MaxStartups limite le débit des connexions simultanées non authentifiées à sshd, c'est-à-dire les sockets semi-ouverts entre la connexion TCP et l'authentification réussie. La forme 10:30:60 signifie : accepter jusqu'à 10 connexions en attente, puis rejeter aléatoirement les nouvelles avec une probabilité de 30 %, et toutes les refuser une fois 60 en attente. Cela atténue le déni de service par inondation de connexions au stade de la connexion et limite le nombre de créneaux de force brute qu'un attaquant peut mobiliser, préservant la disponibilité des connexions légitimes.

Ce que vérifie Pavois

Pavois vérifie que la sortie effective de sshd -T rapporte maxstartups 10:30:60. Lire le démon en cours d'exécution reflète la valeur après fusion de tous les Include et des drop-ins de /etc/ssh/sshd_config.d/, un scan de fichiers peut manquer une surcharge et signaler un faux résultat.

describe command('sshd -T') do
  its('stdout') { should match(/^maxstartups\s+10:30:60$/i) }
end

Comment vérifier qu’elle est appliquée

Exécuter sshd -T | grep -i maxstartups. Sortie attendue :

  • maxstartups 10:30:60

Inspecter et investiguer

Les connexions en attente rejetées sont journalisées dans /var/log/auth.log (Debian/Ubuntu) ou via journalctl -u ssh / journalctl -u sshd (famille RHEL) sous la forme drop connection #N from ... une fois le seuil atteint.

Remédiation

Le plan de durcissement de Pavois règle la ressource sshd_setting pour la directive maxstartups sur 10:30:60, valide la configuration candidate avec sshd -t, puis déclenche un reload du service ssh. À appliquer avec pavois harden apply.

Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :

directivemaxstartups
notifyaction: reload, service: ssh.service
resourcesshd_setting
value10:30:60
verifysshd -t -f %{path}
pavois harden plan local

où la cible est local, un alias SSH user@hôte, ou un conteneur , Docs

Impact & précautions

Sur des bastions ou hôtes de CI très sollicités qui ouvrent légitimement de nombreuses connexions SSH simultanées, un seuil trop strict peut provoquer des erreurs sporadiques Connection refused/drop connection lors des pics. Dimensionnez les valeurs selon votre pic de concurrence réel (augmentez les seuils de début/plein si nécessaire), échelonnez les tâches automatisées, gardez une seconde session ouverte, et appuyez-vous sur la validation intégrée sshd -t pour qu'une coquille ne casse jamais le service en écoute.

Mapping des normes

NormeRéférenceTypeVersionConfiance
CIS2.2.6, 5.1.18, 5.1.17, 5.1.20directper OS, see the benchmark tablehaute
PCI DSS2.2.6support4.0.1moyenne

Chaque référence est une référence croisée ancrée dans le benchmark amont et recoupée avec le SCAP Security Guide et ansible-lockdown, pas une affirmation d’équivalence. Direct = une exigence prescriptive au niveau de la ligne ; support = une famille de contrôle abstraite (NIST) vers laquelle le check apporte une preuve. Comment lire un mapping.

Sources & références