Обнаружение ddos. Четыре способа защиты от DDoS-атак

Учитывая, что DDoS-атаки становятся все более частыми, настало время, чтобы рассмотреть основные способы защиты и борьбы с ними.

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

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

Например, если сайт банка может обслуживать одновременно 1000 человек, а злоумышленник отправляет 10000 ложных запросов в секунду. При этом ни один из реальных пользователей зайти на сайт не смогут. Существует множество причин осуществления DDoS атак: вымогательство, активизм, соперничество конкурентов бренда, а также простая скука.

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

Простейшими типами атак считаются DDOS атаки Layer 3 и 4 (IP и udp/TCP в стеке OSI). Получается, что на сервер поступает столько “флуда”, что он просто не может больше обрабатывать реальный сетевой трафик, так как нападение посылает множество данных через сетевое подключение к цели. Более сложной считается атака из 7 layer, которая “имитирует” реальных пользователей, и пытается использовать веб-приложения, искать контент на сайте или производить другие сложные действия (использовать кнопку “Добавить на карту” или другие функции ресурса).

Существует четыре основных вида защиты от DDoS нападений:Делать защиту от DDoS самостоятельно.

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

Специализированное оборудование.

Это похоже на «Do It Yourself» в том, что предприятие делает всю работу, чтобы остановить атаку, но вместо того, чтобы полагаться на скрипты или существующий брандмауэр, они приобретают и развертывают специализированные устройства для предотвращения DDoS. Это специализированные аппаратные средства, которые расположены в центре обработки данных предприятия перед обычными серверами и маршрутизаторами и специально созданы для обнаружения и фильтрации вредоносного трафика. Однако есть некоторые фундаментальные проблемы с этими устройствами:

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

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

Они не могут справиться с объемными атаками. Маловероятно, что у предприятия будет достаточно пропускной способности для обработки очень больших DDoS-атак, происходящих сегодня. Эти аппаратные средства не приносят пользы, когда атака превышает емкость сети.

Интернет-провайдер (ISP).

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

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

Одиночная защита провайдера: Большинство предприятий сегодня имеют несколько хостов в двух или более сетевых провайдерах, чтобы удалить единую точку отказа провайдера. Наличие двух или больше провайдеров – лучшая практика для увеличения времени безотказной работы. Решения по предотвращению DDoS-решений для ISP защищают только их сетевые ссылки, а не другие ссылки, которые у вас есть, поэтому теперь вам нужны службы по отражению DDoS от разных провайдеров, удваивая ваши затраты.

Отсутствие защиты от Облака. Как и в вышеперечисленном случае, многие веб-приложения в наши дни разделены между центрами данных, принадлежащими предприятиям, и облачными службами, такими как Amazon AWS, GoGrid, Rackspace и т. д. Поставщики услуг Интернета не могут защитить трафик от этих облачных сервисов.

Провайдер защиты Облачных серверов.

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

Провайдеры защиты Облачных серверов имеют следующие преимущества:

Экспертиза: как правило, у этих провайдеров есть инженеры и исследователи в области сетей и безопасности, которые отслеживают новейшую тактику DDoS, чтобы лучше защитить своих клиентов.

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

Несколько типов оборудования для предотвращения DDoS атаки чрезвычайно сложны. Существует потребность в нескольких уровнях фильтрации, чтобы быть в состоянии идти в ногу с последними угрозами. Облачные провайдеры должны использовать множество технологий, как коммерческих (COTS), так и собственных запатентованных методов защиты от нападения.

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

Многие популярные ресурсы подвергаются DDoS-атакам с той или иной целью.

Если являетесь владельцем популярных или стремительно растущих ресурсов, следует задумать о безопасности своего детища.

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

Cодержание:

Понятие

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

В итоге учитель сдавался, так и не начав новую тему. ДоС мало чем отличается от этой элементарной схемы.

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

То есть комплекс действий злоумышленников нацелен на то, чтобы ресурса сервера перестало хватать на обработку запросов пользователей или она была затруднена.

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

Как организовать

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

Во втором случае владельцы ПК не всегда догадаются, чем занята их машина в данный момент.

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

Она ждёт своей очереди, и после отправки определённой команды подключает компьютер пользователя к масштабной атаке. Этот ПК называется зомби.

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

Защититься от DDoS на 100% не может никто и нигде, ведь любой имеет свои недостатки, плюс его можно взломать.

Да и человеческий фактор в таком случае играет далеко не второстепенную роль: правильная настройка оборудования и программного обеспечения – залог успешной работы.

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

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

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

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

Причины

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

  • Самообразование, развлечение – начинающие взломщики могут попытаться навредить небольшому ресурсу с целью попрактиковаться в организации DDoS или проверить свои силы на деле.
  • Личные мотивы – может быть местью кому-либо или какой-нибудь организации, например, после облав на группы хакеров веб-узлы американской спецслужбы ФБР и некоторых правительственных ведомств несколько недель не функционировали.

