Configurar Un Proxy Transparente Con SQUID

download Configurar Un Proxy Transparente Con SQUID

of 18

Transcript of Configurar Un Proxy Transparente Con SQUID

Configurar un Proxy Transparente con SQUIDApril 14, 2009 roaksoax En este tutorial se les mostrar como configurar un Proxy Transparente con SQUID. Para los que necesiten saber la definicin de lo que es un proxy, y de lo que es un proxy transparente, esta pueden encontrarla aqu. Ahora bien, la estructura que se muestra a continuacin es cmo se instalar el servidor proxy:

Bueno, entonces lo primero que tenemos que hacer es instalar Squid de la siguiente manera:

:~$ sudo apt-get install squidUna vez instalado, squid nos proveer un archivo de configuracin localizado en /etc/squid/squid.conf. Este archivo contiene toda la documentacin de squid. Al ser un archivo muy extenso, nosotros no necesitaremos tal configuracin por tal motivo crearemos una copia de respaldo a este archivo de la siguiente manera:

:~$ sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bakLuego, moficamos el archivo de configuracin original (/etc/squid/squid.conf) y eliminamos todo lo que contenga. Luego ingresamos lo siguiente:

http_port 3128 transparent cache_mem 100 MB cache_dir ufs /var/spool/squid 150 16 256 acl red_local src 10.10.10.0/24 acl localhost src 127.0.0.1/32 acl all src all http_access allow localhost http_access allow red_localLuego, tenemos que configurar las iptables para que podamos tener acceso a Internet y para que lo hagamos mediante el proxy. Por esta razn ingresamos las siguientes reglas:

:~$ sudo iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j SNAT --to 192.168.1.1 :~$ sudo iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128 :~$ sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128NOTA: en las variables dport, to y to-port, ntese que se utiliza doble guon ( - )ntes de cada variable. Por motivos externos es que en el tutorial aparece como si fuese uno slo. Para terminar, tenemos que recargar la configuracin de squid. Esto lo hacemos de la siguiente manera:

:~$ sudo squid -k reconfigureAhora simplemente desde las mquinas clientes probamos que tenemos acceso a Internet. Vale notar que esta configuracin de proxy transparente solo sirve para almacenar en la cach y que la navegacin por Internet sea ms rpida. Si deseamos bloquear acceso a pginas, tenemos que crear ms reglas. Algunas reglas de ejemplo se las mostar en un prximo tutorial.

Configuracin de Squid: Parmetros bsicos.Autor:dark Joel Barrios Dueas Correo electrnico: darkshram en gmail punto com Sitio de Red: http://www.alcancelibre.org/ Jabber ID: [email protected] Commons Reconocimiento-NoComercial-CompartirIgual 2.1 1999-2011 Joel Barrios Dueas. Usted es libre de copiar, distribuir, y comunicar pblicamente la obra, y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer, y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicacin, a travs de cualquier medio, por entidades con fines de lucro). c) Si altera, o transforma esta obra, o genera una obra derivada, slo puede distribuir la obra generada bajo una licencia idntica a sta. Al reutilizar, o distribuir la obra, tiene que dejar bien claro los trminos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legtimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La informacin contenida en este documento, y los derivados de ste se proporcionan tal cual son, y los autores no asumirn responsabilidad alguna si el usuario, o lector, hace mal uso de stos.

