Servidores proxy webEditar
Los proxies web reenvían las peticiones HTTP. La petición del cliente es la misma que una petición HTTP normal, excepto que se pasa la URL completa, en lugar de sólo la ruta.
GET https://en.wikipedia.org/wiki/Proxy_server HTTP/1.1Proxy-Authorization: Basic encoded-credentialsAccept: text/html
Esta petición se envía al servidor proxy, el proxy realiza la petición especificada y devuelve la respuesta.
HTTP/1.1 200 OKContent-Type: text/html; charset UTF-8
Algunos proxies web permiten el método HTTP CONNECT para configurar el reenvío de datos arbitrarios a través de la conexión; una política común es reenviar sólo el puerto 443 para permitir el tráfico HTTPS.
Ejemplos de servidores proxy web incluyen Apache (con mod_proxy o Traffic Server), HAProxy, IIS configurado como proxy (por ejemplo, con Application Request Routing), Nginx, Privoxy, Squid, Varnish (sólo proxy inverso), WinGate, Ziproxy, Tinyproxy, RabbIT y Polipo.
Para los clientes, el problema de los servidores proxy complejos o múltiples se resuelve con un protocolo de autoconfiguración de proxy cliente-servidor (archivo PAC).
Proxy SOCKSEditar
SOCKS también reenvía datos arbitrarios después de una fase de conexión, y es similar a HTTP CONNECT en los proxies web.
Proxy transparenteEditar
También conocido como proxy interceptor, proxy en línea o proxy forzado, un proxy transparente intercepta la comunicación normal de la capa de aplicación sin requerir ninguna configuración especial del cliente. Los clientes no necesitan conocer la existencia del proxy. Un proxy transparente se sitúa normalmente entre el cliente e Internet, realizando el proxy algunas de las funciones de una pasarela o router.
El RFC 2616 (Hypertext Transfer Protocol-HTTP/1.1) ofrece definiciones estándar:
«Un ‘proxy transparente’ es un proxy que no modifica la petición o la respuesta más allá de lo necesario para la autenticación e identificación del proxy». «Un ‘proxy no transparente’ es un proxy que modifica la solicitud o la respuesta para proporcionar algún servicio añadido al agente de usuario, como servicios de anotación de grupos, transformación de tipos de medios, reducción de protocolos o filtrado de anonimato».
TCP Intercept es una función de seguridad de filtrado de tráfico que protege a los servidores TCP de los ataques de inundación TCP SYN, que son un tipo de ataque de denegación de servicio. TCP Intercept está disponible sólo para el tráfico IP.
En 2009, Robert Auger publicó un fallo de seguridad en el funcionamiento de los proxies transparentes, y el Equipo de Respuesta a Emergencias Informáticas emitió un aviso con una lista de docenas de servidores proxy transparentes y de interceptación afectados.
PropósitoEditar
Los proxies de interceptación se utilizan comúnmente en las empresas para hacer cumplir la política de uso aceptable, y para aliviar los gastos administrativos, ya que no se requiere la configuración del navegador del cliente. Esta segunda razón, sin embargo, se ve mitigada por características como la política de grupo del Directorio Activo, o el DHCP y la detección automática de proxies.
Los proxies interceptores también son comúnmente utilizados por los ISP en algunos países para ahorrar ancho de banda de subida y mejorar los tiempos de respuesta de los clientes mediante el almacenamiento en caché. Esto es más común en los países en los que el ancho de banda es más limitado (por ejemplo, las naciones insulares) o debe ser pagado.
ProblemasEditar
El desvío/intercepción de una conexión TCP crea varios problemas. En primer lugar, la IP y el puerto de destino originales deben ser comunicados de alguna manera al proxy. Esto no siempre es posible (por ejemplo, cuando la puerta de enlace y el proxy residen en diferentes hosts). Hay una clase de ataques cruzados que dependen de cierto comportamiento de los proxies interceptores que no comprueban ni tienen acceso a la información sobre el destino original (interceptado). Este problema puede resolverse mediante el uso de un dispositivo o software integrado a nivel de paquete y de aplicación que sea capaz de comunicar esta información entre el gestor de paquetes y el proxy.
La interceptación también crea problemas para la autenticación HTTP, especialmente la autenticación orientada a la conexión como NTLM, ya que el navegador del cliente cree que está hablando con un servidor y no con un proxy. Esto puede causar problemas cuando un proxy que intercepta requiere autenticación, y luego el usuario se conecta a un sitio que también requiere autenticación.
Por último, interceptar las conexiones puede causar problemas para las cachés HTTP, ya que algunas solicitudes y respuestas se convierten en no almacenables por una caché compartida.
Métodos de implementaciónEditar
En los servidores firewall/proxy integrados en los que el router/firewall está en el mismo host que el proxy, la comunicación de la información de destino original puede realizarse por cualquier método, por ejemplo Microsoft TMG o WinGate.
La interceptación también puede realizarse utilizando el WCCP (Web Cache Control Protocol) de Cisco. Este protocolo propietario reside en el router y se configura desde la caché, lo que permite que ésta determine qué puertos y qué tráfico se le envía mediante una redirección transparente desde el router. Esta redirección puede ocurrir de dos maneras: Túnel GRE (OSI Capa 3) o reescrituras MAC (OSI Capa 2).
Una vez que el tráfico llega a la propia máquina proxy la interceptación se realiza comúnmente con NAT (Network Address Translation). Estas configuraciones son invisibles para el navegador del cliente, pero dejan el proxy visible para el servidor web y otros dispositivos en el lado de Internet del proxy. Las versiones recientes de Linux y algunas de BSD proporcionan TPROXY (proxy transparente) que realiza la interceptación transparente a nivel de IP (OSI Layer 3) y la suplantación del tráfico saliente, ocultando la dirección IP del proxy de otros dispositivos de red.
DetecciónEditar
Se pueden utilizar varios métodos para detectar la presencia de un servidor proxy interceptor:
- Comparando la dirección IP externa del cliente con la dirección vista por un servidor web externo, o a veces examinando las cabeceras HTTP recibidas por un servidor. Se han creado varios sitios para solucionar este problema, informando de la dirección IP del usuario vista por el sitio de vuelta al usuario en una página web. Google también devuelve la dirección IP vista por la página si el usuario busca «IP».
- Al comparar el resultado de los comprobadores de IP en línea cuando se accede usando HTTPS frente a HTTP, ya que la mayoría de los proxies interceptores no interceptan SSL. Si se sospecha que se está interceptando SSL, se puede examinar el certificado asociado a cualquier sitio web seguro, el certificado raíz debería indicar si se ha emitido con el propósito de interceptar.
- Comparando la secuencia de saltos de red informada por una herramienta como traceroute para un protocolo proxy como http (puerto 80) con la de un protocolo no proxy como SMTP (puerto 25).
- Al intentar realizar una conexión a una dirección IP en la que se sabe que no hay ningún servidor. El proxy aceptará la conexión y luego intentará proxiarla. Cuando el proxy no encuentra ningún servidor que acepte la conexión puede devolver un mensaje de error o simplemente cerrar la conexión con el cliente. Esta diferencia de comportamiento es sencilla de detectar. Por ejemplo, la mayoría de los navegadores web generarán una página de error creada por el navegador en el caso de que no puedan conectarse a un servidor HTTP, pero devolverán un error diferente en el caso de que la conexión sea aceptada y luego cerrada.
- Sirviendo al usuario final aplicaciones SWF de Adobe Flash especialmente programadas o applets de Sun Java que envían llamadas HTTP de vuelta a su servidor.
Proxy CGIEdit
Un proxy web CGI acepta URLs de destino utilizando un formulario web en la ventana del navegador del usuario, procesa la petición y devuelve los resultados al navegador del usuario. Por lo tanto, se puede utilizar en un dispositivo o red que no permita cambiar la configuración del proxy «verdadero». El primer proxy CGI del que se tiene constancia, llamado «rover» en su momento pero rebautizado en 1998 como «CGIProxy», fue desarrollado por el informático estadounidense James Marshall a principios de 1996 para un artículo de Rich Morin en «Unix Review».
La mayoría de los proxies CGI funcionan con uno de los CGIProxy (escrito en el lenguaje Perl), Glype (escrito en el lenguaje PHP) o PHProxy (escrito en el lenguaje PHP). En abril de 2016, CGIProxy ha recibido alrededor de 2 millones de descargas, Glype ha recibido casi un millón de descargas, mientras que PHProxy sigue recibiendo cientos de descargas por semana. A pesar de que su popularidad ha disminuido debido a las VPN y otros métodos de privacidad, todavía hay muchos proxies CGI en línea.
Algunos proxies CGI se crearon con fines como hacer que los sitios web fueran más accesibles para las personas discapacitadas, pero desde entonces se han cerrado debido al exceso de tráfico, generalmente causado por un tercero que anuncia el servicio como un medio para eludir el filtrado local. Dado que a muchos de estos usuarios no les importa el daño colateral que están causando, se hizo necesario que las organizaciones ocultaran sus proxies, revelando las URL sólo a aquellos que se toman la molestia de ponerse en contacto con la organización y demuestran una necesidad genuina.
Proxy de sufijoEditar
Un proxy de sufijo permite a un usuario acceder al contenido web añadiendo el nombre del servidor proxy a la URL del contenido solicitado (por ejemplo, «es.wikipedia.org.SuffixProxy.com»). Los servidores proxy con sufijo son más fáciles de usar que los servidores proxy normales, pero no ofrecen altos niveles de anonimato y su uso principal es el de evitar los filtros web. Sin embargo, esto se utiliza raramente debido a los filtros web más avanzados.
Software proxy Tor onionEditar
El Enrutador Cebolla (Tor) es un sistema destinado a proporcionar anonimato en línea. El software del cliente Tor enruta el tráfico de Internet a través de una red mundial de servidores voluntarios para ocultar la ubicación o el uso del ordenador de un usuario a alguien que realice una vigilancia de la red o un análisis del tráfico. El uso de Tor dificulta el rastreo de la actividad en Internet y pretende proteger la libertad personal y la privacidad de los usuarios.
El «enrutamiento cebolla» se refiere a la naturaleza en capas del servicio de encriptación: Los datos originales se encriptan y se vuelven a encriptar varias veces, y luego se envían a través de sucesivos repetidores de Tor, cada uno de los cuales desencripta una «capa» de encriptación antes de pasar los datos al siguiente repetidor y, finalmente, al destino. Esto reduce la posibilidad de que los datos originales sean descifrados o entendidos en tránsito.
Proxy anónimo I2P
La red anónima I2P (‘I2P’) es una red proxy que tiene como objetivo el anonimato en línea. Implementa el enrutamiento de ajo, que es una mejora del enrutamiento de cebolla de Tor. I2P está totalmente distribuida y funciona encriptando todas las comunicaciones en varias capas y retransmitiéndolas a través de una red de enrutadores dirigidos por voluntarios en varios lugares. Al mantener oculto el origen de la información, I2P ofrece resistencia a la censura. Los objetivos de I2P son proteger la libertad personal de los usuarios, su privacidad y su capacidad para realizar negocios confidenciales.
Cada usuario de I2P ejecuta un router I2P en su ordenador (nodo). El router I2P se encarga de encontrar otros pares y de construir túneles anónimos a través de ellos. I2P proporciona proxies para todos los protocolos (HTTP, IRC, SOCKS, …).
Comparación con los traductores de direcciones de red
El concepto de proxy se refiere a una aplicación de capa 7 en el modelo de referencia OSI. La traducción de direcciones de red (NAT) es similar a un proxy pero opera en la capa 3.
En la configuración del cliente de un NAT de capa 3, basta con configurar la pasarela. Sin embargo, para la configuración del cliente de un proxy de capa 7, el destino de los paquetes que genera el cliente debe ser siempre el servidor proxy (capa 7), luego el servidor proxy lee cada paquete y averigua el verdadero destino.
Debido a que NAT opera en la capa 3, consume menos recursos que el proxy de capa 7, pero también es menos flexible. Al comparar estas dos tecnologías, podemos encontrarnos con una terminología conocida como «cortafuegos transparente». Cortafuegos transparente significa que el proxy utiliza las ventajas del proxy de capa 7 sin que el cliente lo sepa. El cliente supone que la pasarela es un NAT en la capa 3, y no tiene ninguna idea sobre el interior del paquete, pero a través de este método, los paquetes de la capa 3 se envían al proxy de la capa 7 para su investigación.
Proxy DNSEdit
Un servidor proxy DNS toma las consultas DNS de una red (normalmente local) y las reenvía a un servidor de nombres de dominio de Internet. También puede almacenar en caché los registros DNS.
ProxificadoresEditar
Algunos programas cliente «SOCKS-ifican» las peticiones, lo que permite la adaptación de cualquier software en red para conectarse a redes externas a través de ciertos tipos de servidores proxy (principalmente SOCKS).
Proxy residencialEditar
Un proxy residencial es un intermediario que utiliza una dirección IP real proporcionada por un proveedor de servicios de Internet (ISP) con dispositivos físicos como móviles y ordenadores de los usuarios finales. En lugar de conectarse directamente a un servidor, los usuarios del proxy residencial se conectan al objetivo a través de direcciones IP residenciales. El objetivo los identifica entonces como usuarios orgánicos de Internet. No permite que ninguna herramienta de seguimiento identifique la reasignación del usuario. Cualquier proxy residencial puede enviar cualquier número de peticiones concurrentes y las direcciones IP están directamente relacionadas con una región específica.