Você está na página 1de 4

Configuracin de un servidor proxy en LINUX usando Squid

Tabla de contenido: 1. Que es un servidor Proxy? 2. Conceptos sobre caches 3. Squid 4. Instalando Squid 5. Configuracin bsica de squid 6. Configurando los clientes 7. Controlando el acceso 8. Acerca de este documento -------------------------------------------------------------------------------1. Que es un servidor Proxy? El termino proxy significa "hacer algo en nombre de otro." En trminos de redes, un servidor proxy puede actuar en nombre de muchos clientes. Un proxy HTTP es una maquina que recibe peticiones de paginas web de otra maquina (Maquina A). El proxy obtiene la pagina solicitada y retorna el resultado a la Maquina A. El proxy puede tener un cache con las paginas solicitadas, as si otra maquina solicita la misma pagina le ser enviada la copia que reside en el cache. Eso permite un uso eficiente del ancho de banda y un menor tiempo de respuesta. Como efecto colateral; como las maquinas cliente no estn directamente conectadas al exterior, esta es una forma de incrementar la seguridad de la red interna. un proxy bien configurado puede ser tan efectivo como un buen firewall. Existen muchos servidores proxy para Linux. Una solucin muy popular es el modulo de proxy de Apache. Una implementacin mas completa y robusta de un proxy HTTP es SQUID. -------------------------------------------------------------------------------2. Conceptos sobre caches Dentro del campo de las caches, es necesario tener en cuenta de qu forma puede ser til el realizar cach y que objetos deben ser cacheados. Es totalmente inapropiado cachear por ejemplo nmeros de tarjetas de crdito, los resultados de un script ejecutado remotamente, sitios que cambian muy a menudo o incluso sitios que no desean ser cacheados. Los scripts ejecutables cgi-bin no son cacheados, las pginas que indican en las cabeceras periodos de caducidad son tenidos en cuenta, y es posible especificar con reglas extra que se debe y que no se debe cachear, y por cuanto tiempo. Para determinar la utilidad y rendimiento de la cache, es necesario tener en cuenta diversos factores. Utilizando una cache pequea (un par de gigas) se obtienen unos resultados altos (cercanos al 25%). Este espacio cachea los sitios mas habituales. Si se dobla el espacio en disco, no se dobla este porcentaje. Esto es debido a que se est intentando capturar el resto de peticiones, que con frecuencia son poco utilizadas. Una cache grande (por encima de 20 Gb) probablemente no llegar al 50%, a no ser que las pginas se mantengan durante mucho tiempo. -------------------------------------------------------------------------------3. Squid Una forma de acelerar la navegacin web es mediante la instalacin de una cach. Squid ha destacado por ser una de las mejores caches que existen, y es utilizada por miles de empresas e ISPs en todo el mundo. Se trata de un software gratuito, diseado para UNIX. De sobra es conocido que el ancho de banda de las conexiones es un bien preciado. La instalacin de una cach eficientemente configurada puede dar resultados sorprendentes. Adems, no es necesario hacer una fuerte inversin en un servidor SUN o similar, ya que Squid funciona bajo Windows NT y soporta lgicamente plataformas Intel. Squid es un software que cachea datos de Internet. Lo realiza guardando las peticiones que los usuarios realizan. En otras palabras, si una persona quiere descargar una pgina web, pide a squid que obtenga dicha pgina. Squid se conecta al servidor remoto y pide la pgina. Despus reenva la peticin al usuario, pero al mismo tiempo mantiene una copia. La prxima vez que alguien desee dicha pgina, squid simplemente la lee del disco y la transfiere al usuario de forma instantnea. Squid soporta actualmente los protocolos HTTP, FTP, GOPHER, SSL y WHAIS. No soporta otros protocolos como RealAudio, Streams y similares. -------------------------------------------------------------------------------4. Instalando Squid Para instalar squid, primero se necesita obtenerlo (obvio, no? ;-) ); esto se puede hacer descargndolo desde la pagina de squid en www.squid-cache.org. La versin estable mas reciente disponible en el momento de redactar este documento es la 2.4 STABLE1.

