Guía para la implementación de servicios integrados a Samba4 como Active Directory Domain Controller (AD DC) en Debian 9/10 – Parte 6

Samba logo

Instalación y configuración de Squid Proxy e integración con Samba AD DC

Crear registros DNS.

samba-tool dns add localhost example.tld proxy A '192.168.0.2' -U 'administrator'%'P@s$w0rd.123'
samba-tool dns add localhost 0.168.192.in-addr.arpa 2 PTR 'proxy.example.tld.' -U 'administrator'%'P@s$w0rd.123'

Crear nueva Unidad Organizativa

Nota: Para hacer uso de los siguientes comandos, debe tenerse instalada una versión 4.9 o mayor de Samba. Para esto se puede compilar o utilizar los paquetes precompilados de http://samba.tranquil.it/debian/ en el caso de usarse Debian Stretch. De forma alternativa pueden realizarse todas estas operaciones a traves de las herramientas proporcionas por RSAT.

Proxy para grupos de navegación, perteneciente a ACME.

samba-tool ou create 'OU=Proxy,OU=ACME,DC=example,DC=tld' --description='Proxy Groups Organizational Unit'

Crear nuevos grupos de navegación pertenecientes a la OU Proxy.

samba-tool group add Intranet --groupou='OU=Proxy,OU=ACME' --description='.CU Access Group'
samba-tool group add Internet --groupou='OU=Proxy,OU=ACME' --description='Internet Access Group'
samba-tool group add Unrestricted --groupou='OU=Proxy,OU=ACME' --description='Unrestricted Access Group'

Crear nuevos usuarios de navegación pertenecientes a la OU ACME.

