Метка: Безопасность

  • DDoS-атака: что это простыми словами и что делать с сайтом

    DDoS-атака: что это простыми словами и что делать с сайтом

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

    Что такое DDoS-атака простыми словами

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

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

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

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

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

    Чем DDoS отличается от DoS

    DoS-атака идёт с одного источника, DDoS — со многих. Разница выглядит формальной, но от неё зависит, справитесь ли вы своими силами.

    Схема: при DoS запросы идут из одного источника, при DDoS — из множества источников
    Один источник блокируется правилом файрвола, тысячи — нет
    Признак DoS DDoS
    Источники трафика один адрес или небольшая группа тысячи адресов по всему миру
    Как блокируется правилом для одного адреса фильтрация по поведению, а не по адресу
    Мощность ограничена каналом атакующего складывается из каналов всех устройств
    Кто справится администратор сервера нужна фильтрация на стороне сети провайдера

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

    Что такое ботнет и откуда берутся запросы

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

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

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

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

    На что направлена DDoS-атака

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

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

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

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

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

    Типы DDoS-атак

    Атаки делят по уровню, на котором они работают: сеть и протоколы (L3–L4 в модели OSI) или само приложение (L7). Деление практичное: от уровня зависит, кто и чем защищается.

    Схема: атаки уровня сети — SYN-флуд, UDP-флуд, ICMP-флуд, амплификация; атаки уровня приложения — HTTP-флуд, медленные сессии, атака на поиск и API
    Атаки уровня сети и уровня приложения решаются разными средствами
    Тип Что перегружает Как выглядит со стороны сайта
    Объёмная (флуд) ширину канала: объём трафика больше, чем вмещает полоса сайт недоступен целиком, сервер при этом почти не загружен
    Протокольная (SYN-флуд, UDP-флуд) таблицу соединений, пакеты летят на случайные порты соединение не устанавливается, страница «думает» и отваливается
    Амплификация канал, чужими ответами то же, что объёмная, но трафик приходит от обычных серверов
    HTTP-флуд (L7) процессы веб-сервера нагрузка на сервере высокая, в логах — обычные с виду запросы
    Медленные сессии лимит соединений трафика мало, свободных соединений нет

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

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

    На практике атаки часто смешанные: сначала объёмная волна, следом запросы к тяжёлым страницам. Защита от одного типа не отменяет второй.

    Зачем атакуют сайты

    Мотивов немного, и почти все они денежные или эмоциональные.

    • Конкуренция: магазин уводят в офлайн в день распродажи, сервис бронирования — в сезон.
    • Вымогательство: короткая атака, письмо с требованием выкупа и угрозой повторить.
    • Отвлечение: пока администраторы поднимают сайт, в другом месте идёт попытка взлома.
    • Идеология и месть: злоумышленник действует по принципу «эта компания мне не нравится». Это бывший сотрудник, недовольный клиент или случайный человек.
    • Проба сил: часть атак — проверка работоспособности ботнета на случайной цели.

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

    Атака на чужой ресурс — уголовное преступление. В зависимости от обстоятельств применяются статьи 272–274 УК РФ: неправомерный доступ к информации, создание и использование вредоносных программ, нарушение правил эксплуатации. Заказчик отвечает наравне с исполнителем.


    Атака или наплыв посетителей: как отличить

    Сайт лёг, и первый вопрос обычно звучит не «какой тип атаки», а «это вообще атака или нас показали по телевизору». Ошибиться дорого: от ответа зависит, звать поддержку или срочно докупать ресурсы.

    Два графика: при наплыве посетителей растут и запросы, и заказы; при атаке растут только запросы
    При настоящем наплыве растут и запросы, и заказы. При атаке — только запросы
    Что смотреть Наплыв посетителей Атака
    Рост нагрузки плавный, за минуты резкий, за секунды
    Страницы разные, с переходами по сайту одна и та же или случайные адреса
    Счётчик посещаемости растёт вместе с нагрузкой почти не меняется
    Заказы и регистрации растут стоят на месте
    Источник переходов поиск, реклама, соцсети прямые заходы без реферера
    Коды ответов 200, редкие 5xx много 499, 502, 503

    Главный признак — расхождение между нагрузкой и полезным результатом. Счётчик посещаемости считает людей с браузером и JavaScript, боты его обычно не запускают. Если в логах сервера тысячи запросов в минуту, а в Метрике ровная линия, это не посетители.

    Коды ответов тоже подсказывают. Код 499 в логах nginx означает, что клиент отключился, не дождавшись ответа: так ведут себя и боты с коротким таймаутом, и люди, которым надоело ждать. Код 502 или 503 говорит, что сервер приложений перестал отвечать веб-серверу.

    Дальше смотрим логи. На сервере с доступом по SSH хватает двух команд: посмотреть последние записи и посчитать запросы по адресам.

    Терминал: вывод последних записей access.log и подсчёт запросов по IP-адресам командой awk, sort и uniq
    Формат вывода команд. Значения в примере вымышленные, адреса из документационных диапазонов

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

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

    Терминал: команды uptime и ss показывают высокую среднюю нагрузку и тысячи соединений в состоянии syn-recv
    Много соединений в состоянии syn-recv — характерный след SYN-флуда

    Что происходит с сайтом на хостинге и на VPS

    От того, где живёт сайт, зависит, что делаете вы, а что делают за вас.

    Сравнение: на хостинге фильтрацию и настройки берёт на себя провайдер, на VPS сеть фильтрует провайдер, а настройки сервера остаются на владельце
    Граница ответственности на хостинге и на своём сервере

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

    На VPS сеть точно так же фильтрует провайдер, но всё, что выше уровня сети, ваша зона. Лимиты в nginx, правила файрвола, кеширование, подключение CDN и WAF настраиваете вы. Соседей нет, отключать вас из-за них никто не станет, но и с HTTP-флудом разбираться придётся самостоятельно.

    Что делать, если сайт уже под атакой

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

    Шесть шагов: убедиться, что это атака, написать в поддержку, включить кеш, ограничить частоту запросов, сохранить доступ к админке, не менять DNS
    Шесть шагов, с которых стоит начать
    1. Убедитесь, что это атака: логи, счётчик посещаемости, коды ответов. Две минуты проверки экономят час метаний.
    2. Напишите в поддержку. Укажите время начала, симптомы и приложите выдержку из логов: на стороне провайдера видно то, что не видно вам, и фильтрация включается там.
    3. Включите кеш. Отдавать готовую страницу дешевле, чем собирать её заново. Для сайта на CMS это самая быстрая мера: даже при потоке запросов сервер продолжает отвечать.
    4. Ограничьте частоту запросов. Лимит на число запросов с одного адреса в секунду отсекает самые грубые атаки. В nginx это limit_req, в CMS — плагины и встроенные настройки.
    5. Сохраните вход в админку: отдельный адрес входа, доступ по белому списку адресов. Если сайт перегружен, администратор всё равно должен попасть внутрь.
    6. Не меняйте DNS в панике. Новые записи расходятся по интернету не мгновенно, а атака часто идёт по адресу сервера, а не по имени домена. Помогает это редко, а сайт теряет доступность даже у тех, у кого он работал.

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

    Как защищаются от DDoS

    Защита собирается из нескольких слоёв, и каждый закрывает свой тип атак.

    Схема: входящий трафик проходит через фильтрацию по объёму, протоколу, частоте запросов и правилам WAF, до сервера доходят только настоящие запросы
    Мусорный трафик отбрасывается до того, как дойдёт до сервера
    • Фильтрация на границе сети: инфраструктура провайдера отбрасывает мусорный трафик до того, как он займёт канал клиента. Против объёмных атак работает только этот слой: если канал уже забит, на сервере делать нечего.
    • Анализ протоколов: отсев полуоткрытых соединений и пакетов, не похожих на настоящие. Закрывает SYN-флуд и его родственников.
    • Ограничение частоты запросов: один адрес не должен запрашивать страницу сто раз в секунду. Настраивается на сервере и стоит недорого.
    • WAF: правила на уровне приложения отличают запрос человека от запроса скрипта по заголовкам, порядку действий и поведению.
    • Кеш и CDN: статику раздаёт сеть доставки, к серверу доходит малая часть запросов. Помогает и в обычные дни, страницы открываются быстрее.

    Ни один слой не работает в одиночку. CDN не спасёт от атаки на форму входа, а лимит запросов — от гигабитного флуда в канал.

    Что уже включено в тарифы ZION

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

    WAF тоже включён без доплаты: правила на уровне приложения отсекают запросы, которые прошли сетевой фильтр, но не похожи на действия человека.

    Поддержка отвечает круглосуточно, серверы стоят в российских городах, заявленный аптайм — 99,9 %. Если сайт начал вести себя странно, а вы не уверены, атака это или нагрузка, напишите в поддержку: со стороны провайдера видно, что происходит с трафиком до сервера.

    Посмотреть тарифы можно на главной странице.

    Чего защита не умеет

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

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

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

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

    Чек-лист: подготовиться заранее

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

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

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

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

    Частые вопросы

    Что происходит с сайтом при DDoS-атаке?

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

    Сколько длится DDoS-атака?

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

    Можно ли узнать, кто атакует?

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

    Что будет с сайтом на обычном хостинге?

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

    Спасёт ли CDN от DDoS?

    Частично. CDN хорошо закрывает статику и снимает часть нагрузки, но запросы к динамическим страницам — поиску, корзине, форме входа — всё равно доходят до сервера.

    Помогает ли смена IP-адреса?

    Редко. Если атака идёт по доменному имени, новый адрес найдут за минуты, а посетители в это время останутся без сайта из-за кеширования DNS.

    Законна ли DDoS-атака?

    Нет. Это уголовное преступление, применяются статьи 272–274 УК РФ. Заказ такой атаки наказуем так же, как её проведение.

    Чем DDoS отличается от взлома?

    Взлом — это проникновение внутрь: кража данных, подмена файлов, доступ к админке. DDoS в систему не проникает, он лишает сайт возможности отвечать.

    Нужна ли защита маленькому сайту?

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

    Как понять, что атака закончилась?

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