Introduccin.Qu es Servidor Intermediario (Proxy)?El trmino en ingles Proxy tiene un significado muy general y al mismo tiempo ambiguo, aunque invariablemente se considera un sinnimo del concepto de Intermediario. Se suele traducir, en el sentido estricto, como delegado oapoderado (el que tiene el que poder sobre otro). Un Servidor Intermediario se define como una computadora o dispositivo que ofrece un servicio de red que consiste en permitir a los clientes realizar conexiones de red indirectas hacia otros servicios de red. Durante el proceso ocurre lo siguiente: 1. Cliente se conecta hacia un Servidor Proxy. 2. Cliente solicita una conexin, archivo u otro recurso disponible en un servidor distinto. 3. Servidor Intermediario proporciona el recurso ya sea conectndose hacia el servidor especificado o sirviendo ste desde un cach. 4. En algunos casos el Servidor Intermediario puede alterar la solicitud del cliente o bien la respuesta del servidor para diversos propsitos. Los Servidores Proxy generalmente se hacen trabajar simultneamente como muro cortafuegos operando en el Nivel de Red, actuando como filtro de paquetes, como en el caso de iptables, o bien operando en el Nivel de Aplicacin, controlando diversos servicios, como es el caso de TCP Wrapper. Dependiendo del contexto, el muro cortafuegos tambin se conoce como BPD o Border Protection Device o simplemente filtro de paquetes. Una aplicacin comn de los Servidores Proxy es funcionar como cach de contenido de Red (principalmente HTTP), proporcionando en la proximidad de los clientes un cach de pginas y archivos disponibles a travs de la Red en servidores HTTP remotos, permitiendo a los clientes de la red local acceder hacia stos de forma ms rpida y confiable. Cuando se recibe una peticin para un recurso de Red especificado en un URL (Uniform Resource Locator) el Servidor Intermediario busca el resultado del URL dentro del cach. Si ste es encontrado, el Servidor Intermediario responde al cliente proporcionado inmediatamente el contenido solicitado. Si el contenido solicitado no

estuviera disponible en el cach, elServidor Intermediario lo traer desde servidor remoto, entregndolo al cliente que lo solicit y guardando una copia en el cach. El contenido en el cach es eliminado luego a travs de un algoritmo de expiracin de acuerdo a la antigedad, tamao e historial de respuestas a solicitudes (hits) (ejemplos: LRU, LFUDA y GDSF). Los Servidores Proxy para contenido de Red (Web Proxies) tambin pueden actuar como filtros del contenido servido, aplicando polticas de censura de acuerdo a criterios arbitrarios.

Acerca de Squid.Squid es un Servidor Intermediario de alto desempeo que se ha venido desarrollando desde hace varios aos y es hoy en da un muy popular y ampliamente utilizado entre los sistemas operativos como GNU/Linux y derivados de Unix. Es muy confiable, robusto y verstil y se distribuye bajo los trminos de la Licencia Pblica General GNU (GNU/GPL). Siendo equipamiento lgico libre, est disponible el cdigo fuente para quien as lo requiera. Entre otras cosas, Squid puede funcionar como Servidor Intermediario y cach de contenido de Red para los protocolosHTTP, FTP, GOPHER y WAIS, Proxy de SSL, cach transparente, WWCP, aceleracin HTTP, cach de consultas DNS y otras muchas ms como filtracin de contenido y control de acceso por IP y por usuario. Squid consiste de un programa principal como servidor, un programa para bsqueda en servidores DNS, programas opcionales para reescribir solicitudes y realizar autenticacin y algunas herramientas para administracin y y herramientas para clientes. Al iniciar Squid da origen a un nmero configurable (5, de modo predefinido a travs del parmetro dns_children) de procesos de bsqueda en servidores DNS, cada uno de los cuales realiza una bsqueda nica en servidores DNS, reduciendo la cantidad de tiempo de espera para las bsquedas en servidores DNS.

