7 разных вариантов недоступности сайта, которые могут быть классифицированы как DDoS.
1. Рекламный (псевдо) DDoS
Проблема: если время ответа сервера (хостинга) сайта больше 2-3 секунд, то сервер физически не сможет справиться с большой посещаемостью сайта и обслуживать хотя бы 1 запрос в секунду. Но если на сайт идут реальные заходы пользователей из поиска, рекламных кампаний (например, из контекстной рекламы) или партнерских программ, то обеспечить «равномерную» посещаемость сайта невозможно. Поэтому в какой-то момент на сайт может никто не заходить, а в какие-то минуты (или десятки минут) идти постоянный поток посетителей.
Как только поток посетителей сайта превышает пороговое значение (для сервера), то сервер начинает отказывать обычным (легитимным) посетителям в обслуживании. Просто по причине недостаточности ресурсов. Внешне эта ситуация полностью идентична DDoS-атаке. Единственная разница в том, что потом запросов к сайту не является сгенерированным, а полностью нормальный, естественный. Однако, в случае такой недоступности сайта потери бизнеса ровно такие же, как и в случае с заказной DDoS-атакой: потер ив рекламе и потери в заказах каждую минуту простоя.
Решение: позаботьтесь о времени ответа сервера. Эталоном будет среднее время ответа — 0,2 секунды, время ответа на тяжелые запросы — 1 секунда. В этом случае вы будете максимально защищены от перепадов легитимной посещаемости сайта и сможете обеспечить высокую скорость сайта для пользователей.
2. Поисковый (псевдо) DDoS
Следующим по тяжести после рекламного (когда поток пользователей неравномерный, но обычно спадает также быстро, как нарастает, и это позволяет максимально оперативно устранить последствия или сделать быстрое решение) идет поисковый DDoS. Так же как и рекламный, поисковый DDoS не является атакой в полном смысле этого слова — это тоже легитимный трафик.
Проблема: из-за большого количества запросов к «редким» страницам сайта (индексация поисковыми ботами) сервер перегружен запросами. Обычно это случается при одновременной индексации сайта несколькими поисковыми машинами — Яндекс, Google, Mail.Ru, Bing или Спутник. Поисковые роботы намного «упорнее» обычных пользователей и могут индексировать сайт часами, даже если он отвечает долго. Это приводит к затяжным последствиям в плане загрузки сервера и недоступности (или малой доступности) сайта.
Решение: рекомендации полностью повторяют предыдущий пункт с одним дополнением. Вы можете управлять (для «правильных» ботов) частотой запросов к сайту. И зная наверняка, что время ответа сервера большое, выставить небольшую частоту запросов к сайту со стороны поисковиков. Делается это в файле robots.txt директивой Crawl-Delay: 10 (10 — количество секунд между запросами от одного бота).
3. Нагрузочное тестирование и «детский» DDoS
Под нагрузочным тестированием стоит понимать как ваши собственные действия по проверке отказоустойчивости сайта, так и действия злоумышленников (целью которых будет отказ сайта в обслуживании, а не проверка его возможностей). Но по внешним признакам и методам противодействия «малой кровью» все действия схожи.
Проблема: при создании большого потока запросов к сайту к одной или нескольким страницам (обычно «под удар» попадает главная страница и страница отправки заявки или страница каталога) сервер не справляется с нагрузкой и отказывает в обслуживании. Отличием от предыдущих типов DDoS является то, что нагрузка на сайт создается извне, искусственно, и не является нормальной.
Решение: обычно работают стандартные методы противодействия DDoS (в зависимости от условий и ситуации) — кэширование страниц, блокировка запросов по IP адресу, блокировка запросов по агенту пользователя (User Agent), выставление cookie для пользователей с «браузерами». При небольшой частоте запросов (обычно не более 5 в секунду) облако Айри отдает страницу из кэша, гарантируя безупречную работу сайта для всех пользователей.
4. Распределенный «слабый» DDoS
Следующим шагом после «детского» DDoS злоумышленники используют «слабый» DDoS. Что это такое? Это большое количество запросов к одному и тому же (или набору из нескольких) адресов сайта, которые совершаются с малой частотой (обычно 1-2 раза в минуту) с очень большого количества адресов (которое может меняться). Есть две распространенные практики по созданию такого DDoS — ботнет из уязвимых WordPress-сайтов с разрешенным pingback (это почти 80% всех WordPress сайтов) и вызов страниц сайта в качестве изображений на посещаемом ресурсе.
Проблема: большое количество «редких» запросов к сайту может выглядеть как обычный рост посещаемости, но таковым не являться и точно так же блокировать нормальную работу сайта.
Решение: WordPress pingback блокируется в сервере на уровне User Agent, запросы с популярного ресурса — по referer ресурса (или с помощью кэширования страницы, если это возможно). Грамотная настройка сервера обычно предупреждает возможность таких атак.
5. DDoS сетевых уязвимостей
Более сложным в организации и несколько более сложным в противодействии является атака на сетевой стек сервера (или провайдера), используя известные недочеты в обработке запросов (SYN цунами, Ping Of Death, Slowloris и другие).
Проблема: эксплуатация уязвимостей сводится к простому переполнению буфера входящих запросов (или других буферов) тем или иным способом, что блокирует возможность соединения с сервером (он уже «отвечает» по тысячам и десяткам тысяч запросов).
Решение: организация такой атаки существенно дороже, чем предыдущих типов, поэтому она встречается на практике реже. С незначительными по силе атаками поможет справиться идеально настроенный сервер для сайта (даже обычный сервер способен обслуживать десятки тысяч запросов при должной настройке). В серьезных случаях поможет только сеть серверов, каждый из которых максимально оптимизирован на работу с такими типами запросов.
6. DDoS флуд
Другим рычагом воздействия на ресурсы сайта, если настройка сервера идеальна и сайт отвечает быстро, является переполнение входящего (или исходящего) канала. Для этого используется флуд (flood).
Проблема: у обычных серверов подключение к сети интернет ограничено скоростью 100 Мбит/с (более свойственно для виртуальных серверов) или 1 Гбит/с (является распространенной практикой для физических серверов). При поступлении достаточного числа запросов к сайту, каждый из которых (или ответ на него) займет определенную часть полосы подключения, сервер будет недоступен по причине загруженности трассы.
При этом ресурсы сервера могут быть почти не использованы, но «дойти» до него будет невозможно (что и является целью DDoS). Различают несколько типов флуда — TCP (обычные запросы, например, к тяжелым файлам), UDP (DNS-запросы или, в случае с усилением-amplification, DNS-ответы), NTP (ответы серверов синхронизации времени, ошибочно направленные на сайт) и ICMP (ping).
Последний тип является наиболее тяжелым: при незначительной загрузке полосы пропускания могут быть полностью заблокированы ресурсы сервера (ядра операционной системы), используемые для обработки сетевых пакетов — когда количество пакетов достигает миллиона в секунду и более.
Решение: в некоторых случаях (малой величины атаки) поможет подключение и настройка физического сервера, но для нормального противодействия атакам необходим внешний провайдер защиты от DDoS с собственной инфраструктурой. Сила атаки может достигать сотен гигабит в секунду — это даже больше, чем подключение среднего хостинг-провайдера в России (т.е. при атаке на вас может отказать хостинг-провайдер целиком).
7. Комбинированный DDoS
Для успешного проведения подготовленной атаки злоумышленники обычно используют несколько вариантов (иногда все), перебирая их до достижения результата (или исчерпания стоимости атаки). Например, DDoS флуд может быть успешно комбинирован с нагрузочным тестированием на слабые точки сайта (страницы, которые отвечают долго) и переполнение канала подключения сервера к интернету будет сопровождаться переполнением вычислительных ресурсов (или буфера входящих запросов).
Грамотное противодействие комплексной DDoS-атаке должно включать, как минимум, осознание рисков простоя сайта. По данным Айри.рф, ежедневно 0,2-0,5% сайтов подвергаются атаке, за год до 10% сайтов встречают тот или иной тип DDoS.