Introducción a Squid: configuración paso a paso

Squid logo y Tux

Squid es otro filtro a nivel de aplicación que puede complementar a iptables. Squid es un servidor proxy para web con caché, es muy popular y libre, además es multiplataforma. Aunque se puede usar para mejorar el rendimiento de las conexiones a Internet, también se puede usar con fines de seguridad. Desde que se inició el proyecto en los años 90, mucho a avanzado Squid y ahora te la presentamos para que sepas como usarla.

Para su instalación, puedes acceder a la web oficial del proyecto y seleccionar los paquetes binarios para tu sistema operativo o distribución. Si deseas instalarlo desde el paquete de código fuente compilando, también tienes esa opción. Los tarballs disponibles son tar.gz, tar.bz2 y tar.xz. Si no sabes como instalar, puedes acudir al artículo que editamos en este blog acerca de cómo instalar cualquier paquete desde Linux. ¡Ojo! si tienes un Debian o derivado y has visto que se instala con sudo “apt-get install squid”, puede que te de un error, porque tienes que sustituir “squid” por “squid3” para que surta efecto…

Ahora pasamos directamente a la acción explicando algunos ejemplos de cómo utilizar Squid para proteger nuestro equipo. Antes me gustaría explicar que Squid se basa en ACLs, es decir en Acces Control List o lista de control de acceso, es decir, unas listas en las que se detallan los permisos para controlar en este caso el flujo de red e implementar filtros similares a los de iptables pero a nivel de aplicaciones.

Normalmente, tras la instalación se incluye un fichero de configuración que se encuentra en /etc/squid3/squid.conf y es este el que debemos editar con un editor como nano o gedit. En él podemos generar nuestras reglas de filtrado, aunque existen las opciones cache_dir, cache_mem y http_port, nosotros usaremos esta última para nuestras reglas de seguridad. Otro detalle es que en este fichero se especifica el puerto por defecto que usa el servicio Squid, que por defecto es 3128 (ver la línea o directiva “http_port 3128” y quítale el # para activarla). Si quieres puedes cambiarlo…

Si abres el fichero, verás que está comentado, si quieres anular una regla creada, puedes iniciar la línea con # y la transformas en un comentario, con lo que Squid la ignora, para volverla a poner en servicio, borras el # y listo. De hecho, hay muchas reglas creadas y puestas como comentario que puedes usar quitándole #. Así no tendrás que borrar y volver a escribir reglas. Bien, para añadir una regla o filtro concreto, ésta debe tener una ACL y una directiva que indique lo que se debe hacer.

Por cierto, cuando quites un # para activar una regla, asegúrate de no dejar espacios al inicio de la línea. Por ejemplo:

Forma erronea:

http_port 3128

Forma correcta:

http_port 3128

¿No te has enterado de nada? Pues no te preocupes, con un ejemplo lo verás todo mucho mejor. Imagina esto:

acl bloqueo url_regex as facebook
http_access deny bloqueo

Lo que quiere decir esta regla es que la acl con nombre “bloqueo” va a prohibir el acceso a la URL que contenga “facebook” (por tanto si intentamos entrar a Facebook nos saltrará un error en el navegador). Si en vez de “deny” usas “allow”, permitirías el acceso en vez de prohibirlo. También se puede usar el parámetro ! para excluir, por ejemplo, imagina que quieres permitir el acceso a lista1 pero no a lista2:


http_access allow lista1 !lista2

Otro ejemplo podría ser crear un fichero /etc/squid3/ipspermitidas y en él guardar una lista de IPs que queremos permitir el acceso. Por ejemplo, imagina que el contenido de ipspermitidas es:

192.168.30.1

190.169.3.250

192.168.1.26

Y luego creamos la acl para permitir el acceso a estas IPs:


acl nuevaregla src "/etc/squid3/ipspermitidas"

Un ejemplo bastante práctico, imagina que tu equipo lo usan niños menores de 18 años y quieres restrigir el acceso a ciertos sitios de contenido adulto. Lo primero es crear un fichero llamado /etc/squid3/lista con el contenido:

adult

porno

sex

poringa

Y ahora en  el fichero squid.conf ponemos la siguiente regla:


acl denegados url_regex "/etc/squid3/lista"

http_access allow !denegados

Como ves hemos usado allow que en principio es para permitir, pero si te fijas hemos agregado ! para negar, por tanto, sería equivalente a poner:


acl denegados url_regex "/etc/squid3/lista"

http_access deny denegados

También se pueden crear listas, no solo de nombres de dominio o IPs como hemos hecho, también puedes poner dominios y por ejemplo restrigir el acceso a dominios como .xxx, .gov, etc. Veamos un ejemplo basándonos en la regla anterior. Creamos un fichero /etc/squid3/dominios que tenga:

.edu

.es

.org

Y ahora nuestra regla, para denegar el acceso a la lista de sitios prohibidos que creamos, pero permtiendo el acceso a URLs con estos dominios:


acl denegados url_regex "/etc/squid3/lista" 
acl permitidos dstdomain "/etc/squid3/dominios"

http_access allow !denegados dominios

Por favor, no olvides dejar tus comentarios, dudas o lo que quieras… Aunque es un tutorial muy por encima de Squid, espero que te sirva de ayuda.

 

El artículo Introducción a Squid: configuración paso a paso ha sido originalmente publicado en Linux Adictos.

from Linux Adictos http://ift.tt/1Q28e29
via IFTTT