Download - El Servidor Squid (Cap40)

Transcript

Captulo 40: Squid

SquidTabla de contenidos: 40.1. Qu es Squid? 40.2. Software requerido. 40.3. Configuracin bsica de un servidor squid. 40.3.1. Parmetros iniciales: 40.3.1.1. Parmetro http_port: Qu puerto utilizar para Squid? 40.3.1.2. Parmetro cache_mem. 40.3.1.3. Parmetro cache_dir: Cunto desea almacenar de Internet en el disco duro? 40.3.1.4. Parmetro ftp_user. 40.3.2. Controles de acceso: 40.3.2.1. Listas de control de acceso. 40.3.2.2. Reglas de Control de Acceso. 40.3.2.3. Aplicando Listas y Reglas de control de acceso. 40.3.2.3.1. Primer caso: Configurar Squid de acuerdo a los siguientes datos: 40.3.2.3.2. Segundo caso: Configurar Squid permitiendo slo el acceso a determinadas mquinas. Sujtese a los siguientes datos: 40.3.3. Otros parmetros: 40.3.3.1. Parmetro cache_mgr. 40.3.3.2. Parmetro cache_peer: caches padres y hermanos. 40.3.4. Cach con aceleracin. 40.3.5. Estableciendo el idioma por defecto. 40.3.6. Iniciando, reiniciando y aadiendo el servicio al arranque del sistema. 40.3.7. Depuracin de errores.

Sistema Operativo Linux 40.4. Recursos adicionales: 40.4.1. Documentacin instalada. 40.4.2. Sitios web tiles.

Captulo 40: Squid

Squid40.. Qu es Squid?Squid es un servicio Proxy Cache para el Web, diseado para correr en sistemas UNIX y Linux, es muy confiable, robusto y verstil, es un software libre (proviene de OSF) y es producto del esfuerzo desinterezado de muchos voluntarios. Squid soporta: Proxy Cach para HTTP, FTP, y otros URLs. Proxy para SSL. Jerarquas de cach. Cach para ICP, HTCP, CARP. Cach transparente. WCCP (Squid v2.3 and above). Control de acceso extensivo. Aceleracin de servidor http. SNMP. Cach de bsqueda de DNS.

Figura 40.1. Squid (el calamar). Nota: Squid no puede funcionar como proxy para servicios como SMTP, POP3, TELNET, SSH, etc.

Sistema Operativo Linux

40.. Software requeridoPara cumplimentar un servidor Proxy cach Squid estable, es necesario contar como mnimo con el siguiente software: Versin de squid igual o superior a 2.5.STABLE1. Versin de httpd igual o superior a 2.0.x.

Si durante la instalacin de Linux Fedora Core, instal completamente el software para un servidor web (en el rubro Servidores), entonces habr instalado lo siguiente: [root@fedora3 ~]# rpm -qa squid* squid-2.5.STABLE6-3 [root@fedora3 ~]# rpm -qa http* httpd-2.0.52-3 httpd-suexec-2.0.52-3 httpd-manual-2.0.52-3Nota: Para ubicar qu aplicaciones se instala en Linux Fedora Core 3, revise el Captulo 11. Conociendo algunas aplicaciones en Linux. Particularmente la seccin 11.4.2.

Tenga presente tambin si su sistema operativo actual tiene algn parche. De ser as actualice su sistema para no tener problemas ms adelante con cuestiones de seguridad. El ncleo de Fedora Core 3 es el siguiente: [root@fedora3 ~]# rpm -qa kernel* kernel-2.6.9-1.667 kernel-utils-2.4-13.1.39 Para configurar un servidor Proxy Cach Squid ser necesario usar IPTABLES, que permitir generar las reglas necesarias para el guin de Enmascaramiento de IP. La versin de Linux Fedora Core 3 es: [root@fedora3 ~]# rpm -qa iptables* iptables-1.2.11-3.1

4

