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.
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 |
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
En caso de que fijemos un tamaño para el directorio de caché superior a la capacidad real del disco duro, SQUID se bloqueará. |
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 |
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.
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