Como você usa o suporte do ELB para a versão 1 do protocolo PROXY com segurança?

5
O Elastic Load Balancer suporta o protocolo PROXY versão 1.

permite que o servidor por trás do balanceador de carga determine o endereço IP de origem original de uma conexão de cliente.

No entanto, a especificação de protocolo deixa claro nas seções 2 e 5 que você deve de alguma forma, garantir que apenas terminais autorizados possam se conectar a uma porta que suporte esse protocolo. Caso contrário, um usuário mal-intencionado pode se conectar diretamente ao servidor, ignorar o proxy e enviar um cabeçalho PROXY reivindicando qualquer endereço IP de origem que desejarem.

Minha pergunta é: como você faz isso com o ELB? Tanto quanto eu posso dizer, não há uma lista fixa de endereços IP de origem que podem se conectar aos seus servidores. Não há como restringir uma porta para que apenas o seu ELB possa se conectar a ela. Parece que qualquer um pode criar uma instância do EC2 e se conectar diretamente ao seu servidor na mesma porta para a qual os proxies do ELB fazem, representar o balanceador de carga e declarar estar se conectando de qualquer endereço IP que desejarem.

Isso não pode estar certo. O que estou perdendo?

    
por David Schwartz 20.08.2013 / 09:34

3 respostas

4

Você está tentando apenas permitir conexões com suas instâncias do EC2 de um ELB.

Você pode fazer isso no console de gerenciamento ou (como a maioria das coisas da AWS) por meio das APIs. Vou definir o método do console de gerenciamento.

Primeiro, precisamos determinar o usuário de segurança e o nome do seu ELB. Vá para o console de gerenciamento , selecione EC2 e a guia Load Balancers. Escolha seu balanceador de carga na lista e vá para a guia Segurança nas preferências. Aqui você verá seu Grupo de segurança de origem . Provavelmente será "amazon-elb / amazon-elb-sg", mas vou manter esta instrução aqui caso isso mude no futuro; -)

Agora vá para o menu Security Groups e selecione o grupo que você está usando para seus servidores EC2. Adicione uma nova regra onde "amazon-elb / amazon-elb-sg" (ou seja qual for o seu grupo ELB) é a fonte. Verifique se você não tem outras regras de entrada para essa porta, embora ainda possa permitir o acesso direto a outras portas não cobertas pelo ELB.

    
por 22.08.2013 / 21:57
1

Usando a versão mais recente do haproxy, você pode usar:

 tcp-request connection expect-proxy layer4 if *condition*

Isso ativará o protocolo de proxy apenas para regras que correspondam a condição . Desta forma, você pode ativá-lo apenas para os nós ELB (desde que você saiba seus endereços, é claro).

    
por 02.09.2013 / 12:12
0

A interface de rede que seu servidor virtual usa para se comunicar apenas permite conexões a endereços IP privados (192.168.x, 172.16.x, 10.x) pertencentes a outros servidores virtuais executados pelo mesmo cliente. Portanto, você não pode acessar arbitrariamente o servidor virtual de outro cliente conectando-se ao seu IP e porta privados.

    
por 22.08.2013 / 21:56