Недостаток использования 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