Squid+Samba4, parte 1

Buenas a todos,si has seguido la serie de posts en los que monto la infraestructura básica de una red contra Samba4 compilado desde cero, este te servirá para integrar el proxy de forma segura y atentificar los usuarios contra el mismo.

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 [email protected]:/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 [email protected]
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.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 5 / 5. Recuento de votos: 1

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

5 comentarios

  1. Firefox 92.0 Firefox 92.0 Fedora x64 Fedora x64
    Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:92.0) Gecko/20100101 Firefox/92.0

    Por que se le dio permiso chmod 400 al PROXY.keytab y en el tuto anterios chmod 640 estoy confundido.

  2. Google Chrome 73.0.3683.86 Google Chrome 73.0.3683.86 GNU/Linux x64 GNU/Linux x64
    Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36

    Pero no que esto solo funciona para Internet Explorer / Edge en Windows?

  3. Firefox 60.0 Firefox 60.0 GNU/Linux x64 GNU/Linux x64
    Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0

    Todo la configuración aquí mostrada funcionó, pero a la hora del navegar, el cliente no se conecta.

    Le definí el proxy por ejemplo 192.168.57.5:3128 que es el proxy en mi pc de prueba

    Nota: todas las pruebas las hize con PCs en virtualbox


    • Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
      Chromium 72.0.3626.121 Chromium 72.0.3626.121 Ubuntu x64 Ubuntu x64
      Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/72.0.3626.121 Chrome/72.0.3626.121 Safari/537.36

      Hola,
      Eso es porque tienes que referenciar el proxy en el navegador del cliente por su FQDN y no por el IP.
      Saludos


  4. Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
    Firefox 65.0 Firefox 65.0 Ubuntu x64 Ubuntu x64
    Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:65.0) Gecko/20100101 Firefox/65.0

    ###— ACL Externas de los Grupos del AD
    external_acl_type grupos ttl=300 negative_ttl=60 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -a -g Nav_Nacional:Nav_Internacional:Nav_Internacional_Full -D DOMINIO.CU

    acl nav_nac external grupos Nav_Nacional
    acl nav_inter external grupos Nav_Internacional
    acl nav_inter_full external grupos Nav_Internacional_Full

    Para los grupos solo basta con eso y usar los grupos en el http_access.
    Esos son mis grupos usar los suyos definidos en el AD/Samba4.

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*