Anda di halaman 1dari 6

Seguridad en Linux El servidor Proxy Squid

Breve historia de Squid En el principio era el servidor HTTP CERN. Adems de funcionar como un servidor HTTP, fue tambin el primer proxy cach. El mdulo de almacenamiento en cach fue escrito por Ari Luotonen en 1994. Ese mismo ao, el Internet Research Task Force Group sobre el Resource Discovery (IRTF-RD) inici el proyecto Harvest. Se trata de "un conjunto integrado de herramientas para recoger, extraer, organizar, bscar, cach y reproducir " la informacin de Internet. Me un al proyecto Harvest cerca del final de 1994. Aunque la mayora de la gente usaba Harvest como motor de bsqueda local (o distribuido), el componente Object Cach era muy popular tambin. El cach Harvest se jact de tres grandes mejoras en la cach del CERN: el uso del sistema de archivos ms rpido, un diseo de nico proceso, y almacenamiento en cach de las jerarquas a travs del protocolo de Cach de Internet. Hacia el final de 1995, muchos miembros del equipo de Harvest se trasladaron al apasionante mundo de las compaas recin creadas basadas en Internet. Los autores originales del cdigo de cach de Harvest, Peter Danzig y Anawat Chankhunthod, lo convirtieron en un producto comercial. Su empresa fue ms tarde adquirida por Network Appliance. A principios de 1996, me incorpor al Laboratorio Nacional de Investigacin de Aplicaciones de Red (NLANR) para trabajar en el proyecto Cach de Recursos de Informacin (IRCache), financiado por la National Science Foundation. En relacin con este proyecto, que tom el cdigo de cach de Harvest, se le cambi el nombre a SQUID, y se liber bajo la licencia GNU General Public License. Desde ese tiempo Squid ha crecido en tamao y caractersticas. Ahora soporta un nmero de cosas increbles tales como el redireccionamiento de URL, de trfico, controles sofisticados de acceso, numerosos mdulos de autenticacin, opciones avanzadas de almacenamiento en disco, HTTP intercepcin, y el modo sustituto (tambin conocido como HTTP servidor de aceleracin). La financiacin del proyecto IRCache termin en julio de 2000. Hoy en da, un nmero de voluntarios siguen desarrollando y apoyando Squid. A veces, recibimos financiamiento de otro tipo de apoyo de empresas que se benefician de Squid. Mirando hacia el futuro, estamos reescribiendo Squid en C + + y, al mismo tiempo, en la correcin de un nmero de problemas de diseo en el cdigo ms antiguo que se limita a las nuevas prestaciones. Estamos aadiendo apoyo para protocolos como Edge Side Incluye (ESI) e Internet Content Adaptation Protocol (ICAP). Tambin tenemos previsto hacer Squid con soporte IPv6. Unos pocos desarrolladores estn constantemente haciendo correr mejor Squid en plataformas Microsoft Windows. Por ltimo, vamos a aadir ms y ms HTTP/1.1 caractersticas y el trabajo hacia el cumplimiento pleno con la ltima especificacin del protocolo.
Tomado del libro Squid The definitive Guide de Duane Wessels
Publisher: O'Reilly Pub Date: January 2004 ISBN: 0-596-00162-2 Pages: 496

Profesor Julio Gonzales jgonzales@uni.edu.pe

Pgina 1

Seguridad en Linux
Qu es un Servidor 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 o apoderado (el que tiene el poder sobre otro). Un Servidor Intermediario (Proxy) 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 servidores de red ubicados en la Internet. Durante el proceso ocurre lo siguiente: Cliente se conecta hacia un Servidor Intermediario (Proxy). Cliente solicita una conexin, fichero u otro recurso disponible en un servidor distinto. Servidor Proxy proporciona el recurso ya sea conectndose hacia el servidor especificado o sirviendo ste desde un cach. En algunos casos el Servidor Proxy puede alterar la solicitud del cliente o bien la respuesta del servidor para diversos propsitos. Los Servidores Proxys generalmente se hacen trabajar simultneamente como firewalls 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 Proxys 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 Proxy busca el resultado del URL dentro del cach. Si ste es encontrado, el Servidor Proxy responde al cliente proporcionado inmediatamente el contenido solicitado. Si el contenido solicitado no estuviera disponible en el cach, el Servidor Proxy 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.

