Ошибка при ддос атаке

Цунами DDoS-атак, накрывшее российские интернет-ресурсы весной и летом этого года, продемонстрировало всем актуальность этого вида киберугроз и развеяло последние сомнения относительно необходимости защиты от них. Вопрос — в том, как правильно выстраивать защиту от DDoS-атак и каких ошибок при этом следует избегать.

  1. Введение
  2. Основа основ — защищаемость
  3. Первый шаг имеет значение
  4. Особые требования — к обработке персональных и финансовых данных
  5. Не все сервисы защиты одинаково полезны
  6. Чего нельзя позволять атакующему
  7. Не оставляйте «грабли»!
  8. Самые сложные проблемы — те, что заложены изначально
  9. Ещё раз о защищаемости
  10. Золотые правила DDoS-защиты
  11. Выводы

Введение

В этой аналитической статье собраны основные наблюдения и выводы, сделанные на основе почти десятилетней практики компании StormWall по выстраиванию защиты её клиентов от DDoS-атак. Статья будет, безусловно, полезной тем, кто хочет обеспечить эффективность защиты как с точки зрения качества отражения DDoS-атак, так и в отношении затрат, которые при этом потребуются. Особо ценной эта статья будет для тех, кто только приступает к созданию интернет-систем и имеет возможность уже на стадии проектирования заложить в них высокую устойчивость к DDoS-рискам.

В июне Anti-Malware.ru собрал оценки зарегистрированного уровня DDoS-атак, зафиксированных в первом квартале 2022 года, в статье «Развенчиваем мифы: DDoS-атаки в первом квартале 2022 г. были аномально сильными». Стоит отметить их постоянно растущую мощность — полтора месяца назад Cloudflare зафиксировала атаку мощностью 26 млн запросов в секунду, — а также длительность: II квартал побил рекорд по длительности DDoS (по данным Kaspersky).

Основа основ — защищаемость

Чтобы интернет-ресурс (сеть, сервер, сайт или приложение, предоставляющее мобильные или веб-сервисы) сохранял доступность не только в «мирное» время, но и находясь под атакой, зачастую бывает недостаточно просто подключить к нему DDoS-защиту. И правильные настройки тоже не всегда помогают. Всё дело в том, что разные ресурсы имеют разную степень устойчивости к DDoS-атакам. Она зависит не только от технических характеристик ресурса, но и от того, как его владельцы или те, кто за него отвечает, взаимодействуют с поставщиками решений для защиты от DDoS-атак.

В 2017 году наша компания сформулировала концепцию защищаемости от DDoS-атак и определила основные параметры, которые на неё влияют. В нашем понимании защищаемость — это способность подключённых к интернету ресурсов быть эффективно защищёнными от DDoS-атак с минимальными затратами средств, времени и усилий. Эффективность в данном случае мы трактуем как отношение продолжительности времени, когда последствия атаки не отражаются на доступности ресурсов, к общей длительности атаки. В идеале это отношение должно стремиться к единице. Меньшее его значение говорит о том, что с какого-то момента доступность атакованного ресурса стала критически низкой.

Защищаемость — это, если угодно, иммунитет ресурса к воздействию DDoS-атак: чем он выше, тем более эффективной может быть его защита. И, наоборот, если иммунитет слаб, то и защита может не спасти этот ресурс — он наверняка на какое-то время окажется недоступным.

Чтобы обеспечить защищаемость ресурса, нужно решить четыре ключевые задачи:

  1. Предоставить как можно меньше информации о ресурсе атакующему: для злоумышленника ваш ресурс должен быть в максимальной степени «чёрным ящиком».
  2. Предоставить как можно больше информации провайдеру DDoS-защиты, чтобы он ясно представлял, что именно надо защищать, какие особенности имеются у ваших ресурсов и пр.
  3. Обеспечить понятные провайдеру возможности для фильтрации атаки (особенно это касается защиты приложений).
  4. Обеспечить надёжную и устойчивую работу ресурса во время атаки. Нужно, во-первых, понимать, что удар может прийтись на незащищённые по каким-то причинам компоненты ресурса. И, во-вторых, всегда нужно учитывать, что часть атаки, пусть и небольшая, может пробиться сквозь DDoS-защиту и существенно повысить нагрузку на ресурс.

Первый шаг имеет значение

Первым вашим шагом, который следовало бы сделать, прежде чем приобретать сервисы Anti-DDoS, должно быть составление перечня ресурсов, которые вы планируете защищать, и подробного описания необходимых уровней их защиты. Нужно сесть и подумать, какие сайты, веб-приложения, сервисы, обслуживающие мобильные устройства, а также серверы, сети, IP-адреса и прочие ресурсы могут подвергнуться DDoS-атакам, а потому нуждаются в защите.

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

Также надо определить, какая именно защита требуется вашим ресурсам: достаточно ли фильтровать пакеты сетевого (L3 по модели OSI) и транспортного (L4) уровней, нужен ли анализ трафика на уровне приложений (L7), передаваемого по протоколам HTTP / HTTPS или «поверх» них, какие ресурсы можно защитить с раскрытием приватных ключей SSL, а какие нельзя.

Подробный анализ потребностей в защите поможет избежать многих проблем, возникающих из-за DDoS-атак.

И вот пример того, к чему может привести недостаточная проработка этих потребностей. Один из наших клиентов подключил сервисы Anti-DDoS не только от крупного международного поставщика, но и от своего интернет-провайдера, однако эти сервисы не смогли обезопасить компанию от DDoS-атак минувшей весной. Когда мы стали разбираться, на каких уровнях осуществляется защита, то выяснилось, что защита от пакетного флуда на уровнях L3 и L4 есть, а от атак на уровне L7 её нет — что как раз и стало причиной недоступности интернет-приложений, оказавшихся целью атаки.

Особые требования — к обработке персональных и финансовых данных

Если ваш ресурс представляет собой финансовый сервис или приложение обеспечивающее обмен конфиденциальными (например, персональными) данными, то, скорее всего, придётся использовать защиту без раскрытия приватных ключей SSL. В частности, она требуется для систем, которые должны соответствовать международному стандарту платёжных систем PCI DSS.

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

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

Иногда бывает удобно использовать гибридный подход с применением отдельной пары, состоящей из сертификата и ключа, которая создаётся специально для обеспечения защиты от DDoS-атак. При таком сценарии удаётся скрыть «родной» приватный ключ, но при этом использовать защиту с раскрытием — у StormWall есть такая возможность.

Не все сервисы защиты одинаково полезны

После составления списка всех ресурсов, которые необходимо обезопасить, и определения способов их защиты нужно выбрать качественного, надёжного провайдера Anti-DDoS с хорошей репутацией, обладающего достаточной компетентностью не только для оказания услуг защиты, но и для консультирования по поводу выстраивания обороны от кибератак и подключения сервисов Anti-DDoS наилучшим образом.

Как правило, компании, которые не специализируются на оказании услуг защиты от DDoS-атак, просто продают доступ к веб-интерфейсам каких-то решений или устройств, сами толком не понимая, как они работают. С этим как раз и связаны все дальнейшие проблемы: защита, скорее всего, предоставляется лишь на бумаге, а на деле она либо вовсе не работает, либо оказывается неэффективной.

Схожая картина наблюдается и в ситуациях, когда оператор коммерческого дата-центра, облачный или интернет-провайдер перепродаёт сервисы защиты своего партнёра — провайдера Anti-DDoS. В принципе в этом нет ничего плохого. Вопрос — в том, какого качества и объёма поддержка при этом будет предоставляться в случае атаки: будет ли у вас прямая связь с провайдером сервисов Anti-DDoS и его службой поддержки и есть ли у хостера или интернет-провайдера, который непосредственно продаёт сервисы Anti-DDoS, собственные специалисты по защите от DDoS-атак.

Впрочем, что говорить о хостерах и интернет-провайдерах, если даже у специализированных DDoS-защитников уровень и качество сервисов сильно различаются. Далеко не каждый провайдер Anti-DDoS сможет, например, подстроить свою защиту под особенности ваших интернет-ресурсов. Поэтому следует заранее уточнить, насколько он готов адаптироваться под ваши требования и специфику.

Не все провайдеры Anti-DDoS предоставляют и доступ к настройкам защиты, а у тех, кто предоставляет, возможности этих настроек могут варьироваться в широком диапазоне. Полезно узнать и затем проверить в ходе тестирования, какова мощность системы фильтрации этого провайдера — 100, 200, 600 Гбит/с или какая-то иная: это поможет оценить, способны ли сами фильтры устоять в случае атаки с серьёзной мощностью.

Очень важно понять, какую именно защиту предлагает конкретный провайдер. Часто (особенно, если защита идёт как дополнение к интернет-услуге) это защита на уровнях L3 / L4 модели OSI. Но она в принципе неспособна обезопасить сайты и приложения от атак с применением HTML-ботов. Если атака запускается с нескольких компьютеров, то на пакетном уровне можно выявить некую аномальную активность, которую нужно отфильтровать. Однако если число атакующих ботов исчисляется тысячами (такие ботнеты можно арендовать буквально за гроши), то никакая защита уровня L3 / L4 такую атаку не отфильтрует. Впрочем, и не должна. Для отражения таких атак требуется полновесная защита уровня L7, позволяющая анализировать каждый HTTP-запрос, проводить дополнительные проверки, изучать системные журналы, исследовать их и выяснять, какие именно идут запросы, какого рода активность наблюдается, делать выводы и на их основе принимать решения.

Необходимо также убедиться, что провайдер Anti-DDoS знает, как фильтровать наиболее критические для вас виды DDoS-атак, и имеет для этого необходимый набор методов и инструментов, чтобы успешно отсекать нелегитимный трафик. Мы знаем, например, что далеко не все DDoS-защитники умеют фильтровать трафик UDP, причём выясняется это нередко только тогда, когда ресурсы клиента оказываются недоступными. Некоторые защитники, распознав атаку, просто блокируют UDP-трафик, даже не пытаясь его отфильтровать. Многие провайдеры Anti-DDoS не умеют фильтровать DNS-трафик на уровне приложений. И так далее.

Очень важно также понять, какие возможности предоставляет провайдер Anti-DDoS для оперативной связи с клиентами: есть ли у его службы технической поддержки телефон, чат, система приёма заявок (тикетов) или иные каналы, через которые можно задать вопрос и быстро получить ответ. Это тоже очень важно, поскольку самое ужасное, что может произойти во время DDoS-атаки, — это долгое, многочасовое, а то и многодневное (если, например, атака случилась вечером накануне выходных) ожидание ответа.

Все эти нюансы необходимо заранее обсудить с провайдером и проработать ещё до подписания договора с ним. Желательно, чтобы он выделил время и проконсультировал вас: предложил варианты для более эффективной защиты вашего периметра, рассказал, что следует учесть и какие методы защиты использовать, чтобы обезопасить те или иные компоненты ваших интернет-ресурсов, и пр.

Кроме того, важно и после подключения защиты не забывать систематически проверять её на работоспособность, используя, например, стресс-тестирование: оно поможет получить хотя бы общее представление о том, что может произойти с вашим сервисом при реальной атаке. В частности, важно понять, как работает поддержка сервисов защиты и что будет, если атака начнётся в пятницу вечером или в воскресное утро, когда большинство специалистов отдыхает, поможет ли вам в этом случае кто-нибудь со стороны провайдера, и пр.

Также стресс-тестирование поможет оценить устойчивость вашего ресурса в случае слабой DDoS-атаки. Не факт, что провайдер сможет отфильтровать все 100 % нелегитимного трафика. И если он отсечёт 99 %, то оставшийся 1 % от мощной атаки легко сможет сделать недоступным ваш ресурс, если тот не обладает достаточной производительностью и неспособен обработать нелегитимный трафик.

Чего нельзя позволять атакующему

Нередко на практике случается так, что в ходе выстраивания защиты от DDoS-атак остаётся некоторое количество незакрытых брешей. Анализируя их, атакующий может узнать о ваших ресурсах достаточно много для того, чтобы провести успешную атаку, пусть и не с первого раза. Иной раз ему удаётся понять особенности вашей инфраструктуры даже лучше вас.

Использование брешей и уязвимостей ресурсов в первую очередь свойственно DDoS-атакам на серверные компоненты мобильных и интернет-приложений. При подключении защиты со сменой IP-адреса на адрес провайдера Anti-DDoS прежний IP-адрес сайта может быть, во-первых, уже известен злоумышленникам, а во-вторых, при желании его легко можно найти через различные ресурсы. Один из них (из этических соображений мы не будем его указывать) позволяет отследить всю историю изменений адреса того или иного IP-домена. Через другой можно получить список всех IP-адресов, с которыми связан этот домен. И так далее. Реальный IP-адрес можно также увидеть анализируя заголовки пакетов протокола электронной почты SMTP, которые ваш сайт отправляет, например, при регистрации пользователей, рассылках писем и других подобных операциях.

Ещё одна частая ошибка — «лоскутность» или «кусочность» выстраивания обороны от DDoS, когда часть ресурсов охвачена ею, а другая часть — нет. Злоумышленники легко смогут найти все ваши ресурсы и выявить среди них незащищённые, уязвимые для DDoS-атак. Можете не сомневаться: при должной мотивации эти ресурсы рано или поздно будут найдены и атакованы.

Если у вас есть своя собственная автономная система, свой префикс, если вы используете BGP, то эту сеть тоже надо защищать. DDoS-атака может обрушиться на незащищённый IP-адрес, и даже межсетевой экран (firewall) и ACL-фильтр не спасут от атаки на него мощностью, например, в 400 Гбит/с. Это вполне реальная угроза! В конце прошлого и начале нынешнего года специалисты StormWall практически каждый день наблюдали вредоносные потоки данных мощностью в 1,2 Тбит/с. Такая атака способна создать чрезмерную нагрузку не только на ваш ресурс, но и на всю сеть вашего провайдера. Поэтому если у вас используется протокол BGP, то надо подключить и защиту через BGP.

Конечно, надо учесть возможность атак на DNS. Обязательно нужно оценить, насколько защищены и насколько надёжно работают сервисы DNS, к которым подключены ваши ресурсы. Когда во время массированных атак, имевших место минувшей весной, крупный российский регистратор доменных имён стал работать нестабильно, многие его клиенты сильно пожалели о том, что не предусмотрели подключения к другому сервису DNS, надёжно защищённому от DDoS-атак. Подобные сервисы предоставляют и провайдеры Anti-DDoS, и компании специализирующиеся на предоставлении сервисов DNS. Лучше всего подключиться как минимум к двум поставщикам DNS-сервисов. И весьма желательно, чтобы провайдеры хотя бы двух таких сервисов обеспечивали их DDoS-защиту.

Если сервер DNS расположен в вашей собственной сети, то эту сеть стоило бы защитить с помощью анонса через BGP. Для этого надо узнать у провайдера Anti-DDoS, умеет ли он фильтровать атаки на DNS, и если умеет, то сообщить ему адреса DNS-серверов, чтобы он настроил на них фильтрацию трафика соответствующего протокола.

Отметим, что StormWall использует множество методов фильтрации трафика DNS на уровне приложений, начиная с простых ограничений по числу запросов к домену, запросов с IP-адреса и т. д. и заканчивая преобразованием DNS-трафика в трафик TCP и другими методами, специфичными именно для DNS-серверов.

Одним словом, подключать DDoS-защиту частично — бесполезно. Нужно комплексно подходить к её выстраиванию, защищать всю цепочку, по которой идёт трафик, начиная от DNS и заканчивая серверными компонентами приложений, и убедиться, что каждый из ваших ресурсов в достаточной степени защищён.

Не оставляйте «грабли»!

Нередко защита от DDoS-атак вроде бы выстраивается, но из-за нелепых ошибок оказывается неэффективной. И поскольку эти ошибки встречаются у самых разных клиентов, мы уже стали называть их «граблями».

Вот пример, демонстрирующий необходимость быть очень осторожными с обращением к интернет-ресурсам напрямую по их IP-адресам, минуя DNS. Атака на одного из наших клиентов пришлась на один из IP-адресов, к которому приложения клиента обращались не через доменное имя, а напрямую. Заменить такой адрес крайне сложно, поскольку он жёстко «прошит» в приложениях. И защитить его во время DDoS-атаки практически невозможно, поскольку для этого пришлось бы уговаривать поставщика этого арендованного IP-адреса обезопасить всю его сеть /24 (а это 256 адресов) с использованием сервисов Anti-DDoS. Однако наверняка провайдер не станет этого делать в спешке.

Ещё один неприятный случай: приложения написаны так, что используют протокол HTTP, но придерживаются его «по-своему». Так, одно банковское приложение нашего клиента проводило авторизацию посредством HTTP, применяя для этого стандартные методы, а затем начинало безо всякого соблюдения протокола отправлять поток данных. Ни одна нормальная DDoS-защита, которая различает методы протокола HTTP, такие запросы не пропустит. Проблема эта в принципе решаема, но её решение требует времени. А когда DDoS-атака уже началась, дорога каждая минута.

У некоторых клиентов обнаружились устаревшие системы, которые не поддерживали протокол SNI (расширение компьютерного протокола TLS) и не передавали в заголовках IP-адрес HTTP-хоста, на который отправляется запрос. Эту проблему также можно решить, но, опять-таки, нужно уделить ей время.

Ещё одна «хрестоматийная» проблема: нередко на границе сети стоит устройство (например, маршрутизатор, межсетевой экран или балансировщик) с низкой производительностью. Очень часто среди таких устройств встречаются межсетевые экраны Cisco ASA и маршрутизаторы MikroTik — они вполне справляются с обычной нагрузкой, но не могут «переварить» даже слабый флуд, блокируя любую проходящую через них сетевую связность. В случае атаки процессор устройства получает стопроцентную загрузку, поэтому понять, что происходит с устройством, во время атаки практически нереально. Если же на этих устройствах работает фильтрация на основе технологии SPI (Stateful Packet Inspection, инспекция пакетов с хранением состояния), то положение усугубляется ещё больше.

Не так просто бывает разрешить ситуации, когда клиент использует защиту от DDoS-атак, которая предложена его транзитным провайдером, поскольку она может сработать в непредсказуемый момент. Один из клиентов применял upstream-маршрутизацию и DDoS-защиту, предоставляемые одним из сотовых операторов «большой четвёрки». В какой-то момент клиент решил отказаться от его сервисов защиты и перейти на наши. Один из наших upstream-каналов проходит также через сеть этого оператора: через неё трафик поступает на фильтры StormWall, а затем уже очищенный передаётся клиентам. Если начинается даже слабая атака, оператор её фиксирует (поскольку у провайдера остались прежние настройки) и начинает перехват (hijacking) трафика на IP-адрес /32, который «закольцовывается» и никуда не уходит. В итоге у клиента становится недоступным банковское приложение. Решение этой проблемы оказалось очень простым: нужно было лишь попросить оператора отключить DDoS-защиту для этого клиента. Поскольку с подобной проблемой уже столкнулись несколько организаций, можно предположить, что она будет достаточно распространённой и в дальнейшем, поскольку сейчас многие операторы и провайдеры на том или ином уровне предоставляют услуги DDoS-защиты.

Самые сложные проблемы — те, что заложены изначально

Как правило, клиенты обращаются за DDoS-защитой тогда, когда их приложения уже созданы, развёрнуты и находятся в промышленной эксплуатации. И в этот момент нередко обнаруживается, что защитить их не так-то просто, поскольку изначально ни заказчики приложений, ни их разработчики не задумывались о связанных с DDoS-атаками рисках и изначально спроектировали эти приложения неудачно.

