Ante todo tengamos claro el esquema IP de las máquinas implicadas:
10.10.1.4 -> ADDC 10.10.1.5 -> PROXY
Lo primero que haremos, en el ADDC, es crear un usuario que consultará al ADDC desde el Squid. Ejecutar lo siguiente en el servidor PDC Samba4:
samba-tool user create squid --description="User for Squid proxy server" --random-password samba-tool user setexpiry squid --noexpiry samba-tool spn add HTTP/proxy.inutil.cu squid samba-tool domain exportkeytab /opt/PROXY.keytab --principal HTTP/proxy.inutil.cu
Borrar el SPN por si algo nos sale mal:
samba-tool spn delete HTTP/proxy.inutil.cu
Después de haber creado el SPN, debemos moverlo al proxy:
rsync -avhP /opt/PROXY.keytab root@10.10.1.5:/opt/
Una vez movido al proxy, eliminarlo, pues en el ADDC no cumple función alguna:
rm /opt/PROXY.keytab
Debemos cambiar mediante el RSAT el campo cuenta, el valor de userPrincipalName que por defecto tiene el nombre del usuario por el nombre del SPN, es decir:
HTTP/proxy.inutil.cu
Como muestra la imágen:

A partir de este momento todo lo que se ejecutará, será en el servidor proxy:
apt install krb5-user libkrb5-3
cd /etc
cp krb5.conf{,.bckp}
Editar el config de Kerberos y dejarlo de la siguiente manera:
nano krb5.conf
[libdefaults]
default_realm = INUTIL.CU
dns_lookup_realm = false
dns_lookup_kdc = true
ticket_lifetime = 24h
# Keytab, jejeje
default_keytab_name = /etc/squid/PROXY.keytab
# The following krb5.conf variables are only for MIT Kerberos.
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
#Opcional si usas MSKT-Utils
# for Windows 2008 with 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]
INUTIL.CU = {
kdc = addc.inutil.cu
admin_server = addc.inutil.cu
}
Guardar y salir
Probar la conexión al AD:
kinit administrator@INUTIL.CU klist
Si todo está ok, salimos:
kdestroy
Ahora, necesitaremos NTP:
apt install ntp
Editar /etc/ntp.conf
# Comment out all other pools and allow only # domain controller pool inutil.cu
Reiniciar y chequear el estado de la sincronización del tiempo:
/etc/init.d/ntp restart ntpq -p
Instalando SQUID
apt install squid3 ldap-utils libsasl2-modules-gssapi-mit
cd /etc/squid
cp squid.conf{,.bckp}
mv /opt/PROXY.keytab /etc/squid/
chown proxy:proxy PROXY.keytab
chmod 400 PROXY.keytab
Antes de meternos de a lleno en el fichero de configuración de squid, debemos hacer algunos ajustes:
nano /etc/default/squid
Con el siguiente contenido:
KRB5_KTNAME=/etc/squid/PROXY.keytab export KRB5_KTNAME
Guardamos y salimos.
Ahora probamos que todo funciona:
kinit -k HTTP/proxy.inutil.cu
Lo cual debería devolvernos lo siguiente:

Si obtienen algún error o resultado inesperado revisen la configuración de Kerberos!
Entonces, ahora sí podemos editar la configuración del squid. No me pondré a explicar que hace cada cosa, ya Squid tene documentación y es bastante amplia. Solo iré al grano, es decir, a la auth con kerberos:
# nano /etc/squid/squid.conf
Y el pollo del arroz con pollo:
auth_param negotiate program /usr/lib/squid/negotiate_kerberos_auth -r -s GSS_C_NO_NAME auth_param negotiate children 20 startup=20 idle=20 auth_param negotiate keep_alive off . . . acl auth proxy_auth REQUIRED . . . http_access allow localhost http_access allow auth http_access deny all . . .
ADVERTENCIA: Esta configuración, USTED, debe adaptarla a su entorno, es genérica por lo cual si no le funciona, es porque usted no la ha sabido usar bien, en todo caso lea la documentación para guiarse. Squid es uno de esos programas que no se puede COPIAR/PEGAR a lo loco sin entender lo que se está haciendo!!!
Reiniciamos squid:
/etc/init.d/squid restart
o
squid -k reconfigure
De ambas formas se reinicia Squid.
En caso de necesitar debuguear la configuración usar:
squid -k check
Y a probar. En la próxima entrega viene la nevagación por grupos y LDAP.
Saludos, feliz día el amor y la amistad a todos. Espero les sirva.




Una duda ¿ No hay que unir el servidor squid al dominio de samba 4?, muy buen artículo,
saludos.
Si vas a usar NTLM como método de auth SI necesitas obligarotiamente tener el proxy dentro del dominio, si usas LDAP/Kerberos no es tan necesario. Saludos, hermano!
Es decir usando este método tuyo no hace falta, saludos.
Exactamente. Saludos.
Hola:
Enhorabuena por el artículo, está bastante entretenido. Hace tiempo publiqué un artículo en mi Blog un artículo para aprender a configurar Squid Proxy en modo NO Transparente. Dejo por aquí la URL por si es útil para alguno de tus visitantes.
https://www.raulprietofernandez.net/blog/gnu-linux/como-configurar-proxy-squid-en-modo-no-transparente
Un saludo! 😀
@RPF: Agregado a Favoritos, gracias por pasar. Por cierto, hay cositas interesantes en tu blog. Abrazos.