Я использую Amazon ELB для балансировки нагрузки между серверами,
Когда мой сайт атакуют боты, все исчерпано, вот в чем проблема
Я не могу блокировать IP-адреса с помощью групп безопасности Amazon, потому что они явно не разрешают «запретить», поэтому для запрета одного IP-адреса вы должны разрешить любой другой IP-адрес, что утомительно.
Я не могу использовать iptables для блокировки IP-адресов, потому что ELB скрывает общедоступные IP-адреса и заменяет их своим собственным IP-адресом.
Фактический IP-адрес посетителей можно увидеть только в X-FORWARDED-IP.
Вы правы, что вы не можете использовать группы безопасности для блокировки трафика.
Если вы используете VPC, что и должно быть, то вы можете использовать сетевой ACL Amazon в качестве брандмауэра. Они разрешают правила DENY, поэтому вы можете блокировать трафик на блоке IP или CIDR.
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Security.html#VPC_Security_Comparison
Это случилось и со мной. Я думал об этом, и, хотя я не пытался его реализовать, я думаю, что для нас ответ - запустить экземпляр, на котором запущен выделенный брандмауэр перед серверами приложений. Таким образом, настоящие IP-адреса будут видны брандмауэру. Я постараюсь обновить это после того, как попытаюсь реализовать его с любыми проблемами, с которыми я столкнулся.
Не очень хорошее решение
Вы можете заблокировать IP-адрес от доступа к экземпляру EC2 с помощью apache или iis. Очевидно, это было бы непрактично для сотен случаев.
Этот вопрос тоже очень актуален: Блокировка IP за балансировщиком нагрузки
Я не верю, что это возможно иначе, чем то, которое вы описали на уровне ELB.
Вы можете использовать брандмауэр для каждого экземпляра (например, iptables), чтобы заблокировать определенные IP-адреса или даже установить ограничение на количество подключений в минуту / секунду для IP-адреса.
Таким образом, вы можете автоматически блокировать злоумышленников.
Также вы можете использовать такие инструменты, как Chef / Puppet, для распространения конфигурации вашего брандмауэра на каждый экземпляр.