
Instalación y configuración de Squid Proxy e integración con Samba AD DC
Crear registros DNS.
1 2 | 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
.
1 2 | 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
.
1 2 3 | 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
.
1 2 3 4 5 6 7 8 | samba-tool user create 'sheldon' 'Amy*123' \ --userou='OU=ACME' \ --surname='Cooper' \ --given-name='Sheldon' \ --department='PHYSICS' \ --company='EXAMPLE' \ --description='Intranet Access Account' \ |
1 2 3 4 5 6 7 8 | samba-tool user create 'leonard' 'Penny*456' \ --userou='OU=ACME' \ --surname='Hofstadter' \ --given-name='Leonard' \ --department='PSYCHOLOGY' \ --company='EXAMPLE' \ --description='Internet Access Account' \ |
1 2 3 4 5 6 7 8 | samba-tool user create 'rajesh' 'Howard*789' \ --userou='OU=ACME' \ --surname='Koothrappali' \ --given-name='Rajesh' \ --department='ASTROLOGY' \ --company='EXAMPLE' \ --description='Unrestricted Access Account' \ |
Añadir usuarios a los grupos creados.
1 2 3 | samba-tool group addmembers 'Intranet' sheldon samba-tool group addmembers 'Internet' leonard samba-tool group addmembers 'Unrestricted' rajesh |
Instalación de paquetes necesarios
1 2 3 | export DEBIAN_FRONTEND=noninteractive apt install squid krb5-user msktutil libsasl2-modules-gssapi-mit unset DEBIAN_FRONTEND |
Configuración de Kerberos.
1 2 | mv /etc/krb5.conf{,.org} nano /etc/krb5.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | [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.
1 2 3 4 5 6 7 8 9 | kinit Administrator@EXAMPLE.TLD 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.
1 2 | chown root:proxy /etc/krb5.keytab chmod 640 /etc/krb5.keytab |
Comprobar que Kerberos funciona.
1 2 | kinit -k HTTP/proxy.example.tld klist |
Comprobar que la cuenta de host se actualice correctamente.
1 | 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.
1 2 3 4 5 | samba-tool user create 'squid' 'P@s$w0rd.789' \ --surname='Proxy Service' \ --given-name='Squid' \ --company='EXAMPLE' \ --description='Squid Proxy Service Account |
1 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | # OPTIONS FOR AUTHENTICATION # --------------------------------------------------------------------- # Kerberos authentication auth_param negotiate program /usr/lib/squid/negotiate_kerberos_auth -r -d -s HTTP/proxy.example.tld@EXAMPLE.TLD -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 squid@example.tld -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 squid@example.tld -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.
1 | /usr/lib/squid/ext_kerberos_ldap_group_acl -a -g Internet -D EXAMPLE.TLD |
Usando autenticación básica LDAP.
1 | /usr/lib/squid/basic_ldap_auth -R -b "dc=example,dc=tld" -D squid@example.tld -w "P@s$w0rd.789" -f sAMAccountName=%s -h dc.example.tld |
Membresía de grupos LDAP.
1 2 3 4 5 | /usr/lib/squid/ext_ldap_group_acl -R -K -S -b "dc=example,dc=tld" \ -D squid@example.tld -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.
1 | tail -fn100 /var/log/squid/access.log |
Como referencia, debajo se muestra la lista de artículos de esta serie.
- Introducción
- Configuración de parámetros de red y sincronización de tiempo
- Instalación y configuración de Samba4 como AD DC
- Instalación y configuración del servidor Bind9 DNS e integración con Samba AD DC
- Instalación y configuración del servidor NTP e integración con Samba AD DC
- Creación de Unidades Organizativas, Grupos y Cuentas de Usuarios
- Instalación y configuración de Squid Proxy e integración con Samba AD DC
- Instalación y configuración de eJabberd XMPP e integración con Samba AD DC
- Instalación y configuración de Postfix, Dovecot, Roundcube Mail e integración con Samba AD DC
- Conclusiones
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.
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?
Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
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.
Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
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
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.
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.