CONFIGURACIÓN DE PROXY: SQUID
En sistemas GNU/Linux Squid es el servidor proxy por excelencia, debido a su potencia y
estabilidad.
Características principales:
- Proxy con caché de HTTP, FTP, y otros protocolos de Internet
Squid proporciona un servicio de proxy que soporta peticiones HTTP, HTTPS y FTP a
equipos que necesitan acceder a Internet y a su vez provee la funcionalidad de caché
especializado en el cual almacena de forma local las páginas consultadas recientemente por
los usuarios. De esta forma, incrementa la rapidez de acceso a los servidores de información
Web y FTP que se encuentran fuera de la red interna.
- Proxy para SSL
Squid también es compatible con SSL (Secure Socket Layer) con lo que también acelera las
transacciones cifradas, y es capaz de ser configurado con amplios controles de acceso sobre
las peticiones de usuarios.
- Caché transparente
Squid se puede configurar para ser usado como proxy transparente empleando un cortafuegos
que intercepte y redirija las conexiones sin configuración por parte del cliente, e incluso sin
que el propio usuario conozca de su existencia.
- Puerto 3128
De modo predefinido Squid utiliza el puerto 3128 para atender peticiones, sin embargo se
puede especificar que lo haga en cualquier otro puerto disponible o bien que lo haga en varios
puertos disponibles a la vez.
- Gestión de tráfico
Permite categorizar el tráfico y limitarlo de manera individual o agrupada para conseguir un
mejor aprovechamiento del ancho de banda disponible en la conexión a Internet.
- Control de acceso
Ofrece la posibilidad de establecer reglas de control de acceso. Esto permite establecer
políticas de acceso en forma centralizada, simplificando la administración de una red.
Sintaxis de las ACL's (acces control list) (vamos a ver las opciones más utilizadas)
- Tipo src: Especifican una o varias direcciones IP de origen o un segmento de red con su máscara:
acl [nombre] src [contenido]
Ejemplos:
acl redlocal src [Link]/24
acl usuarios_VIP src [Link] [Link]
- Tipo dst: Especifican una IP de destino y máscara.
acl [Nombre] dst [contenido]
(igual que lo anterior pero con IP de destino)
- Tipo dstdomain: Establecen permisos sobre dominios web de destino:
acl [Nombre] dstdomain [Contenido]
Ejemplo:
acl denegados dstdomain [Link] [Link] [Link]
- Tipo time: Establece límites relacionados con franjas horarias dentro de una semana, de esta
forma hasta podemos habilitar o deshabilitar la navegación externa a nuestro antojo.
acl [Nombre] time [días][Horas]
Ejemplo:
acl horario time MTWHF 09:00-18:00
- Tipo url_regex: permite especificar expresiones regulares para comprobar una url, de esta forma
podemos deshabilitar páginas con un contenido temático.
acl [Nombre] url_regex "path"
De esta forma ponemos un [Link] con varias palabras como “deporte, futbol, baloncesto,
deportivo” y controlamos el acceso a páginas que salgan en búsquedas de google, con estas palabras.
acl deporte url_regex "/etc/squid/listas/[Link]"
- Tipo urlpath_regex: permite la administración de descargas por extensiones de ficheros.
acl [Nombre] urlpath_regex "path"
Ejemplo con [Link]: .avi$ .mpg$ .mpeg$ .exe$ .bat$ .mp3$
acl multimedia urlpath_regex "/etc/squid/listas/[Link]"
Configuración de control de acceso:
Así definimos si una regla se permite o se deniega y configuramos toda la estructura
http_access allow/deny regla
Ejemplo práctico:
De las ACL que hemos creado anteriormente cogemos la usuarios_VIP les vamos a permitir el
acceso a Internet.
http_access allow usuarios_VIP
Los demás usuarios se lo denegamos:
http_access deny redlocal
Todavía podemos complicarlo un poco más, ya que como algunas configuraciones el http_access
admite “!” para indicar lo contrario precediendo una ACL
http_access deny redlocal !horario !allowed
De esta forma los usuarios permitidos podrán navegar sólo a las páginas permitidas por el
administrador en el horario de oficina.
Ejemplo de una configuración real.
– Los equipos de nuestra red están en el segmento [Link]/24
– Los jefes de los departamentos tienen salida sin restricción a Internet y sus IPs están en el rango
[Link] – [Link]
– El resto de la red solamente tiene acceso a la página de la empresa en horario de oficina de 08:00
a 19:00 horas y no pueden bajarse contenido multimedia.
1 – Creamos las ACL
acl redlocal src [Link]/24
acl jefes src [Link] [Link]
acl permitidas dstdomain "/etc/squid/permitidas"
Dentro del archivo /etc/squid/permitidas escribiríamos las páginas web permitidas. Por ejemplo:
[Link] …
2 - Configuramos el control de accesos
http_access allow jefes
http_access deny redlocal !permitidas !horario multimedia
En esta última regla, establecemos que se le negará el acceso a Internet a los usuarios, excepto en el
horario permitido y a las páginas permitidas, así como las descargas de ficheros multimedia.
PRÁCTICA: INSTALACIÓN Y CONFIGURACIÓN DE SQUID
1. Para instalarlo:
# apt-get install squid
2. Cuando instalamos squid se crea un archivo llamado /etc/squid/[Link] (o
/etc/squid3/[Link]). En este fichero podemos configurar cualquier parámetro del proxy. No
obstante, vamos a hacer un nuevo archivo de configuración (y dejaremos una copia de seguridad del
antiguo)
#cp /etc/squid3/[Link] /etc/squid3/[Link]
3. Ejecutamos:
#gedit /etc/squid3/[Link]
Y el contenido de dicho archivo será el siguiente:
#parametros generales
#nombre del proxy
visible_hostname servidor_proxy
#puerto de escucha del proxy
http_port 3128
#direccion del archivo de log de los accesos y de la caché
access_log /var/log/squid3/[Link]
cache_log /var/log/squid3/[Link]
#listas de control de acceso
acl acceso src [Link]/[Link]
acl nopermitidas url_regex "/etc/squid3/nopermitidas"
acl nowebs dstdomain "/etc/squid3/nowebs"
#control de acceso
http_access deny nopermitidas
http_access deny nowebs
http_access allow acceso
ARCHIVO nopermitidas
twitter
ARCHIVO nowebs
[Link]
[Link]
[Link]
4. Reiniciamos el servicio
# /etc/init.d/squid restart
5. Configuramos el navegador para acceder a Internet a través de proxy
Por ejemplo en Firefox en: Editar-Preferencias-Avanzado-Red
Si configuramos un proxy transparente, tenemos que poner en la configuración IP del cliente como
puerta de enlace la dirección IP del proxy
En iptables del servidor tenemos que añadir:
iptables -t nat -A PREROUTING -o eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128
APLICACIÓN PRÁCTICA SERVIDOR SQUID
También podemos usar un web proxy en nuestro ordenador o nuestro navegador web,
enmascarando nuestra IP, para acceder a ciertos contenidos bloqueados por país, hacer más difícil
que puedan localizar el lugar desde donde estamos conectados, etc.
Mi caso
En mi caso la necesidad era poder acceder al contenido bloqueado en España de NBA League
Pass. Cansado de tener que buscar streamings todos los años y de no poder disfrutar debido a los
cortes, mala calidad y demás problemas, este año me decidí a comprar por 10 € la oferta del NBA
League Pass para ver los Playoffs de esta temporada sin ningún tipo de problema. Para solucionar el
tema del blackout en España estuve probando unos cuantos proxys gratuitos, pero ninguno llegó a
funcionar correctamente, y sabiendo que muchos de estos proxys guardan la información que pasa
por ellos, no tenía ganas de seguir probando suerte y comprometiendo la seguridad de mi equipo,
así que aprovechando la disponibilidad de una máquina con Ubuntu en otro país decidí montarme
mi propio proxy…
modifiqué algunas lineas y añadí otras del archivo de configuración, que está en
/etc/squid/[Link], voy explicando paso a paso:
Después de la línea acl CONNECT method CONNECT añadí la siguiente línea con mi di-
rección IP externa (en el ejemplo cambiado por X todos los números):
acl mired src [Link]
Antes de la linea http_access allow manager localhost añadí la siguiente línea, para que
Squid tuviese en cuenta la IP escrita anteriormente y le diese acceso:
http_access allow mired
Fui buscando las propiedades que necesitaba cambiar, algunas estaban comentadas (las li-
neas comentadas aparecen con # delante), las descomenté, y las fui modificando para que
quedasen del siguiente modo:
http_port 3128
cache_mem 64 MB
cache_dir ufs /var/spool/squid 256 16 256
error_directory /usr/share/squid/errors/Spanish
forwarded_for off
Por último sólo quedaba reiniciar Squid con el siguiente comando:
sudo /etc/init.d/squid restart
Y ya tenía el Proxy configurado y funcionando. En mi máquina tuve que configurar el proxy en
Firefox y con eso ya accedía con la IP enmascarada.
Con estos sencillos pasos he conseguido saltar el bloqueo de contenido en España, lo malo es la
necesidad de un servidor o una máquina a la que tengamos acceso en otro país o lugar que no sufra
este bloqueo