Este documento describe el proceso de integración de Samba AD DC con Squid con soporte para la autenticación Kerberos y basic (como fallback).
- Sistema operativo: Debian GNU/Linux 9 (Stretch) 64bits
- Version de Squid:
3.5
- Nombre de dominio:
foo.bar
- Nombre de host del servidor AD DC:
dc
- Nombre de host del servidor proxy:
proxy
- Dirección IP del servidor AD DC:
192.168.0.1
- Dirección IP del servidor proxy:
192.168.0.2
- Es importante agregar los registros A del servidor AD DC y proxy, así como los correspondientes registros PTR en la zona inversa.
- Para poder hacer uso de Single Sing-On (SSO) se requiere que la máquina cliente esté unida al dominio y que esté habilitado Integrated Windows Authentication en Opciones de Internet / Opciones Avanzadas en Internet Explorer.
- Cuando no sea posible utilizar Kerberos, se usa la autenticación básica en la que las credenciales viajan de forma insegura.
- La sincronización de tiempo es vital para que el proceso de autenticación se realice correctamente.
El servidor proxy debe utilizar el servidor DNS de Samba.
cat /etc/resolv.conf
search foo.bar
nameserver 192.168.0.1
cat /etc/hosts
127.0.0.1 localhost
192.168.0.2 proxy.foo.bar proxy
Comprobar la resolución del nombre de domino, FQDN y hostname por la IP estática.
ping -c4 foo.bar
ping -c4 dc.foo.bar
ping -c4 proxy.foo.bar
ping -c4 dc
ping -c4 proxy
host -t A dc.foo.bar
host -t A proxy.foo.bar
host -t PTR 192.168.0.1
host -t PTR 192.168.0.2
Utilizar el cliente NTP de systemd.
timedatectl set-ntp true
Verificar el estado de la sincronización.
timedatectl status
cat /etc/systemd/timesyncd.conf
[Time]
NTP=ntp.foo.bar
#FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
apt install squid krb5-user msktutil
cat /etc/krb5.conf
[libdefaults]
default_realm = FOO.BAR
dns_lookup_realm = false
dns_lookup_kdc = true
Solicitar ticket de Kerberos para comprobar que funciona.
kinit administrator
Listar tickets de Kerberos en cache.
klist
Generar archivo keytab.
msktutil -c -b "CN=Computers" -s HTTP/proxy.foo.bar -h proxy.foo.bar -k /etc/krb5.keytab --computer-name PROXY --upn HTTP/proxy.foo.bar --server dc --verbose
Establecer los permisos del archivo keytab.
chown root:proxy /etc/krb5.keytab
chmod 640 /etc/krb5.keytab
...
# Kerberos authentication
auth_param negotiate program /usr/lib/squid/negotiate_kerberos_auth -r -s GSS_C_NO_NAME
auth_param negotiate children 20 startup=0 idle=1
auth_param negotiate keep_alive off
# Basic authentication (fallback)
auth_param basic program /usr/lib/squid/basic_ldap_auth -R -b "DC=foo,DC=bar" -D [email protected] -w password -f (|(userPrincipalName=%s)(sAMAccountName=%s)) -h dc.foo.bar
auth_param basic children 10
auth_param basic realm Proxy Squid
auth_param basic credentialsttl 1 minute
...