Задать вопрос

Кем лучше банить?

Привет, комрады.
Интересует следующий вопрос: Как вы справляетесь с http флудом на сервера?
Я нашел для себя несколько способов:
1) Анализ логов nginx и блокировка самых "назойливых" посетителей(ботов). Минус - нагрузка при чтении логов и, все равно, остается нагрузка, ибо продолжает бомбить сервер даже в ошибку.
2) Ограничение на количество соединений с одного IP на уровне nginx. Минус - продолжают бомбить сервер и какая-никакая, а нагрузка есть. Даже от заглушек и ошибки 444.
3) Ограничение на количество соединений с одного IP на уровне iptables. Минус - нагрузка на сервер файерволлом.
4) Анализ netstat и дальнейшая блокировка ботов с большим количеством коннектов. Минус - нагрузка на сервер файерволлом.
5) Ограничение стран в nginx/iptables. Минусы те же, что и выше.

В общем, вопрос. Кем лучше банить так, чтобы нагрузка была поменьше?
Предложите интересные варианты, пожалуйста. Напишите, как боретесь с подобными атаками вы?
  • Вопрос задан
  • 3649 просмотров
Подписаться 12 Оценить Комментировать
Ответ пользователя Ilya Evseev К ответам на вопрос (7)
IlyaEvseev
@IlyaEvseev
Opensource geek
1) И обнаруживать, и банить можно и нужно на нескольких уровнях.
Грубые атаки обнаруживать командой ss (не netsat!).
Безусловную блокировку делать через ipset (не iptables!).
Через nginx обнаруживать хитрые атаки, блокировать подозрительные.

2) В качестве отправной точки ищите в Гугле "site:habrahabr.ru nginx ipset".
Особо рекомендую habrahabr.ru/post/139931

3) Не пытайтесь сразу построить идеальную защиту.
Начните с простейшей и постепенно совершенствуйте.

4) Если вы не крутой спец по антиддосу, абсолютная защищенность недостижима. Можно только повысить порог пробития.
Ответ написан