Недостаток использования ELB. Является ли Nginx лучшим решением? (ELB против Nginx)

Отказ от ответственности:

Эта тема для HTTP-трафика (на платформе Linux). Может быть, есть хорошее решение с ELB (с разумной ценой для всех) для проблемы ниже. Но пока не могу найти ни одного. Вот почему мне нужны советы экспертов.

Проблема:

Я использую AWS Elastic Load Balancing (ELB) в течение многих лет. И вдруг понял, что существует огромный (и критический для меня) недостаток ELB .. который заключается в блокировке входящих соединений по IP.

Потому что, как только вы отстаете от ELB, ваши внутренние серверные брандмауэры (как iptables) уже бесполезны, потому что все пересылаемые трафик от ELB помечаются как IP ELB (не реальный IP-адрес клиента). ELB только пересылает IP реального клиента, как в X-Forwarded-For Заголовок http, который бесполезен для iptables, (Если вы не можете предположить, что есть брандмауэр Linux как iptables который также может обрабатывать HTTP-трафик с заголовком XFF (X-Forwarded-For) внутри.)

Я понимаю, что это нормальное поведение таких обратных прокси, но мне нужно установить брандмауэр! Я знаю, что в AWS предлагается использовать правила VPC и ACL для блокирования входящих соединений по IP. Но у NACL есть пределы правил! (AWS допускает только максимум 40 правил в NACL)

Представьте, что вы используете публичный веб-сайт с высоким трафиком, а затем вам нужно блокировать много плохих IP-адресов, обнаруживаемых каждый день. Как бы эти 40 правил помогли?

Нужен совет:

Я начинаю думать об использовании Nginx в качестве балансировщика нагрузки (на отдельном экземпляре). Я использовал Nginx раньше, и это многообещающее. И, конечно же, может заменить ELB . А потом:

  • использовать iptables на что Nginx Пример! (Итак, эта виртуальная машина станет LB+Firewall)

Но прежде чем я сделаю ход,

  • Есть ли лучшие, экспертные советы?
  • Какова будет большая разница (влияние) не использования ELB здесь?

Спасибо всем за советы.

5 ответов

Использование ELB остается ценным, потому что избыточность является частью службы.

Использование Nginx в качестве балансировщика нагрузки будет единственной точкой отказа, если вы не настроите резервный сервер и что-то вроде heartbeat автоматически переключаться на запасной сервер Nginx.

Рассмотрим многоуровневый подход с использованием как ELB, так и Nginx. ELB может пересылать трафик двум или более веб-хостам в разных зонах доступности, каждая из которых работает под управлением Nginx. С Nginx и fail2ban вы все равно можете блокировать хосты по IP-адресу. Общий подход работает так:

  • Сконфигурируйте Nginx для регистрации реального IP-адреса в файлах журнала, а не IP-адреса ELB.
  • Сконфигурируйте fail2ban, чтобы просматривать журналы доступа Nginx и искать блокируемые IP-адреса.
  • Когда fail2ban обнаруживает IP-адрес, который он должен заблокировать, он обновляет включаемый файл Nginx и перезагружает Nginx, чтобы правило вступило в силу. fail2ban истекает запреты таким же образом.

Вы также можете исключить fail2ban и вручную вести список IP-адресов для блокировки.

Подробное объяснение этого подхода доступно по адресу: "Nginx + Fail2ban IP блокировки за AWS Load Balancer".

Прошло много времени с тех пор, как был задан этот вопрос, но я подумал, что, возможно, стоит отметить, что как классические, так и балансировщики нагрузки приложений нового поколения теперь поддерживают группы безопасности для ограничения доступа к вашему балансировщику нагрузки - http: //docs.aws.amazon. ком / elasticloadbalancing / последняя / приложение / балансировка нагрузки-обновление-безопасность groups.html

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.elb.html

Вы можете изменить протокол прослушивателя с HTTP на TCP, если хотите, чтобы балансировщик нагрузки переадресовывал запросы как есть. Это предотвращает перезапись заголовков балансировщиком нагрузки (включая X-Forwarded-For) и не работает с липкими сессиями.

Вот инструмент, который я сделал для тех, кто хочет использовать Fail2Ban в aws с apache, ELB и ACL: https://github.com/anthonymartin/aws-acl-fail2ban

Это полезно для обнаружения и предотвращения DoS-атак и злоупотребления экземплярами ec2.

Вы можете настроить брандмауэр AWS (называемый группами безопасности) для ELB / ALB: http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-update-security-groups.html

Другие вопросы по тегам