Désactiver le transfert d'agent SSH
Interdit au serveur SSH de relayer la socket de l'agent d'authentification du client (AllowAgentForwarding no). Sans cela, quiconque dispose de root sur le serveur peut détourner la socket d'un administrateur connecté et s'authentifier en son nom sur toutes les machines que ses clés ouvrent.
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.
Ce que vérifie Pavois
Pavois exécute sshd -T et exige la ligne résolue allowagentforwarding no. sshd -T affiche la configuration réellement appliquée par le démon, après tous les Include et tous les drop-ins de /etc/ssh/sshd_config.d/. Lire directement /etc/ssh/sshd_config manquerait un drop-in qui réactiverait le transfert en aval et produirait un faux négatif.
describe command('sshd -T') do
its('stdout') { should match(/^allowagentforwarding\s+no$/i) }
endComment vérifier qu’elle est appliquée
Exécutez sshd -T | grep -i allowagentforwarding en root. Sortie attendue :
allowagentforwarding no
De bout en bout : connectez-vous avec ssh -A user@host et vérifiez que $SSH_AUTH_SOCK est vide dans le shell distant.
Inspecter et investiguer
Au niveau par défaut LogLevel INFO, le refus d'une demande de transfert d'agent ne produit aucune ligne de journal : sshd n'émet agent forwarding disabled qu'en niveau debug. Le signal observable est côté client ($SSH_AUTH_SOCK non défini dans la session). Les événements de connexion et d'authentification restent dans /var/log/auth.log (Debian/Ubuntu), /var/log/secure (RHEL) ou journalctl -u ssh.
Remédiation
Le plan de durcissement Pavois utilise la ressource sshd_setting pour forcer la directive allowagentforwarding à no dans le drop-in Pavois sous /etc/ssh/sshd_config.d/. Le fichier généré est validé par sshd -t -f <fichier> avant d'être conservé, et tout changement déclenche un reload de ssh.service : pas de redémarrage, les sessions en cours ne sont donc pas coupées.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| directive | allowagentforwarding |
|---|---|
| notify | action: reload, service: ssh.service |
| resource | sshd_setting |
| value | no |
| 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
Laisser le transfert d'agent actif transforme chaque serveur sur lequel un administrateur se connecte avec ssh -A en tremplin : root sur cette machine peut utiliser la socket transférée pour signer des défis avec les clés privées de l'administrateur, sans jamais les lire. Avant d'appliquer, recherchez les usages qui reposent sur ForwardAgent (git push depuis le serveur, rebonds ssh -A, scripts de déploiement ou de CI). Le remplacement recommandé est le ProxyJump côté client (ssh -J bastion hote), qui n'expose jamais l'agent à la machine intermédiaire. Le reload n'interrompt pas les sessions en cours : le transfert cesse uniquement pour les nouvelles sessions.