0

Защита от ddos атак сервера

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

Введение

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

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

Что такое современная ddos атака

DDoS расшифровывается как Distributed Denial of Service — атака на информационную систему с целью довести ее до такого состояния, когда она не сможет обслуживать запросы клиентов, для которых она работает. Ддос атака может проводиться как на отдельный сайт, так и на сервер или сеть, обслуживающую масштабную информационную систему (например, ЦОД).

В чем же сущность ddos атаки? По своей сути это распределенная DoS (Denial of Service) атака. Отличие DoS от DDoS как раз в том, что DoS это просто одиночная атака, а DDoS это масштабная атака, состоящая из множества дос атак, выполняемых из разных мест.

Виды ддос атак

Для проведения ддос атак чаще всего используют ботнет. От размера ботнета зависит мощность атаки. Из определения понятно, что ddos — это когда много запросов направляют на какую-нибудь цель. А вот цели и типы запросов могут быть принципиально разные. Рассмотрю основные варианты ddos атак, которые встречаются в современном интернете. Их можно разделить на 2 основных типа:

  1. Атака на уровне L7, то есть на седьмом уровне модели OSI. Нагрузка на приложение. Обычно это HTTP Flood, но не обзательно. Атака может быть и на открытую в мир MySQL или другую базу, почтовый сервер или даже SSH. Данная атака направлена на то, чтобы как можно меньшим трафиком напрягать наиболее тяжелое и уязвимое место сервиса. Обычно вредоносные запросы маскируются под легитимные, что осложняет отражение.
  2. Уровень L3 L4, то есть сетевой и транспортный уровни модели OSI. Чаще всего это SYN или UDP flood. С помощью ддос атак этого типа стараются загрузить все каналы связи, чтобы таким образом помешать работе сервиса. Как правило, вредоносный трафик легко отличим от легитимного, но его так много, что фильтрация просто не справляется. Все входящие каналы забиваются флудом.

Рассмотрим подробнее конкретные цели для описанных выше атак. Начнем с L7 атак. В качестве цели могут использоваться следующие объекты:

  • Какая-то тяжелая страница на сайте. Атакующий простым просмотром сайта с помощью DevTools определяет наиболее тяжелые страницы. Чаще всего это поиск, большие каталоги товаров или заполняемые формы. Определив узкое место, туда направляется шквал запросов, чтобы положить сайт. Для эффективности, можно нагружать сразу все, что показалось тяжелым. С таким подходом можно и десятью запросами в секунду уронить неподготовленный сайт.
  • Загрузка файлов с сайта. Если вы размещаете более ли менее крупные файлы непосредственно на веб сервере, то через них его будет очень легко положить, если не настроить ограничения на скачивание. Обычными параллельными загрузками можно так нагрузить сервер, что сайт перестанет отвечать.
  • Атака на публичный API. Сейчас это очень популярный инструмент из-за его простоты и легкости использования. Защищать его сложно, поэтому он часто может быть целью ddos атак.
  • Любые другие приложения, которые доступны из инетрнета. Часто это почтовые программы, ssh сервер, серверы баз данных. Все эти службы можно нагрузить, если они смотрят напрямую в интернет.

С уровня L3, L4 обычно делают следующие ддос атаки:

  • UDP-flood. Это вообще классика. С подобными атаками сталкивались практчески все, кто держит открытыми dns и ntp сервисы. В них постоянно находят уязвимости, позволяющие использовать эти службы для ddos атак на сервера. Злоумышленники сканируют интернет, находят неправильно настроенные или уязвимые сервера, отправляют туда запросы, подделывая адрес источника. В ответ эти серверы шлют несколько запросов по поддельным адресам. Таким способом злоумышленники в несколько раз усиливают свои атаки.
  • SYN-flood. Тоже старый вид атак типа отказ от обслуживания. Злоумышленник отправляет большое количество SYN запросов на установку соединения. В общем случае, с помощью syn запросов забивают всю очередь на подключения. В итоге легитимные трафик перестает ходить, сервис не отвечает клиентам.

На основе описания основных типов ddos атак рассмотрим простые и очевидные способы противодействия.

