En un mundo donde las comunicaciones basadas en dispositivos electrónicos;
ya se han convertido en una forma de vida; las comunicaciones fiables y
rápidas son una necesidad vital.
Nosotros que día a día convivimos con computadoras, servidores, redes,
routers, switchs y demás. Es una necesidad el establecer un buen punto de
inicio para una buena estructura organizacional, una vez establecida criterios
como la topología de la red, por ejemplo.
Lo que pretendo en el siguiente escrito es exponer de manera directa y
concisa el concepto de web proxy, el mecanismo de su funcionamiento y
implantación de este a nivel de un empresa. No se tocan tópicos como la
instalación y configuración. Los HOWTO's o Paper's relativos a ese tema son muy
completos, y seria reiterativo el plasmar eso en el presente texto.
INTRODUCCION
En el ámbito de la seguridad informática; por lógica; es mucho mas fiable la
vigilancia de un solo punto de comunicación, que la vigilancia de varios
puntos de acceso. Claro que se puede dar a todas las estaciones de trabajo de
una empresa IP's públicos. Pero son tantos puntos de entrada a nuestra red
como IP's públicos se hayan asignado. Claro que se puede controlar con un buen
firewall en cada PC, pero se parte de la premisa de que es recomendable el
controlar y vigilar un solo punto de comunicación.
El caso mas típico es la de una intranet empresarial con clientes o
estaciones de trabajo a los que se les permite acceso a otra red o internet.
La siguiente figura visualiza de mejor manera esta idea. :)

Figura 1
Si se desea dar acceso a internet; específicamente acceso Web; por premisa
de seguridad. Los clientes de la intranet estarán asignados con IP's
'privados', llámese 192.168.1.0/24 u otro rango. Y solo será visible desde
'afuera' el IP publico asignado al proxy. Y las PC's de los usuarios se
conectaran directamente a nuestro IP que actúa como gateway, si le hemos
asignado la subred anterior, puede ser el IP, 192.168.1.1.
Pero mas allá de que los IP se estén 'acabando' o que IPv6 venga a
solucionar el inconveniente con un mayor rango de IP, mayor seguridad, así
como otras características; como mencione anteriormente, es preferible vigilar
un solo punto de acceso.
Intuyo hasta este punto que ya se ha implementado un firewall o se hace a la
par con la implantación del proxy. Lo que se detallara a continuación, esta
basado en GNU/Linux y Software Libre.
Se asume que ya se ha hecho un "enmascaramiento", y se hace uso de IP
Tables. Es decir que los clientes con IP's privadas pueden hacer peticiones
web al server e internet, y por ende las 'respuestas' ser redireccionadas a
los clientes que originalmente hicieron la petición correspondiente. Ya que
las peticiones que se realicen con "dichos" IP's no será enrutadas
adecuadamente.
PROXY
Es aquí donde se tangibiliza el concepto de un servidor web Proxy. En el
mundo Linux, esto se hace con el popular SQUID. Las siguientes características
se coligan de la introducción anterior, y engloban el concepto de un proxy.
a. Proporciona una capa extra de seguridad.
b. Aísla a los usuarios de la intranet.
c. Un Proxy actúa como un 'cache', es decir un almacenamiento dinámico de
información con mayor acceso.
d. Se realiza una vigilancia, control y acceso transparente para el usuario.
Entre las características para un administrador, puedo citar las
siguientes:
e. Podemos hacer usos de las características inherentes al SQUID para definir
listas de control de acceso, tanto para usuarios, como para url's.
f. Permite el control de acceso a diferentes sitios web. Podemos utilizar
para este propósito al software GUARDIAN. (*)
g. Permite reportes detallados del uso de internet, usuarios, ancho de banda,
horas de acceso, etc. Se puede utilizar para este propósito a SQUINT o
SARG.
[+] El concepto es simple, como lo muestra la siguiente imagen. Si la petición
ya ha sido realizada por otro cliente y este se conserva en 'cache'; dicha
petición NO saldrá a internet; con el consiguiente ahorro de ancho de
banda y rápido acceso, ya que la información se obtendrá del 'cache' del
servidor (PETICION1 + RESPUESTA2). Y consecuentemente si la petición es 'nueva', esta petición, si
saldrá a la internet u otra red. (PETICION1+PETICION2+RESPUESTA2+RESPUESTA2)