Схожими были и последствия блокировки крупного украинского файлообменника ex.ua.

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

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

  • Финансовая выгода – злоумышленник требует определённую пользу от владельца веб-ресурса, как правило, финансовую. Такими поступками известны группы ezBTC и RedDoor.
Разновидности

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

Переполнение интернет-канала или флуд.

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

SYN-флуд – переполнение вычислительных возможностей системы ложными запросами. После установки соединения система под каждый запрос выделяет определённое количество физических ресурсов сервера.

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

Захват аппаратных ресурсов – схож с предыдущим типом, его цель – загрузить центральный процессор жертвы на 100%.

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

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

Smurf-атака. Самый серьёзный алгоритм ввиду большой вероятности того, что в обслуживании атакованной машины будет отказано.

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

UDP-флуд – Жертве посылаются echo-команды, IP атакующего изменяется на адрес атакованного, который вынужден принимать собственные запросы в большом количестве и так до занятия ложными ответами всей полосы.

Переполнение вычислительных мощностей – посылание запросов, которые для обработки требуют много . Когда ЦП будет загружен на 100%, пользователи доступ к сайту не получат.

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

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

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

При правильной конфигурации DNS вероятность успешной атаки опускается до ноля.

Существуют платные ресурсы для осуществления киберпреступлений, как vDOS.

Он предоставляет услуги всем, не спрашивая имени пользователя и цели эксплуатации сервиса.

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

Разберёмся, как это делается.

Определяем DDos

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

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

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

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

Такие люди помогут выполнить пару манипуляций в настройках для отражения атаки. Средства их выявления относятся к нескольким категориям:

  • статистика – изучение активности пользователей на ресурсе;
  • сигнатуры – качественный анализ входящего и исходящего трафика;
  • комбинация первой и второй .
Защита: общие понятия

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

Да и то, порой лишь снизят эффективность атаки. Закрытие дыр в программном коде – более эффективная мера борьбы с зомби-компьютерами и сетями ботнетов.

И оставлять её на потом ни в коем случае не нужно.

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

Выигрываем время

В зависимости от типа злодеяния различают разные алгоритмы предотвращения прерывания обслуживания.

  • Для предотвращения HTTP-флуда повышаем число одновременных соединений с базой , а если атака развивается, сбрасываем эти соединения.
  • ICMP-флуд – отключаем ответы на ICMP ECHO запросы.
  • UDP-флуд – также отключаем данный вид запросов или ограничиваем их допустимое количество.
  • SYN-флуд – если определили его наличие, уменьшаем очередь полуоткрытых соединений TCP до 1-3-х.

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

  • Своевременное обновление ПО на сервере и движка сайта.
  • Наличие плана реагирования на появление внештатной ситуации.
  • Учёт вероятности DDoS ещё на стадии написания/заказа программного кода, его тщательное тестирование.
  • Отсутствие доступа к интерфейсу администрирования с внешней сети.
  • Эксплуатация тестов на проникновение и критические проблемы OWASP Top 10 Vulnerability.
  • Если аппаратные средства обеспечения безопасности недоступны, предусмотрите услугу программной защиты по требованию путём внесения корректировок в схему маршрутизации.
  • Эксплуатация сетей доставки контента CDN. Они позволяют распределить трафик между несколькими серверами для уменьшения таймингов и повышения скорости доступа.
  • Установка файрвола Web Application Firewall на веб-приложения , который будет мониторить трафик, приходящий на сайт, и проверять его подлинность, что с большой вероятностью исключит ложные запросы.
  • Не используем Apache. При эксплуатации Апачи устанавливайте кэширующий прокси nginx, но и он не спасёт от Slowloris – самого опасного способа DDoS. Лучше остановитесь на защищенном HTTPS-сервере.
  • Воздействие на источник проблемы. Если знаете обидчика, посредством законодательства или иных рычагов давления вынудите его прекратить противозаконные действия. Для этого даже специальные фирмы существуют.
Безопасность DNS

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

Хотя в последнее время и они эволюционируют, а потому борорьба с такими программами становится сложнее.

Модуль отслеживает мусорные запросы, ведь тело бота почти никогда (но случаи становятся всё более частыми) не несёт в себе движка JavaScript. Он становится фильтром в случае атаки Layer 7.

Модуль проверяет:

  • действительно ли бот является браузером, за который себя выдаёт:
  • на самом ли деле он поддерживает JS;
  • умеет ли тот переадресовывать.

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

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

Инструмент распространяется бесплатно и поставляется с файлами конфигурации для различных случаев.

С недостатков testcookie обладает следующими:

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

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

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

Географическое положение

Современные движки сайтов позволяют отсеивать пользователей по географическим признакам.

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

Точность определения геометок, бан пользователей, и прочие недостатки – временная плата за работоспособность сайта в дальнейшем.

