DoS и DDoS-атака — это агрессивное внешнее воздействие на вычислительные ресурсы сервера или рабочей станции, проводимое с целью доведения последних до отказа. Под отказом мы понимаем не физический выход машины из строя, а недоступность ее ресурсов для добросовестных пользователей — отказ системы в их обслуживании (Denial of Service, из чего и складывается аббревиатура DoS).
Если такая атака проводится с одиночного компьютера, она классифицируется как DoS (ДоС), если с нескольких — DDoS (ДиДоС или ДДоС), что означает «Distributed Denial of Service» — распределенное доведение до отказа в обслуживании. Далее поговорим, для чего злоумышленники проводят подобные воздействия, какими они бывают, какой вред причиняют атакуемым и как последним защищать свои ресурсы.
- Кто может пострадать от DoS и DDoS атак
- Как проводятся атаки
- Способы нападения и защиты
- Флуд
- Как защититься от флуда
- Перегрузка аппаратных ресурсов
- Как защититься от перегрузки аппаратных ресурсов
- Уязвимости в операционных системах, программном обеспечении, прошивках устройств
- Методы противодействия эксплуатации уязвимостей в софте
- Как определить, что ресурс подвергся нападению хакера
Кто может пострадать от DoS и DDoS атак
Атакам подвергаются корпоративные сервера предприятий и веб-сайты, значительно реже — личные компьютеры физических лиц. Цель подобных акций, как правило, одна — нанести атакуемому экономический вред и остаться при этом в тени. В отдельных случаях DoS и DDoS атаки являются одним из этапов взлома сервера и направлены на кражу или уничтожение информации. По сути, жертвой злоумышленников может стать предприятие или сайт, принадлежащие кому угодно.
Схема, иллюстрирующая суть DDoS-атаки:
DoS и DDoS-атаки чаще всего проводят с подачи нечестных конкурентов. Так, «завалив» веб-сайт интернет-магазина, который предлагает аналогичный товар, можно на время стать «монополистом» и забрать его клиентов себе. «Положив» корпоративный сервер, можно разладить работу конкурирующей компании и тем самым снизить ее позиции на рынке.
Масштабные атаки, способные нанести существенный урон, выполняются, как правило, профессиональными киберпреступниками за немалые деньги. Но не всегда. Атаковать ваши ресурсы могут и доморощенные хакеры-любители — из интереса, и мстители из числа уволенных сотрудников, и просто те, кто не разделяет ваши взгляды на жизнь.
Иногда воздействие проводится с целью вымогательства, злоумышленник при этом открыто требует от владельца ресурса деньги за прекращение атаки.
На сервера государственных компаний и известных организаций нередко нападают анонимные группы высококвалифицированных хакеров с целью воздействия на должностных лиц или вызова общественного резонанса.
Как проводятся атаки
Принцип действия DoS и DDoS-атак заключается в отправке на сервер большого потока информации, который по максимуму (насколько позволяют возможности хакера) загружает вычислительные ресурсы процессора, оперативной памяти, забивает каналы связи или заполняет дисковое пространство. Атакованная машина не справляется с обработкой поступающих данных и перестает откликаться на запросы пользователей.
Так выглядит нормальная работа сервера, визуализированная в программе Logstalgia:
Эффективность одиночных DOS-атак не слишком высока. Кроме того, нападение с личного компьютера подвергает злоумышленника риску быть опознанным и пойманным. Гораздо больший профит дают распределенные атаки (DDoS), проводимые с так называемых зомби-сетей или ботнетов.
Так отображает деятельность ботнета сайт Norse-corp.com:
Зомби-сеть (ботнет) — это группа компьютеров, не имеющих физической связи между собой. Их объединяет то, что все они находятся под контролем злоумышленника. Контроль осуществляется посредством троянской программы, которая до поры до времени может никак себя не проявлять. При проведении атаки хакер дает зараженным компьютерам команду посылать запросы на сайт или сервер жертвы. И тот, не выдержав натиска, перестает отвечать.
Так Logstalgia показывает DDoS-атаку:
Войти в состав ботнета может абсолютно любой компьютер. И даже смартфон. Достаточно подхватить троянца и вовремя его не обнаружить. Кстати, самый крупный ботнет насчитывал почти 2 млн машин по всему миру, а их владельцы понятия не имели, чем им приходится заниматься.
Способы нападения и защиты
Перед началом атаки хакер выясняет, как провести ее с максимальным эффектом. Если атакуемый узел имеет несколько уязвимостей, воздействие может быть проведено по разным направлениям, что значительно усложнит противодействие. Поэтому каждому администратору сервера важно изучить все его «узкие места» и по возможности их укрепить.
Флуд
Флуд, говоря простым языком, это информация, не несущая смысловой нагрузки. В контексте DoS/DDoS-атак флуд представляет собой лавину пустых, бессмысленных запросов того или иного уровня, которые принимающий узел вынужден обрабатывать.
Основная цель использования флуда — полностью забить каналы связи, насытить полосу пропускания до максимума.
Виды флуда:
- MAC-флуд — воздействие на сетевые коммуникаторы (блокировка портов потоками данных).
- ICMP-флуд — заваливание жертвы служебными эхо-запросами с помощью зомби-сети или рассылка запросов «от имени» атакуемого узла, чтобы все члены ботнета одновременно отправили ему эхо-ответ (атака Smurf). Частный случай ICMP-флуда — ping-флуд (отправка на сервер запросов ping).
- SYN-флуд — отправка жертве многочисленных SYN-запросов, переполняя очередь TCP-подключений путем создавая большого количества полуоткрытых (ожидающих подтверждения клиента) соединений.
- UDP-флуд — работает по схеме Smurf-атак, где вместо ICMP-пакетов пересылаются датаграммы UDP.
- HTTP-флуд — заваливание сервера многочисленными HTTP-сообщениями. Более изощренный вариант — HTTPS-флуд, где пересылаемые данные предварительно шифруются, и прежде чем атакуемый узел их обработает, ему предстоит их расшифровать.
Как защититься от флуда
- Настроить на сетевых коммутаторах проверку на валидность и фильтрацию MAC-адресов.
- Ограничить или запретить обработку эхо-запросов ICMP.
- Блокировать пакеты, приходящие с определенного адреса или домена, который дает повод подозревать его в неблагонадежности.
- Установить лимит на количество полуоткрытых соединений с одним адресом, сократить время их удержания, удлинить очередь TCP-подключений.
- Отключить сервисы UDP от приема трафика извне или ограничить количество UDP-соединений.
- Использовать CAPTCHA, задержки и другие приемы защиты от ботов.
- Увеличить максимальное количество HTTP-подключений, настроить кэширование запросов с помощью nginx.
- Расширить пропускную способность сетевого канала.
- По возможности выделить отдельный сервер для обработки криптографии (если используется).
- Создать резервный канал для административного доступа к серверу в аварийных ситуациях.
Перегрузка аппаратных ресурсов
Существуют разновидности флуда, которые воздействуют не на канал связи, а на аппаратные ресурсы атакуемого компьютера, загружая их по полной и вызывая зависание или аварийное завершение работы. Например:
- Создание скрипта, который разместит на форуме или сайте, где у пользователей есть возможность оставлять комментарии, огромное количество бессмысленной текстовой информации, пока не заполнится всё дисковое пространство.
- То же самое, только заполнять накопитель будут логи сервера.
- Загрузка сайта, где выполняется какое-либо преобразование введенных данных, непрерывной обработкой этих данных (отправка так называемых «тяжелых» пакетов).
- Загрузка процессора или памяти выполнением кода через интерфейс CGI (поддержка CGI позволяет запускать на сервере какую-либо внешнюю программу).
- Вызов срабатывания системы безопасности, что делает сервер недоступным извне и т. д.
Как защититься от перегрузки аппаратных ресурсов
- Увеличить производительность оборудования и объем дискового пространства. При работе сервера в штатном режиме свободными должны оставаться не менее 25-30% ресурсов.
- Задействовать системы анализа и фильтрации трафика до передачи его на сервер.
- Лимитировать использование аппаратных ресурсов компонентами системы (установить квоты).
- Хранить лог-файлы сервера на отдельном накопителе.
- Рассредоточить ресурсы по нескольким независимым друг от друга серверам. Так, чтобы при отказе одной части другие сохраняли работоспособность.
Уязвимости в операционных системах, программном обеспечении, прошивках устройств
Вариантов проведения такого рода атак неизмеримо больше, чем с использованием флуда. Их реализация зависит от квалификации и опыта злоумышленника, его умения находить ошибки в программном коде и использовать их во благо себе и во вред владельцу ресурса.
После того как хакер обнаружит уязвимость (ошибку в программном обеспечении, используя которую можно нарушить работу системы), ему останется лишь создать и запустить эксплойт — программу, которая эксплуатирует эту уязвимость.
Эксплуатация уязвимостей не всегда имеет цель вызвать только отказ в обслуживании. Если хакеру повезет, он сможет получить контроль над ресурсом и распорядиться этим «подарком судьбы» по своему усмотрению. Например, использовать для распространения вредоносных программ, украсть и уничтожить информацию и т. д.
Методы противодействия эксплуатации уязвимостей в софте
- Своевременно устанавливать обновления, закрывающие уязвимости операционных систем и приложений.
- Изолировать от стороннего доступа все службы, предназначенные для решения административных задач.
- Использовать средства постоянного мониторинга работы ОС сервера и программ (поведенческий анализ и т. п.).
- Отказаться от потенциально уязвимых программ (бесплатных, самописных, редко обновляемых) в пользу проверенных и хорошо защищенных.
- Использовать готовые средства защиты систем от DoS и DDoS-атак, которые существуют как в виде аппаратных, так и программных комплексов.
Как определить, что ресурс подвергся нападению хакера
Если злоумышленнику удалось достичь цели, не заметить атаку невозможно, но в отдельных случаях администратор не может точно определить, когда она началась. То есть от начала нападения до заметных симптомов иногда проходит несколько часов. Однако во время скрытого воздействия (пока сервер не «лег») тоже присутствуют определенные признаки. Например:
- Неестественное поведение серверных приложений или операционной системы (зависание, завершение работы с ошибками и т. д.).
- Нагрузка на процессор, оперативную память и накопитель по сравнению с исходным уровнем резко возрастает.
- Объем трафика на один или несколько портов увеличивается в разы.
- Наблюдаются многократные обращения клиентов к одним и тем же ресурсам (открытие одной страницы сайта, скачивание одного и того же файла).
- Анализ логов сервера, брандмауэра и сетевых устройств показывает большое количество однообразных запросов с различных адресов, часто направленных на конкретный порт или сервис. Особенно если сайт ориентирован на узкую аудиторию (например, русскоязычную), а запросы идут со всего мира. Качественный анализ трафика при этом показывает, что обращения не имеют практического смысла для клиентов.
Всё перечисленное не является стопроцентным признаком атаки, но это всегда повод обратить на проблему внимание и принять надлежащие меры защиты.