Zurück zur Startseite

Kerberos Squid-Fehler: fehlerhafte Verschlüsselung und Dienstschlüssel

Der Artikel analysiert gängige Kerberos-Authentifizierungsfehler in Squid mit MS AD: fehlerhafter Verschlüsselungstyp, Dienstschlüssel nicht verfügbar, KVNO-Abweichung, ICMP pinger. Befehle für Diagnosen, Erstellen von keytab, Konfigurieren von krb5.conf und Berechtigungen werden bereitgestellt.

Behebung von Kerberos-Fehlern in Squid: von fehlerhafter Verschlüsselung bis ICMP
Advertisement 728x90

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:

Google AdInline article slot
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.

Google AdInline article slot

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 userAD in 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:

Google AdInline article slot
  • 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,2 für tiefgehende Authentifizierungstracing.
  • Synchronisieren Sie KVNO zwischen Keytab und AD mittels ktpass /vno und repadmin /syncall.
  • Löschen Sie Client-Tickets mit klist purge.
  • Konfigurieren Sie /etc/krb5.conf auf AES256; deaktivieren Sie schwache Kryptografie.
  • Für ICMP: führen Sie setcap cap_net_raw+ep auf der pinger-Binärdatei aus.

— Editorial Team

Advertisement 728x90

Weiterlesen