• Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Mi Blog
❱ Cómo restringir el acceso por horarios en Squid Proxy

❱ Cómo restringir el acceso por horarios en Squid Proxy

Permitir y restringir la navegación a través de nuestro servidor Proxy Squid es sumamente sencillo de realizar. En este tutorial os enseñaré tanto la sintaxis como un ejemplo de uso real donde poder adaptarlo a vuestras necesidades. Ya son varios los tutoriales de Squid y no podía faltar el control de acceso en función del horario y del día de la semana. Si quieres aprender como se hace, sigue leyendo:

Si quieres aprender a montar un servidor Proxy, puedes visitar 2 tutoriales donde explico a paso a paso como se puede instalar y configurar: PROXY TRANSPARENTE y PROXY NO TRANSPARENTE.

Te resumiendo que leas dichos tutoriales (al menos uno de ellos), para saber como funciona un proxy y como realizar la configuración básica. Si todos esos pasos ya los conoces, ¡empecemos!

01.- ELEMENTOS UTILIZADOS EN ESTE TUTORIAL

  • GNU/Linux Debian + Squid Proxy (Servidor)
  • Windows 7 (Cliente)

02.- COMO SE USAN LAS RESTRICCIONES

El fichero principal de configuración del proxy Squid se encuentra en /etc/squid.squid.conf.

  • M - Monday - Lunes
  • T - Tuesday - Martes
  • W - Wednesday - Miércoles
  • H - Thursday - Jueves
  • F - Friday - Viernes
  • A - Saturday - Sábado
  • S - Sunday - Domingo

La sintaxis que debemos usar para crear las Listas de Control de Acceso (ACLs), deberá ser la siguiente:

acl [ nombre_horario_acl ] time [ días_de_la_semana ] hh:mm-hh:mm

Algunos ejemplos de Listas de Control de Acceso:

Lista de acceso para los fines de semana desde las 00:01 del Sábado hasta las 23:59 del Domingo:

acl fin_de_semana time AS 00:01-23:59

Lista de acceso para los días de diario desde el Lunes a las 00:01 hasta el Viernes a las 23:59:

acl diario time MTWHF 00:01-23:59

Lista de acceso para los Martes y Miércoles desde el Martes a las 14:00 hasta el Miércoles a las 18:00:

acl martes_miercoles time TW 14:00-18:00

Una vez que tenemos creada nuestra Lista de Acceso, debemos crear y asociar la Regla de Control de Accesos sobre dicha/dichas reglas de control. En el fichero de configuración de squid deberemos añadir tanto las Listas de Acceso como las Reglas de Control.

La sintaxis que debemos usar para crear las Reglas de Control de Acceso, deberá ser la siguiente:

http_access [allow|deny] [nombre_horario_acl] [elementos]

Por ejemplo, para las 3 Listas de Acceso usaremos la siguiente configuración:

http_access deny fin_de_semana [elementos]
http_access allow diario [elementos]
http_access deny martes_miercoles [elementos]

En la configuración anterior estamos aplicando 3 Reglas de Control:

  1. Denegamos todo el tráfico durante el fin de semana
  2. Permitimos todo el tráfico entre semana
  3. Denegamos el tráfico entre Martes 14:00 y Miércoles 18:00

La variable [elementos] la explicaré en el siguiente apartado.

03.- EJEMPLOS DE CONFIGURACIÓN

Supongamos que tenemos un servidor Proxy para 2 aulas en un Instituto. El Aula 1 usa la siguiente red: 192.168.5.X/24 y el Aula 2 192.168.6.X/24. Y se nos plantea la siguiente cuestión para resolver:

  1. El Aula 1 tendrá acceso durante todos los días de diario (192.168.5.X/24)
  2. El Aula 2 tendrá acceso solamente durante el fin de semana porque es para la Escuela de Adultos (192.169.6.X/24)
  3. En el aula 1, los PCs de la última fila no tendrán acceso nunca (192.168.5.20/24,192.168.5.21/24 y 192.168.5.22/24)
  4. Denegar todo lo que no coincida con lo anterior

ACL SquidEsquema red

Primero declaramos las Listas de Acceso con los [elementos], que no es otra cosa que las redes y/o las direcciones de los equipos.