Защита от ddos атак с помощью платных сервисов

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

Защита сайта от ddos атак может быть двух типов:

  1. Профессиональная защита с помощью платных сервисов и перенаправления трафика на них.
  2. Защита сервера от ддос своими силами.

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

Скрытие и защита реального ip адреса

Как же защитить свой сайт от ddos атаки? Первое и самое главное правило, если вам необходима качественная и профессиональная защита от DDoS — не раскрывайте свои прямые ip адреса. Если вас атакуют, а вам надо как можно быстрее защититься — сразу же выбирайте сервис по защите от ддос, настраивайте проксирование трафика через него, меняйте свои прямые IP адреса и ни в коем случае не светите их нигде. Иначе никакой платный сервис не поможет. Вам будут напрямую устраивать ddos атаку по ip, минуя защиту.

Простое сканирование портов по старому ip позволит определить все доступные службы на сервере и продолжить атаку на сервер напрямую по адресу, минуя защиту. Вам нужно разрешить подключения к своему серверу только с адресов службы защиты. Не забудьте закрыть и ssh службу фаерволом. Незащищенный сервер можно без проблем завалить через ssh обычным syn флудом и fail2ban не спасет. Там такой лог будет, что fail2ban сам положит сервер.

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

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

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

Настройка firewall

Как я уже сказал выше, обязательно закройте фаерволом все, что только можно. Злоумышленники не должны ничего видеть на вашем реальном сервере. Просто перенести, к примеру, ssh на какой-то другой порт, отличный от 22 тут не подойдет. Закрывайте все и открывайте доступ только со своих доверенных адресов. Web трафик разрешайте только с серверов защиты. Их адреса вам предоставит поддержка.

Подробнее о настройке iptables, если используете этот фаервол, можете прочитаь в моем материале по теме.

Аренда хостинга с защитой от ddos

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

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

Настройка кэширования

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

Читайте также:  Билайн взять доверительный платеж мобильный

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

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

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

Вынести smtp на отдельный сервер

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

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

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

Защита сайта от ддос своими силами

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

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

Как сделать ддос атаку самому

Рассмотрим на примерах, как в принципе можно провести ddos атаку. «Чтобы поймать преступника, нужно думать как преступник». По понятным причинам, я расскажу только немного теории, без практических примеров, во избежание, так сказать. Хотя у меня и примеров то нет. Я сам никогда всерьез не занимался ddos атаками.

У Яндекса есть отличный инструмент для нагрузочного тестирования — Яндекс.Танк. Когда я с ним знакомился, решил нагрузить несколько первых попавшихся под руку сайтов. К моему удивлению, я положил все сайты, которые пробовал нагрузить 🙂 Сразу скажу, что это были небольшие блоги таких же любителей блоггинга, как и я.

Для того, чтобы сделать ddos атаку самому на неподготовленный сайт достаточно из 3-5 разных мест запустить Яндекс.Танк и указать в качестве целей набор наиболее тяжелых страниц. Обычному динамическому сайту сразу станет плохо. Когда владелец спохватится и начнет разбираться, он достаточно быстро забанит ваши ip адреса сам, либо с помощью хостера и на этом ваша ддос атака закончится.

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

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

Программы для ddos атак

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

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

Ddos программы делятся на 3 типа:

  1. Программы для проведения syn и udp флуда.
  2. Программные комплексы для создания своего ботнета.
  3. Stresser сервисы.

Программы для проведения syn и udp флуда

Из первых наиболее популярны:

  • Server Flooder. Простая программа, которая может долбить запросами конкретный ip адрес и порт. Защита от такой программы очень простая — баним ip адрес при большом количестве запросов от него. Где скачать нормальный Server Flooder не знаю. В большинстве мест вместо него в архивах будут вирусы, так что аккуратнее.
  • Loic. Программа старая. Умеет спамить http запросами, а так же флудить tcp и udp пакетами. Скачать loic можно на sourceforge.
  • MummyDDOS. Такой же tcp флудер, как и первые два.

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

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