Por experiencia, recomiendo conseguir las versiones binarias (no solo de squid, sino en general), ya que no faltan los problemas en el momento de compilar el cdigo fuente. Podemos encontrar las distribuciones binarias; es decir, ya compiladas y listas para instalar. La nica versin binaria (en esta pagina, claro) es un RPM para Red Hat 6.0 y posteriores; si no desea ocuparse de la compilacin de cdigo fuente y no tiene esta versin de Linux, debera intentar instalarla en su sistema (actualmente, la mayora de distribuciones de Linux son compatibles con los RPM para Red Hat). Si esto no funciona, podra intentar conseguir un paquete binario compatible con su distribucin. Agotados estos recursos, o si usted es un aventurero a quien le gusta el riesgo y la adrenalina , aqu explicare como compilar el cdigo fuente e instalar squid. Para esto, asumir que el archivo descargado tiene como nombre squid-2.4.STABLE1src.tar.gz. 1. Se descomprime el archivo: % tar zxvf squid-2.4.STABLE1-src.tar.gz 2. Entramos al directorio creado con el paso anterior: % cd squid-2.4.STABLE1 3. Configuramos y compilamos squid: % ./configure --prefix=/usr/local/squid % make all El parmetro --prefix=/usr/local/squid en ./configure solo indica el directorio donde ser instalado squid (/usr/local/squid). 4. Se instala squid (con permisos de root): % make install y, eso es todo (fcil, no?). Si por alguna razn tiene problemas en alguno de los pasos anteriores, le recomiendo leer el FAQ o ingresar en las Listas de Correo de www.squid-cache.org. -------------------------------------------------------------------------------5. Configuracin bsica de squid Antes de utilizar squid, debemos configurarlo. Esto lo hacemos editando el archivo squid.conf para establecer los parmetros particulares de nuestra maquina. Esta configuracin bsica fue extrada del archivo QUICKSTART que se encuentra en el directorio en el cual se descomprimi el cdigo fuente de squid. Asumiremos que squid se instalo en el directorio /usr/local/squid, entonces deber quitar los comentarios y editar las siguientes lneas del archivo /usr/local/squid/etc/squid.conf: cache_peer Si tiene un cache padre, escrbalo aqu. Los administradores del cache padre proveen instrucciones de como hacerlo. Siempre debe verificar si tiene los permisos necesarios antes de aadir un cache padre. cache_mem Aada aqu la cantidad de memoria (memoria RAM) que ser asignada al cache. Advertencia: Squid utiliza mucha mas memoria que este valor. Regla de Oro: Si tiene N megabytes libres para Squid, escriba N/3 aqu. cache_dir /usr/local/squid/cache 100 16 256 Escriba aqu (primer numero, aqu 100) la cantidad de espacio en disco duro (en megabytes) que ser asignada al cache. acl, http_access, icp_access Listas de Control de Acceso (Access Control Lists). Son importantes porque previenen que alguien utilice sin autorizacin sus recursos de red. Para llenar el ACL "allowed_hosts", use su direccin de red (por ejemplo 192.168.10.0) y su mascara de red (por ejemplo 255.255.255.0): acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl all src 0.0.0.0/0.0.0.0 acl allowed_hosts src 192.168.10.0/255.255.255.0 http_access deny manager all http_access allow allowed_hosts http_access deny all icp_access allow allowed_hosts icp_access deny all

cache_mgr aqu va la direccin de e-mail del administrador: cache_effective_user Si debe iniciar Squid como root, encuentre un usuario y grupo seguros para ejecutarlo antes de iniciar (generalmente "nobody" y "nogroup"). No use "root", por razones de seguridad. visible_hostname El nombre del host que promocionara con el cache. Despus de editar squid.conf segn sus necesidades, ejecute Squid con las siguientes lneas de comando: % /usr/local/squid/bin/squid -z % /usr/local/squid/bin/squid Verifique en el archivo cache.log (/usr/local/squid/logs/cache.log) que todo este bien. Ntese que el mensaje "WARNING: Cannot write to swap directory" es normal la primera vez que se ejecuta Squid. Una vez Squid ha creado todos sus archivos (esto puede tomar mucho tiempo en algunos sistemas), prubelo con un cliente Web normal. Por defecto, Squid correr en el puerto 3128. Cuando tenga a Squid funcionando desde la lnea de comandos, puede configurar Linux para cargar Squid al iniciar el sistema (esto depende fundamentalmente del tipo de Linux/UNIX que usted utilice, generalmente debera modificar algo en un /etc/rc_algunacosa). -------------------------------------------------------------------------------6. Configurando los clientes La configuracin de los clientes consiste en indicar al navegador que utilice un proxy para conectarse a Internet. Veamos un ejemplo con un navegador popular: Netscape Navigator: Seleccione Preferences del men Edit. En la pgina de proxies de la seccin Advanced, seleccione Manual proxy configuration, y haga click sobre el botn View. Para cada protocolo que squid soporta (por defecto HTTP, FTP y gopher), teclee la IP o el nombre del servidor que aloja squid, junto al puerto correspondiente (por defecto el 3128). De manera similar se deben configurar otras aplicaciones clientes que deseemos que utilicen nuestra cache. -------------------------------------------------------------------------------7. Controlando el acceso Permitir o denegar el acceso a la cach es slo una de las funciones del ACL. El ACL es usado tambin para las jerarquas de caches. Por tanto, primero se define una lista ACL y despus se permite o deniega el acceso a una funcin de la cach. En la mayora de las ocasiones, esta funcin es "http_access", que permite o deniega a un navegador el acceso a squid. Usare esta funcin como un ejemplo para los casos siguientes (como "icp_access"). Squid lee las directivas de arriba a abajo, para determinar que regla aplicar, e incluso determinar si debe permitir o denegar el acceso. Por tanto, si dispone de una clase C de direcciones, y quiere permitir slo a esas mquinas acceder a la cach, utilizaremos estas directivas (asumiendo que la clase C 196.4.160.0 entera tendr acceso): acl hostpermitidos src 196.4.160.0/255.255.255.0 acl all src 0.0.0.0/0.0.0.0 http_access allow hostpermitidos http_access deny all La opcin "src" de la primera lnea es una de las opciones que se puede utilizar para decidir en que lista acl el usuario est incluido. Incluso es posible utilizar aspectos como el tiempo actual, o el sitio al que se dirigen. Para mas opciones, vea el fichero por defecto de squid (squid.conf.default). Si un usuario del rango 196.4.160.* se conecta a squid usando TCP para solicitar una URL, squid leer las lneas referentes a "http_access" (ya que es una conexin TCP y el cliente va a utilizar el mtodo HTTP para solicitar el objeto). La lectura se realiza de arriba hacia abajo, y se detiene en la primera coincidencia para decidir si permitir o denegar la peticin. En el