Приведём пример — типичный, но далеко не исчерпывающий весь спектр ошибок, связанных с проектированием программных продуктов. На приложение дистанционного банковского обслуживания (ДБО) одного из банков, на которое обычно приходит в среднем 500 запросов в секунду, вдруг накатилась мощная волна запросов — порядка 10 тыс. в секунду, причём с каждого IP-адреса источника приходило по 200 запросов в секунду, и все они получали от приложения ответ 401 Unauthorized («отказ в доступе»). Подозревая начало атаки, мы стали блокировать запросы. Неожиданно банк обратился к нам с вопросом о том, почему вдруг заблокированы легитимные посетители. Пытаясь разобраться в ситуации, мы связались с разработчиками, и они нам объяснили: приложение начало выгрузку и эту волну запросов следует расценивать как нормальное поведение. Мы удивились: если такое поведение считается нормальным, то как может выглядеть атака на это приложение? И как нам отличить нормальную активность от инициированной злоумышленниками, если приложение никак себя не обозначает — ни какими-либо особыми методами, ни локациями, ни заголовками, и что делать, если трафик от этого приложения ДБО ничем не отличается от трафика, который генерировал бы бот?

Обычно DDoS-защита мобильных приложений работает так: сначала составляется схема того, как работает приложение (из каких локаций идут посетители, какие заголовки и методы использует, с какой интенсивностью и т. д.), затем на основе этой схемы выстраивается модель нормального взаимодействия, с которой сравниваются все запросы, идущие к приложению. Если никаких признаков, которые позволяли бы отличить легитимные запросы от сгенерированных ботами, не предусмотрено, то распознавание нелегитимных запросов от ботов становится весьма сложным.

Нам также довелось встречать великое множество других ошибок, сделанных ещё на стадии проектирования приложений и сервисов, из-за которых программные продукты получались плохо защищаемыми и на снижение их уязвимости к DDoS-атакам требовалось много денег, времени и усилий. Решение проблемы понятно: заказчики и разработчики приложений должны уже на самых ранних стадиях создания продуктов привлекать к своим проектам специалистов по информационной безопасности (ИБ), в том числе по DDoS-защите. Индустрия ИБ твердит об этом уже не один десяток лет…

Ещё раз о защищаемости

Напоследок ещё раз опишем основные задачи по обеспечению защищаемости, но более развёрнуто, в расчёте на специалистов.

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

Во-вторых, предоставить как можно больше информации провайдеру DDoS-защиты. Он должен ясно понимать архитектуру ваших ресурсов и правила, по которым они взаимодействуют между собой и со внешними ресурсами. Также он должен знать, какие сервисы (сайт, DNS, VPN и пр.) на каких IP-адресах находятся, и иметь возможность распознавать, насколько штатно работают ваши ресурсы в тот или иной момент. Если у вас есть UDP-приложения, то нужно рассказать, где и как они развёрнуты, что и как делают.

В-третьих, надо обеспечить понятные провайдеру Anti-DDoS возможности для фильтрации атаки — это особенно важно для защиты приложений. Крайне желательно, чтобы эти возможности были в них встроены: они позволят провайдеру защиты практически безошибочно отличать поведение легитимных посетителей от поведения ботов, опираясь на конкретные формальные признаки. От решения этой задачи во многом будет зависеть принципиально возможная эффективность защиты ваших приложений.

Если, например, среди ваших ресурсов есть API, мобильные приложения и вы не позаботились заранее о различиях между их взаимодействием с легитимными клиентами и поведением ботов, то единственным, что будет отличать запросы злоумышленников от прочих, окажется подозрительно высокая активность (и, возможно, наличие IP-адресов ботов в базах нежелательных адресов). И если активность бота не превысит активности обычного посетителя, то ни один провайдер DDoS-защиты не сможет его выявить и блокировать.

Нередко сложности возникают и в защите UDP-приложений, поскольку фильтровать UDP-трафик сложнее, чем TCP-трафик. Чтобы точнее определять, является ли очередной пользователь такого приложения легитимным, провайдеру Anti-DDoS необходимо ясно понимать применяемый протокол взаимодействия с клиентами. Возможно, для оценки легитимности у вас предусмотрена процедура предварительной авторизации. Или, другой вариант, имеются чёткие правила взаимодействия с легитимными клиентами, по которым фильтр трафика сможет определить, что данный клиент легитимен. Иногда оценить легитимность удаётся с помощью какого-нибудь TCP­-сервиса.

Как мы уже сказали, идеальный вариант — заложить возможности фильтрации атак уже на стадии создания приложения. Для этого нужно ещё в ходе обсуждения общих контуров будущего программного продукта подробно рассказать вашим разработчикам, как вы планируете отличать легитимных клиентов от нелегитимных. Эти знания нужно задокументировать, сохранить и затем передать DDoS-защитнику.

Если же ваше приложение весьма давно находится в продуктивной эксплуатации, можно пойти другим путём: выделить время и разобраться вместе с провайдером Anti-DDoS в том, как оно работает. Подробный анализ его поведения поможет провайдеру подготовить профиль защиты, максимально учитывающий особенности этого приложения.

В-четвёртых, важно обеспечить достаточно высокую устойчивость вашего ресурса к DDoS-воздействиям. Для этого нужно заранее определить, как зависят друг от друга компоненты вашего ресурса, какие у него имеются точки отказа.

Простейший пример: сайт работает в связке с клиентским мобильным приложением, которое запрашивает с него курсы валют или какие-то другие данные. Что будет, если сайт окажется недоступен? Не возникнет ли при этом проблем с мобильным приложением? По-хорошему, оно должно перестать выводить на экран текущие курсы валют или среагировать как-то иначе, но в целом продолжать работать.

Кроме того, надо обеспечить резервирование мощностей и добиться устойчивости ресурса к слабым атакам. Это особенно важно при использовании асимметричной защиты. Как мы уже говорили, при фильтрации некоторых типов DDoS-атак часть трафика «пролетает» насквозь. И если идёт мощная атака, например, в 40 Гбит/с, то отсекание 99 % нелегитимного трафика приведёт к тому, что на защищаемый ресурс обрушится DDoS-воздействие мощностью 400 Мбит/c. Сможет ли он его выдержать — большой вопрос. Чтобы это было возможным, ваш маршрутизатор, межсетевой экран и сервер должны обладать достаточно высокой производительностью.

Кстати, более качественно настроить правила защиты помогает разнесение разных функций и сервисов ресурса по разным IP-адресам: сайты и HTTP-приложения — на одних, UDP-приложения — на других, сервисы обеспечивающие Pull-схему — на третьих, и так далее. Неиспользуемые сетевые сервисы лучше вообще заблокировать, чтобы пресечь возможность DDoS-атак на них.

Золотые правила DDoS-защиты

Напоследок приведём три простых правила, которые помогут вам выстроить надёжную линию обороны от DDoS-атак.

  1. Обращайтесь за консультациями к компетентным провайдерам Anti-DDoS, которые помогут принять правильные решения по организации защиты вашей инфраструктуры. Это позволит заметно снизить ваши бизнес-риски.
  2. Постарайтесь начать обсуждение мер по защите от DDoS-рисков как можно раньше — лучше всего на стадии проектирования ваших будущих систем и приложений. Это поможет обеспечить устойчивость ваших ресурсов к DDoS-атакам.
  3. Гармонично встраивайте защиту от DDoS-рисков в общую стратегию информационной безопасности вашей организации. Очень многие принципы, которые выработала отрасль ИБ, замечательно работают и в отношении DDoS-защиты. Но, конечно, есть у неё и своя специфика, связанная с особенностями DDoS-рисков.

Выводы

Как мы много раз имели возможность убедиться, защищаемость представляет собой интегральный показатель, от которого кардинальным образом зависит устойчивость интернет-систем и ресурсов к DDoS-рискам. В идеале защищаемость должна закладываться ещё на стадии проектирования интернет-систем: правильные шаги, сделанные на этом этапе, позволят заложить в них высокую устойчивость к DDoS и при подключении защиты обеспечат выгодное соотношение эффективности и стоимости отражения этого вида атак.

И, конечно же, нужно понимать, что обеспечение защищаемости — задача многоплановая, затрагивающая все этапы жизненного цикла интернет-систем. Для обеспечения защищаемости необходимо продумывать множество аспектов, поскольку очень многие просчёты и ошибки, совершаемые при её выстраивании, так или иначе снижают эффективность защиты от DDoS-атак и повышают стоимость последующих мероприятий, которые требуются для достижения высокого уровня устойчивости к DDoS. Чтобы справиться со всем комплексом непростых вопросов, касающихся обеспечения защищаемости интернет-систем и ресурсов, рекомендуем не полагаться на собственный опыт, а активно привлекать к сотрудничеству профессиональные компании, специализирующиеся на защите от DDoS-рисков.

DoS-атака

DoS (от англ. Denial of Service — отказ в обслуживании) — хакерская атака на вычислительную систему с целью довести её до отказа, то есть создание таких условий, при которых легальные пользователи системы не могут получить доступ к предоставляемым системным ресурсам (серверам), либо этот доступ затруднён. Отказ «вражеской» системы может быть и шагом к овладению системой (если в нештатной ситуации ПО выдаёт какую-либо критическую информацию — например, версию, часть программного кода и т. д.). Но чаще это мера экономического давления: простой службы, приносящей доход, счета от провайдера и меры по уходу от атаки ощутимо бьют «цель» по карману. В настоящее время DoS и DDoS-атаки наиболее популярны, так как позволяют довести до отказа практически любую систему, не оставляя юридически значимых улик.

DDoS-атака
DDoS-атака.

Распределённая DoS-атака

Если атака выполняется одновременно с большого числа компьютеров, говорят о DDoS-атаке (от англ. Distributed Denial of Service, распределённая атака типа «отказ в обслуживании»). Такая атака проводится в том случае, если требуется вызвать отказ в обслуживании хорошо защищённой крупной компании или правительственной организации.

Первым делом злоумышленник сканирует крупную сеть с помощью специально подготовленных сценариев, которые выявляют потенциально слабые узлы. Выбранные узлы подвергаются нападению, и злоумышленник получает на них права администратора. На захваченные узлы устанавливаются троянские программы, которые работают в фоновом режиме. Теперь эти компьютеры называются компьютерами-зомби, их пользователи даже не подозревают, что являются потенциальными участниками DDoS-атаки. Далее злоумышленник отправляет определенные команды захваченным компьютерам и те, в свою очередь осуществляют мощную DoS-атаку на целевой компьютер.

Существуют также программы для добровольного участия в DDoS-атаках.

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

Защита

Для защиты от сетевых атак применяется ряд фильтров, подключенных к интернет-каналу с большой пропускной способностью. Фильтры действуют таким образом, что последовательно анализируют проходящий трафик, выявляя нестандартную сетевую активность и ошибки. В число анализируемых шаблонов нестандартного трафика входят все известные на сегодняшний день методы атак, в том числе реализуемые и при помощи распределённых бот-сетей4.

Причины использования DDoS-атак

Жертвы DDoS-атак.

Специалисты в области защиты информации выделяют несколько причин использования DDoS-атак.

Личная неприязнь

Эта причина нередко служит поводом для атак на крупные коммерческие и правительственные организации и компании. Так в 1999 году были атакованы Web-узлы ФБР, которые впоследствии были недоступны в течение нескольких недель. Мотивом послужил недавний рейд ФБР против хакеров.

Развлечение

В настоящее время всё больше людей интересуются DoS-атаками, и все хотят попробовать себя в этом деле. Поэтому многие начинающие злоумышленники осуществляют DoS-атаки ради развлечения. После успешно проведённого нападения они смотрят масштабы своих разрушений.

Политический протест

Наиболее известными DDoS-атаками с целью политического протеста были акции в поддержку Памятника Воину-освободителю в Эстонии (2007), Южной Осетии (2008), Wikileaks (2011), Megaupload (2012) и EX.UA (2012).

Недобросовестная конкуренция

DDoS-атаки могут осуществляться по заказу недобросовестного конкурента.

Вымогательство или шантаж

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

Классификация DoS-атак

Работа сервера в нормальном режиме.

Хакерам гораздо легче осуществить DoS-атаку на систему, чем получить полный доступ к ней. Существуют различные причины, из-за которых может возникнуть DoS-условие, то есть такая ситуация, при которой пользователи не могут получить доступ к ресурсам, которые предоставляет сервер, либо доступ к ним существенно затруднен:

Насыщение полосы пропускания

В настоящее время практически каждый компьютер подключён к сети Internet, либо к локальной сети. Это служит отличным поводом для осуществления DoS-атаки за счет переполнения полосы пропускания. Обычно злоумышленники пользуются флудом (англ. flood — «наводнение», «переполнение») — атака, связанная с большим количеством обычно бессмысленных или сформированных в неправильном формате запросов к компьютерной системе или сетевому оборудованию, имеющая своей целью или приведшая к отказу в работе системы из-за исчерпания системных ресурсов — процессора, памяти или каналов связи. Есть несколько разновидностей флуда.

HTTP-флуд и ping-флуд

Это самый примитивный вид DoS-атаки. Насыщение полосы пропускания можно осуществить с помощью обычных ping-запросов только в том случае, если канал атакующего (например 1.544 Мбит/с) намного шире канала компьютера-жертвы, скорость в котором 128 Кбит/с. Но такая атака бесполезна против сервера, так как тот, в свою очередь, обладает довольно широкой полосой пропускания. Для атаки на сервер обычно применяется HTTP-флуд. Атакующий шлёт маленький по объёму HTTP-пакет, но такой, чтобы сервер ответил на него пакетом, размер которого в сотни раз больше. Даже если канал сервера в десять раз шире канала атакующего, то все равно есть большой шанс насытить полосу пропускания жертвы. А для того, чтобы ответные HTTP-пакеты не вызвали отказ в обслуживании у злоумышленника, он каждый раз подменяет свой ip-адрес на ip-адреса узлов в сети.

Smurf-атака (ICMP-флуд)

Атака Smurf или ICMP-флуд — одна из самых опасных видов DoS-атак, так как у компьютера-жертвы после такой атаки произойдет отказ в обслуживании практически со 100 % гарантией. Злоумышленник использует широковещательную рассылку для проверки работающих узлов в системе, отправляя ping-запрос. Очевидно, атакующий в одиночку не сможет вывести из строя компьютер-жертву, поэтому требуется ещё один участник — это усиливающая сеть. В ней по широковещательному адресу злоумышленник отправляет поддельный ICMP пакет. Затем адрес атакующего меняется на адрес жертвы. Все узлы пришлют ей ответ на ping-запрос. Поэтому ICMP-пакет, отправленный злоумышленником через усиливающую сеть, содержащую 200 узлов, будет усилен в 200 раз. Поэтому для такой атаки обычно выбирается большая сеть, чтобы у компьютера-жертвы не было никаких шансов.

Атака Fraggle (UDP-флуд)

Атака Fraggle (осколочная граната)(от англ. _Fraggle attack_) является полным аналогом Smurf-атаки, где вместо ICMP пакетов используются пакеты UDP, поэтому её ещё называют UDP-флуд. Принцип действия этой атаки простой: на седьмой порт жертвы отправляются echo-команды по широковещательному запросу. Затем подменяется ip-адрес злоумышленника на ip-адрес жертвы, которая вскоре получает множество ответных сообщений. Их количество зависит от числа узлов в сети. Эта атака приводит к насыщению полосы пропускания и полному отказу в обслуживании жертвы. Если все же служба echo отключена, то будут сгенерированы ICMP-сообщения, что также приведёт к насыщению полосы.

Атака с помощью переполнения пакетами SYN (SYN-флуд)

Установка TCP — соединения.

До появления атаки Smurf была широко распространена атака с помощью переполнения пакетами SYN, также известная под названием SYN-флуд. Для описания её действия можно остановиться на рассмотрении двух систем А и В, которые хотят установить между собой TCP соединение, после которого они смогут обмениваться между собой данными. На установку соединения выделяется некоторое количество ресурсов, этим и пользуются DoS-атаки. Отправив несколько ложных запросов, можно израсходовать все ресурсы системы, отведённые на установление соединения. Рассмотрим подробнее, как это происходит. Хакер с системы А отправляет пакет SYN системе В, но предварительно поменяв свой IP-адрес на несуществующий. Затем, ничего не подозревая, компьютер В отправляет ответ SYN/ACK на несуществующий IP-адрес и переходит в состояние SYN-RECEIVED. Так как сообщение SYN/ACK не дойдет до системы А, то компьютер В никогда не получит пакет с флагом ACK. Данное потенциальное соединение будет помещено в очередь. Из очереди оно выйдет только по истечении 75 секунд. Этим пользуются злоумышленники и отправляют сразу несколько пакетов SYN на компьютер жертвы с интервалом в 10 секунд, чтобы полностью исчерпать ресурсы системы. Определить источник нападения очень непросто, так как злоумышленник постоянно меняет исходный IP-адрес.

Недостаток ресурсов

Злоумышленники прибегают к данному виду DoS-атаки для захвата системных ресурсов, таких как оперативная и физическая память, процессорное время и другие. Обычно такие атаки проводятся с учётом того, что хакер уже обладает некоторым количеством ресурсов системы. Целью атаки является захват дополнительных ресурсов. Для этого не обязательно насыщать полосу пропускания, а достаточно просто перегрузить процессор жертвы, то есть занять всё допустимое процессорное время.

Отправка «тяжёлых» пакетов

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

Переполнение сервера лог-файлами

Лог-файлы сервера — это файлы, в которых записываются действия пользователей сети или программы. Неквалифицированный администратор может неправильно настроить систему на своём сервере, не установив определённый лимит. Хакер воспользуется этой ошибкой и будет отправлять большие по объёму пакеты, которые вскоре займут всё свободное место на жёстком диске сервера. Но эта атака сработает только в случае с неопытным администратором, квалифицированные хранят лог-файлы на отдельном системном диске.

Плохая система квотирования

На некоторых серверах есть так называемая CGI-программа, которая связывает внешнюю программу с Web-сервером. Если хакер получит доступ к CGI, то он сможет написать скрипт (англ. scripting language), который задействует немало ресурсов сервера, таких как оперативная память и процессорное время. К примеру, скрипт CGI может содержать в себе циклическое создание больших массивов или вычисления сложных математических формул. При этом центральный процессор может обращаться к такому скрипту несколько тысяч раз. Отсюда вывод: если система квотирования настроена неправильно, то такой скрипт за малое время отнимет все системные ресурсы у сервера. Конечно, выход из этой ситуации очевиден — поставить определённый лимит на доступ к памяти, но и в этом случае процесс скрипта, достигнув этого лимита, будет находиться в ожидании до тех пор, пока не выгрузит из памяти все старые данные. Поэтому пользователи будут испытывать недостаток в системных ресурсах.

Недостаточная проверка данных пользователя

Недостаточная проверка данных пользователя также приводит к бесконечному либо длительному циклу или повышенному длительному потреблению процессорных ресурсов (вплоть до исчерпания процессорных ресурсов) либо выделению большого объёма оперативной памяти (вплоть до исчерпания доступной памяти).

Атака второго рода

Это атака, которая стремится вызвать ложное срабатывание системы защиты и таким образом привести к недоступности ресурса.

Ошибки программирования

Профессиональные реализаторы DoS-атак не используют такой примитивный способ атаки, как насыщение полосы пропускания. Полностью разобравшись в структуре системы жертвы, они пишут программы (эксплойты), которые помогают атаковать сложные системы коммерческих предприятий или организаций. Чаще всего это ошибки в программном коде, приводящие к обращению к неиспользуемому фрагменту адресного пространства, выполнению недопустимой инструкции или другой необрабатываемой исключительной ситуации, когда происходит аварийное завершение программы-сервера — серверной программы. Классическим примером является обращение по нулевому (англ. null) адресу.

Недостатки в программном коде

Обработка исключительных ситуаций всегда была головной болью для создателей операционных систем. Злоумышленники ищут ошибки в программном коде какой-либо программы либо операционной системы, заставляют её обрабатывать такие исключительные ситуации, которые она обрабатывать не умеет. За счёт этого возникают ошибки. Простым примером может служить частая передача пакетов, в которой не учитываются спецификации и стандарты RFC-документов. Злоумышленники наблюдают за тем, справляется ли сетевой стек с обработкой исключительных ситуаций. Если нет, то передача таких пакетов приведёт к панике ядра (kernel panic) или даже к краху всей системы в целом.