К таким ботнетам относятся Zemra Botnet, Dirt Jumper, Solar и т.д. Все это есть в свободном доступе. Можете для общего развития установить и посмотреть, как все это работает.

Stresser панели

Современные, удобные, функциональные инструменты для проведения ddos атак. К сожалению 🙁 Stresser — это некий сервис с web панелью, личным кабинетом. Вы оплачиваете услугу по доступу к ddos панели и можете использовать ее некоторое оплаченное время. Стоимость для простых атак невысокая. Буквально за 3-5 долларов в день вы можете два-три раза устраивать сайту достаточно мощный ддос на 3-5 минут каждый день. Иногда этого времени достаточно, чтобы хостер снял сайт с обслуживания.

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

Заключение

На этом у меня все по теме ddos атак. Как обычно, хотелось написать больше и с примерами, но получилось и так длинная статья. Думаю, конкретные примеры по проведению ddos своими силами и противодействию им опишу отдельно.

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

Некоторое время назад я написал подробную статью про установку и настройку web сервера на базе nginx и php-fpm последних версий. Там я упомянул, что это первая статья из цикла заметок о веб сервере. Сегодня я расскажу как простыми и подручными средствами защититься от простых ddos атак.

Введение

Сразу сделаю оговорку по поводу слова ddos, которое тут не совсем уместно, но я не придумал, как еще популярно объяснить о чем идет речь. От полноценной ddos атаки вы не сможете защититься в рамках настройки веб сервера. У вас просто будет забит весь канал и сервер перестанет отвечать. Если мощности сервера не достаточно для обработки и фильтрации входящих запросов, то он ляжет, чтобы вы там не делали. Для полноценной защиты от ddos нужны полноценные средства, которые стоят ощутимых финансовых затрат. Более подробно с теорией по защите от ddos читайте в отдельной статье.

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

Я приведу советы по защите от простых атак ботов или каких-то мелких вредителей и пакостников, которые без должных действий с вашей стороны могут положить ваш сайт или сервер без особых проблем. Вот простой пример. Есть не очень слабый виртуальный сервер от ihor, на борту которого 2 ярда, 8 гигов оперативы и ssd диск.

Сервер настроен по моей предыдущей статье, ссылку на которую привел в начале. На сервере развернут wordpress сайт с некоторым содержимым. И есть у нас вредитель, который на своем сервере запускает простой тест от apache на производительность веб сервера:

Читайте также:  Ваз 21093 коробка передач ремонт

Всего лишь 50 параллельных потоков. Что мы видим на своем веб сервере:

Не очень приятная картина. Сервер загружен на 100%. И хотя он нормально обрабатывает запросы и в целом корректно работает. Даже не очень тормозит, но все равно это плохо. А если будет 3 сервера и по 100 потоков на каждом? Нет никаких проблем даже на тест взять у разных хостеров по виртуальной машине и запускать на них подобные штуки, имитируя ддос атаку.

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

Защита от ddos с помощью iptables

Для защиты от простейшей атаки мы будем использовать firewall — iptables, модуль ядра ipset для хранения больших списков ip и самописные скрипты. По фаерволу смотрите мою статью — настройка iptables. Здесь я не буду на этом останавливаться.

Вопрос настройки ipset я подробно рассматривал в своей статье по блокировке ботов по странам. Советую посмотреть материал, так как он напрямую связан с этой статьей и дополняет ее.

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

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

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

В принципе, комментировать тут особо нечего. Берем список подключений, который только что вывели, в нем сравниваем первую колонку, если она больше 50, то результат второй колонки, где записан ip адрес, передаем в файл.

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

Посмотреть содержимое списка можно командой:

Теперь нужно добавить в iptables правило, по которому будут блокироваться все подключения из указанного списка ipset.

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

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

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

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

Есть хоть и не очень изящное, но простое решение этой проблемы. Создать список ipset с заданным временем жизни записи с помощью timeout. Например вот так:

В данном случае запись с забаненным ip в списке ipset будет храниться в течении 3600 секунд или 60 минут.