Profesor Julio Gonzales jgonzales@uni.edu.pe

Pgina 2

Seguridad en Linux
DIAGRAMA LOGICO DE FUNCIONAMIENTO (Aproximado)

Instalacin y configuracin del servidor proxy Squid. La instalacin de aplicaciones en servidores basados en Linux por lo general se resuelve utilizando la herramienta de instalacin de la distribucin utilizada (Debian, CentOS, Mandriva, etc); sin embargo sera mejor utilizar las herramientas en formato fuente (squid-3.1.1.tar.gz). La pregunta es: porque no usar simplemente la versin pre-compilada binaria y esperar que funcione bien? La primera razn es que el cdigo de squid necesita saber acerca de ciertos parmetros del sistema operativo. De forma particular, el mximo nmero de descriptores de archivos abiertos. El script configure prueba estos valores antes de compilar el programa. Si se instala squid compilado en un sistema con ciertos valores y se utiliza en otro con diferentes valores, se pueden encontrar errores de funcionamiento. Otra razn para usar las fuentes en vez de los pre-compilados, son las opciones disponibles al tiempo de compilacin. Si instala los binarios compilados por otros, y estos no incluyen las opciones que usted necesita, deber compilar squid en forma personalizada. Para nuestra suerte, Debian ya posee los binarios listos para instalar incluyendo la versin 3.0 de Squid. Si el lector desea, puede descargar los fuentes desde:

http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE25.tar.gz

Profesor Julio Gonzales jgonzales@uni.edu.pe

Pgina 3

Seguridad en Linux
Usando los mirrors de Debian, simplemente ejecute el siguiente comando

# aptitude install squid


Si su sistema est bien configurado, no habr problemas durante la instalacin de los paquetes.

Parmetros de configuracin inicial del Squid.-

El archivo de configuracin de squid normalmente se ubica en el directorio /etc/squid. Sin embargo, si usted compilo squid desde los fuentes, revise las opciones de compilacin para determinar el directorio personalizado de instalacin del archivo de configuracin del squid. Asumiremos que el archivo se encuentra ubicado en el directorio /etc/squid. Entonces la ruta absoluta al archivo ser: /etc/squid/squid.conf Parmetro http_port.- Se utiliza para establecer el puerto a travs del cual squid escucha las peticiones desde los clientes. Existen diversas opciones para este parmetro; sin embargo tambin puede utilizarse para establecer el proxy transparente para la red local. Ejemplo: http_port 3128 http_port 3128 transparent proxy transparente http_port 192.168.1.1:3128 192.168.1.1 # establece el puerto a 3128 # establece el puerto a 3128 con # de igual forma pero enlazado a la IP # de manera exclusiva Parmetro coredump_dir.- Establece la ubicacin donde squid almacenara el cache. Por lo general se ubica en el directorio /var/spool/squid. Ejempo: coredump_dir /var/spool/squid # Ubicacin del cache de squid

Parmetro cache_mem.- Este parmetro establece cuanto de memoria RAM utilizara squid como cache de objetos (solicitudes de los usuarios). Ejemplo: cache_mem 8 MB

Profesor Julio Gonzales jgonzales@uni.edu.pe

Pgina 4

