MEGATUTORIAL Squid 5. Cuarta Parte.

3.0. -Integración de Squid-ADDC mediante Kerberos.

Este apartado explica como integrar el servicio de proxy de Squid a un directorio activo, ya sea en Samba 4 o Windows Server. Abarca las configuraciones necesarias en el AD y en el propio servidor proxy, para lograr la integración de ambos, mediante Kerberos. Esta integración posibilitara que se establezcan políticas en el proxy, teniéndose en cuenta el grupo del ADDC al que pertenezcan los usuarios, ya sea para autenticación, limitación de accesos o calidad de servicio.

Antes de realizar las siguientes configuraciones usted debe cumplir como requisito:

  • Tener un ADDC Samba4/Windows Server correctamente configurado y operativo, con el servicio de DNS habilitado.

ÍNDICE

Servidor Proxy. Conceptos y datos para el ejemplo a desarrollar.

1. Instalación de squid-5.0.2 por compilado.

1.1. Generando e instalando empaquetado “.deb” de squid-5.0.2.

2. Configuraciones en Squid.

2.1. Configuraciones básicas.

2.2. Proxy padre.

2.3. Caché.

2.4. Autenticación.

2.5. Patrones de refrescamiento.

2.6. Declaración de reglas (ACLs).

2.7. Aplicación de reglas.

2.8. Declaración y aplicación de otras reglas especiales.

2.8.1. Retardo con Delay Pools.

2.8.2. MITM con SSL Bump.

3. Integración de Squid-ADDC mediante Kerberos.

3.1. Configuraciones necesarias en el ADDC Samba4.

3.2. Sincronización de tiempo.

3.3. timesyncd.

3.4. ntpd & ntpdate.

3.5. Integración Squid-ADDC por Kerberos, mediante Ticket.

4. Ejemplo integrador de configuración de Squid.

4.1. Configuraciones del ejemplo.

Referencias Bibliográficas.

3.1.  Configuraciones necesarias en el ADDC Samba4

Las configuraciones que se describen a continuación, se deben hacer en el servidor que contiene al controlador de dominio, en este caso basado en Samba4. En caso de usar Active Directory de Windows, simplemente usar las RSAT de Windows para crear los OU, grupos y usuarios.

NOTA: Desde una PC unida al dominio con un usuario con permisos de administración en el controlador de dominio basado en Samba4, puede hacer uso también de las RSAT y no ejecutar los comandos que se describen a continuación.

Récords del servidor proxy:

samba-tool dns add localhost empresa.midominio.cu proxy A 192.168.120.43 -U "administrator"%"Admin*123"
samba-tool dns add localhost empresa.midominio.cu proxy CNAME proxysquid.empresa.midominio.cu -U "administrator"%"Admin*123"
samba-tool dns add localhost 120.168.192.in-addr.arpa 43 PTR proxy.empresa.midominio.cu. -U "administrator"%"Admin*123"
samba-tool dns add localhost 120.168.192.in-addr.arpa 43 PTR proxysquid.empresa.midominio.cu. -U "administrator"%"Admin*123"

Antes de comenzar con la creación de los usuarios y grupos, se debe de haber creado en el ADDC la estructura de los OUs. Se pone a continuación, el ejemplo de cómo sería en un ADDC Samba4, mediante comandos. Creamos nueva unidad organizativa para “Usuarios”. En ella no se agregarán usuarios, sino que se crearán otras OUs que clasificarán los usuarios y en las cuales se agregarán los mismos:

samba-tool ou create "OU=Usuarios,DC=empresa,DC=midominio,DC=cu" \
--description="Unidad Organizativa para usuarios"

samba-tool ou create "OU=Comunes,OU=Usuarios,DC=empresa,DC=midominio,DC=cu" \
--description="Unidad Organizativa para usuarios comunes del dominio"

samba-tool ou create "OU=Informatica,OU=Usuarios,DC=empresa,DC=midominio,DC=cu" \
--description="Unidad Organizativa para usuarios del Dpto. Informatica"

samba-tool ou create "OU=Redes,OU=Usuarios,DC=empresa,DC=midominio,DC=cu" \
--description="Unidad Organizativa para usuarios del Dpto. Redes"

Creamos nueva unidad organizativa para “Servidores”. En ella no se agregarán computadoras, sino que se crearán otras OUs que clasificarán los servidores y en las cuales se agregarán los mismos:

samba-tool ou create "OU=Servidores,DC=empresa,DC=midominio,DC=cu" \
--description="Unidad Organizativa para los servidores"

samba-tool ou create "OU=Linux,OU=Servidores,DC=empresa,DC=midominio,DC=cu" \
--description="Unidad Organizativa para los servidores Linux"

samba-tool ou create "OU=Windows,OU=Servidores,DC=empresa,DC=midominio,DC=cu" \
--description="Unidad Organizativa para los servidores Windows"

Crear nueva unidad organizativa para “Grupos”:

samba-tool ou create "OU=Grupos,DC=empresa,DC=midominio,DC=cu" \
--description="Unidad Organizativa para los grupos del ADDC"

Ahora todo está listo para la creación de los usuarios y los grupos.

Crear grupos de navegación para «Proxy»:

samba-tool group add "Inter_F_Redes" \
--groupou="OU=Grupos" \
--description="Grupo para el internet del Dpto. Redes"

samba-tool group add "Inter_F_Informatica" \
--groupou="OU=Grupos" \
--description="Grupo para el internet del Dpto. Informatica"

samba-tool group add "Inter_F_Directores" \
--groupou="OU=Grupos" \
--description="Grupo para el internet de los directores principales"

samba-tool group add "Inter_F_Directivos" \
--groupou="OU=Grupos" \
--description="Grupo para los directivos de UEB y direcciones"

samba-tool group add "Inter_F_ComInst" \
--groupou="OU=Grupos" \
--description="Grupo para el internet de Comunicacion Institucional"

samba-tool group add "Inter_R_Usuarios" \
--groupou="OU=Grupos" \
--description="Grupo para el internet de los usuarios"

samba-tool group add "Intra_F_Usuarios" \
--groupou="OU=Grupos" \
--description="Grupo para el intranet de los usuarios"

samba-tool group add Intra_R_Usuarios \
--groupou="OU=Grupos" \
--description="Grupo para el intranet restringido de los usuarios"

samba-tool group add Inter_YT_Usuarios \
--groupou="OU=Grupos" \
--description="Grupo para el acceso a YouTube de los usuarios"

samba-tool group add Intra_P_Usuarios \
--groupou="OU=Grupos" \
--description="Grupo para usuarios privilegiados de intranet, con acceso a internet limitado"

Crear usuarios de navegación para el servicio proxy en el ADDC (se muestra solo un ejemplo):

samba-tool user create usuario1.apellido Prueba2020* \
--userou="OU=Redes,OU=Usuarios" \
--given-name="Usuario1" \
--surname="Apellido1 Apellido2" \
--department="Redes" \
--company="Mi Empresa" \
[email protected]

samba-tool user create usuario2.apellido Prueba2020* \
--userou="OU=Informatica,OU=Usuarios" \
--given-name="Usuario2" \
--surname="Apellido1 Apellido2" \
--department="Informatica" \
--company="Mi Empresa" \
[email protected]
samba-tool user create usuario3.apellido Prueba2020* \
--userou="OU=Comunes,OU=Usuarios" \
--given-name="Usuario3" \
--surname="Apellido1 Apellido2" \
--department="Direccion" \
--company="Mi Empresa" \
[email protected]

samba-tool user create usuario4.apellido Prueba2020* \
--userou="OU=Comunes,OU=Usuarios" \
--given-name="Usuario4" \
--surname="Apellido1 Apellido2" \
--department="Contabilidad" \
--company="Mi Empresa" \
[email protected]

samba-tool user create usuario5.apellido Prueba2020* \
--userou="OU=Comunes,OU=Usuarios" \
--given-name="Usuario5" \
--surname="Apellido1 Apellido2" \
--department="Direccion" \
--company="Mi Empresa" \
[email protected]

samba-tool user create usuario6.apellido Prueba2020* \
--userou="OU=Comunes,OU=Usuarios" \
--given-name="Usuario6" \
--surname="Apellido1 Apellido2" \
--department="Recursos Humanos" \
--company="Mi Empresa" \
[email protected]

samba-tool user create usuario7.apellido Prueba2020* \
--userou="OU=Comunes,OU=Usuarios" \
--given-name="Usuario7" \
--surname="Apellido1 Apellido2" \
--department="Recursos Humanos" \
--company="Mi Empresa" \
[email protected]

