Retour à l'accueil

Erreurs Kerberos Squid : chiffrement incorrect et clé de service

L'article analyse les erreurs d'authentification Kerberos courantes dans Squid avec MS AD : mauvais type de chiffrement, clé de service non disponible, incohérence KVNO, pinger ICMP. Commandes pour diagnostics, création de keytab, configuration de krb5.conf et permissions fournies.

Correction des erreurs Kerberos Squid : du chiffrement incorrect à ICMP
Advertisement 728x90

Résoudre les erreurs d'authentification Kerberos dans Squid avec Active Directory

Pour diagnostiquer efficacement les erreurs Kerberos dans Squid, activez la journalisation détaillée. Dans squid.conf, ajoutez :

debug_options ALL,1 33,2 28,2 50,2 # authentification, ACL, DNS

Sections : 33 — authentification, 28 — ACL, 50 — DNS, 84 — helpers externes pour les ACL. Les niveaux vont de 0 (erreurs critiques) à 9 (dumps complets).

Configurez la sortie des logs :

Google AdInline article slot
access_log stdio:/opt/squid/var/log/squid/access.log
cache_log stdio:/opt/squid/var/log/squid/cache.log

Cela permet de capturer les détails de l’authentification GSS-API et Negotiate pour analyse.

Erreur « Type de chiffrement non valide » dans GSS

Le journal affiche :

ERROR: Validation de l'authentification Negotiate. Résultat : {result=BH, notes={message=gss_accept_sec_context() échoué : Échec GSS non spécifié. Le code mineur peut fournir plus d'infos. Type de chiffrement non valide }}

Cause : les tickets TGS côté client sont mis en cache avec une clé obsolète que Squid ne peut pas décrypter.

Google AdInline article slot

Étapes de correction sur le contrôleur PDC

  • Identifiez le contrôleur PDC :
Get-ADDomain | Select-Object PDCEmulator
  • Vérifiez et supprimez les anciens SPN :
setspn -L squid
setspn -D HTTP/testSquidPc.domain.ru userAD
  • Réinitialisez le mot de passe de userAD dans Active Directory.
  • Générez un nouveau keytab :
ktpass /princ HTTP/[email protected] /mapuser [email protected] /crypto ALL /ptype KRB5_NT_PRINCIPAL /pass password /out C:\squid.keytab
  • Forcez la réplication :
repadmin /syncall /AdeP

Sur le serveur Squid

systemctl stop squid
chown proxy:proxy /opt/squid/etc/squid.keytab
chmod 600 /opt/squid/etc/squid.keytab
klist -kte /opt/squid/etc/squid.keytab

Sur le client

klist purge

Redémarrez Squid avec systemctl start squid. Cette méthode contourne le délai habituel de réplication de 10 à 24 heures.

Erreur « Clé du service non disponible »

Entrée de log :

ERROR: Validation de l'authentification Negotiate. Résultat : {result=BH, notes={message=gss_accept_sec_context() échoué : Échec GSS non spécifié. Le code mineur peut fournir plus d'infos. Clé du service non disponible }}

Causes fréquentes :

Google AdInline article slot
  • Incompatibilité du KVNO (numéro de version de clé) entre AD et keytab.
  • Mauvaise correspondance du SPN (nom complet vs court).

Vérifiez le KVNO

Sur Squid :

klist -kte /opt/squid/etc/squid.keytab

La sortie affiche le KVNO, le type de chiffrement et le principal.

Sur le contrôleur de domaine (PowerShell) :

Get-ADUser -Identity "userAD" -Properties msDS-KeyVersionNumber | Select-Object msDS-KeyVersionNumber

Lors de l’exécution de ktpass, utilisez /vno <nombre> pour aligner les KVNO.

Testez le keytab

sudo -u proxy kinit -kt /opt/squid/etc/squid.keytab HTTP/testSquidPc.domain.ru

Un succès se traduit par aucune sortie ; les problèmes proviennent généralement du démarrage du helper Squid.

Valeurs courantes d’etype dans le keytab :

  • aes256-cts-hmac-sha1-96
  • aes128-cts-hmac-sha1-96
  • arcfour-hmac (ancien)

Configuration du chiffrement dans krb5.conf

Pour les erreurs « Type de chiffrement non valide », synchronisez les types de chiffrement dans /etc/krb5.conf :

[libdefaults]
default_tgs_enctypes = aes256-cts-hmac-sha1-96
default_tkt_enctypes = aes256-cts-hmac-sha1-96
permitted_enctypes = aes256-cts-hmac-sha1-96

Évitez allow_weak_crypto = true. Spécifiez uniquement les types AES exacts. Vérifiez que le keytab ne contient pas de DES ou RC4 obsolètes.

Erreur du pinger ICMP

Log :

pinger| Open icmp_sock: (1) Opération non autorisée
ERROR: Impossible de démarrer le pinger ICMP.
FATAL: Impossible d'ouvrir des sockets ICMP.

Solution : accordez les permissions socket brutes :

setcap cap_net_raw+ep /opt/squid/libexec/pinger

Redémarrez Squid.

Points clés à retenir

  • Activez debug_options 33,2 pour un suivi approfondi de l’authentification.
  • Synchronisez le KVNO entre le keytab et AD avec ktpass /vno et repadmin /syncall.
  • Nettoyez les tickets clients avec klist purge.
  • Configurez /etc/krb5.conf pour utiliser AES256 ; désactivez le chiffrement faible.
  • Pour ICMP : exécutez setcap cap_net_raw+ep sur le binaire pinger.

— Editorial Team

Advertisement 728x90

Lire ensuite