acl aula1 src 192.168.5.0/255.255.255.0 #Aula1
acl aula2 src 192.168.6.0/255.255.255.0 #Aula2
acl aula1_ultimafila src 192.168.5.20-22/32 #Aula1 Última Fila

Las Reglas de Acceso de Squid funcionan como las reglas de IPTables (en una política que sea ACEPTAR SIEMPRE). Primero se aplican las reglas de DENEGAR y luego las de PERMITIR. Por tanto, con la siguiente premisa las Reglas de Acceso deberemos configurarlas de la siguiente forma:

http_access deny aula1_ultimafila #Denegamos siempre Aula1_Ultimafila
http_access allow diario aula1 #Permitimos Aula1
http_access allow fin_de_semana aula2 #Permitimos Aula2 Fin de Semana
http_access deny all #Denegamos todo lo demás que no coincida

ENJOY!


Raúl Prieto Fernández

Sitio Web: /

Si quieres ir rápido, ve solo. Si quieres llegar lejos, ve acompañado.

Comentarios  

Dairon González Hernández
+1 # Dairon González Hernández 20-01-2018 14:24
hola pongo la regla pero no me funciona, sera que me esta dando conflicto con otra regla de orario, quisiera que una lista de usuarios me navegaran asi
acl hcerrado time SMTWHS 07:50-16:00
pero otros no navegaran hasta

acl hlibre time SMTWHS 16:00-7:55
http_access deny user_tarde hlibre o seria asi
http_access allow user_tarde hlibre

espero su respuesta gracias
Responder
Ral Prieto Fernndez
# Raúl Prieto Fernández 22-01-2018 21:27
Hola Dairon:

Ahora no tengo un Squid a mano para probar, pero a ver si puedo ayudarte.

1.- Lo primero que tienes que declarar son los ACLS de las redes o equipos que vas a filtrar. En el siguiente ejemplo pongo 2 redes para 2 aulas:

acl aula1 src 192.168.1.0/255.255.255.0 #Red Aula1
acl aula2 src 192.168.2.0/255.255.255.0 #Red Aula2

2.- Luego tienes que declarar los horarios que necesitas. Vamos a declarar los horarios de navegación ( horas donde está permitido el tráfico). Para el aula1 y el aula2 las horas son diferentes.

acl aula1_allow time SMTWHS 07:50-16:00 # ACL. Declaramos el horario permitido para Aula1
acl aula2_allow time SMTWHS 16:00-7:55 # ACL. Declaramos el horario permitido para Aula2

3.- Luego tienes que declarar las reglas de ALLOW|DENY. En este caso permitimos las ACL que hemos creado.
http_access allow aula1_allow # Regla permitir ACL aula1_allow
http_access allow aula2_allow # Regla permitir ACL aula2_allow

4.- Y luego hay que denegar todo lo que no haya cumplido las reglas anteriores.
http_access deny_all # Deganemos todo lo demas que no coincida con las reglas anteriores

Debes darte cuenta que Squid funciona como IPTables, se van analizando las reglas de arriba a abajo. Si una regla superior cumple con el patrón, ya no salta a la siguiente.

Espero haberte ayudado. Cualquier duda me dices.
Responder

Escribir un comentario

Información básica sobre Protección de Datos

Responsable: Raúl Prieto Fernández +info

Finalidad: Moderar los comentarios a los artículos publicados en el blog. +info

Legitimación: Consentimiento del interesado +info

Destinatarios: No se comunicarán datos a persona u organización alguna. +info +info

Derechos: Tiene derecho a Acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la información adicional. +info

Plazo de conservación de los datos: Hasta que no se solicite su supresión por el interesado.

Información adicional: Puede consultar la información adicional y detallada sobre Protección de Datos Personales en mi página web raulprietofernandez.net +info

     

Código de seguridad
Refescar


LOGIN / ENTRAR

BUSCAR EN EL BLOG

TWITTER TIMELINE

Booking.com

ENCUESTA

¿Cual es el mejor Sistema Operativo?

Como es lógico, esta web utiliza cookies propias y de terceros para elaborar información estadística y mostrar publicidad personalizada a través del análisis de tu navegación, conforme a la política de cookies.

  Si continúas navegando, aceptas su uso.