MEGATUTORIAL Squid 5. Sexta Parte. FINAL

Esta última entrega la dedicaremos a unificar en una configuración todo lo que se ha explicado en las anteriores entradas. Usando un ejemplo integrador de una situación en una empresa cubana.

Í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.

4. Ejemplo integrador de configuración de Squid con Kerberos, Delay Pools y SSL Bump

El fichero de configuración que se ofrece a continuación, representa un ejemplo práctico del caso de una red empresarial. El fichero contendrá tres importantes características:

  • Autenticación contra un ADDC mediante Kerberos.
  • Retardo de ancho de banda con Delay Pools.
  • Solución MITM de Squid “SSL Bump”.

Su autenticación es mediante Kerberos, así como la calidad de servicio, salvo el caso de los retardos de ancho de banda, que se hace con usuarios del directorio activo, especificados en ficheros de texto. La clasificación de dichos grupos se encuentra explicada en el propio fichero de configuración, así como la calidad del servicio que se le brinda a cada uno. El SSL Bump está habilitado (si no se desea usar SSL Bump omitir sus líneas de configuración).

En el propio fichero de configuración se explican muchas de sus opciones de configuración, así como la estructura elegida por los autores para la confección de la misma. Se trata de un ejemplo práctico para cualquier red empresarial que use un servidor proxy Squid.

Para este ejemplo se utilizaron los siguientes datos. Usted debe sustituir los valores del dominio y las IPs por las de su propia red, donde sea necesario.

Red:

  • Domain = empresa.midominio.cu
  • Subnet = 192.168.0.0/16
  • Cantidad de usuarios aproximados: 400

Servidor Proxy:

  • IP de eth0 = 192.168.120.43
  • IP de eth1 (opcional) = 172.16.120.43
  • HOSTNAME = proxysquid.empresa.midominio.cu
  • Kerberos computer name = PROXYSQUID

ADDC:

  • IP = 192.168.120.31
  • HOSTNAME = pdc1.empresa.midominio.cu

La definición de los grupos de usuarios que serán utilizados se explica en la siguiente tabla:

Grupos Generales:

ServicioDerecho de AccesoID de GrupoDescripciónLimitaciones
Internet

[inter]

Full

[f]

Redes

[redes]

Administradores de RedSin restricciones de ancho de banda. Todo el horario laboral.

Solo se encuentran limitados por las “blacklists”.

Informatica

[informatica]

Desarrolladores de Software, Taller Técnico, RSI e InformáticosPoseen los mismos derechos de acceso que «redes» pero menor ancho de banda, durante todo el horario laboral.

Sólo se encuentran limitados por las “blacklists”.

Directores

[directores]

Directores principales de la empresaSin restricciones de ancho de banda, durante todo el horario laboral.

Sólo se encuentran limitados por las “blacklists”.

Directivos

[directivos]

Directores de UEB y direcciones.Poseen los mismos derechos que «directores» pero menor ancho de banda, durante todo el horario laboral.

Sólo se encuentran limitados por las “blacklists”.

ComInst

[cominst]

Comunicación Institucional

(cara pública de la empresa)

Poseen los mismos derechos que «directores» pero menor ancho de banda, durante todo el horario laboral.

Sólo se encuentran limitados por las “blacklists”.

Restricted

[r]

Usuarios

[usuarios]

Resto de usuarios con internetRestricciones de acceso y ancho de banda, por horarios.
Intranet

[intra]

Restricted

[r]

UsuariosTodos los usuarios de la empresa, que no pertenezcan a ningún otro grupo.Restricciones de acceso a internet e intranet, y ancho de banda durante todo el horario laboral.

Todos los usuarios deben tener como mínimo, acceso a la prensa digital y los medios informativos digitales nacionales.

Full

[f]

Usuarios

[usuarios]

Usuarios de intranetRestricciones de acceso a internet y ancho de banda, durante todo el horario laboral.

Son usuarios de intranet sin limitaciones de acceso dentro de esta red.

Una representación gráfica de la anterior tabla, sería la siguiente imagen:

Sin embargo, también existen algunas violaciones de las fronteras entre estos grupos, generándose grupos específicos, que son explicados en la siguiente tabla:

Grupos Específicos (sus miembros son integrantes de alguno de los grupos generales):

ServicioDerecho de accesoID de GrupoDescripción
Internet

[inter]

YouTube

[yt]

Usuarios

[usuarios]

Usuarios de internet restringidos que necesitan acceder a YouTube en todo momento.
Intranet

[intra]

Priviledged

[p]

Usuarios

[usuarios]

Usuarios de intranet privilegiados, ya sean restringidos o con acceso completo a intranet, que pueden acceder a sitios en internet, relacionados con el trabajo de la empresa.

