squid

Upload: julio-contreras

Post on 17-Jul-2015

87 views

Category:

Documents


1 download

TRANSCRIPT

ADMINISTRACIN Squid

Implementar un proxy casero con Squid

PUERTO SEGURO

Un servidor proxy proporciona una navegacin ms segura y eficiente. Aunque existen soluciones proxy comerciales disponibles, todo lo que realmente necesitamos es Linux y un viejo PC en el desvn. POR GEERT VAN PAMELengo una red casera desde hace bastantes aos. Empec con un router usando Windows XP con ICS (Internet Connection Sharing) y una tarjeta Ethernet con varias interfaces de red. Las principales desventajas eran la inestabilidad, bajo rendimiento y falta

T

total de seguridad. Solucionar los problemas era totalmente imposible. La configuracin del firewall quedaba a merced de usuarios inexpertos, que podan pulsar aleatoriamente sobre la configuracin de seguridad como el que juega a la ruleta rusa.

Finalmente migr a Linux y configur un firewall con iptables en un Pentium II que haca de router. El firewall mantiene a los atacantes fuera de mi red, y registra el trfico entrante y saliente. Adems del firewall iptables, tambin configur un servidor proxy

Tabla1: Hardware recomendadoComponentes Necesarios Intel Pentium II CPU, o superior (Por qu no un Alpha Server sobrante?) 80 - 100 MB de memoria mnimo 1 ms discos duros IDE (podemos reutilizar 2 viejos discos duros: uno con 1GB del sistema y el swap y el otro con 3GB de cach, ms el directorio /home) 2 tarjetas Ethernet, minihub, modem fast Ethernet y router wireless o hub CDROM, lector DVD Especificaciones 350 Mhz Cuanto ms, mejor 4GB mnimo 100 Mbit/s si es posible El software se distribuye principalmente por DVD

56

Nmero 14

WWW.LINUX-MAGAZINE.ES

Squid ADMINISTRACIN

Squid para mejorar el rendimiento de Internet, filtrar los molestos popups y bloquear URLs peligrosas. Un servidor proxy Squid filtra el trfico Web y cachea los archivos a los que se accede frecuentemente. Tambin limita el uso del ancho de banda, acelera el acceso a Web y nos permite filtrar URLs. El bloqueo centralizado de publicidad y descargas peligrosas es rentable y transparente para el usuario final. Squid es una implementacin completa en software libre y de alto rendimiento de un servidor proxy. Proporciona amplios controles de acceso y se integra con facilidad con el firewall iptables. En mi caso, el servidor proxy Squid y el firewall iptables trabajan juntos para proteger mi red de intrusos y HTML peligrosos. Encontraremos abundantes artculos acerca de firewalls en libros, revistas y pginas Web. (Vanse [1] y [2], por ejemplo). El servidor proxy Squid, por otro lado, no est bien documentado del todo, especialmente cuando hablamos de pequeas redes caseras como la ma. En este artculo, vamos a mostrar cmo configurar Squid.

de la casa usando cable UTP estndar o una conexin wireless. La tabla 1 muestra el hardware recomendado para la mquina firewall. Suponiendo que el firewall est ya funcionando, el siguiente paso es configurar Squid. Se encuentra disponible en Internet en [3] o en uno de los mirrors [4] como tar.gz (compilado desde las fuentes). Puede instalarse fcilmente usando uno de los siguientes comandos:rpm -i /cdrom/RedHat/RPMS/U squid-2.4.STABLE7-4.i386.rpmU # Red Hat 8 rpm -i /cdrom/Fedora/RPMS/U squid-2.5.STABLE6-3.i386.rpm U # Fedora Core 3 rpm -i /cdrom/.../U squid-2.5.STABLE6-6.i586.rpmU # SuSE 9.2

figuracin lleguen al mundo exterior cuando se navegue por la Web:vi /etc/squid/squid.conf ... anonymize_headers deny U From Server Via User-Agent forwarded_for off strip_query_terms on

En el momento de escribir estas lneas, la versin estable de Squid es la 2.5.

ComenzamosEl primer paso es encontrar el hardware necesario. La Figura 1 muestra la configuracin de red del Pentium II que se ha utilizado como firewall y servidor proxy. Este sistema firewall debera operar con una mnima intervencin humana, por lo que tras la configuracin del sistema, se pueden desconectar el ratn, teclado y monitor. Puede que tengamos que ajustar la configuracin de la BIOS para que el ordenador pueda trabajar sin el teclado. El objetivo es poder colocar todo el sistema en el desvn, donde ni lo oigamos. Desde el minihub mostrado en la Figura 1, se pueden bajar las escaleras hasta la red

Configurar SquidUna vez que ha sido instalado, ser necesario configurarlo. Squid tiene un archivo de configuracin centralizado. Cada vez que cambia este archivo, la configuracin debe recargarse con el comando /sbin/ init.d/ squid reload. Es posible editar el archivo de configuracin con un editor de textos. Existe una descripcin detallada de la configuracin en el archivo squid.conf, aunque la explicacin a veces es algo tcnica y complicada de entender. Esta seccin resume algunas configuraciones importantes del archivo squid.conf. En primer lugar, se habr de evitar que ciertos metadatos relacionados con la con-