Captulo 40: Squid En el caso de que no tenga instalado squid y httpd, entonces ejecute lo siguiente y se instalar todo lo necesario junto con sus dependencias: [root@fedora3 ~]# yum -y install squid httpd Y en caso de querer actualizar su kernel ejecute: [root@fedora3 ~]# yum -y install kernelNota: No es recomendable utilizar versiones de kernel(s) anteriores a la 2.4.21.

Sistema Operativo Linux

40.. Configuracin bsica de un servidor squidEl servicio Squid utiliza el archivo de configuracin squid.conf, este archivo est ubicado en /etc/squid/. Para hacer modificaciones a este archivo use su editor de texto preferido. Para tener una idea sobre el contenido de este archivo, a continuacin se presenta algunas partes del archivo /etc/squid/squid.conf por defecto:

Captulo 40: Squid

Sistema Operativo Linux

Captulo 40: Squid

Sistema Operativo Linux

0

Captulo 40: Squid

Sistema Operativo Linux

Captulo 40: Squid

Sistema Operativo Linux

4

Captulo 40: Squid

Sistema Operativo Linux

Captulo 40: Squid

Sistema Operativo Linux

Captulo 40: Squid

Sistema Operativo Linux

0

Captulo 40: Squid

Sistema Operativo Linux

Captulo 40: Squid

Sistema Operativo Linux

4

Captulo 40: Squid

Sistema Operativo Linux

Captulo 40: Squid

Sistema Operativo Linux

Captulo 40: Squid

En este archivo apreciar un gran nmero de parmetros, de los cuales se recomienda configurar los siguientes: http_port, cache_dir, Al menos una Lista de Control de Acceso, Al menos una Regla de Control de Acceso, httpd_accel_host, httpd_accel_port, httpd_accel_with_proxy.

40... Parmetros iniciales 40.... Parmetro http_port: Que puerto utilizar para Squid?El servidor Squid por defecto utilizar el puerto 3128 para atender los pedidos, sin embargo se puede configurar para que los pedidos se atiendan por otro puerto o que lo haga por varios puertos a la vez. Veamos algunos casos: Proxy Transparente: En el caso de un Proxy Transparente, es costumbre configurar el puerto 80. Tal vez esto traera problemas si se interacta tambin con un servidor web, que usa por defecto el mismo puerto. En este caso se recomienda o cambiar de puerto al servidor http o deshabilitarlo. Servicio de cach WWW: Algunos programas utilizados comnmente por los usuarios suelen traer por defecto el puerto 8080 para el servicio de proxy. Si se quiere aprovechar sto en nuestro favor se puede especificar que Squid escuche los pedidos en ese puerto tambin.

Sistema Operativo Linux Entonces configure el parmetro http_port as: #Default: # http_port 3128 http_port 3128 http_port 8080 Seguridad en la red: Si desea incrementar la seguridad, puede vincular el servicio a una direccin IP a la que slo se pueda acceder desde la red local. Considerando que el servidor utilizado posee una IP 192.168.1.243, puede hacerse lo siguiente: #Default: # http_port 3128 http_port 192.168.1.243:3128 http_port 192.168.1.243:8080

40.... Parmetro cache_memEl parmetro cache_mem establece la cantidad ideal de memoria para lo siguiente: Objetos en trnsito. Objetos Hot. Objetos negativamente almacenados en el cach.

Los datos de estos objetos se almacenan en bloques de 4 Kb. El parmetro cache_mem especfica un lmite mximo en el tamao total de bloques acomodados, donde los objetos en trnsito tienen mayor prioridad. Sin embargo los objetos Hot y aquellos negativamente almacenados en el cach podrn utilizar la memoria no utilizada hasta que sta sea requerida. De ser necesario, si un objeto en trnsito requiere mayor memoria a la cantidad de memoria especificada, Squid exceder lo que sea necesario para satisfacer la peticin. Por defecto se establecen 8 MB. Puede especificarse una cantidad mayor si as se considera necesario, dependiendo esto de los hbitos de los usuarios o necesidades establecidas por el administrador.

0

Captulo 40: Squid Si se posee un servidor con al menos 128 MB de RAM, establezca 16 MB como valor para este parmetro: cache_mem 16 MB

