Ответ 1
Думаю, вы описали все текущие варианты. Вы можете захотеть прослушивать некоторые темы форума AWS, чтобы проголосовать за решение - инженеры и руководство Amazon открыты для предложений по улучшению ELB.
Обычно мы указываем адрес IP-адреса с iptables
. Но в Amazon EC2, если соединение проходит через балансировщик эластичной нагрузки, удаленный адрес будет заменен адресом балансировки нагрузки, показывая iptables
бесполезно. В случае HTTP, видимо, единственный способ узнать реальный удаленный адрес - посмотреть заголовок HTTP HTTP_X_FORWARDED_FOR
. Для меня блокировка IP-адресов на уровне веб-приложений не является эффективным способом.
Какова наилучшая практика защиты от DoS-атаки в этом сценарии?
В этой статье кто-то предположил, что мы можем заменить Elastic Load Balancer на HAProxy. Однако есть определенные недостатки в этом, и я пытаюсь понять, есть ли какие-то лучшие альтернативы.
Думаю, вы описали все текущие варианты. Вы можете захотеть прослушивать некоторые темы форума AWS, чтобы проголосовать за решение - инженеры и руководство Amazon открыты для предложений по улучшению ELB.
Если вы развертываете свои ELB и экземпляры с использованием VPC вместо EC2-classic, вы можете использовать группы безопасности и сетевые ACL для ограничения доступа к ELB.
http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/USVPC_ApplySG.html
Обычно запускается сервер приложений за обратным прокси. Ваш обратный прокси - это слой, который вы можете использовать для добавления защиты DoS до того, как трафик доберется до вашего сервера приложений. Для Nginx вы можете смотреть модуль ограничения скорости как что-то, что могло бы помочь.
Вы можете настроить хост EC2 и запустить там haproxy (что то, что Amazon использует в любом случае!). Затем вы можете применить свои iptables-фильтры к этой системе.
Вот инструмент, который я сделал для тех, кто хочет использовать Fail2Ban для aws с apache, ELB и ACL: https://github.com/anthonymartin/aws-acl-fail2ban