Configurer le backend LDAP de SSSD pour utiliser TLS sur toutes les transactions
Définit ldap_id_use_start_tls = true dans SSSD afin que chaque requête LDAP (identité et authentification) soit encapsulée dans StartTLS et jamais envoyée en clair.
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
Lorsque SSSD interroge LDAP sur une connexion en clair, les noms d'utilisateur, les appartenances de groupe et, selon la méthode de bind, les identifiants transitent en clair sur le réseau, lisibles et modifiables par quiconque sur le chemin. Activer StartTLS sur les requêtes d'identité chiffre le canal et fournit une protection d'intégrité, empêchant l'écoute, le vol d'identifiants et l'altération des données d'annuaire qui pilotent les décisions d'authentification et d'autorisation.
Ce que vérifie Pavois
Le contrôle ne s'exécute que si /etc/sssd/sssd.conf existe, puis recherche dans l'arborescence /etc/sssd/ la directive ldap_id_use_start_tls = true. SSSD n'offrant pas de vidage d'exécution simple de ce réglage, la directive sur disque à travers tous les fragments de configuration est le reflet faisant autorité de ce que le démon charge, et Pavois lit toute l'arborescence, pas un seul fichier, afin de ne pas manquer les drop-ins.
only_if { file('/etc/sssd/sssd.conf').exist? }
describe command('grep -qriE \'^[[:space:]]*ldap_id_use_start_tls[[:space:]]*=[[:space:]]*true\' /etc/sssd/ 2>/dev/null && echo ok || echo ko') do
its('stdout.strip') { should eq 'ok' }
endComment vérifier qu’elle est appliquée
Exécutez grep -riE 'ldap_id_use_start_tls\s*=\s*true' /etc/sssd/. La sortie attendue est une ligne correspondante ldap_id_use_start_tls = true. Remarque : cette directive s'applique aux URI ldap:// ; si ldap_uri utilise déjà ldaps://, le TLS est implicite et StartTLS n'est pas nécessaire.
Inspecter et investiguer
SSSD enregistre sa négociation TLS via journalctl -u sssd et, avec le débogage activé, dans /var/log/sssd/sssd_*.log. Une négociation StartTLS échouée (AC manquante, serveur sans TLS) y apparaît ; les événements d'authentification utilisateur arrivent aussi dans /var/log/secure (RHEL) ou /var/log/auth.log (Debian/Ubuntu).
Remédiation
Aucun plan de durcissement automatisé n'est défini ; cela doit donc être appliqué manuellement : dans la section [domain/...] de /etc/sssd/sssd.conf, définissez ldap_id_use_start_tls = true, assurez-vous que ldap_tls_cacert/ldap_tls_cacertdir est configuré et que ldap_tls_reqcert vaut demand, puis systemctl restart sssd.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| command | # If SSSD with LDAP is configured, enable StartTLS in /etc/sssd/sssd.conf: # ldap_id_use_start_tls = true # then: systemctl restart sssd |
|---|---|
| reason | only applies if SSSD/LDAP is in use, enable StartTLS in sssd.conf deliberately |
| resource | manual |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Activer StartTLS exige que le serveur LDAP prenne en charge TLS sur son port ldap:// et que le client fasse confiance à l'AC du serveur ; si l'un manque, SSSD échouera au bind et l'authentification sera cassée pour tous les utilisateurs de l'annuaire. Avant d'appliquer, vérifiez que le serveur propose StartTLS et que l'AC est installée, conservez un compte administrateur local pour la récupération, et redémarrez SSSD dans une fenêtre de maintenance en surveillant journalctl -u sssd. Ce contrôle ne s'évalue que lorsque SSSD est réellement utilisé.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| ANSSI BP-028 | R67 | direct | 2.0 | haute |
| NIST | CM-6(a), CM-7(a), CM-7(b) | support | 800-53 Rev 5 · 800-171 Rev 2 (pinned) | 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.