Отладчик

Использование профайлера Xdebug позволит увидеть самые тяжелые запросы.

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

Блокирование подозрительного трафика

Используем межсетевой экран или ACL списки для блокировки подозрительного трафика.

Такое программное обеспечение способно закрыть доступ к сайту определённым категориям запросов, но отделить реальный трафик от «плохого» не в силах.

Обратная DDoS атака

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

Часто такой процесс позволяет прекратить нападки и даже загрузить сервер атакующего до его вывода из строя.

Сервисы

Для бизнеса даже однодневный простой сайта приносит убытки и ущерб репутации его владельцу.

В таких ситуациях финансовые вложения в стабильное функционирование ресурса, как правило, окупаются с лихвой.

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

Akamai

После приобретения Prolexic, которая работала в сфере защиты от DDoS, компания стала лидером рынка средств для поиска уязвимостей веб-ресурсов.

Совмещение двух технологий предоставляет гарантированную безопасность любого сайта.

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

Arbor

Предоставляет высококлассную защиту от ДДоС для дата-центров программным и аппаратным путём, причем всё оборудование монтируется специалистами фирмы у заказчика.

Благодаря сервису облачной фильтрации трафика с возможность выбора пропускной способности сети/сайта Arbor – одно из наиболее популярных решений на рынке России.

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

  • присутствуют гибкие решения для всех случаев;
  • размещение защитного механизма без покупки оборудования (удалённо или виртуально);
  • большой выбор продуктов.
Cloudflare

Распространяется в двух пакетах: базовый и профи, однако для комплексных мер в сфере бизнеса придётся приобрести расширенные пакет, функционирующий на трёх (3,4,7) уровнях базовой модели.

Из достоинств: фиксированная цена за весь период эксплуатации, каким бы мощным ни было нашествие ботов.

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

  • базовая защита на небольшой срок бесплатна;
  • масса дополнительных возможностей;
  • невысокая фиксированная цена.
Radwarewww.radware.com/Products/DefensePro/

Разработчик сетевого оборудования для защиты сайтов и прочих сетевых ресурсов. Также компания предоставляет услуги информационной безопасности, в первую очередь от DDoS. Установки DefensePro являются одними из самых производительных – более 200 Мбит/с для бюджетной модели.

защитить от брутфорса и ботов.

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

MYRA

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

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

Qrator

Эффективность превыше всего.

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

Из недостатков:

  • возможности личного кабинета никакие;
  • WAF приобретается отдельно;
  • высокая цена и дополнительная оплата трафика;
  • из CDN провайдеров поддерживается лишь Ngenix.
МФИ Софт

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

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

Для безопасности корпоративной сетевой инфраструктуры применяется «Скаут» - универсальный инструмент для анализа и поиска угроз на скорости до 1 Тб/с и фильтрации трафика при пропускной способности чуть более 600 Мб/с.

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

Работа с инструментами осуществляется через веб-интерфейс (в браузере), а масса средств для анализа и визуализации результатов и вовремя выявлять проблемы.

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

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

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

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

Для защиты IIS серверов можно воспользоваться (программным) решением от компании Microsoft, но, зная щедрость этой компании, можно догадаться, что они тоже далеко не бесплатные.

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

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

Если же вас «заказали», или вы не послушались предыдущего совета, будьте начеку - аппаратные ресурсы веб-сервера обязательно должны иметь некоторый резерв производительности, а распределенные и дублирующие системы - построены максимально эффективно. Без понимания принципов работы DDoS, эффективную защиту построить просто невозможно. Для осуществления DDoS-атак используется большое количество компьютеров, зараженных вредоносным кодом. Эти компьютеры объединяются в ботнеты (“bot-net” - сети зомби-машин), которые по приказу злоумышленника осуществляют DDoS-атаки, причем владельцы компьютеров зачастую даже не подозревают об этом.

Мы , как хостинг-компания, сталкиваемся с DDoS-атаками на сайты наших клиентов ежедневно и имеем некоторый опыт в борьбе с ними. Как было сказано выше, универсальных мер защиты попросту нет, но атаку все же можно отразить. Предположим, что на некий сайт (пусть это будет domain.ru) идет DDoS атака. По логам видно, что большое количество GET запросов идет на главную страницу. В большинстве таких случаев, ботов можно обмануть воспользовавшись javascript-редиректом. К примеру:


window.location = "domain.ru/index.php"

Как результат - с каждым разделом, который атакован GET запросом прямо в корень, размер файла получится всего несколько байт, что гораздо лучше, чем когда бот соприкасается c ~50-100кб страницей и при этом подтягивает ~5-10 SQL запросов. Легитимные же пользователи, у которых не отключен javascript в браузере, перенаправляются на index.php.

Но есть одно большое НО – поисковые-боты тоже не оборудованы js-интерпретаторами и точно так же, как и атакующие боты, будут утопать в js редиректе. Можно, воспользовавшись такими UNIX утилитами как tcpdump или netstat, написать небольшой скрипт, который будет считать кол-во коннектов с определенного IP адреса, и банить его.

