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

DDoS атака - что это?

Содержание:

DDoS атака – что это и в чем отличие от DoS?

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

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

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

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

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

Наличие дополнительной «D» означает Distributed Denial of Service – распределенный отказ в обслуживании.

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

архитектура ддос атаки

Принципиальное отличие в классификации этих типов становится понятным только на этапе формирования комплекса мер по защите – защищаться от DDoS значительно сложнее, об этом поговорим ниже.

Виды DoS атак по уровню воздействия

  1. Массовые спамные – это атаки, при которых система нагружается за счет огромного количества запросов. Даже на обработку простых действий тратится процессорное время сервера, и, при их большом, количестве сервер не справляется;
  2. Умные точечные – при такой атаке запросы шлются к тем элементам системы, которые являются наиболее уязвимыми (потребляют максимум процессорной мощности). Общее количество запросов может быть небольшим, а сервер виснет.

Как распознать DDoS атаку и определить ее источники?

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

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

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

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

Лог сайта – это файл, в который записывается информация о поступающих запросах. Бывает лог ошибок, он короткий и в нем отражаются только те запросы, в ответ на которые сервер был вынужден дать ошибку. Но нам нужен лог посещений, в него пишется каждый запрос поступающий сайту, фиксируется – время, IP адрес, с которого поступает запрос, тип запроса (GET, POST, HEAD) целевой URL, код выданного ответа, идентификатор пользователя (браузер, данные роботов и т.д.).

Пример одиночной записи лога доступа:

biznessystem.ru 104.194.196.238 - - [27/Nov/2016:11:01:26 +0300] "GET /2014/01/kak-otkryt-fajl-rar-kak-polzovatsa-winrar/ HTTP/1.1" 200 74658 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13" 0

Последовательно здесь указано: мой домен, IP адрес источника запроса, дата и время, тип запроса и адрес страницы, код ответа сервера (200), данные источника запроса (браузер, операционная система).

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

Признаки DoS атаки:

  1. Большое число запросов с одного IP адреса, превышающее адекватные потребности живого человека (тысячи);
  2. Интервал между запросами существенно меньше, чем нужен человеку. Например, живой человек не будет открывать новую страницу сайта каждую секунду (она даже загрузиться не успеет);
  3. Повторение одинаковых запросов, как будто кто-то постоянно обновляет страницу.
  4. Запросы к страницам, которых не существует или которые не предназначены для пользователей – это не всегда признак именно DoS атаки, но всегда должно обращать внимание, может быть вас пытаются взломать, ища уязвимые места.

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

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

При анализе лога было обнаружено 11253 запроса с IP 213.159.212.73. Причем, все эти запросы были отправлены в течение 40 минут.

лог запросов к серверу

В данном случае налицо были признаки: много запросов, маленькие интервалы (по 3-4 новых страницы в секунду), обращение к несуществующим страницам (404 ошибка), обращение к запрещенным страницам (403 ошибка).

Как бесплатно защитить сайта от DoS и DDoS атак?

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

Защиту необходимо организовывать по двум направлениям:

  1. Оптимизировать работу сайта таким образом, чтобы он потреблял меньше ресурсов при передаче пользователям данных. Это отдельная тема для разговора, по которой я планирую сделать отдельную подробную статью — Как ускорить работу сайта (чтобы не пропустить подписывайтесь на обновления). Как минимум, поставьте кэширование страниц (для WordPress делается плагином Hyper Cache) и оптимизируйте размер изображений. На масштабную атаку это мало повлияет, а от небольших поможет существенно.
  2. Фильтровать трафик, поступающий на сайт – задача в том, чтобы спамные запросы до сайта не доходили и не заставляли сервер напрягаться впустую. Фильтрацию можно осуществлять на 3 уровнях, которые мы ниже рассмотрим подробнее – фильтрация доступа через файл htaccess, использование сторонних ресурсов для очистки трафика, блокировка атакующих ip адресов php скриптом.

1. Блокировка нежелательных запросов через htaccess

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

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

Защита от DDoS атак с помощью htaccess осуществляется по двум направлениям – ограничения по IP адресам и ограничения по определенным признакам в самих запросах.

Защита по IP адресам

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

deny from XXX.XXX.XXX.XXX
allow from XXX.XXX.XXX.XXX

где вместо X указывается IP адрес запроса (диапазон адресов) или ставится all (для всех). Адреса, которые надо блокировать берем из логов.

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

1. Запрет доступа к особым файлам сайта

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

<Files wp-login.php>
order deny,allow
deny from all
allow from 1.2.3.4
</files>

Здесь указан файл wp-login.php (вход в админку), запрещен доступ всем адресам, разрешен доступ для адреса 1.2.3.4 (ваш личный IP).

В разных CMS служебные файлы разные, для WordPress рекомендую закрыть файлы xmlrpc.php, readme.html, wp-config.php

2. Блокировка по типам запросов

Есть разные типы запросов, в логах почти всегда вы будете видеть GET – получить данные или POST – отправить данные (запостить что-то).

Когда я анализирую логи, то выявляю IP адреса, которые пытаются взломать сайт (лезут в админку и т.д.) – этим надо ограничить возможность слать POST, тем, которые ддосят запрещаю  полностью и GET и POST.

