Définir la limite SSH MaxSessions
Plafonner à 10 le nombre de sessions multiplexées par connexion SSH via MaxSessions.
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.
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
MaxSessions borne le nombre de canaux shell, de connexion ou de sous-système ouverts pouvant être multiplexés sur une seule connexion SSH. Sans plafond raisonnable, un client (ou un attaquant exploitant un point d'appui) peut ouvrir un grand nombre de sessions simultanées sur une connexion et consommer les ressources du démon, menaçant la disponibilité des connexions légitimes. Le fixer à 10 préserve un multiplexage normal tout en empêchant un déni de service par inondation de canaux.
Ce que vérifie Pavois
Pavois vérifie que la sortie effective de sshd -T rapporte maxsessions 10. 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(/^maxsessions\s+([1-9]|10)$/i) }
endComment vérifier qu’elle est appliquée
Exécuter sshd -T | grep -i maxsessions. Sortie attendue :
maxsessions 10
Inspecter et investiguer
L'activité des sessions et des canaux est journalisée dans /var/log/auth.log (Debian/Ubuntu) ou via journalctl -u ssh / journalctl -u sshd (famille RHEL). Les canaux supplémentaires refusés sont signalés au client par error: no more sessions.
Remédiation
Le plan de durcissement de Pavois règle la ressource sshd_setting pour la directive maxsessions sur 10, 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 :
| directive | maxsessions |
|---|---|
| notify | action: reload, service: ssh.service |
| resource | sshd_setting |
| value | 2 |
| verify | sshd -t -f %{path} |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Une limite de 10 est généreuse pour un usage interactif, mais les flux reposant fortement sur le multiplexage de connexion (p. ex. ControlMaster/ControlPersist, sessions distantes d'IDE, scp/sftp parallèles sur une connexion, Ansible avec pipelining) peuvent la dépasser et voir de nouveaux canaux refusés. Examinez ces outils avant d'appliquer, augmentez la valeur si une charge légitime l'exige, gardez une seconde session ouverte, et appuyez-vous sur la validation intégrée sshd -t.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| CIS | 2.2.6, 5.1.17, 5.1.18, 5.1.19 | direct | per OS, see the benchmark table | haute |
| PCI DSS | 2.2.6 | support | 4.0.1 | moyenne |
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.