Está en la página 1de 8

Servidor Proxy SQUID

Emiliano Lpez o 13 de noviembre de 2006

Indice
1. Introduccin o 2. Caracter sticas de un proxy 3. SQUID 3.1. Funcionamiento . . . . . . . . . . . . 3.2. Jerarqu de servidores . . . . . . . . a 3.3. Conguracin . . . . . . . . . . . . . o 3.3.1. Nombre del Host y Puerto . . 3.3.2. Tamao de la memoria cach n e 3.3.3. Tiempo de vida de la cach . e 3.3.4. Jerarqu de cach . . . . . . a e 3.3.5. Control de acceso . . . . . . . 3.4. Autenticacin . . . . . . . . . . . . . o 3.5. Vericacin de logs . . . . . . . . . . o 3.6. Un ejemplo simple . . . . . . . . . . 4. Trabajo Prctico a 5. Referencias 1 1 2 2 3 3 3 3 3 4 4 5 7 7 7 8

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

1.

Introduccin o

Un servidor proxy es un software que realiza tareas de servidor intermediario. El caso ms comn es a u utilizarlo para compartir internet en mbitos donde se posee una unica conexin a internet y varias a o 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 travs e del proxy y es ste en realidad el que hace las conexiones hacia la web y luego entrega las respuestas e 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 desempeo de una red consumiendo menos recursos, debido que frente a un n nuevo pedido de un sitio que ya ha sido realizado, en vez de generar trco hacia internet se entrega a el sitio cuyo contenido se encuentra almanecado en el servidor.

Figura 1: conexiones sin proxy

Figura 2: conexiones con proxy

3.

SQUID

SQUID es un software de libre distribucin para realizar la tarea de un servidor proxy con prestacioo nes muy profesionales. Suele acompaar a las distribuiciones ms habituales, aunque tambin puede n a e obtenerse de su sitio ocial (http://www.squid-cache.org/). No se recomiendan versiones previas a la 2.4, ya que presentan fallas de seguridad, actualmente la versin estable es la 2.6 STABLE. o SQUID puede funcionar como Servidor Intermediario (Proxy) y cach de contenido de Red para los e protocolos HTTP, FTP, GOPHER y WAIS, Proxy de SSL, cach transparente, cach de consultas e e DNS y otras muchas ms como ltracin de dominios y control de acceso por IP y por usuario. Provee a o potentes opciones para tener un completo control sobre los sitios que se visitan, asi como para ltrar, permitir o bloquear el acceso de determinados equipos, ips, dominios, etc.

3.1.

Funcionamiento
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 ms solicitados permanecen en el cach sin importar su tamao, de modo a e n que un objeto grande que se solicite con mayor frecuencia impedir que se pueda hacer cach de a e objetos pequeos que se soliciten con menor frecuencia. n 2

SQUID realiza el almacenamientos de objetos utilizando diferentes algoritmos:

GDSF: Optimiza la eciencia por objeto, manteniendo en el cach los objetos pequeos ms e n a frecuentemente solicitados; descarta del cach objetos grandes que sean solicitado con frecuencia. e

3.2.

Jerarqu de servidores a

SQUID permite especicar otros servidores intermediarios, utilizando la cach en una jerarqu como e a padres o como hermanos, dependiendo de la topolog de la red estos pueden operar en cascada a (padres) o en paralelo (hermanos).

Figura 3: jerarqu de cachs a e

3.3.

Conguracin o

La conguracin del servidor proxy SQUID se realiza en un unico archivo de texto plano generalmente o ubicado en /etc/squid/squid.conf. La sintaxis en este archivo debe comenzar en la primer columna, sin dejar espacios. 3.3.1. Nombre del Host y Puerto

La primera conguracin bsica debe ser el nombre y los puertos del host. Por defecto SQUID escucha o a en el puerto 3128 y utiliza el 3130 para comunicarse mediante ICP (Internet Cache Protocol) con otras caches. visible_hostname mysquid http_port 3128 icp_port 3130 3.3.2. Tama o de la memoria cach n e

Aqui se ja el el directorio y el espacio que se utilizar del disco rigido para almacenar las pginas. a a Por defecto SQUID usar 100 MB, y lo almacenar por defecto en 16 subdirectorios de primer nivel a a y en 256 subdirectorios de segundo nivel: cache_dir ufs /var/cache/squid 100 16 256 3.3.3. Tiempo de vida de la cach e

Podemos congurar el tiempo que los objetos permanecern almacenados en el servidor. a reference_age 1 month 3

3.3.4.

Jerarqu de cach a e

La sintaxis para la consulta de caches es la siguiente: cache_peer <ip-host> <tipo> <http_port> <icp_port> [opciones] Aqu se especica la ip del host servidor, el tipo (si es padre o hermano, parent-sibling), en qu puerto e se realizarn los pedidos y el dilogo ICP. No necesariamente se deben especicar opciones. Las ms a a a utilizadas son las siguientes: default Si es un servidor padre que no dialoga mediante ICP y es utilizado como ultimo recurso. proxy-only No almacena localmente ninguna respuesta. no-query No utiliza ICP con ese servidor. 3.3.5. Control de acceso

Es necesario establecer listas de control de acceso (acl) que denan una red o bien ciertas mquinas a en particular. A cada acl se le asignar una regla de control de acceso (acr) que funcionar bloa a queando o permitiendo el acceso a travs de squid. Comunmente las acl se denen y aplican (acr) de e la siguiente manera: acl [nombre de la lista] src/dst [ips que componen la lista] http_access allow/deny [nombre de la lista] Para el siguiente ejemplo, la red 192.168.0.0/24 llamada LAN1 tendr permitido acceder al proxy: a acl LAN1 src 192.168.0.0/255.255.255.0 http_access allow LAN1 Adems de direcciones ip, en las acl es posible denir nombres de dominios y puertos utilizando a dstdomain y port de la siguiente manera: acl educativas dstdomain edu.ar acl diario dstdomain clarin.com acl safeports port 443 http_access deny diario http_access allow educativas http_access allow safeports Es importante tener en cuenta que las acl educativas y diario no hubiesen coincidido si se visitaban sitios como ch.unl.edu.ar o deportes.clarin.com. Para bloquear tambin los subdominios se debe e utilizar el punto (.) como comod antes del dominio: n acl educativas dstdomain .edu.ar acl diario dstdomain .clarin.com Existe una acl que debe estar congurada para que squid funcione: acl all src 0.0.0.0/0.0.0.0 Esta acl, a diferencia de las dems debe tener obligatoriamente la etiqueta all a Coincidencia en las acl Para que se produzca una coincidencia (match) en una acl, se utiliza la funcin OR, para el sio guiente ejemplo: acl ips src 192.168.0.10 192.168.0.11 192.168.0.16 , cuando la ip origen sea 192.168.0.11 la coincidencia se dar luego de la segunda direccin ip, y la acl ser considerada a o a verdadera. Por esta razn, se recomienda incluir las opciones ms comunes al comienzo, para acelerar o a el proceso de evaluacin. o 4

Coincidencias en las acr Para que una acr coincida se utiliza la funcin AND. Para el ejemplo: http_access allow educativas safeport o debe accederse a sitios .edu.ar al puerto 443 para que sea permitido el acceso. Permisos para ICP En las reglas de control de accesso tambin se debe otorgar permiso al dilogo ICP con la directiva e a icp_access: icp_access [allow|deny] [nombre_acl] Parmetros extras a Otro s mbolo reservado consiste en la utilizacin del signo de admiracin de cierre: ! .Se utiliza como o o negacin de una determinada acl, para el ejemplo, !LAN1 signica que el acceso a SQUID es para o 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 rewall, debe poder dialogar con sus servidores internos directamente sin embargo para los pedidos hacia serviodores externos deben dirigirse hacia un rewall o proxy. En este sentido, squid no se conecta directamente a sitios fuera del rewall. Para realizar esto: acl sitios_internos dstdomain .fich.unl.edu.ar never_direct allow !sitios_internos 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 opcin prefer_direct on o Dos acl y acr que siempre son denidas por cuestin de seguridad son : o acl localhost src 127.0.0.1/255.255.255.255 acl admin proto cache_object http_access allow admin localhost http_access deny admin Se utilizan para permitir la administracin de los objetos cacheados unicamente al localhost. o

3.4.

Autenticacin o

SQUID permite realizar autenticacin mediante diferentes mtodos, Basic, Digest y NTLM. Estos o e mtodos especican cmo SQUID recive el nombre de usuario y la clave desde los clientes. Por cada e o mtodo, SQUID provee varios mdulos de autenticacin (helpers) que sern los encargados de realizar e o o a la validacin (NCSA, PAM, SASL, YP y SMB). Aqu veremos cmo congurar Basic utilizando el o o mdulo NCSA. o Creacin de usuarios o Desde la linea de comandos, creamos un archivo en el directorio /etc/squid/claves: #touch /etc/squid/claves y luego los usuarios: # htpasswd2 /etc/squid/claves usuario1 Luego se solicitar la clave y la conrmacin de la misma. Hay que tener en cuenta que htpasswd2 a o debe estar instalado (pertenece a Apache2).

Conguracin o En el archivo /etc/squid/squid.conf se debe congurar el tipo de autenticacin (basic), la ruta del o mdulo NCSA y la ruta del archivo que contiene los usuarios y sus passwords. o 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 a y la clave: acl con_clave proxy_auth REQUIRED Para comprender cmo se utiliza la acl que denimos veremos un ejemplo. Si se desea que todas las o personas que accedan al sitio www.ociosos.com ingresen un usuario y clave, y que para el resto de las pginas no haya restriccin alguna: a o acl all src 0.0.0.0/0.0.0.0 acl ocio dstdomain www.ociosos.com acl con_clave proxy_auth REQUIRED http_access allow ocio con_clave http_access allow all 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 combinacin de diferentes acl nos otorga gran felxibilidad, teniendo en cuenta que agregando a o 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 algn rango horario, etc. u Autenticacin por grupos o La autenticacin que vimos en el punto anterior tiene una deciencia, supongamos que quisieramos o subdividir un cierto grupo de usuarios para que tengan diferentes permisos de acceso a sitios web. Por ejemplo, el grupo de comunicacin deber poder acceder a leer los diarios, no as el grupo de desarrollo o a que solo tiene permitido ingresar al sitio www.lawebdelprogramador.com. Con lo visto anteriormente no podr amos hacerlo ya que tenemos todos los usuarios y sus correspondientes claves en un mismo archivo. Para solucionar este inconveniente deber amos realizar pequeas modicaciones a las listas de n contro de acceso. La denicin de los usuarios con sus claves ser exactamente igual que en el punto o a anterior, a diferencia que ahora podremos denir en un nuevo archivo los usuarios que pertenecen a un determinado grupo. Con el siguiente ejemplo quedar mas claro. a acl acl acl acl acl acl all src 0.0.0.0/0.0.0.0 diario dstdomain www.litoral.com.ar web_programar dstdomain www.lawebdelprogramador.com con_clave proxy_auth REQUIRED comunicacion proxy_auth /etc/squid/comunicacion desarrolladores proxy_auth /etc/squid/desarrolladores

http_access allow desarrolladores web_programar http_access allow comunicacion diario Cada usuario que pertenezca a un grupo deber encontrarse en una unica linea ya sea para el grupo de a comunicacin ( /etc/squid/comunicacion) como para el grupo de desarrolladores (/etc/squid/desarrolladores o ). Y tambin deber estar creado mediante el comando htpasswd2 al igual que en el punto anterior e a en /etc/squid/claves. En conclusin, todos los usuarios por ms que pertenezcan a diferentes grupos deben ser creados en o a un archivo utilizando htpasswd2, la divisin de grupos se realizar guardando los nombres de los o a usuarios en diferentes archivos, uno por linea y luego se aplicarn como se vio en el ejemplo mediante a las acl y las reglas de control de acceso (http_access ).

3.5.

Vericacin de logs o

SQUID almacena en el directorio /var/log/squid informacin sobre los accesos, dilogos con otros o a servidores SQUID, etc. Existen varios archivos de logs, el que nos brinda informacin sobre el acceso o 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 ms utilizadas son SARG (Squid Analysis Report Grpahics) y Webalizer, las mismas generan a reportes grcos con estad a sticas en un archivo html. Son una excelente herramienta para llevar un control detallado sobre la utilizacin de la navegacin web. o o

3.6.

Un ejemplo simple

Una servidor proxy simple podr denirse de la siguiente manera: a Listas de control de acceso:

#---parametros globales---# visible_hostname squid1 http_port 3128 icp_port 3130 cache_dir ufs /var/cache/squid 400 16 256 #---consulta de cachs---# e #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 #--- Reglas de control de acceso---# http_access allow manager localhost http_access deny manager never_direct allow !webserver http_access allow todalared http_access deny all icp_access allow all

4.

Trabajo Prctico a

Para realizar el prctico nos basaremos en la topolog de la siguiente gura. En donde se congua a rar tres servidores SQUID, uno como Parent y dos como Sibling a

Figura 4: Estructura Jerrquica a 1. Compruebe la conectividad entre tres hosts mediante el comando ping. 2. Congure tres servidores utilizando el puerto 3128 para pedidos http y el puerto 3130 para la comunicacin entre servidores. o 3. Conguracin del servidor Parent o 3.1 Este servidor debe realizar los pedidos al proxy 192.168.0.120 sin utilizar ICP, tenga en cuenta que para evitar pedidos ICP debe utilizar la opcin no-query. o 3.2 Permita el acceso de toda la red 10.0.2.0/24 4. Conguracin de los servidores Sibling o 4.1 Estos servidores deben realizar los pedidos al servidor Parent 4.2 Entre ambos servidores Siblings deben consultarse sus caches sin almacenar localmente los objetos ya almacenados en el hermano (proxy-only). 5. Compruebe el funcionamiento de los servidores visitando diferentes sitios y verique los logs. 6. Bloquee el acceso al dominio unl.edu.ar y compruebe su funcionamiento. 7. Bloquee el accesso de toda la red 10.0.2.0/24 y compruebe su funcionamiento.

5.

Referencias
OReilly - Squid The Denitive 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/

También podría gustarte