Proxy
Un proxy,
o servidor proxy, en una red informática, es un servidor (un programa o sistema informático), que sirve
de intermediario en las peticiones de recursos que realiza un cliente (A) a
otro servidor (C). Por ejemplo, si una hipotética máquina A solicita un recurso a C, lo hará mediante una
petición a B, que a
su vez trasladará la petición a C; de esta forma C no sabrá que la petición procedió
originalmente de A.
Esta situación estratégica de punto intermedio suele ser aprovechada para
soportar una serie de funcionalidades: control de acceso, registro del tráfico,
prohibir cierto tipo de tráfico, mejorar el rendimiento, mantener el anonimato,
proporcionar Caché web, etc.; este último
sirve para acelerar y mejorar la experiencia del usuario mediante permisos que
guardará la web, esto se debe a que la próxima vez que se visiten las páginas
web no se extraerá información de la web si no que se recuperara información de
la caché.
1.
Características
La palabra
inglesa proxy significa procurador en
español.
·
El uso más común es el de servidor
proxy, que es un ordenador que intercepta las conexiones de red que un
cliente hace a un servidor de destino.
·
De ellos, el más famoso es el servidor
proxy web (comúnmente conocido solamente como «proxy»).
Intercepta la navegación de los clientes por páginas web, por varios motivos
posibles: seguridad, rendimiento, anonimato, etc.
·
También existen proxy para otros
protocolos, como el proxy de FTP.
·
Proxy (patrón de diseño) también
es un patrón de diseño (programación) con el
mismo esquema que el proxy de red.
Como se
ve, proxy tiene un significado muy general, aunque siempre es
sinónimo de intermediario. Cuando un equipo de la red desea acceder
a una información o recurso, es realmente el proxy quien realiza la
comunicación y a continuación traslada el resultado al equipo que la solicitó.
Hay dos
tipos de proxy atendiendo a quien es el que quiere implementar la política del
proxy:
·
proxy local: En este caso el que quiere implementar la política es el mismo que
hace la petición. Por eso se le llama local. Suelen estar en la misma máquina
que el cliente que hace las peticiones. Son muy usados para que el cliente
pueda controlar el tráfico y pueda establecer reglas de filtrado que por
ejemplo pueden asegurar que no se revela información privada (Proxys de
filtrado para mejora de la privacidad).
·
proxy externo: El que quiere implementar la política del proxy es una entidad
externa. Por eso se le llama externo. Se suelen usar para implementar cacheos,
bloquear contenidos, control del tráfico, compartir IP, etc
1.1 Ventajas
En
general (no sólo en informática), los proxy hacen posible:
·
Control: sólo el intermediario hace el trabajo real, por tanto se
pueden limitar y restringir los derechos de los usuarios, y dar permisos sólo
al proxy.
·
Ahorro. Sólo uno de los usuarios (el proxy) ha de estar
preparado para hacer el trabajo real. Con estar preparado queremos decir que es
el único que necesita los recursos necesarios para hacer esa funcionalidad.
Ejemplos de recursos necesarios para hacer la función pueden ser la capacidad y
lógica de cómputo o la dirección de red externa (IP).
·
Velocidad. Si varios clientes van a pedir el mismo recurso, el
proxy puede hacer caché:
guardar la respuesta de una petición para darla directamente cuando otro
usuario la pida. Así no tiene que volver a contactar con el destino, y acaba
más rápido.
·
Filtrado. El proxy puede negarse a responder algunas peticiones si
detecta que están prohibidas.
·
Modificación. Como intermediario que es, un proxy puede falsificar
información, o modificarla siguiendo un algoritmo.
1.2
Desventajas
En
general (no sólo en informática), el uso de un intermediario puede provocar:
·
Anonimato. Si todos los usuarios se identifican como uno sólo, es
difícil que el recurso accedido pueda diferenciarlos. Pero esto puede ser malo,
por ejemplo cuando hay que hacer necesariamente la identificación.
·
Abuso. Al estar dispuesto a recibir peticiones de muchos usuarios y
responderlas, es posible que haga algún trabajo que no toque. Por tanto, ha de
controlar quién tiene acceso y quién no a sus servicios, cosa que normalmente
es muy difícil.
·
Carga. Un proxy ha de hacer el trabajo de muchos usuarios.
·
Intromisión. Es un paso más entre origen y destino, y algunos
usuarios pueden no querer pasar por el proxy. Y menos si hace de caché y
guarda copias de los datos.
·
Incoherencia. Si hace de caché, es posible que se equivoque y dé una
respuesta antigua cuando hay una más reciente en el recurso de destino. En realidad
este problema no existe con los servidores proxy actuales, ya que se conectan con el servidor remoto
para comprobar que la versión que tiene en caché sigue siendo la misma que la
existente en el servidor remoto.
·
Irregularidad. El hecho de que el proxy represente a más de un usuario
da problemas en muchos escenarios, en concreto los que presuponen una
comunicación directa entre 1 emisor y 1 receptor (como TCP/IP).
2. Aplicaciones
El
concepto de proxy es aplicado de muy distintas formas para proporcionar
funcionalidades específicas.
1.1 Proxy
Caché
Conserva
el contenido solicitado por el usuario para acelerar la respuesta en futuras
peticiones de la misma información de la misma máquina u otras. Habitualmente
se trata de proxy HTTP/HTTPS accediendo a contenido web.
1.2 Proxy de
Web
Se
trata de un proxy para una aplicación específica: el acceso a la web con los
protocolos HTTP y HTTPS, y accesoriamente FTP. Aparte de la utilidad general de un proxy puede
proporcionar una caché compartida para las páginas web y contenidos descargados, actuando entonces como servidor proxy-cache.
Esta caché es
compartida por múltiples usuarios con la consiguiente mejora en los tiempos de
acceso para consultas coincidentes y liberando de carga a los enlaces de acceso
a Internet.
·
Funcionamiento:
·
El usuario realiza una petición (por
ejemplo, en un navegador web) de un recurso de Internet (una página web o cualquier otro archivo) especificado por
una URL.
·
Cuando el proxy caché recibe
la petición, busca la URL resultante en su caché local. Si la encuentra,
contrasta la fecha y hora de la versión de la página demanda con el servidor
remoto. Si la página no ha cambiado desde que se cargo en caché la devuelve
inmediatamente, ahorrándose mucho tráfico dado que solo envía un paquete por la
red para comprobar la versión. Si la versión es antigua o simplemente no se
encuentra en la caché, lo solicita al servidor remoto, lo devuelve al cliente
que lo pidió y guarda o actualiza una copia en su caché para futuras
peticiones.
2.2.1 Posibles
usos
Los
proxys web pueden aportar una serie de funcionalidades interesantes en
distintos ámbitos:
·
Reducción
del tráfico mediante la
implementación de caché en
el proxy. Las peticiones de páginas Web se hacen al servidor Proxy y no a
Internet directamente. Por lo tanto se aligera el tráfico en la red y descarga
los servidores destino, a los que llegan menos peticiones.
El caché utiliza normalmente un algoritmo configurable
para determinar cuándo un documento está obsoleto y debe ser eliminado de la
caché. Como parámetros de configuración utiliza la antigüedad, tamaño e
histórico de acceso. Dos de esos algoritmos básicos son el LRU (el usado menos recientemente, en inglés "Least
Recently Used") y el LFU (el usado menos frecuentemente, "Least Frequently
Used").
·
Mejora de la
velocidad en tiempo de
respuesta mediante la implementación de caché en
el proxy. El servidor Proxy crea un caché que evita transferencias idénticas de
la información entre servidores durante un tiempo (configurado por el
administrador) así que el usuario recibe una respuesta más rápida. Por ejemplo
supongamos que tenemos un ISP que tiene un servidor Proxy con caché. Si un
cliente de ese ISP manda una petición por ejemplo a Google esta llegará al servidor Proxy que tiene este ISP y no irá
directamente a la dirección IP del dominio de Google. Esta página concreta suele ser muy solicitada
por un alto porcentaje de usuarios, por lo tanto el ISP la retiene en su Proxy
por un cierto tiempo y crea una respuesta en mucho menor tiempo. Cuando el
usuario crea una búsqueda en Google el servidor Proxy ya no es utilizado; el
ISP envía su petición y el cliente recibe su respuesta ahora sí desde Google.
Los programas P2P se pueden aprovechar de la cache proporcionada
por algunos proxy Es el llamado Web caché.
Por ejemplo es usado en Lphant y
algunos Mods del Emule.
·
El proxy puede servir para
implementar funciones de filtrado
de contenidos. Para ello es necesaria la configuración de una serie de
restricciones que indiquen lo que no se permite. Observar que esta
funcionalidad puede ser aprovechada no sólo para que ciertos usuarios no
accedan a ciertos contenidos sino también para filtrar ciertos ficheros que se
pueden considerar como peligrosos como pueden ser virus y otros contenidos hostiles servidos por servidores web
remotos.
·
Un proxy puede permitir esconder al servidor web la
identidad del que solicita
cierto contenido. El servidor web lo único que detecta es que la ip del proxy
solicita cierto contenido. Sin embargo no puede determinar la ip origen de la
petición. Además, si se usa una caché, puede darse el caso de que el contenido
sea accedido muchas más veces que las detectadas por el servidor web que aloja
ese contenido.
·
Los proxy pueden ser aprovechados
para dar un servicio web a una demanda
de usuarios superior a la que
sería posible sin ellos.
·
El servidor proxy puede modificar los contenidos que sirven los servidores web
originales. Puede haber diferentes motivaciones para hacer esto. Veamos algunos
ejemplos:
·
Algunos proxy pueden cambiar el formato de las páginas web
para un propósito o una audiencia específicos (Ej. mostrar una página en un
teléfono móvil o una PDA) traduciendo los contenidos.
·
Hay proxy que modifican el tráfico
web para mejorar la privacidad del tráfico web con el servidor. Para ello se
establecen unas reglas que el proxy tiene que cumplir. Por ejemplo el proxy
puede ser configurado para bloquear direcciones y Cookies, para modificar cabeceras
de las peticiones o quitar javas cript que se considere peligroso.
Es frecuente el uso de este tipo de proxy en las propias máquinas
de los usuarios (proxy locales) para implementar un paso intermedio y que las
peticiones no sean liberadas/recibidas a/de la red sin haber sido previamente
limpiadas de información o contenido peligroso o privado. Este tipo de proxy es
típico en entornos donde hay mucha preocupación sobre la privacidad y se suele
usar como paso previo a la petición del contenido a través de una red que persiga el anonimato como puede ser Tor. Los
programas más frecuentes para hacer este tipo de funcionalidad son:
·
Privoxy:
Se centra en el contenido web. No presta servicio de cache. Analiza el tráfico
basándose en reglas predefinidas que se asocian a direcciones especificadas con
expresiones regulares y que aplica a cabeceras, contenido, etc. Es altamente
configurable. Tiene extensa documentación.
·
Polipo: Tiene características que lo hacen más rápido que privoxy (cacheo,
pipeline, uso inteligente de rango de peticiones). Su desventaja es que no
viene configurado por defecto para proveer anonimicidad a nivel de la capa de
aplicación.
El
servidor proxy proporciona un punto desde el que se puede gestionar de forma centralizada
el tráfico web de muchos usuarios. Eso puede aprovecharse para muchas funciones
adicionales a las típicas vistas anteriormente. Por ejemplo puede usarse para
el establecimiento de controlar
el tráfico de web de
individuos concretos, establecer
cómo se va a llegar a los servidores web de los cuales se quiere obtener los contenidos (por
ejemplo, el proxy puede configurarse para que en lugar de obtener los
contenidos directamente, lo haga a través de la red Tor).
2.2.2
Inconvenientes
·
Si se realiza un servicio de caché, las
páginas mostradas pueden no estar actualizadas si éstas han sido modificadas
desde la última carga que realizó el proxy caché.
Un diseñador de páginas web puede indicar en el contenido de su
web que los navegadores no hagan una caché de sus páginas, pero este método no
funciona habitualmente para un proxy.
·
El hecho de acceder a Internet a
través de un Proxy, en vez de mediante conexión directa, dificulta (necesario
configurar adecuadamente el proxy) realizar operaciones avanzadas a través de
algunos puertos o protocolos.
·
Almacenar las páginas y objetos que
los usuarios solicitan puede suponer una violación de la intimidad para algunas
personas.
2.2 Aplicaciones
Web Proxy
Su
funcionamiento se basa en el de un proxy HTTP/HTTPS, pero en este caso el
usuario accede desde el navegador web a este servicio de forma manual a través una Aplicación
Web. Ese servidor HTTP,
el intermediario, mediante una URLrecibe
la petición, accede al servidor de la web solicitada y devuelve el contenido
dentro una página propia.
Proxy SOCKS
1 Los servidores SOCKS se diferencian de otros proxy por utilizar en vez de HTTP
un protocolo específico, el protocolo SOCKS. El programa cliente es a la vez
cliente HTTP y cliente SOCKS. El cliente negocia una conexión con el servidor
proxy SOCKS usando
el protocolo SOCKS de nivel 5, capa de sesión, del modelo OSI. Una vez establecida la conexión todas la comunicaciones
entre el cliente y proxy se realizan usando el protocolo SOCKS. El cliente le
dice al proxy SOCKS qué es lo que quiere y el proxy se comunica con el servidor
web externo, obtiene los resultados y se los manda al cliente. De esta forma el
servidor externo solo tiene que estar accesible desde el proxy SOCKS que es el
que se va a comunicar con él.
El
cliente que se comunica con SOCKS puede estar en la propia aplicación (Ej. Firefox, putty), o bien en la pila de protocolos TCP/IP a
donde la aplicación enviará los paquetes a un túnel SOCKS. En el proxy SOCKS es
habitual implementar, como en la mayoría de proxy autenticación y registro de
las sesiones.
En
los orígenes de la web fue un protocolo de acceso a web popular, pero el rápido
desarrollo de los proxies HTTP o incluso de NAT y otras opciones de
aseguramiento de las comunicaciones TCP/IP lo hizo caer en desuso prácticamente
absoluto llegado el siglo
XXI.
2.4 Proxies
transparentes
Muchas
organizaciones (incluyendo empresas, colegios y familias) usan los proxies para
reforzar las políticas de uso de la red o para proporcionar seguridad y
servicios de caché. Normalmente, un proxy Web o NAT no es transparente a la
aplicación cliente: debe ser configurada para usar el proxy, manualmente. Por
lo tanto, el usuario puede evadir el proxy cambiando simplemente la
configuración.
Un proxy transparente combina un servidor proxy con un cortafuegos de manera que las conexiones son interceptadas y desviadas
hacia el proxy sin necesidad de configuración en el cliente, y habitualmente
sin que el propio usuario conozca de su existencia. Este tipo de proxy es
habitualmente utilizado por las empresas proveedoras de acceso de Internet.
2.5 Proxy
inverso (Reverse Proxy)
Un
proxy inverso (reverse proxy en
inglés) es un servidor proxy situado en el alojamiento de uno o más servidores
web. Todo el tráfico procedente de Internet y con destino en alguno de esos
servidores web es recibido por el servidor proxy. Hay varias razones para ello:
·
Seguridad: el servidor proxy es una
capa adicional de defensa y por lo tanto protege a los servidores web.
·
Cifrado / Aceleración SSL: cuando se
crea un sitio web seguro, habitualmente el cifrado SSL no lo hace el mismo
servidor web, sino que es realizado en un equipo ajeno equipado incluso con
hardware de aceleración SSL/TLS.
·
Distribución de Carga: el proxy puede
distribuir la carga entre varios servidores web. En ese caso puede ser
necesario reescribir la URL de cada página web (traducción de la URL externa a
la URL interna correspondiente, según en qué servidor se encuentre la
información solicitada).
·
Caché de contenido estático: Un proxy
inverso puede descargar de trabajo a los servidores web almacenando contenido
estático como imágenes u otro contenido gráfico. También puede almacenar
contenido generado dinámicamente pero que pueda ser en alguna medida
reutilizable.
2.5 Proxy NAT (Network Address Translation) / Enmascaramiento
La
traducción de direcciones de red (NAT, Network Address Translation) también es
conocida como enmascaramiento de IPs. Es una técnica mediante la cual las
direcciones fuente o destino de los paquetes IP son reescritas, sustituidas por
otras (de ahí el "enmascaramiento").
Esto
es lo que ocurre cuando varios usuarios comparten una única conexión a Internet.
Se dispone de una única dirección
IP pública, que tiene que ser compartida. Dentro de la red de
área local (LAN) los equipos emplean direcciones IP reservadas para uso privado
y será el proxy el encargado de traducir las direcciones privadas a esa única
dirección pública para realizar las peticiones, así como de distribuir las
páginas recibidas a aquel usuario interno que la solicitó. Estas direcciones
privadas se suelen elegir en rangos prohibidos para su uso en Internet como
192.168.x.x, 10.x.x.x, 172.16.x.x y 172.31.x.x
Esta
situación es muy común en empresas y domicilios con varios ordenadores en red y
un acceso externo a Internet. El acceso a Internet mediante NAT proporciona una cierta
seguridad, puesto que en realidad no hay conexión directa entre el exterior y
la red privada, y así nuestros equipos no están expuestos a ataques directos
desde el exterior.
Mediante
NAT también se puede permitir un acceso limitado desde el exterior, y hacer que
las peticiones que llegan al proxy sean dirigidas a una máquina concreta que
haya sido determinada para tal fin en el propio proxy.
La
función de NAT reside en los Cortafuegos y resulta muy cómoda porque no necesita de ninguna
configuración especial en los equipos de la red privada que pueden acceder a
través de él como si fuera un mero encaminador
2.7 Proxy
abierto
Este
tipo de proxy es el que acepta peticiones desde cualquier ordenador, esté o no
conectado a su red.
En
esta configuración el proxy ejecutará cualquier petición de cualquier ordenador
que pueda conectarse a él, realizándola como si fuera una petición del proxy.
Por lo que permite que este tipo de proxy se use como pasarela para el envío
masivo de correos de spam.
Un proxy se usa, normalmente, para almacenar y redirigir servicios como el DNS o la navegación Web, mediante el cacheo de peticiones en el servidor proxy, lo que mejora la
velocidad general de los usuarios. Este uso es muy beneficioso, pero al
aplicarle una configuración "abierta" a todo internet,
se convierte en una herramienta para su uso indebido.
Debido
a lo anterior, muchos servidores, como los de IRC, o correo electrónicos, deniegan el acceso a estos proxy a sus servicios, usando normalmente listas negras
("Black List").
2.8 Cross-Domain
Proxy
Típicamente
usado por Tecnologías web asíncronas (flash, ajax, comet, etc) que tienen
restricciones para establecer una comunicación entre elementos localizados en
distintos dominios.
En
el caso de AJAX,
por seguridad sólo se permite acceder al mismo dominio origen de la página web
que realiza la petición. Si se necesita acceder a otros servicios localizados
en otros dominios, se instala un Cross-Domain
proxy2 en el dominio origen que recibe las peticiones ajax y las
reenvia a los dominios externos.
En
el caso de flash, también han solucionado creando la revisión de archivos xml de Cross-Domain, que permiten o no el acceso a ese dominio o subdominio.
No hay comentarios:
Publicar un comentario