Diagnostika a odstranění chyb ověřování Kerberos v Squid s Active Directory
Pro efektivní diagnostiku problémů s Kerberosem v Squid aktivujte rozšířené protokolování. V souboru squid.conf nastavte:
debug_options ALL,1 33,2 28,2 50,2 # autentizace, ACL, DNS
Oddíly: 33 — autentizace, 28 — ACL, 50 — DNS, 84 — externí pomocné skripty pro ACL. Úrovně se pohybují od 0 (kritické chyby) po 9 (úplný výpis).
Nastavte výstup protokolů:
access_log stdio:/opt/squid/var/log/squid/access.log
cache_log stdio:/opt/squid/var/log/squid/cache.log
Tím získáte data pro analýzu chyb GSS-API a Negotiate.
Chyba 'Bad encryption type' v GSS
Protokol ukazuje:
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 }}
Příčina: Klienti mají uložené TGS-tikety zašifrované starým klíčem, který Squid nemůže dešifrovat.
Kroky opravy na PDC Emulatoru
- Určete PDC:
Get-ADDomain | Select-Object PDCEmulator
- Zkontrolujte a odstraňte staré SPN:
setspn -L squid
setspn -D HTTP/testSquidPc.domain.ru userAD
- Resetujte heslo uživatele
userADv AD.
- Vytvořte nový keytab:
ktpass /princ HTTP/[email protected] /mapuser [email protected] /crypto ALL /ptype KRB5_NT_PRINCIPAL /pass password /out C:\squid.keytab
- Synchronizujte změny:
repadmin /syncall /AdeP
Na serveru 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 klientovi
klist purge
Spusťte systemctl start squid. Tím obejdete čekací dobu replikace (10–24 hodin).
Chyba 'Service key not available'
Protokol:
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 }}
Příčiny:
- Nesoulad KVNO (Key Version Number) mezi AD a keytab.
- Rozdíl v SPN (FQDN vs krátké jméno).
Kontrola KVNO
Na Squid:
klist -kte /opt/squid/etc/squid.keytab
Výstup zobrazí KVNO, etype a principal.
Na DC (PowerShell):
Get-ADUser -Identity "userAD" -Properties msDS-KeyVersionNumber | Select-Object msDS-KeyVersionNumber
Při použití ktpass uveďte /vno <číslo> pro synchronizaci.
Test keytabu
sudo -u proxy kinit -kt /opt/squid/etc/squid.keytab HTTP/testSquidPc.domain.ru
Úspěch – žádný výstup. Problém je v spouštění pomocného skriptu Squid.
Seznam běžných typů enctypes v keytabu:
- aes256-cts-hmac-sha1-96
- aes128-cts-hmac-sha1-96
- arcfour-hmac (zastaralé)
Nastavení šifrování v krb5.conf
Pro chybu 'Bad encryption type' synchronizujte enctypes v /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
Vyhněte se allow_weak_crypto = true – uveďte přesné typy AES. Zkontrolujte keytab na přítomnost DES/RC4 (zastaralé).
Chyba ICMP pinger
Protokol:
pinger| Open icmp_sock: (1) Operation not permitted
ERROR: Unable to start ICMP pinger.
FATAL: Unable to open any ICMP sockets.
Řešení – udělte práva raw socket:
setcap cap_net_raw+ep /opt/squid/libexec/pinger
Restartujte Squid.
Důležité body
- Aktivujte
debug_options 33,2pro detailní analýzu autentizace. - Synchronizujte KVNO keytab s AD prostřednictvím
ktpass /vnoarepadmin /syncall. - Vyčistěte klientské tikety:
klist purge. - Nastavte
/etc/krb5.confna AES256, vyhýbejte se slabému šifrování. - Pro ICMP:
setcap cap_net_raw+epna pinger.
— Editorial Team
Zatím žádné komentáře.