6.3. Configuración de SQUID

El fichero de configuración de SQUID se halla en /etc/squid/squid.conf y hemos de editarlo con nuestra herramienta favorita para realizar los cambios adecuados y conseguir que cumpla su tarea con cierta seguridad para nuestro sistema.

Este fichero de configuración consta de multitud de parámetros configurables que ajustan el servidor a nuestras necesidades. Trataremos de reflejar aquellos indispensables para un óptimo funcionamiento.

6.3.1. Puerto para SQUID

Por defecto, SQUID utilizará el puerto 3128, vea Sección 3.1 para una visión más general acerca de los puertos y su misión, aunque puede configurarse para que use cualquier otro, incluso varios puertos simultáneamente, dependiendo de nuestras necesidades. La línea correspondiente quedará:

http_port 3128

6.3.2. Tamaño de caché

En esta instrucción fijamos el espacio en disco que se usará para almacenar las páginas visitadas, es decir, respondemos a la pregunta, ¿Cuánto deseo almacenar de Internet en mi disco duro?

Por defecto SQUID usará 100 Mb, como límite para el tamaño del caché, pero si quisiéramos fijar, por ejemplo 500 Mb, debemos fijar la entrada correspondiente de la siguiente forma:

cache_dir ufs /usr/local/squid/cache 500 16 256

En la línea anterior estamos seleccionando el directorio de caché (/usr/local/squid/cache), indicando el tamaño máximo para éste (500), la cantidad de subdirectorios de primer nivel que puede contener (16, el valor por defecto) y, el número de subdirectorios de segundo nivel (256, también por defecto) que puede almacenar

Importante

En caso de que fijemos un tamaño para el directorio de caché superior a la capacidad real del disco duro, SQUID se bloqueará.

6.3.3. Vida en el caché

Podemos configurar también el tiempo que pueden permanecer los objetos almacenados en el caché, dependiendo de nuestras necesidades, lógicamente. De modo general, si definimos un tiempo de permanencia demasiado bajo, estaremos desaprovechando una de las principales ventajas del uso de servidor proxy, mientras que si establecemos un periodo demasiado alto, también saturaremos innecesariamente la capacidad de almacenaje.

Parece una decisión razonable, en la mayoría de casos, fijar un mes de vida para los objetos del caché. Esto se logra con la instrucción:

reference_age 1 month

6.3.4. Controles de acceso

Una de las características más interesantes de este servidor proxy es la posibilidad de establecer unas reglas de control de acceso que pueden complementar perfectamente nuestro objetivo de filtrado de paquetes.

Para ello, confeccionaremos unas Listas de Control de Acceso para designar qué máquinas o redes tienen permitido, o no, acceder al servidor. Cada una de ellas tendrá asociada unas Reglas de Control que regulará esta actividad. Es decir, definimos unas listas, por una parte y establecemos unas reglas específicas para cada una de ellas. Veamoslo con un ejemplo:

Si queremos permitir el acceso al proxy para todas las máquinas de nuestra red, hemos de definir una lista que identifique a toda nuestra red local, en nuestro caso:

 acl nuestrared src 192.168.1.0/255.255.255.0

De esta forma nuestra red queda identificada para SQUID, quedando la sección de Listas de Control de Acceso con el siguiente aspecto:

#
# Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl nuestrared src 192.168.1.0/255.255.255.0

Ahora debemos permitir el acceso con una línea con la siguiente sintaxis:

http_access allow todalared

De modo que la sección Reglas de Control, debe quedar:

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow nuestrared
http_access deny all

La línea http_access allow nuestrared permite el acceso al proxy para la lista denominada nuestrared que está formada por 192.168.1.0/255.255.255.0, o sea, cualquier máquina cuya dirección IP esté comprendida entre 192.168.1.1 y 192.168.1.254

Evidentemente si la línea fuese http_access deny nuestrared no se permitiría el acceso a ninguna máquina de nuestra red local.

Veamos un ejemplo más complejo que nos mostrará las capacidades de filtrado de SQUID. Para ello, vamos a suponer que deseamos permitir el acceso a toda nuestra red, excepto a las máquinas del aula de informática. Vamos a crear un fichero de texto que contenga las direcciones IP de éstas máquinas al que llamaremos y ubicaremos en /etc/squid/informatica

192.168.1.101
192.168.1.102
192.168.1.103
192.168.1.104
192.168.1.105
192.168.1.106
192.168.1.107
192.168.1.108
192.168.1.109
192.168.1.110
192.168.1.111
192.168.1.112
192.168.1.113
192.168.1.114
192.168.1.115

Le vamos a llamar info a esta lista que hemos creado utilizando el fichero anterior.

acl info src "/etc/squid/informatica"

De modo que ahora nuestra sección de listas quedaría:

#
# Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl nuestrared src 192.168.1.0/255.255.255.0
acl info src "/etc/squid/informatica"

Y, finalmente, para conseguir nuestro objetivo, la sección de reglas quedaría:

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow nuestrared !info
http_access deny all

El secreto está en la línea http_access allow nuestrared !info donde estamos permitiendo el acceso para la lista nuestrared, o sea toda la red, excepto a las máquinas definidas en la lista info, es decir, las indicadas en el fichero /etc/squid/informatica que son las del aula de informática, tal y como pretendíamos.

6.3.5. Redireccionamiento a través de SQUID

Una posibiliad que nos interesa plantearnos es utilizar nuestro servidor proxy de modo "transparente", es decir, nuestras máquinas saldrán a la red Internet a través de él, pero de la misma forma que lo harían mediante el router ADSL. Para ello, usando iptables redireccionaremos todas las peticiones al puerto 80 de nuestra red local hasta el puerto 3128 donde escucha SQUID, la instrucción para conseguirlo es:

[root@gato root]#/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Análogamente podremos redirigir otros servicios, tal y como, se reflejó en la Sección 3.2