Ntese que no pueden hacerse annimos Referer y WWW-Authenticate ya que de lo contrario, los mecanismos de autenticacin y control de acceso no funcionarn. forwarded_for off significa que la direccin IP del servidor proxy no ser enviada al exterior. Con strip_query_terms on no se registran en el log los parmetros de las URL ms all del signo ?. Cuando este parmetro est en off, se registra la URL completa en los archivos log de Squid. Esta caracterstica puede ayudar a depurar fallos en los filtros de Quid, pero tambin puede violar las reglas de privacidad. La siguiente configuracin identifica el host de Squid, el dominio (interno) donde opera la mquina y el nombre de usuario responsable del servidor. Ntese el punto delante del dominio. Ms adelante, encontramos el nombre del servidor local de DNS y el nmero de nombres de dominio a cachear en el servidor Squid.visible_hostname squid append_domain .mshome.net cache_mgr sysman dns_nameservers 192.168.0.1 dns_testnames router.mshome.net fqdncache_size 1024 http_port 80 icp_port 0

ADMINISTRACIN Squid

http_port es el puerto usado por el servidor proxy. Se puede elegir cualquiera, siempre que la configuracin no entre en conflicto con otros puertos de nuestro router. Una eleccin comn es la 8080 o la 80. El puerto por defecto de Squid, el 3128, no es especialmente fcil de recordar. No se est usando cp_port, por lo que lo fijamos a 0. Esta configuracin sincroniza los servidores proxy. Con log_mime_hdrs on, es posible hacer visibles las cabeceras mime en el archivo access.log.

Evitar BloqueosSquid necesita guardar su cach en algn lugar del disco duro. La cach es un rbol de directorios. Con la opcin cache_dir en el archivo squid.conf, se puede especificar la configuracin con caractersticas como las siguientes: mecanismo de I/O del disco aufs ubicacin de la cach en el disco /var/cache/squid cantidad de espacio en disco que puede ser usado por el servidor proxy 2.5 GB nmero de directorios principales 16 subdirectorios 256 Por ejemplo: Las opciones para mtodos de acceso a disco son las siguientes: ufs acceso a disco clsico (demasiada I/O puede ralentizar el servidor Squid) aufs UFS asncrona con hilos, menos riesgo de conflictos de acceso al disco diskd demonio diskd, evita tambin el peligro de conflicto de acceso al disco pero usando ms memoria. UFS es el sistema de I/O de archivos clsico de UNIX. Se recomienda usar aufs para evitar cuellos de botella. (Al usar aufs, van a existir menos procesos).# ls -ld /var/cache/squid lrwxrwxrwx 1 root rootU 19 Nov 22 00:42 U /var/cache/squid -> U /volset/cache/squidFigura 1: Configuracin bsica de una LAN Ethernet.

El espacio en disco se distribuye por todos los directorios. Normalmente se esperara una distribucin pareja a lo largo de los directorios, pero en la prctica, se acepta una cierta variacin en la distribucin. Es posible encontrar configuraciones ms complejas utilizando mltiples discos, pero para el uso casero, una estructura de directorios es suficiente.

Especificacin del Formato de LogPuede elegirse entre el formato de log de Squid y el formato estndar de servidor Web usando el parmetro emulate_httpd_log. Cuando el parmetro se fija a on, se usa el formato de Web. Si se fija a off, obtendremos ms detalles con el formato Squid. Ver [7] para mayor informacin acerca del anlisis de archivos log de Squid.

Sustitucin de la CachEl servidor proxy usa un algoritmo LRU (Least Recently Used). Estudios detallados de HP Laboratories [6] han revelado que un algoritmo LRU no es siempre la opcin ms inteligente. La configuracin GDSF mantiene pequeos objetos populares en la cach, mientras que elimina los ms grandes y menos usados, incrementando de esta manera el rendimiento global.cache_replacement_policyU heap GDSF memory_replacement_policyU heap GDSF

Jerarqua ProxyEl proxy Squid puede trabajar de manera jerrquica. Si se desea evitar el proxy padre para algunos destinos, se puede habilitar una resolucin directa. El navegador usar an nuestro proxy local!acl direct-domain U dstdomain .turboline.be always_direct allow U direct-domain acl direct-path urlpath_regexU -i "/etc/squid/direct-path.reg" always_direct allow direct-path

E s re c o m e n d a b l e m a n t e n e r l a u b i c a c i n e s t n d a r p a ra l a c a c h en /var/cache/squid, y de all c re a r u n e n l a c e s i m b l i c o a l d i re c t o r i o re a l d e c a c h . S i s e m u eve a o t ro d i s c o p o r m o t i vo s d e re n d i m i e n t o o d e c a p a c i d a d , slo ser necesario modificar el enlace simblico.

