Volver al inicio

Errores de Kerberos Squid: cifrado incorrecto y clave de servicio

El artículo analiza errores comunes de autenticación Kerberos en Squid con MS AD: tipo de cifrado incorrecto, clave de servicio no disponible, desajuste de KVNO, ICMP pinger. Se proporcionan comandos para diagnósticos, creación de keytab, configuración de krb5.conf y permisos.

Solución de errores de Kerberos Squid: desde cifrado incorrecto hasta ICMP
Advertisement 728x90

Solucionar errores de autenticación Kerberos en Squid con Active Directory

Para diagnosticar eficazmente los errores de Kerberos en Squid, activa el registro detallado. En squid.conf, añade:

debg_options ALL,1 33,2 28,2 50,2 # autenticación, ACL, DNS

Secciones: 33 — autenticación, 28 — ACL, 50 — DNS, 84 — ayudantes externos de ACL. Los niveles van de 0 (errores críticos) a 9 (registro completo).

Configura la salida de 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

Esto captura detalles de GSS-API y autenticación Negotiate para su análisis.

Error 'Tipo de cifrado no válido' en GSS

El log muestra:

ERROR: Validando usuario en autenticación Negotiate. Resultado: {result=BH, notes={message=gss_accept_sec_context() falló: Fallo GSS no especificado. El código menor podría dar más información. Tipo de cifrado no válido }}

Causa: Los tickets TGS del cliente están almacenados en caché con una clave desactualizada, que Squid no puede descifrar.

Google AdInline article slot

Pasos para solucionarlo en el Emulador PDC

  • Identifica el emulador PDC:
Get-ADDomain | Select-Object PDCEmulator
  • Verifica y elimina SPNs antiguos:
setspn -L squid
setspn -D HTTP/testSquidPc.domain.ru userAD
  • Restablece la contraseña de userAD en Active Directory.
  • Genera una nueva keytab:
ktpass /princ HTTP/[email protected] /mapuser [email protected] /crypto ALL /ptype KRB5_NT_PRINCIPAL /pass password /out C:\squid.keytab
  • Forza la replicación:
repadmin /syncall /AdeP

En el servidor 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

En el cliente

klist purge

Reinicia Squid con systemctl start squid. Esto evita el retraso típico de replicación de 10 a 24 horas.

Error 'Clave del servicio no disponible'

Entrada en el log:

ERROR: Validando usuario en autenticación Negotiate. Resultado: {result=BH, notes={message=gss_accept_sec_context() falló: Fallo GSS no especificado. El código menor podría dar más información. Clave del servicio no disponible }}

Causas comunes:

Google AdInline article slot
  • Diferencia en el KVNO (Número de versión de clave) entre AD y la keytab.
  • Mala coincidencia de SPN (nombre FQDN vs nombre corto).

Verifica el KVNO

En Squid:

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

La salida muestra el KVNO, etype y principal.

En el controlador de dominio (PowerShell):

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

Al ejecutar ktpass, usa /vno <número> para alinear los KVNO.

Prueba la keytab

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

Éxito significa sin salida; si hay fallos, probablemente esté relacionado con el inicio del ayudante de Squid.

Valores comunes de etype en la keytab:

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

Configurar cifrado en krb5.conf

Para errores de 'Tipo de cifrado no válido', sincroniza los tipos de cifrado en /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

Evita allow_weak_crypto = true. Especifica solo tipos AES exactos. Verifica que la keytab no contenga DES o RC4 obsoletos.

Error del pinger ICMP

Log:

pinger| Open icmp_sock: (1) Operación no permitida
ERROR: No se pudo iniciar el pinger ICMP.
FATAL: No se pudo abrir ningún socket ICMP.

Solución: Otorga permisos de socket raw:

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

Reinicia Squid.

Conclusiones clave

  • Activa debug_options 33,2 para rastrear autenticación profunda.
  • Sincroniza el KVNO entre keytab y AD usando ktpass /vno y repadmin /syncall.
  • Limpia los tickets del cliente con klist purge.
  • Configura /etc/krb5.conf para usar AES256; desactiva criptografía débil.
  • Para ICMP: ejecuta setcap cap_net_raw+ep en el binario pinger.

— Editorial Team

Advertisement 728x90

Leer después