40.... Parmetro cache_dir: Cunto 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: Cunto desea almacenar de Internet en el disco duro? Por defecto Squid utilizar un cache de 100 MB, de modo tal que encontrar la siguiente lnea: cache_dir ufs /var/spool/squid 100 16 256 Los nmeros 16 y 256 significan que el directorio del cach contendr 16 subdirectorios con 256 niveles cada uno. No modifique estos nmeros, no hay necesidad de hacerlo.Nota:

Mientrasmsgrandeeselcach,msobjetosdealmacenarnensteyporlotantose utilizarmenoselanchodebanda. Perosiestetamaoexcedealespaciorealdisponibleeneldiscoduro,Squidbloquear inevitablemente.

40...4. Parmetro ftp_userPara acceder a un servidor FTP configure la siguiente declaracin: ftp_user Al acceder a un servidor FTP de manera annima, por defecto Squid enviar como contrasea Squid@. Si se desea que el acceso annimo a los servidores FTP sea ms informativo, o bien si se desea acceder a servidores FTP que validan la autenticidad de la direccin de correo especificada como contrasea, puede especificarse la direccin de correo electrnico que uno considere pertinente. ftp_user [email protected]

Sistema Operativo Linux

40... Controles de accesoEs 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 al servicio Squid. Procedamos a entender como definir unas y otras.

40.... Listas de control de acceso.Regularmente una lista de control de acceso se establece siguiendo la siguiente sintaxis: acl [nombre de la lista] src [lo que compone a la lista] Si uno desea establecer una lista de control de acceso que defina una red sencilla en donde las mquinas tienen asignadas direcciones IP clase C (192.168.1.n) con mscara de sub-red: 255.255.255.0, entonces configure lo siguiente: acl mi_red_local src 192.168.1.0/255.255.255.0 Tambin puede definirse una Lista de Control de Acceso invocando un archivo localizado en cualquier parte del disco duro, y en el cual se en cuenta una lista de direcciones IP. Ejemplo: acl con_permiso src /etc/squid/con_permiso El archivo /etc/squid/con_permiso contendra las direcciones IP a las que se les permite el acceso. El archivo es algo parecido a lo siguiente: 192.168.1.21 192.168.1.25 192.168.1.31 192.168.1.45

40.... Reglas de Control de AccesoEstas reglas definen si se permite o no el acceso a Squid. Estas reglas 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

Captulo 40: Squid La sintaxis bsica es la siguiente: http_access [deny o allow] [lista de control de acceso] En el siguiente ejemplo consideramos una regla que establece acceso permitido a Squid a la Lista de Control de Acceso denominada con_acceso: http_access allow con_acceso Tambin pueden definirse reglas valindose de la expresin !, la cual significa excepcin. 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 stas. La siguiente declaracin establece que se permite el acceso a Squid a lo que comprenda lista1 excepto aquello que comprenda lista2: http_access allow lista1 !lista2 Este tipo de reglas son tiles cuando se tiene un gran grupo de direcciones 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.

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

40..... Primer caso: Configurar Squid de acuerdo a los siguientes datos: Red: 192.168.1.0/255.255.255.0. Configurar: Toda la red. Listas de Control de Acceso: toda_la_red.

Tomando en consideracin los datos proporcionados, se puede definir la lista de control de acceso siguiente: # Recommended minimum configuration: acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl toda_la_red src 192.168.1.0/255.255.255.0

Sistema Operativo Linux Y las reglas de Control de Acceso para la Lista de Control de Acceso: toda_la_red, sera: # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # http_access allow localhost http_access allow toda_la_red http_access deny all # Atencin aqu: La regla http_access allow toda_la_red permite el acceso a Squid a la Lista de Control de Acceso denominada toda_la_red, la cual est conformada por 192.168.1.0/255.255.255.0. sto significa que cualquier mquina desde 192.168.1.1 hasta 192.168.1.254 podr acceder a Squid.

