Saltar para o conteúdo

Proxy reverso

Origem: Wikipédia, a enciclopédia livre.
Um servidor proxy conectando a Internet a uma rede interna.
Cenário de exemplo: Um cliente na Internet (nuvem à esquerda) faz uma solicitação a um servidor proxy reverso (oval vermelho no meio). O proxy inspeciona a solicitação, determina que ela é válida e que não tem o recurso solicitado em seu próprio cache. Em seguida, ele encaminha a solicitação para algum servidor web interno (oval à direita). O servidor interno entrega o recurso solicitado de volta ao proxy, que por sua vez o entrega ao cliente. O cliente na Internet não tem conhecimento da rede interna e não consegue dizer se está se comunicando com um proxy ou diretamente com um servidor web.

Em redes de computadores, um proxy reverso ou servidor substituto é um servidor proxy que parece a qualquer cliente ser um servidor web comum, mas na realidade age apenas como um intermediário que encaminha as solicitações do cliente para um ou mais servidores web comuns.[1][2] Os proxies reversos ajudam a aumentar a escalabilidade, o desempenho, a resiliência e a segurança, mas também apresentam vários riscos.

As empresas que executam servidores web geralmente configuram proxies reversos para facilitar a comunicação entre o navegador de um usuário da Internet e os servidores web. Uma vantagem importante de fazer isso é que os servidores web podem ser ocultados atrás de um firewall em uma rede interna da empresa, e apenas o proxy reverso precisa ser exposto diretamente à Internet. Os servidores proxy reversos são implementados em servidores web populares de código aberto, como Apache, Nginx e proxy de encaminhamento recupere recursos da Internet pública.

Grandes sites e redes de distribuição de conteúdo usam proxies reversos, juntamente com outras técnicas, para equilibrar a carga entre servidores internos. Os proxies reversos podem manter um cache de conteúdo estático, o que reduz ainda mais a carga nesses servidores internos e na rede interna. Também é comum que os proxies reversos adicionem recursos como compactação ou criptografia TLS ao canal de comunicação entre o cliente e o proxy reverso.[3]

Os proxies reversos podem inspecionar cabeçalhos HTTP, o que, por exemplo, permite que eles apresentem um único endereço IP para a Internet enquanto retransmitem solicitações para diferentes servidores internos com base no URL da solicitação HTTP.

Os proxies reversos podem ocultar a existência e as características dos servidores de origem. Isso pode tornar mais difícil determinar a localização real do servidor/site de origem e, por exemplo, mais desafiador iniciar ações legais, como remoções ou bloqueio de acesso ao site, pois o endereço IP do site pode não ser imediatamente aparente. Além disso, o proxy reverso pode estar localizado em uma jurisdição diferente com diferentes requisitos legais, complicando ainda mais o processo de remoção.

Os recursos de firewall de aplicativo podem proteger contra ataques comuns baseados na web, como um ataque de negação de serviço (DoS) ou ataques de negação de serviço distribuídos (DDoS). Sem um proxy reverso, remover malware ou iniciar remoções (enquanto lida simultaneamente com o ataque) no próprio site, por exemplo, pode ser difícil.

No caso de sites seguros, um servidor web pode não executar a criptografia TLS sozinho, mas, em vez disso, descarregar a tarefa para um proxy reverso que pode ser equipado com hardware de aceleração TLS.

Um proxy reverso pode distribuir a carga de solicitações de entrada para vários servidores, com cada servidor suportando sua própria área de aplicativo. No caso de servidores web de proxy reverso, o proxy reverso pode ter que reescrever o URL em cada solicitação de entrada para corresponder ao local interno relevante do recurso solicitado.

Um proxy reverso pode reduzir a carga em seus servidores de origem armazenando em cache conteúdo estático e conteúdo dinâmico, isso é conhecido como compactando-o para acelerar os tempos de carregamento.

Em uma técnica chamada "spoon-feeding",[4] uma página gerada dinamicamente pode ser produzida de uma só vez e servida ao proxy reverso, que pode então retorná-la ao cliente um pouco de cada vez. O programa que gera a página não precisa permanecer aberto, liberando recursos do servidor durante o tempo possivelmente estendido que o cliente requer para concluir a transferência.