Определить бота можно, например, проверив его host. Небольшой пример элементарного скрипта по блокировке IP, которые создают много коннектов к серверу (данный вариант проверялся на Centos 5.6):

Запись в crond

*/1 * * * * netstat -an | grep tcp | awk "{print $5}" | cut -d: -f1 | sort -n | uniq -c > /var/log/ip.list

Данная команда создает список с кол-вом подключений и самим IP, пример:

10 209.232.223.117
1 209.85.161.191
2 212.113.39.162
1 212.78.78.78
61 213.142.213.19
5 213.151.240.177
1 210.169.67.225
1 216.179.59.97

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

#!/bin/bash
connects=150 /dev/null 2>&1
then
// если в имени хоста есть слово google (у гугло-ботов это слово присутствует)
if echo $hostname | grep "google" > /dev/null 2>&1
then
// то добавляем его в белый список и делаем запись в лог
echo "$ip" >> /etc/white.list
echo `date +%H:%M_%d-%m-%Y` $ip "- ADDED TO WHITE LIST AS $hostname SEARCH BOT IP" >> /var/log/ddos_log
else
// если не гугл - блочим
route add $hostname reject
fi
fi
fi
done < /var/log/ip.list

Давайте также посмотрим и на настройки параметров Apache, которые помогут избежать некоторых проблем вызванных DDoS атакой.

TimeOut – указывайте как можно меньшее значение для данной директивы (веб сервера, который подвержен DDoS атаке).

KeepAliveTimeout директива – также нужно снизить ее значение или полностью выключить.

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

Директивы LimitRequestBody, LimitRequestFields, LimitRequestFieldSize, LimitRequestLine, LimitXMLRequestBody должны быть тщательно настроены на ограничение потребления ресурсов вызванных запросами клиентов.

Убедитесь, что вы используете директиву AcceptFilter (на ОС которые поддерживают ее). По умолчанию она включена в конфигурации Apache httpd, но для своей работы может потребовать пересборку с новыми настройками ядра вашей ОС (*nix, *bsd).

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

Защитится от DDoS можно и на программном уровне. В этом вам поможет бесплатный скрипт – DDoS Deflate. С его помощью можно легко избавится от детского флуда и DDoS. Скрипт использует команду «netstat» для обнаружения DDoS и флуда, после чего блокирует IP адреса вредителей с помощью фаервола iptables или apf. Но не стоит расслабляться и считать, что слабый DDoS не сможет нанести ущерб вашему серверу. Возьмем, к примеру, что атакующих зомби-машин всего 10-50, но все они с толстыми каналами, а Вы, как назло, уехали в командировку, или у вас десятки (а то и сотни) серверов, и Вы не успеваете физически “мониторить” их все. В таком случае, даже небольшое количество машин сможет “зафлудить” канал или заставить выйти из строя вебсервер apache, mysql, etc. Другое дело, когда администратор круглосуточно “мониторит” сервер и с легкостью обнаруживает атаки. Но такое бывает крайне редко, поэтому нужно подключить систему сигнализации, а процесс блокировки атакующих зомби-машин - автоматизировать.

P.S. Статья была прислана мне юзером . Вопросы по статье, рекомендации по следующим статьям и интересующим темам и вопросам просьба присылать ему.

Спасибо за внимание!

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

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

Правильные ингредиенты

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

1. Отказаться от Windows Server

Практика подсказывает, что сайт, который работает на винде (2003 или 2008 - неважно), в случае DDoS обречен. Причина неудачи кроется в виндовом сетевом стеке: когда соединений становится очень много, то сервер непременно начинает плохо отвечать. Мы не знаем, почему Windows Server в таких ситуациях работает настолько отвратно, но сталкивались с этим не раз и не два. По этой причине речь в данной статье будет идти о средствах защиты от DDoS-атак в случае, когда сервер крутится на Linux. Если вы счастливый обладатель относительно современного ядра (начиная с 2.6), то в качестве первичного инструментария будут выступать утилиты iptables и ipset (для быстрого добавления IP-адресов), с помощью которых можно оперативно забанить ботов. Еще один ключ к успеху - правильно приготовленный сетевой стек, о чем мы также будем говорить далее.

2. Расстаться с Apache

Второе важное условие - отказ от Apache. Если у вас, не ровен час, стоит Apache, то как минимум поставьте перед ним кеширующий прокси - nginx или lighttpd. Apache"у крайне тяжело отдавать файлы, и, что еще хуже, он на фундаментальном уровне (то есть неисправимо) уязвим для опаснейшей атаки Slowloris, позволяющей завалить сервер чуть ли не с мобильного телефона. Для борьбы с различными видами Slowloris пользователи Apache придумали сначала патч Anti-slowloris.diff, потом mod_noloris, затем mod_antiloris, mod_limitipconn, mod_reqtimeout... Но если вы хотите спокойно спать по ночам, проще взять HTTP-сервер, неуязвимый для Slowloris на уровне архитектуры кода. Поэтому все наши дальнейшие рецепты основываются на предположении, что на фронтенде используется nginx.

