sexta-feira, 1 de maio de 2009

Proxy Reverso? O que danado é isso?

E voltando para mais um capítulo da nossa jornada...

Estes últimos dias tenho deparado-me bastante com a necessidade de conhecer e aprender soluções que trabalham com PROXY REVERSO.

E o que danado é um PROXY REVERSO?

De acordo com minhas pesquisas... Proxy é um termo em inglês que significa “fazer algo em favor de alguém” [LEXICO PUBLISHING GROUP, 1998].

Também achei a seguinte definição no Wikipédia: Proxy é um servidor que atende a requisições repassando os dados a outros servidores. Um usuário (cliente) conecta-se a um servidor proxy, requisitando algum serviço, como um arquivo, conexão, website, ou outro recurso disponível em outro servidor.

Ele quis dizer o seguinte:




Então podemos chegar a conclusão que o nosso amigo PROXY REVERSO, nada mais é do que a situação acima, mas, de forma contrária, ou seja:



Trocando em miúdos... ao invés da requisição a uma aplicação ser originada de um usuário da rede interna para a internet, o processo é o contrário, concluindo que:

PROXY REVERSO é o cara que vai receber as requisições para aplicações de clientes da internet e entrega-las a rede local ou uma DMZ.

Mas me diga uma coisa... quais os ganhos que poderei ter com esse tal de PROXY REVERSO?

  1. Balanceamento de Carga, se um dos servidores da aplicação WEB 'cair' o nosso amigo PROXY REVERSO, não entrega as requisições ele, tornando assim a aplicação e as requisições 100% UP;
  2. Proteger aplicações WEB contra ataques com HTML Injection, PHP Injection entre outros padrões de ataques conhecidos;
  3. Com o PROXY REVERSO, posso configurar filtros em cima das requisições HTTP, fazendo que, o mesmo, apenas entregue aos requisitantes o conteúdo permitido;
  4. Para questões de segurança do servidor de aplicação, posso esconder informações que vem no HEADER. Tais como sistema operacional, versão do webserver e build do mesmo. Dificultando assim exploração de possíveis vulnerabilidades do servidor;
  5. Unifica e centraliza o acesso a todos os servidores WEB do ambiente em um único ponto, auxiliando assim no gerenciamento da rede e criação de regras de NAT no firewall;
  6. Centralização dos log's de acesso (requisições e respostas), já que as mesmos estarão sendo feitas ao servidor de PROXY REVERSO;
  7. Os servidores WEB não ficam diretamente ligados a rede pública Internet e assim A aumentando a “Segurança”. Atualização de patchs e correções apenas no servidor de PROXY REVERSO, já que o mesmo estará respondendo pelos servidores WEB;
  8. SSL Offload: Permite a utilização de SSL (Secure Sockets Layer) mesmo para os servidores web internos que hospedam aplicações que não suportam criptografia. Essa funcionalidade é um grande reforço na segurança do ambiente, pois, mesmo que as aplicações não suportem criptografia, os dados originados na Internet com destino ao proxy reverso podem ser criptografados, deixando sem criptografia, apenas a comunicação entre o proxy reverso e os servidores WEB internos (tráfego com maior controle de proteção, pois, está sendo transmitido dentro da rede local);
  9. Com o PROXY REVERSO é possível configurar para que as requisições utilizadas para a propagação de vírus e vermes (worms) possam ser bloqueadas imediatamente impedindo que esse tipo de tráfego chegue até os servidores web internos;
Só mais uma coisa.. quais são os programas que podem me ajudar a implantar o PROXY REVERSO?

Podemos responder isso em 2 grupos.

Soluções 'instaláveis':


Soluções em Appliance:
E para não reinventar a roda, temos alguns links de configurações em plataforma Linux:

http://www.koruja.org/
http://unde-rlinux.org/
http://www.youtube.com/ (Não deixe de assistir, ajuda a entender o propósito, o mesmo está abaixo.)

Gostaria de agradecer aos autores destas fontes acima e a um cara chamado Leandro de Souza Lopes, pois com base na monografia dele, pude esclarecer muitas dúvidas.

Mais uma vez... Obrigado!



Um comentário:

  1. Boa! Gostei, estou estudando sobre o Haproxy faz tudo isso também! Mais esta legal seu artigo valew

    ResponderExcluir