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.apellidoHabié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 --noexpiryAgregamos 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 tzdataSeguir 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 trueEditar el fichero de configuración, no sin antes hacerle una salva:
mv /etc/systemd/timesyncd.conf{,.salva}
nano /etc/systemd/timesyncd.confAgregar y adaptando a su red:
[Time]
NTP=ntp1.empresa.midominio.cuReiniciamos el servicio:
systemctl restart systemd-timesyncdVerificamos 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: noVemos 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 falseVerificamos que se haya desactivado:
timedatectl statusInstalando ntp:
apt -y install ntpEditamos el fichero de configuración para que haga de cliente NTP:
nano /etc/ntp.confBorramos 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
#broadcastclientReiniciamos el servicio:
systemctl restart ntp.serviceVerificamos el estado de los servidores NTP o “peers”. Puede tardar algunos minutos en que ntpd establezca conexiones:
ntpq -pSi se desea forzar la sincronización con el servidor NTP del ADDC, se puede hacer uso de ntpdate.
Instalamos ntpdate:
apt -y install ntpdateForzamos 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.serviceVerificamos la sincronización:
ntpq -pDebe 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.748NOTA: 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.







No comments yet