Но есть один нюанс во всем этом – большинство IP адресов динамические и пользователи их могут постоянно менять, в результате чего бан по отдельным IP редко эффективен. Приходится банить весь диапазон подсети (если он маленький или принадлежит другим странам) или оставлять доступ открытым – это неприятный минус, но терять посетителей не хочется. Вы решайте сами, как поступить. Местонахождение IP и диапазон адресов подсети я смотрю тут — 2ip.ru/whois/

Технически делается так:

Блокировка POST для подсети (3 строка) и IP адреса (4 строка).

<Limit POST>
order allow,deny
deny from 195.22.124.
deny from 195.22.125.45
allow from all
</Limit>

Блокировка GET и POST для диапазона и IP адреса.

<Limit GET POST>
order allow,deny
deny from 107.150.46.52
deny from 103.13.31.
allow from all
</Limit>

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

Защита по признакам User Agent в запросах

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

В htaccess добавьте следующий код:

# Запрет хакерских ботов
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*(libwww-perl|wget|python|nikto|curl|scan|java|winhttp|clshttp|loader).* [NC]
RewriteRule ^(.*)$ - [F,L]

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

бот libwww-perl в логе доступа

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

2. Сервис для очистки от спамного трафика Cloudflare

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

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

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

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

Шаг 1. Регистрируем аккаунт

Здесь — www.cloudflare.com/plans/ — выбираем бесплатный вариант

тарифные планы cloudflare

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

Шаг 2. Сканирование DNS записей

В форму вписываете свой домен и нажимаете кнопку «Scan DNS Records».

сканирование DNS записей

Минуту будет идти сканирование, после чего станет активной кнопка «Continue» — ее и жмем. Результат проведенной проверки содержит информацию обо всех найденных системой DNS записях, относящихся к вашему сайту. При желании их можно править и добавлять новые – перед нами информация о том, куда будет идти очищенный трафик – туда же, куда шел неочищенный до настройки.

проверка dns записей

Оставляем все без изменений и жмем «Continue» еще раз.

Шаг 3. Выбор тарифа (повторно)

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

Шаг 4. Настройка новых NS серверов

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

На картинке слева показаны текущие записи, справа — те, на которые нужно сменить.

смена dns

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

Шаг 5. Проверка статуса

После нажатия «Continue» на этой странице будет проведена проверка DNS записей домена. Если они еще не сменились, то мы получим такой результат со статусом — обрабатывается:

проверка статуса dns

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

cloudflare status active

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

Основные настройки и возможности CloudFlare

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

настройки cloudflare

Analytics (Аналитика) – это раздел, в котором показана вся статистика по работе системы безопасности CloudFlare. Показан общий трафик, и много других данных, но, главное — количество заблокированных угроз —  Threats. По ним вы можете оценить уровень безопасности вашего ресурса. Я ничего не сказал о дополнительных функциях CloudFlare, так вот, он не только фильтрует плохие запросы, он еще кэширует данные и экономит как серверные мощности хостинга, так и снижает загруженность канала, в моем случае экономия больше 80% (все на стандартных настройках).

заблокированные угрозы

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

Firewall – в этом разделе можно менять степень защиты. Security level позволяет выбрать несколько уровней подозрительности к трафику. Если сайт висит из-за ДДоС атаки, то установка режима «I’m under attack!» Будет пропускать к сайту только после подтверждения того, что запрос от человека. Время разрешения доступа показывает, как долго пользователь остается в белом списке, после последнего запроса, по истечении этого времени его запросы снова тщательно проверяются сервисом. В самом низу мы есть табличка для ручной блокировки определенных IP адресов и целых стран.

уровень защиты от DDoS атак

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

3. Защита от DDoS с помощью PHP скрипта

Принцип действия этой защиты основан на следующем. Каждый поступающий к сайту запрос анализируется и запоминается IP адрес, с которого он пришел. Если следующий запрос с данного IP поступает слишком быстро (например, в течение секунды), то скрипт считает, что это не человеческий запрос, а спам бот и к выполнению загрузки основной страницы сайта его не допускает.

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

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

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

Вот здесь приведена инструкция и сам скрипт для защиты от DDoS атак (в конце статьи) — перейти на сайт.

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

Зачем злоумышленники атакуют сайты?

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

1. Проверка сил у школоты

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

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

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

2. С целью вымогательства

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

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

Все это сопровождается посланием, в котором от вас попросят заплатить за прекращение DDoS атаки или предложение «крыши» защиты от хакеров.

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

3. Взлом сайта

Не всегда цель хакеров – это уронить ваш сайт. Зачастую их основная цель заключена в поиске уязвимых мест в вашей CMS, через которые они смогут в будущем внедрить вредоносный код. А поиск таких уязвимостей ведут боты, которые тупо «пробивают» разные известные им заранее косяки – есть они у вас или нет. Когда эти боты работают чересчур усердно и шлют очень много запросов, получается типичная DoS атака и слабенький хостинг не выдерживает.

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

4. Конкуренты

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

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

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

5. Политика, религия и т.п.

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