Controlar el acceso a páginas https desde Squid | Algo de Linux

jueves, 10 de abril de 2014

Controlar el acceso a páginas https desde Squid

Ya os conté cómo es posible filtrar por usuario y/o por grupos en un post anteriorhttp://enavas.blogspot.com.es/2013/11/filtrar-por-usuario-mediante-squid-ldap.html, utilizando squid en modo no transparente, algo que os recomiendo porque, aunque es cierto que puede darnos un poco más de trabajo a la hora de implementarlo, debido a que requiere configurar el uso explícito del proxy en el navegador, nos va a aportar un mayor nivel de control sobre las reglas de filtrado.

En este post os voy a explicar cómo controlar el acceso a páginas https como facebook, twitter, etc.. vía https y para corroborar lo que os digo, os mostraré cómo podemos hacer un control selectivo dependiendo del grupo al que pertenezca un usuario, basándome en la configuración realizada en el post mencionado anteriormente.

Supongamos que tengo configurado mi servidor con un filtrado selectivo mediante squid y ldap y en el fichero de configuración /etc/squid/squid.conf tengo dos ACL:
# ACL para establecer reglas de filtrado para el grupo teachers
acl profesores external group_auth teachers

# ACL para establecer reglas de filtrado para el grupo students
acl alumnos external group_auth students

Supongamos que quiero controlar el acceso vía https a páginas como facebook, twitter y youtube. Para ello podría crear una acl por cada dominio:
# ACL para gestionar facebook
acl facebook dstdomain .facebook.com

# ACL para gestionar twitter
acl twitter dstdomain .twitter.com

# ACL para gestionar youtube
acl youtube dstdomain .youtube.com

Y crear reglas de filtrado para permitir el acceso del grupo profesores a estos tres dominios y denegárselo al grupo alumnos:
# Permitir facebook a profesores y denegárselo a alumnos
http_access allow CONNECT facebook profesores
http_access deny CONNECT facebook alumnos

# Permitir twitter a profesores y denegárselo a alumnos
http_access allow CONNECT twitter profesores
http_access deny CONNECT twitter alumnos

# Denegar youtube a profesores y denegárselo a alumnos
http_access allow CONNECT youtube profesores
http_access deny CONNECT youtube alumnos

Una vez añadidas las reglas al fichero de configuración, haríamos que squid lo re-lea:

# service squid reload

Así de fácil. Ahora bien, en lugar de crear una acl y una regla de filtrado para cada web con acceso https que necesite filtrar, podríamos almacenar los dominios a restringir en un fichero y cambiar las reglas de filtrado anteriores por las siguientes:

# Lista de dominios https restringidos
acl deny_https url_regex "/etc/squid/acl/deny_https"

# Controlar el acceso a webs https específicas
http_access allow CONNECT deny_https profesores
http_access deny CONNECT deny_https alumnos

De este modo, cuando queramos filtrar el acceso a una nueva web vía https, tan sólo tendremos que añadir el dominio al archivo /etc/squid/acl/deny_https.

Publicado por primera vez en http://enavas.blogspot.com.es

1 comentario:

Danny Loisell dijo...

Buenas tardes, tengo mi proxy squid con reglas, mi regla acceso_total tiene ips de los jefes, pero ingresan a todo facebook, paginas de musica, peliculas, etc PERO NO INGRESA A YOUTUBE, por favor si me puedes ayudar no se donde esta el problema, aparenemente todo esta ok.

ESTA ES MI CONFIGURACION

#Administracion por IPs
acl acceso_red src 172.18.96.0/24
acl acceso_total src "/etc/squid/acceso_total"
acl acceso_no src "/etc/squid/sin_acceso"
acl acceso_msn src "/etc/squid/msn"

#Por Aplicaciones
acl audiovideo_01 req_mime_type -i ^video/x-ms-asf$
acl audiovideo_02 req_mime_type -i ^application/vnd.ms.wms-hdr.asfv1$
acl audiovideo_03 req_mime_type -i ^application/x-mms-framed$
acl audiovideo_04 req_mime_type -i ^audio/mpeg$
acl msn_messenger req_mime_type -i ^application/x-msn-messenger
#Por URLs
acl acceso_filtrobasico url_regex -i "/etc/squid/filtro_basico"

#ACCESOS DEFINIDOS POR EL ADMINISTRADOR
http_access allow acceso_total
http_access deny acceso_no
http_access allow acceso_msn
http_access deny acceso_filtrobasico
http_access deny audiovideo_01
http_access deny audiovideo_02
http_access deny audiovideo_03
http_access deny audiovideo_04
http_access deny msn_messenger
http_access allow acceso_red

# And finally deny all other access to this proxy
http_access allow localhost
http_access deny all


Gracias,