Отбиваемся от DDoS

Что делать, если пришел DDoS? Традиционная техника самообороны - почитать лог-файл HTTP-сервера, написать паттерн для grep (отлавливающий запросы ботов) и забанить всех, кто под него подпадет. Эта методика сработает... если повезет. Ботнеты бывают двух типов, оба опасны, но по-разному. Один целиком приходит на сайт моментально, другой - постепенно. Первый убивает все и сразу, зато в логах появляется весь полностью, и если вы их проgrepаете и забаните все IP-адреса, то вы - победитель. Второй ботнет укладывает сайт нежно и осторожно, но банить вам его придется, возможно, на протяжении суток. Любому администратору важно понимать: если планируется бороться grep’ом, то надо быть готовым посвятить борьбе с атакой пару дней. Ниже следуют советы о том, куда можно заранее подложить соломки, чтобы не так больно было падать.

3. Использовать модуль testcookie

Пожалуй, самый главный, действенный и оперативный рецепт этой статьи. Если на ваш сайт приходит DDoS, то максимально действенным способом дать отпор может стать модуль testcookie-nginx , разработанный хабрапользователем @kyprizel. Идея простая. Чаще всего боты, реализующие HTTP-флуд, довольно тупые и не имеют механизмов HTTP cookie и редиректа. Иногда попадаются более продвинутые - такие могут использовать cookies и обрабатывать редиректы, но почти никогда DoS-бот не несет в себе полноценного JavaScript-движка (хотя это встречается все чаще и чаще). Testcookie-nginx работает как быстрый фильтр между ботами и бэкендом во время L7 DDoS-атаки, позволяющий отсеивать мусорные запросы. Что входит в эти проверки? Умеет ли клиент выполнять HTTP Redirect, поддерживает ли JavaScript, тот ли он браузер, за который себя выдает (поскольку JavaScript везде разный и если клиент говорит, что он, скажем, Firefox, то мы можем это проверить). Проверка реализована с помощью кукисов с использованием разных методов:

  • «Set-Cookie» + редирект с помощью 301 HTTP Location;
  • «Set-Cookie» + редирект с помощью HTML meta refresh;
  • произвольным шаблоном, причем можно использовать JavaScript.

Чтобы избежать автоматического парсинга, проверяющая кукиса может быть зашифрована с помощью AES-128 и позже расшифрована на клиентской стороне JavaScript. В новой версии модуля появилась возможность устанавливать кукису через Flash, что также позволяет эффективно отсеять ботов (которые Flash, как правило, не поддерживают), но, правда, и блокирует доступ для многих легитимных пользователей (фактически всех мобильных устройств). Примечательно, что начать использовать testcookie-nginx крайне просто. Разработчик, в частности, приводит несколько понятных примеров использования (на разные случаи атаки) с семплами конфигов для nginx.

Помимо достоинств, у testcookie есть и недостатки:

  • режет всех ботов, в том числе Googlebot. Если вы планируете оставить testcookie на постоянной основе, убедитесь, что вы при этом не пропадете из поисковой выдачи;
  • создает проблемы пользователям с браузерами Links, w3m и им подобными;
  • не спасает от ботов, оснащенных полноценным браузерным движком с JavaScript.

Словом, testcookie_module не универсален. Но от ряда вещей, таких как, например, примитивные инструментарии на Java и C#, он помогает. Таким образом вы отсекаете часть угрозы.

4. Код 444

Целью DDoS’еров часто становится наиболее ресурсоемкая часть сайта. Типичный пример - поиск, который выполняет сложные запросы к базе. Естественно, этим могут воспользоваться злоумышленники, зарядив сразу несколько десятков тысяч запросов к поисковому движку. Что мы можем сделать? Временно отключить поиск. Пускай клиенты не смогут искать нужную информацию встроенными средствами, но зато весь основной сайт будет оставаться в работоспособном состоянии до тех пор, пока вы не найдете корень всех проблем. Nginx поддерживает нестандартный код 444, который позволяет просто закрыть соединение и ничего не отдавать в ответ:

Location /search { return 444; }

Таким образом можно, например, оперативно реализовать фильтрацию по URL. Если вы уверены, что запросы к location /search приходят только от ботов (например, ваша уверенность основана на том, что на вашем сайте вообще нет раздела /search), вы можете установить на сервер пакет ipset и забанить ботов простым shell-скриптом:

Ipset -N ban iphash tail -f access.log | while read LINE; do echo "$LINE" | \ cut -d""" -f3 | cut -d" " -f2 | grep -q 444 && ipset -A ban "${L%% *}"; done

Если формат лог-файлов нестандартный (не combined) или требуется банить по иным признакам, нежели статус ответа, - может потребоваться заменить cut на регулярное выражение.

5. Баним по геопризнаку

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

  • Подключите к nginx GeoIP-модуль (wiki.nginx.org/HttpGeoipModule).
  • Выведите информацию о геопривязке в access log.
  • Далее, модифицировав приведенный выше шелл-скрипт, проgrepайте accesslog nginx’а и добавьте отфутболенных по географическому признаку клиентов в бан.
  • Если, к примеру, боты по большей части были из Китая, то это может помочь.

    6. Нейронная сеть (PoC)

    Наконец, вы можете повторить опыт хабрапользователя @SaveTheRbtz, который взял нейронную сеть PyBrain, запихал в нее лог и проанализировал запросы (habrahabr.ru/post/136237). Метод рабочий, хотя и не универсальный:). Но если вы действительно знаете внутренности своего сайта - а вы, как системный администратор, должны, - то у вас есть шансы, что в наиболее трагических ситуациях такой инструментарий на основе нейронных сетей, обучения и собранной заранее информации вам поможет. В этом случае весьма полезно иметь access.log до начала DDoS"а, так как он описывает практически 100% легитимных клиентов, а следовательно, отличный dataset для тренировки нейронной сети. Тем более глазами в логе боты видны не всегда.

    Диагностика проблемы

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

    7. Юзайте профайлер и отладчик

    Для наиболее распространенной платформы создания веб-сайтов - PHP + MySQL - узкое место можно искать с помощью следующих инструментов:

    • профайлер Xdebug покажет, на какие вызовы приложение тратит больше всего времени;
    • встроенный отладчик APD и отладочный вывод в лог ошибок помогут выяснить, какой именно код выполняет эти вызовы;
    • в большинстве случаев собака зарыта в сложности и тяжеловесности запросов к базе данных. Здесь поможет встроенная в движок базы данных SQL-директива explain.

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

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

    8. Анализируйте ошибки

    Проанализируйте объем трафика, время ответа сервера, количество ошибок. Для этого смотрите логи. В nginx время ответа сервера фиксируется в логе двумя переменными: request_time и upstream_response_time. Первая - это полное время выполнения запроса, включая задержки в сети между пользователем и сервером; вторая сообщает, сколько бэкенд (Apache, php_fpm, uwsgi...) выполнял запрос. Значение upstream_response_time чрезвычайно важно для сайтов с большим количеством динамического контента и активным общением фронтенда с базой данных, им нельзя пренебрегать. В качестве формата лога можно использовать такой конфиг:

    Log_format xakep_log "$remote_addr - $remote_user [$time_local] " ""$request" $status $body_bytes_sent " ""$http_referer" "$http_user_agent" $request_time \ $upstream_response_time";

    Это combined-формат с добавленными полями тайминга.

    9. Отслеживайте количество запросов в секунду

    Также посмотрите на число запросов в секунду. В случае nginx вы можете примерно оценить эту величину следующей shell-командой (переменная ACCESS_LOG содержит путь к журналу запросов nginx в combined-формате):

    Echo $(($(fgrep -c "$(env LC_ALL=C date --date=@$(($(date \ +%s)-60)) +%d/%b/%Y:%H:%M)" "$ACCESS_LOG")/60))

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

    10. Не забывайте про tcpdump

    Многие забывают, что tcpdump - это обалденное средство диагностики. Я приведу пару примеров. В декабре 2011-го был обнаружен баг в ядре Linux, когда оно открывало TCP-соединение при выставленных флагах TCP-сегмента SYN и RST. Первым багрепорт отправил именно системный администратор из России, чей ресурс был атакован этим методом, - атакующие узнали об уязвимости раньше, чем весь мир. Ему, очевидно, такая диагностика помогла. Другой пример: у nginx есть одно не очень приятное свойство - он пишет в лог только после полной отработки запроса. Бывают ситуации, когда сайт лежит, ничего не работает и в логах ничего нет. Все потому, что все запросы, которые в данный момент загружают сервер, еще не выполнились. Tcpdump поможет и здесь.

    Он настолько хорош, что я советовал людям не использовать бинарные протоколы до того, как они убедятся, что все в порядке, - ведь текстовые протоколы отлаживать tcpdump"ом легко, а бинарные – нет. Однако сниффер хорош как средство диагностики - в качестве средства поддержания production"а он страшен. Он легко может потерять сразу несколько пакетов и испортить вам историю пользователя. Смотреть его вывод удобно, и он пригодится для ручной диагностики и бана, но старайтесь ничего критичного на нем не основывать. Другое любимое многими средство «погрепать запросы» - ngrep - вообще по умолчанию пытается запросить в районе двух гигабайт несвопируемой памяти и только потом начинает уменьшать свои требования.

    11. Атака или нет?

    Как отличить DDoS-атаку, например, от эффекта рекламной кампании? Этот вопрос может показаться смешным, но эта тема не менее сложная. Бывают довольно курьезные случаи. У одних хороших ребят, когда они напряглись и основательно прикрутили кеширование, сайт слег на пару дней. Выяснилось, что в течение нескольких месяцев этот сайт незаметно датамайнили какие-то немцы и до оптимизации кеширования страницы сайта у этих немцев со всеми картинками грузились довольно долго. Когда страница начала выдаваться из кеша моментально, бот, у которого не было никаких тайм-аутов, тоже начал собирать их моментально. Тяжело пришлось. Случай особенно сложный по той причине, что если вы сами изменили настройку (включили кеширование) и сайт после этого перестал работать, то кто, по вашему и начальственному мнению, виноват? Вот-вот. Если вы наблюдаете резкий рост числа запросов, то посмотрите, например, в Google Analytics, кто приходил на какие страницы.

    Тюнинг веб-сервера

    Какие еще есть ключевые моменты? Конечно, вы можете поставить «умолчальный» nginx и надеяться, что у вас все будет хорошо. Однако хорошо всегда не бывает. Поэтому администратор любого сервера должен посвятить немало времени тонкой настройке и тюнингу nginx.

    12. Лимитируем ресурсы (размеры буферов) в nginx

    Про что нужно помнить в первую очередь? Каждый ресурс имеет лимит. Прежде всего это касается оперативной памяти. Поэтому размеры заголовков и всех используемых буферов нужно ограничить адекватными значениями на клиента и на сервер целиком. Их обязательно нужно прописать в конфиге nginx.

    • client_header_buffer_size_ _ Задает размер буфера для чтения заголовка запроса клиента. Если строка запроса или поле заголовка запроса не помещаются полностью в этот буфер, то выделяются буферы большего размера, задаваемые директивой large_client_header_buffers.
    • large_client_header_buffers Задает максимальное число и размер буферов для чтения большого заголовка запроса клиента.
    • client_body_buffer_size Задает размер буфера для чтения тела запроса клиента. Если тело запроса больше заданного буфера, то все тело запроса или только его часть записывается во временный файл.
    • client_max_body_size Задает максимально допустимый размер тела запроса клиента, указываемый в поле «Content-Length» заголовка запроса. Если размер больше заданного, то клиенту возвращается ошибка 413 (Request Entity Too Large).
    13. Настраиваем тайм-ауты в nginx

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

    • reset_timedout_connection on; Помогает бороться с сокетами, зависшими в фазе FIN-WAIT.
    • client_header_timeout Задает тайм-аут при чтении заголовка запроса клиента.
    • client_body_timeout Задает тайм-аут при чтении тела запроса клиента.
    • keepalive_timeout Задает тайм-аут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера. Многие боятся задавать здесь крупные значения, но мы не уверены, что этот страх оправдан. Опционально можно выставить значение тайм-аута в HTTP-заголовке Keep-Alive, но Internet Explorer знаменит тем, что игнорирует это значение
    • send_timeout Задает тайм-аут при передаче ответа клиенту. Если по истечении этого времени клиент ничего не примет, соединение будет закрыто.

    Сразу вопрос: какие параметры буферов и тайм-аутов правильные? Универсального рецепта тут нет, в каждой ситуации они свои. Но есть проверенный подход. Нужно выставить минимальные значения, при которых сайт остается в работоспособном состоянии (в мирное время), то есть страницы отдаются и запросы обрабатываются. Это определяется только тестированием - как с десктопов, так и с мобильных устройств. Алгоритм поиска значений каждого параметра (размера буфера или тайм-аута):

  • Выставляем математически минимальное значение параметра.
  • Запускаем прогон тестов сайта.
  • Если весь функционал сайта работает без проблем - параметр определен. Если нет - увеличиваем значение параметра и переходим к п. 2.
  • Если значение параметра превысило даже значение по умолчанию - это повод для обсуждения в команде разработчиков.
  • В ряде случаев ревизия данных параметров должна приводить к рефакторингу/редизайну сайта. Например, если сайт не работает без трехминутных AJAX long polling запросов, то нужно не тайм-аут повышать, а long polling заменять на что-то другое - ботнет в 20 тысяч машин, висящий на запросах по три минуты, легко убьет среднестатистический дешевый сервер.

    14. Лимитируем соединия в nginx (limit_conn и limit_req)

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

    Предположим, что на сайте есть разделы с говорящими названиями /download и /search. При этом мы:

    • не хотим, чтобы боты (или люди с чересчур ретивыми рекурсивными download-менеджерами) забили нам таблицу TCP-соединений своими закачками;
    • не хотим, чтобы боты (или залетные краулеры поисковых систем) исчерпали вычислительные ресурсы СУБД множеством поисковых запросов.

    Для этих целей сгодится конфигурация следующего вида:

    Http { limit_conn_zone $binary_remote_addr zone=download_c:10m; limit_req_zone $binary_remote_addr zone=search_r:10m \ rate=1r/s; server { location /download/ { limit_conn download_c 1; # Прочая конфигурация location } location /search/ { limit_req zone=search_r burst=5; # Прочая конфигурация location } } }

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

    Обратите внимание на параметр 10m в примере. Он означает, что на расчет данного лимита будет выделен словарь с буфером в 10 мегабайт и ни мегабайтом более. В данной конфигурации это позволит отслеживать 320 000 TCP-сессий. Для оптимизации занимаемой памяти в качестве ключа в словаре используется переменная $binary_remote_addr, которая содержит IP-адрес пользователя в бинарном виде и занимает меньше памяти, чем обычная строковая переменная $remote_addr. Нужно заметить, что вторым параметром к директиве limit_req_zone может быть не только IP, но и любая другая переменная nginx, доступная в данном контексте, - например, в случае, когда вы не хотите обеспечить более щадящий режим для прокси, можно использовать $binary_remote_addr$http_user_agent или $binary_remote_addr$http_cookie_myc00kiez - но использовать такие конструкции нужно с осторожностью, поскольку, в отличие от 32-битного $binary_remote_addr, эти переменные могут быть существенно большей длины и декларированные вами «10m» могут скоропостижно закончиться.

    Тренды в DDoS
  • Непрерывно растет мощность атак сетевого и транспортного уровня. Потенциал среднестатистической атаки типа SYN-флуд достиг уже 10 миллионов пакетов в секунду.
  • Особым спросом в последнее время пользуются атаки на DNS. UDP-флуд валидными DNS-запросами со spoof’ленными IP-адресами источника - это одна из наиболее простых в реализации и сложных в плане противодействия атак. Многие крупные российские компании (в том числе хостинги) испытывали в последнее время проблемы в результате атак на их DNS-серверы. Чем дальше, тем таких атак будет больше, а их мощность будет расти.
  • Судя по внешним признакам, большинство ботнетов управляется не централизованно, а посредством пиринговой сети. Это дает злоумышленникам возможность синхронизировать действия ботнета во времени - если раньше управляющие команды распространялись по ботнету в 5 тысяч машин за десятки минут, то теперь счет идет на секунды, а ваш сайт может неожиданно испытать мгновенный стократный рост числа запросов.
  • Доля ботов, оснащенных полноценным браузерным движком с JavaScript, все еще невелика, но непрерывно растет. Такую атаку сложнее отбить встроенными подручными средствами, поэтому Самоделкины должны с опасением следить за этим трендом.
  • готовим ОС

    Помимо тонкой настройки nginx, нужно позаботиться о настройках сетевого стека системы. По меньшей мере - сразу включить net.ipv4.tcp_syncookies в sysctl, чтобы разом защитить себя от атаки SYN-flood небольшого размера.

    15. Тюним ядро

    Обратите внимание на более продвинутые настройки сетевой части (ядра) опять же по тайм-аутам и памяти. Есть более важные и менее важные. В первую очередь надо обратить внимание на:

    • net.ipv4.tcp_fin_timeout Время, которое сокет проведет в TCP-фазе FIN-WAIT-2 (ожидание FIN/ACK-сегмента).
    • net.ipv4.tcp_{,r,w}mem Размер приемного буфера сокетов TCP. Три значения: минимум, значение по умолчанию и максимум.
    • net.core.{r,w}mem_max То же самое для не TCP буферов.

    При канале в 100 Мбит/с значения по умолчанию еще как-то годятся; но если у вас в наличии хотя бы гигабит в cекунду, то лучше использовать что-то вроде:

    Sysctl -w net.core.rmem_max=8388608 sysctl -w net.core.wmem_max=8388608 sysctl -w net.ipv4.tcp_rmem="4096 87380 8388608" sysctl -w net.ipv4.tcp_wmem="4096 65536 8388608" sysctl -w net.ipv4.tcp_fin_timeout=10

    16. Ревизия /proc/sys/net/**

    Идеально изучить все параметры /proc/sys/net/**. Надо посмотреть, насколько они отличаются от дефолтных, и понять, насколько они адекватно выставлены. Linux-разработчик (или системный администратор), разбирающийся в работе подвластного ему интернет-сервиса и желающий его оптимизировать, должен с интересом прочитать документацию всех параметров сетевого стека ядра. Возможно, он найдет там специфические для своего сайта переменные, которые помогут не только защитить сайт от злоумышленников, но и ускорить его работу.

    Не бояться!

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

    Если вы не знаете, что такое DDoS атаки, мы предлагаем вам сначала прочитать страницу о DDoS атаках .


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

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


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


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


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



    Попробуйте поработать с нами и купить один из наших планов по защите от DDoS нажав кнопку ниже.

    Похожие статьи