Powrót do strony głównej

Błędy Kerberos Squid: bad encryption i service key

Artykuł analizuje powszechne błędy uwierzytelniania Kerberos w Squid z MS AD: bad encryption type, service key not available, KVNO mismatch, ICMP pinger. Podane polecenia do diagnostyki, tworzenia keytab, konfiguracji krb5.conf i praw dostępu.

Naprawiamy błędy Kerberos Squid: od bad encryption do ICMP
Advertisement 728x90

Diagnozowanie i naprawa błędów uwierzytelniania Kerberos w Squid z Active Directory

Aby skutecznie diagnozować problemy z Kerberosem w Squid, włącz rozszerzone logowanie. W pliku squid.conf ustaw:

debg_options ALL,1 33,2 28,2 50,2 # uwierzytelnianie, ACL, DNS

Kategorie: 33 — uwierzytelnianie, 28 — ACL, 50 — DNS, 84 — zewnętrzne pomocniki ACL. Poziomy od 0 (krytyczne błędy) do 9 (pełny dump).

Skonfiguruj wyjście logów:

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

To pozwoli na analizę błędów GSS-API i mechanizmu Negotiate.

Błąd 'Bad encryption type' w GSS

Log pokazuje:

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 }}

Przyczyna: klienckie tikety TGS są szyfrowane starym kluczem, Squid nie może ich odszyfrować.

Google AdInline article slot

Kroki naprawy na PDC Emulator

  • Zidentyfikuj PDC:
Get-ADDomain | Select-Object PDCEmulator
  • Sprawdź i usuń stare SPN:
setspn -L squid
setspn -D HTTP/testSquidPc.domain.ru userAD
  • Zresetuj hasło użytkownika userAD w AD.
  • Utwórz nowy keytab:
ktpass /princ HTTP/[email protected] /mapuser [email protected] /crypto ALL /ptype KRB5_NT_PRINCIPAL /pass password /out C:\squid.keytab
  • Replikacja:
repadmin /syncall /AdeP

Na serwerze 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

Na kliencie

klist purge

Uruchom systemctl start squid. To obejmuje oczekiwanie replikacji (10–24 godziny).

Błąd 'Service key not available'

Log:

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 }}

Przyczyny:

Google AdInline article slot
  • Niespójność KVNO (Key Version Number) między AD a keytab.
  • Różnice w SPN (FQDN vs nazwa skrócona).

Sprawdzenie KVNO

Na Squid:

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

Wyjście pokaże KVNO, etype, principal.

Na DC (PowerShell):

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

Podczas używania ktpass, podaj /vno <numer> do synchronizacji.

Test keytab

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

Powodzenie — bez wyjścia, problem leży w uruchamianiu pomocnika Squid.

Lista typowych etype w keytab:

  • aes256-cts-hmac-sha1-96
  • aes128-cts-hmac-sha1-96
  • arcfour-hmac (przestarzały)

Konfiguracja szyfrowania w krb5.conf

W przypadku błędu 'Bad encryption type', zsynchronizuj enctypes w /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

Unikaj allow_weak_crypto = true — określ precyzyjne typy AES. Sprawdź, czy keytab zawiera DES/RC4 (przestarzałe).

Błąd ICMP pinger

Log:

pinger| Open icmp_sock: (1) Operation not permitted
ERROR: Unable to start ICMP pinger.
FATAL: Unable to open any ICMP sockets.

Rozwiązanie — nadaj uprawnienia raw socket:

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

Restartuj Squid.

Ważne informacje

  • Aktywuj debug_options 33,2 dla szczegółowej analizy uwierzytelniania.
  • Synchronizuj KVNO keytab z AD przez ktpass /vno i repadmin /syncall.
  • Oczyść tikety klienckie: klist purge.
  • Skonfiguruj /etc/krb5.conf na AES256, unikaj słabej kryptografii.
  • Dla ICMP: setcap cap_net_raw+ep na pinger.

— Editorial Team

Advertisement 728x90

Czytaj dalej