Назад | Перейти на главную страницу

Полное сквозное шифрование с помощью AWS Elastic Load Balancer, Nginx и SSL

Вы увидите много места в Интернете рассказывается, как настроить SSL с помощью AWS ELB - это настроить сертификат на балансировщике нагрузки, а затем перенаправить трафик с порта 443 на 80, чтобы трафик между балансировщиком нагрузки и nginx не был зашифрован. Мне это кажется не очень безопасным, поскольку у вас есть незашифрованные данные, передаваемые через сетевое соединение. Что, если эти данные являются информацией о кредитной карте?

Мои вопросы:

  1. Представляет ли наличие незашифрованного соединения между балансировщиком нагрузки и nginx угрозу безопасности?
  2. Если ответ на 1 - да, как мне настроить nginx, чтобы разрешить безопасные соединения от балансировщика нагрузки?
  3. Будет ли это включать в себя настройку сертификата SSL на каждом сервере nginx?
  4. Как будет выглядеть конфигурация nginx, если она должна отличаться от стандартной настройки ssl, где nginx не находится за балансировщиком нагрузки?

Представляет ли наличие незашифрованного соединения между балансировщиком нагрузки и nginx угрозу безопасности?

  • Если говорить о данных кредитной карты и тому подобном: да.

Если ответ на 1 - да, как мне настроить nginx, чтобы разрешить безопасные соединения от балансировщика нагрузки? Будет ли это включать в себя настройку сертификата SSL на каждом сервере nginx?

  • В nginx config является / будет довольно стандартным, ничего особенного.
  • Да, вам понадобится ssl-сертификат на каждой машине, на которой работает nginx. Для этого вы можете использовать один сертификат, вам не обязательно несколько. Кроме того: Использование Позволяет зашифровать Получение сертификатов теперь довольно просто и автоматизировано, бесплатно.
  • Если вы отправляете конфиденциальные данные между ELB и вашими компьютерами, убедитесь, что эта / эти ссылки также зашифрованы. Как это сделать, объясняется в документах.

Как будет выглядеть конфигурация nginx, если она должна отличаться от стандартной настройки ssl, где nginx не находится за балансировщиком нагрузки?

  • Насколько я знаю, большой разницы нет. Если вам по какой-либо причине нужен IP-адрес клиента, поместите эти строки в свой nginx config:

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


  • Бонус: настройте свой «собственный ELB», используя отличный HAProxy например. Поступая таким образом, вы можете самостоятельно позаботиться о шифровании между ELB и внутренними машинами, используя все, что кажется / подходящим: https, ssh-туннели, VPN, ...