Configuración de Proxy · 5 min read · Sep 23, 2025

Debian Squeeze, Squid, Autenticación Kerberos/LDAP, Integración de Active Directory y Cyfin Reporter

Debian Squeeze, Squid, Autenticación Kerberos/LDAP, Integración de Active Directory y Cyfin Reporter

Introducción

Este documento cubre la configuración de un Proxy Squid que se integrará sin problemas con Active Directory para la autenticación utilizando Kerberos con LDAP como respaldo para los usuarios que no están autenticados a través de Kerberos. La autorización se gestiona mediante Grupos en Active Directory. Esto es especialmente útil para clientes de Windows 7 que ya no soportan NTLMv2 sin cambiar la política local de la computadora. Es capaz de utilizar listas blancas y listas negras para el acceso y restricciones de sitios.

Para esta guía se utilizan los siguientes ejemplos: debes actualizar cualquier sección con el dominio de los clientes, nombres de host e IP donde sea necesario.

  • Dominio = example.local
  • Subred = 192.168.0.0/24
  • Servidor Proxy: IP = 192.168.0.26, NOMBRE DE HOST = squidproxy.example.local
  • Servidor Windows 1: IP = 192.168.0.1, NOMBRE DE HOST = domaincontroller1.example.local
  • Servidor Windows 2: IP = 192.168.0.10, NOMBRE DE HOST = server2.example.local

Se asume una instalación base de Debian Squeeze, así como habilidades básicas de administración de Debian. Se asume que vi es el editor de texto.

Requisitos Previos

Los navegadores Internet Explorer del cliente deben tener “Habilitar la autenticación integrada de Windows” marcado en Opciones de Internet :: Configuración avanzada, así como la detección automática de proxy habilitada; busca esto si no estás seguro. Todos los navegadores web modernos soportarán la detección automática de proxy. Firefox y Chrome también soportan la autenticación de Windows.

Configuración de DNS

Instala dnsutils:

apt-get install dnsutils

En el servidor DNS de Windows, agrega una nueva entrada de registro A para el nombre de host del servidor proxy y asegúrate de que también se cree y funcione una entrada PTR (DNS inverso) correspondiente. Verifica que el proxy esté utilizando el servidor DNS de Windows para la resolución de nombres y actualiza /etc/resolv.conf en consecuencia.

vi /etc/resolv.conf
search example.local
nameserver 192.168.0.1
nameserver 192.168.0.10

Haz ping a un nombre de host interno y externo para asegurarte de que DNS esté funcionando.

ping domaincontroller1.example.local -c 4 && ping google.com -c 4

Verifica que puedes hacer una búsqueda inversa del servidor Windows y de la IP local del proxy desde el DNS de Windows.

dig -x 192.168.0.1  
dig -x 192.168.0.26

Advertencia: Si alguna búsqueda DNS falla, no procedas hasta que se solucione o la autenticación del proxy fallará.

Configuración de NTP

Instala el paquete ntp:

apt-get install ntp

Debido a que Kerberos necesita tener la hora sincronizada con los Controladores de Dominio de Windows para la autenticación, configuramos el proxy para obtener la hora de ellos.

vi /etc/ntp.conf

Localiza la siguiente sección y actualiza los servidores ntp según sea necesario. Si tienes más de un Controlador de Dominio o Servidor NTP, puedes agregar múltiples líneas.

# Necesitas hablar con un servidor NTP o dos (o tres).
#server ntp.your-provider.example
server domaincontroller1.example.local
server server2.example.local

Luego reinicia y prueba NTP.

invoke-rc.d ntp restart  
tpq -p

Deberías ver una salida que se refiere a los Controladores de Dominio y otros Servidores NTP que se procesan en el orden en que aparecen en el archivo de configuración.

Configurar Kerberos

Instala los paquetes de Kerberos:

apt-get install krb5-user libkrb53

Simplemente acepta los valores predeterminados presentados en cualquier diálogo de debconf, ya que los estamos sobrescribiendo.

Configura Kerberos.

cp /etc/krb5.conf /etc/krb5.conf.default  
cat /dev/null > /etc/krb5.conf  
vi /etc/krb5.conf

Edita el archivo reemplazando las variables (resaltadas) con el dominio y el servidor del cliente.