samba-tool user create 'sheldon' 'Amy*123' \
    --userou='OU=ACME' \
    --surname='Cooper' \
    --given-name='Sheldon' \
    --department='PHYSICS' \
    --company='EXAMPLE' \
    --description='Intranet Access Account' \
    --mail='[email protected]'`
samba-tool user create 'leonard' 'Penny*456' \
    --userou='OU=ACME' \
    --surname='Hofstadter' \
    --given-name='Leonard' \
    --department='PSYCHOLOGY' \
    --company='EXAMPLE' \
    --description='Internet Access Account' \
    --mail='[email protected]'
samba-tool user create 'rajesh' 'Howard*789' \
    --userou='OU=ACME' \
    --surname='Koothrappali' \
    --given-name='Rajesh' \
    --department='ASTROLOGY' \
    --company='EXAMPLE' \
    --description='Unrestricted Access Account' \
    --mail='[email protected]'

Añadir usuarios a los grupos creados.

samba-tool group addmembers 'Intranet' sheldon
samba-tool group addmembers 'Internet' leonard
samba-tool group addmembers 'Unrestricted' rajesh

Instalación de paquetes necesarios

export DEBIAN_FRONTEND=noninteractive
apt install squid krb5-user msktutil libsasl2-modules-gssapi-mit
unset DEBIAN_FRONTEND

Configuración de Kerberos.

mv /etc/krb5.conf{,.org}
nano /etc/krb5.conf
[libdefaults]
    default_realm = EXAMPLE.TLD
    dns_lookup_realm = false
    dns_lookup_kdc = true
    clockskew = 3600
    ticket_lifetime = 24h
    forwardable = yes
    default_keytab_name = /etc/krb5.keytab
[realms]
    EXAMPLE.TLD = {
        kdc = DC.EXAMPLE.TLD:88
        master_kdc = DC.EXAMPLE.TLD
        admin_server = DC.EXAMPLE.TLD:749
        default_domain = example.tld
    }
[domain_realm]
    .example.tld = EXAMPLE.TLD
    example.tld = EXAMPLE.TLD

Generar archivo keytab.

kinit [email protected]
msktutil -c -b "CN=Computers" \
    -s HTTP/proxy.example.tld \
    -h proxy.example.tld \
    -k /etc/krb5.keytab \
    --computer-name PROXY \
    --upn HTTP/proxy.example.tld \
    --server dc.example.tld \
    --verbose

Establecer los permisos del archivo keytab.

chown root:proxy /etc/krb5.keytab
chmod 640 /etc/krb5.keytab

Comprobar que Kerberos funciona.

kinit -k HTTP/proxy.example.tld
klist

Comprobar que la cuenta de host se actualice correctamente.

msktutil --auto-update --verbose --computer-name proxy

Integración con Samba AD DC

Crear nueva cuenta de usuario para el servicio de proxy que se utilizaríá usada para propiciar la autenticación básica LDAP en caso de fallar Kerberos, o para uso de gestores de descargas no compatibles con Kerberos, o en aquellas estaciones que no están unidas al dominio.

samba-tool user create 'squid' 'P@s$w0rd.789' \
    --surname='Proxy Service' \
    --given-name='Squid' \
    --company='EXAMPLE' \
    --description='Squid Proxy Service Account
samba-tool user setexpiry squid --noexpiry

Editar el fichero de configuración de Squid y agregar los métodos de autenticación.

nano /etc/squid/squid.conf

# OPTIONS FOR AUTHENTICATION
# ---------------------------------------------------------------------
# Kerberos authentication
auth_param negotiate program /usr/lib/squid/negotiate_kerberos_auth -r -d -s HTTP/[email protected] -k /etc/krb5.keytab
auth_param negotiate children 20 startup=0 idle=1
auth_param negotiate keep_alive off

# Basic LDAP authentication (fallback)
auth_param basic program /usr/lib/squid/basic_ldap_auth -R -b "dc=example,dc=tld" -D [email protected] -w "P@s$w0rd.789" -f (|(userPrincipalName=%s)(sAMAccountName=%s)) -h dc.example.tld
auth_param basic children 10
auth_param basic realm PROXY.EXAMPLE.TLD
auth_param basic credentialsttl 8 hours

# ACCESS CONTROL LISTS
# ---------------------------------------------------------------------
acl CUBA dstdomain .cu
acl AUTH proxy_auth REQUIRED

# Kerberos group mapping
external_acl_type INTRANET ttl=300 negative_ttl=60 %LOGIN /usr/lib/squid/ext_kerberos_ldap_group_acl -a -g Intranet -D EXAMPLE.TLD
external_acl_type INTERNET ttl=300 negative_ttl=60 %LOGIN /usr/lib/squid/ext_kerberos_ldap_group_acl -a -g Internet -D EXAMPLE.TLD
external_acl_type UNRESTRICTED ttl=300 negative_ttl=60 %LOGIN /usr/lib/squid/ext_kerberos_ldap_group_acl -a -g Unrestricted -D EXAMPLE.TLD
acl intranet external INTRANET
acl internet external INTERNET
acl unrestricted external UNRESTRICTED

# LDAP group mapping
external_acl_type memberof %LOGIN /usr/lib/squid/ext_ldap_group_acl -R -K -S -b "dc=example,dc=tld" -D [email protected] -w "P@s$w0rd.789" -f "(&(objectClass=person)(sAMAccountName=%v)(memberof=cn=%g,ou=Proxy,ou=ACME,dc=example,dc=tld))" -h dc.example.tld
acl LDAPintranet external memberof Intranet
acl LDAPinternet external memberof Internet
acl LDAPunrestricted external memberof Unrestricted

# HTTP_ACCESS
# ---------------------------------------------------------------------
http_access deny !AUTH
# Using Kerberos
http_access allow localnet unrestricted
http_access allow localnet internet !blacklisted_sites
http_access allow localnet intranet CUBA
# Using basic LDAP
http_access allow localnet LDAPunrestricted
http_access allow localnet LDAPinternet !blacklisted_sites
http_access allow localnet LDAPintranet CUBA
http_access deny all

Comprobaciones

Usando autenticación Kerberos.

/usr/lib/squid/ext_kerberos_ldap_group_acl -a -g Internet -D EXAMPLE.TLD

Usando autenticación básica LDAP.

/usr/lib/squid/basic_ldap_auth -R -b "dc=example,dc=tld" -D [email protected] -w "P@s$w0rd.789" -f sAMAccountName=%s -h dc.example.tld

Membresía de grupos LDAP.

/usr/lib/squid/ext_ldap_group_acl -R -K -S -b "dc=example,dc=tld" \
    -D [email protected] -w "P@s$w0rd.789" \
    -f "(&(objectClass=person)(sAMAccountName=%v)\
        (memberof=cn=%g,ou=Proxy,ou=ACME,dc=example,dc=tld))" \
    -h dc.example.tld`

