Configuración de Squid: Restricción de acceso a Sitios de Internet

Autor:dark Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2011 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector, hace mal uso de éstos.

Introducción.

Denegar el acceso a ciertos Sitios de Red permite hacer un uso más racional del ancho de banda con el que se dispone. El funcionamiento es verdaderamente simple y consiste en denegar el acceso a nombres de dominio o direcciones de Internet que contengan patrones en común.

Este documento considera que se ha leído previamente, a detalle y en su totalidad el documento titulado «Configuración de Squid: Servidor Proxy,» y que ha configurado exitosamente Squid como servidor proxy.

Restricción por expresiones regulares.

Se debe crear un archivo donde se definirá la lista de expresiones regulares.

vim /etc/squid/listas/expreg-denegadas

Esta lista puede contener cualquier expresión regular que se considere sea usualmente utilizadas en las direcciones de ciertos sitios.

adult
celebri
mp3
otrositioindeseable.com
playstation
porn
sex
sitioindeseable.com
taringa
torrent
warez
wii

Esta lista, la cual deberá ser completada con todas las palabras (muchas de estás son palabras obscenas en distintos idiomas) y direcciones de Internet que el administrador considere pertinentes, la guardaremos como /etc/squid/listas/expreg-denegadas.

Edite el archivo /etc/squid/squid.conf:

vim /etc/squid/squid.conf

Añada una lista de control, denominada expreg-denegadas, de acceso tipo url_regex (expresiones regulares del URL), que defina al la lista en el archivo /etc/squid/listas/expreg-denegadas:

acl expreg-denegadas url_regex "/etc/squid/listas/expreg-denegadas"

Habiendo hecho lo anterior, deberemos tener en la sección de Listas de Control de Acceso algo similar a lo siguiente:

#
# Recommended minimum configuration:
acl all src 0.0.0.0/0
acl manager proto cache_object
acl localhost src 127.0.0.1/8
acl localnet src 192.168.1.0/24
acl password proxy_auth REQUIRED
acl expreg-denegadas url_regex "/etc/squid/listas/expreg-denegadas"

A continuación especificaremos modificaremos una Regla de Control de Acceso existente agregando con un símbolo de ! que se denegará el acceso a la Lista de Control de Acceso denominada expreg-denegadas:

http_access allow localnet !expreg-denegadas

La regla anterior permite el acceso a la Lista de Control de Acceso denominada localnet, pero le niega el acceso a todo lo que coincida con lo especificado en la Lista de Control de Acceso denominada expreg-denegadas.

Ejemplo aplicado a una Regla de Control de Acceso combinando el método de autenticación explicado en el documento Configuración de Squid: Acceso por Autenticación:

Reglas de control de acceso: denegación de sitios.
#
# INSERT YOUR OWN RULE(S) HERE TO allow ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow localnet password !expreg-denegadas
http_access deny all

Restricción por expresiones regulares.

Para restringir el acceso por dominios, se crea un archivo con lista con dominios.

vim /etc/squid/listas/dominios-denegados

Los nombres pueden ser nombres de dominio específicos:

www.facebook.com
www.twitter.com
plus.google.com

O bien puede definirse todo el dominio completo, incluyendo sub-dominios:

.facebook.com
.twitter.com
Nota.

Si define .dominio.com, es innecesario definir www.dominio.com o mail.dominio.com o ftp.dominio.com, etc., pues todos son subdominios de .dominio.com:

O bien se pueden definir dominios de nivel superior genéricos o geográficos.

.co.jp
.com.cn
.im
.tv
.xxx

O bien una combinación de todo lo anterior.

.co.jp
.com.cn
.facebook.com
plus.gogle.com
.tv
.twitter.com.im
.xxx

Edite el archivo /etc/squid/squid.conf.

vim /etc/squid/squid.conf

Añada una lista de control, denominada dominios-denegados, de acceso tipo dstdomain (dominios de destino), que defina al la lista en el archivo /etc/squid/listas/dominios-denegados.

acl dominios-denegados dstdomain "/etc/squid/listas/dominios-denegados"

Añada una regla de control de acceso que deniegue el acceso a sitios que estén incluidos en la lista de dominios.

http_access allow localnet !expreg-denegadas !dominios-denegados

Permitiendo acceso a sitios inocentes incidentalmente bloqueados.

Si por ejemplo, el incluir una expresión regular en particular, en la lista de expresiones regulares denegadas, afecta incidentalmente el acceso a un sitio de Internet en particular, también puede generarse una lista de dominios que serán excluidos de las restricciones.

Utilice el editor de texto para crear el archivo /etc/squid/dominios-inocentes.

vim /etc/squid/dominios-inocentes

El contenido puede ser una lista de dominios o bien dominios de nivel superior, que se considere deban ser accedidos por la red local en cualqueir momento y sin restricciones.

.alcancelibre.org
.edu
.edu.mx
.eluniversal.com.mx
.gob.mx
.gov
.milenio.com
.org
.org.mx
.unam.mx
www.google.com
www.google.com.mx

Este archivo será definido en una Lista de Control de Acceso del mismo modo en que se hizo anteriormente con el archivo que contiene dominios y palabras denegadas.

acl dominios-inocentes dstdomain "/etc/squid/dominios-inocentes"

Para hacer uso de el archivo, sólo bastará utilizar la expresión ! en la misma línea utilizada para la Regla de Control de Acceso establecida para denegar el mismo.

http_access allow all dominios-inocentes

La regla anterior especifica que se permitirá el libre acceso, en todo momento, a los dominios incluidos en la lista de control de acceso denominada dominios-inocentes.

Finalizando procedimiento.

Finalmente, sólo bastará recargar la configuración de Squid para que tomen efecto los cambios y se puedan realizar pruebas.

service squid reload