Nota.Squid no debe ser utilizado como Servidor Intermediario (Proxy) para protocolos como SMTP, POP3, TELNET,SSH, IRC, etc. Si se requiere intermediar para cualquier protocolo distinto a HTTP, HTTPS, FTP, GOPHER y WAIS se requerir implementar obligatoriamente un enmascaramiento de IP o NAT (Network Address Translation) o bien hacer uso de un servidor SOCKS como Dante (http://www.inet.no/dante/).

URL: http://www.squid-cache.org/

Algoritmos de cach utilizados por Squid.A travs de un parmetro (cache_replacement_policy) Squid incluye soporte para los siguientes algoritmos para el cach:

LRU

Acrnimo de Least Recently Used, que traduce como Menos Recientemente Utilizado. En este algoritmo los objetos que no han sido accedidos en mucho tiempo son eliminados primero, manteniendo siempre en el cach a los objetos ms recientemente solicitados.sta poltica es la utilizada por Squid de modo predefinido.

LFUDA Acrnimo de Least Frequently Used with Dynamic Aging, que se traduce como Menos Frecuentemente Utilizado con Envejecimiento Dinmico. En este algoritmo los objetos ms solicitados permanecen

en el cach sin importar su tamao optimizando la eficiencia(hit rate) por octetos (Bytes) a expensas de la eficiencia misma, de modo que un objeto grande que se solicite con mayor frecuencia impedir que se pueda hacer cach de objetos pequeos que se soliciten con menor frecuencia. GDSF Acrnimo de GreedyDual Size Frequency, que se traduce como Frecuencia de tamaoGreedyDual (codicioso dual), que es el algoritmo sobre el cual se basa GDSF. Optimiza laeficiencia (hit rate) por objeto manteniendo en el cach los objetos pequeos ms frecuentemente solicitados de modo que hay mejores posibilidades de lograr respuesta a una solicitud (hit). Tiene una eficiencia por octetos (Bytes) menor que el algoritmo LFUDAdebido a que descarta del cach objetos grandes que sean solicitado con frecuencia.

Equipamiento lgico necesario.Para poder llevar al cabo los procedimientos descritos en este y otros documentos relacionados, usted necesitar tener instalado al menos lo siguiente: Al menos squid-2.5.STABLE6 Todos los parches de seguridad disponibles para la versin del sistema operativo que est utilizando. Un muro cortafuegos configurado con system-config-securitylevel, Firestarter, o Shorewall. Debe tomarse en consideracin que, de ser posible, se debe utilizar siempre las versiones estables ms recientes de todo equipamiento lgico que vaya a ser instalado para realizar los procedimientos descritos en este manual, a fin de contar con los parches de seguridad necesarios. Ninguna versin de Squid anterior a la 2.5.STABLE6 se considera como apropiadadebido a fallas de seguridad de gran importancia. Squid no se instala de manera predeterminada a menos que especifique lo contrario durante la instalacin del sistema operativo, sin embargo viene incluido en casi todas las distribuciones actuales. El procedimiento de instalacin es exactamente el mismo que con cualquier otro equipamiento lgico.

Instalacin a travs de yum.Si cuenta con un sistema con CentOS o White Box Enterprise Linux 3 o versiones posteriores, ejecute lo siguiente y se instalar todo lo necesario junto con sus dependencias: yum -y install squid

SELinux y el servicio squid.

A fin de que SELinux permita al servicio squid que los clientes se conecten desde cualquier direccin IP, ejecutar lo siguiente. setsebool -P squid_connect_any 1

Nota.En CentOS 5 y Red Hat Enterprise Linux 5, se pude utilizar una poltica adicional. Para que SELinux permita al serviciosquid funcionar normalmente, haciendo que todo lo anteriormente descrito en esta seccin pierda sentido, utilice el siguiente mandato: setsebool -P squid_disable_trans 1

Antes de continuar.Evite dejar espacios vacos en lugares indebidos. El siguiente ejemplo muestra la manera incorrecta de habilitar un parmetro. Mal # Opcin incorrectamente habilitada. http_port 8080 El siguiente ejemplo muestra la manera correcta de habilitar un parmetro. Bien # Opcin correctamente habilitada. http_port 8080

Configuracin bsica.Squid utiliza el archivo de configuracin localizado en /etc/squid/squid.conf, y podr trabajar sobre este utilizando su editor de texto simple preferido. Existen un gran nmero de parmetros, de los cuales recomendamos configurar los siguientes: Al menos una Lista de Control de Acceso Al menos una Regla de Control de Acceso http_port cache_dir error_directory

El resto de los parmetros, mencionados en este documento, son opcionales.

Controles de acceso.Es necesario establecer Listas de Control de Acceso que definan una red o bien ciertas mquinas en particular. A cada lista se le asignar una Regla de Control de Acceso que permitir o denegar el acceso a Squid. Procedamos a entender como definir unas y otras.

Listas de control de acceso.De modo predeterminado en CentOS 6, y Red Hat Enterprise Linux 6, Squid habilita el acceso a todas las redes locales, definidas en el RFC1918. Es decir, permite el acceso a 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7, y fe80::/10.# Example rule allowing access from your local networks. # Adapt to list your (internal) IP networks from where browsing # should be allowed acl localnet src 10.0.0.0/8 # RFC1918 possible internal network acl localnet src 172.16.0.0/12 # RFC1918 possible internal network

acl localnet src 192.168.0.0/16 # RFC1918 possible internal network acl localnet src fc00::/7 # RFC 4193 local private network range acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines

Deshabilite todo lo anterior, colocando una almoadilla (# al inicio de cada lnea.# Example rule allowing access from your local networks. # Adapt to list your (internal) IP networks from where browsing # should be allowed # acl localnet src 10.0.0.0/8 # RFC1918 possible internal network # acl localnet src 172.16.0.0/12 # RFC1918 possible internal network # acl localnet src 192.168.0.0/16 # RFC1918 possible internal network # acl localnet src fc00::/7 # RFC 4193 local private network range # acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines

Regularmente una lista de control de acceso se establece con la siguiente sintaxis: acl [nombre de la lista] src [lo que compone a la lista] Si se desea establecer una lista de control de acceso que abarque a toda la red local, basta definir la IP correspondiente a la red y la mscara de la sub-red. Por ejemplo, si se tiene una red donde las mquinas tienen direcciones IP 192.168.70.n con mscara de sub-red de 24 bit, podemos utilizar lo siguiente: acl localnet src 192.168.70.0/24 Tambin puede definirse una Lista de Control de Acceso especificando un archivo localizado en cualquier parte del disco duro, y la cual contiene una lista de direcciones IP. Ejemplo: acl permitidos src "/etc/squid/listas/permitidos" El archivo /etc/squid/listas/permitidos tendra un contenido simiular al siguiente: 192.168.70.1 192.168.70.2 192.168.70.3 192.168.70.15 192.168.70.16 192.168.70.20 192.168.70.40 Lo anterior estara definiendo que la Lista de Control de Acceso denominada permitidos estara compuesta por las direcciones IP incluidas en el archivo /etc/squid/listas/permitidos.

Reglas de Control de Acceso.Estas definen si se permite o no el acceso hacia Squid. Se aplican a las Listas de Control de Acceso. Deben colocarse en la seccin de reglas de control de acceso definidas por el administrador, es decir, a partir de donde se localiza la siguiente leyenda: # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # La sintaxis bsica de una regla de control de acceso es la siguiente: http_access [deny o allow] [lista de control de acceso]

En el siguiente ejemplo se considera una regla que establece acceso permitido a Squid a la Lista de Control de Accesodenominada permitidos: http_access allow permitidos Tambin pueden definirse reglas valindose de la expresin !, la cual significa no. Pueden definirse, por ejemplo, dos listas de control de acceso, una denominada lista1 y otra denominada lista2, en la misma regla de control de acceso, en donde se asigna una expresin a una de estas. La siguiente establece que se permite el acceso a Squid a lo que comprenda lista1excepto aquello que comprenda lista2: http_access allow lista1 !lista2 Este tipo de reglas son tiles cuando se tiene un gran grupo de IP dentro de un rango de red al que se debe permitir acceso, y otro grupo dentro de la misma red al que se debe denegar el acceso.

Aplicando Listas y Reglas de control de acceso.Una vez comprendido el funcionamiento de la Listas y las Regla de Control de Acceso, procederemos a determinar cuales utilizar para nuestra configuracin.

Caso 1.Considerando como ejemplo que se dispone de una red 192.168.70.0/24, si se desea definir toda la red local, utilizaremos la siguiente lnea en la seccin de Listas de Control de Acceso: acl localnet src 192.168.70.0/24 Habiendo hecho lo anterior, la seccin de listas de control de acceso debe quedar ms o menos del siguiente modo: Listas de Control de Acceso: definicin de una red local completa # # Recommended minimum configuration: acl acl acl acl all src 0.0.0.0/0 manager proto cache_object localhost src 127.0.0.1/8 localnet src 192.168.70.0/24

A continuacin procedemos a aplicar la regla de control de acceso: http_access allow localnet Habiendo hecho lo anterior, la zona de reglas de control de acceso debera quedar de modo similar al siguiente: Reglas de control de acceso: Acceso a una Lista de Control de Acceso. # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # http_access allow localhost http_access allow localnet http_access deny all

La regla http_access allow localnet permite el acceso a Squid a la Lista de Control de Acceso denominada localnet, la cual est conformada por 192.168.70.0/24. Esto significa que cualquier mquina desde 192.168.70.1 hasta 192.168.70.254 podr acceder a Squid.

Caso 2.Si slo se desea permitir el acceso a Squid a ciertas direcciones IP de la red local, deberemos crear un archivo que contenga dicha lista. Genere el archivo /etc/squid/listas/localnet, dentro del cual se incluirn slo aquellas direcciones IP que desea confirmen la Lista de Control de acceso. Ejemplo: 192.168.70.1 192.168.70.2 192.168.70.3 192.168.70.15 192.168.70.16 192.168.70.20 192.168.70.40 Denominaremos a esta lista de control de acceso como localnet: acl localnet src "/etc/squid/listas/localnet" Habiendo hecho lo anterior, la seccin de listas de control de acceso debe quedar ms o menos del siguiente modo: Listas de Control de Acceso: definicin de una red local completa # # Recommended minimum configuration: acl acl acl acl all src 0.0.0.0/0 manager proto cache_object localhost src 127.0.0.1/255.255.255.255 localnet src "/etc/squid/listas/localnet"

A continuacin procedemos a aplicar la regla de control de acceso: http_access allow localnet Habiendo hecho lo anterior, la zona de reglas de control de acceso debera quedar de modo similar al siguiente: Reglas de control de acceso: Acceso a una Lista de Control de Acceso. # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # http_access allow localhost http_access allow localnet http_access deny all

La regla http_access allow localnet permite el acceso a Squid a la Lista de Control de Acceso denominada localnet, la cual est conformada por las direcciones IP especificadas en el archivo /etc/squid/listas/localnet. Esto significa que cualquier mquina no incluida en /etc/squid/listas/localnet no tendr acceso a Squid.

Parmetro cache_mgr.Este parmetro es de carcter informativo. De modo predefinido, si algo ocurre con el cach, como por ejemplo que muera el procesos, se enviar un mensaje de aviso a la cuenta webmaster del servidor. Puede especificarse una distinta si acaso se considera conveniente. cache_mgr [email protected]

Parmetro http_port.Este parmetro es utilizado para indicar el puerto a travs del cual escuchar peticiones Squid. EL valor predeterminado es 3128, es deicr, Squid escuchar peticiones a travs del puerto 3128/tcp. http_port 3128 El puerto estndar designado para servidores de cach de Internet (webcache) es el puerto 8080. http_port 8080 El parmetro permite establecer tambin si se quiere utilizar una direccin IP en particular. Esto aade mayor seguridad al servicio, pues si se tiene dos tarjetas de red, una con una direccin IP pblica, y otra con una direccin IP privada, se puede establecer que Squid solo permita conexiones desde la direccin IP privada. http_port 192.168.80.1:8080 Si se necesita configurar un servidor proxy en modo transparente, solo es necesario aadir la opcin intercept, misma que desde la versin 3.1 de Squid reemplaza a la opcin transparent. http_port 192.168.80.1:8080 intercept

Nota.Para configurar un servidor proxy en modo transparente en CentOS 5, y Red Hat EnterpriseLinux 5, y versiones anteriores, utilice la opcin transparente: http_port 192.168.80.1:8080 transparent

Parmetro cache_dir.Este parmetro se utiliza para establecer que tamao se desea que utilice Squid para almacenamiento de cach en el disco duro. De modo predefinido Squid utilizar un cach de 100 MB, dividido en jerarquas de 16 directorios subordinados, hasta 256 niveles cada uno: cache_dir ufs /var/spool/squid 100 16 256

Se puede incrementar el tamao del cach hasta donde lo desee el administrador. Mientras ms grande sea el cach, ms objetos se almacenarn en ste y por lo tanto se consumir menos el ancho de banda. La siguiente lnea establece un cach de 2 GB: cache_dir ufs /var/spool/squid 2048 16 256

Parmetro cache_mem.El parmetro cache_mem establece la cantidad ideal de memoria para lo siguiente: Objetos en trnsito. Objetos frecuentemente utilizados (Hot). Objetos negativamente almacenados en el cach.

Los datos de estos objetos se almacenan en bloques de 4 Kb. El parmetro cache_mem especifica un lmite mximo en el tamao total de bloques acomodados, donde los objetos en trnsito tienen mayor prioridad. Sin embargo los objetos frecuentemente utilizados (Hot), y aquellos negativamente almacenados en el cach, podrn utilizar la memoria sin utilizar hasta que esta sea requerida. De ser necesario, si un objeto en trnsito es mayor a la cantidad de memoria especificada,Squid exceder lo que sea necesario para satisfacer la peticin. De modo predeterminado, desde la versin 3.1 de Squid, se establecen 256 MB, que es ms que suficiente para el 99% de las necesidades. Si se dispone de cantidad suficiente de RAM en el servidor (al menos 2 GB RAM), puede especificarse una cantidad mayor, o bien, si se dispone de una cantidad menor de RAM en el servidor (menos de 1 GB RAM), puede especificar una cantidad menor. cache_mem 512 MB

Nota.En CentOS 5, y Red Hat EnterpriseLinux 5, y versiones anteriores, el valor predeterminado de cache_mem son 8 Mb, por lo cual puede incrementar este valor hasta donde se considere pertinente. cache_mem 32 MB

Parmetro cache_peer: caches padres y hermanos.El parmetro cache_peer se utiliza para especificar otros Servidores Proxy con cach en una jerarqua como padres o comohermanos. Es decir, definir si hay un Servidor Intermediario adelante o en paralelo. La sintaxis bsica es la siguiente: cache_peer servidor tipo http_port icp_port opciones Ejemplo: Si su cach va a estar trabajando detrs de otro servidor cache, es decir un cach padre, y considerando que el cach padre tiene una IP 192.168.70.1, escuchando peticiones HTTP en el puerto 8080 y peticiones ICP en puerto 3130(puerto utilizado de modo predefinido por Squid) ,especificando que no se almacenen en cach los objetos que ya estn presentes en el cach del Servidor Intermediario padre, utilice la siguiente lnea: cache_peer 192.168.70.1 parent 8080 3130 proxy-only Cuando se trabaja en redes muy grandes donde existen varios Servidores Intermediarios (Proxy) haciendo cach de contenido de Internet, es una buena idea hacer trabajar todos los cach entre si. Configurar caches vecinos como sibling (hermanos) tiene como beneficio el que se consultarn estos caches localizados en la red local antes de acceder hacia Internet y

consumir ancho de banda para acceder hacia un objeto que ya podra estar presente en otro error_directory /usr/share/squid/errors/es

Nota.En CentOS 5, y Red Hat Enterprise >Linux 5, y versiones anteriores, el valor predeterminado del parmetroerror_directory es /usr/share/squid/errors/English, y debe ser cambiado por el valor/usr/share/squid/errors/Spanish: error_directory /usr/share/squid/errors/Spanish

cach vecino. Ejemplo: Si su cach va a estar trabajando en paralelo junto con otros caches, es decir caches hermanos, y considerando los caches tienen IP 10.1.0.1, 10.2.0.1 y 10.3.0.1, todos escuchando peticiones HTTP en el puerto 8080 y peticiones ICP en puerto 3130, especificando que no se almacenen en cach los objetos que ya estn presentes en los caches hermanos, utilice las siguientes lneas: cache_peer 10.1.0.1 sibling 8080 3130 proxy-only cache_peer 10.2.0.1 sibling 8080 3130 proxy-only cache_peer 10.3.0.1 sibling 8080 3130 proxy-only Pueden hacerse combinaciones que de manera tal que se podran tener caches padres y hermanos trabajando en conjunto en una red local. Ejemplo: cache_peer cache_peer cache_peer cache_peer 10.0.0.1 10.1.0.1 10.2.0.1 10.3.0.1 parent 8080 3130 proxy-only sibling 8080 3130 proxy-only sibling 8080 3130 proxy-only sibling 8080 3130 proxy-only

En los casos anteriores, la resolucin de nombres se hace de manera local. Si se desea hacer que la resolucin de nombres se realice en el servidor padre, se puede utilizar algo similar a lo siguiente: cache_peer 10.0.0.1 parent 8080 3130 no-query no-digest default

Estableciendo el idioma de los mensajes mostrados por de Squid hacia el usuario.Squid incluye traduccin a distintos idiomas de las distintas pginas de error e informativas que son desplegadas en un momento dado durante su operacin. Dichas traducciones se pueden encontrar en /usr/share/squid/errors/. Para poder hacer uso de las pginas de error traducidas al espaol, slo es necesario cambiar el valor del parmetro error_directory de/usr/share/squid/errors/en, a /usr/share/squid/errors/es.

Iniciando, reiniciando y aadiendo el servicio al arranque del sistema.Una vez terminada la configuracin, ejecute el siguiente mandato para iniciar por primera vez Squid: service squid start Si necesita volver a cargar la configuracin para probar cambios realizados, sin detener el servicio, ejecute lo siguiente:

service squid restart Si necesita reiniciar para probar cambios hechos en la configuracin, considerando que este proceso puede llegar a demorar algunos minutos, ejecute lo siguiente: service squid restart Si desea que Squid inicie de manera automtica la prxima vez que inicie el sistema, ejecute lo siguiente: chkconfig squid on Lo anterior habilitar a Squid en todos los niveles de ejecucin.

Depuracin de erroresCualquier error al inicio de Squid slo significa que hubo errores de sintaxis, errores de dedo o bien se estn citando incorrectamente las rutas hacia los archivos de las Listas de Control de Acceso. Puede realizar diagnstico de problemas indicndole a Squid que vuelva a leer configuracin, lo cual devolver los errores que existan en el archivo /etc/squid/squid.conf. Cuando se trata de errores graves que no permiten iniciar el servicio, puede examinarse el contenido del archivo/var/log/squid/squid.out con el mandato less, more o cualquier otro visor de texto: service squid reload tail -80 /var/log/squid/squid.out

Ajustes para el muro corta-fuegos.Si se tiene poca experiencia con guiones de cortafuegos a travs de iptables, sugerimos utilizar Firestarter. ste permite configurar fcilmente tanto el enmascaramiento de IP como el muro corta-fuegos. Si se tiene un poco ms de experiencia, recomendamos utilizar Shorewall para el mismo fin puesto que se trata de una herramienta ms robusta y completa. Firestarter: http://www.fs-security.com/ Shorewall: http://www.shorewall.net/

Re-direccionamiento de peticiones a travs de iptables.En un momento dado se requerir tener salida transparente hacia Internet para ciertos servicios, pero al mismo tiempo se necesitar re-direccionar peticiones hacia servicio HTTP para pasar a travs del el puerto donde escucha peticiones Squid, como proxy transparente, es decir el puerto 8000/tcp, de modo que no haya salida alguna hacia alguna hacia servidores HTTPen el exterior sin que sta pase antes por Squid. No se puede hacer Servidor Intermediario Transparente para los protocolos HTTPS, FTP, GOPHER ni WAIS, por lo que dichos protocolos tendrn que ser filtrados a travs del NAT.

El re-direccionamiento se hace a travs de iptables. Considerando para este ejemplo que la red local se accede a travs de una interfaz eth0, el siguiente esquema ejemplifica un redireccionamiento: Lo anterior requiere un guin de cortafuegos funcional en un sistema con dos interfaces de red. Se encarga de que cualquier peticin hacia el puerto 80 (servicio HTTP) hecha desde la red local hacia el exterior, se re-direccionar hacia el puerto 8000 del servidor. Utilizando Firestarter, la regla anteriormente descrita se aade en el archivo /etc/firestarter/user-post.

Re-direccionamiento de peticiones a travs de la opcin REDIRECT en Shorewall.La accin REDIRECT en Shorewall permite redirigir peticiones hacia protocolo HTTP para hacerlas pasar a travs de Squid. En el siguiente ejemplo las peticiones hechas desde la zona que corresponde a la red local sern redirigidas hacia el puerto 8000 del cortafuegos, en donde est configurado Squid configurado como Servidor Proxy (Proxy) transparente.

Exclusin de sitios.En el caso de sitios que se quiera excluir de ser utilizados con Squid, es decir, sitios problemticos, se puede configurar en Shorewall que el acceso sea directo, con una configuracin similar a la del siguiente ejemplo, donde se excluye de pasar por Squid las peticiones dirigidas a las redes 201.144.108.0/24 (IMSS.gob.mx), y 200.33.74.0/24 (SAT.gob.mx), y se abre el paso directo desde la red local hacia esta red:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --toport 8000

REDIRECT

loc

8000

tcp

80

12. Una configuracin tpica del squid por si algn da pierdo la ma

http_port 3128 icp_port 3130 hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY cache_swap_low 90 cache_swap_high 95 maximum_object_size 4096 KB cache_dir ufs /var/spool/squid 100 16 256 cache_access_log /var/log/squid/access.log cache_log /var/log/squid/cache.log cache_store_log /var/log/squid/store.log client_netmask 255.255.255.0 redirect_program /usr/bin/squidGuard redirect_children 5 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.0/255.255.255.0 acl portatil src 192.168.0.0/255.255.255.0 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT http_access allow all http_access allow manager localhost portatil http_access deny manager http_access allow purge localhost portatil

http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access allow portatil http_access deny all icp_access allow all cache_effective_user proxy cache_effective_group proxy httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on

Para comenzar, la instalacin es sencilla en Ubuntu / Debian : sudo aptitude install squid Configuracin bsica de Squid El archivo de configuracin se encuentra en /etc/squid/ y se llama squid.conf, si lo observan es un archivo bastante grande, ya que squid como lo comentaba, es un servidor proxy bastante completo. Una configuracin bsica debe incluir, al menos, los parmetros que se indican a continuacin: http-port: Establece el puerto de escucha para squid (por defecto puerto 3128).

visible_hostname: nombre del equipo.

acl: a cada ACL o lista de control de acceso se le hace corresponder una regla de control de acceso(http_access) que es la que permite o deniega las conexiones definidas en cada acl. Parmetro cache_dir: Cuanto desea almacenar de Internet en el disco duro? Este parmetro se utiliza para establecer que tamao se desea que tenga el cach en el disco duro para Squid. Para entender esto un poco mejor, responda a esta pregunta: Cuanto desea almacenar de Internet en el disco duro? De modo predefinido Squid utilizar un cach de 100 MB, de modo tal que encontrar la siguiente lnea: cache_dir ufs /var/spool/squid 100 16 256 Se puede incrementar el tamao del cach hasta donde lo desee el administrador. Mientras ms grande sea el cach, ms objetos se almacenarn en ste y por lo tanto se utilizar menos el ancho de banda. La siguiente lnea establece un cach de 700 MB: cache_dir ufs /var/spool/squid 700 16 256 Los nmeros 16 y 256 significan que el directorio del cach contendr 16 directorios subordinados con 256 niveles cada uno. No modifique esto nmeros, no hay necesidad de hacerlo. Es muy importante considerar que si se especifica un determinado tamao de cach y ste excede al espacio real disponible en el disco duro, Squid se bloquear inevitablemente. Sea cauteloso con el tamao de cach especificado.

Ejemplo: Denegar la direccin www.youtube.com a todas las mquinas Abrimos y editamos el fichero de configuracion de squid squid.conf #Parmetros obligatorios: visible_hostname debian http_port 3128 cache_mem 64 MB cache_dir ufs /var/spool/squid 700 16 256 cache_access_log /var/log/squid/access.log cache_log /var/log/squid/cache.log #Listas de control de acceso: acl all src 0.0.0.0/0.0.0.0 acl denegado dstdomain www.youtube.com acl localhost src 127.0.0.1 #Control de acceso: http_access deny denegado !localhost http_access allow all error_directory /usr/share/squid/errors/Spanish En esta configuracin , se observa en el apartado de parmentros obligatorios el puerto de escucha, el nombre del servidor (si no sabes cual es el nombre de tu mquina, ve a una terminal y teclea hostname), tamao de memoria cache y las rutas; en el segundo apartado se encuentran las listas de control de acceso, las cuales se asigna el rango de ips, asignacin de dominio, etc; en el tercer apartado es el control de acceso, una vez asignadas las listas de control con http_access deny se deniegan ya sea ips dominios, y con http_access allow, se permite lo mismo, tmb por ah aparece una linea error_directory la cual muestra los mensajes de advertencia en idioma espaol. Reseteamos squid: # /etc/init.d/squid restart Si no aparece ningn mensaje de error entonces nuestro proxy debe de funcionar deacuerdo a lo establecido, para poder probar ve a un navegador de una mquina que este conectada en la misma LAN, ve a propiedades y habilita el uso de proxy, en la ip , hay que poner la ip de nuestra mquina que tiene el squid corriendo. Cuando hagan pruebas les bloquear www.youtube.com, pero si ponen youtube.com si los dejar entrar, para eso se utiliza otra lista de control de acceso: acl denegado url_regex /home/tuusuario/denegados Dnde /home/tuusuario/denegados es un simple archivo de texto que contiene la palabra youtube, con eso, todos los dominios youtube sern bloqueados.