jueves, 15 de marzo de 2012

Pfsense 2: Restringir navegacion por horario con Squid

Siguiendo el blog, a veces es necesario dar acceso en base a la hora, por ejemplo nosotros trabajamos de 7:00AM a 5:00PM.

O bien podriamos decidir abrir el Facebook durante la hora de comida para un grupo de usuarios de 11PM a 11:50PM.

En fin uno puede hacer esto con squid.

Ya tenemos un squid operando, vamos a darle un poco de realidad a esto para que se entienda mejor.

Yo todo lo estoy manejando por IP, pero si ustedes lo manejan en base a autentificacion, no hay problema se puede llevar a cabo, voy a seguir mi blog y trabajare sobre IP para no perder el hilo.

Tengo 1 equipo con el IP:
192.168.50.99
Nombre del ACL: GRUPO1
Archivo Nuevo: GRUPO1.acl

Yo deseo que el pueda entrar a facebook, twitter, youtube cuando cene asi puede su mente descansar y relajarse.
Nombre del ACL: GRUPO1_SITIOS
Archivo Nuevo: GRUPO1_SITIOS.acl

Tiempos de acceso: 11PM A 11:59PM
Nombre del ACL: GRUPO1_HORAS

Vamos a seguir el blog, recuerden que estamos trabajando sobre el archivo: squid-custom y una vez editado, copeamos el contenido y ejecutamos el parse de squid para ver si esta todo bien escrito y enseguida reconfigurar.

1) Abrimos la consola.
2) Abrimos el archivo squid-custom y agregamos los acl:

######################################################################
###                     Opciones Personalzadas                     ###
######################################################################
###Servidores Ubuntu de la Red.
acl UBUNTU_LAN src "/usr/local/etc/squid/acl/UBUNTU_LAN.acl"
###Servidores de actualizacion para Ubuntu
acl UBUNTU_UP_SERVERS dstdomain "/usr/local/etc/squid/acl/UBUNTU_UP_SERVERS.acl"
###             Bloqueo de web msn messenger
acl msnmime req_mime_type ^application/x-msn-messenger
acl msngw url_regex -i gateway.dll
### Grupo que puede entrar a facebook de 11PM a 12AM
acl GRUPO1 src "/usr/local/etc/squid/acl/GRUPO1.acl"
acl GRUPO1_SITIOS dstdomain "/usr/local/etc/squid/acl/GRUPO1_SITIOS.acl"
acl GRUPO1_HORAS time MTWHF 23:00-23:59
###             Fin de acl's personalizadas                        ###
######################################################################

Salvan.

Archivo: /usr/local/etc/squid/acl/GRUPO1.acl

192.168.50.99/32

Salvan.

Archivo: /usr/local/etc/squid/acl/GRUPO1_SITIOS.acl

.facebook.com
.youtube.com
.twitter.com

Salvan.

3) Agregamos las ACL a nuestras reglas para que squid les permita operar:

Abrimos de nuevo el archivo squid-custom y agregamos las ACL para que trabajen:

######################################################################
###                     Opciones Personalzadas                     ###
######################################################################
###                  Nuestras ACL's en operacion.                  ###
###                     Bloqueo de WEB Messenger
http_access deny msnmime
http_access deny msngw

### ACL sin restricciones
http_access allow unrestricted_hosts
http_access deny unrestricted_hosts

### ACL para que mis ubuntu's puedan actualizarse.
http_access allow UBUNTU_LAN UBUNTU_UP_SERVERS
http_access deny UBUNTU_LAN

### ACL para dar acceso a cierta hora
http_access allow GRUPO1 GRUPO1_SITIOS GRUPO1_HORAS
http_access deny GRUPO1

###                     Fin de mis ACL's                           ###
######################################################################

Salvan.

4) Copeamos nuestro archivo personalizado a el de produccion:

cp squid-custom squid.conf

5) Revisamos si todo esta bien escrito(gramatica).

squid -k parse
(No debe retornar nada, de lo contrario arreglar el error)

6) squid -k reconfigure (No debe retornar nada, si es asi ya la hicimos)

7) Probamos en la maquina del cliente:

Accesano el Sitio Permitido
 No parece que sea la pagina que uno conoce, que paso? Lo mas seguro que facebook hace uso de otros dominios para mostrar la imagenes, vamos a revisar los logs de squid /var/squid/logs/access.log:

1331797313.531      0 192.168.50.99 TCP_DENIED/403 1438 GET http://static.ak.fbcdn.net/rsrc.php/v1/y5/r/lv-mu7kxrY8.js - NONE/- text/html

Correcto, facebook hace uso de otros dominios, asi que vamos tambien a darlos de alta en nuestros sitios permitidos:

Abrimos el archivo GRUPO1_SITIOS.acl y agregamos este dominio de facebook.

.facebook.com
.fbcdn.net

.youtube.com
.twitter.com

Salvamos.

Le pedimos a squid que levante los cambios:

squid -k reconfigure

Le pedimos a el usuario que intente de nuevo:

Sitio permitido.

Twitter y Youtube pasan por lo mismo, vean el log de squid:

Twitter:
1331797439.282      0 192.168.50.99 TCP_DENIED/403 1460 GET http://a0.twimg.com/a/1331785271/t1/css/t1_core_logged_out.bundle.css - NONE/- text/html