40..... Segundo caso: Configurar Squid permitiendo slo el acceso a determinadas mquinas. Sujtese a los siguientes datos: Red: 192.168.1.0/255.255.255.0. Configurar: Solo las mquinas con direcciones IP:192.168.1.21-30. El archivo que contiene las direcciones IP se llama: lista_21_30. Listas de Control de Acceso: grupo_trabajo.

Cree el archivo /etc/squid/lista_21_30, que contiene las direcciones IP de las mquinas. El archivo /etc/squid/lista_21_30 se vera as: 192.168.1.21 192.168.1.22 192.168.1.29 192.168.1.30 La lista de acceso grupo_trabajo sera: acl grupo_trabajo src /etc/squid/lista_21_30. La regla de control de acceso sera: http_access allow grupo_trabajo.

4

Captulo 40: Squid En conclucin esta configuracin se vera as: # Recommended minimum configuration: acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl grupo_trabajo src /etc/squid/lista_21_30 # # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # http_access allow localhost http_access allow grupo_trabajo http_access deny all # La regla http_access allow grupo_trabajo permite el acceso a Squid a la Lista de Control de Acceso denominada grupo_trabajo, la cual est conformada por las direcciones IP especificadas en el archivo /etc/squid/lista_21_30. sto significa que cualquier mquina no incluida en /etc/squid/lista_21_30 no tendr acceso a Squid.

40... Otros parmetros40.... Parmetro cache_mgrEste parmetro se usa para informar a travs de un e-mail que existen problemas con el cach. La declaracin tiene la siguiente sintaxis: cache_mgr Por ejemplo si los procesos se cancelan debido a que no hay cach entonces, por defecto, se enviar un e-mail al usuario administrador del cach local, en este acaso es el super-usuario root. Puede especificarse otra cuenta diferente, por ejemplo: cache_mgr naragon@mi_dominio.net

Sistema Operativo Linux

40.... Parmetro cache_peer: caches padres y hermanosEl parmetro cache_peer se utiliza para especificar otros proxy-cache en una jerarqua como padres o como hermanos; es decir, definir si hay un proxy adelante o en paralelo. La sntaxis bsica es la siguiente: cache_peer servidor tipo http_port icp_port opciones Ejemplo: Si su cache va a estar trabajando detrs de otro servidor cach, es decir un cach padre, y considerando que el cach padre tiene una IP 192.168.1.1, escuchando pedidos HTTP en el puerto 8080 y pedidos ICP en puerto 3130 (puerto utilizado por defecto por Squid), especificando que no se almacenen en cach los objetos que ya estn presentes en el cach del proxy padre, utilice la siguiente lnea: cache_peer 192.168.1.1 parent 8080 3130 proxy-only Cuando se trabaja en redes muy grandes donde existen varios servidores proxy haciendo cach de contenido de Internet, es una buena idea hacer trabajar todos los cach entre s. Configurar caches vecinos como sibling (hermanos) tiene como beneficio el que se consultarn estos cachs 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 cach vecino. Ejemplo: Si su cach va a estar trabajando en paralelo junto con otros cachs, es decir cachs hermanos, y considerando los cachs 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 cachs 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 cachs padres y hermanos trabajando en conjunto en una red local. Ejemplo: cache_peer 10.0.0.1 parent 8080 3130 proxy-only 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

Captulo 40: Squid

40..4. Cach con aceleracinCuando un usuario hace un pedido en Internet, ste es almacenado en el cach de Squid. Si otro usuario hace el mismo pedido, y ste no ha sufrido modificacin alguna desde que lo accedi el usuario anterior, Squid mostrar el que ya se encuentra en el cach en lugar de volver a descargarlo desde Internet. Proxy Acelerado: Opciones para Proxy Convencional. Esta funcin permite navegar rpidamente y optimizar la utilizacin del ancho de banda. En la seccin HTTPD-ACCELERATOR OPTIONS habilite los siguientes parmetros: httpd_accel_host virtual httpd_accel_port 0 httpd_accel_with_proxy on Proxy Acelerado: Opciones para Proxy Transparente. Si se trata de un Proxy transparente deben utilizarse con las siguientes opciones, considerando que se har uso del cach de un servidor HTTP (Apache) como auxiliar: # Debe especificarse la direccin IP de cualquier servidor HTTP # en la red local o bien el valor virtual httpd_accel_host 192.168.1.243 httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header onNota: Para aquellos usuarios que utilizan un browser como Internet Explorer, se le recomienda migrar a la versin 6.0 que tiene soporte para los proxies transparentes.