К этому классу относится ошибка Ping of death, распространённая в 1990-е годы. Длина пакета IPv4 по стандарту RFC 791 IPv4 не может превышать 65 535 байт; компьютеру-жертве посылается ICMP-пакет большей длины, предварительно разбитый на части; у жертвы от такого пакета переполняется буфер. Другая ошибка тех времён — WinNuke (Windows 95 неправильно обрабатывала редкий бит TCP-пакета URG).

Переполнение буфера

Переполнение буфера возникает в том случае, если программа из-за ошибки программиста записывает данные за пределами буфера. Допустим, программист написал приложение для обмена данными по сети, которое работает по какому-либо протоколу. В этом протоколе строго указано, что определённое поле пакета максимум может содержать 65536 байт данных. Но после тестирования приложения оказалось, что в её клиентской части в это поле нет необходимости помещать данные, размер которых больше 255 байт. Поэтому и серверная часть примет не более 255 байт. Далее злоумышленник изменяет код приложения так, что теперь клиентская часть отправляет все допустимые по протоколу 65536 байт, но сервер к их приёму не готов. Из-за этого возникает переполнение буфера, и пользователи не могут получить доступ к приложению.

Маршрутизация и атаки DNS

Все атаки на DNS-серверы можно разбить на два типа:

1) DoS-атаки на уязвимости в программном обеспечении на DNS-серверах

Их ещё называют атаками на кэш. В процессе этой атаки злоумышленник подменяет IP-адрес DNS-сервера домена жертвы. После чего атакуемый при запросе HTML-страницы, попадает либо в «чёрную дыру» (если IP-адрес был заменён на несуществующий), либо прямиком на сервер злоумышленника. Второй случай более плачевен, так как злоумышленник легко может получить доступ к личным данным ничего не подозревающей жертвы. Рассмотрим на примере, как это происходит. Допустим, что клиент хочет попасть на Web-узел компании microsoft.com. Но использовав уязвимость в DNS-сервере компании, злоумышленник подменил IP-адрес узла microsoft.com на свой. Теперь жертва автоматически перенаправляется на узел к атакующему.

2) DDoS атаки на DNS-серверы

Иллюстрация примера атаки через неправильно сконфигурированный DNS-сервер.

Далее речь пойдёт о DDoS-атаках, так как участие DNS-серверов всегда подразумевает наличие большого количества компьютеров. Атаки на DNS-серверы — самые банальные атаки, приводящие к отказу в обслуживании DNS-сервера как путём насыщения полосы пропускания, так и путём захвата системных ресурсов. Но такая атака требует огромного количества компьютеров-зомби. После её успешного проведения пользователи не могут попасть на нужную им страницу в Интернете, потому что DNS-сервер не может преобразовать доменное имя в IP-адрес сайта. Но в настоящее время атаки на DNS-серверы с использованием большого числа компьютеров-зомби (такую систему называют «ботнет») менее актуальны, так как интернет-провайдеры легко замечают большое количество исходящего трафика и блокируют его. Злоумышленники теперь обходятся небольшими ботнетами, либо не используют их вовсе. Основная идея состоит в том, что хакеры используют DNS-серверы, работающие на основе технологии DNSSEC. Мощность атаки возрастает вследствие увеличения отражений DNS-запросов. В идеале DNS-серверы определённого провайдера должны обрабатывать только те запросы, которые пришли к ним от пользователей этого провайдера, но это далеко от реальности. По всему миру очень много некорректно настроенных серверов, которые могут принять запрос от любого пользователя в Интернете. Работники компании CloudFlare утверждают, что в настоящее время в Интернете более 68 тысяч неправильно настроенных DNS-серверов, из них более 800 — в России. Именно такие DNS-серверы используются для DDoS-атак. Основная идея состоит в том, что практически все DNS-запросы шлются по протоколу UDP, в котором сравнительно просто подменить обратный адрес на адрес жертвы. Поэтому через неправильно сконфигурированные DNS-серверы злоумышленник шлёт такой запрос, чтобы ответ на него был как можно больше по объёму (например, это может быть список всех записей в таблице DNS), в котором обратный IP-адрес подменяется на IP-адрес жертвы. Как правило, серверы провайдеров имеют довольно большую пропускную способность, поэтому сформировать атаку в несколько десятков Гбит/c не составляет особого труда.

Расположение неправильно сконфигурированных DNS-серверов.
Красный — около 30 тысяч штук; бледно-бордовый — около 5 тысяч штук; серый — от 10 до 2000 штук; белый — практически нет неправильно настроенных DNS-серверов

Список автономных систем с самым большим числом неправильно сконфигурированных DNS-серверов на 10.11.2013.

Число DNS-серверов Имя автономной системы
2108 BELPAK-AS Republican Unitary Telecommunication Enterprise Be
1668 HINET Data Communication Business Group
1596 OCN NTT Communications Corporation
1455 TELEFONICA CHILE S.A.
1402 KIXS-AS-KR Korea Telecom
965 Telefonica de Argentina
894 ERX-TANET-ASN1 Tiawan Academic Network (TANet) Information C
827 KDDI KDDI CORPORATION
770 Compa Dominicana de Telefonos, C. por A. — CODETEL
723 CHINANET-BACKBONE No.31,Jin-rong Street
647 LGDACOM LG DACOM Corporation
606 UUNET — MCI Communications Services, Inc. d/b/a Verizon Busi
604 TELKOMNET-AS2-AP PT Telekomunikasi Indonesia
601 COLOMBIA TELECOMUNICACIONES S.A. ESP

Выявление DoS/DDoS-атак

Существует мнение, что специальные средства для выявления DoS-атак не требуются, поскольку факт DoS-атаки невозможно не заметить. Во многих случаях это действительно так. Однако достаточно часто наблюдались удачные DoS-атаки, которые были замечены жертвами лишь спустя 2-3 суток. Бывало, что негативные последствия атаки (флуд-атаки) выливались в излишние расходы на оплату избыточного Internet-трафика, что выяснялось лишь при получении счёта от Internet-провайдера. Кроме того, многие методы обнаружения атак неэффективны вблизи объекта атаки, но эффективны на сетевых магистральных каналах. В таком случае целесообразно ставить системы обнаружения именно там, а не ждать, пока пользователь, подвергшийся атаке, сам её заметит и обратится за помощью. К тому же для эффективного противодействия DoS-атакам необходимо знать тип, характер и другие характеристики DoS-атак, а оперативно получить эти сведения как раз и позволяют службы обеспечения безопасности. Они помогают произвести некоторые настройки системы. Но определить, была ли данная атака произведена злоумышленником, либо отказ в обслуживании был следствием нештатного события, они не могут. В соответствии с правилами политики обеспечения безопасности, при обнаружении DoS или DDoS-атаки потребуется её регистрация для дальнейшего аудита. После того, как атака была зафиксирована, могут потребоваться службы обеспечения безопасности для некоторых корректировок в системе и для её возвращения к прежнему уровню работы. Также для обнаружения DDoS-атаки могут использоваться службы, не связанные с безопасностью, например, перенаправление трафика по другим каналам связи, включение резервных серверов для копирования информации. Таким образом, средства для обнаружения и предотвращения DDoS-атак могут сильно различаться в зависимости от вида защищаемой системы.

Методы обнаружения DoS-атак можно разделить на несколько больших групп:

  • сигнатурные — основанные на качественном анализе трафика.
  • статистические — основанные на количественном анализе трафика.
  • гибридные (комбинированные) — сочетающие в себе достоинства обоих вышеназванных методов.

Получившие известность DDoS атаки

Визуализация DDoS-атаки

Пик DDoS-атаки на CloudFlare

Воздействие DDoS-атаки на LINX в марте 2013 года.

Архитектура сетей разного уровня в Интернет

Так в 2012 году было проведено несколько крупномасштабных DDoS-атак на DNS-серверы. Первая из них планировалась на 31 марта, но так и не состоялась. Целью злоумышленников из группы Anonymous было довести до отказа всю глобальную сеть Интернет. Они хотели это сделать с помощью DDoS-атаки на 13 корневых DNS-серверов33. Злоумышленники выпустили специальную утилиту Ramp, которая предназначалась для объединения более мелких DNS-серверов и интернет-провайдеров. С помощью них и планировалось вывести из строя глобальную сеть.

Точно такая же атака была проведена в ноябре 2002 года. Её до сих пор считают самой глобальной DoS-атакой на DNS-серверы, так как в результате злоумышленники смогли вывести из строя 7 корневых серверов. Следующая атака прошла в августе на компанию AT&T, являющуюся крупнейшей американской телекоммуникационной компанией. В результате после атаки, которая продлилась 8 часов, вышли из строя DNS-серверы компании. Пользователи некоторое время не могли зайти не только на сайт компании AT&T, но и на коммерческие сайты в её сети.

Ещё одна атака прошла 10 ноября 2012 года на компанию Go Daddy, которая является крупнейшим в мире хостинг-провайдером. Последствия атаки были разрушительны: пострадал не только сам домен www.godaddy.com, но и более 33 миллионов доменов в сети Интернет, которые были зарегистрированы компанией.

Намного раньше, 22 августа 2003 года злоумышленники при помощи вируса Mydoom вывели из строя сайт компании SCO, занимающейся разработкой системного программного обеспечения. Целых 3 дня пользователи не могли попасть на сайт компании.

Атака на Spamhaus

15 сентября 2012 года, крупная DDoS-атака мощностью в 65 Гбит/с обрушилась на компанию CloudFlare, которая является сетью доставки контента, предназначенная для виртуального хостинга. Серверы данной компании расположены по всему миру. Это помогает пользователю загружать страницу в Интернете с ближайшего (с географической точки зрения) сервера CloudFlare намного быстрее. Ранее данная компания выдерживала DDoS-атаки мощностью в несколько десятков Гбит/с, но с атакой в 65 Гбит/с справиться не смогла. Этот пик пришёлся на субботу 15 сентября в 13:00. Сотрудники, работавшие на тот момент в компании CloudFlare, были бывшими хакерами, которым стало интересно разобраться, каким же именно методом была проведена данная DDoS-атака, и как злоумышленники смогли провести её с такой мощностью. Оказалось, что для такой атаки потребовалось бы 65 тысяч ботов, создающих трафик в 1 Мбит/c каждый. Но это невозможно, так как интернет-провайдеры с лёгкостью обнаружат и заблокируют такой большой объём трафика. При этом аренда большого ботнета очень дорого обходится. Поэтому выяснилось, что для такой атаки использовался метод приумножения DNS-запросов через открытые DNS-серверы.

Приблизительно через полгода, 18 марта, началась, по версии газеты The New York Times, самая большая DDoS-атака в истории, жертвой которой стала компания Spamhaus, занимающаяся занесением в чёрный список источников спама. Причиной атаки послужил тот факт, что Spamhaus занесла в чёрный список за рассылку спама голландского хост-провайдера Cyberbunker. Второй свое недовольство выразил с помощью DDoS-атаки с пиковой мощностью в 300 Гбит/с через открытые DNS-серверы. 19 марта мощность достигла 90 Гбит/c, меняя свое значение от 30 Гбит/с. После этого было затишье, но оно продлилось недолго и атака возобновилась с новой силой и 22 марта её мощность достигла 120 Гбит/c. Для отражения атаки компания CloudFlare распределила трафик между своими дата-центрами, после чего Cyberbunker поняла, что не сможет «положить» CloudFlare и начала новую волну атаки на её вышестоящие пиры. Некоторая часть пакетов отфильтровалась на уровне Tier2, остальной трафик попал на уровень Tier1, где мощность и достигла своего максимума в 300 Гбит/c. В этот момент миллионы пользователей сети Интернет почувствовали на себе всю мощь данной атаки, у них тормозили некоторые сайты. В итоге провайдеры выдержали эту атаку, но в Европе было зарегистрировано некоторое увеличение пинга при доступе к различным сайтам. Например, в лондонском центре обмена трафика LINX 23 марта из-за атаки скорость обмена данными упала более чем в два раза. Средняя скорость в 1.2 Тбит/c упала до 0.40 Тбит/c.

Защита от основных видов DoS-атак

В основном защита от DoS-атак строится на правильной настройке компьютера. Следующие меры защиты способны защитить лишь от слабых DoS-атак, либо они будут использоваться в качестве снижения её эффективности.

Защита от HTTP-флуда

Для защиты от HTTP-флуда необходимо увеличить одновременное количество максимальных подключений к базе данных сервера, установить перед Web-сервером Apache производительный Nginx для кэширования запросов.

# Увеличение максимального количества используемых файлов
  worker_rlimit_nofile 80000;
  events {
      # Увеличение максимального количества соединений
      worker_connections 65536;
      # Использование эффективного метода epoll для обработки соединений
      use epoll;
  }
  http {
      gzip off;
      # Отключение таймаута на закрытие keep-alive соединений
      keepalive_timeout 0;
      # Скрытие версии nginx в заголовке ответа
      server_tokens off;
      # Сбрасывание соединения по таймауту
      reset_timedout_connection on;
  }
  # Стандартные настройки для работы в качестве прокси
  server {
      listen 111.111.111.111 default deferred;
      server_name host.com www.host.com;
      log_format IP $remote_addr;
      location / {
          proxy_pass http://127.0.0.1/;
      }
     location ~* .(jpeg|jpg|gif|png|css|js|pdf|txt|tar)$ {
         root /home/www/host.com/httpdocs;
     }
  }

Защита от ICMP-флуда

Для того, чтобы защититься от ICMP-флуда нужно отключить ответы на запросы ICMP ECHO:

# sysctl net.ipv4.icmp_echo_ignore_all=1

или с помощью брандмауэра:

# iptables -A INPUT -p icmp -j DROP—icmp-type 8 

Защита от UDP-флуда

Так как UDP-пакеты отсылаются на различные UDP-сервисы, то достаточно просто отключить их от внешнего мира и установить ограничение на количество соединений к DNS-серверу:

# iptables -I INPUT -p udp—dport 53 -j DROP -m iplimit—iplimit-above 1

Защита от SYN-флуда

Защита строится на отключении очереди «полуоткрытых» TCP-соединений:

# sysctl -w net.ipv4.tcp_max_syn_backlog=1024

Включение механизма TCP syncookies:

# sysctl -w net.ipv4.tcp_syncookies=1 

Ограничение максимального числа «полуоткрытых» соединений с одного IP к конкретному порту:

# iptables -I INPUT -p tcp—syn—dport 80 -m iplimit—iplimit-above 10 -j DROP

На подходе к серверу должна быть настроена система анализа трафика, которая поможет вовремя узнать о приближающейся DoS-атаке и принять соответствующие меры по её избежанию.

 # Защита от спуфинга
  net.ipv4.conf.default.rp_filter = 1
  # Проверять TCP-соединение каждую минуту. Если на другой стороне - легальная машина, она сразу ответит. Значение по умолчанию - 2 часа.
  net.ipv4.tcp_keepalive_time = 60
  # Повторить через 10 секунд
  net.ipv4.tcp_keepalive_intvl = 10
  # Количество проверок перед закрытием соединения
  net.ipv4.tcp_keepalive_probes = 5

Универсальные советы

Также есть несколько универсальных советов, которые помогут подготовить систему к DoS-атаке.

  • Все серверы, которые имеют доступ во внешнюю сеть, должны быть подготовлены к удаленной аварийной перезагрузке. Также желательно наличие второго сетевого интерфейса, через который по ssh-соединению можно быстро получить доступ к серверу.
  • Программное обеспечение, которое установлено на сервере, должно быть в актуальном состоянии, а именно: должно быть установлено последнее ПО, касающееся обеспечения безопасности системы.
  • Все сетевые сервисы должны быть защищены брандмауэром.

Действия в самом начале DoS-атаки

Перед началом самой атаки атакующие компьютеры только набирают обороты, со временем увеличивая поток пакетов на компьютер-жертву. В это время необходимо быстро принять конкретные действия по предотвращению атаки. Например, для определения SYN-флуда необходимо установить число «полуоткрытых» соединений:

grep ":80 " | grep SYN_RCVD

В идеале их не должно быть совсем (максимум 1-3). Если это не так, то можно говорить о наличии DoS-атаки. Сложнее обстоит дело с HTTP-флудом. В самом начале необходимо подсчитать количество подключений на 80 порт и количество процессов Apache. Если они значительно превышают среднестатистические, то следует задуматься.

grep httpd | wc -l |  grep ":80 " | wc -l

Список IP-адресов, с которых идут запросы на подключение можно посмотреть следующей командой:

grep ":80 " | sort | uniq -c | sort -nr | less

Далее следует провести анализ пакетов с помощью команды tcpdump:

# tcpdump -n -i eth0 -s 0 -w output.txt dst port 80 and host IP-сервера

Если наблюдается большой поток однообразных пакетов с разных IP-адресов, которые направлены на один порт, можно смело предполагать, что имеет место DoS-атака. Далее необходимо сбросить все эти соединения (лучше всего это сделать на маршрутизаторе):

# iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp—destination-port http -j DROP

Все эти методы обнаружения и предотвращения DoS-атаки дадут лишь некоторое время для обращения к провайдеру. Необходимо предоставить все лог-файлы web-сервера, ядра самого компьютера, брандмауэра и списки всех обнаруженных IP-адресов.

Защита от DDoS-атак

Цитата

«Только атаки дилетантов нацелены на машины. Атаки профессионалов нацелены на людей».
Б. Шнайер

Полностью защититься от DDoS-атак на сегодняшний день невозможно, так как совершенно надёжных систем не существует. Здесь также большую роль играет человеческий фактор, потому что любая ошибка системного администратора, неправильно настроившего маршрутизатор, может привести к весьма плачевным последствиям. Однако, несмотря на всё это, на настоящий момент существует масса как аппаратно-программных средств защиты, так и организационных методов противостояния.

Меры противодействия DDoS-атакам можно разделить на пассивные и активные, а также на превентивные и реакционные. Ниже приведён краткий перечень основных методов.

  • Предотвращение. Профилактика причин, побуждающих тех или иных лиц организовывать и предпринять DDoS-атаки. (Очень часто кибератаки вообще являются следствиями личных обид, политических, религиозных и иных разногласий, провоцирующего поведения жертвы и т. п.). Нужно вовремя устранить причины DDoS-атак, после этого сделать выводы, чтобы избежать таких атак в будущем.
  • Ответные меры. Применяя технические и правовые меры, нужно как можно активнее воздействовать на источника и организатора DDoS-атаки. В настоящее время даже существуют специальные фирмы, которые помогают найти не только человека, который провел атаку, но даже и самого организатора.
  • Программное обеспечение. На рынке современного программного и аппаратного обеспечения существует и такое, которое способно защитить малый и средний бизнес от слабых DDoS-атак. Эти средства обычно представляют собой небольшой сервер.
  • Фильтрация и блэкхолинг. Блокирование трафика, исходящего от атакующих машин. Эффективность этих методов снижается по мере приближения к объекту атаки и повышается по мере приближения к атакующей машине. В этом случае фильтрация может быть двух видов: использование межсетевых экранов и списков ACL. Использование межсетевых экранов блокирует конкретный поток трафика, но не позволяет отделить «хороший» трафик от «плохого». ACL списки фильтруют второстепенные протоколы и не затрагивают протоколы TCP. Это не замедляет скорость работы сервера, но бесполезно в том случае, если злоумышленник использует первостепенные запросы.
  • Обратный DDOS — перенаправление трафика, используемого для атаки, на атакующего. При достаточной мощности атакуемого сервера позволяет не только успешно отразить атаку, но и вывести из строя сервер атакующего.
  • Устранение уязвимостей. Не работает против флуд-атак, для которых «уязвимостью» является конечность тех или иных системных ресурсов. Данная мера нацелена на устранение ошибок в системах и службах.
  • Наращивание ресурсов. Абсолютной защиты, естественно, не дает, но является хорошим фоном для применения других видов защиты от DDoS-атак.
  • Рассредоточение. Построение распределённых и дублирование систем, которые не прекратят обслуживать пользователей, даже если некоторые их элементы станут недоступны из-за DoS-атаки.
  • Уклонение. Увод непосредственной цели атаки (доменного имени или IP-адреса) подальше от других ресурсов, которые часто также подвергаются воздействию вместе с непосредственной целью атаки.
  • Активные ответные меры. Воздействие на источники, организатора или центр управления атакой, как техногенными, так и организационно-правовыми средствами.
  • Использование оборудования для отражения DDoS-атак. Например, DefensePro® (Radware), SecureSphere® (Imperva), Периметр (МФИ Софт), Arbor Peakflow®, Riorey, Impletec iCore и от других производителей.
  • Приобретение сервиса по защите от DDoS-атак. Актуально в случае превышения флудом пропускной способности сетевого канала.