Seguridad en Linux
Parmetro cache_dir.- El parmetro cache_dir se utiliza para establecer que tamao se desea que tenga el cach en el disco duro para Squid. Ejemplo: cache_dir ufs /var/spool/squid 100 16 256 Esto establece un cache en disco con 100 MB de capacidad, con 16 directorios subordinados y 256 niveles subordinados bajo cada uno de los 16 anteriores. Si desea un cache de 780 MB, 24 directorios de primer nivel con 180 subniveles cada uno, la lnea deber verse de esta manera: cache_dir ufs /var/spool/squid 780 24 180 Parmetro access_log.- Establece la ubicacin del archivo de log y su formato de almacenamiento y/o registro. Por defecto utiliza el formato squid, pero se puede modificar usando la etiqueta logformat. Ejemplo: access_log /var/log/squid/access.log squid

Estableciendo el control de acceso: etiqueta acl.Esta etiqueta permite crear los elementos que sern procesados por el demonio squid y estarn sujetas a las restricciones que el usuario establezca para ellos. Se definen listas de control de acceso (Access Control List ACL) para cada elemento que utilice el demonio squid ya sea como miembro de la red local o como elemento de restriccin de navegacin. Cada lista de control de acceso definida debe empezar con un nombre y un tipo, seguido de los argumentos segn el tipo especificado de lista. Los argumentos pueden estar definidos explcitamente o agrupados en archivos cuyo nombre debe estar entre comillas dobles. Ejemplos de listas de control de acceso: a) b) c) d) acl acl acl acl redlocal src 192.168.1.0/24 adultos src /etc/squid/bloqueados/sin-acceso gerencia src 192.168.1.34-192.168.1.45/32 porno url_regex src -i /etc/squid/negados

En estos ejemplos redlocal, adultos, gerencia y prono son los nombres de las listas de control definidas. La etiqueta src establece los parmetros que forman parte de las listas. Se pueden establecer los parmetros en archivos como en el ejemplo b) y d). En estos casos, se debe colocar un argumento por lnea. La etiqueta url_regex define otro tipo de lista la cual busca la presencia de los argumentos almacenados en el archivo sin-acceso en la URL de navegacin del navegador web del cliente. Luego, se aplica las restricciones correspondientes.

Profesor Julio Gonzales jgonzales@uni.edu.pe

Pgina 5

Seguridad en Linux
Restricciones o permisos a las listas de control: etiqueta http_access.Esta etiqueta permite establecer la salida a la navegacin o negar dicho permiso segn lo establezca en administrador de la red. Una vez definida la lista de control y establecidos sus argumentos, procedemos a permitir o negar la salida segn criterio. Ejemplo: Para el ejemplo anterior, la lista c) debe navegar sin ninguna restriccin; entonces establecemos su etiqueta de la siguiente manera:

acl gerencia src 192.168.1.34-192.168.1.45/32 http_access allow gerencia De esta forma, los miembros de la lista gerencia pueden empezar a navegar sin problema a travs del proxy squid. Las listas adultos y porno definen listas con elementos restringidos para su navegacin; por lo tanto ambas estarn definidas de la siguiente manera: acl adultos src /etc/squid/bloqueados/sin-acceso acl porno url_regex src -i /etc/squid/negados http_access deny adultos porno Si las listas de control de acceso pertenecen todas a una misma red local, podemos establecer nuestras reglas de la siguiente manera: acl acl acl acl gerencia src 192.168.1.34-192.168.1.45/32 adultos src /etc/squid/bloqueados/sin-acceso porno url_regex src -i /etc/squid/negados redlocal src 192.168.1.0/24 allow deny deny allow gerencia adultos porno redlocal

http_access http_access http_access http_access

Reinicie el demonio squid ( /etc/init.d/squid restart ) y verifique la navegacin de los clientes y las restricciones correspondientes. No se olvide de crear los archivos sinacceso y negados con los argumentos a restringir, por ejemplo pueden contener lo siguiente: Archivo /etc/squid/bloqueados/sin-acceso girls playboy sex youtube Archivo /etc/squid/negados lesbianas porno cholotube

Profesor Julio Gonzales jgonzales@uni.edu.pe

Pgina 6