Нужно понимать, что в данном примере с 1 ip адресом использовать ipset нет никакого смысла, можно сразу банить средствами самого iptables. Ipset нужен только тогда, когда этот список хотя бы в сотни строк. Если там несколько десяткой адресов, хватит и одного iptables.

Анализ лог файла web сервера для защиты от ddos

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

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

Мы не будем каждый раз анализировать весь лог файл. Эта операция сама по себе будет сильно нагружать веб сервер. Возьмем последние 1000 строк из лог файла и посчитаем количество подключений с одного ip с типовым содержимым, например запрос главной страницы по протоколу http 1.0, «GET / HTTP/1.0». Если вы заметите другой постоянный признак ботнета, который вас атакует, используйте его. Это может быть один и тот же user agent или что-то еще. Допустим, если атакующий будет долбить в уязвимое место, то это будет адрес этой страницы.

Результатом этой команды будет примерно такой список.

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

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

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

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

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

Баним ботов с неправильным referer

Есть категория простых ботов, которые подставляют в referrer либо мусор, либо кривые урлы без http или https в начале. Например вот такие:

Корректное поле referer должно содержать либо http, либо https, либо быть пустым. Все, что иначе, можно смело блокировать или возвращать статус ошибки. Добавляем примерно такую конструкцию в конфигурацию виртуального хоста, в раздел server <>.

После этого проверьте конфигурацию nginx и перечитайте ее.

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

В дополнение, можно всех этих ботов с помощью простого скрипта банить на iptables, как в примерах выше. К слову сказать, их можно банить сразу, разбирая http запросы еще до того, как они будут попадать к nginx, например, с помощью ngrep, но это более сложная задача. Не все это умеют делать, там есть нюансы, а с nginx знакомы все. Не составит большого труда реализовать данный метод.

Защита от ддос с помощью модулей nginx — limit_conn и limit_req

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

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

Я ограничу в своем примере количество одновременных подключений к сайту с одного ip числом 50, а количество одновременных запросов к динамическому контенту не более 2-х в секунду. При этом будет разрешен всплеск (burst) запросов до 5-ти. Объясню, как понимать этот всплеск, так как сам не сразу понял, что конкретно он означает.

Если у нас идет превышение количества установленных запросов в секунду, то их выполнение задерживается, и они выстраиваются в очередь на исполнение с указанной скоростью. Размер этой очереди и равен значению всплеска. Все запросы, которым не хватит места в очереди, будут завершены с ошибкой. То есть, если запросов будет 4 в секунду, то 2 выполнятся сразу и еще 2 встанут в очередь. А если будет 10, то 2 выполнятся сразу, 5 встанут в очередь на выполнение по 2 штуки в секунду, а остальные будут завершены с ошибкой.

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

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

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

и запись в логе с ошибками:

Лимит на количество подключений можете проверить той же утилитой ab, о которой я рассказал во введении.

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

Читайте также:  Виды сканера для компьютера

Заключение

Я рассмотрел наиболее простые способы для защиты web сервера от не менее простых ddos атак, которые больше похожи на баловство. Серьезная атака, которая просто зальет весь входящий канал сервера, даже не заметит наших защит. Но тем не менее, мне приходилось убеждаться в эффективности этих способов в отражении некоторых атак.

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

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

Суть защиты в том, что с помощью nginx выдаем пользователю определенную cookies, а потом редиректим на запрашиваемую страницу. Если бот не понимает кукисов или редиректов, то он отваливается. Нормальные пользователи ничего не замечают. Возможно позже я отдельно расскажу про этот способ и дополню статью. А пока все. Буду рад замечаниям по существу в статьях.

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

Тарифный план FREE включает в себя:

  • Защиту для 1 домена
  • Неограниченный объем/полосу легитимного трафика
  • Неограниченную полосу фильтрации
  • Кэширование и доставку статического контента (CDN)
  • Бесплатный SSL-сертификат
  • Аналитику по трафику в личном кабинете
  • Время ответа на обращение до 12 часов

Тарифный план FREE включает в себя:

  • Защиту для 1 домена
  • Неограниченный объем/полосу легитимного трафика
  • Неограниченную полосу фильтрации
  • Кэширование и доставку статического контента (CDN)
  • Бесплатный SSL-сертификат
  • Аналитику по трафику в личном кабинете
  • Время ответа на обращение до 12 часов

