Vérifier les permissions du fichier de configuration du serveur SSH
Garantit que /etc/ssh/sshd_config appartient à root sans lecture/écriture/exécution pour le groupe ou les autres, protégeant la politique maîtresse du démon SSH contre l'altération et la divulgation.
Vérifié sur le contenu d’un fichier de configuration persistant, la source de vérité qui survit aux redémarrages.
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
/etc/ssh/sshd_config est la configuration maîtresse du démon SSH et active ou désactive des fonctionnalités critiques (connexion root, authentification par mot de passe ou par clé, chiffrements, utilisateurs autorisés). S'il est modifiable par le groupe ou les autres, un utilisateur non privilégié pourrait l'altérer pour affaiblir l'accès distant ou installer une porte dérobée prenant effet au prochain rechargement ; s'il est lisible par le groupe/les autres, la politique d'accès est divulguée à quiconque sur l'hôte. Le fichier doit appartenir à root sans lecture/écriture/exécution pour le groupe ou les autres ni bits spéciaux, afin que seul l'administrateur contrôle la politique du serveur SSH.
Ce que vérifie Pavois
Pavois lit le mode effectif de l'inode de /etc/ssh/sshd_config et vérifie l'absence de lecture/écriture/exécution pour le groupe ou les autres et l'absence de bits setuid/setgid/sticky. Protégé par only_if { file('/etc/ssh/sshd_config').exist? }. Note : ce contrôle couvre les permissions du fichier ; la politique SSH effective elle-même (qui peut être surchargée par des drop-ins Include) est ce que rapporte sshd -T, les contrôles de service de Pavois auditent cet état résolu, tandis que cette règle verrouille le fichier qui l'amorce.
only_if { file('/etc/ssh/sshd_config').exist? }
describe file('/etc/ssh/sshd_config') do
it { should_not be_executable.by('owner') }
it { should_not be_setuid }
it { should_not be_executable.by('group') }
it { should_not be_writable.by('group') }
it { should_not be_readable.by('group') }
it { should_not be_setgid }
it { should_not be_executable.by('other') }
it { should_not be_writable.by('other') }
it { should_not be_readable.by('other') }
it { should_not be_sticky }
endComment vérifier qu’elle est appliquée
Exécutez stat -c '%a %U %G' /etc/ssh/sshd_config. La sortie attendue est 600 root root (ou plus strict) : aucune lecture, écriture ou exécution pour le groupe ou les autres.
Inspecter et investiguer
stat /etc/ssh/sshd_config affiche le mode courant ; sshd -T affiche la politique effective qu'il produit. Les événements de service et d'authentification SSH sont dans journalctl -u ssh / /var/log/auth.log (Debian/Ubuntu) ou journalctl -u sshd / /var/log/secure (famille RHEL). Les modifications du fichier apparaissent dans /var/log/audit/audit.log si surveillées.
Remédiation
Aucun plan de durcissement automatisé n'est défini pour cette règle, appliquez-la donc manuellement : chown root:root /etc/ssh/sshd_config puis chmod 0600 /etc/ssh/sshd_config.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| group | root |
|---|---|
| mode | 0600 |
| owner | root |
| path | /etc/ssh/sshd_config |
| resource | file |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Un sshd_config modifiable par le groupe ou tous permet à un utilisateur non privilégié de réactiver la connexion root, d'activer l'authentification par mot de passe ou d'autoriser un compte dérobé au prochain rechargement, une compromission critique de l'accès distant ; un fichier lisible divulgue la politique d'accès. Précautions : le resserrement à 0600 root:root n'interrompt pas les sessions SSH actives et correspond au défaut de la distribution, le risque est donc faible. Lancez sshd -t pour valider la syntaxe avant tout rechargement afin d'éviter d'arrêter le démon et de vous verrouiller dehors, et gardez au moins une session authentifiée ouverte pendant les modifications.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| ANSSI BP-028 | R50 | direct | 2.0 | haute |
| CIS | 2.2.6, 5.1.1, 5.1.2 | direct | per OS, see the benchmark table | haute |
| NIST | AC-17(a), AC-6(1), CM-6(a) | support | 800-53 Rev 5 · 800-171 Rev 2 (pinned) | moyenne |
| 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.