Kerberos-Authentifizierungsfehler in Squid mit Active Directory beheben
Um Kerberos-Probleme in Squid effektiv zu diagnostizieren, aktivieren Sie detaillierte Protokollierung. Fügen Sie in squid.conf folgende Zeile hinzu:
debug_options ALL,1 33,2 28,2 50,2 # Authentifizierung, ACL, DNS
Abschnitte: 33 — Authentifizierung, 28 — ACL, 50 — DNS, 84 — externe ACL-Helfer. Die Stufen reichen von 0 (kritische Fehler) bis 9 (vollständiger Dump).
Konfigurieren Sie die Protokollausgabe:
access_log stdio:/opt/squid/var/log/squid/access.log
cache_log stdio:/opt/squid/var/log/squid/cache.log
Dies erfasst GSS-API- und Negotiate-Authentifizierungsdetails für die Analyse.
'Fehler bei der Verschlüsselungsart' im GSS
Protokoll zeigt an:
ERROR: Negotiate Authentication validating user. Result: {result=BH, notes={message=gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information. Bad encryption type }}
Ursache: Auf dem Client gespeicherte TGS-Tickets verwenden einen veralteten Schlüssel, den Squid nicht entschlüsseln kann.
Behebungs-Schritte auf dem PDC-Emulator
- Identifizieren Sie den PDC-Emulator:
Get-ADDomain | Select-Object PDCEmulator
- Alte SPNs überprüfen und entfernen:
setspn -L squid
setspn -D HTTP/testSquidPc.domain.ru userAD
- Das Passwort für
userADin Active Directory zurücksetzen.
- Ein neues Keytab generieren:
ktpass /princ HTTP/[email protected] /mapuser [email protected] /crypto ALL /ptype KRB5_NT_PRINCIPAL /pass password /out C:\squid.keytab
- Erzwingen der Replikation:
repadmin /syncall /A /e /P
Auf dem Squid-Server
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
Auf dem Client
klist purge
Squid neu starten mit systemctl start squid. Dadurch wird die typische Replication-Delay von 10–24 Stunden umgangen.
'Dienstschlüssel nicht verfügbar' Fehler
Protokolleintrag:
ERROR: Negotiate Authentication validating user. Result: {result=BH, notes={message=gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information. Service key not available }}
Häufige Ursachen:
- Ungleichheit des KVNO (Key Version Number) zwischen AD und Keytab.
- SPN-Mismatch (FQDN vs. Kurzname).
KVNO prüfen
Auf dem Squid-Server:
klist -kte /opt/squid/etc/squid.keytab
Die Ausgabe zeigt KVNO, etype und Principal.
Auf dem Domänencontroller (PowerShell):
Get-ADUser -Identity "userAD" -Properties msDS-KeyVersionNumber | Select-Object msDS-KeyVersionNumber
Verwenden Sie bei ktpass die Option /vno <Zahl>, um KVNOs auszugleichen.
Keytab testen
sudo -u proxy kinit -kt /opt/squid/etc/squid.keytab HTTP/testSquidPc.domain.ru
Erfolg bedeutet keine Ausgabe; Probleme liegen meist im Start des Squid-Helfers.
Häufige etype-Werte im Keytab:
- aes256-cts-hmac-sha1-96
- aes128-cts-hmac-sha1-96
- arcfour-hmac (veraltet)
Verschlüsselung in krb5.conf konfigurieren
Für 'Bad encryption type'-Fehler synchronisieren Sie die Enctypes in /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
Vermeiden Sie allow_weak_crypto = true. Geben Sie nur exakte AES-Typen an. Überprüfen Sie, dass das Keytab keine veralteten DES- oder RC4-Verschlüsselungen enthält.
ICMP-Pinger-Fehler
Protokoll:
pinger| Open icmp_sock: (1) Operation not permitted
ERROR: Unable to start ICMP pinger.
FATAL: Unable to open any ICMP sockets.
Lösung: Rohsocketerlaubnis gewähren:
setcap cap_net_raw+ep /opt/squid/libexec/pinger
Squid neu starten.
Wichtige Erkenntnisse
- Aktivieren Sie
debug_options 33,2für tiefgehende Authentifizierungstracing. - Synchronisieren Sie KVNO zwischen Keytab und AD mittels
ktpass /vnoundrepadmin /syncall. - Löschen Sie Client-Tickets mit
klist purge. - Konfigurieren Sie
/etc/krb5.confauf AES256; deaktivieren Sie schwache Kryptografie. - Für ICMP: führen Sie
setcap cap_net_raw+epauf der pinger-Binärdatei aus.
— Editorial Team
Noch keine Kommentare.