samba-tool user create usuario8.apellido Prueba2020* \
--userou="OU=Comunes,OU=Usuarios" \
--given-name="Usuario8" \
--surname="Apellido1 Apellido2" \
--department="Recursos Humanos" \
--company="Mi Empresa" \
[email protected]

Agregar usuarios a los grupos creados (se muestra solo un ejemplo):

samba-tool group addmembers "Inter_F_Redes" usuario1.apellido
samba-tool group addmembers "Inter_F_Informatica" usuario2.apellido
samba-tool group addmembers "Inter_F_Directores" usuario3.apellido
samba-tool group addmembers "Inter_F_Directivos" usuario4.apellido
samba-tool group addmembers "Inter_F_ComInst" usuario5.apellido
samba-tool group addmembers "Inter_R_Usuarios" usuario6.apellido
samba-tool group addmembers "Intra_F_Usuarios" usuario7.apellido
samba-tool group addmembers "Intra_R_Usuarios" usuario8.apellido
samba-tool group addmembers "Inter_YT_Usuarios" usuario6.apellido
samba-tool group addmembers "Intra_P_Usuarios" usuario7.apellido

Habiéndose realizado lo anterior, la estructura del ADCC para el servicio del proxy debería quedar representado de la siguiente manera:

A continuación, se crea la cuenta “squid” que será usada para propiciar la autenticación básica por LDAP, 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 Proxyadmin*123 \
--userou="OU=Proxy,OU=Servicios" \
--company="Mi Empresa" \
--description="Cuenta para autenticacion basica LDAP en el Proxy"

Especificamos que la cuenta “squid” nunca expire:

samba-tool user setexpiry squid --noexpiry

Agregamos el SRV para ldaps desde las RSAT de Windows, usando la herramienta de administración “DNS”, desde una de las PC unida al dominio, con un usuario con poder de administración:

3.2.  Sincronización de tiempo

La mayoría de las veces los servidores desplegados usan la zona horaria UTC (Coordinated Universal Time) o lo que es lo mismo, el tiempo en los cero grados de longitud. Consistentemente al usar el UTC como zona horaria se reduce la confusión cuando nuestra infraestructura sufre cambios de horarios por las multiples zonas horarias que pueda atravesar (horario de verano y horario normal de cada región).

En este caso se usará como zona horaria la de America/Havana y esto lo indicaremos configurando tzdata:

dpkg-reconfigure tzdata

Seguir las opciones de la consola para seleccionar la zona horaria.

Debido a que Kerberos es muy sensible al tiempo, se debe configurar las máquinas clientes para que el ADDC haga función de servidor de tiempo. Para el caso del servidor proxy Squid con autenticación por Kerberos, sucede lo mismo y a continuación se presentan tres formas de lograrlo.

3.3.  timesyncd

Cliente para sincronizar el tiempo más ligero que ntpd y que es usado en los sistemas actuales. Para usarlo, debe seguir los siguientes pasos:

Habilitamos la sincronización por ntp:

timedatectl set-ntp true

Editar el fichero de configuración, no sin antes hacerle una salva:

mv /etc/systemd/timesyncd.conf{,.salva}
nano /etc/systemd/timesyncd.conf

Agregar y adaptando a su red:

[Time]
NTP=ntp1.empresa.midominio.cu

Reiniciamos el servicio:

systemctl restart systemd-timesyncd

Verificamos que este sincronizado:

timedatectl status

Debe devolver, algo como lo siguiente:

Local time: mar 2020-06-09 14:06:36 CDT
Universal time: mar 2020-06-09 18:06:36 UTC
RTC time: mar 2020-06-09 18:06:37
Time zone: America/Havana (CDT, -0400)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

Vemos los logs del servicio:

journalctl --since -1h -u systemd-timesyncd

Debe devolver, algo como lo siguiente:

-- Logs begin at Tue 2020-06-09 13:45:05 CDT, end at Tue 2020-06-09 14:06:36 CDT. --
jun 09 13:45:08 proxysquid systemd[1]: Starting Network Time Synchronization...
jun 09 13:45:09 proxysquid systemd[1]: Started Network Time Synchronization.
jun 09 14:06:26 proxysquid systemd[1]: Stopping Network Time Synchronization...
jun 09 14:06:29 proxysquid systemd[1]: systemd-timesyncd.service: Succeeded.
jun 09 14:06:29 proxysquid systemd[1]: Stopped Network Time Synchronization.
jun 09 14:06:29 proxysquid systemd[1]: Starting Network Time Synchronization...
jun 09 14:06:29 proxysquid systemd[1]: Started Network Time Synchronization.
jun 09 14:06:29 proxysquid systemd-timesyncd[401]: Synchronized to time server for the first time 192.168.120.31:123 (ntp1.empresa.midominio.cu).

3.4.  ntpd & ntpdate

Debido a algunos algoritmos optimizados de “suavizado” que evitan saltos extraños de reloj que puedan interrumpir algunos servicios, se recomienda usar ntpd, sobre todo en aquellos servicios que son demasiados sensibles a ligeras perturbaciones en el tiempo. Para implementarlo se deben seguir los siguientes pasos:

Deshabilitamos la sincronización NTP por “timedatectl”:

timedatectl set-ntp false

Verificamos que se haya desactivado:

timedatectl status

Instalando ntp:

apt -y install ntp

Editamos el fichero de configuración para que haga de cliente NTP:

nano /etc/ntp.conf

Borramos todo y agregamos lo siguiente:

# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
driftfile /var/lib/ntp/ntp.drift
# Leap seconds definition provided by tzdata
leapfile /usr/share/zoneinfo/leap-seconds.list
# Enable this if you want statistics to be logged.
#statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example
server pdc1.empresa.midominio.cu
# pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
# pick a different set every time it starts up.  Please consider joining the
# pool: <http://www.pool.ntp.org/join.html>
#pool 0.debian.pool.ntp.org iburst
#pool 1.debian.pool.ntp.org iburst
#pool 2.debian.pool.ntp.org iburst
#pool 3.debian.pool.ntp.org iburst
# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details.  The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions>
# might also be helpful.
#
# Note that "restrict" applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.
# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
# Needed for adding pool entries
restrict source notrap nomodify noquery
# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust
# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255
# If you want to listen to time broadcasts on your local subnet, de-comment the
# next lines.  Please do this only if you trust everybody on the network!
#disable auth
#broadcastclient

Reiniciamos el servicio:

systemctl restart ntp.service

Verificamos el estado de los servidores NTP o “peers”. Puede tardar algunos minutos en que ntpd establezca conexiones:

ntpq -p

Si se desea forzar la sincronización con el servidor NTP del ADDC, se puede hacer uso de ntpdate.

Instalamos ntpdate:

apt -y install ntpdate

Forzamos la sincronización, deteniendo primero el servicio ntp. Una vez sincronizado lo volvemos a iniciar:

systemctl stop ntp.service
ntpdate pdc1.empresa.midominio.cu
systemctl start ntp.service

Verificamos la sincronización:

ntpq -p

Debe devolver algo como esto:

remote   refid      st t when poll reach   delay   offset  jitter
======================================================================
pdc1.empresa.midominio.cu .LOCL.           1 u   12   64    7    1.486   11.012   5.748

NOTA: Si se desea automatizar esta sincronización a una vez por día, podría crearse una tarea en el cron que permita la ejecución de ntpdate con el servidor especificado.

 

¿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: 9

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

Sobre Alexander Rivas Alpizar 61 artículos
Administrador de Redes EMPRESTUR Cienfuegos

4 comentarios

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

    EL problema es que los usuarios que se estan fuera del dominio se quedan con autenticacion insegura, entonces si uso NTLM se comienza a tufar, ademas de que esta deprecate. Creo que ese es el pollo del arroz con pollo de la autenticacion con AD.

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

    Ha este mega tutorial creo que le falta
    Gráficar Monitorizar (Squidview,SARG, Lightsquid u Otro que se utilice)
    Endurecer (rejik u Otro que se utilice)

    • Firefox 79.0 Firefox 79.0 Windows 10 x64 Edition Windows 10 x64 Edition
      Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0

      No se si has notado q va pro 4 partes y aun falta. Ademas de ser un tuto q seguira modificandose en base a sus dudas y feedback. Por lo q alargarlo mas seria objetivo de escribir otro nuevo tutorial. Se vendra futuro el uso de squidanalyzer y como filtrado el e2guardians

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

        Esas mieles son precisamene las que estoy esperando

Dejar una contestacion

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


*