Advertencia: Dependiendo de la versión del sistema operativo de tus Controladores de Dominio de Windows, descomenta la sección relevante de Windows 200X y comenta la sección opuesta.

Si solo tienes 1 Controlador de Dominio, elimina la entrada “kdc” adicional de la sección “[realms]”.

[libdefaults]
        default_realm = EXAMPLE.LOCAL
        dns_lookup_kdc = no
        dns_lookup_realm = no
        ticket_lifetime = 24h
        default_keytab_name = /etc/squid3/PROXY.keytab
; para Windows 2003
        default_tgs_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
        default_tkt_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
        permitted_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
; para Windows 2008 con AES
;        default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
;        default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
;        permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
[realms]
        EXAMPLE.LOCAL = {
                kdc = domaincontroller1.example.local
                kdc = server2.example.local
                admin_server = domaincontroller1.example.local
                default_domain = example.local
        }
[domain_realm]
        .example.local = EXAMPLE.LOCAL
        example.local = EXAMPLE.LOCAL

Instalar Squid 3

apt-get install squid3 ldap-utils

Nota: La configuración de Squid se realiza después de que msktutil esté configurado.

Instalar y ejecutar msktutil

Obtén el paquete msktutil e instálalo.

cd /var/cache/apt/archives/  
wget http://fuhm.net/software/msktutil/releases/msktutil_0.4-2_i386.deb  
apt-get install libsasl2-modules-gssapi-mit libsasl2-modules  
dpkg -i msktutil_0.4-2_i386.deb  
cd

Inicia una sesión de kerberos en el servidor para que msktutil pueda usarla para crear nuestro objeto Proxy en Active Directory que se utilizará para el acceso.

kinit administrator

Ingresa la contraseña del administrador del dominio.

Debería devolver sin errores. Puedes ver si obtuviste un ticket exitosamente con:

klist

Ahora configuramos el proxy en AD con principios de servicio ejecutando msktutil (actualiza los valores resaltados con tu red).

Advertencia: No debes mover el objeto de la OU en la que usaste msktutil para crearlo.

msktutil -c -b "CN=COMPUTERS" -s HTTP -k /etc/squid3/PROXY.keytab --computer-name SQUIDPROXY \  
--upn HTTP/squidproxy.example.local --server domaincontroller1.example.local --verbose

Si estás usando un dominio de Server 2008, agrega “–enctypes 28” al final del comando.

msktutil -c -b "CN=COMPUTERS" -s HTTP -k /etc/squid3/PROXY.keytab --computer-name SQUIDPROXY \  
--upn HTTP/squidproxy.example.local --server domaincontroller1.example.local --verbose --enctypes 28

Establece los permisos en el keytab para que squid pueda leerlo.

chgrp proxy /etc/squid3/PROXY.keytab  
chmod g+r /etc/squid3/PROXY.keytab

En el Servidor de Windows, restablece la Cuenta de Computadora en AD haciendo clic derecho en la Computadora SQUIDPROXY y seleccionando “Restablecer Cuenta”, luego ejecuta msktutil de la siguiente manera para asegurarte de que el keytab se actualice como se espera y que el keytab esté siendo obtenido por msktutil desde /etc/krb5.conf correctamente.

Reinicia primero el proxy para borrar los tickets de kerberos generados por el comando kinit, luego ejecuta lo siguiente:

msktutil --auto-update --verbose

Si no se encuentra el keytab, intenta agregar “-k /etc/squid3/PROXY.keytab” al comando para ver si funciona y luego soluciona hasta que se resuelva o los usuarios no podrán autenticarse con Squid.

Agrega lo siguiente a cron para que pueda actualizar automáticamente la cuenta de computadora en Active Directory cuando expire (típicamente alrededor de 30 días). Lo paso a través de logger para que pueda ver cualquier error en syslog si es necesario. Como se indicó, msktutil utiliza el archivo /etc/krb5.conf por defecto para sus parámetros, así que ten en cuenta eso si decides hacer algún cambio en él.

Las variables SHELL y PATH están ahí para asegurar que cron se ejecute correctamente; cámbialo si sabes lo que estás haciendo.

crontab -e
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# m h  dom mon dow   command
00 4  *   *   *     msktutil --auto-update --verbose | logger -t msktutil
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.