En las redes informáticas , un proxy inverso es una aplicación que se ubica frente a los servidores back-end y reenvía las solicitudes del cliente (por ejemplo, el navegador) a esos servidores en lugar de que el cliente hable directamente con los servidores. Los proxies inversos ayudan a aumentar la escalabilidad, el rendimiento, la resiliencia y la seguridad. Los recursos devueltos al cliente aparecen como si se originaran en el propio servidor web. [1]
Los grandes sitios web y las redes de distribución de contenidos utilizan proxies inversos, junto con otras técnicas, para equilibrar la carga entre los servidores internos. Los servidores proxy inversos pueden mantener una caché de contenido estático, lo que reduce aún más la carga en estos servidores internos y en la red interna. También es común que los servidores proxy inversos agreguen funciones como compresión o cifrado TLS al canal de comunicación entre el cliente y el proxy inverso. [2]
Los servidores proxy inversos generalmente son propiedad del servicio web o están administrados por él, y los clientes acceden a ellos desde la Internet pública. Por el contrario, un proxy de reenvío suele ser administrado por un cliente (o su empresa) que está restringido a una red interna privada, excepto que el cliente puede pedirle al proxy de reenvío que recupere recursos de la Internet pública en nombre del cliente.
Los servidores proxy inversos se implementan en servidores web populares de código abierto como Apache , Nginx y Caddy . Este software puede inspeccionar encabezados HTTP, lo que, por ejemplo, le permite presentar una única dirección IP a Internet mientras transmite solicitudes a diferentes servidores internos según la URL de la solicitud HTTP. Algunos de los sitios web más importantes de Internet utilizan servidores proxy inverso dedicados, como el software de código abierto HAProxy y Squid .
Usos
Los proxies inversos pueden ocultar la existencia y características de los servidores de origen . Esto puede hacer que sea más difícil determinar la ubicación real del servidor/sitio web de origen y, por ejemplo, más difícil iniciar acciones legales como la eliminación o bloquear el acceso al sitio web, ya que la dirección IP del sitio web puede no ser evidente de inmediato. . Además, el proxy inverso puede estar ubicado en una jurisdicción diferente con requisitos legales diferentes, lo que complica aún más el proceso de eliminación.
Un proxy inverso puede distribuir la carga de las solicitudes entrantes a varios servidores, y cada servidor admite su propia área de aplicación. En el caso de servidores web de proxy inverso , es posible que el proxy inverso tenga que reescribir la URL en cada solicitud entrante para que coincida con la ubicación interna relevante del recurso solicitado.
Un proxy inverso puede reducir la carga en sus servidores de origen almacenando en caché contenido estático y contenido dinámico , lo que se conoce como aceleración web . Los cachés proxy de este tipo a menudo pueden satisfacer una cantidad considerable de solicitudes de sitios web, lo que reduce en gran medida la carga en los servidores de origen.
Un proxy inverso puede optimizar el contenido comprimiéndolo para acelerar los tiempos de carga.
En una técnica denominada "alimentación con cuchara", [3] se puede producir una página generada dinámicamente de una sola vez y servirse al proxy inverso, que luego puede devolverla al cliente poco a poco. El programa que genera la página no necesita permanecer abierto, liberando así recursos del servidor durante el tiempo posiblemente prolongado que el cliente requiera para completar la transferencia.
Los servidores proxy inversos pueden funcionar siempre que se deba acceder a varios servidores web a través de una única dirección IP pública. Los servidores web escuchan en diferentes puertos de la misma máquina, con la misma dirección IP local o, posiblemente, en diferentes máquinas con diferentes direcciones IP locales. El proxy inverso analiza cada solicitud entrante y la entrega al servidor correcto dentro de la red de área local .
Los proxies inversos pueden realizar pruebas A/B y pruebas multivariadas sin colocar etiquetas o código JavaScript en las páginas.
Un proxy inverso puede agregar autenticación de acceso a un servidor web que no tiene ninguna autenticación. [4] [5]
Riesgos
Un proxy inverso puede rastrear todas las direcciones IP que realizan solicitudes a través de él y también puede leer y modificar cualquier tráfico no cifrado. Por lo tanto, puede registrar contraseñas o inyectar malware, y podría hacerlo si se ve comprometido o si lo ejecuta una parte malintencionada.
Cuando el tráfico de tránsito está cifrado y el proxy inverso necesita filtrar/almacenar en caché/comprimir o modificar o mejorar el tráfico, el proxy primero debe descifrar y volver a cifrar las comunicaciones. Esto requiere que el proxy posea el certificado TLS y su correspondiente clave privada, lo que amplía la cantidad de sistemas que pueden tener acceso a datos no cifrados y lo convierte en un objetivo más valioso para los atacantes.
La gran mayoría de las filtraciones de datos externos ocurren cuando los piratas informáticos logran abusar de un proxy inverso existente que fue implementado intencionalmente por una organización, o cuando los piratas informáticos logran convertir un servidor existente con acceso a Internet en un servidor proxy inverso. Los sistemas comprometidos o convertidos permiten a los atacantes externos especificar dónde quieren que se envíen sus ataques, lo que les permite acceder a redes y sistemas internos.
Las aplicaciones que se desarrollaron para el uso interno de una empresa no suelen estar reforzadas según los estándares públicos y no necesariamente están diseñadas para resistir todos los intentos de piratería. Cuando una organización permite el acceso externo a dichas aplicaciones internas a través de un proxy inverso, podría aumentar involuntariamente su propia superficie de ataque e invitar a piratas informáticos.
Si un proxy inverso no está configurado para filtrar ataques o no recibe actualizaciones diarias para mantener actualizada su base de datos de firmas de ataques, una vulnerabilidad de día cero puede pasar sin filtrar, permitiendo a los atacantes obtener control de los sistemas que están siendo atacados. detrás del servidor proxy inverso.
Si un proxy inverso está frente a muchos dominios diferentes, su interrupción (por ejemplo, por una mala configuración o un ataque DDoS) podría provocar la caída de todos los dominios frente. [6]
Los proxies inversos también pueden convertirse en un punto único de falla si no hay otra forma de acceder al servidor back-end.
^ "Proxies directos e inversos". La Fundación de Software Apache. Archivado desde el original el 28 de agosto de 2018 . Consultado el 26 de agosto de 2018 .
^ "Servidores proxy y tunelización". Documentos web de MDN . Archivado desde el original el 26 de noviembre de 2020 . Consultado el 6 de diciembre de 2020 .
^ "Entrada wiki de squid-cache sobre" SpoonFeeding"". Francisco Chemolli. Archivado desde el original el 25 de enero de 2019 . Consultado el 9 de febrero de 2011 .
^ "¿Es posible agregar autenticación de acceso HTTP básica a través de HAProxy?". serverfault.com . Archivado desde el original el 4 de octubre de 2018 . Consultado el 27 de abril de 2016 .
^ Servidor, Caddy Web. "forward_auth (directiva Caddyfile) - Documentación de Caddy". caddyserver.com . Consultado el 22 de mayo de 2022 .
^ "La interrupción de Cloudflare elimina los principales sitios y servicios, incluido Discord". finanzas.yahoo.com . Archivado desde el original el 22 de junio de 2020 . Consultado el 14 de diciembre de 2020 .