Мои веб-серверы находятся позади ELB, я хочу заблокировать трафик от некоторого определенного агента пользователя, который является DDos-атакой. Apache всегда видит IP-адрес ELB как конечный пользователь, таким образом, я попробовал ниже попыток:
Использование доступа блока переписывает условие, это работает, но если партия хитов прибывает затем, загрузка сервера идет вне 100, и все апачские потоки становятся занятыми в служащих тоннах 403, таким образом, сайт появляется вниз для легальных запросов.
RewriteCond %{HTTP_USER_AGENT} ^SomeThing
RewriteRule ^(.*)$ - [F]
Блок с mod_sec делает то же самое обслуживания 403, которые создают тот же эффект как № 2 выше.
Пакеты блока с iptables представляют модуль в виде строки: пакеты Блока, которые имеют определенный агент пользователя. В этом сценарии iptables отправляет ОТБРАСЫВАНИЕ / ОТКЛОНЕНИЕ взломщику, апач не получает сигнал, что соединения теперь мертвы и ожидают тайм-аута, которые вызывают все апачские потоки, используемые для тайм-аута, таким образом, этот метод не полезен здесь.
iptables -I INPUT -i eth0 -p tcp --dport 80 -m string --algo bm --string 'user-agent: SomeThing' -j REJECT
Я могу использовать iptables такой способ, которым это получит IP-адрес от первого пакета, который имеет user-agent: SomeThing
и блокируют все следующие пакеты, который имеет X-Forwarded-For: someIP
в течение 4-5 часов. Я не хочу сохранять IP-адрес, блокирующийся всегда, поскольку эти IP-адреса могут быть присвоены некоторым законным пользователям, и это будет заблокировано.
Или есть ли какой-либо другой лучший способ обработать это нападение?
Блокировка ip'ов в iptables - хороший план, так как это минимизирует влияние на ваш сервер. Но правила в iptables есть навсегда, так что вам нужно что-то ещё, чтобы управлять истечением срока действия чёрного списка. fail2ban кажется простым решением. Другая проблема заключается в том, что IP-адреса источника будут внутренними IP-адресами ELB, поэтому вам нужно выполнить фильтрацию в группе безопасности перед ELB.
.Оригинальный IP клиента предоставляется ELB в заголовке X-Forwarded-For.
Вы можете использовать X-Forwarded-For в правилах перезаписи .
.В качестве альтернативы, не используйте ELB, а разверните собственный балансировщик нагрузки с помощью HAProxy.
Если вы развертывали свой сайт с помощью AWS OpsWorks , вам следует имейте в виду, что AWS OpsWorks поддерживает уровень балансировки нагрузки на основе HAProxy .
Да, подготовка уровня балансировки нагрузки HAProxy требует гораздо больше усилий, чем простое развертывание набора ELB, но в конечном итоге позволяет полностью настроить iptables, даже используя fail2ban.
Изменить: Если настройка рецептов Chef - не ваше блюдо (: D), у меня есть альтернатива. Я только что создал проект FOSS под названием haproxy-autoscaling , размещенный на bitbucket, если кто-то захочет его проверить. Почти готово. Уже можно использовать, но требуется некоторая обработка вручную.
URL: https://bitbucket.org/pepoluan/haproxy-autoscaling/overview