Analizando trazas de navegación.

tail -fn100 /var/log/squid/access.log

Como referencia, debajo se muestra la lista de artículos de esta serie.

  1. Introducción
  2. Configuración de parámetros de red y sincronización de tiempo
  3. Instalación y configuración de Samba4 como AD DC
  4. Instalación y configuración del servidor Bind9 DNS e integración con Samba AD DC
  5. Instalación y configuración del servidor NTP e integración con Samba AD DC
  6. Creación de Unidades Organizativas, Grupos y Cuentas de Usuarios
  7. Instalación y configuración de Squid Proxy e integración con Samba AD DC
  8. Instalación y configuración de eJabberd XMPP e integración con Samba AD DC
  9. Instalación y configuración de Postfix, Dovecot, Roundcube Mail e integración con Samba AD DC
  10. Conclusiones

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

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 4.5 / 5. Recuento de votos: 2

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

6 comentarios

  1. Firefox 85.0 Firefox 85.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0

    Saludos.
    Por que a la hora de ejecutar lo siguiente:

    samba-tool dns add localhost 0.168.192.in-addr.arpa 2 PTR ‘proxy.example.tld.’ -U ‘administrator’%’P@s$w0rd.123’

    Me da el siguiente error
    ERROR: Zone does not exist; record could not be added.

  2. Firefox 85.0 Firefox 85.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0

    Saludos. en la parte «Membresía de grupos LDAP.»

    /usr/lib/squid/ext_ldap_group_acl -R -K -S -b «dc=example,dc=tld» \
    -D [email protected] -w «P@s$w0rd.789» \
    -f «(&(objectClass=person)(sAMAccountName=%v)\
    (memberof=cn=%g,ou=Proxy,ou=ACME,dc=example,dc=tld))» \
    -h dc.example.tld

    me devuelve
    ERR
    o
    ext_ldap_group_acl: WARNING: LDAP search error ‘Bad search filter’
    BH message=»LDAP search error»

    Agradecería me Ayudaras con una solución a esto.


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

    Hola Yoel, yo tengo implementado la autenticacion de squid3 + kerberos, y tengo una duda con dos parametros, ttl=3600 negative_ttl=3600, estos deben ser altos o bajos? es que no estoy seguiro, mi red es de unos 40 usuarios como promedio, 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
    Chromium 76.0.3809.100 Chromium 76.0.3809.100 Ubuntu x64 Ubuntu x64
    Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/76.0.3809.100 Chrome/76.0.3809.100 Safari/537.36

    Yoel disculpa por el comentario anterior pense que el primer comentario se me habia borrado. Buena analice los ficheros que pusiste de la configuracion del squid + samba4 y note que pones en el squid.conf la autenticacion ntlm llamando a
    este fichero /usr/lib/squid/wsauth que esta en el comprimido pero no especificas esa configuracion en el articulo por lo que no se si uniste el proxy al dominio samba4 y en caso que lo uniera no esta el fichero smb.conf del samba del proxy. Por favor aclareme eso.

  5. Google Chrome 77.0.3865.120 Google Chrome 77.0.3865.120 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36

    Yoel has utilizado autenticacion ntml del squid + AD Samba 4?

  6. Google Chrome 77.0.3865.120 Google Chrome 77.0.3865.120 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36

    Buenas Yoel, haz configurado el mecanismo de autenticación ntlm en el squid con samba4, porque yo le he hecho squid + AD Windows y no tengo problemas pero cuando lo hago con squid + AD Samba4 me pide contraseña constantemente, alguna sugerencia.
    Saludos.

Dejar una contestacion

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


*