17.3. Servidor Proxy_ Squid

download 17.3. Servidor Proxy_ Squid

of 15

Transcript of 17.3. Servidor Proxy_ Squid

  • 5/8/2018 17.3. Servidor Proxy_ Squid

    1/15

    17.3. Servidor proxy: Squid http://www.cez.com.pe/Linux/manual suse linux 9.l!suselinux-adming ...

    SUSE LlNUX - Manual de AdmlnlstraclenCapitulo 17. Internet 117.3. Servidor proxy: Squid17.2. Configuraci6n de una conexi6nADSL Capitulo 18. Seguridad en la red

    17.3. Servidor proxy: SquidEl cache proxy por excelencia para plataformas Linux/UNIX es Squid, del que veremos comorealizar su configuracion, que especificaciones requerira el sistema donde 10 vayamos a instalar,como llevar a cabo la configuracion de un servidor proxy transparente y, finalmente, como obtenerestadisticas sobre el uso del cache con la ayuda de programas como Calamaris y cachemgr 0 comoutilizar la aplicacion squidGuard para realizar filtrado de paginas web.17.3.1. l.Que es un cache proxy?Squid se comporta como un cache proxy: esto es, aetna como un agente que recibe peticiones declientes (en este caso navegadores web) y pasa estas peticiones al proveedor de servicios apropiado.Cuando los datos llegan de nuevo al agente, este almacena una copia de los datos en un cache dedisco.Las ventajas de este sistema aparecen cuando varios c1ientes intentan acceder a los mismos datos:ya no hara falta ir a buscarlos otra vez a Internet, sino que se serviran directamente desde el cachede disco. De esta forma, los usuarios se benefician de un ahorro importante del volumen detransferencias en red.

    [Tip] SugerenciaSquid ofrece ventajas como la posibilidad de intercomunicarjerarquias de servidores proxys para repartir la carga entre ellos 0establecer estrictas reglas de control de acceso para los c1ientes delas redes que quieran acceder al proxy. Ademas, con la ayuda deotras aplicaciones es posible controlar el acceso a determinadaspaginas web u obtener estadisticas sobre cuales son las webs masvisitadas, con que frecuencia los usuarios se conectan, etc.

    Squid no es un proxy generico, Aetna como proxy entre conexiones via HTTP y soporta tambienlos protocolos FTP, Gopher, SSL y WAIS, pero no soporta otros protocolos de Internet como porejemplo Real Audio, News 0 videoconferencia. Squid solo soporta el protocolo UDP para realizarcomunicaciones entre diferentes caches, con 10 que muchos programas multimedia quedaranigualmente exc1uidos.17.3.2. Informacion general sobre caches proxy17.3.2.1. Squid y seguridadTambien es posible emplear Squid junto con un cortafuegos para proteger una red interna delexterior mediante un cache proxy. Exceptuando a Squid, el cortafuego impide a todos los c1ientesestablecer conexiones a servicios externos, haciendo que sea el proxy el que establezca todas lascomunicaciones con la World Wide Web.

    1 de 15 15106/2011 02:21 p.m.

    http://www.cez.com.pe/Linux/manualhttp://www.cez.com.pe/Linux/manual
  • 5/8/2018 17.3. Servidor Proxy_ Squid

    2/15

    17.3. Servidor proxy: Squid http://www.cez.com.pe/Linux/manual suse linux 9.l!suselinux-adming ...

    Si la configuracion del cortafuegos inc1uye una zona desmilitarizada (DMZ), es alli donde seutilizara el servidor proxy. En ese caso, es importante que todos los ordenadores de la DMZ enviensus archivos de registro (0 logfiles) a ordenadores dentro de la red segura.En el apartado 17.3.6, "Configuracion de un proxy transparente" se describe un metodo deimplementar un proxy "transparente".

    17.3.2.2. Caches multinivelEs posible configurar varios proxys para que cooperen intercambiando objetos entre enos. De estaforma se reduce la carga total del sistema y se aumenta la probabilidad de que el objeto seencuentre ya en la red local. Es posible configurar inc1uso jerarquias de caches, de forma que sepueda pedir paginas a caches del mismo nivel 0 enviar peticiones a otros proxys de jerarquia masalta para que pidan las paginas a otros caches existentes en la red 0 las obtengan directamente de lafuente.Elegir una buena topologia para los caches es muy importante para no acabar creando mas traficodel que ya habia en la red antes de instalar los caches. Por ejemplo, en el caso de una red local muyextensa conviene configurar un servidor proxy para cada subred y conectar estos a un proxy dejerarquia superior conectado a su vez al cache proxy del ISP.Toda esta comunicacion se neva a cabo mediante el protocolo ICP (Internet Cache Protocol)basado en UDP. Las transferencias de datos entre la mayorfa de caches se realizan mediante HTTP,protocolo basado en TCP.Para encontrar el servidor mas apropiado desde el que obtener un objeto, un cache envia unapeticion ICP a sus proxys vecinos. Estos le enviaran respuestas ICP con codigo "HIT", si el objetose encuentra efectivamente alH, 0 bien "MISS" en caso contrario. En caso que haya varios HIT, elproxy se decidira por un servidor en especial en funcion de factores como la velocidad de respuestao la proximidad, entre otros. Si las respuestas de los proxys vecinos no son satisfactorias, lapeticion se realizara al cache principal.

    [Tip] SugerenciaPara evitar duplicaciones de los objetos en varios caches en la red seutilizan tambien protocolos ICP como CARP (Cache Array RoutingProtocol) 0HTCP (Hyper-Text Cache Protocol). Cuantos masobjetos tengamos en la red, mayor sera la posibilidad que este el quebuscamos.

    17.3.2.3. Objetos cacheados en InternetNo todos los objetos disponibles en la red son estaticos. Existen paginas generadas dinamicamentepor CGIs, contadores de visitantes 0 bien documentos que inc1uyen SSL para codificar el contenidoy hacerlo mas seguro. Por esos motivos se considera este tipo de objetos como no cacheables, yaque cada vez que se accede a enos ya han cambiado.Pero para todos los demas objetos que se guardan en el cache existe el problema de cuanto tiempodeben quedarse alli, Para determinarlo se asignan diferentes estados a los objetos del cache.Los servidores web y los caches proxy controlan el estado de un objeto afiadiendo cabeceras comoLast modified (ultima modificacion) 0 Expires (expira) y la fecha correspondiente. Tambien se

    de 15 15106/2011 02:21 p.m.

    http://www.cez.com.pe/Linux/manualhttp://www.cez.com.pe/Linux/manual
  • 5/8/2018 17.3. Servidor Proxy_ Squid

    3/15

    17.3. Servidor proxy: Squid http://www.cez.com.pe/Linux/manual suse linux 9.l!suselinux-adming ...

    utilizan otras cabeceras para especificar los objetos que no deben cachearse.Nonnalmente, los objetos desapareceran antes del cache por la falta de espacio en el disco. Seutiliza algoritmos para sustituir objetos en el cache, como el LRU (Last Recently Used) que consisteen sustituir los objetos menos utilizados por nuevos.17.3.3. Requerimientos del sistemaLo mas importante es cuantificar la carga que va a tener que soportar nuestro sistema. Para esto esimportante fijarse mas en los picos de carga del sistema que en la media total, ya que los picospueden llegar a ser varias veces la media del dia. En caso de duda siempre es mucho mejorsobreestimar los requerimientos del sistema, ya que un Squid trabajando allimite de su capacidadpuede repercutir negativamente en el funcionamiento de los servicios.En las siguientes secciones se explican en orden de importancia los distintos factores del sistema.17.3.3.1. Discos durosCuando se trata de caches, la velocidad es un parametro importantisimo. En los discos duros esteparametro se mide mediante su "tiempo medio de acceso" en milisegundos, que debe ser 10 masbajo posible. Para lograr una velocidad elevada se recomienda utilizar discos duros rapidos,Debido a que en la mayoria de los casos Squid lee 0 escribe pequeiios bloques del disco duro, eltiempo de acceso del disco duro es mas importante que su capacidad de transferencia de datos.Precisamente en este contexto muestran su valia los discos duros con una alta velocidad derotaci6n, ya que penniten un posicionamiento mas rapido de la cabeza de lectura. Hoy en dia, losdiscos duros SCSI de mayor rapidez pueden alcanzar tiempos de acceso inferiores a 4milisegundos.Otra posibilidad para aumentar la velocidad consiste en el uso paralelo de varios discos duros 0 deuna estructura RAID.17.3.3.2. Tarnano del cache de discoDepende de varios factores. En un cache pequeiio la probabilidad de un HIT (el objeto ya seencuentre en el cache) sera pequeiia, ya que el cache se llenara con facilidad y se debera sustituirlos objetos antiguos por nuevos. En cambio, en el caso de disponer de por ejemplo 1GB de discopara cachear, y de que los usuarios s610 necesiten 10MB al dia para navegar, se tardara al menos 100dias en llenar el cache.El metodo mas facil para detenninar el tamaiio del cache es en funci6n del trafico maximo que pasepor el mismo. Si se dispone de una conexi6n de 1Mb/s, como mucho se transferiran 125KB porsegundo. Si todo este trafico va a parar al cache, en una hora sera 450MB, Y suponiendo que estetrafico se genera durante las 8 horas de trabajo, tendremos en total 3, 6GB diarios. Como la linea nosuele trabajar al maximo, la cantidad total de datos procesada por el cache es de unos 2GB. Asi pues,para guardar todos los datos navegados por la WWW en un dia, necesitamos en este ejemplo 2GB dememoria RAM para Squid.17.3.3.3. Memoria RAMLa cantidad de memoria requerida por Squid esta relacionada directamente con la cantidad deobjetos que se encuentran en el cache. Squid tambien almacena referencias a los objetos en el cache

    3 de 15 15106/2011 02:21 p.m.

    http://www.cez.com.pe/Linux/manualhttp://www.cez.com.pe/Linux/manual
  • 5/8/2018 17.3. Servidor Proxy_ Squid

    4/15

    17.3. Servidor proxy: Squid http://www.cez.com.pe/Linux/manual suse linux 9.l!suselinux-adming ...

    y objetos utilizados frecuentemente en la memoria RAM para optimizar la obtencion de losmismos. La memoria RAM es muchisimo mas rapida que el disco duro.Squid tambien guarda muchos otros datos en la memoria, como por ejemplo una tabla con todas lasdirecciones IP utilizadas, un cache para los nombres de dominio totalmente cualificados, objetos"calientes" (los que mas se solicitan), buffers, listas de control de acceso, etc.

    Es muy importante tener memoria mas que suficiente para el proceso de Squid, ya que en el caso detener que pasar el proceso al disco duro, las prestaciones del sistema se reduciran drasticamente,Para facilitar la administracion de la memoria utilizada por el cache, podemos utilizar laherramienta cachemgr.cgi tal y como veremos en el apartado 17.3.7.1, "cachemgr.cgi".17.3.3.4. Potencia del procesadorSquid no es un programa que consuma mucho cpu. Solamente al arrancar y comprobar elcontenido del cache es cuando se trabaja mas intensamente con el procesador. El uso de maquinascon multiprocesador tampoco incrementa el rendimiento del sistema. Para obtener una mayorefectividad, es preferible aumentar la cantidad de memoria RAM 0 bien utilizar discos mas rapidosantes que cambiar el procesador por otro mas potente.17.3.4. Arrancar SquidSquid ya se encuentra preconfigurado en SUSE LINUX, asi que casi se puede iniciar directamentedespues de la instalacion. Los requisitos en este caso son: tener una red ya configurada, al menos unservidor de nombres, y, por supuesto, acceso a Internet. Pueden aparecer problemas en caso deutilizar una conexion telefonica que utilice configuracion dinamica de DNS. En casos como este, almenos el servidor de nombres debe estar c1aramente especificado, ya que Squid solamente seiniciara si detecta un servidor DNS en el archivo /etc/resolv. conf.Para iniciar Squid, introduzca (como root) el comando rcsquid start en la linea de comando.Durante el primer inicio del programa se define la estructura de directorios en var / squid/ cache.Esta operacion es llevada a cabo automaticamente por el script de inicio / etc/ rc. d/ squid y puedetardar desde pocos segundos a minutos. Cuando aparezca el mensaje done en color verde a laderecha de la pantalla, significa que Squid ya ha sido cargado. Se puede comprobar si Squidfunciona correctamente en el sistema local dando los valores localhost y port 3128como proxyen cualquier navegador web. Para permitir a todos los usuarios el acceso a Squid y por tanto aInternet, solamente es necesario cambiar una entrada en el archivo de configuracion / etc/ squid/squid.conf de http_acces deny all a http_acces allow all. Sin embargo, haciendo estoSquid se hace accesible para cualquiera. Por tanto, en cualquier caso debera configurar listas decontrol de acceso 0ACL para controlar el acceso al proxy. Mas informacion sobre este tema en elapartado 17.3.5.2, "Listas de control de acceso 0ACLs".Cada vez que se produce un cambio en el archivo de configuracion /etc/squid/squid. conf, hayque indicar a Squid que vuelva a cargarlo. Esto se puede hacer con el comando: rcsquid reload.De forma alternativa, tambien es posible reiniciar completamente Squid con rcsquid restart. Lossiguientes comandos son igualmente importantes: rcsquid status, para determinar si el proxy seencuentra funcionando y rcsquid stop, para detener Squid. Este ultimo comando puede tardar unosmomentos ya que Squid espera hasta medio minuto (opcion shutdown_lifetime en /etc/squid/squid. conf] antes de cortar las conexiones con los c1ientes y entonces todavia tendra que guardarlos datos en el disco.

    de 15 15106/2011 02:21 p.m.

    http://www.cez.com.pe/Linux/manualhttp://www.cez.com.pe/Linux/manual
  • 5/8/2018 17.3. Servidor Proxy_ Squid

    5/15

    17.3. Servidor proxy: Squid http://www.cez.com.pe/Linux/manual suse linux 9.l!suselinux-adming ...

    Terminar SquidEn caso que Squid sea terminado con un comando kill 0bien killall,esto puede llevar a la destruccion del cache, que en ese caso tendraque ser borrado completamente para poder reiniciar Squid.

    Si Squid finaliza de forma inesperada tras un corto periodo de tiempo aunque pareciera que se habiainiciado correctamente, puede ser debido a una entrada de DNS incorrecta 0 bien por no encontrarel archivo /etc/resolv.conf. Squid almacena la causa del error en el archivo /var/squid/ logs/ cache .log. Si Squid debe cargarse automaticamente cada vez que se inicie el sistema,solamente es necesario activarlo en el editor de niveles de ejecucion de VaST.Al desinstalar Squid no se borrara ni el cache ni los archivos de error. Se deb era borrarmanualmente el directorio /var/cache/squid.17.3.4.1. Servidor DNS localConfigurar un servidor DNS localmente como BIND9 es igualmente importante, incluso aunque elservidor proxy no controle su propio dominio. En ese caso actuara solamente como "cache-solamente DNS" y de esta manera sera capaz de resolver peticiones DNS a traves del servidor denombres principal sin necesidad de realizar ninguna configuracion especial. Si introduce en elarchivo /etc/resolv. conf una entrada con direccion IP 127.0.0.1 para localhost, Squiddetectara un servidor de nombres valido al iniciarse. La configuracion de un servidor DNS ya es uncapitulo en si misma y no sera descrita con detalle en este capitulo. Sera suficiente instalar elpaquete e iniciarlo. El servidor de nombres del proveedor debera especificarse en el archivo deconfiguracion /etc/named. conf bajo forwarders junto con su direccion IP. En caso de disponer deun cortafuegos activado, incluso aunque se trate del cortafuegos personal, tendra que asegurarse quedeje pasar las peticiones DNS.17.3.5. EI archivo de configuraci6n /etc/squid/squid.confLa configuracion de Squid se almacena en este archivo de configuracion, Para poder iniciar Squidpor primera vez, no es necesario hacer cambios en este archivo, aunque los clientes extemostendran inicialmente el acceso denegado. El proxy necesita ejecutarse en localhost y normalmenteutilizara el puerto 3128. Las opciones son muy extensas y estan documentadas con muchosejemplos en el archivo / etc/ squid/ squid. conf preinstalado. Casi todas las lineas comienzan porel simbolo # (significa que la linea esta comentada y su contenido no se evaluara); las opcionesrelevantes se encuentran al final de la linea. Los valores por defecto corresponden casi siempre a losvalores que necesitaremos, asi que para muchas opciones solo sera necesario quitar el simbolo decomentario al principio de la lineas. De cualquier modo, es mejor dejar el ejemplo comentado yreescribir la linea con los nuevos parametres una linea mas abajo. De esta manera se puede verfacilmente cuales son los valores por defecto y cuales son los cambios introducidos.

    ~ Actualizacien de la version 2.4 a la version 2.5Despues de actualizar Squid de la version 2.4 a la version 2.5 esnecesario borrar el cache de Squid, ya que el esquema de laestructura de directorios ha cambiado.

    Si esta actualizando desde una version anterior de Squid, se recomienda editar el nuevo / etc/ squid/ squid. conf y afiadirle la configuracion del archivo anterior. Si trata de implementar directamente

    5 de 15 15106/2011 02:21 p.m.

    http://www.cez.com.pe/Linux/manualhttp://www.cez.com.pe/Linux/manual
  • 5/8/2018 17.3. Servidor Proxy_ Squid

    6/15

    17.3. Servidor proxy: Squid http://www.cez.com.pe/Linux/manual suse linux 9.l!suselinux-adming ...

    el anti guo archivo de configuracion letc/squid. conf, es posible que no funcione correctamentedebido a modificaciones en algunas opciones 0 a los nuevos cambios en la nueva version.17.3.5.1. Opciones generales de configuraci6n (selecci6n)http_port 3128

    Este es el puerto en el que Squid escuchara las peticiones de los clientes. El puerto pordefecto es 3128, aunque 8080 se usa tambien comunmente, Es posible especificar variospuertos separandolos por espacios en blanco.

    cache_peer En esta opcion podemos especificar otro servidor proxy como "padre" (parent), por ejemplosi quiere 0 debe usar el de su proveedor 0 ISP. En la opcion , se especifica elnombre y la direccion IP del proxy al que nos vayamos a conectar, en la opcion ,especificamos parent. Para , se debe escribir el mimero de puerto, el quetambien se especifica para los navegadores, normalmente se utiliza el 8080. Se puede fijar el a 7 0 bien 0 si no se conoce el puerto ICP del proxy padre y su uso carece deinteres para el proveedor. Ademas de esto, default y no-query se deben especificar despues delos mimeros de puerto para no permitir el uso del protocolo ICP. Squid se comportara en esecaso como un navegador normal en 10 que respecta al proxy del proveedor.

    cache mem 8 MBEsta entrada define la cantidad maxima de memoria RAM que utilizara Squid para loscaches. El valor por defecto es 8 MB.

    cache_dir ufs Ivar/cache/squid 100 16256La entrada correspondiente a cache_dir fija el directorio donde se almacenaran los datos. Losmimeros al final indican el tamafio maximo en MB que se va a utilizar, seguido del numero dedirectorios de primer y segundo nivel. El parametro ufs debe dejarse tal y como esta, El valorpor defecto es 100 MB de espacio en disco ocupado en el directorio Ivar/cache/squid, paraluego crear 16 subdirectorios mas, y en cada uno de ellos se crearan 256 directorios mas. Alespecificar el espacio de disco a utilizar, siempre se debe dejar espacio suficiente de reserva.Se recomienda manejar valores de tamafio para el cache entre el 50 a un 80 por ciento delespacio total disponible. Los ultimos dos mimeros solo deben ser incrementados conprecaucion ya que demasiados directorios pueden provocar problemas de funcionamiento. Encaso de disponer de mas discos para repartir entre ellos el cache, se pueden especificar variasHneas de cache dir.

    cache_access _log Ivar/log/squidlaccess.logruta para archivos log.

    cache_log Ivar/log/squidlcache.logruta para archivos log.

    cache_store _log Ivar/log/squidlstore.logRuta para archivos log. Estas tres entradas especifican la ruta donde Squid guardara sus

    6 de 15 15106/2011 02:21 p.m.

    http://www.cez.com.pe/Linux/manualhttp://www.cez.com.pe/Linux/manual
  • 5/8/2018 17.3. Servidor Proxy_ Squid

    7/15

    17.3. Servidor proxy: Squid http://www.cez.com.pe/Linux/manual suse linux 9.l!suselinux-adming ...

    archivos de registro. Nonnalmente no hace falta cambiar nada. Si Squid soporta una cargarelativamente elevada, puede ser necesario distribuir el cache y estos archivos de registro endiscos diferentes.

    emulate_httpd_log offSi la entrada esta configurada a on, se puede obtener archivos de log en fonnato legible. Sinembargo, algunos programas de evaluacion no pueden interpretarlos.

    client netmask 255.255.255.255Con esta entrada, es posible enmascarar las direcciones IP en los archivos de control paraocultar la identidad de los clientes. Especificando en esta opcion el valor 255.255.255.0, elultimo digito de la direccion IP se interpretara como cero.

    ftp_user Squid@Con esta opcion se puede fijar la contrasefia que Squid utilizara para realizar el registro (ingl.login) para FTP anonimo, Es importante especificar una direccion de correo electronicovalida, ya que algunos servidores FTP pueden comprobar si es valida 0no.

    cache _mgr webmasterDireccion de correo electronico a la que el Squid enviara un mensaje en caso que tennineinesperadamente. Por defecto se enviaran al webmaster.

    logfile _rotate 0Squid puede rotar archivos de registro al ejecutar la orden squid -k rotate. Los archivosseran enumerados en este proceso y despues de alcanzar el valor especificado, el archivo masantiguo sera sobreescrito. El valor que se utiliza nonnalmente es 0 ya que para archivar yborrar archivos de registro en SUSE LINUX se utiliza un cronjob que se puede encontrar enel archivo de configuracion letc/logrotate/syslog.

    append _domain Con la opcion append _domain, se puede especificar que dominio se afiadira automaticamenteen caso de que no se facilite ninguno. Nonnalmente se especifica el propio dominio, de formaque basta con introducir www en el navegador para acceder al servidor web propio.

    forwarded for onAl apagar esta opcion y ponerla a off, Squid eliminara las direcciones IP y el nombre de lamaquina de los clientes en las peticiones HTTP.

    negative_tt15 minutes; negative_dns_tlI5 minutesNonnalmente no es necesario cambiar estos valores. En caso de disponer de una conexiontelefonica puede ser que a veces no se pueda acceder a Internet. Squid tomara nota de laspeticiones fallidas y se negara a realizarlas otra vez, inc1uso aunque la conexion ya se hayarestablecido. En ese caso puede cambiar el valor minutes a seconds. Despues de esto, alpulsar en el boton de Recargar en el navegador la conexion se reiniciara al cabo de unossegundos.

    7 de 15 15106/2011 02:21 p.m.

    http://www.cez.com.pe/Linux/manualhttp://www.cez.com.pe/Linux/manual
  • 5/8/2018 17.3. Servidor Proxy_ Squid

    8/15

    17.3. Servidor proxy: Squid http://www.cez.com.pe/Linux/manual suse linux 9.l!suselinux-adming ...

    never direct allow Si desea impedir que Squid conteste a peticiones que vengan directamente de Internet, puedeutilizar el siguiente comando para forzar la conexion a otro proxy. Este debe estar yaintroducido en la opcion cache_peer. Si se especifica como el valor all, todaslas peticiones seran redirigidas al cache padre. Esto puede ser necesario, por ejemplo, en casode disponer de un proveedor que estipule estrictamente el uso de sus proxys 0 que no permitaacceso directo a Internet a traves de su cortafuegos.

    17.3.5.2. Listas de control de acceso 0ACLsSquid implementa un inteligente sistema para controlar el acceso al proxy que puede configurarsefacil y detalladamente mediante las ACLs. Se trata de normas procesadas secuencialmente. LasACLs deben ser definidas antes de poderse utilizar. Algunas ACLs como all y localhost ya estandefinidas. La mera definicion de una ACL no tiene ningun efecto. Es necesario que se ponga enfuncionamiento por ejemplo con http_access para que puedan procesarse las reglas definidasanteriormente.acl

    Una ACL necesita por 10 menos tres especificaciones para definirla. El nombre se puede elegir arbitrariamente. Para el se puede elegir de entrediferentes opciones disponibles en la seccion ACCESS CONTROLS del archivo /etc/squid/squid. conf.La parte de datos depende del tipo de ACL y tambien puede ser leida desde unarchivo, por ejemplo que contenga nombres de maquinas, direcciones IP 0 bien URLs. Acontinuacion unos ejemplos:acl usuarios srcdomain .mi-dominio.comacl profesores src 192.168.1.0/255.255.0.0acl alumnos src 192.168.7.0-192.168.9.0/255.255.0.0acl mediodia time MTWHF 12:00-15:00

    http_access allow http_access define a quien le esta permitido usar el proxy y quien puede acceder a Internet.Para todo esto se deberan definir primero las ACL correspondientes. localhost y all ya hansido definidas con anterioridad. En general se puede permitir el acceso mediante allow 0 biennegarlo con deny. Se puede crear una lista completa de entradas http_access que seraprocesada de arriba hacia abajo y dependiendo de como esten configuradas las reglas sepodra acceder 0 no a Internet para cada URL. Por eso la ultima entrada de todas debe serhttp_access deny all. En el ejemplo siguiente localhost dispone de acceso libre mientras quetodos los otros hosts tienen el acceso denegado.http_access allow localhosthttp_access deny allOtro ejemplo donde se utilizan las reglas definidas anteriormente: el grupo profesoressiempre tendra acceso a Internet, mientras que el grupo alumnos solamente tiene acceso delunes a viernes durante el mediodia.http_access deny localhosthttp_access allow profesoreshttp_access allow alumnos mediodia timehttp_access deny all

    8 de 15 15106/2011 02:21 p.m.

    http://www.cez.com.pe/Linux/manualhttp://www.cez.com.pe/Linux/manual
  • 5/8/2018 17.3. Servidor Proxy_ Squid

    9/15

    17.3. Servidor proxy: Squid http://www.cez.com.pe/Linux/manual suse linux 9.l!suselinux-adming ...

    Esta lista con las entradas para http_access debera colocarse en la parte del archivo/etc/ squid/ squid. conf a partir de la entrada# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR# CLIENTSy finalizar enhttp_access deny all

    redirect_program lusrlbin/squidGuardCon esta opcion se puede especificar un programa de redireccion como squidGuard capaz debloquear el acceso a URL no deseadas. El acceso a Internet puede ser controladoindividualmente para varios grupos de usuarios con la ayuda de autentificacion por proxy ylistas de control de acceso apropiadas. squidGuard es un paquete independiente que se debeinstalar y configurar separadamente.

    authenticate _program lusrlsbin/pam _authSi los usuarios deben ser autentificados en el proxy, se puede especificar un programa querealice esta funcion como pam_auth. Cuando se accede a pam_auth por primera vez, elusuario vera una pantalla de login donde se debera introducir el nombre de usuario y lacontrasefia, Ademas sera necesario especificar una ACL correspondiente para que solo losusuarios registrados puedan acceder a Internet:acl password proxy_auth REQUIREDhttp_access allow passwordhttp_access deny allEl texto REQUIRED despues de proxy_auth debe ser sustituido por una lista de usuariospermitidos 0por la rota a una lista.

    ident _lookup_access allow Con esta opcion se consigue que para todos los clientes que pertenezcan a la ACLespecificada se ejecute un programa que determine la identidad del cliente. Al especificar elvalor all como , esto sera valido para todos los clientes. Para esto deberaejecutar un daemon denominado ident en todos los clientes. En Linux, se puede utilizar paraeste proposito el paquete pidentd; para Windows, hay software libre disponible que se puededescargar de Internet. Para asegurar que solo se permite acceso a clientes correctamenteidentificados, se debera igualmente especificar otra ACL tal y como se define a continuacion:acl identhosts ident REQUIREDhttp_access allow identhostshttp_access deny all

    Aqui tambien se puede cambiar el valor REQUIRED por una lista de usuarios autorizados. Eluso de ident puede reducir la velocidad del sistema debido a que el proceso de autentificacionse repite para cada peticion.

    17.3.6. Configuraci6n de un proxy transparente

    9 de 15 15106/2011 02:21 p.m.

    http://www.cez.com.pe/Linux/manualhttp://www.cez.com.pe/Linux/manual
  • 5/8/2018 17.3. Servidor Proxy_ Squid

    10/15

    17.3. Servidor proxy: Squid http://www.cez.com.pe/Linux/manual suse linux 9.l!suselinux-adming ...

    Normalmente la forma en la que se trabaja con servidores proxy es la siguiente: el navegador webenvia peticiones a un puerto determinado del servidor proxy, y este se encarga de servirle laspaginas, se encuentren 0 no en su cache. A la hora de trabajar con una red real se pueden dar lossiguientes casos:

    Por motivos de seguridad, es mas seguro que todos los usuarios utilicen un proxy paranave gar por Internet.

    Se requiere que todos los usuarios utilicen un proxy, sean los usuarios conscientes de ello 0no.

    Si el proxy de una red cambia de ubicacion, los c1ientes existentes mantienen su antiguaconfiguracion,

    En cualquiera de estos casos se puede utilizar un proxy transparente. El principio es muy sencillo:el proxy intercepta y responde a las peticiones del navegador web, asi que el navegador recibira laspaginas solicitadas sin saber exactamente de donde provienen. El proceso completo se realiza deforma transparente, de ahi el nombre que este procedimiento recibe.17.3.6.1. Configuraci6n del kernelPrimero hay que comprobar que el kernel del servidor proxy dispone de soporte para proxytransparente. En caso contrario habra que afiadir estas opciones al kernel y compilarlo de nuevo.Mas detalles sobre este proceso en el capitulo 10, El kernel de Linux. Los modules del kernelcambian en cada version. Compruebe el estado del actual en /usr/share/doc/howto/en/html/mini/Transparentproxy-3.html 0 en Internet: http://www.tldp.orgIHOWTOImini/TransparentProxy- 3.htm!.17.3.6.2. Opciones de configuraci6n en letc/squid/squid.confAhora vamos a ocuparnos de las opciones que hay que activar en el archivo / etc/ squid/ squid. conf para activar el proxy transparente. Dichas opciones son:

    httpd_accel_host virtual httpd_accel_port 80 # numero de puerto del servidor HTTP httpd_accel_with_proxy on httpd_accel_uses_host_header on

    17.3.6.3. Configuraci6n del cortafuegos con SuSEfirewall2Ahora solo falta redirigir las peticiones de los c1ientes por el cortafuegos hacia el puerto en el queesta Squid. Para la configuracion utilizaremos la herramienta proporcionada por SuSESuSEfirewa1l2. El archivo de configuracion correspondiente se encuentra en /etc/sysconfig/scripts/SuSEfirewa1l2-custom. Este archivo esta formado por diferentes entradas muy biendocumentadas. Tendremos que configurar algunas opciones mas. En nuestro ejemplo:

    Dispositivo apuntando a Internet: FW _ DEVzxr=I'ethl " Dispositivo apuntando a la red: FW _ DEVINT="ethO"

    10 de 15 15106/2011 02:21 p.m.

    http://www.cez.com.pe/Linux/manualhttp://www.tldp.orgihowto/http://www.tldp.orgihowto/http://www.cez.com.pe/Linux/manual
  • 5/8/2018 17.3. Servidor Proxy_ Squid

    11/15

    17.3. Servidor proxy: Squid http://www.cez.com.pe/Linux/manual suse linux 9.l!suselinux-adming ...

    Se accedera a los puertos y servicios (ver /etc/exports) del cortafuegos desde redes no segurascomo Internet. En este ejemplo s6lo se especifican servicios web hacia el exterior:FWSERVICESEXT TCP="WWW"Se accedera a los puertos y servicios (ver /etc/exports) del cortafuegos desde la red segura. TantoTCP como UDP:FWSERVICESINT rcr=vdomain www 3128"FWSERVICESINT uDp="domain"Accedemos a servicios web y al programa Squid (cuyo puerto por defecto es 3128). El servicio"domain" especificado anteriormente se trata del DNS 0 Domain Name Server. Lo mas normal esutilizar este servicio, pero en caso contrario, se elimina de las entradas superiores y se configura laopci6n siguiente a no:FWSERVICE_DNs="yes"La opci6n mas importante es la numero 15:

    Ejemplo 17.1. Opclon 15 de la conflgurachin del cortafuegos## 15.)# Which accesses to services should be redirected to a loca1port# on the firewall machine?## This can be used to force all internal users to surf via your# squid proxy, or transparently redirect incoming webtraffic to# a secure webserver.## Choice: leave empty or use the following explained syntax of# redirecting rules, separated by a space.# A redirecting rule consists of 1) source IP/net, 2) destination# IP/net, 3) original destination port and 4) local port to# redirect the traffic to, separated by a colon. e.g.# "10.0.0.0/8,0/0,80,3128 0/0,172.20.1.1,80,8080"#

    Los comentarios indican la sintaxis que hay que seguir. En primer lugar, se escribe la direcci6n IP yla mascara de las "redes internas" de donde vienen nuestros datos. En segundo lugar, la direcci6n IPy la mascara de red a donde se "dirigen" las peticiones. En el caso de navegadores web,especificaremos la direcci6n de red / 0, un comodin que quiere decir "a cualquier direcci6n". Acontinuaci6n, el mimero de puerto "original" al que se dirigen las peticiones, y finalmente, el puertoa donde "redirigimos" las peticiones.Como Squid tiene soporte para mas protocolos ademas de http; existe la posibilidad de desviar laspeticiones dirigidas a otros puertos al proxy, como por ejemplo FTP (puerto 21), HTTPS 0 SSL(Puerto 443).En el ejemplo dado, los servicios web (puerto 80) se desvian al puerto del proxy (aqui 3128). En elcaso de disponer de mas redes para afiadir, s6lo hace falta separar las diferentes entradas con unespacio en blanco en la linea correspondiente.

    11 de 15 15106/2011 02:21 p.m.

    http://www.cez.com.pe/Linux/manualhttp://www.cez.com.pe/Linux/manual
  • 5/8/2018 17.3. Servidor Proxy_ Squid

    12/15

    17.3. Servidor proxy: Squid http://www.cez.com.pe/Linux/manual suse linux 9.l!suselinux-adming ...

    FWREDIRECTTcp= "192 .168 .0 . 0 /16 ,0 / 0 ,80 ,3128 192 .168 .0 .0 / 16 ,0 / 0 ,21 , 3128 "FWREDIRECTuDP="192 .168 .0 .0 / 16 ,0 / 0 ,80 ,3128 192 .168 .0 .0 / 16 ,0 / 0 ,21 , 3128 "Para que el cortafuegos se inicie y con ella nueva configuracion, se debe editar una entrada en elarchivo /etc/sysconfig/SuSEfirewa1l2 y asignar el valor "yes" a la entrada FW_START:Inicie Squid tal como se mostro en el apartado 17.3.4, "Arrancar Squid". Para comprobar que todofunciona correctamente, compruebe los archivos de registro de Squid en /var/log/squid/access .log. Para verificar que todos los puertos estan correctamente configurados, se puederealizar un escaneo de puertos en la maquina desde un ordenador que se encuentre fuera de la redlocal. Solo debera estar abierto el puerto de servicios web (80). Para llevar a cabo el portscan sepuede utilizar nmap -0 direcci6n_IP.17.3.7. Squid y otros programasEn esta seccion veremos como otros programas interactuan con Squid. cachemgr. cgi permite aladministrador del sistema comprobar la cantidad de memoria necesaria para cachear los objetos,squidGuard filtra paginas web, y calamaris es un generador de informes para Squid.17.3.7.1. cachemgr.cgiEI administrador de cache (cachemgr.cgi) es una utilidad CGI para mostrar estadisticas sobre elconsumo de memoria del proceso Squid. Este metodo representa una forma mas sencilla decontrolar el uso del cache y ver estadisticas sin necesidad de registrarse en el servidor.17.3.7.2. Configuraci6nEn primer lugar, se necesita tener un servidor web ejecutandose en el sistema. Para comprobar siApache esta funcionando, escriba como usuario root: rcapacbe status.Si aparece un mensaje como el siguiente, Apache se esta ejecutando en el ordenador:Checking for service httpd: OKServer uptime: 1 day 18 hours 29 minutes 39 seconds

    Si no es asi, ejecute el comando rcapacbe start para iniciar Apache con la configuracion pordefecto de SUSE LINUX.El ultimo paso es copiar el archivo cachemgr.cgi del directorio /usr/share/doc/packages/squid/scripts/ al directorio de Apache /srv/www/cgi-bin.17.3.7.3. ACLs para el administrador de cache en letc/squid/squid.confHay algunas opciones configuradas ya por defecto en el archivo de configuracion para eladministrador de cache:acl manager proto cache_objectacl localhost src 127.0.0.1/255.255.255.255

    Con las siguientes normas de acceso:http_access allow manager localhost

    12 de 15 15106/2011 02:21 p.m.

    http://www.cez.com.pe/Linux/manualhttp://www.cez.com.pe/Linux/manual
  • 5/8/2018 17.3. Servidor Proxy_ Squid

    13/15

    17.3. Servidor proxy: Squid http://www.cez.com.pe/Linux/manual suse linux 9.l!suselinux-adming ...

    http_access deny managerLa primera ACL es la mas importante, ya que el administrador de cache tratara de comunicarse conSquid mediante el protocolo cache_object. Las reglas siguientes asumen que el servidor web ySquid se encuentran en la misma maquina, Si la comunicacion entre el administrador de cache ySquid se origina en el servidor de web en otro ordenador, tendremos que incluir una ACL adicionalcomo en la figura 17.2. "Reglas de acceso".

    Ejemplo 17.2. Reglas de accesoacl manager proto cache_objectacl localhost src 127.0.0.1/255.255.255.255acl webserver src 192.168.1.7/255.255.255.255 # IP webserver

    Tambien son necesarias las reglas siguientes del archivo 17.3, "Reglas de acceso".

    Ejemplo 17.3. Reglas de accesohttp_access allow manager localhosthttp_access allow manager webserverhttp_access deny manager

    Igualmente tambien se puede configurar una contrasefia para el administrador si deseamos teneracceso a mas opciones, como por ejemplo poder cerrar el cache de forma remota 0 ver masinformacion sobre el mismo. En ese caso solo hay que configurar la entrada cachemgr_passwd conuna contrasefia para el administrador y la lista de opciones que deseamos ver. Esta lista aparececomo una parte de los comentarios a la entrada en /etc/squid/squid. conf.Cada vez que se modifique el archivo de configuracion es necesario reiniciar Squid. Utilice paraella el comando rcsquid reload.17.3.7.4. Leer las estadisticasEn primer lugar, dirijase a la pagina web correspondiente: http://miservidor .ejemplo. org/cgi-bini cachemgr. cgi.Pulse en 'continue' y navegue a traves de las diferentes estadisticas. Haymas detalles para cada entrada mostrada por el administrador de caches en la FAQ de Squid en lahttp://www.squid-cache.org/Doc/FAQ/FAQ-9.html.

    17.3.7.5. squidGuardEste capitulo no pretende mostrar una configuracion completa de squidGuard, sino mas bienpresentarlo y comentar su utilizacion, Para ver las opciones de configuracion con mas detalle, visitela web de squidGuard en http://www.sguidguard.org.squidGuard es un programa gratuito, bajo licencia GPL, que funciona como un filtro flexible ultrarapido capaz de redireccionar paginas web y que funciona como "plugin de control de acceso" paraSquid. Permite definir divers as reglas de acceso con diferentes restricciones para distintos grupos

    13 de 15 15106/2011 02:21 p.m.

    http://www.cez.com.pe/Linux/manualhttp://www.squid-cache.org/Doc/FAQ/FAQ-9.html.http://www.sguidguard.org./http://www.sguidguard.org./http://www.squid-cache.org/Doc/FAQ/FAQ-9.html.http://www.cez.com.pe/Linux/manual
  • 5/8/2018 17.3. Servidor Proxy_ Squid

    14/15

    17.3. Servidor proxy: Squid http://www.cez.com.pe/Linux/manual suse linux 9.l!suselinux-adming ...

    de usuarios que trabajen sobre un cache de Squid. squidGuard utiliza la interfaz estandar deredireccion de Squid. Algunos ejemplos de utilizacion de squidGuard:

    Limitar el acceso por web para una serie de usuarios a una lista de servidores web 0 URLconocidas y aceptadas.

    Bloquear el acceso para algunos usuarios a servidores web 0URLs que esten en alguna listanegra.

    Bloquear para algunos usuarios el acceso a URLs que coincidan con una determinada lista deexpresiones 0palabras.

    Redireccionar URLs bloqueadas a una pagina de informacion "inteligente" basada en CGI. Redireccionar usuarios no registrados a una pagina de registro. Redireccionar banners a un GIF vacio.

    Tener diferentes normas de acceso basadas en la hora del dia, dia de la semana, etc. Tener diferentes normas para diferentes grupos de usuarios.

    Ni squidGuard ni Squid se pueden usar para: Editar, filtrar 0 censurar texto dentro de documentos. Editar, filtrar 0 censurar lenguajes de script con HTML embebido como JavaScript 0VBscript.

    17.3.7.6. Utilizar squidGuardInstale el paquete squidgrd. Edite un archivo minimo de configuracion /etc/squidguard.conf.Hay muchos ejemplos diferentes de configuracion en http://www.squidguard.orglconfig/. Siemprese puede experimentar mas tarde con configuraciones mas complicadas.El paso siguiente es crear una pagina web que sera la pagina que mostrara el mensaje de "accesodenegado" 0 una pagina CGI mas 0 menos inteligente a la cual redirigir Squid en caso que alguncliente pida algun sitio web que este en la lista negra. Una vez mas, el uso de Apache es altamenterecomendable.Ahora debemos decide a Squid que utilice squidGuard. Lo haremos mediante las siguientesentradas en el archivo /etc/squid/squid. conf ;redirect_program /usr/bin/squidGuard

    Existe todavia otra opcion Hamada redirect_children que configura el numero de procesosdiferentes para "redirigir" (en este caso procesos de squidGuard). squidGuard es suficientementerapido para procesar grandes cantidades de solicitudes (squidGuard es realmente rapido: 100.000consultas en 10 segundos en un Pentium 500MHz con 5.900 dominios, 7.880 URLs, en total13.780). Por eso no se recomienda configurar mas de cuatro procesos a la vez para no gastarmemoria innecesariamente en la asignacion de los procesos.redirect children 4

    Por ultimo vuelva a cargar la configuracion de Squid con rcsquid reload. A continuacion ya se

    14 de 15 15106/2011 02:21 p.m.

    http://www.cez.com.pe/Linux/manualhttp://www.squidguard.orglconfig/http://www.squidguard.orglconfig/http://www.cez.com.pe/Linux/manual
  • 5/8/2018 17.3. Servidor Proxy_ Squid

    15/15

    17.3. Servidor proxy: Squid http://www.cez.com.pe/Linux/manual suse linux 9.l!suselinux-adming ...

    puede comprobar la configuracion con cualquier navegador.17.3.7.7. Generacion de informes con CalamarisCalamaris es un script en Perl utilizado para generar informes de la actividad del cache en formatosASCII 0HTML. Funciona directamente con los archivos de registro de acceso de Squid. La paginaweb de Calamaris esta en http://Calamaris.Cord.de/. La utilizacion del programa es bastante facil,Entre al sistema como root y ejecute: cat access.log.files I calamaris [options] > reportfile.Al enviar mas de un archivo de registro es importante que estos esten cronologicamente ordenados,es decir, primero los archivos mas antiguos.Las diferentes opciones:-a

    utiliza todos los informes disponibles-w

    muestra los resultados en formato HTML-1

    muestra un mensaje 0un logotipo en la cabecera del informePuede obtener mas informacion sobre las diferentes opciones del programa en la pagina de manualde calamaris: man calamaris.Otro completo generador de informes es SARG (Squid Analysis Report Generator) .. Masinformacion sobre SARG se puede encontrar en las paginas web correspondientes en:http://web.onda.com.br/orso/17.3.8. Informacion adicional sobre SquidVisite la pagina web de Squid: http://www.sguid-cache.org/. Aqui encontrara la Guia de Usuario deSquid y una extensa coleccion de FAQ sobre Squid.El Mini-Howto sobre proxys transparentes se encuentra en el paquete howtoen, bajo lusrlshareIdoc/howto/en/mini/TransparentProxy.gzTambien existen listas de correo para Squid en: [email protected]. El archivo para estaslistas se encuentra en: http://www.sguid-cache.org/mail-archive/sguid-users/

    17.2. Configuraci6n de una conexi6nADSL Capitulo 18. Seguridad en la red

    http://www.cez.com.pe/Linux/manualhttp://calamaris.cord.de/http://web.onda.com.br/orso/http://www.sguid-cache.org/mailto:[email protected]://www.sguid-cache.org/mail-archive/sguid-users/http://www.sguid-cache.org/mail-archive/sguid-users/mailto:[email protected]://www.sguid-cache.org/http://web.onda.com.br/orso/http://calamaris.cord.de/http://www.cez.com.pe/Linux/manual