Также компания Google готова предоставлять свои ресурсы для отображения контента вашего сайта в том случае, если сайт находится под DDoS-атакой. На данный момент сервис Project Shield находится на стадии тестирования, но туда могут быть приняты сайты некоторых тематик. Цель проекта — защитить свободу слова.

3 Ноября 2015


4 703



В избр.
Сохранено

Впервые столкнувшись с хакерской атакой, блокирующей доступ пользователей к вашему сайту (DDoS-атака), владельцы интернет-проектов не знают, как на нее реагировать и справляться с возникшей проблемой.

К сожалению, подобные проблемы встречаются довольно часто, и рано или поздно каждый интернет-ресурс может им подвергнуться. Эта статья подготовит вас к непредвиденным ситуациям, а также послужит руководством к действию по устранению проблемы.

Почему сайты подвергаются атакам?

Прежде всего проанализируйте ситуацию и попытайтесь понять причины атаки на сайт. Существуют проекты, которые априори чаще других подвергаются DDoS-атакам — это сайты online-игр, инвестиционные проекты и т.д. Если ваш интернет-ресурс входит в зону риска, мы рекомендуем заранее позаботиться о его усиленной защите.

Различают несколько видов причин для атаки:

  • Недобросовестная конкуренция служит поводом для атак на крупные коммерческие компании и организации. Если ваш ресурс является коммерческим, то убедитесь, что это не атака конкурирующих компаний. Такие атаки на сайт прекращаются с завершением оплаченного “объема” атаки.
  • Развлечение. Как ни странно, DDoS-атаки могут служить развлечением для начинающих злоумышленников, поэтому иногда причиной проблемы может быть хулиганство со стороны хакеров без конкретной цели нанести урон компании. Такие атаки завершаются, когда хакеру становиться скучно атаковать ресурс.
  • Идеологические причины. Такие атаки обычно ведутся на какие-либо ресурсы организаций, действия которых не устраивают хакеров. В этом случае действия хакера могут иметь принципиальный характер и продолжаться очень долго.
  • Вымогательство или шантаж. Таким атакам чаще всего подвергаются популярные интернет-ресурсы. В этом случае злоумышленник связывается с владельцем сайта с требованием предоставить выкуп в обмен на прекращение атаки. Вступать в переговоры не рекомендуется, так как легкие и средние атаки вы сможете отбить без существенных затрат. Крупные же атаки длятся не более 1 дня в виду их высокой стоимости. Поэтому маловероятно, что причиной крупных атак может стать желание обогатиться за ваш счет.

Типы DDoS-атаки

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

Обычно атаки на сайт делятся на два уровня:

  • Флуд. Это атака начального или среднего уровня, которую легко можно отразить, разместив сайт на выделенных ресурсах и поменяв настройки сервера.
  • DDoS-атака высокого уровня. Подобные атаки можно отразить только внешними программно-аппаратными средствами защиты.

Клиенты VPS/VDS-хостинга могут определить уровень атаки самостоятельно, временно отключив веб-сервер и проанализировав его логи. Если у вас нет навыков администрирования, то можно обратиться к специалистам.

Пользователи выделенных серверов могут узнать об атаке на сайт и ее сложности от своего хостера, если у них есть договор на оказание услуг администрирования. В другом случае, клиенту сервера необходимо самостоятельно провести аналитику и определить уровень атаки.

Зная детали атаки, вам будет проще решить, какие именно меры следует принимать для решения проблемы.

Устранение возникшей проблемы

Чаще всего клиенты хостинга сталкиваются именно с флудом. В этом случае веб-сервер перегружается множеством одновременных запросов со сравнительно небольшого числа IP-адресов.

Для решения проблемы хостинг-компания может предложить вам переход на VDS или выделенный сервер, где можно настроить фильтрацию проблемных запросов, либо блокировать IP-адреса бот-машин. Рекомендуем перед переходом уточнить у хостера, готов ли он выполнить соответствующую настройку защиты атаки на сервере и на каких условиях.

Если вы столкнулись с атакой высокого уровня, то нужно принимать решение, сопоставив стоимость отражения атаки и ущерб от простоя. Иногда проще переждать атаку на сайт в течение суток-двух, оставив на сайте заглушку с сообщением о временной недоступности проекта и кодом 503 для ботов поисковых систем, а не отбивать атаку сразу же. Нужно помнить о том, что стоимость действительно серьезных атак выше ваших затрат на защиту, а значит, атака может прекратиться раньше, чем вам кажется.

Выберите стабильный хостинг с качественной поддержкой

DDoS-атаки бывают разных типов — злоумышленники могут атаковать как сервер в целом, так и отдельный сайт. Сегодня мы подробнее остановимся на атаках уровня L7, его еще называют уровнем приложений. В случае с сайтами, такая атака направлена на http/https-сервер и проявляется, как правило, в том, что на веб-сервере запускается огромное количество процессов — нагрузка возрастает и сервер начинает тормозить или становится недоступен по причине исчерпания ресурсов.

Далее расскажем о том, как выявить проблемный сайт на сервере и восстановить работоспособность сайтов при атаках.

  1. Диагностика на наличие атаки
    1. Определяем наличие атаки 
    2. DoS-атаки и выявление источника атаки по логам
    3. Простой, но важный способ снижения нагрузки от атак
  2. Защита от DDoS-атак
    1. С помощью ISPmanager
      1. Точечная блокировка в ISPmanager
      2. Блокировка по странам
    2. Ручные настройки 
      1. Корректировка параметров apache
      2. Модули nginx
      3. Переменные sysctl
  3. Подключение DDoS-защиты
    1. Если нужен сервис защиты, но бюджет не позволяет

Диагностика на наличие атаки 

В первую очередь нам необходимо понять, есть ли DDoS-атака.

Если это атака на канальном уровне, то, скорее всего, ваш сервер будет недоступен, так как сетевой канал забит, и попасть на сервер можно будет только через VNC.
Однако в данной статье мы говорим об атаках на веб-сервер — в этом случае, если есть возможность — зайдите на сервер по ssh.

Определяем наличие атаки

Командами ps и top вы можете выявить главный признак атаки — большое количество процессов httpd (apache2), php-fpm или nginx (реже). 

Если на сервер по ssh войти не удается, то вполне возможно еще удастся попасть через окно VNC в панели VMmanager (бессетевой доступ к VDS).

Также можно перезагрузить сервер через VMmanager и попробовать зайти по ssh. Если возрастает количество процессов веб-сервера, то необходимо остановить его либо, как вариант, можно «убить» все процессы веб-сервера командой:

killall -9 <имя демона-процесса веб-сервера>

Посмотреть, какой процесс запускается в качестве веб-сервера, можно с помощью команды (если утилиты netstat нет, то необходимо предварительно ее установить):

netstat -na | grep ':80 '

netstat -na

Посмотреть количество процессов веб-сервера и количество подключений на 80-ый порт:

ps aux | grep -с <имя демона-процесса веб-сервера>

netstat -na | grep -с ":80 "

Эти команды считают количество процессов веб-сервера и количество подключений на 80 порт (если у вас используется SSL-сертификат, то вместо “80” необходимо указывать “443”, оптимально использовать оба варианта).

Если количество соединений превышает среднестатистическое, вероятно, это DoS/DDoS-атака.

DoS-атаки и выявление источника атаки по логам 

DoS-атаки случаются даже чаще,чем DDoS, и если говорить максимально упрощенно, то их отличает то, что они:

  • либо направлены с одного источника,
  • либо не приводят к полной недоступности ресурса — только к высокой нагрузке,
  • либо их основная цель использовать уязвимость на сайте или ином веб-ресурсе.

Посмотреть, какие источники подключений к 80-му (443-му) порту присутствуют, можно с помощью команды:

netstat -an | grep -E ':80 |:443 '| awk '{print $5}' | grep -Eo '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' | sort | uniq -c | sort -n

Команда выведет список по возрастанию в виде строк: количество подключений — ip-адрес источника.

Данная команда также поможет в выявлении DoS/DDoS. Tcpdump запишет в файл ddos.log первые 200 пакетов, которые соединений на 80/443 порту:

tcpdump -nr ddos.log | awk '{print $3}' |grep -oE '[0-9]{1,}.[0-9]{1,}.[0-9]{1,}.[0-9]{1,}' |sort |uniq -c |sort -rn

Если атака временно прекратилась или вы хотите узнать, откуда больше всего подключались, можно проанализировать access-лог веб-сервера командой:

grep `date +%d/%b/%Y` /var/www/httpd-logs/*.access.log  | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 10

Она выведет список 10 наиболее «активных» IP-адресов. Также по логу можно выявить, на какой сайт идет очень много обращений.

Выяснить, не было ли однотипных обращений, можно командой:

grep `date +%d/%b/%Y` /var/www/httpd-logs/*.access.log | awk '{print $1" "$7}' | sort | uniq -c | sort -rnk1 | head -n 10

Для этой же цели многие предпочитают использовать модуль mod_status.

Mod_status позволяет в реальном времени осуществлять мониторинг загрузки сервера.

Например, в случае apache 2.4 необходимо отредактировать файл /etc/apache2/mods-enabled/status.conf

Поменять секцию:

      <Location /server-status>

               SetHandler server-status

               Require local

               #Require ip 192.0.2.0/24

       </Location>

на

      <Location /server-status>

               SetHandler server-status

       </Location>

Затем проверить, чтобы следующая строка строка была не закомментирована, т.е. присутствовала в файле именно в таком виде:

ExtendedStatus On

Перезапустите apache.

Теперь по адресу http://ip-aдрес.сервера/server-status доступна статистика запросов к нему.

Нас интересует следующее:

0-0    86795    0/31/31    W     0.54    0    0    0.0    0.09    0.09     89.18.166.89    example.com    GET / HTTP/1.0

1-0    86796    0/19/19    W     0.30    0    0    0.0    0.06    0.06     79.140.78.68    example.com    GET / HTTP/1.0

2-0    86801    0/9/9    W     0.15    0    0    0.0    0.03    0.03     89.18.166.89    example.com    GET / HTTP/1.0

3-0    86802    0/9/9    W     0.14    0    0    0.0    0.03    0.03     82.12.33.48    myhost.com    GET /server-status/ HTTP/1.1

4-0    86805    0/4/4    W     0.07    1    0    0.0    0.01    0.01     79.140.78.68    example.com    GET / HTTP/1.0

5-0    86806    0/3/3    W     0.06    2    0    0.0    0.01    0.01     89.18.166.89    example.com    GET / HTTP/1.0

6-0    86807    0/4/4    W     0.07    0    0    0.0    0.01    0.01     89.18.166.89    example.com    GET / HTTP/1.0

7-0    86808    1/4/4    C     0.08    0    2015    3.0    0.01    0.01     89.18.166.89    example.com    GET / HTTP/1.0

8-0    86811    0/1/1    W     0.02    0    0    0.0    0.00    0.00     89.18.166.89    example.com    GET / HTTP/1.0

9-0    86812    0/1/1    W     0.02    0    0    0.0    0.00    0.00     89.18.166.89    example.com    GET / HTTP/1.0

10-0    86813    0/1/1    W     0.02    0    0    0.0    0.00    0.00     89.18.166.89    example.com    GET / HTTP/1.0 

В данном случае атака идет пустыми запросами GET / к серверу example.com. Вам следует его отключить. Выполнить это лучше всего в панели управления: зайдя в раздел с сайтами, выбрать сайт (в данном случае example.com) и нажать сверху кнопку Файлы конфигурации, где вы увидите внизу конфигурационный файл nginx. Найдите отрывок такого вида:

server {

       listen       80;

       server_name  example.com www.example.com;

Пропишите ниже server_name строку

deny all;

Аналогично сделайте в секции, где указано listen 443;

Если у вас нет nginx, а только apache, то перейдите в корневую директорию сайта и создайте файл .htaccess с содержимым:

Deny from All

Теперь при обращении к сайту будет выдаваться ошибка 403 Forbidden, и нагрузка на остальные сайты значительно снизится.

Простой, но важный способ снижения нагрузки от атак

Как правило, флуд-боты обращаются по доменному имени, но могут перебирать и IP-адреса. В этом случае необходимо создать домен-заглушку. Но не забудьте для него в файлах конфигурации nginx указать deny all; (как в примере выше) или, если у вас только apache, в корневой директории заглушки добавить такой же файл .htaccess с содержимым:

Deny from All

Это не самый эффективный способ борьбы с атаками, но крайне полезный, так как он решает помимо этого много проблем с индексацией сайта, со сканом сайтов по IP-адресу и другие случаи. Однако далее мы рассмотрим уже целенаправленные способы фильтрации атак.

Защита от DDoS-атак

С помощью ISPmanager

В панели ISPmanager есть функция, позволяющая ограничить количество подключений к сайту с одного IP-адреса. При этом IP-адрес блокируется по всем портам, поэтому если ваш IP-адрес попадёт в бан, то вы потеряете связь с сервером на 5 минут.

Приступаем к настройке.

Заходим в ISPmanager — раздел «Сайты» (в старом меню это «Домены-WWW-домены») — выделить домен — кнопка «Изменить». Ищем подраздел «Оптимизация» и «защита от DDos» и ставим галочку «Включить защиту от DDoS-атаки» — следом появятся параметры защиты от атаки.

А именно:

«Количество запросов в секунду» — при достижении указанного количества подключений, IP блокируется только в Nginx.
«Максимальный размер всплеска» — при достижении указанного количества подключений, IP блокируется по всем портам на 5 минут.

Обратите внимание! Данный модуль всего лишь метод сглаживания слабых атак силами веб-сервера. Если атака серьезная и полностью выводит из строя веб-сервер своей нагрузкой, то данный модуль никак не спасет. Также не указывайте экстремально низкие значения (меньше 30-20), так как архитектура некоторых сайтов подразумевает, что при одном клике на сайте к серверу уйдет несколько запросов, следовательно, повышается риск заблокировать легитимного пользователя.

Точечная блокировка в ISPmanager и блокировка по странам

Выше мы уже описывали варианты поиска источника нагрузки, когда атакующих IP-адресов немного. В этом случае их проще всего точечно заблокировать в панели ISPmanager в разделе «Администрирование» — «Брандмауэр», нажав кнопку «Создать» и указав адрес:

В этом же разделе есть возможность включить блокировку по определенным странам, нажав сверху кнопку «Страны». Стоит учитывать, что географическая привязанность IP-адресов всегда условна и может быть не точна. По этой причине для более-менее рабочей точности геораспределения адреса используются платные базы IP-адресов, в ISPmanager это работает именно так, и блокировка будет доступна, если вы зарегистрируетесь и приобретете ключ доступа к базам сервиса Maxmind:

Ручные настройки

Чтобы точечно зафильтровать 80 порт для ip xxx.xxx.xxx.xxx, используйте команду:

iptables -A INPUT -p tcp --src xxx.xxx.xxx.xxx --dport 80 -j DROP

Эти и последующие команды можно и нужно аналогично использовать и для 443-го порта.
Можно использовать ipset (нужен соответствующий модуль):

ipset -N ddos iphash

iptables -A INPUT -p tcp -m tcp --dport 80 -m set --set ddos src -j DROP

while true; do tail -10000 /var/www/httpd-logs/site.ru.access.log | sort | cut -f 1 -d " " | uniq -c | awk '($1>50){print $2}' | xargs -tl -I _ ipset -A ddos _;sleep 30; done

Закрываем icmp (поможет при icmp-flood):

iptables -A INPUT -p icmp -j DROP --icmp-type 8

Ограничение максимального числа «полуоткрытых» соединений с одного IP к конкретному порту (необходим соответствующий модуль):

iptables -I INPUT -p tcp --syn --dport 80 -m iplimit --iplimit-above 10 -j DROP

Ограничение максимального числа соединений с одного IP к конкретному порту:

/sbin/iptables  -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 3 -j REJECT

Корректировка параметров apache

Если в качестве веб-сервера используется apache, в качестве дополнительных средств можно корректировать параметры, влияющие на количество создаваемых процессов в системе.

Откройте любым удобным текстовым редактором конфигурационный файл /etc/httpd/conf/httpd.conf (если Centos) и /etc/apache2/mods-available/mpm_prefork.conf (если Debian/Ubuntu):

<IfModule mpm_itk_module>

   StartServers          1

   MinSpareServers       1

   MaxSpareServers       1

   MaxClients          150

   MaxRequestsPerChild  100

</IfModule>

Измените MaxClients (максимальное число процессов) в меньшую сторону до количества процессов, которые не забивают ресурсы вашего сервера до отказа. Каждый процесс apache занимает в среднем 4-8 мегабайт памяти. А лучше узнать точно, сколько памяти в среднем на вашем сервере занимает один процесс apache/httpd так:

top -d 1 | grep -E 'http|apache' | awk '{a+=$7}END{print a/(1024*NR) " Mb"}'

Необходимо, чтобы суммарное количество помещалось в оперативной памяти.

Отредактируйте /etc/httpd/conf/httpd.conf (если Centos) и /etc/apache2/apache2.conf (если Debian/Ubuntu)

Следует уменьшить параметры:

Timeout 300

MaxKeepAliveRequests 100

до 60 и 50 соответственно, чтобы как можно скорее старые процессы apache прекращали свое существование.

Модули Nginx

Если панели ISPmanager нет, но используется веб-сервер nginx, проверьте, чтобы nginx был собран с модулями http limit req и GeoIP. С их помощью аналогичным образом, как в панели ISPmanager, только вручную в конфигурационных файлах, можно блокировать доступ для IP-адресов, превысивших ограничение на количество подключений. Также можно заблокировать и доступ по странам. Ввиду возможных особенностей ручных конфигураций, рекомендуем самостоятельно изучить документацию nginx по модулю HTTP limit req и GeoIP.

Переменные sysctl

Системные переменные, которые могут быть полезны, при DDoS.

ICMP-FLOOD

Команда ниже поможет при отражении атаки типа icmp-flood:

sysctl net.ipv4.icmp_echo_ignore_all=1

SYN-FLOOD

Уменьшает время удержания «полуоткрытых» соединений:

sysctl -w net.ipv4.tcp_synack_retries=1

Включает TCP syncookies:

sysctl -w net.ipv4.tcp_syncookies=1

Увеличивает размер очереди полуоткрытых соединений, по умолчанию — 512:

sysctl -w net.ipv4.tcp_max_syn_backlog=4096

Проверяет TCP-соединение каждую минуту. Если на другой стороне — легальная машина, она сразу ответит. По умолчанию — 2 часа:
sysctl -w net.ipv4.tcp_keepalive_time=60

Повторяет проверку через 20 секунд:

sysctl -w net.ipv4.tcp_keepalive_intvl=20

Количество проверок перед закрытием соединения:

sysctl -w net.ipv4.tcp_keepalive_probes=3

Изменяет время ожидания приема FIN:

sysctl -w net.ipv4.tcp_fin_timeout=10

Обратите внимание! Эти настройки будут работать до первой перезагрузки сервера, для постоянного использования параметры необходимо внести в системный конфиг sysctl.conf

Подключение DDoS-защиты

Этот раздел статьи должен был быть, пожалуй, самый первым, так как является самым эффективным и главным способом бороться с DDoS-атаками.
Как уже упоминалось, указанные выше меры могут спасти только от небольших атак или атак с источников-«одиночек». 

Для качественной защиты и избавления от дополнительных манипуляций стоит подключать профессиональную DDoS-защиту. Есть много сервисов, которые не привязаны к хостингу и могут помочь защитить ваш сайт.

Мы, в свою очередь, предлагаем готовое решение от наших партнеров DDoS-Guard по подключению защищенного канала (для атак на канальном уровне) и защиты L7 (для атак на уровне приложений), обе защиты по одной стоимости, подробнее здесь.

Если нужен сервис защиты, но бюджет не позволяет

Стоит упомянуть и еще один сервис, который допускает вариант бесплатной защиты от DDoS (как вы понимаете, «бесплатно» означает, что это будет не настолько же эффективно) — Cloudflare. 

Базово, на этом сервисе можно добавить свой домен, направив его на предоставляемые ими NS. Также по умолчанию, направив домен на их NS, в качестве А-записей на стороне Cloudflare предлагается указать «проксирующий» IP-адрес, который будет отдаваться по домену глобально и принимать на себя все запросы и пропускать их через фильтр бесплатной защиты. 

Помимо того, что более эффективная фильтрация будет платной, есть еще «узкое горлышко» в том, что сам VDS при наличии доменов с Cloudflare не избавляется от угрозы прямой атаки по IP-адресу. Как правило, IP-адрес скрывают, стараются, чтобы по доменам нигде не «светились» старые DNS-записи, ведущие сразу на IP-адрес VDS и т.д.

Но есть более кардинальное и рекомендуемое решение в данном случае — запретить в фаерволе доступ по 80-му и 443-му портам для всех адресов, кроме адресов из подсетей cloudflare, тем самым пуская к веб-серверу только трафик, уже прошедший фильтрацию сервиса.

На примере Iptables это можно сделать следующими командами:

iptables -I INPUT -p tcp -m multiport --dports 80,443 -j DROP

ip6tables -I INPUT -p tcp -m multiport --dports 80,443 -j DROP

wget -O - https://www.cloudflare.com/ips-v4 | while read subnet; do iptables -I INPUT -s $subnet -j ACCEPT; done

wget -O - https://www.cloudflare.com/ips-v6 | while read subnet; do ip6tables -I INPUT -s $subnet -j ACCEPT; done

Это только базовая настройка, которую можно кастомизировать, в том числе и для случаев без Cloudflare, ограничив доступ атакующих источников, или ограничить доступ к DNS, и по почтовым портам, добавив правила для доступа ваших рабочих и других легитимных IP-адресов и т.д.

В целом, грамотная настройка фаервола и веб-сервера может помочь справляться с базовыми атаками даже без участия Cloudflare. Однако никакие бесплатные решения не помогут от серьезных и мощных DDoS-атак.

Любые DDoS-атаки приводят к потере легитимного трафика, если говорить простым языком – к потере посетителей, как следствие клиентам и прибыли. Как правило, от атаки страдают сайты, принимающие электронные платежи, интернет-магазины, вот и мы не стали исключением. В декабре, в самый разгар предпраздничной торговли, впервые интернет-магазин подарков magicmag.net стал жертвой DDoS-атак, что сделало сайт недоступным для покупателей. Хорошо, что обошлось без утечки данных, но ситуация изрядно попортила нам нервы и лишила прибыли в размере несколько сотен тысяч рублей. Поэтому мы решили написать статью, для тех, кто может столкнуться с аналогичной проблемой.

Началось с того, 15 декабря на наш сайт посыпались запросы – тысячи ботов(зараженных устройств со всего мира) с различных IP-адресов отправляли запросы на наш сервер. Каждый бот стал выполнять запросы к своему DNS серверу с неподлинным обратным IP-адресом, который указывал на наш сервер.

Иллюстрация распределенной DDOS атаки на сайт
magicmag.net

Наш сервер довольно скоро не выдержал – он перестал отвечать на входящие вопросы и интернет-магазин стал недоступен. Цель – максимально загрузить ресурс интернет-магазина, чтобы на обработку запросов от легитимных пользователей у нас попросту не хватило мощности. Вначале мы подумали, кто это какой-то кривой код забил все свободное пространство и ресурсы и обратились к системным администраторам и программистам, которые почистили кэш, таблицы, освободили место, запустили сервер. Это помогло, но буквально на пару секунд.

Стали разбираться, оказывается место на сервере заполнялось, потому, что к сайту идут тысячи запросов – мы подверглись DDoS-атаке. Разработчики и сисадмины, покопались в логах сервера, на котором находится интернет-магазин, буквально за час-два собрался архив данных о том, когда и главное откуда к нам заходили посетители. Самое интересно, что подавляющее число запросов было с IP-адресов Таиланда и Румынии.

Скриншот статистики обращений к сайту по часам magicmag.net

Общее количество запросов за 5 часов составило 145 млн.

Чтобы отразить атаку – мы пытались банить адреса и подсети, с которых приходили эти запросы, и на какое-то время это помогло. Через время нам пришло в ВК сообщение в секретном чате, в котором сообщалось, что с нами хотят сотрудничать и, если мы заплатим 50 тыс. руб. атаки прекратятся и они укажут нам на наши уязвимости. Это были словно отголоски из девяностых – принудительная оплата «крыши». Новый культурный интернет-рэкет… Не смотря на столь заманчивое предложение, мы вежливо отказались.

Воспользовавшись услугами наших IT-специалистов, мы отбили атаку, о чем не преминули сообщить в чат. Конечно, ранее мы никогда не сталкивались с атаками и не считали нужным как-то «предохраняться». У нас обычный интернет-магазин подарков, а не сайт Пентагона. Поэтому мы на ходу искали способы отбить атаку, так как опыта в этих вопросах у нас не было. Нам казалось, что мы справились, но это была ошибка – через несколько минут атака возобновилась с новой силой – запросов было в 40 раз больше. Через какое-то время сайт опять «лег».

После этого мы решили для фильтрации запросов подключить сторонний сервис – по рекомендации нашего администратора мы выбрали CloudFlare. Бесплатный пакет мы брать не стали, так как нам нужно было как можно быстрее запустить сайт.

Суть сервиса CloudFlare в том, что он брал трафик нашего интернет-магазина и пропускал его через свои центры, которые фильтровали запросы. Этот сервис использует Навальный для защиты от атак, а также такие известные компании, как Uber, Avito и многие другие.

Атака была нарастающей, изначально сисадмин банил подозрительные запросы вручную. Бан срабатывал согласно протоколу JavaScript Challenge – данный инструмент посредством математических вычислений проверяет, кто пытается зайти на сайт. Сайт во время проверки блокируется на пару секунд, после чего CloudFlare редиректит запросы на интернет-магазин, но только в том случае, если IP-адреса проходят проверку и получают статус безопасных. Мы решили не пользоваться бесплатным пакетом услуг сервиса и оплатили тариф Pro стоимостью 20 евро в месяц c кредитной карты, плюс мы заплатили 5 евро за выделенный IP-адрес.

Схема работы сервиса по защите от распределенной атаки habr.com

Но на этом наше «приключение не закончилось» — несмотря на то, что атака была практически полностью отбита, сайт все равно работал некорректно. Постоянно вылезали какие-то ошибки. CloudFlare конфликтовал с SSL-сертификатом, который мы использовали для безопасной передачи информации по защищенному протоколу. SSL-сертификат не позволяет мошенникам перехватить или заменить личные данные (логины, пароли, данные банковских карт, адреса электронной почты) покупателей, которые они вводят в нашем интернет-магазине.

Кроме того, есть еще одна особенность – когда мы в настройках домена меняли NS адреса, изменения эти вступают в силу не сразу. На то, чтобы изменения вступили в силу, уходило не менее 4 часов.

Мы зашли в раздел «доменные имена», далее в «мои домены» и в разделе «сервера имен» нажали «изменить», после чего прописали новые NS адреса. Но мы не учли тот факт, что эта процедура может длится от 4 до 24 часов. Нас это не устраивало, и мы решили воспользоваться специальными настройками и уменьшить у регистратора время вступления изменений в силу. По умолчанию время стоит 12-24 часа, но вы можете задать любое нужное вам время вручную.

CloudFlare: да или нет

До подключения к CloudFlare мы отражали DDoS-атаки собственными силами, но увы, сервер интернет-магазина упал под напором запросов. Для защиты мы не использовали ничего, мы как могли освобождали пространство, но это не помогало. Поэтому мы приняли решение воспользоваться сервисом узкой направленности чья задача фильтрация трафика. И мы остановили свой выбор на CloudFlare. Но вместе сокращением атаки мы получили ряд проблем:

  • При возникновении конфликта CloudFlare с SSL-сертификатом мы не смогли связаться напрямую со службой поддержки. Да, есть форум, на котором можно что-то написать и подождать, когда тебе ответят, но это все время, а время, как известно это деньги. Кроме того, из-за атак и проблем с работой сайта мы рисковали своей репутацией.
  • Снижение показателей конверсии из-за ошибок сайта, а также из-за его замедленной «реакции».
  • Из-за оплаты посредством кредитной карты сервис автоматически списывал с нее деньги еще несколько месяцев — учтите этот момент и вовремя отмените подписку.

Фильтрация и сервис CloudFlare оказался для нас не подходящим и нерентабельным – да, изначально это был выход, но потом нас это не устроило. В первую очередь из-за отсутствия возможности оперативно решать проблемы и отсутствием технической поддержки. Поэтому мы обратили внимание на российский сервис – Qrator.
Большим плюсом стала круглосуточная телефонная служба поддержки. Менеджеры быстро, грамотно и без ожидания помогли нам настроить фильтрацию трафика буквально в течение получаса.

Qrator: плюсы

✔ Автоматическая смарт-фильтрация трафика – сервис фильтрует зашифрованный трафик без нашего участия.

✔ Быстрое подключение сайта к сервису – стар работы сразу после замены DNS интернет-магазина.

✔ Бесплатный тестовый период – 7 дней, если ваш сайт находится под DDoS – атакой, тогда тестовое время составляет 1 сутки.

✔ Защита в том числе и от атак по IP-адресам, для этого мы закрыли доступ к нашему сайту со всех адресов, кроме указанных Qrator.

✔ Русскоговорящая поддержка по телефону, которая помогает все быстро настроить.

Благодаря Qrator мы отбили атаку и никаких денег мы не платили, когда они поняли, что им не выгодно далее нас атаковать и буквально на следующий день принялись за конкурентов. У них цель заработать на тех, у кого нет должных знаний в области безопасности, поэтому уже много лет кибер-преступники имеют традицию перед новым годом «предлагать помощь» за весьма приличные деньги. Так как мы прошли все круги ада, то конечно же рассказали конкурентам как справится с данной проблемой, у них по нашей схеме ушло на это около пары часов.

Вывод

Интернет-магазин работает и наш, и конкурентов, кибер-злодеи остались ни с чем.

Qrator куратор помог отбить атаку, но на постоянной основе мы не используем данный сервис в виду отсутствия экономической выгоды — постоянная защита стоит не мало.
Кстати, QRATOR тарифицирует свои услуги по трафику, так что если вы хотите неплохо сэкономить — вам нужно разнести на разные сервера «статику» (фотки, например) и динамику (код) сайта и настроить фильтрацию только на код. Это позволит снизить цену в несколько раз.

Цель данной статьи рассказать вам как в случае DDoS – атаки быстро и с минимальными потеря, используя наш опыт отбиться от атаки, не потерять репутацию, прибыль и не растерять клиентов. Да, наши потери составили несколько сотен тысяч рублей, и вы могли подумать, что выгоднее было заплатить 50 тыс. Мы же придерживаемся мнения, что никогда нельзя платить шантажистам, так как те, кто платит раз, будут платить постоянно.

Распределенные атаки типа DDoS — это набор хакерских действий, направленных на сбой или нарушение работоспособности различных видов инфраструктур в сети, будь то простой веб-сайт или большой клиентский сервис. Принцип атаки прост и заключается в создании лавинообразного роста запросов к онлайн-ресурсу для искусственного увеличения нагрузки на него и последующего вывода его из строя.

Сложность защиты от DDoS-атак заключается в распределенности атакующих хостов. Заблокировать трафик с помощью брандмауэра довольно непросто.

Существует множество различных типов DDoS-атак. Мы разделим их на три основные категории: объемные, протокольные и прикладные. Давайте рассмотрим каждый из них подробно.

Широкомасштабные DDoS-атаки

Широкомасштабные DDoS-атаки созданы для перегрузки трафиком пропускного канала жертвы. Одним из наиболее популярных ее видов является атака отражения (reflection). Принцип ее следующий:

  1. Злоумышленники, поменяв свой IP-адрес на адрес цели, отсылают, якобы от неё, запросы серверам, на которых работают службы UDP или TCP.
  2. Принимающие сервера отражают сигнал, отправляя ответы на IP-адрес отправителя, используя тот же протокол.

Вы спросите, зачем же такой замысловатый алгоритм действий? Не проще ли напрямую атаковать объект? Дело в том, что ответные пакеты обычно намного больше, чем пакеты исходящих. Например, ответ на DNS-запрос может быть в 28–54 раза больше исходного запроса. Если таких пакетов много – масштаб ущерба может быть критическим.

Протокольные и прикладные DDoS-атаки

Протокольные DDoS-атаки (например, SYN-флуд) обнаруживают слабые места в работе протокола, используя принцип трехэтапного рукопожатия.

Когда злоумышленник отправляет на машину большое количество пакетов SYN (synchronize – запрос на синхронизацию), сервер выделяет ресурсы для этого запроса и отправляет обратно пакет SYN ACK (acknowledges, готовность к принятию пакета), предполагая, что это начало запроса на подключение.

Обычно другой сервер отвечает ACK, запуская соединение. В случае атаки злоумышленник продолжает отправлять SYN-запросы, не завершая соединение, до тех пор, пока на сервере не закончатся ресурсы и он больше не сможет принять какой-либо дополнительный трафик.

Прикладные DDoS-атаки нацелены на слабые места в работе приложений. Например, атака Slowloris, очень похожая на SYN-флуд и работает так: злоумышленник методично отправляет HTTP-запросы, не завершая их, оставляя соединение открытым. А поскольку соединения никогда не завершаются, они поглощают все доступные ресурсы сервера до тех пор, пока он не выйдет из строя.

Защита от DDoS-атак

🕵 Защищаемся от DDoS-атак: что делать до, во время и после атаки

Важнейшей частью защиты от такого рода атак является профилактика. Лучше заранее все предусмотреть, чем потом бороться с последствиями. Итак, что же в такой ситуации можно сделать:

Увеличить пропускную способность

Один из способов справиться с широкомасштабными атаками — увеличить пропускную способность в ответ. К сожалению, сделать это довольно сложно, если только атакуемая организация не является поставщиком услуг. В такой ситуации все будет зависеть от размера атаки и способности злоумышленника масштабировать ее в ответ.

Ответы на аутсорсинг

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

Иметь четкий план реагирования

Даже если организация передала защиту от DDoS-атак на аутсорсинг, ключевым моментом является наличие плана реагирования на такой случай.

Он должен включать следующее.

Перед атакой:

  1. Создайте как можно более точные принципиальные схемы с планом локализации в случае непредвиденной ситуации, с четко прописанными действиями каждого сотрудника компании.
  2. Определите, когда и как привлечь вашего интернет-провайдера или организацию по предотвращению DDoS-атак
  3. Составьте список тех, кого следует уведомить и когда (контактная информация группы безопасности, соответствующие контакты сетевой команды и т. д.)
  4. Убедитесь, что у вашей команды по связям с общественностью есть план того, как и что сообщать вашим клиентам, в случае инцидента, приводящего к потере активов.
  5. Все эти документы и списки контактов следует регулярно (не реже одного раза в квартал) пересматривать.

Очень важно, чтобы этот план был распечатан и распространен среди работников, и в случае отказа системы, он был доступен каждому.

Во время атаки:

  1. Классифицируйте событие как DDoS-атаку, чтобы подтвердить, что это не просто короткий всплеск большого трафика или ошибка, допущенная кем-то в сети. В идеале необходимо определить ее тип и объем.
  2. По возможности заглушите трафик и обратитесь к специалистам безопасникам или к своему оператору связи.

После атаки:

  1. Соберите как можно более подробные сведения о произошедшем инциденте.
  2. На основании анализа произошедшего обновите план реагирования.

Создание устойчивой архитектуры

🕵 Защищаемся от DDoS-атак: что делать до, во время и после атаки

Архитектура отказоустойчивых систем требует комплексного подхода по обеспечению непрерывности бизнеса. При их проектировании вам нужно избежать потенциально небезопасных узких мест, иметь географически разбросанные сети и разнообразных поставщиков.

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

Облачная архитектура также позволяет организациям любого размера создавать полностью резервированные системы, которые можно включать и выключать одним нажатием кнопки. Она имеет географически разнородную инфраструктуру и возможность увеличивать или уменьшать нагрузку по мере необходимости.

А еще не стоит забывать об обновлении аппаратного железа, ведь некоторые типы DDoS-атак очень старые, и их можно смягчить с помощью нового оборудования. Например, от многих атак, будь то SYN-флуд или Slowloris, можно защититься с помощью соответствующих сетевых брандмауэров и балансировщиков нагрузки, отслеживающих соответствующие нарушения в работе системы и закрывающие неустойчивые соединения.

Нельзя недооценивать

Рассмотренный вид атак нельзя игнорировать, поскольку порой последствия таких действий злоумышленников могут быть непредсказуемыми. Обычно для ее запуска применяются огромные сети из нескольких сотен или даже тысяч зараженных устройств, называемые ботнетами. Мощность последних постоянно увеличивается и их запуск может нанести колоссальный ущерб. Достаточно вспомнить известный случай с ботнетом Mirai, который в 2016 году атаковал крупного DNS-провайдера Dyn, когда из-за возросшей нагрузки упал целый ряд популярных сайтов: GitHub, HBO, Twitter, Reddit, PayPal, Netflix и Airbnb. Mirai на пике нагрузки запускал около 60000 iOT-устройств, в основном это были камеры и маршрутизаторы и специалисты фиксировали его активность вплоть до 2017 года. Поэтому, если вы хотите обезопасить свою компанию, подумайте об этом заранее. Удачи!

***

Материалы по теме

  • 🕵 Лучшие инструменты для специалиста по кибербезопасности в 2022 году
  • 🕵 Я узнаю тебя из тысячи: поиск киберпреступников с помощью Maltego. Опыт REG.RU

12 марта 2021

4 400

0

Время чтения ≈ 12 минут

Успешная атака на сервер методом DoS или DDoS способна вывести из строя веб-ресурс на длительный срок — от пары часов до нескольких дней. Это грозит владельцу незапланированными расходами и потерей потенциальной прибыли.

В этой статье расскажем о том, что такое DoS- и DDoS-атаки, в чём разница между ними, и какие существуют формы и способы их реализации. Ответим, как подготовиться к атаке и минимизировать ущерб от совершившихся нападений.

  • Вымогательство. Злоумышленник нарушает работу ресурса и требует выкуп у владельца за остановку атаки и возвращение сети в рабочее состояние.
  • Недобросовестная конкуренция. Заказное нападение со стороны компании-конкурента для переманивания потенциальных клиентов и занятия лидирующего положения на рынке.
  • Хактивизм. Мотивом для нападения служат различия в политических взглядах или личная неприязнь. Подобные активисты-хакеры выбирают мишенью правительственные или корпоративные сайты для борьбы за собственные взгляды и обозначения несогласия с официальной позицией властей.
  • Развлечение. Часть хакеров наносят вред владельцам ресурсов и их пользователям из хулиганских побуждений, без прямой финансовой выгоды.
  • Недовольные сотрудники. В случае возникновения разногласий между работником и работодателем, нападение на корпоративный ресурс, методом DoS или DDoS, выступает как средство сведения счётов.

DoS-атака

Denial of Service («отказ в обслуживании») – нападение с целью вызвать перегрузку и нарушение работы сервиса, путём отправки максимального количества трафика жертве. DoS-атаки проводятся с одного хоста и направлены на отдельные сети или системы.

Особенности DoS

  • Одиночная атака. Отправка вредоносных пакетов проводится из одной сети.
  • Высокая заметность. Нападения DoS можно без труда зафиксировать, просмотрев журналы (логи) сервера. Достаточно беглого взгляда, чтобы заметить множество записей, связанных с одним IP-адресом.
  • Лёгкость подавления. DoS-атаки можно легко предотвратить, заблокировав источник. Это может сделать системный администратор или сетевые фильтры, анализирующие трафик.

Атака методом DoS получила широкое распространение благодаря соотношению таких качеств, как простота реализации и причинение внушительного ущерба ресурсам жертвы. DoS-атака не представляет прямую угрозу для сервера, но влечёт повышение сервисных затрат, а также потерю потенциальной прибыли из-за простоев во время нападения.

DDoS-атака

DDoS-атака (Distributed Denial of Service, распределённая атака типа «отказ в обслуживании») – та же DoS-атака, но реализованная с нескольких машин на один целевой хост. Этот метод атаки занимает важное место в арсенале профессиональных хакеров. Мощность нападения напрямую зависит от количества атакующих устройств и объёма отправляемого трафика.

Во время DDoS-атаки возникают большие сложности с обнаружением её источника, так как хакер использует целую сеть связанных между собой машин (ботов). В 9 из 10 случаев атаки ведутся с заражённых вирусами компьютеров обычных пользователей, которые даже не подозревают, что стали невольными соучастниками правонарушения.

Вместе эти устройства образуют единую сеть, называемую ботнетом, который управляется злоумышленником (ботмастером) с главного контрольного сервера. Подобная структура позволяет хакеру координировать атаки одновременно с нескольких системам, численность которых колеблется от десятков до сотен тысяч устройств.

Особенности DDoS

  • Многопоточная атака. Благодаря возможности организовать атаку на ресурс с нескольких хостов шансы «положить» сервер намного выше, чем у нападения методом DoS. Если в подчинении злоумышленника сотни, тысячи, а то и миллионы ботов на разных хостах, то атаку не выдержат даже самые мощные и защищённые системы.
  • Скрытность. Вредоносный трафик с нескольких хостов выглядит «живым» для защитных фильтров и администраторов, что усложняет обнаружение и защиту от DDoS-атак. Иногда злоумышленник намеренно ограничивает скорость отправки пакетов, чтобы обезопасить IP-адреса от блокировки.
  • Сложность подавления. Остановить мощную DDoS-атаку крайне сложно. Трудности может вызвать не только подавление уже начавшегося нападения, но и обнаружение самого факта атаки.

Категории DoS и DDoS-атак

В зависимости от целей воздействия, распространённые кибератаки можно разделить на несколько больших групп.

Атаки на переполнение канала

Нападения реализуются путём отправки серверу многочисленных эхо-запросов, которые потребляют ресурсы интернет-канала. Задача подобных атак — провести через сеть жертвы как можно больше ложного трафика, тем самым исчерпав всю ёмкость полосы пропускания. Успешность их проведения напрямую зависит от отправленного объёма данных (Гбит/сек.).

DNS-флуд

  • Вид атаки: DDoS
  • Тип: UDP-флуд
  • Цель: DNS-сервер

Злоумышленник атакует DNS-сервер, который напрямую взаимодействует с жертвой. В результате веб-ресурс, на который было рассчитано нападение, продолжает функционировать внутри своей сети, но оказывается отрезанным от интернета. Атака часто используется, поскольку для перегрузки полосы пропускания среднестатистического DNS-сервера достаточно 10 тыс. запросов в секунду. Один ПК способен сгенерировать около 1 тыс. таких запросов. Поэтому хакеру потребуется всего 10 компьютеров для перегрузки и отключения одного DNS-сервера.

Ping-флуд

  • Вид атаки: DoS / DDoS
  • Тип: ICMP-флуд
  • Цель: сетевое оборудование III уровня и выше

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

UDP-флуд

  • Вид атаки: DoS / DDoS
  • Тип: UDP-флуд
  • Цель: случайные порты удалённого хоста

Жертве отправляются большие пакеты через бессеансовый протокол пользовательских дейтаграмм (UDP). Когда сервер фиксирует отсутствие приложения, отвечающего за порт, в ответ злоумышленнику отправляется пакет ICMP с сообщением «адресат недоступен». У протокола UDP отсутствуют средства защиты от перегрузок, поэтому этот тип атаки способен захватить весь полезный интернет-трафик сервера.

Атаки, использующие уязвимость стека протоколов

Нападения на межсетевые экраны, файервол и другие сервисы, с целью ограничить количество допустимых соединений у жертвы по TCP протоколу.

SYN-флуд

  • Вид атаки: DoS / DDoS
  • Тип: TCP-флуд
  • Цель: TCP-стек сервера

Злоумышленник создаёт с сервером несколько деактивированных подключений по протоколу TCP. Со стороны хакера отправляются SYN-запросы для соединения с целевой сетью, а жертва, в свою очередь, отправляет ответный пакет SYN-ACK. Для окончания квитирования со стороны отправителя ожидается пакет ACK.

Однако злоумышленник оставляет сессию полуоткрытой — не отправляет запрос или пересылает его на несуществующий адрес. Это происходит до тех пор, пока на сервере не сработает ограничение на максимальное число одновременных открытых подключений. В конечном результате система перестаёт принимать запросы на соединение от настоящих пользователей.

Slow HTTP POST

  • Вид атаки: DoS / DDoS
  • Тип: атака «медленными» сессиями
  • Цель: веб-сервер

Атака Slow HTTP POST («медленные запросы HTTP») направлена на перегрузку веб-серверов с использованием уязвимости в HTTP протоколе. Во время начала нападения злоумышленник отправляет HTTP запрос с заголовком «Content-Length», который даёт информацию целевому веб-серверу о размере последующего пакета. Затем хакер отправляет само сообщение методом POST (отправка), но делает это с очень низкой скоростью, максимально растягивая продолжительность сессии. Таким образом, злоумышленник занимает ресурсы жертвы на длительное время, создавая проблемы при обработке запросов от настоящих пользователей.

«Пинг смерти» (Ping of Death / POD)

  • Вид атаки: DoS / DDoS
  • Тип: Ping-флуд
  • Цель: сетевой стек компьютера

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

Атака приложений

Нападения сопровождаются чрезмерным потреблением ресурсов у жертвы из-за стрессовой нагрузки служб и приложений на внешнем уровне. Во время атаки задача злоумышленника — запустить максимальное число процессов и транзакций на целевом сервере. Для перегрузки системы подобными атаками не нужно большого числа машин, что усложняет обнаружение и устранение нападений.

Slowloris (Slow HTTP GET)

  • Вид атаки: DoS
  • Тип: атака «медленными» сессиями
  • Цель: веб-сервер

Атака производится с помощью специальных программ, разработанных для нападения на интернет-сервисы, путём создания многочисленных «медленных сессий». Со стороны хакера, в рамках одного запроса, отправляется цепочка неполных HTTP-сессий, содержащих только заголовок без продолжения.

Для обработки HTTP-заголовков сервер открывает и поддерживает массу подключений, блокирующих его основную работу. Метод Slowloris отличается от других типов атак тем, что для его реализации не требуется широкая полоса пропускания трафика.

Переполнение буфера (Buffer Overflow)

  • Вид атаки: DoS
  • Тип: атака на уязвимые версии ПО
  • Цель: буферная память

Самый распространённый метод DoS-атак. Он позволяет злоумышленнику получить доступ к системе или вызвать ошибку в ПО с помощью эксплойта, путём переполнения буфера программы. Эта уязвимость характерна для приложений, работающих без проверки длины входных данных.

HTTP-флуд

  • Вид атаки: DoS / DDoS
  • Тип: HTTP-флуд
  • Цель: веб-сервер / веб-приложение

Основная задача атаки: запустить максимальное количество процессов, направленных на обработку запроса. Для нападения злоумышленник отправляет HTTP-серверу многочисленные поддельные запросы GET (получение данных) или POST (отправка данных) через ботнет. В результате исчерпывается лимит размера log-файла и система перестаёт отвечать на реальные запросы пользователей. Хакеры часто применяют HTTP-флуд, поскольку для его реализации требуется меньшая пропускная способность, чем для других видов атак.

Как защитить ресурс от атак

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

Превентивный мониторинг сетевой активности

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

Для автоматической сортировки поступающих запросов рекомендуется использовать сервис с функционалом CDN (Content Delivery Network), например, Cloudflare. Данная сеть работает по принципу «обратного прокси». Копии страниц сайта переносятся на дублирующие серверы по всему миру, которые в критической ситуации отрабатывают весь ложный трафик.

Настройка фильтрации на уровне хостинга

Базовая защита от DoS- и DDoS-атаки – дополнительная услуга, входящая в тариф большинства современных хостинг-провайдеров. Сервис позволяет обеспечить безопасность многих веб-ресурсов малого и среднего масштаба (блогов, интернет-магазинов или форумов).

Защита реализована за счёт установки фильтров, которые анализируют проходящие данные через интернет-канал и блокируют подозрительный трафик. Для большей безопасности пользователю предоставляется более широкая полоса пропускания. Максимальную мощность DoS и DDoS-атак, на которую рассчитаны фильтры со стороны хостера, рекомендуется уточнять у конкретного провайдера.

Тестовое нападение на сервер

Хотя полностью обезопасить сеть от DoS/DDoS-атак нельзя, можно подготовиться к нападениям методом пентестинга — моделирования атаки на сервер. Тестовые нападения дают ценный и безопасный опыт, который позволяет закрыть потенциальные проблемы в защите сети и составить эффективные стратегии устранения атак в реальном времени.

Программы для пентестинга

  • Hping3. С помощью этого инструмента можно смоделировать стрессовую флуд-атаку (ICMP, SYN, UDP) на сервер. Программа доступна для Linux-систем.
  • LOIC (Low Orbit Ion Cannon). Программа для проведения DoS-атаки несколькими методами флуда (HTTP, UDP, TCP). ПО доступно для ОС Windows.
  • OWASP Switchblade. Инструмент для ОС Windows с тремя режимами атаки: SSL Half-Open, HTTP Post, Slowloris.

План действий

Наличие чёткого плана на случай нападения поможет сохранить работоспособность сервиса даже в самых критических условиях. Рекомендуется назначить роль для каждого члена команды, чтобы координированно способствовать работе организации. А также желательно включить в план дополнительные меры по поддержке клиентов, чтобы те не оставались без внимания, пока решаются технические проблемы.

Вывод

Главные отличия DoS от DDoS проявляются в способе технической реализации. DoS-атаки исходят исключительно из одного источника, тогда как DDoS-атаки проводятся с двух и более хостов. Обнаружить многопоточное нападение методом DDoS значительно сложнее, поскольку запросы выглядят «живыми» и вызывают меньше подозрений у системного администратора. При этом DDoS-атаки дают возможность хакеру отправлять большие объёмы трафика в целевую сеть. В случае нападения методом DDoS, хакер использует ботнет — сеть из устройств, находящихся под контролем злоумышленника. DoS-атаки обычно запускаются с помощью скрипта или специального веб-приложения.

Нужна надёжная защита сайта от DoS и DDoS-атак? Выбирайте Eternalhost — хостинг с индивидуальной защитой от DDoS, которая реально работает!

Оцените материал:


[Всего голосов: 0    Средний: 0/5]

Коды ошибок, которые начинаются с цифры 5, говорят о проблемах на стороне сервера. Но это не значит, что советы по их исправлению будут интересны только администраторам выделенных серверов. Узнаем, что нужно делать с пятисотыми ошибками и владельцу VPS, и пользователю виртуального хостинга.

500 Internal Server Error (Внутренняя ошибка сервера)

Серверу не удалось обработать запрос к сайту. Возможных причин для этого может быть много, но сузить их круг можно, восстановив последовательность ваших действий перед сообщением об ошибке. Также изучите само сообщение: комментарий «Internal Server Error» говорит о проблемах с файлом .htaccess, текст «HTTP ERROR 500» — о проблемах со скриптами, а текст «PHP Parse error: syntax error, unexpected» или «Internal Server Error nginx» — о неполадках в CMS.

Ошибка 500

1. Проверьте сайт, созданный с помощью CMS, на наличие проблем с плагинами или ошибок в коде. В этом вам могут лог-файлы. При обнаружении проблемного плагина обновите его или верните прежнюю версию. Если это не помогло, откажитесь от него. Если ошибка произошла после обновления CMS, проведите обновление повторно.

2. Посмотрите файл .htaccess на предмет ошибок в командах. Закомментируйте директиву Options, поставив перед ней решётку: если после этого ошибка 500 перестанет появляться, значит, есть нарушения в синтаксисе и в описании команд.

3. Убедитесь, что права доступа к файлам, папкам и скриптам выставлены верно. Для папок рекомендуется значение 755, для скриптов — 600, а для других файлов — 644. При других вариантах прав доступ к сайту может блокироваться в целях безопасности.

4. Проверьте, всё ли в порядке со скриптами. Возможно, какой-то из скриптов слишком медленный или время ожидания ответа от сервера слишком мало. Если при просмотре лог-файлов выяснится, что какой-то из скриптов незапланированно требует слишком много памяти, оптимизируйте его или удалите. А если обнаружится, что какой-то из скриптов вовсе не запускается, убедитесь, что функция прописана верно, поддерживается сервером и соответствует используемой версии PHP.

5. Отдельно обратите внимание на CGI-скрипты: вероятно, строки в них имеют не те окончания, что исправляется загрузкой скриптов через FTP в режиме ASCII. Также некорректная работа CGI-скриптов может быть причиной ошибок в HTTP-заголовках, что тоже приводит к ошибке 500. Либо же имеются ошибочные директивы, предназначенные для работы со скриптами.

502 Bad Gateway (Ошибочный шлюз)

Разбираться с этой ошибкой нужно лишь тогда, когда она появляется регулярно. А говорит она о перегруженности сервера или о неполадках в его работе, в связи с чем он посылает недопустимые для продолжения работы ответы.

Ошибка 502

1. Перезагрузите страницу. Зайдите на любой другой сайт, которой точно должен работать в данный момент. Это поможет узнать, есть ли у вас доступ к интернету в принципе. Если доступ есть, очистите файлы cookies в браузере, а затем посетите сайт снова.

2. Убедитесь, что на ваш сайт не совершается DDoS-атака. В противном случае обратитесь к хостинг-провайдеру.

3. Если на вашем ресурсе фиксируется значительный рост посещаемости, то подберите более продвинутые условия хостинга, чтобы ошибка не появлялась вновь.

4. Проверьте нагрузку на сервер. Если лимит превышается, необходимо увеличить объём оперативной памяти.

5. Посмотрите настройки сервера. Возможными поводами для появления ошибки 502 могут быть:
• неполадки после установки обновлений;
• превышение лимитов на число обращений к внешним ресурсам и на время ответа сервера;
• некорректные лимиты в файлах конфигурации ini;
• превышение лимита на число php-cgi-процессов;
• недостаточная оптимизация скриптов;
• недостаточная оптимизация запросов;
• неправильная работа модулей (если ошибка возникает при обращении к скриптам конкретного расширения).

6. Если ошибка продолжает появляться и если вы пользуетесь виртуальным хостингом, уточните у хостинг-провайдера, не создают ли другие сайты на сервере чрезмерную нагрузку.

503 Service Unavailable (Сервис недоступен)

Сервер не работает из-за перегрузок. Либо же происходит плановая перезагрузка или отключение сервера: в этом случае вместе с сообщением об ошибке после слов «Retry-After» должно отображаться время, когда сервер вернётся в работу. Если же ошибка 503 появляется часто и не по причине плановых работ, то это говорит о неполадках, которые следует устранить.

Ошибка 503

1. Сначала просто подождите. Возможно, причина в длинной очереди запросов к серверу, что не требует вмешательства.

2. Как и в случае с ошибкой 502, удостоверьтесь, что на сайт не производится DDoS-атака.

3. Если используется связь с удалённым сервером, убедитесь, что она стабильная, а тайм-аут ожидания ответа невысокий.

4. Проверьте, не слишком ли активно посещают ваш сайт поисковые роботы. Если это имеет место быть, ограничьте их активность.

5. Удалите тяжёлые или вовсе ненужные плагины и компоненты.

6. Если возможно, оптимизируйте подгрузку файлов сайта, чтобы снизить число запросов.

7. Организуйте передачу больших статичных файлов напрямую, а не через скрипты.

8. Оптимизируйте почтовую рассылку: распределяйте отправку писем по времени, запускайте рассылку в часы наименьшей нагрузки.

9. Оптимизируйте SQL-запросы, выявите самые медленные из них с помощью лог-файлов.

504 Gateway Timeout (Шлюз не отвечает)

Один из серверов не дождался ответа от вышестоящего сервера, о чём сообщает кодом 504.

Ошибка 504

1. Перезагрузите страницу, убедитесь в стабильности работы сетевых устройств.

2. Как и в предыдущих случаях, проверьте работу скриптов. Важно, чтобы они выполнялись не слишком долго, а внешние соединения происходили успешно.

3. При чрезмерной нагрузке на сервер увеличьте его ресурсы или оптимизируйте сайт.

4. Если возможно, увеличьте время ожидания при использовании nginx как прокси-сервера для Apache. Для этого добавьте эти строки в блоке server в файле nginx.conf:

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;

5. Если у вас нет возможности менять настройки сервера, обратитесь к хостинг-провайдеру.

Также посмотрите ответы на вопросы из нашего раздела FAQ:

  • Отчего возникает ошибка 500?
  • Отчего возникает ошибка 503?
  • Как изменить страницы ошибок 403, 404 и 500?

Кстати, недавно мы в целом рассказали о кодах состояния сервера, к которым относятся в том числе и коды ошибок.

  • 500 Internal Server Error
  • 502 Bad Gatеway
  • 503 Service temporarily unavailable
  • 504 Gateway Timeout
  • Ошибка 505

Коды ошибок 500, 502, 503, 504 говорят о том, что сервер в данный момент не может отобразить запрос из-за внутренней ошибки.

500 Internal Server Error

Самая распространенная внутренняя ошибка сервера. Код генерируется при любой проблеме, не имеющей отношения к остальным ошибкам, поэтому у его появления множество причин.

Некоторые причины появления ошибки 500

  • Ошибки при работе скриптов сайта.
  • Неверные директивы, указанные в файле .htaccess.

В редких случаях ошибка 500 может быть следствием внедрения в файлы сайта вредоносного кода.

Способы устранения ошибки 500 Internal Server Error

Проверьте логи ошибок веб-сервера. На хостинге RU-CENTER они размещены в каталоге /var/log, подробнее в статье. Если ситуация связана с ошибочными директивами в .htaccess, с ошибками в работе CGI-скриптов, с ошибками в файле конфигурации веб-сервера, вы увидите точную причину ошибки в логе веб-сервера и сможете её устранить.

Если ошибка возникает при работе PHP-скрипта, текст ошибки в лог может не попасть. В этом случае нужна дополнительная диагностика.

502 Bad Gatеway

Ошибка означает, что сервер, выступая в качестве шлюза, не смог обработать полученный запрос по техническим причинам, то есть ответы были недопустимыми для продолжения работы. 

Причины появления ошибки 502 

  1. Веб-сервер выключен.
  2. При настройке веб-сервера допущена ошибка в конфигурации.
  3. Для работы сайта недостаточно оперативной памяти или других ресурсов. Например, при DDoS-атаке на сайт, когда на обработку «паразитных» запросов затрачиваются все имеющиеся у веб-сервера ресурсы.
  4. Произошла ошибка при работе с памятью в скрипте, что часто встречается при использовании старых версий PHP.
  5. Время выполнения скрипта превысило установленные на сервере ограничения.

Способы устранения ошибки 502 Bad Gatеway

  1. Проанализируйте текущий уровень общей нагрузки для сервера и в момент возникновения ошибки. На хостинге RU-CENTER это можно сделать в панели управления хостингом в разделе «Ресурсы» — «Статистика». Обратите внимание на пики потребления оперативной памяти.
  2. Проверьте лог-файл веб-сервера (/var/log/error_log). При обнаружении в нём подозрительных сообщений, связанных с выделением оперативной памяти, обратитесь в техподдержку.
  3. Проверьте оптимальность работы используемых на сайте скриптов, оцените скорость обработки запросов. Иногда долгое ожидание может быть связано с обработкой большого объёма данных или с обращением к внешним ресурсам. В этих случаях откажитесь от таких операций или выполните их оптимизацию.

503 Service temporarily unavailable

Ошибка означает, что в течение некоторого времени сервер не сможет обрабатывать запросы из-за технических неисправностей.

Причины появления ошибки 503

  1. Передача большого объёма данных.
  2. Превышено время ожидания загрузки.
  3. Большое количество запросов к серверу.
  4. На хостинге RU-CENTER данный код может выдаваться при обращении к сайту, которого на хостинге не существует.

Способы устранения ошибки 503 Service temporarily unavailable

Если на сайте все процессы (код, скрипты) работают без перебоев, вероятно, причина 503 ошибки в недостаточном количестве ресурсов. Проблему можно решить путем перехода на более производительный тариф или сервер.

504 Gateway Timeout

Код ошибки указывает, что серверу не хватило времени, чтобы получить ответ от другого сервера для завершения операции. Как правило, среднее время загрузки не должно превышать 1-3 секунды.

Причины появления ошибки 504

  1. Долгая обработка запроса скриптами сайта.
  2. Обработка большого количества данных.
  3. В ряде случаев причины появления ошибки 504 могут совпадать с аналогичными для ошибки 502.

Способы устранения ошибки 504 Gateway Timeout

Нужно проверить, что происходит на сервере в момент появления ошибки 504. Если обрабатываются большие объёмы данных или выполняются операции, требующие длительного времени, настройте эти операций не через браузер, а с помощью планировщика заданий или по SSH.

Также для устранения ошибки можно попробовать увеличить в настройках PHP время выполнения скрипта (max_execution_time) и время получения данных (max_input_time).

Ошибка 505

Ошибка 505 появляется при использовании неподдерживаемой браузером версии HTTP. 

Причины появления ошибки 505

  1. Заражение вирусом, который получил контроль над браузером или исходящим трафиком.
  2. Использование устаревшего браузера, не поддерживающего современные версии HTTP.
  3. Сервер не поддерживает новые версии протокола, по которым осуществляется соединение.

Способы устранения ошибки 505 HTTP Version not supported

  1. Поиск вирусов. Вредоносная программа может повредить и удалить файлы, необходимые браузеру для определения состояний. 
  2. Обновление системы. Вы можете избежать не только появления ошибки 505, но и ряда других проблем, используя актуальную версию ОС и/или браузера. Если вы отключили автоматические обновления, рекомендуем скачать и установить их.

Если ошибка 505 возникла при обращении к вашему сайту, проверьте актуальность используемого программного обеспечения на веб-сервере. 

  Туториал: как исправить ошибки сервера

3 Ноября 2015


4 972



В избр.
Сохранено

Впервые столкнувшись с хакерской атакой, блокирующей доступ пользователей к вашему сайту (DDoS-атака), владельцы интернет-проектов не знают, как на нее реагировать и справляться с возникшей проблемой.

К сожалению, подобные проблемы встречаются довольно часто, и рано или поздно каждый интернет-ресурс может им подвергнуться. Эта статья подготовит вас к непредвиденным ситуациям, а также послужит руководством к действию по устранению проблемы.

Почему сайты подвергаются атакам?

Прежде всего проанализируйте ситуацию и попытайтесь понять причины атаки на сайт. Существуют проекты, которые априори чаще других подвергаются DDoS-атакам — это сайты online-игр, инвестиционные проекты и т.д. Если ваш интернет-ресурс входит в зону риска, мы рекомендуем заранее позаботиться о его усиленной защите.

Различают несколько видов причин для атаки:

  • Недобросовестная конкуренция служит поводом для атак на крупные коммерческие компании и организации. Если ваш ресурс является коммерческим, то убедитесь, что это не атака конкурирующих компаний. Такие атаки на сайт прекращаются с завершением оплаченного “объема” атаки.
  • Развлечение. Как ни странно, DDoS-атаки могут служить развлечением для начинающих злоумышленников, поэтому иногда причиной проблемы может быть хулиганство со стороны хакеров без конкретной цели нанести урон компании. Такие атаки завершаются, когда хакеру становиться скучно атаковать ресурс.
  • Идеологические причины. Такие атаки обычно ведутся на какие-либо ресурсы организаций, действия которых не устраивают хакеров. В этом случае действия хакера могут иметь принципиальный характер и продолжаться очень долго.
  • Вымогательство или шантаж. Таким атакам чаще всего подвергаются популярные интернет-ресурсы. В этом случае злоумышленник связывается с владельцем сайта с требованием предоставить выкуп в обмен на прекращение атаки. Вступать в переговоры не рекомендуется, так как легкие и средние атаки вы сможете отбить без существенных затрат. Крупные же атаки длятся не более 1 дня в виду их высокой стоимости. Поэтому маловероятно, что причиной крупных атак может стать желание обогатиться за ваш счет.

Типы DDoS-атаки

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

Обычно атаки на сайт делятся на два уровня:

  • Флуд. Это атака начального или среднего уровня, которую легко можно отразить, разместив сайт на выделенных ресурсах и поменяв настройки сервера.
  • DDoS-атака высокого уровня. Подобные атаки можно отразить только внешними программно-аппаратными средствами защиты.

Клиенты VPS/VDS-хостинга могут определить уровень атаки самостоятельно, временно отключив веб-сервер и проанализировав его логи. Если у вас нет навыков администрирования, то можно обратиться к специалистам.

Пользователи выделенных серверов могут узнать об атаке на сайт и ее сложности от своего хостера, если у них есть договор на оказание услуг администрирования. В другом случае, клиенту сервера необходимо самостоятельно провести аналитику и определить уровень атаки.

Зная детали атаки, вам будет проще решить, какие именно меры следует принимать для решения проблемы.

Устранение возникшей проблемы

Чаще всего клиенты хостинга сталкиваются именно с флудом. В этом случае веб-сервер перегружается множеством одновременных запросов со сравнительно небольшого числа IP-адресов.

Для решения проблемы хостинг-компания может предложить вам переход на VDS или выделенный сервер, где можно настроить фильтрацию проблемных запросов, либо блокировать IP-адреса бот-машин. Рекомендуем перед переходом уточнить у хостера, готов ли он выполнить соответствующую настройку защиты атаки на сервере и на каких условиях.

Если вы столкнулись с атакой высокого уровня, то нужно принимать решение, сопоставив стоимость отражения атаки и ущерб от простоя. Иногда проще переждать атаку на сайт в течение суток-двух, оставив на сайте заглушку с сообщением о временной недоступности проекта и кодом 503 для ботов поисковых систем, а не отбивать атаку сразу же. Нужно помнить о том, что стоимость действительно серьезных атак выше ваших затрат на защиту, а значит, атака может прекратиться раньше, чем вам кажется.

Выберите стабильный хостинг с качественной поддержкой

Время на прочтение
21 мин

Количество просмотров 23K

О чем длиннопост?

Привет читающим этот длиннопост. Давно ничего не писал на Хабре, но 2022 год выдался достаточно непростым в плане DDoS-атак. По роду деятельности, я столкнулся с большим количеством вопросов о том, что такое DDoS-атаки, нужно ли с ними бороться (WTF??? конечно, не нужно, пусть все лежит нужно). Зрелым матерым спецам здесь вряд ли будет интересно.

Хочу сразу отметить, что некоторым читателям, погруженным в банковскую тематику, текст может показаться знакомым. И да, он в каком-то виде был выпущен для узкого круга лиц, но поскольку уже прошло достаточно времени, а данные в целом не устарели и автор этого поста был, в основном, автором этого текста, то я решил выложить его на хабр в несколько сокращенном и подредактированном варианте, дабы давать ссылку на этот пост, когда опять начнут задавать вопросы, либо для своих студентов.

Пользуясь случаем, хочу поблагодарить Qrator Labs — они не принимали участие в подготовке этого поста, но внесли очень большой вклад в оригинальный текст, известный в вышеупомянутых узких кругах. Без них он бы не родился :)

Краткий пересказ всех частей

Поскольку материала набралось достаточное количество, решил разнести в несколько постов, чтобы проще было читать.

Часть 1: То, что вы читаете сейчас. Самый-самый базис: что такое DDoS-атака и основные типы атак, с примерами

Часть 2: Защита от DDoS-атак. Почитать тут.

DDoS — и что это?

«… А меня из школы дедос забирает, и че…» (с) — цитата пацана из старого видео «что вы знаете об информационной безопасности» (интересующимся на ютуб)

DoS (от англ. Denial of Service: отказ в обслуживании) – атака на вычислительную систему, целью которой является отказ системы в обслуживании, то есть создание таких условий, при которых легальные пользователи системы не могут получить доступ к системным ресурсам либо этот доступ существенно затруднен.

DDoS (Distributed DoS: распределённый DoS) – разновидность DoS-атаки, реализующая отказ системы в обслуживании посредством исчерпания тех или иных вычислительных ресурсов самой атакуемой системы или внешних сервисов, от функционирования которых зависит работа атакуемой системы (транзитные операторы связи, источники данных и т. д.).

Целью DoS/DDoS-атак является блокировка возможности сервиса адекватно и своевременно реагировать на запросы настоящих, легитимных клиентов, вплоть до полной невозможности работы с сервисом. Причинами атаки могут быть: недобросовестная конкуренция; хактивизм — когда атакующий в большей степени мотивирован идеологическими разногласиями; вымогательство; шпионаж; политические мотивы в качестве самовыражения и т.д., а также маскировка работ по проникновению в инфраструктуру (отвлечение внимания на факт атаки, чтобы скрыть какие-то иные шумные «работы» по проникновению).

Какой он вообще бывает, дедос

DDoS — он такой, разный. Но все ж особой фантастики тут нет, достаточно прозаичные вещи. От L3 (сетевой уровень) до L7 (прикладной). Обычно классифицируют так:

1.      Атаки на сетевые ресурсы (Network floods на L3 и L4), целью которых является исчерпание канальной ёмкости как самой атакуемой системы, так и её поставщиков доступа в сеть Интернет, а также транзитных операторов связи. Исторически, это самый простой для атакующего вариант, поскольку обычно не требовалась установка TCP-соединения с компьютером жертвы. Примерами таких атак являются ICMP- и UDP- flood. Классический пример L3 атаки — манипуляции с использованием протокола ICMP: Ping of Death, Ping Flood, Smurf Attack. Сюда же можно отнести различные манипуляции с APR: например, при ARP Spoofing или ARP Poisoning вполне можно вызвать отказ в обслуживании (thnx @WhiteChemist за вылавливание ошибки в этом разделе).

В отдельный подкласс обычно выделяют, так называемые, Amplification-атаки. Их отличительной особенностью является использование промежуточных уязвимых компьютеров для увеличения «плеча» атаки в 2-3 раза. Amplification-атаки классифицируются в зависимости от протокола, используемого для усиления мощности атаки: NTP Amplification, DNS Amplification, SSDP Amplification и подобное.

2.      Атаки на инфраструктуру, целью которых является нарушение нормального (штатного) функционирования промежуточного и служебного оборудования: маршрутизаторов, межсетевых экранов и т.д. В качестве таких атак могут выступать SYN flood, Route Loop DDoS и пр. Кривые анонсы BGP, которые были на слуху, тоже можно отнести к такого типа атакам. Хотя и не всегда они были вызваны злонамеренными действиями, а объяснялись банальной криворукостью.

3.      Атаки на транспортный уровень (L4), в частности, с использованием различных этапов TCP-соединения. Это связано с тем, что протокол TCP достаточно сложен с вычислительной точки зрения и допускает эксплуатацию атакующим ряда узких мест, например, алгоритмов установления и закрытия TCP-соединения. В качестве примеров такой атаки могут выступать SYN Flood, ACK Flood, TCP Connection Flood и подобные. Ну, в целом это наиболее распространенная атака в силу простоты ее реализации.

4.      Атаки на встроенные механизмы протоколов SSL/TLS. Эти протоколы ещё более сложны, чем TCP, поэтому атакующий может ставить своей целью воздействие на них. Например, можно говорить об атаках на сам процесс установки SSL/TLS взаимодействия (TLS handshake), отправке «мусорных» пакетов серверу или злоупотреблении функциями согласования ключевой информации и подобное.

5.      Атаки на сервис прикладного уровня (L7-атаки). Эти атаки взаимодействуют непосредственно с приложением, причём надо отметить, что в последние годы это воздействие распространяется не только на «классический» HTTP, но и на HTTPS, DNS, VoIP, SMTP, FTP и другие прикладные протоколы. В случае c протоколом HTTP, атакующий может дополнительно маскировать свои деструктивные действия внутри SSL/TLS-трафика, что значительно усложняет противодействие. Такие атаки могут подразделяться на следующие виды:

a.      Медленные атаки малого объема, так называемые «Low and Slow». Этот вариант представляет опасность в силу малой заметности и продолжительного времени нарастания зловредного воздействия. Обычно здесь речь идет о воздействии на приложения и иногда на серверные ресурсы;

b.      Атаки, основанные на значительном числе произвольных «мусорных» запросов. Целью таких атак обычно является мощный «кумулятивный» удар по системе, вследствие которого она долгое время не сможет обрабатывать запросы от легитимных пользователей. Характерным примером является атака типа WordPress Pingback DDoS. Хотя эта атака однозначно обнаруживается и фильтруется по типовым HTTP-заголовкам, тем не менее, она может составлять серьёзную проблему для атакуемого ресурса, поскольку полоса такой атаки может достигать десятков Гбит/с и в состоянии превысить показатели по доступности канальной ёмкости и производительности HTTP-сервера;

c.      Атаки, имитирующие поведение легитимного пользователя. В отличие от предыдущей разновидности, такие атаки используют большое количество неагрессивных ботов, что затрудняет анализ в режиме реального времени. Зачастую эти механизмы используют «узкие места» или уязвимости в web-приложениях и остальной инфраструктуре. Это может привести к несанкционированному доступу к системе, потерям и несанкционированным изменениям данных. Для обнаружения «узких мест» атакующий может использовать сканирование сети – действие, которое, на первый взгляд, представляется безвредным, поскольку само по себе не приносит урона, но на самом деле позволяет получить информацию, которая поможет в дальнейшем атаковать систему.

Примеры DDoS-атак разных уровней

Ниже я попробовал описать основные DDoS-атаки, которые часто встречаются для L3, L4, L7. Наиболее интересные, конечно, атаки на уровне приложения: они, по моему мнению, более разрушительные (поскольку нарушают логику работы веб-приложения, что приводит к неправильным результатам работы веб-приложения либо вообще упущению прибыли организации) и с ними тяжелей бороться (стандартные «чистилки» трафика L3, L4 тут выручат далеко не всегда, нужно ставить Web Application Firewall (WAF) и настраивать правила детекта и блокировки запросов уже на нем). Атаки L3, L4 обычно приводят просто к недоступности сервиса (он не отвечает вообще либо отвечает ошибками 5хх). Атаки L7 не всегда приводят к появлению таких ошибок.

Что такое L3/L4/L7, про которые часто упоминается в тексте?

L3 / L4 / L7 — названия уровней представления по сетевой модели ISO/OSI. Не вдаваясь в дискуссии, нужна/не нужна эта модель, жива она или мертва — в данном случае это не суть — опишу кратко:

  • L3 — сетевой уровень. Это где происходит трансляция сетевых адресов в физические адреса, на нем работает ряд протоколов маршрутизации и прочих служебных

  • L4 — транспортный уровень. Тут живут протоколы UDP и TCP, уровень отвечает за передачу данных от отправителя к получателю

  • L7 — прикладной уровень. Тут уже живут протоколы HTTP, HTTPS и работают веб-приложения — то, что видите в браузере

Если нужно больше узнать об ISO/OSI — то вэлкам в Википедию: https://ru.wikipedia.org/wiki/Сетевая_модель_OSI#Сетевой_уровень

Что есть ошибки 5хх?

Ошибки 5хх — серия кодов ошибок состояния HTTP, которые отдает сервер, когда не может обработать запрос пользователя. Чаще всего отдает 500 — «внутренняя ошибка сервера» или 502 «Bad Gateway» / 503 «Сервер недоступен». Для интересующихся, полный список можно прочитать в Википедии: https://ru.wikipedia.org/wiki/Список_кодов_состояния_HTTP#5xx

Атаки сетевого уровня (L3)

ICMP flood

Принцип работы ICMP flood достаточно прост. На узел жертвы отправляется простой эхо-запрос (ICMP Echo Request), который требуется обработать и отправить эхо-ответ; при ответе потребуется задействовать больше ресурсов по сравнению с обычным пакетом, хотя сам запрос по объему небольшой.

В результате, при относительно небольшом трафике, можно добиться перегрузки по количеству пакетов. Атакуемый узел начинает работать нестабильно, терять пакеты.

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

Усиление атаки достигается использованием бот-сети («ботнета»), когда запросы приходят с тысяч узлов. Кроме этого, можно отправить запрос по широковещательному адресу с поддельным адресом-источника пакета (так называемые Smurf-атаки). Отправка эхо-запроса ICMP на широковещательный адрес заставляет все узлы в этой сети отправить эхо-ответы на подмененный адрес, который и является адресом жертвы, то есть происходит усиление атаки (Amplification). Схема на рисунке ниже.

UDP flood

Принципы атаки схожи с предыдущим вариантом и заключаются в отправке множества UDP-пакетов на определённые номера портов атакуемого узла, который для каждого полученного пакета должен идентифицировать соответствующее приложение, отправив ответное ICMP-сообщение «адресат недоступен» или, в худшем случае, передать данные UDP-пакета пользовательскому приложению и оттранслировать полученный ответ.

В итоге, атакуемая система окажется перегруженной, поэтому после начала атаки зловредный трафик может быстро захватить всю доступную полосу пропускания, не оставив ничего легитимному трафику, что и является целью атакующего – не дать работать легитимным пользователям. Подменив IP‑адреса источников в UDP-пакетах, атакующий может перенаправить поток ICMP-ответов и тем самым сохранить работоспособность атакующих узлов, а также обеспечить их маскировку.

Следует отметить, что ни ICMP flood, ни UDP flood не используют уязвимостей системы, то есть мы имеем дело со стандартными принципами работы стека протокола TCP/IP.

Кроме того, существуют методы, позволяющих значительно (в 10-1000 раз) усилить атаку, например, направив исходный трафик атаки не непосредственно на атакуемый узел, а на уязвимый промежуточный сервер, обеспечивающий усиление (Amplification).

Атаки на транспортный уровень

Атаки на транспортном уровне сети обычно эксплуатируют основные «узкие места» в реализации протокола TCP при установке сессии. Обычно это либо этап установления сессии, либо атака на таблицу соединений протокола TCP. Ниже разберем основные типы атак.

SYN flood

Атака типа SYN flood эксплуатирует особенность стека протоколов TCP/IP – потребность установки TCP-сессии. В отличие от UDP, где это не требуется, при TCP-взаимодействии необходимо, чтобы отправитель «договорился» с получателем перед тем, как что-то будет отправлено. Для этого используется механизм three-way handshake – «тройного рукопожатия», или трехэтапного подтверждения. Принцип его работы выглядит следующим образом:

1.      Клиент посылает пакет с TCP-сегментом SYN (Synchronize);

2.      Сервер отвечает пакетом с сегментом SYN-ACK (Synchronize-Acknowledge);

3.      Клиент подтверждает прием пакета SYN-ACK пакетом ACK (Acknowledge).

На этом процедура установления соединения завершается. Но, что существенно, сервер обязан выделить все необходимые ресурсы в момент получения SYN-сегмента от клиента, до отсылки ответного пакета SYN-ACK.

Установив фальшивый IP-адрес отправителя и отправив серверу большое количество SYN-пакетов. Генерация корректного SYN-сегмента – алгоритмически тривиальная задача. Получая пакет SYN, сервер должен выделить часть своих ресурсов для установления нового соединения. В конце концов все ресурсы сервера будут исчерпаны, что приведет к невозможности обслуживания новых запросов. Цель атакующего достигнута.

Для борьбы с атакой типа SYN flood обычно используются механизмы SYN Cookies и/или SYN Proxy. Суть их в том, что в момент получения SYN‑сегмента сервер не выделяет ресурсы, а кодирует всю необходимую информацию вместе с секретным токеном и отправляет её в ответном сегменте SYN-ACK. Легитимный клиент, устанавливающий соединение со своего реального IP-адреса, получит этот сегмент и перешлет эту информацию обратно в сегменте ACK, после чего сервер действительно выделит ресурсы и установит соединение. Атакующий, подделывая IP-адреса, закодированные данные не получит и корректное подтверждение отправить не сможет, таким образом, соединение не установится.

Сложность использования этих методов состоит в том, что для генерации SYN Cookies необходимы адекватные текущему уровню атак вычислительные мощности и сетевые ресурсы с пропускной способностью от 100 Гбит/с и более. Защищённая инфраструктура должна обладать этими ресурсами в обязательном порядке.

TCP Connection Flood

Другое «узкое место» протокола TCP – таблица соединений. Используя бот-сеть, атакующий может генерировать с реальных IP-адресов бот-сети TCP-соединения (каждое из которых фактически будет стоить ему двух тривиальных TCP-пакетов), заполняя таблицу TCP-соединений атакуемого сервера, а также расходуя ресурсы на заполнение нижестоящих таблиц (например, таблица отслеживания соединений – connection tracking – при NAT) и вышестоящие (как число файловых дескрипторов HTTP-сервера) ресурсы.

Для более успешного противодействия такой атаке обычно ограничивают таймауты на установление и поддержание (в состоянии бездействия, idle time) TCP-соединений. Как правило, оптимальное значение – около 60 секунд, но оно может варьироваться в зависимости от задач, возложенных на сервер.

В общем случае, если TCP-соединение клиента с сервером действительно установлено и тем самым IP-адрес клиента аутентифицирован, для борьбы с подобного рода атаками на автомат (тут под словом «автомат» подразумевается математическая модель функционирования протокола ТСР, представленная в виде конечного автомата — для желающих изучить подробнее — ссылка на википедию) TCP и таблицу соединений используются эвристические методы применительно к данному конкретному ресурсу и его типовым параметрам взаимодействия по протоколу TCP. В случае обнаружения клиентов, чьё поведение значительно отличается от типичного, например, числом открываемых в единицу времени соединений, медленными запросами и/или ответами, нестандартными переходами по автомату TCP-соединения и пр. – такой IP-адрес заносится в «чёрный список» и в дальнейшем – или, по крайней мере, в течение некоторого промежутка времени – соединения с этого IP-адреса не обрабатываются.

Необходимо при этом учитывать, что на сегодняшний день массовое установление большого числа TCP-соединений с поддельного IP-адреса в общем случае практически сложнореализуемо, однако установление одного spoofed-соединения с определённого IP-адреса – за продолжительный промежуток времени – в ряде случаев технически реализуемо. Таким образом, «чёрные списки» являются удобным механизмом для фильтрации DDoS-атак, основанных на протоколе TCP (или на протоколах верхнего уровня, использующих TCP на транспортном уровне). Однако к «чёрным» и «белым» спискам как методам авторизации пользователей на ресурсе следует относиться с определенной долей осторожности.

В то же время, категорически нельзя использовать «чёрные списки» для фильтрации любых атак, не задействующих открытые TCP-соединения, например, для борьбы с SYN flood или ICMP flood. Использование «чёрных списков» для этой цели может привести к недоступности сервиса для легитимных пользователей, а в дальнейшем – к исчерпанию памяти и других вычислительных ресурсов средства фильтрации трафика.

Атаки, основанные на протоколе SSL/TLS

HTTPS Flood – атака на Secure Socket Layer (SSL): с ростом популярности этого метода шифрования, используемого в различных сетевых протоколах, он также стал мишенью для атакующих. Концептуально SSL или его современная версия – TLS – используется поверх TCP/IP, обеспечивая безопасность соединений путем шифрования и аутентификации сторон.

DDoS-атаки, связанные с протоколом SSL/TLS, принимают различные формы: они могут быть нацелены на механизм взаимодействия при установлении SSL/TLS-сессии и выражаться в отправке «мусорных» данных на сервер SSL/TLS или эксплуатации определенных функций, связанных с процессом согласования ключей шифрования SSL/TLS. Такого рода атаки обычно считаются «асимметричными», так как сервер расходует на обработку атаки с использованием SSL/TLS гораздо больше ресурсов, чем требуется для ее запуска.

Например, атака THC-SSL-DoS использует малое количество пакетов для приведения в состояние «отказ в обслуживании» даже достаточно мощного сервера. В ходе этой атаки сначала инициируется SSL взаимодействие для установки сессии, а затем немедленно запрашивается процедура повторного согласования ключа шифрования.

Этот инструмент постоянно повторяет запрос на повторное согласование до тех пор, пока все ресурсы сервера не будут исчерпаны. Атакующие предпочитают запускать атаки с использованием SSL, потому что установка каждой сессии SSL требует примерно в 15 раз больше ресурсов на стороне сервера, чем на стороне клиента. Фактически, один обыкновенный домашний персональный компьютер при определенных условиях может вывести из строя целый web‑сервер, использующий SSL, а несколько компьютеров могут вывести из строя всю серверную часть (даже целую ферму) защищенных онлайн сервисов.

Атаки на web-приложения

Наиболее распространенными DDoS-атаками, нацеленными на приложения, являются разновидности атак на протокол HTTP. В литературе для обозначения таких атак обычно используется обобщенный термин HTTP flood. Обычно для их осуществления используется бот-сеть из зараженных устройств, но в ряде случаев в состав атакующих вполне могут входить и добровольцы, например, когда речь идет о целенаправленной хактивистской деятельности.

В атаке могут использоваться любые HTTP-запросы, но обычно используют GET и POST. Атака также может осуществляться с использованием шифрованных TLS-сессий. Конечной целью атаки является исчерпание ресурсов web‑приложения. Тут надо понимать, что «железных» ресурсов сервера еще может оставаться много — и незабитого канала тоже может (но не обязательно) остаться много. Но узким местом станет именно само веб-приложение: из-за особенностей конфигурации или в силу других причин оно либо просто перестанет обслуживать легальные запросы, либо просто упадет.

Атака осуществляется следующим образом: отправляется небольшой по объему HTTP-запрос, в ответ на который сервер должен прислать куда больший объем информации. Несомненно, канал сервера во много раз «шире» канала, который использует атакующий, но ведь и отдавать информации приходится намного больше; кроме того, не составит труда подменить IP-адрес источника.

Следовательно, ответные пакеты сервера не вызовут эффекта отказа в обслуживании атакующего узла, более того, таких узлов может быть огромное количество.

Угрозы от этой атаки — исчерпание канальной емкости и отказ на уровне обработки запросов, так как у любого HTTP-сервера, а тем более – web-приложения или ресурсов, обеспечивающих его работу (система авторизации, СУБД и др.), есть свой предел производительности. В результате, легальный запрос не будет обработан, а пользователь не получит своей порции цифрового контента.

HTTP-атаки с использованием шифрования (HTTPS Flood)

В настоящее время практически все разработчики используют в своих приложениях SSL/TLS для шифрования трафика и обеспечения сквозной безопасности при передаче данных. Любая DDoS-атака на приложение, допускающее шифрование, может быть запущена поверх трафика, зашифрованного SSL/TLS, что создает определенные трудности в ее идентификации. Большинство технологий противодействия DoS атакам не производят реальной проверки трафика SSL, так как это требует расшифровки зашифрованных данных.

WordPress Pingback DDoS

Определенная популярность есть у Reflection DDoS-атак уровня L7 (приложений). Наиболее характерным примером такой атаки является WordPress Pingback DDoS, которую и рассмотрим.

Основной её принцип заключается в следующем. Чрезвычайно распространённый web-фреймворк WordPress до определенных версий предоставлял публичное API, позволяющее запросить любую web-страницу с любого удалённого HTTP-сервера без авторизации. Таким образом, отправив небольшой (до 400 байт) запрос на уязвимый WordPress-сервер, можно было инициировать загрузку любой крупной страницы (или файла, если это возможно без авторизации) с атакуемого сервера на уязвимый сервер.

В ходе такой атаки определённая нагрузка ложится и на уязвимый WordPress-сервер, однако, в силу того, что в нападении участвует несколько тысяч WordPress-серверов и атака разделяется между ними примерно равномерно, нагрузка на каждый отдельный сервер обычно не является критичной и может быть даже не замечена системным администратором на фоне ежедневной средней загрузки. Основная же доля нагрузки приходится именно на атакуемый ресурс.

Интересно, что эта атака, несмотря на то, что WordPress давно исправил уязвимость была популярна и в 2021, и 2022 г, поскольку в Интернете находилось порядка нескольких миллионов WordPress-серверов, пригодных для эксплуатации в атаке типа WordPress Pingback DDoS, и, как минимум, в ряде инцидентов принимало участие одновременно до 350 тыс. уязвимых серверов. Так как в большинстве случаев фреймворк WordPress развёрнут не на рабочей станции (как обычный модуль бот-сети), а на сервере с неплохой производительностью и канальной ёмкостью, то атаки типа Pingback DDoS на канальном уровне достигали уровня в 10 Гбит/с и более.

В тоже время, атака типа WordPress Pingback DDoS, организуемая на HTTP-ресурс без шифрования, достаточно легко идентифицируется и несложно фильтруется при наличии достаточной производительности и канальной ёмкости (от 20 Гбит/с).

Важной особенностью Pingback-атаки является то, что уязвимый сервер в состоянии запрашивать произвольные крупные web-страницы как по HTTP, так и по HTTPS, то есть внутри зашифрованной SSL/TLS-сессии. Это приводит к невозможности фильтрации такой Reflection-атаки при отсутствии адекватных механизмов анализа зашифрованного трафика. Для борьбы с Pingback DDoS в общем случае требуется раскрытие текстовой информации, содержащейся внутри TLS-сессий.

В целом, не надо думать, что Pingback-атаки характерны только для WordPress. Они могут вылезти на любом приложении, которое позволяет перенаправить запрос (в силу своей архитектурной особенности или ошибок конфигурации). Поэтому, очень важно, при настройке веб-приложений максимально минимизировать возможности запросов для неавторизованных пользователей — особенно это касается той части, которая отвечает за обработку API.

Full Browser Stack-атаки и имитация поведения пользователя

Одной из самых сложной для идентификации и фильтрации разновидностью атаки уровня приложения являются, так называемые, FBS‑атаки (от англ. «Full Browser Stack» – полноценная среда браузера). В этом случае для генерации паразитных запросов используются не обычные легковесные библиотеки, имитирующие браузер, а полноценный экземпляр браузера, способный корректно формировать запросы (либо качественный эмулятор), загружать с атакуемого web-сервера изображения и CSS-стили, выполнять HTTP-переадресацию и JavaScript-код. Такую атаку очень сложно отследить и классифицировать, анализируя каждый пакет или каждый запрос в отдельности, поскольку каждый отдельный запрос полностью легитимен и идентичен пользовательскому.

Для борьбы с такими атаками недостаточно тривиальных проверок наподобие HTTP-редиректов и JavaScript-проверок. Используются, как правило, нестрогие статистические алгоритмы, анализ истории поведения пользователей, поиск закономерностей и мониторинг состояния защищаемого сервера. Подобный анализ, как правило, чрезвычайно вычислительно сложен и подразумевает хранение больших объёмов данных с возможностью быстрого поиска по ним. Таким образом, решение по фильтрации атак уровня приложения (L7-атак) должно быть в состоянии работать с большими объёмами данных в реальном времени.

Следует отметить, что подобные атаки необязательно будут организованы именно посредством бот-сети. В ряде случаев они проводятся хактивистами, т.е. живыми людьми. В этом случае распространённое решение с демонстрацией изображений или решения головоломок типа CAPTCHA также может быть неэффективным, хотя, безусловно, создающее дополнительные трудности атакующему.

Медленные атаки малого объема (Slow and Low)

DDoS атаки не всегда подразумевают большой объем трафика и бот-сети из сотен узлов. Иногда вполне достаточно даже одного компьютера, чтобы остановить работу сервиса. Существует целый класс атак, направленных на приложения, то есть работающих на L7 (прикладном) уровне модели ISO/OSI, использующих минимум ресурсов. Зачастую бывает вполне достаточно и одного компьютера, используются стандартные принципы работы прикладных протоколов. Но их негативное воздействие оказывается весьма значительным, вплоть до полной остановки работы сервисов.

Речь идет о медленных атаках небольшого объема («Slow and Low»). Ниже приведены некоторые представители подобного рода атак.

Are You Dead Yet / RUDY

Принцип этой атаки базируется на стандартном поведении протокола HTTP при обработке запросов POST.

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

Когда легитимный пользователь заполняет web-форму, на сайт отправляется всего несколько пакетов, после чего сессия с web-сервером закрывается, ресурсы освобождаются. Сервер готов обслуживать запросы других пользователей. Атакующий, использующий специальный инструмент, например, RUDY (сам инструмент достаточно древний и стал именем нарицательным для подобных инструментов, которые разрабатываются и в 2022), действует иначе. Отправляемые на web-сервер данные разбиваются на множество мелких пакетов, каждый из которых содержит лишь небольшой объем данных, например, один байт. Запросы на сервер отправляются со случайным интервалом, что не дает возможность серверу сразу закрыть сессию, поскольку передача данных еще не завершена.

Несколько тысяч таких запросов в течение нескольких минут приводят к тому, что сервер не может отвечать на запросы легитимных пользователей.

Но в данном случае не требуется большой объем трафика или значительное количество пакетов, чтобы вывести ресурс из строя. Все запросы абсолютно легитимны, здесь имитируется поведение системы с медленным каналом связи. Цель атакующего достигнута – работать с сайтом невозможно. Подобная уязвимость характерна практически для любого сайта. Поэтому для отсечки таких атак целесообразно использовать очистку трафика.

SlowLoris

Если этот раздел читают «старички в ИБ», то тут наверное они усмехнутся: LOIC, HOIC, HULK, SLOWLORIS — это набор скрипткиддисов, не так ли? :) И зачем раскапывать стюардессу. Но как бы ни так — и инструменты, и методы внезапно ожили в 2021 / 2022 — пруф, к примеру, отчет Radware (ссылка). Поэтому желательно знать принципы таких атак.

Атака SlowLoris, также как и предыдущая, базируется на стандартном поведении протокола HTTP при обработке запросов. Для закрытия HTTP сессии необходимо прислать соответствующую последовательность.

Собственно говоря, так и поступает легитимный пользователь. Правильный запрос на получение данных с web-сервера (Get Request) обычно состоит из одного пакета и завершается специальной последовательностью в конце для разрыва сессии.

 Суть атаки заключается в следующем: используя специальный инструмент SlowLoris или подобные, атакующий генерирует множественные подключения к целевому web-серверу, при этом соединения не закрываются, поскольку в запросе будет отсутствовать соответствующая последовательность символов. В результате, ресурсы сервера будут исчерпаны и легитимные пользователи не смогут подключиться. Цель атакующего достигнута – работать с сайтом невозможно. Большой объем трафика или значительное количество пакетов не требуется, чтобы вывести ресурс из строя.

В целом, не сказать, что атака является достаточно серьезной проблемой, если вы озаботились защитой от DDoS-атак. Но для слабо защищенных веб-серверов она может стать проблемой, несмотря на хорошую детектируемость.

DNS flood

Другим характерным примером атаки на приложения, не связанным напрямую с протоколом HTTP, является DNS flood. Организация его не составляет большого труда, что, собственно, и послужило залогом его большого распространения.

Как известно, серверы DNS служат для разрешения имен в IP-адреса. Основная задача DNS сервера – найти требуемый адрес, чтобы компьютер смог обратиться на искомый сайт. Атака построена на принципах взаимодействия клиента и сервера DNS. Атакующий, используя бот-сеть, посылает множество запросов на сервер жертвы. Сервер перегружен и не сможет разрешать имена по запросам легитимных пользователей, и следовательно, они не смогут обратиться на требуемый им ресурс, поскольку не смогли разрешить его имя в адрес (при этом, в подавляющем большинстве случаев можно обратиться на сервер по его IP-адресу).

Усиление атаки достигается за счет того, что DNS использует в качестве транспортного протокол UDP, который не требует установки соединения, то есть без использования «троекратного рукопожатия» (three-way handshake), не аутентифицирует удалённую сторону и работает без сохранения состояния соединения.  Это дает возможность атакующему свободно подменять IP-адрес отправителя в запросе к DNS-серверу на поддельный адрес, а также направлять ответы других DNS-серверов в адрес его жертвы (DNS Reflection).

Наверное, на этом стоит закончить длинное описание атак, но нужно упомянуть OWASP (Open Web Application Security Project) — это сообщество ведет периодически обновляемый список OWASP Top 10, в котором перечислены наиболее опасные уязвимости в системе безопасности web-приложений. Использование уязвимостей из этого списка зачастую приводит к различным нарушениям в работе web-приложения либо к его полной остановке, что по сути является DoS.

Пара слов о векторах атак

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

В чем опасность сканирования применительно к DDoS?

Сканирование сети — и использование сетевых сканеров — означает разведку сети. Обычно стараются достичь следующих целей (одной или нескольких):

  • Определение находящихся в сети узлов (сетевое сканирование)

  • Выявление открытых портов и функционирующих сервисов (сканирование портов)

  • Выявление известных уязвимостей веб-приложений (сканирование безопасности)

Имея на руках эти данные, атакующий может скорректировать свои усилия: например, зная, что какая-то уязвимость приводит к падению условного веб-сервера (что расценивается как отказ в обслуживании, DoS) — он может перестать вас атаковать HTTP-флудом, а использовать эту уязвимость (смена вектора атаки).

Сканирование бывает активным и пассивным. Активному сканированию вы можете противостоять, но пассивному противостоять сложнее, т.к. в этом сценарии атакующий не проводит непосредственно сканирование вашей инфраструктуры, а получает информацию о ней из других источников, например, Shodan.

К сожалению, некоторые компании, специализирующиеся на защите от DDoS-атак, не рассматривают сканирование в качестве атаки и не считают нужным ему противостоять. Действительно, на первый взгляд, никакого вреда системе нет. Тем не менее, с таким подходом трудно согласиться: как уже говорилось выше, практически всегда сканирование предваряет атаку, позволяя атакующему выяснить, какие сервисы работают в целевой системе, версию сервисов, версию операционных систем, назначение систем и сервисов и впоследствии подготовить и провести целенаправленную атаку.

В тоже время, само по себе сканирование не всегда является злонамеренным действием, все зависит от его целей. Службы информационной безопасности или сотрудники ИТ вполне могут прибегнуть к сканированию для выявления уязвимостей инфраструктуры и выполнения иных задач.

Возможны сочетания нескольких способов злонамеренного воздействия одновременно. Достаточно нескольких минут для изменения воздействия на атакуемые ресурсы, а одного вида атаки, который успешно осуществлен – для остановки работы целевой системы. На рисунке ниже сделана попытка показать, на какую цель направлен какой вектор:

В качестве заключения

В этом длиннопосте я постарался рассмотреть основные типы DDoS-атак и что это вообще такое — DDoS. Надеюсь, будет полезно тем, кто только начинает в этом разбираться. Спасибо всем дочитавшим, а в следующем длиннопосте рассмотрим, как защищаться от DDoS и как выбрать решение.

  • Ошибка при двусторонней печати
  • Ошибка при генерации кода для свойства cursor
  • Ошибка при генерации карты rimworld multiplayer
  • Ошибка при вычислении 7 букв
  • Ошибка при выставлении счета