DDOS-заблуждения: Fail2Ban и Nginx лимиты
Пройдусь по этим заблуждениям.
1️⃣ Надо установить и настроить Fail2Ban. Это прям база, про которую всегда пишут. Fail2Ban - популярный инструмент, который решает некоторые задачи, но от DDOS он не поможет. Я его сразу же отключаю, если начинается атака. Именно Fail2Ban первым делом и положит ваш сервер с сайтом, как только лог веб сервера начнёт измеряться гигабайтами. А это может случиться очень быстро.
Пока с этим не столкнёшься, не поймёшь. Кажется, что это простой и эффективный инструмент, для которого куча инструкций. Да, им удобно банить редких ботов, которые долбятся в админку, в несуществующие урлы, превышают лимиты веб сервера и т.д. Но как только идёт DDOS, он больше вредит, чем помогает.
2️⃣ Настроить limit_conn и limit_req в Nginx. С их помощью можно ограничить число подключений с конкретного IP или запросов на конкретный урл. Настроить в целом можно. Я, собственно, их всегда и настраиваю. Они работают в связке с Fail2Ban. Но от DDOS это тоже не поможет, а усугубит ситуацию. Боты займут все лимиты и реальные пользователи вообще ничего не увидят. Это будет равноценно тому, что вы просто отключите свой сайт. Получается, что вы не решите проблему, а усугубите, упростив задачу атакующему.
3️⃣ Заблокировать ботов на веб сервере. Это может быть блокировка по гео признаку, по юзер агенту, кукисам или ещё какому-то признаку. Иногда паразитный трафик такой интенсивный, что тот же Nginx на 100% загружает сервер, даже отдавая только статическую страницу с заглушкой. Он уже не может эффективно работать. Если есть возможность, отсекать запросы надо заранее.
Мой опыт успешного отражения некоторых небольших атак говорит о том, что если ты что-то можешь сделать, то лучше это делать сразу на файрволе, не допуская трафик до веб сервера. Я применяю связку iptables + ipset. Хорошо их знаю и умею пользоваться. Только так хоть как-то можно что-то сделать, если тебе не забили входящий канал и тебя не отключил провайдер.
На моей практике отражались какие-то автоматизированные и с моей стороны выглядящие как бессмысленные атаки. Если я видел, что атакует какой-то человек, применяя разные методы, то рано или поздно от добивался своего и тебе оставалось только подключать внешнюю защиту, менять IP, направлять трафик через DNS на адреса защиты.
DDOS зачастую продаётся как услуга, тебе не обязательно в этом разбираться, если хочешь кому-то навредить. Достаточно заплатить, и в зависимости от твоего бюджета, будут выбирать методы и продолжительность воздействия. Если бабки не проблема, то просто сразу же заказываешь атаку, которая забивает входящий канал и сайт падает. А дальше у владельца только один вариант - подключать платную защиту.
В целом, немного разбираться в отражении простых атак стоит. Я сталкивался много раз с ними. Знаю знакомых, которые не понимали, что им делать, даже когда их один человек долбил запросами в какое-то уязвимое место на сайте. Они прям думали, что их атакуют и надо срочно покупать защиту, хотя хватило бы и простого Fail2Ban или одного правила в файрволе. Основная проблема в получении практического опыта. Потренироваться не на чем. Сымитировать нормальную атаку довольно сложно. Например, во вчерашней атаке я по итогу забанил 135 000 IP адресов. Так как я не первый раз с этим сталкиваюсь, просто открыл свои прошлые публикации и набор сохранённых команд и скриптов, которые использовал ранее.
#ddos #совет