Encerramento completo para finalizar a criptografia com o AWS Elastic Load Balancer, Nginx e SSL

2

Você verá muitos lugares na web, a maneira de configurar o SSL com um ELB da AWS é configurar um certificado no balanceador de carga e, em seguida, encaminhar o tráfego da porta 443 para 80, para que o tráfego entre o balanceador de carga e o nginx não seja criptografado. Para mim isso não parece muito seguro, pois você tem dados não criptografados fluindo através de uma conexão de rede. E se esses dados forem informações de cartão de crédito?

Minhas perguntas:

  1. A conexão não criptografada entre o balanceador de carga e o nginx representa um risco de segurança?
  2. Se a resposta para 1 for sim, como configuro o nginx para permitir as conexões seguras do balanceador de carga?
  3. Isso envolveria a configuração de um certificado ssl em cada servidor nginx?
  4. Como seria a configuração do nginx se precisar ser diferente de uma configuração ssl padrão, em que o nginx não está atrás de um balanceador de carga?
por JamieD 01.07.2016 / 11:33

1 resposta

3

Does having and unencrypted connection between the load balancer and nginx pose a security risk?

  • Se você estiver falando sobre dados de cartão de crédito e coisas assim: Sim.

If the answer to 1 is yes, how would I setup nginx to allow the secure connections from the load balancer? Would this involve setting up an ssl certificate on each nginx server?

  • O nginx config é / seria bastante normal, nada sofisticado.
  • Sim, você precisaria de um certificado ssl em cada máquina executando nginx . Você poderia usar um certificado para isso, você não precisa necessariamente de múltiplos. Além disso: Usando o Vamos criptografar agora é bastante fácil e automatizado obter certificados, gratuitamente.
  • Se você enviar dados confidenciais entre o ELB e suas máquinas, verifique se esses / esses links também estão criptografados. Como fazer isso é explicado nos documentos .

What would the nginx config look like if it needs to be different than a standard ssl setup where nginx is not behind a load balancer?

  • Não há uma grande diferença, tanto quanto eu sei. Se você precisar do IP do cliente por qualquer motivo, coloque essas linhas no seu nginx config:

    real_ip_header X-Forwarded-For;
    set_real_ip_from ${ip-of-your-elb}/${netmask-of-your-elb};
    


  • Bônus: configure seu "próprio ELB" usando o excelente HAProxy , por exemplo. Indo desta maneira, você poderia cuidar da criptografia entre o ELB e as máquinas de backend, usando o que parece ser apropriado: https, ssh tunnels, uma VPN, ...
por 01.07.2016 / 11:47