Os proxies reversos podem operar onde quer que vários servidores da web devam ser acessíveis por meio de um único endereço IP público. Os servidores da web "escutam" em portas diferentes na mesma máquina, com o mesmo endereço IP local ou, possivelmente, em máquinas diferentes com endereços IP locais diferentes. O proxy reverso analisa cada solicitação recebida e a entrega ao servidor certo dentro da rede de área local.

Proxies reversos podem executar testes A/B e testes multivariados sem exigir código de aplicativo para lidar com a lógica de qual versão é servida a um cliente.

Um proxy reverso pode adicionar autenticação de acesso a um servidor web que não tem nenhuma autenticação.[5][6]

Quando o tráfego de trânsito é criptografado e o proxy reverso precisa filtrar/armazenar em cache/compactar ou modificar, ou melhorar o tráfego, o proxy primeiro deve descriptografar e criptografar novamente as comunicações. Isso requer que o proxy possua o certificado TLS e sua chave privada correspondente, estendendo o número de sistemas que podem ter acesso a dados que não estejam criptografados e tornando-o um alvo mais valioso para invasores.

A grande maioria das violações de dados externos acontece quando hackers conseguem abusar de um proxy reverso existente que foi intencionalmente implantado por uma organização ou quando hackers conseguem converter um servidor existente voltado para a Internet em um servidor proxy reverso. Sistemas comprometidos ou convertidos permitem que invasores externos especifiquem para onde desejam que seus ataques sejam enviados por proxy, permitindo seu acesso a redes e sistemas internos.

Os aplicativos que foram desenvolvidos para uso interno de uma empresa normalmente não são reforçados para padrões públicos e não são necessariamente projetados para suportar todas as tentativas de hacking. Quando uma organização permite acesso externo a esses aplicativos internos por meio de um proxy reverso, eles podem aumentar involuntariamente sua própria superfície de ataque e convidar hackers.

Se um proxy reverso não estiver configurado para filtrar ataques ou não receber atualizações diárias para manter seu banco de dados de assinaturas de ataque atualizado, uma vulnerabilidade de dia zero pode passar sem filtro, permitindo que os invasores obtenham controle do(s) sistema(s) que estão por trás do servidor proxy reverso.

Usar o proxy reverso de um terceiro (por exemplo, Cloudflare, Imperva) coloca toda a tríade de confidencialidade, integridade e disponibilidade nas mãos do terceiro que opera o proxy.

Se um proxy reverso estiver enfrentando muitos domínios diferentes, sua interrupção (por exemplo, por uma configuração incorreta ou ataque DDoS) pode derrubar todos os domínios enfrentados.[7]

Os proxies reversos também podem se tornar um ponto de falha único se não houver outra maneira de acessar o servidor interno (back-end).

Referências

  1. «Forward and reverse proxies» (em inglês). The Apache Software Foundation. Consultado em 26 de agosto de 2018. Cópia arquivada em 28 de agosto de 2018 
  2. Reese, Will (setembro de 2008). «Nginx: the high-performance web server and reverse proxy». Linux Journal (em inglês) (173) 
  3. «Proxy servers and tunneling». MDN Web Docs (em inglês). Consultado em 6 de dezembro de 2020. Cópia arquivada em 26 de novembro de 2020 
  4. «squid-cache wiki entry on "SpoonFeeding"» (em inglês). Francesco Chemolli. Consultado em 9 de fevereiro de 2011. Arquivado do original em 25 de janeiro de 2019 
  5. «Possible to add basic HTTP access authentication via HAProxy?». serverfault.com (em inglês). Consultado em 27 de abril de 2016. Cópia arquivada em 4 de outubro de 2018 
  6. «forward_auth (Caddyfile directive) - Caddy Documentation». caddyserver.com (em inglês). Consultado em 22 de maio de 2022 
  7. «Cloudflare outage knocks out major sites and services, including Discord». finance.yahoo.com (em inglês). Consultado em 14 de dezembro de 2020. Arquivado do original em 22 de junho de 2020 

Fontes secundárias

[editar | editar código-fonte]

Ligações externas

[editar | editar código-fonte]
Ícone de esboço Este artigo sobre redes de computadores é um esboço. Você pode ajudar a Wikipédia expandindo-o.