Figura 2
DETALLES
Los tres puntos antes mencionados (e, f, g) son de suma importancia para el
encargado de administrar el servidor proxy, ya que el control y vigilancia de
lo que los clientes hacen en internet no es cosa de Juego. Claro que esto debe
estar bien definido en un reglamento interno de la empresa; de esta manera; si
se presentarse algún inconveniente con el acceso a determinado contenido y la
posterior acción por parte de la empresa, el usuario no podrá alegar el no
conocimiento de los estatutos.
(+) Dada la naturaleza dinámica de internet, el controlar sitios por
ciertos criterios como contenidos, se hace complicado. Un ejemplo simple es la
censura de la palabra SEXO, ya que de encontrar esta palabra en la sitio web
el software filtraría ese contenido; cuando en un simple formulario se puede
encontrar esa palabra y que no tenga nada que ver con sitios para adultos.
La solución a esto es; como en el control de SPAM; NO solamente usar un
criterio para filtrar contenido, sino la utilización de otros criterios. Es
por ello que algunos Programas utilizan Bases de Datos que almacenan estos
criterios de filtrados. Pero como dije, dada la naturaleza dinámica de
internet, se puede minimizar pero no controlar en absoluto.
Una vez definidas las políticas de acceso a internet en la empresa, y con
pleno conocimiento por parte de los usuarios de ella, el administrador será
simplemente un vigilante del buen uso, mas no un controlador de contenido.
Pero eso es en un caso ideal, ya que siempre por lo menos una vez se accesa a
contenido denominado no 'permitido'.
Cabe acotar que en los dos puntos citados anteriormente, se hace uso de
Software desarrollo externamente, no esta dentro de SQUID. Estos programas se
basan en los logs del squid y analizando las peticiones realizadas al
servidor.
IMPLANTACION DE SQUID
Dada la naturaleza de un servidor Web proxy; es decir, aquí se
concentraran todas las peticiones web realizadas por las estaciones de
trabajo; se debe de tener en consideración los siguientes criterios, respecto
al Hardware:
a. Tiempo de Búsqueda aleatoria del Dispositivo de almacenamiento.
b. Cantidad de memoria del sistema.
c. Poder de CPU.
El tiempo de búsqueda del HD, no solo se refiere al ello mismo, sino al
hecho de la performance del sistema y de la capacidad de 'cache' del
servidor. Todo esto dependerá de la cantidad de usuarios de la empresa, de
la cantidad de peticiones que se realicen por hora o día, entre otros
detalles.
Un ejemplo simple para clarificar la idea es el siguiente:
Supongamos que la trasmisión máxima de download que nos proporcionada
nuestro proveedor de acceso a internet es de 25 KB / seg al multiplicar esto
por 3600 segundos (1 Horas), nos da un aproximado de 98.8 Megas / Hora. Y esto
multiplicado por 24 Horas al día, nos da un aproximando de 2.1 Gigas por
día. Esto, obviamente en el caso 'tope' y de un acceso continuo y constante
de nuestro ancho de banda. Es decir que debemos tener un mínimo de
almacenamiento para cache en disco de aproximadamente 2.1 Gigas.
Otro punto a tomar en consideración es la memoria del sistema, SQUID
mantiene un índice de objetos en memoria y obviamente es mucho mas rápido el
accesar a memoria RAM que a SWAP.
Sigamos con el ejemplo anterior; si cada objeto en disco ocupa 75 bytes y
el promedio de los objetos en internet es de 13Kb, con 2.1 Gigas,
almacenaremos alrededor de 150000 objetos. A 75 bytes de RAM por objeto,
necesitamos aproximadamente 11 megas solamente para el índice de objetos de
SQUID.
Respecto al poder de CPU, SQUID no es muy exigente en este aspecto. Mas
Memoria y más Discos ayudan mucho más.
INSTALACION Y CONFIGURACION
No es el propósito; como lo mencione al principio del presente escrito; el
explicar estos 2 acápites al detalle. Lo que si deseo comentar es que la
opción de hacerlo por paquetes proporcionados por las diferentes
distribuciones o por fuentes, depende mucho de la manera de trabajar del
administrador del sistema.
Distribuciones como RedHat por ejemplo; proporcionan un relativamente; buen
promedio de respuesta ante la detección de algún problema en los paquetes RPM.
El uso de fuentes permite un mayor control en la instalación y configuración
de SQUID, recomendado para aquellos que nos gusta curiosear, o examinar el
comportamiento del proxy ante ciertos eventos.
NOTAS FINALES
El Uso de un Proxy es un mecanismo a tomar en consideración, para mejorar no
solo la performance de la intranet; dadas las características antes
mencionadas; sino también como un punto mas a favor de la seguridad de la
empresa.
Dadas las muchas características de configuración de SQUID y el hecho de ser
Software Libre; hacen de SQUID un software de muy buen desarrollo, soporte y
calidad.
Todo esto dicho, sin ningún apasionamiento. ;)
BIBLIOGRAFIA
Squid Web Proxy Cache / SQUID A User's Guide / http://www.squid-cache.org
SecurityFocus / http://www.securityfocus.com
DansGuardian / http://dansguardian.org
SARG / http://web.onda.com.br/orso/
SQUINT / http://ledge.co.za/software/squint/
HOWTO Masquerading
Mi experiencia.
|