Instalación y configuración básica de Squid

 

Squid es un conocido proxycache que se utiliza sobre todo con los protocolos HTTP y HTTPS. Soporta diferentes modos de funcionamiento y cuenta con muchas características, pero aquí únicamente se va a exponer una pequeña introducción a sus funciones básicas.

 

Instalación

La instalación ya incluye un fichero de configuración funcional (/etc/squid3/squid.conf) en el que únicamente es necesario ajustar algunos detalles.

  1. La directiva http_port: Sirve para indicar el puerto en el que Squid aceptará peticiones, por defecto tiene el valor 3128 y yo suelo configurar en el puerto 8080 (que según /etc/services corresponde a http-alt).
  2. La directiva cache_dir: Que tiene por objeto indicar el directorio que se utilizará para almacenar la cache en disco, su tamaño máximo y su tipo. Pueden utilizarse varias directivas cache_dir para que Squid gestione diferentes caches repartiendo la carga entre todas. Por defecto en las versiones actuales viene desactivada la cache en disco.
  3. La directiva cache_mem. Que indica la cantidad de memoria principal que Squid utilizará para cachear objetos. El valor por defecto es 256 MB y este valor se puede ajustar en función de las características de la máquina. Por supuesto aumentar su tamaño aumentará las opciones de obtener aciertos de cache (cache hit), pero nunca se debe ampliar hasta el punto que la máquina se vea obligada a utilizar memoria virtual.

 

ACLs y control de acceso

El sistema de controles de acceso de Squid está basado en ACLs. Es muy flexible y completo pero conviene tener claros algunos conceptos para poder utilizarlo.

Según nos informa la propia sección de la documentación de Squid relacionada con el control de acceso, se utilizan dos elementos:

  • Elementos ACL: especifican la concordancia con alguna propiedad de las peticiones que se realizan al proxy. Por ejemplo, la dirección IP del cliente (src), o el dominio de destino (dstdomain). Hay diferentes tipos que se pueden utilizar, su listado y descripción se encuentra al consultar la documentación de la directiva acl.
  • Listas de acceso: Consisten en una acción allow o deny seguida de uno o varios elementos ACL.

 

Cuando Squid arranca se carga en memoria la configuración a utilizar, y se tiene en cuenta para permitir o denegar el acceso a cada petición. En este sentido es muy importante observar que las listas de acceso tienen orden, y cada petición se valida con cada una de ellas hasta encontrar una coincidencia. Momento en el que se permite o deniega y se ignoran las siguientes listas de acceso.

Atención: Cuando una petición llega a la última lista de acceso sin que se haya producido una coincidencia, entonces la acción por defecto que se aplica a la solicitud es lo contrario de lo que especifique la última lista de acceso. Por eso, normalmente se recomienda incluir como última lista de acceso algo explícito como http_access deny all.

Ejemplo:

Las líneas acl corresponden a definiciones de elementos ACL. Conviene observar que se combinan con la operación lógica OR, de manera que el elemento Safe_ports coincide con peticiones que se dirijan a alguno de estos puertos: 80, 21, 443, 70, 210, 1025-65535, 280, 488, 591, 777.

Las líneas http_access <deny|allow> corresponden a listas ACL. Indican una acción (permitir o denegar) y utilizan la operación lógica AND para combinar sus elementos cuando son múltiples.

Es decir, la línea:

Deniega el acceso a aquellas solicitudes que coinciden con el elemento CONNECT Y no coincidan con el elemento SSL_Ports.

Para permitir el acceso a los clientes que se encuentran en la LAN del centro, es necesario descomentar la línea:

Y después permitir el acceso a los clientes locales:

 

Convertir el timestamp del fichero de registro de Squid en otro formato

El fichero de registro para los accesos a Squid (/var/log/squid3/access.log) guarda un timestamp para cada petición en formato: <unix timestamp>.<centésimas de segundo>.

Si se desea visualizar la marca temporal de cada acceso en otro formato, se puede emplear:

 

Squid como proxy transparente

El modo transparente permite que los navegadores utilicen el proxy de manera automática aún cuando no han sido configurados para ello. Únicamente funciona para el protocolo HTTP, con el protocolo HTTPS debe configurarse de manera explícita el uso del proxy o bien utilizar técnicas que comprometen la confidencialidad extremo a extremo.

Montar un proxy transparente para HTTP implica:

  1. Tener acceso a la puerta de enlace que utilizan los clientes para acceder a Internet.
  2. En dicha puerta de enlace, utilizar iptables para redirigir las peticiones que tienen por destino el puerto TCP 80 a Squid.
  3. Haber configurado en Squid un puerto de escucha en modo transparente.

De este modo, cuando los ordenadores de los clientes creen estar accediendo a los servidores web en realidad están alcanzando Squid, que sigilosamente tramita sus peticiones.

Así es que, se puede configurar Squid para que escuche en dos puertos. El 8080 en modo explícito (para configurar en los navegadores) y el 3128 en modo transparente.

Después, en la puerta de enlace será necesario activar el reenvío de paquetes (por ejemplo en /etc/sysctl.conf) y utilizar una regla de iptables para redirigir el tráfico. Por ejemplo, para redirigir el tráfico que entra por alguna interfaz eth, y tiene por destino el puerto 80 TCP de alguna máquina que no está en nuestra red podemos hacer:

 

Más información:

 

facebook Instalación y configuración básica de Squidtwitter Instalación y configuración básica de Squidgoogle Instalación y configuración básica de Squiddiggit Instalación y configuración básica de Squidpinterest Instalación y configuración básica de Squidlinkedin Instalación y configuración básica de Squidprint Instalación y configuración básica de Squidemail Instalación y configuración básica de SquidSi te gusto, comparte el articulo.

Artículos Relacionados

Agregar comentario


*

Recibe nuestro newsletter

Suscribete a nuestro newsletter y mantente informado con nuestros últimos artículos, noticias y más. Todo completamente gratis.