4.1. Configuraciones del ejemplo

Antes de proseguir, debido a los requisitos de este ejemplo integrador, se debe de haber configurado previamente la integración de Squid con Kerberos, así como las configuraciones previas para el uso del MITM por SSL Bump. Una vez hecho esto continuamos con el procedimiento.

Detenemos Squid:

Creamos un nuevo fichero de configuración para Squid:

Agregamos la siguiente configuración básica para un único proxy. Recuerde adaptar la configuración a su red:

NOTA: Gran parte de la configuración, solo será legible y entendible a través de un editor de texto en consola u otros programas a fines.

NOTA: Para una mayor eficiencia del propio Squid a la hora de leer cada una de las líneas de su configuración, se recomienda hacerle una salva al fichero de configuración anterior y en el nuevo fichero pegar solo las líneas sin los comentarios. El fichero comentado es necesario para facilitar la gestión, pero relentece al propio Squid, por lo que los cambios realizados en el fichero comentado, se han de hacer también en el fichero que no los tiene.

Creamos los directorios de para las reglas de Squid:

Si se usa “Delay Pools” con mapeo de usuarios por fichero de textos, se deben crear dichos ficheros a conveniencia, adaptando a cada red. A continuación, se presentan ejemplos particulares de esta configuración:

Los ficheros anteriores se llenan con los nombres de usuarios que le corresponden a cada grupo. Se excluyen en este caso al grupo mayoritario “inter_r_usuarios”. Estos ficheros no pueden estar vacíos.

Para el caso del filtrado de contenido, creamos el fichero que contendrá las expresiones pornográficas:

Agregamos las siguientes:

Para el caso de los dominios, generalmente para las “blacklists”, descargamos las listas personalizadas, del siguiente enlace:

Las listas negras anteriores fueron descargadas de sus sitios oficiales, luego fueron editadas para ser adaptadas a nuestro ejemplo. Esta edición se basó en la eliminación de subdominios de los dominios que se encontraban en las propias listas, pues generaba conflicto con la manera que se están filtrando las listas negras en nuestro ejemplo. Esto se debe a que estas listas fueron editadas por un script, que toma todos los dominios y les pone un “.” delante, indicándole a Squid que se va a filtrar tanto el dominio como los subdominios de dicho caso.

Estas bases estaban pensadas originalmente para cuando Squid aún usaba la antigua definición de “dstdomain”. Ahora basta con ubicar un punto delante del dominio y esto significará que la regla coincidirá con ese dominio y los subdominios que se deriven de éste, por ejemplo: “.youtube.com” incluye a “www.youtube.com” y “youtube.com”.

Si se desea hacer este procedimiento manualmente, de bajar las listas del sitio oficial y reacomodar su contenido, a través del script, debe seguir el siguiente procedimiento:

NOTA: El objetivo del script es ubicar, por tanto, un punto delante de cada dominio, ya que, si esto no se hace, no funcionará nuestra base de las “blacklists”. Este script no toma en cuenta las direcciones IP de las blacklists, y dichas direcciones dejarán de ser funcionales, sólo se consideran los dominios por sus nombres.

Creamos el directorio del script:

Creamos el fichero que contendrá al script1:

Agregamos lo siguiente:

Creamos el fichero que contendrá al script2:

Agregamos lo siguiente:

Damos el permiso de ejecución:

Creamos un enlace simbólico con el directorio «/bin», para que pueda ejecutarse como comando del sistema:

Ejecutamos el script con la siguiente sintaxis:

Hacer esto para cada una de las listas que hace referencia a dominios y ubicarlas en el directorio /etc/squid/reglas/dominios/”. El script borra la lista original y la reemplaza por la lista modificada en el directorio del script, no el de Squid.

En cuanto al SSL Bump, creamos un fichero para los dominios que no se quieren desencriptar:

En este caso solo se agregará el dominio de intranet, pudiéndose agregar más en otro momento:

NOTA: Si se va a hacer uso del SSL Bump, recuerde hacer los pasos explicados en su sección, aplicándolos a este ejemplo:

Creamos los directorios para la cache de Squid:

Presionamos “ENTER”, si no devuelve nada, lo cual indica que no hay errores.

Iniciamos Squid:

Comprobamos que no haya errores de sintaxis en la configuración de Squid:

Si el comando anterior no devuelve nada, es porque la configuración no tiene errores.

Una vez accedamos al proxy a través del navegador, si verificamos el estado del servicio, deberá mostrarse como sigue:

NOTA: El navegador debe tener configurado el proxy apuntando al hostname para el cual fue configurado en el DNS. No funciona por IP.