Los objetos grandes requeridos una sola vez pueden colocar fuera muchos objetos pequeos, por lo que ser conveniente que limitemos el tamao mximo de objeto para la cach:cache_mem 20 MB maximum_object_sizeU 16384 KB maximum_object_sizeU _in_memory 2048 KB

Algunos ISPs permiten usar su servidor proxy para visitar sus propias pginas Web incluso aunque no se sea cliente. Esto puede ayudar a acelerar las visitas a sus pginas. Cuanto ms cercano est el proxy a las pginas originales, ms probabilidad hay de que la pgina se cachee. Debido a que nuestro propio ISP es ms lejano, el ISP tender menos a cachear los contenidos de su competidor

58

Nmero 14

WWW.LINUX-MAGAZINE.ES

Squid ADMINISTRACIN

cache_peer proxy.tiscali.beU parent 3128 3130 U no-query default cache_peer_domain U proxy.tiscali.be .tiscali.be

no-query significa que no usamos, o no podemos usar, ICP (Internet Caching Protocol), vase [8]. Puede obtenerse la misma funcionalidad usando expresiones regulares, pero esto proporcionacache_peer proxy.tiscali.beU parent 3128 3130 U no-query default acl tiscali-proxy U dstdom_regex -i U \.tiscali\.be$ cache_peer_access U proxy.tiscali.be allow U tiscali-proxy

mayor libertad. El ACL puede incluir tambin una expresin regular (regex para abreviar) con la URL usando una construccin url_regex.

Para Squid, las expresiones regulares pueden especificarse inmediatamente, o pueden estar en un nombre de fichero entre dobles comillas, en cuyo caso el archivo debera contener una expresin regex por lnea, sin lneas vacas. La -i (ignorar maysculas) significa que se usarn comparaciones sin diferenciacin entre maysculas y minsculas. Si se est configurando un sistema con mltiples proxys, es posible especificar un round-robin para acelerar la resolucin de las pginas y minimizar el retraso cuando uno de los servidores no est disponible. Recordemos que la mayora de los navegadores establecen conexiones en paralelo para obtener todos los elementos de una pgina. Si se usan mltiples servidores proxy para obtener estos elementos, la respuesta debera ser ms rpida. Los archivos FTP se descargan normalmente una sola vez, por lo que generalmente no se desear cachearlos, excepto cuando se descarguen repetidamente. As mismo, las pginas locales no se cachean normalmente, debido a que ya residen en nuestra red:

acl FTP proto FTP always_direct allow FTP acl local-domain dstdomain U .mshome.net always_direct allow U local-domain acl localnet-dst dst U 192.168.0.0/24 always_direct allow U localnet-dst

Tabla 2:Gua para ACL el orden de las reglas es importante primero se listan todas las reglas de denegacin se ejecuta la primera regla coincidente el resto de las reglas se ignora la ltima regla debera ser permite todo

Listado 1: Bloqueando pginas no buscadas01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 acl block-ip dst "/etc/squid/block-ip.reg" deny_info filter_spam block-ip http_access deny block-ip acl block-hosts dstdom_regex -i "/etc/squid/block-hosts.reg" deny_info filter_spam block-hosts http_access deny block-hosts acl noblock-url url_regex -i "/etc/squid/noblock-url.reg" http_access allow noblock-url Safe_ports block-path urlpath_regex -i "/etc/squid/block-path.reg" deny_info filter_spam block-path http_access deny block-path acl block-url url_regex -i "/etc/squid/block-url.reg" deny_info filter_spam block-url http_access deny block-url

cache_peer 80.200.248.199 U parent 8080 7 U no-query round-robin cache_peer 80.200.248.200 U parent 8080 7 U no-query round-robin ... cache_peer 80.200.248.207U parent 8080 7 U no-query round-robin

Filtrado con SquidEn las secciones precedentes se han comentado algunas configuraciones importantes de Squid. Tambin se ha dicho que las listas ACL (Access Control Lists) pueden usarse para permitir acceso directo a las pginas sin usar el proxy padre. En esta seccin, se examinar cmo usar las listas ACL para un control ms detallado al acceso a Internet.

La tabla 2 proporciona una gua para la creacin de listas ACL. Puede ser una buena idea permitir la navegacin WYSIWYG (lo-que-ves-es-lo-que-tienes). Si no se quieren ver ciertas pginas o marcos, se pueden bloquear automticamente las correspondientes URLs en el servidor proxy. Es posible filtrar por: dominios de cliente o servidor subredes IP del cliente o servidor ruta URL URLs completas, incluyendo parmetros palabras clave protocolos: HTTP, FTP mtodos: GET, POST, HEAD, CONNECT da y hora tipo de navegador nombre de usuario El Listado 1 muestra ejemplos de comandos que bloquean pginas no deseadas. El script del Listado 2 har invisibles las pginas no deseadas. Cada vez que Squid ejecuta la etiqueta deny_info, enva el archivo /etc/squid/errors/filter_spam al navegador en lugar de a la pgina Web filtrando efectivamente los objetos no deseados. La marca 07 08