Назад | Перейти на главную страницу

DDOS-атака - как предотвратить

Недавно я прочитал об атаке отказа в обслуживании на Amazon и PayPal. Мне любопытно, как это выполняется. У этих крупных компаний должны быть огромные серверы, поэтому для доступа к ним DOS потребовались бы миллиарды ботов.

Итак, мои вопросы

  1. Как DDOS-атака выполняется на этом уровне?
  2. Как заранее узнать, что это нападение?
  3. Как это предотвратить (как отличить бота от пользователя, кроме обычного способа использования капчи)

По сути, такие атаки типа «отказ в обслуживании» включают отправку серверу большего количества запросов, чем он может обработать. Это может быть большое количество ботов, отправляющих простые запросы (хотя для этого не требуются миллиарды, чтобы вывести из строя один сервер - несколько тысяч вершин), или несколько ботов, отправляющих запросы, которые, как известно, долго выполняются.

Второй тип атаки является наиболее опасным, поскольку один бот вполне может вывести из строя сервер. Например, MySQL LIMIT N OFFSET M печально известно медленно, когда M становится большим, поэтому простой атакой будет быстрый последовательный запрос страниц 200–300 из 500, забивая все рабочие потоки MySQL. На незащищенном сервере это можно сделать с помощью firebug. Единственное решение - определить дорогостоящие операции, а затем либо чертовски оптимизировать их, либо сделать их последовательными (чтобы засорение этой части сайта не повредило остальную часть сайта), либо обнаружить IP-адреса, требующие дорогостоящих операций и отказываться выполнять эту операцию, если не соблюдается определенный интервал ожидания.

Первый тип атаки осуществить сложнее, потому что вам нужно много ботов. С другой стороны, также сложнее остановить сервер: если у вас есть тысячи ботов, отправляющих вам данные так быстро, как они могут, ваша пропускная способность будет съедена наводнением, и сервер ничего не сможет с этим поделать (даже если он полностью отклоняет 99% этих запросов), поэтому маршрутизатор с защитой от флуда - хороший выбор, если вы думаете, что можете стать целью.

На самом деле нет никакого способа предотвратить действительно распределенную DOS-атаку, поскольку нет никакой разницы между этим и обработкой всплеска легитимного трафика. (обслуживание капчи может предотвратить атаку, связывающую длительные процессы или интенсивное использование ресурсов, но достаточная атака также приведет к перегрузке вашей пропускной способности, обслуживающей капчу).