Youtube:

1331797704.245      0 192.168.50.99 TCP_DENIED/403 1422 GET http://s.ytimg.com/yt/jsbin/www-guide-vflOgLheI.js - NONE/- text/html

Nuestro archivo GRUPO1_SITIOS.acl queda asi:

.facebook.com
.fbcdn.net
.youtube.com
.ytimg.com
.twitter.com
.twimg.com


Salvan.

Piden a squid que levante los cambios y ya deben poder entrar a los sitios deseamos sin problemas durante el tiempo marcado.

8) Que pasa cuando ya no es la hora de navegar?

Bloqueando sitio fuera de hora.
Aqui tenemos que facebook ha sido bloqueado.

Twitter bloqueado.



Youtube bloqueado.

9) Listo problema atacado usuario feliz.

Esta es una de las tantas cosas que squid nos permite llevar a cabo, lo mas importante aparte de conocer los ACL es saber entender los logs, siempre que algo se bloquea es rapidamente leer los logs y buscar la palabra no deseada "DENIED".

Saludos!!!



9 comentarios:

locoroot dijo...

Por favor
Necesito Urgente una acl que me permita cerrar facebook desde las 8:00 AM hasta las 2:00 PM a todos mis usuarios Uso squid3 y no se nada de nada.
Necesito paso a paso que hacer por favor enviarme sus ayuda a

claro614@gmail.com

Pedro Moreno dijo...

Hola.

Necesitas:

1; Un listado de usuarios a quien se les aplica la regla.
acl USR_LIST_FB src /var/squid/acl/USR_LIST.acl
--ip/usuarios

2; Un listado de dominios que vas a blouquear:

acl USR_FB dstdomain .facebook.com

3; acl para el horario
acl USR_LIST_HORAS time MTWHF 08:00-14:00
(Lunes a viernes)

4; Aplicas tu regla

http_access deny USR_LIST USR_FB USR_LIST_HORAS

Saludos.

Enigmahernandez - EnigmaGirl dijo...

Una pregunta, tengo IP dinámica, tengo un sólo proveedor y quiero que una de las PC tenga libre acceso.

He bloqueado páginas de descarga, de pornografía y cosas ilegales, pero deseo que una (la principal) sea la que no tenga ese tipo de bloqueos, o sea que permita navegar libremente y sin restricciones, pero no hayo la forma de separar la IP del equipo principal no tenga bloqueos de ningun tipo. ¿Como se puede hace eso? ya busque en proxy u todo pero no puedo, poner un rango digamos desde la ip 192.168.1.10 - 192.168.1.254 bloqueadas por políticas de proxy (son IP dinámicas todas las demás pc) y solo la principal que tiene ip estática, pueda acceder sin restricciones.

No sé si me entiendes, quiero hacer eso y ya me confundí mucho.

Gracias.

Pedro Moreno dijo...

Enigma disculpa la tardanza, he estado un poco desconectado delo blog por otros proyectos, pero ya estoy retomandolo.

Bien, si deseas que 1 o mas IP no tengan restricciones, pues yo lo que haria seria no cruzarlo por el proxy, crear un alias y ahi meter todos los IP's que no deseo tengran restricciones, y solo crear las reglas en el firewall para que vayan a ciertos puertos solamente y no dejarles todo abierto.

Asi le haria yo... saludos.

Anónimo dijo...

quiobo srs
podria tener la gui de como pasar cierta ip add de mi segmento lan / pfsense pero quei siempre pase a otra WAN esto es por default tengo los users de la red lan pasando por la opt1 pero quiero que solo ciertos usrs pasen por WAN ,,, (no he podido ...bueno habilite el squid con sg en modo transparente y si jala pero esto lo requiero hacer ....como ????

Anónimo dijo...

hola necesito saber porfa como restringir con squid a los usuarios que naveguen solo 60 horas al mes y que vean su tiempo en una web le agradeceria de corazon la respuesa pues depende mi puesto de trabajo gracias de ante mano mi correo es anibal.ojedabernal@gmail.com

saludos

Pedro Moreno dijo...

Hola anonimo, ya cuestiones por tiempo de navegacion, que tu digas: Usuario1 solo 60 horas, usuario2 solo 20, esto no hace squid, aqui ya entra radius y para que tengas una pantalla grafica requieres programarlo, saludos.

Unknown dijo...
Este comentario ha sido eliminado por el autor.
Unknown dijo...

Antes que todo le mando un abrazo rompe costilla, estoy usando Pfsene, por favor necesito de su maravillosa ayuda Ingeniero Pedro Moreno, quiero Bloquear todas las paginas de redes sociales donde me permita cerrar facebook entre otras, desde las 12:00 AM hasta las 2:00 PM a todos mis usuarios y que luego tambien me permita cerrar de 4:30 PM a 8:00 AM, y como poder imprimir las paginas que visitan los usuarios,y como se bloquea un remoto vnc, soy estudiante de Ing. de Informatica uso squid y tengo poco conocimiento,Necesito paso a paso que hacer, por favor que libros o url me recomendaria para ampliar conocimiento, por favor enviarme su Gran ayuda a mi correo: humijar.ve@gmail.com
y gracias,estoy a sus ordenes Ingeniero Pedro Moreno.