Referencias Bibliográficas

  • SysAdmins de Cuba: https://www.sysadminsdecuba.com/2019/08/guia-para-la-implementacion-de-servicios-integrados-a-samba4-como-active-directory-domain-controller-ad-dc-en-debian-9-AdminLinux: 10-parte-6/. Yoel Torres, 17 de agosto de 2019.
  • Blog AdminLinux: https://admlinux.cubava.cu/2019/02/14/squid-samba4-parte-1/. Leslie “Koratsuki”, 14 de febrero de 2019.
  • Squid Documentation: http://www3.us.squid-cache.org/Versions/v3/3.2/manuals/ext_kerberos_ldap_group_acl.html. Markus Moeller.
  • Documentación de Squid: http://www.squid-cache.org/Doc/config/acl/.
  • Blog Debian Paso a Paso. Ariel Álvarez Gutiérrez.
  • Alcance libre: http://www.alcancelibre.org/staticpages/index.php/Squid-delay-pools. Jaime M. Tan Nozaw, 12 de febrero de 2009

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

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

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

14 comentarios

  1. Firefox 80.0 Firefox 80.0 Windows 8.1 x64 Edition Windows 8.1 x64 Edition
    Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0

    Saludos. Te quedó pájaro, pájaro, pájaro.

    Me gustó.

    XD

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

    Muy bueno, voy a implementarlo cuando monte el nuevo. Saludos

  3. Google Chrome 84.0.4147.125 Google Chrome 84.0.4147.125 Android 8.0.0 Android 8.0.0
    Mozilla/5.0 (Linux; Android 8.0.0; FIG-LX2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Mobile Safari/537.36

    Putorial con todas las de la ley la verdad. Control por mac que lo piden mucho como sería

  4. Firefox 81.0 Firefox 81.0 Windows 7 x64 Edition Windows 7 x64 Edition
    Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0

    Muy buen totorial, debo aclaras que soy nuevo en todo esto de linux, que los distintos
    servicios que he montado en este SO ha sido a traves de videos y manuales desde
    Internet, dentro de ellos este de squid ha sido el mas completo y abarcador

    Algo como esto es lo que andaba buscando para montar Squid de verdad, solo tengo que
    adaptar el tutorial a mis necesidades, solo quiero señalar algunas cosas

    * En los scripts la variable es dominio_dir o dominios_dir, lo declaras de una forma
    lo llamas de otras
    * La carpeta /config/scripts/ cuelga de la raiz o de /etc/squid/reglas/dominios
    * Cuando le pasas el parametro de la BL a modificar es la generica que las contiene
    a todas (ej la de shallalist o porn dentro de shallalist), es decir, una por una
    dentro de cada categoria
    * No pusiste los enlaces de descarga de blacklist ni de shallalist

    Por lo demas todo OK
    1 S@lu2


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

    Hola, que sucede con las respuestas a los comentarios? Veo que las dudas de: humberto kindelan no han tenido respuesta y la verdad sería útil, pues el tema del uso de estos scripts para editar todas lineas de los ficheros en cada una de las categorias del shallalist, a mi tampoco me funciona! Alguna ayuda al respecto??

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

    Tranquilos que se viene un cambio en el tuto y su explicacion. Tiempo no hay mucho y esto lo ateindo yo solo. Ya se les responderan sus dudas y se modificara el tuto

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

    Estamos trabajando en la config. El script se va a eliminar, pues incurre en errores de inicio para Squid, que para evitarlo, habria que editar las listas y son muchos dominios…miles. Pronto publicaremos una actualizacion.
    Se incluiran los enlaces de descarga de las blacklists.
    SL2

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

    Que pasa con la autenticacion en las maquinas que no forman parte del dominio y usas en el quid negotiate_kerberos_auth?

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

    se autentican por LDAP, como mecanismo de autenticacion secundario

  10. 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.
    Respecto a la autenticación de SQUID con LDAP, al no estar las PC en el Dominio, las contraseñas viajan en texto plano, desde el cliente hacia el proxy desventaja que cualquier sniffer de red pudiera utilizar para apoderarse de las credenciales de los usuarios.
    Cómo se podría resolver esto

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

    usar LDAPS

  12. Google Chrome 80.0.3987.132 Google Chrome 80.0.3987.132 Android 8.0.0 Android 8.0.0
    Mozilla/5.0 (Linux; Android 8.0.0; LDN-LX2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Mobile Safari/537.36

    Cuando squid analiza las blacklist da un error, al. Parecer porque el fichero con los los dominios es muy grande. Habrá alguna solución para eso. Salufos

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

    deberías hacer otra parte explicando qos. gracias

Dejar una contestacion

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