Proxy Acelerado: Opciones para Proxy Transparente para redes con Internet Exlorer 5.5 y versiones anteriores. # Debe especificarse la direccin IP de cualquier servidor HTTP # en la red local o bien el valor virtual httpd_accel_host 192.168.1.243 httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on ie_refresh on

Sistema Operativo LinuxNota: Por defecto el parmetro httpd_accel_with_proxy viene con el valor off, es importante no olvidar cambiar este valor por on.

Proxy Acelerado: Regla de iptables. La configuracin de Squid como proxy transparente slo requiere complementarse utilizando una regla de iptables que se encargar de redireccionar los pedidos, hacindolas pasar por el puerto 8080. # Considerando que la red local accede a travs de eth0 y que Squid escucha los # pedidos por el puerto 8080, se utiliza la siguiente lnea: /sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

40... Estableciendo el idioma por defectoEl servicio Squid incluye traduccin a distintos idiomas de las distintas pginas de error e informativas que son desplegadas en un momento dado. Dichas traducciones se pueden encontrar en /usr/lib/squid/errors/. Para poder hacer uso de las pginas de error traducidas al espaol, es necesario cambiar un enlace simblico localizado en /etc/squid/errors para que apunte hacia /usr/lib/squid/errors/Spanish, en lugar de hacerlo hacia: /usr/lib/squid/errors/English. Elimine primero el enlace simblico actual: [root@fedora3 ~]# rm -f /etc/squid/errors Coloque un nuevo enlace simblico apuntando hacia el directorio con los archivos correspondientes a los errores traducidos al espaol. [root@fedora3 ~]# ln -s /usr/share/squid/errors/Spanish /etc/squid/errorsNota: Este enlace simblico debe regenerarse cada vez que se actualizado squid ya sea a travs de yum, up2date o manualmente con el comando rpm.

Captulo 40: Squid

40... Iniciando, reiniciando y aadiendo el servicio al arranque del sistema Una vez terminada la configuracin, ejecute el siguiente comando para iniciar por primera vez Squid: [root@fedora3 ~]# /sbin/service squid start Si necesita reiniciar para probar cambios hechos en la configuracin, ejecute lo siguiente: [root@fedora3 ~]# /sbin/service squid resstart Si desea que Squid inicie de manera automtica la prxima vez que inicie el sistema, ejecute lo siguiente: [root@fedora3 ~]# /sbin/chkconfig squid on Lo anterior habilitar a Squid en los niveles de corrida 3, 4 y 5.

40... Depuracin de errores

Cualquier error al inicio de squid slo significa que hubo errores de sintaxis o bien se estn configurando 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 /etc/squid/squid.conf. [root@fedora3 ~]# /sbin/service squid reload Tambin puede iniciar Squid directamente desde la lnea de comandos especificando el modo de depuracin: [root@fedora3 ~]# squid -d 5

Sistema Operativo Linux

40.4. Recursos adicionalesLa siguiente es una lista con la documentacin adicional sobre el servicio Squid.

40.4.. Documentacin instalada /usr/share/doc/squid-: Contiene informacin abundante sobre Squid, en diferentes formatos: texto y html.Nota: La versin de Squid es 2.5.STABLE6.

/usr/share/doc/squid/README: Contiene informacin sencilla sobre Squid. Adems, hay una pgina man squid que describe al servidor proxy cach Squid. http://www.squid-cache.org/: Este sitio muestra abundante informacin sobre Squid Web Proxy Cache.

40.4.. Sitios web tiles

40