Escolar Documentos
Profissional Documentos
Cultura Documentos
Emiliano López
13 de noviembre de 2006
Índice
1. Introducción 1
2. Caracterı́sticas de un proxy 1
3. SQUID 2
3.1. Funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.2. Jerarquı́a de servidores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.3. Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.3.1. Nombre del Host y Puerto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.3.2. Tamaño de la memoria caché . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.3.3. Tiempo de vida de la caché . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.3.4. Jerarquı́a de caché . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.3.5. Control de acceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.4. Autenticación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.5. Verificación de logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.6. Un ejemplo simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4. Trabajo Práctico 7
5. Referencias 8
1. Introducción
Un servidor proxy es un software que realiza tareas de servidor intermediario. El caso más común es
utilizarlo para compartir internet en ámbitos donde se posee una única conexión a internet y varias
computadoras. El servidor proxy se conecta directamente a internet y por otra interfaz a la red interna,
de modo que todos los pedidos a internet de las computadoras pertenecientes a la LAN pasan a través
del proxy y es éste en realidad el que hace las conexiones hacia la web y luego entrega las respuestas
a los hosts correspondientes.
2. Caracterı́sticas de un proxy
Una de las funciones principales de un servidor proxy es actuar como cache de contenido principalmente
web (http). Esto mejora el desempeño de una red consumiendo menos recursos, debido que frente a un
nuevo pedido de un sitio que ya ha sido realizado, en vez de generar tráfico hacia internet se entrega
el sitio cuyo contenido se encuentra almanecado en el servidor.
1
Figura 1: conexiones sin proxy
3. SQUID
SQUID es un software de libre distribución para realizar la tarea de un servidor proxy con prestacio-
nes muy profesionales. Suele acompañar a las distribuiciones más habituales, aunque también puede
obtenerse de su sitio oficial (http://www.squid-cache.org/). No se recomiendan versiones previas a la
2.4, ya que presentan fallas de seguridad, actualmente la versión estable es la 2.6 STABLE.
SQUID puede funcionar como Servidor Intermediario (Proxy) y caché de contenido de Red para los
protocolos HTTP, FTP, GOPHER y WAIS, Proxy de SSL, caché transparente, caché de consultas
DNS y otras muchas más como filtración de dominios y control de acceso por IP y por usuario. Provee
potentes opciones para tener un completo control sobre los sitios que se visitan, asi como para filtrar,
permitir o bloquear el acceso de determinados equipos, ip’s, dominios, etc.
3.1. Funcionamiento
SQUID realiza el almacenamientos de objetos utilizando diferentes algoritmos:
LRU (polı́tica por defecto): Se eliminan de la cache los objetos que no han sido accedidos en
mucho tiempo, manteniendo en la cache los que han sido utilizado mas recientemente.
LFUDA: Los objetos más solicitados permanecen en el caché sin importar su tamaño, de modo
que un objeto grande que se solicite con mayor frecuencia impedirá que se pueda hacer caché de
objetos pequeños que se soliciten con menor frecuencia.
2
GDSF: Optimiza la eficiencia por objeto, manteniendo en el caché los objetos pequeños más
frecuentemente solicitados; descarta del caché objetos grandes que sean solicitado con frecuencia.
3.3. Configuración
La configuración del servidor proxy SQUID se realiza en un único archivo de texto plano generalmente
ubicado en /etc/squid/squid.conf. La sintaxis en este archivo debe comenzar en la primer columna,
sin dejar espacios.
visible_hostname mysquid
http_port 3128
icp_port 3130
reference_age 1 month
3
3.3.4. Jerarquı́a de caché
La sintaxis para la consulta de caches es la siguiente:
cache_peer <ip-host> <tipo> <http_port> <icp_port> [opciones]
Aquı́ se especifica la ip del host servidor, el tipo (si es padre o hermano, parent-sibling), en qué puerto
se realizarán los pedidos y el diálogo ICP. No necesariamente se deben especificar opciones. Las más
utilizadas son las siguientes:
default Si es un servidor padre que no dialoga mediante ICP y es utilizado como último recurso.
proxy-only No almacena localmente ninguna respuesta.
no-query No utiliza ICP con ese servidor.
Para el siguiente ejemplo, la red 192.168.0.0/24 llamada LAN1 tendrá permitido acceder al proxy:
Además de direcciones ip, en las acl es posible definir nombres de dominios y puertos utilizando
dstdomain y port de la siguiente manera:
Es importante tener en cuenta que las acl educativas y diario no hubiesen coincidido si se visitaban
sitios como fich.unl.edu.ar o deportes.clarin.com. Para bloquear también los subdominios se debe
utilizar el punto (.) como comodı́n antes del dominio:
Existe una acl que debe estar configurada para que squid funcione:
acl all src 0.0.0.0/0.0.0.0
Esta acl, a diferencia de las demás debe tener obligatoriamente la etiqueta all
4
Coincidencias en las acr
Para que una acr coincida se utiliza la función AND. Para el ejemplo: http_access allow educativas safeport
debe accederse a sitios .edu.ar al puerto 443 para que sea permitido el acceso.
Parámetros extras
Otro sı́mbolo reservado consiste en la utilización del signo de admiración de cierre: ! .Se utiliza como
negación de una determinada acl, para el ejemplo, !LAN1 significa que el acceso a SQUID es para
todos los que no formen parte de LAN1.
Una directiva importante es never_direct, utilizada en conjunto con una acl para aquellos pedidos
que nunca deben ser enviados directamente hacia el servidor original. Por ejeplo que squid se encuentre
ubicado detras de un firewall, debe poder dialogar con sus servidores internos directamente sin embargo
para los pedidos hacia serviodores externos deben dirigirse hacia un firewall o proxy. En este sentido,
squid no se conecta directamente a sitios fuera del firewall. Para realizar esto:
SQUID por defecto intenta reenviar los pedidos a un parent o sibling, si se desea que intente conectarse
directamente con el servidor debe habilitarse la opción prefer_direct on
Dos acl y acr que siempre son definidas por cuestión de seguridad son :
3.4. Autenticación
SQUID permite realizar autenticación mediante diferentes métodos, Basic, Digest y NTLM. Estos
métodos especifican cómo SQUID recive el nombre de usuario y la clave desde los clientes. Por cada
método, SQUID provee varios módulos de autenticación (helpers) que serán los encargados de realizar
la validación (NCSA, PAM, SASL, YP y SMB). Aquı́ veremos cómo configurar Basic utilizando el
módulo NCSA.
Creación de usuarios
Desde la linea de comandos, creamos un archivo en el directorio /etc/squid/claves: #touch /etc/squid/claves
y luego los usuarios:
5
Configuración
En el archivo /etc/squid/squid.conf se debe configurar el tipo de autenticación (basic), la ruta del
módulo NCSA y la ruta del archivo que contiene los usuarios y sus passwords.
auth_param basic program /usr/sbin/ncsa_auth /etc/squid/claves
Luego se debe crear una acl que al ser invocada en una regla de control de accesso solicitará el usuario
y la clave: acl con_clave proxy_auth REQUIRED
Para comprender cómo se utiliza la acl que definimos veremos un ejemplo. Si se desea que todas las
personas que accedan al sitio www.ociosos.com ingresen un usuario y clave, y que para el resto de las
páginas no haya restricción alguna:
Si en cambio, quisieramos que para navergar por el proxy todos los usuarios de la red tengan que
ingresar usuario y clave, dentro de las reglas de control de accesso basta con poner:
http_access allow all con_clave
La combinación de diferentes acl nos otorga gran felxibilidad, teniendo en cuenta que agregando a
cualquier regla de control de accesso la acl con_clave obligamos a validar contra SQUID para permitir
el acceso a un determinado sitio, ip, en algún rango horario, etc.
Cada usuario que pertenezca a un grupo deberá encontrarse en una única linea ya sea para el grupo de
comunicación ( /etc/squid/comunicacion) como para el grupo de desarrolladores (/etc/squid/desarrolladores
). Y también deberá estar creado mediante el comando htpasswd2 al igual que en el punto anterior
en /etc/squid/claves.
En conclusión, todos los usuarios por más que pertenezcan a diferentes grupos deben ser creados en
un archivo utilizando htpasswd2, la división de grupos se realizará guardando los nombres de los
usuarios en diferentes archivos, uno por linea y luego se aplicarán como se vio en el ejemplo mediante
las acl y las reglas de control de acceso (http_access ).
6
3.5. Verificación de logs
SQUID almacena en el directorio /var/log/squid información sobre los accesos, diálogos con otros
servidores SQUID, etc. Existen varios archivos de logs, el que nos brinda información sobre el acceso
al servidor es access.log. Cuando se entrega a un cliente un objeto que se encontraba almacenado, se
produce un HIT y si el objeto debe ser consultado hacia internet entonces es un MISS.
El analisis de los logs por lo general se realiza con herramientas de software independientes de SQUID.
Dos de las más utilizadas son SARG (Squid Analysis Report Grpahics) y Webalizer, las mismas generan
reportes gráficos con estadı́sticas en un archivo html. Son una excelente herramienta para llevar un
control detallado sobre la utilización de la navegación web.
#---parametros globales---#
visible_hostname squid1
http_port 3128
icp_port 3130
cache_dir ufs /var/cache/squid 400 16 256
#---consulta de cachés---#
#cache_peer <host> <type> <http_port> <icp_port> <options>
cache_peer 192.168.1.252 parent 3128 7 no-query default
cache_peer 192.168.1.108 sibling 3128 3130 proxy-only
#--- ACL---#
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 webserver dst 192.168.1.10/255.255.255.255
acl todalared src 192.168.1.0/255.255.255.0
4. Trabajo Práctico
Para realizar el práctico nos basaremos en la topologı́a de la siguiente figura. En donde se configu-
rará tres servidores SQUID, uno como Parent y dos como Sibling
7
Figura 4: Estructura Jerárquica
5. Referencias
O’Reilly - Squid The Definitive Guide 2004
Squid Web Proxy Cache - www.squid-cache.org
The Linux Document Project - http://es.tldp.org
ViSOLVE - www.visolve.com/squid/
SUSE LINUX - www.suse.com/training
Linux Para Todos - www.linuxparatodos.net
SARG - http://sarg.sourceforge.net/sarg.php
Webalizer - http://www.mrunix.net/webalizer/