Тарифный план BASIC включает в себя все опции FREE, а также:

  • Ускоренную валидацию посетителей
  • Возможность изменения защищенного IP адреса
  • Поддержку HTTP/2 и SPDY
  • Поддержку SSL/TLS 1.2&1.3 шифрования
  • Черный/белый списки:
    до 3 правил
  • Время ответа на обращение до 8 часов

Тарифный план BASIC включает в себя все опции FREE, а также:

  • Ускоренную валидацию посетителей
  • Возможность изменения защищенного IP адреса
  • Поддержку HTTP/2 и SPDY
  • Поддержку SSL/TLS 1.2&1.3 шифрования
  • Черный/белый списки:
    до 3 правил
  • Время ответа на обращение до 8 часов

Тарифный план NORMAL включает в себя все опции BASIC, а также:

  • Выделенный IP адрес
  • Возможность заказа Premium IP адреса
  • Поддержку сторонних SSL сертификатов
  • Возможность заключения договора с юридическим лицом
  • Черный/белый списки:
    до 5 правил
  • Балансировку нагрузки:
    до 2 серверов
  • Время ответа на обращение менее 30 минут

Тарифный план NORMAL включает в себя все опции BASIC, а также:

  • Выделенный IP адрес
  • Возможность заказа Premium IP адреса
  • Поддержку сторонних SSL сертификатов
  • Возможность заключения договора с юридическим лицом
  • Черный/белый списки:
    до 5 правил
  • Балансировку нагрузки:
    до 2 серверов
  • Время ответа на обращение менее 30 минут

Тарифный план PREMIUM включает в себя все опции NORMAL, а также:

  • Защиту для 3 доменов
  • Возможность получения экспертной поддержки
  • Уведомления об аномалиях трафика
  • Черный/белый списки:
    до 20 правил
  • Балансировку нагрузки:
    до 10 серверов
  • Время ответа на обращение менее 15 минут

Тарифный план PREMIUM включает в себя все опции NORMAL, а также:

  • Защиту для 3 доменов
  • Возможность получения экспертной поддержки
  • Уведомления об аномалиях трафика
  • Черный/белый списки:
    до 20 правил
  • Балансировку нагрузки:
    до 10 серверов
  • Время ответа на обращение менее 15 минут

Тарифный план ENTERPRISE включает в себя все опции PREMIUM, а также:

  • Защита для 10 и более доменов
  • Расширенная DDoS защита
  • Возможность подключения защиты по BGP
  • Черный/белый списки:
    до 50 правил
  • Балансировка нагрузки: любое количество серверов
  • Время ответа на обращение менее 10 минут

Тарифный план ENTERPRISE включает в себя все опции PREMIUM, а также:

  • Защита для 10 и более доменов
  • Расширенная DDoS защита
  • Возможность подключения защиты по BGP
  • Черный/белый списки:
    до 50 правил
  • Балансировка нагрузки: любое количество серверов
  • Время ответа на обращение менее 10 минут

Тарифный план ENTERPRISE включает в себя все опции PREMIUM, а также:

  • Защита для 10 и более доменов
  • Расширенная DDoS защита
  • Возможность подключения защиты по BGP
  • Черный/белый списки:
    до 50 правил
  • Балансировка нагрузки: любое количество серверов
  • Время ответа на обращение менее 10 минут
BASIC NORMAL PREMIUM ENTERPRISE

