Reverse Proxy - deveria ser uma pilha de tecnologia diferente?

2

Tenho uma pergunta cética sobre uma configuração de proxy reverso que estou considerando.

Atualmente, tenho um par de servidores de aplicativos com carga balanceada na DMZ (S1, S2 na figura abaixo). Estes aceitam solicitações de entrada de clientes externos. Eles também conectam-se a recursos da rede interna (por exemplo, servidor de banco de dados, intermediário de mensagem)

A configuração da DMZ é bastante padrão: dois firewalls - internos e externos. O firewall externo só permite solicitações externas para recursos específicos do servidor em portas específicas. O firewall interno só permite que os servidores DMZ abram conexões especificadas para recursos de rede internos (por exemplo, servidor de banco de dados, intermediário de mensagem)

Agora, tenho uma proposta arquitetônica afirmando que essa configuração é insegura. A proposta exige a transferência dos dois servidores DMZ para a rede interna. Na DMZ, eles serão substituídos por um servidor 'Reverse Proxy' ('RP' na figura abaixo). O 'RP' aceita pedidos de entrada e os proxy para o S1 / S2. O principal ponto de venda aqui é os servidores internos iniciam a conectividade de rede com o servidor 'proxy reverso' na DMZ.

Então, isso:

 [EXTERNAL]       [DMZ]        [INTERNAL]

 Client -->  ||    S1/S2    || --> DB,MQ

... está sendo substituído por:

 [EXTERNAL]       [DMZ]        [INTERNAL]

 Client -->  ||      RP     || <-- S1/S2 --> DB,MQ

RP é essencialmente uma versão reduzida do S1 / S2 (mesma pilha de tecnologia). Ele transmite a solicitação externa para S1 / S2 em uma conexão persistente iniciada por S1 / S2.

Minha pergunta: Considerando que a pilha de tecnologia para RP é idêntica a S1 / S2 (mesma tecnologia, menos código) - como a nova configuração confere proteção adicional significativa?

Os ataques de aplicativos não passarão para S1 / S2 sem serem importados? Especificamente, se você comprometer o RP, poderá comprometer o S1 / S2 também. Isso não vai realmente piorar o perfil de risco (já que S1 / S2 estão agora na rede interna)?

Adicionando algumas informações e expandindo em um ponto acima:

  1. O balanceador de carga ('LB') é essencialmente transparente nessa configuração (ou seja, o RP não é um LB). Por vários motivos, o LB não pode encerrar pedidos de entrada de qualquer forma.

  2. Pessoalmente, sou muito cético em relação aos acréscimos de RP de segurança. Meu raciocínio: se RP é de alguma forma totalmente comprometida (por exemplo, buffer sature / shellcode), é um passeio fácil pela conexão para S1 / S2 na rede interna (não importa quem inicia a conexão - lá) e, em seguida, explorar em S1 / S2 (graças a tecnologia similar). O problema agora é agravado porque o S1 / S2 comprometido está agora localizado no baixo-ventre (ou seja, na intranet), em vez do DMZ.

por Happyblue 02.05.2012 / 04:45

2 respostas

1

Embora diferentes tecnologias para a frente e para a retaguarda dêem um aumento nominal na segurança, a quantidade é bastante discutível. Simplificando, só porque o front-end está comprometido não significa que o back-end ou qualquer outra arte da rede esteja comprometida. Embora possa ser argumentado que qualquer método usado para comprometer o front-end agora pode ser implementado no back-end, isso não significa necessariamente que o método será eficaz contra o (s) novo (s) alvo (s).

Com isso dito, se você tiver praticamente os mesmos sistemas e configurações para fins de front e back, então sim, você ganha segurança extra usando uma tecnologia diferente para um deles.

Se você usa tecnologias iguais ou diferentes, sugiro usar contas diferentes em cada sistema.

    
por 02.05.2012 / 05:05
1

Primeiro, a maioria dos balanceadores de carga funciona como proxies reversos wikipedia f5 devcentral . No entanto, existem diferenças na proteção inerente à maneira como os balanceadores de carga (ou proxies reversos) são arquitetados. Nota: eu vou usar o termo "balanceadores de carga" (LB) e "proxy reverso" (RP) intercambiáveis daqui para frente.

Um LB fornece segurança adicional servindo como intermediário para toda a comunicação. A maioria dos LBs de nível empresarial atua como proxies de camada 7. Para o tráfego da Web, a sessão HTTP do lado do cliente termina completamente no LB e o LB restabelece a conexão HTTP do lado do servidor de volta ao servidor. Ao forçar uma terminação da camada 7 (l7), toda a carga útil pode ser revisada, depurada e enviada de volta ao servidor limpa e otimizada. Em muitos casos, um LB também implementa um firewall de aplicativo da Web como um módulo complementar para inspecionar ainda mais o tráfego em busca de padrões anômalos antes de enviar o tráfego de volta ao servidor da web.

A força relativa de proteção fornecida por um LB no modelo acima depende se o tráfego está sendo finalizado em l7 ou em um nível inferior. Alguns balanceadores de carga podem funcionar apenas na camada de rede, o que basicamente significa que o LB pode apenas reescrever as informações de IP / porta à medida que o tráfego flui do lado do cliente para o lado do servidor. Além disso, é totalmente possível configurar um LB com capacidade de l7 full proxy para trabalhar apenas nas camadas de rede / transporte para melhorar o desempenho (l7 terminal é um recurso intensivo). Nesse caso, o balanceador de carga pode não esfregar o tráfego o mais completamente possível.

Voltando ao seu modelo, se RP = LB, a partir da perspectiva da arquitetura, a arquitetura proposta adiciona complexidade adicional ao modelo atual. No entanto, a chave aqui é com o modelo proposto, o S1 / S2 inicia a conexão de saída para o DMZ. Um invasor pode comprometer o RP, mas não pode estabelecer uma nova sessão de volta ao S1 / S2 ou à rede interna. No entanto, se houver pontos fracos do aplicativo em S1 / S2 ou DB, MQ, um invasor poderá entrar de novo na rede para acessar S1 / S2. Além disso, uma vez que "RP" está usando a mesma pilha de tecnologia que S1 / S2, qualquer fraqueza em S1 / S2 provavelmente existiria em "RP" também. No entanto, se "RP" não for quebrável, o modelo proposto aumentará a postura de segurança, pois as pilhas de rede de S1 / S2 estarão protegidas e o ataque terá que ser o alvo da pilha de aplicativos primeiro.

Embora seja discutível o valor de segurança que esse modelo adiciona (se um atacante quebra o dmz / int fw, ele tem acesso livre à intranet & esse modelo não protege contra o ataque comum de pesca submarina), modelo pode ser mais aceitável para um sujeito de conformidade do que não. Esse é especialmente o caso da conformidade com PCI, onde qualquer sistema que tenha acesso a um ambiente CHD também está no escopo. No caso acima, a DMZ inteira pode estar dentro do escopo, mas se você estabelecer uma conexão de saída do ambiente CHD, somente a "RP" será adicionada ao escopo. Embora eu não esteja insinuando que este é o caso, eu vi arquitetos abordarem a redução do escopo do PCI dessa maneira.

    
por 02.05.2012 / 06:48