Дело в том, что у меня есть постоянный китайский ботнет, который рассылает спам на моем форуме (работает на сервере Ubuntu 12.04.2 на nginx и т. Д.). Я использовал UFW («Несложный брандмауэр» Ubuntu) для управления брандмауэром, просто как простой способ не иметь дело с iptables.
Я определил чрезвычайно последовательный и уникальный (не говоря уже о глупом) URL-адрес, который он пытается загружать каждый раз, когда бот попадает, и на основании этого сделал cron для анализа журналов доступа каждый час и поиска новых злоумышленников, и ufw deny from [ip-address]
на них.
Однако натиск не прекращается. Это невероятно. Я регистрирую каждый заблокированный IP-адрес, и это почти 17000 IP-адресов. 98% IP-адресов поступают из Китая, а некоторые из них - из других стран.
это появляется чтобы работать хорошо: на практике все эти атаки заблокированы, и соединения вернулись в нормальное состояние, трафик упал в геометрической прогрессии, а эффективный DDOS прекратился (если я пропущу этих клиентов, объем и скорость запросов потрясающе).
UFW также кажется быть в порядке с этим. Ничего не тормозит, запросы обслуживаются с той же скоростью, задержка, насколько я могу судить, не пострадала. Я попытался объединить отдельные IP-адреса в диапазоны, насколько это возможно, но было бы трудно определить их все, и я бы заблокировал на порядок больше IP-адресов, чем на самом деле вызывает проблемы.
Итак, несколько вопросов:
К сожалению, я не хочу блокировать весь Китай, так как знаю, что у нас там есть пользователи ...
Это не повлияет на влияние на память (даже сделает его немного хуже), но сохранит нагрузку на ЦП: если вы еще этого не сделали, вам следует занести в белый список остальной мир вместо того, чтобы проверять все входящие соединения по вашему длинному списку заблокированных IP-адресов.
1-2. Теоретически сколько угодно. На практике вы сначала должны начать наблюдать некоторые проблемы с памятью, потому что все эти правила должны быть загружены. Тогда у вас возникнет настоящая проблема с максимальной загрузкой процессора, потому что вам придется проверять все эти правила, пока вы не выберете подходящее. Также зависит от того, что вы регистрируете (т.е. регистрируете ли вы все, все DROP и так далее?)
3. Используйте наборы IP, блокируйте целые блоки IP и / или комбинируйте с аппаратным межсетевым экраном.
4. Я не знаком с bbPress, но есть множество вещей, которые вы можете сделать для смягчения атак, от кеширования до предварительной блокировки связанных IP-блоков в ботнете.
Вы просите о возможных улучшениях, и в первую очередь я бы хотел ускорить цикл обратной связи. По моему опыту, DDOS уходят быстрее, если они быстро видят свою безуспешность. Поэтому отвечайте на запросы для этого URL-адреса с помощью 404 и немедленно блокируйте их (один из способов добиться этого - вставить IP-адрес в трубку beanstalk и превратить вашу cronjob в постоянно работающую вещь, которая опрашивает эту трубку и блокирует).