Заключение договора Выделенный IP адрес Доменов под защитой 1 1 1 3 по запросу Выдача Premium IP-адреса Нет Нет 400$ / 20000 руб 400$ / 20000 руб 400$ / 20000 руб Изменение защищенного IP-адреса Нет 50$ / 2500 руб 50$ / 2500 руб 50$ / 2500 руб 50$ / 2500 руб Время ответа на обращение до 12 часов до 8 часов менее 30 минут менее 15 минут менее 10 минут Неограниченная полоса легитимного трафика Поддержка Веб-сокетов (WebSockets)
Глобальная доставка контента (CDN)
Внутрисетевой обмен контентом
Заголовки кэширования
Кэширование статического контента
Максимальная частота обновления кэша Каждые 2 часа Каждый час Каждые 30 минут Каждую минуту Каждую минуту или чаще
Максимальный размер кешируемого файла 100 MB 100 MB 200 MB 200 MB 500+ MB
Поддержка HTTP/2 и SPDY
Дополнительные правила фильтрации
Защита от атак OWASP TOP-10
Фильтрация запросов с помощью WAF
Черный/белый списки Нет 3/3 5/5 20/20 50/50
Защита IP-адреса/сети
Экспертная поддержка
Расширенная DDoS защита
Гарантированно фильтруемая полоса 1,5 Tbps / 500 Mpps 1,5 Tbps / 500 Mpps 1,5 Tbps / 500 Mpps 1,5 Tbps / 500 Mpps 1,5 Tbps / 500 Mpps
Гибкая работа с поддоменами
Отдельные SSL сертификаты для поддоменов
Бесплатный SSL-сертификат
Время активации SSL Мгновенно Мгновенно Мгновенно Мгновенно Мгновенно
Поддержка SSL/TLS 1.2&1.3 шифрования
Прозрачная обработка SSL (обработка HTTPS трафика без раскрытия ключей)
Сторонние SSL-сертификаты
Неограниченная полоса фильтрации
Репутационный анализ источников
Защищенный DNS
Глобальная трансляция DNS
Поддержка Wildcard DNS
Управление DNS записями
Балансировка нагрузки
Поддерживаемое количество веб-серверов 1 1 2 10 не ограничено
График активности и RTT
Тепловая карта запросов
Список заблокированных угроз
Детализированные отчеты об атаках
Авторизация через социальные сети
Ускоренная валидация посетителей
Мгновенное подключение услуги
Управление услугой через API
Двухфакторная аутентификация

Как это работает?

Услуга работает с использованием технологии Reverse Proxy.

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

Возможности

Технологические возможности услуги:

Постоянная надежная защита от всех известных видов DDoS-атак

Скрытие IP-адреса и расположения целевого веб-сервера

Балансировка трафика между несколькими веб-серверами клиента

Полная совместимость с любыми сайтами

Возможность организации выделенного канала для доставки трафика от целевого веб-сервера (GRE, IPIP, L2/ L3 VPN)

Возможности обработки, оптимизации и доставки веб-трафика:

Анализ и фильтрация веб-трафика

Кэширование и доставка статического контента (CDN)

Web Application Firewall (WAF)

Предоставление бесплатного сертификата от ЦС Let’s Encrypt

Управление списками доступа

Поддержка HTTP/2 и TLS 1.3

Просмотр информации о запросах в реальном времени

Размещение записей на защищенных DNS-серверах DDoS-GUARD (DNS-хостинг)

Управление услугой через личный кабинет и API

Для кого подходит?

Услуга подходит и будет полезна абсолютно для всех веб-сайтов.

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

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

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

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

Преимущества для клиента

Простое и быстрое подключение

Не требует установки дополнительного оборудования или ПО

Огромный выбор бесплатных опций для ускорения доступа к веб-сайту

Все необходимые инструменты для защиты и ускорения сайта в одной панели

Онлайн-аналитика посещений в личном кабинете

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

Отсутствие ограничений по трафику

Как заказать и подключить услугу?

Заказать услугу можно прямо на сайте или из личного кабинета в магазине услуг. Активация услуги происходит автоматически после оплаты (или сразу после подтверждения заказа для тарифа FREE). После активации услуги необходимо перенаправить А-записи DNS-сервера на указанный в личном кабинете защищенный IP-адрес. Как только корневые DNS-серверы обновят информацию о целевом IP-адресе вашего сайта, трафик начнет проходить через сеть DDoS-GUARD, а Вы получите возможность отслеживать активность пользователей в личном кабинете.

Если на веб-сервере уже используется панель управления ISPmanager, Вы также можете воспользоваться модулем DDoS-GUARD для подключения услуги, выполнив его установку в ISPmanager.

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *