Трафик блока позади AWS ELB

Мои веб-серверы находятся позади ELB, я хочу заблокировать трафик от некоторого определенного агента пользователя, который является DDos-атакой. Apache всегда видит IP-адрес ELB как конечный пользователь, таким образом, я попробовал ниже попыток:

  1. Блокирование IP-адреса на уровне ELB не возможно, потому что это имеет предел 20 изменений IP-адресов и IP-адресов при каждом нападении.
  2. Использование доступа блока переписывает условие, это работает, но если партия хитов прибывает затем, загрузка сервера идет вне 100, и все апачские потоки становятся занятыми в служащих тоннах 403, таким образом, сайт появляется вниз для легальных запросов.

    RewriteCond %{HTTP_USER_AGENT} ^SomeThing
    
    RewriteRule ^(.*)$ - [F]
    
  3. Блок с mod_sec делает то же самое обслуживания 403, которые создают тот же эффект как № 2 выше.

  4. Пакеты блока с 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-адреса могут быть присвоены некоторым законным пользователям, и это будет заблокировано.

Или есть ли какой-либо другой лучший способ обработать это нападение?

4
задан 12 December 2014 в 05:21
3 ответа

Блокировка ip'ов в iptables - хороший план, так как это минимизирует влияние на ваш сервер. Но правила в iptables есть навсегда, так что вам нужно что-то ещё, чтобы управлять истечением срока действия чёрного списка. fail2ban кажется простым решением. Другая проблема заключается в том, что IP-адреса источника будут внутренними IP-адресами ELB, поэтому вам нужно выполнить фильтрацию в группе безопасности перед ELB.

.
0
ответ дан 3 December 2019 в 03:42

Оригинальный IP клиента предоставляется ELB в заголовке X-Forwarded-For.

Вы можете использовать X-Forwarded-For в правилах перезаписи .

.
0
ответ дан 3 December 2019 в 03:42

В качестве альтернативы, не используйте 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

3
ответ дан 3 December 2019 в 03:42

Теги

Похожие вопросы