DDoS — распределенные атаки типа «отказ в обслуживании»

DoS-атака или Denial of Service attack — это атака типа «отказ в обслуживании».

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

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

DDoS — это не про HighLoad или производительность

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

Начнём с того, что 9 из 10 случаев, когда Заказчик говорит, что его проект DDoS'ят — это заблуждение, вызванное тем, что сайт просто «тормозит» по другим причинам: плохая архитектура приложения или недостаточно мощное хостинговое оборудование.

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

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

Реальные атаки DDoS

Если классифицировать по уровню атаки, то есть 2 сценария:

  • (D)DoS на приложение
  • (D)DoS на сеть

В случае, когда имеет место реальный (D)DoS, распространены два основных варианта:

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

(D)DoS на приложение 

Атака основана на отправке большого количества запросов на выполнение ресурсоёмких операций:

  • большие выборки объектов без лимитов
  • сложные фильтры / поиск
  • запросы на обработку графики
  • загрузка объёмных файлов

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

  • CPU — процессор перегружен вычислениями
  • RAM — не хватает оперативной памяти
  • I/O — не хватает производительности ввода-вывода
  • Хранилище — забивается система хранения

Основные механики защиты от DDos на уровень приложения:

  • Настройка мониторинга показателей
  • Выявление и анализ ресурсоёмких запросов 
  • Оптимизация производительности
  • Настройка кэширования
  • Установка лимитов
  • Использование очередей
  • Требование аутентификации для «тяжелых» операций
  • Проверка на человечность (капчи и подобные механизмы)
  • Блокировка по IP
  • Корректное конфигурирование серверного ПО под ресурсы (исключаем OOM)
  • Возможность отключения вторичного функционала без ущерба для работоспособности всей системы

(D)DoS на сеть

Принцип атаки: переполнение полосы пропускания, различный флуд (HTTP, ICMP, UPD, SYN)

Основные механики защиты от DDos на уровень сети:

  • Своевременное обновление ПО
  • Конфигурация ядра ОС для поддержки большого количества соединений
  • Брандмауэры / Firewalls
  • Deep Packet Inspection (DPI)
  • Услуги хостинг-провайдера
  • Сервисы защиты / CDN

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

Информационная безопасность — обеспечение конфиденциальности, целостности и доступности информации.

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

Узнать больше →

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

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

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

Узнать больше →

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

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

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

Узнать больше →

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

Cтатьи по теме:

Надёжность, доступность и отказоустойчивость сайтов и веб-приложений
Действительно серьёзные проекты должны работать без перебоев даже в случае отказа отдельных подсистем. Причин для сбоев в работе немало: выход из строя «железа», сбои программного обеспечения, аварии на уровне дата-центров. Всех этих рисков можно избежать или минимизировать их последствия.
SQL-инъекции — распространённый метод взлома веб-приложений и сайтов
SQL-инъекции — это один из распространённых способов взлома сайтов и веб-приложений, работающих с реляционными базами данных. Этот способ основан на внедрении в выполняемый приложением запрос к базе данных произвольного SQL-кода, переданного злоумышленником.
Вирусы на сайтах
Откуда берутся вирусы на сайтах? Как с ними бороться?
Процессы, которые важны для информационной безопасности
Информационная безопасность очень важна практически для любого бизнеса. В современном мире деятельность почти всех компаний существенно зависит от информационных технологий. Взломы, утечки данных и неработоспособность ключевых систем приводит как к финансовых потерям, так и к репутационным издержкам.
Серверные языки программирования
Серверные языки программирования нужны для реализации бизнес-логики, то есть разработчик при помощи языка программирования описывает возможные сценарии использования сайта или приложения.
CMS — коробочные системы управления сайтами
Система управления сайтом — это программный продукт, который создан для упрощения создания основных видов сайтов. Как правило, системы управления достаточно универсальны, то есть на них можно собрать что угодно: от информационного сайта до интернет-магазина или портала.
Фреймворки в веб-разработке
Фреймворки — это программные продукты, которые упрощают создание и поддержку технически сложных или нагруженных проектов. Фреймворк, как правило, содержит только базовые программные модули, а все специфичные для проекта компоненты реализуются разработчиком на их основе. Тем самым достигается не только высокая скорость разработки, но и большая производительность и надёжность решений.

Тематические технологии:

Язык программирования Ruby
Фреймворк Ruby on Rails
Язык программирования Python
Язык программирования Go
Язык программирования Elixir
Фреймворк Phoenix
Websockets
Язык разметки HTML