ejemplo anterior, squid ver que la primera lnea de "http_access" se cumple, y proceder a aplicarla. En este caso, permitir el acceso y ejecutar la peticin. Pero tengamos en cuenta el siguiente ejemplo: acl hostpermitidos src 196.4.160.0/255.255.255.0 acl all src 0.0.0.0/0.0.0.0 http_access deny all http_access allow hostspermitidos En este caso no funcionar, ya que squid aplicar la primera coincidencia (la primera lnea) y denegar el acceso. Opciones Avanzadas En el fichero de configuracin encontramos otros parmetros: acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl all src 0.0.0.0/0.0.0.0 http_access deny manager !localhost http_access allow all El campo "proto" de la primera lnea se refiere que el acl bloquea un protocolo especfico, en este caso el protocolo "cache_object". Puede utilizarse tambin otro protocolo, como "http" o "ftp". En concreto, se trata de un protocolo propio de squid. Este protocolo retorna informacin acerca de cmo est configurada la cache, o cmo se est ejecutando. Est dentro de la seccin "http_access" ya que se trata de una peticin HTTP a squid, pero en lugar de conectar a un servidor remoto es squid quien gestiona la informacin. El ejemplo anterior indica: si squid recibe una peticin intentando utilizar el protocolo "cache_object" (definido en el acl de manager), debe denegarla a no ser que provenga de localhost. De este modo, un programa que este ejecutndose en el servidor de cach puede obtener informacin del estado interno de squid, pero no una mquina del exterior. Recuerde que el carcter "!" significa NO, por lo que estamos diciendo "denegar manager NO localhost". ACLs basados en direcciones de destino Existe un caso frecuente, consistente en prohibir el acceso a una lista de sitios consideramos como "inapropiados". Squid no est optimizado para gestionar una larga lista de sitios, pero puede gestionar un nmero concreto de sitios sin problemas. acl adultos dstdomain playboy.com sex.com acl hostpermitidos src 196.4.160.0/255.255.255.0 acl all src 0.0.0.0/0.0.0.0 http_access deny adultos http_access allow hostspermitidos http_access deny all Este ejemplo indica que las URLs playboy.com o sex.com sern denegadas, ya que as lo especifica la primera lnea de la directiva "http_access". Si se piden otras URLs, lgicamente la primera lnea no es aplicable, y squid pasa a considerar la segunda y tercera. Por tanto, si el cliente se conecta dentro del rango permitido se cursar la peticin. De lo contrario, la peticin ser rechazada. Una ltima observacin, este mtodo considera exclusivamente los dominios. Para evitar conexiones especificando la IP de la mquina, debe utilizarse la directiva dsf acl. -------------------------------------------------------------------------------8. Acerca de este documento Este documento fue creado con la intencin de ser til pero absolutamente sin garanta alguna. Debe ser utilizado bajo su propio riesgo. Una gran parte (por no decir la mayor parte) de este documento fue transcrita casi literalmente del Manual de Squid bajo Windows NT escrito por Moiss Barrio Andrs de www.idesoft.com; con algunos aportes personales (como la gua de compilacin e instalacin de Squid y traduccin de algunas partes del documento QUICKSTART del cdigo fuente de squid para la configuracin bsica de Squid). Agradezco a Moiss Barrio Andrs por su excelente manual y su aporte a la comunidad (y en particular, el aporte de su Manual a la creacin de este documento, que podra considerarse derivado de aquel manual).

Você também pode gostar