Распределенные атаки типа «отказ в обслуживании» или сокращенно DDoS, стали распространенным явлением и серьезной головной болью для владельцев интернет-ресурсов по всему миру. Именно поэтому, защита от DDoS-атак на сайт является сегодня не дополнительной опцией, а обязательным условием для тех, кто хочет избежать простоя, огромных убытков и испорченной репутации.
Рассказываем подробнее, что это за недуг и как от него защититься.
Distributed Denial of Service или «Распределенный отказ от обслуживания» - нападение на информационную систему для того, чтобы та не имела возможности обрабатывать пользовательские запросы. Простыми словами, DDoS заключается в подавлении веб-ресурса или сервера трафиком из огромного количества источников, что делает его недоступным. Часто такое нападение проводится, чтобы спровоцировать перебои в работе сетевых ресурсов в крупной фирме или государственной организации
DDoS-атака похожа на другую распространённую веб-угрозу - «Отказ в обслуживании» (Denial of Service, DoS). Единственное различие в том, что обычное распределенное нападение идет из одной точки, а DDos-атака более масштабна и идет из разных источников.
Основная цель DDoS-атаки - сделать веб-площадку недоступной для посетителей, заблокировав её работу. Но бывают случаи, когда подобные нападения производятся для того, чтобы отвлечь внимание от других вредных воздействий. DDoS-атака может, например, проводиться при взломе системы безопасности с целью завладеть базой данных организации.
DDoS-атаки появились в поле общественного внимания в 1999 году, когда произошла серия нападений на сайты крупных компаний (Yahoo, eBay, Amazon, CNN). С тех пор, этот вид кибер-преступности развился в угрозу глобального масштаба. По данным специалистов, за последние годы их частота возросла в 2,5 раза, а предельная мощность стала превышать 1 Тбит/сек. Жертвой DDoS-атаки хотя бы раз становилась каждая шестая российская компания. К 2020 году их общее число достигнет 17 миллионов.
Хостинг-площадка с круглосуточной защитой от самых изощрённых DDoS-атак.
DDoS могут разрушить сайты любого масштаба, начиная от обычных блогов и заканчивая крупнейшими корпорациями, банками и другими финансовыми учреждениями.
Согласно исследованиям, проведенным «Лабораторией Касперского», нападение может стоить фирме до 1,6 млн долларов. Это серьезный урон, ведь атакованный веб-ресурс на какое-то время не может обслуживании, из-за чего происходит простой.
Чаще всего от DDoS-атак страдают сайты и сервера:
Не так давно к печальному списку частых жертв DDoS-атак добавилось и подключённое к интернету оборудование, получившее общее название «интернет вещей» (Internet of Things, IoT). Самую большую динамику роста на этом направлении показывают кибер-нападения с целью нарушить работу онлайн-касс больших магазинов или торговых центров.
Все веб-серверы имеют свои ограничения по числу запросов, которые они могут обрабатывать одновременно. Кроме этого, предусмотрен предел для пропускной способности канала, соединяющего Сеть и сервер. Чтобы обойти эти ограничения, ззлоумышленники создают компьютерную сеть с вредоносным программным обеспечением, называемую «ботнет» или «зомби-сеть».
Для создания ботнета кибер-преступники распространяют троян через e-mail рассылки, социальные сети или сайты. Компьютеры, входящие в ботнет не имеют физической связи между собой. Их объединяет только «служение» целям хозяина-хакера.
В ходе DDoS-атаки хакер отправляет команды «зараженным» компьютерам-зомби, а те начинают наступление. Ботнеты генерируют огромный объем трафика, способный перегрузить любую систему. Основными «объектами» для DDoS обычно становится пропускной канал сервера, DNS-сервер, а также само интернет-соединение.
Когда действия злоумышленников достигают своей цели, это моментально можно определить по сбоям в работе сервера или размещённого там ресурса. Но есть ряд косвенных признаков, по которым о DDoS-атаке можно узнать ещё в самом её начале.
DDoS-атака направлена на сетевой уровень сервера или веб-ресурса, поэтому её часто называют атакой сетевого уровня или транспортного уровня. Её цель- привести к перегрузке табличного пространства на межсетевом экране со встроенным журналом безопасности (брандмауэре), в центральной сети или в системе, балансирующей нагрузку.
Самый распространённый метод DDoS на транспортном уровне - сетевой флуд , создание огромного потока запросов-пустышек на разных уровнях, с которыми физически не может справится принимающий узел.
Обычно сетевая служба применяет правило FIFO, согласно которому компьютер не переходит к обслуживанию второго запроса, пока не обработает первый. Но при атаке количество запросов настолько возрастает, что устройству недостает ресурсов для того, чтобы завершить работу с первым запросом. В итоге, флуд максимально насыщает полосу пропускания и наглухо забивает все каналы связи.
Эта разновидность используется, когда необходимо захватить или вывести из строя аппаратные ресурсы. Целью «рейдеров» может быть, как физическая, так и оперативная память или процессорное время.
Перегружать пропускной канал не обязательно. Достаточно только привести процессор жертвы к перегрузке или, другими словами, занять весь объем процессного времени.
DDoS-атака уровня приложений использует упущения при создании программного кода, которая создаёт уязвимость ПО для внешнего воздействия. К данному виду можно отнести такую распространённую атаку, как «Пинг смерти» (Ping of death) - массовая отправка компьютеру жертвы ICMP-пакетов большей длины, вызывающих переполнение буфера.
Но профессиональные хакеры редко прибегают к такому простейшему методу, как перегрузка пропускных каналов. Для атаки сложных систем крупных компаний, они стараются полностью разобраться в системной структуре сервера и написать эксплойт - программу, цепочку команд или часть программного кода, учитывающие уязвимость ПО жертвы и применяющиеся для наступления на компьютер.
Согласно данным Corero Network Security, более ⅔ всех компаний в мире ежемесячно подвергаются атакам «отказа в доступе». Причём их число доходит до 50.
Владельцам сайтов, не предусмотревших защиту сервера от DDoS-атак, могут не только понести огромные убытками, но и снижением доверия клиентов, а также конкурентоспособности на рынке.
Самый эффективный способ защиты от DDoS-атак - фильтры, устанавливаемые провайдером на интернет-каналы с большой пропускной способностью. Они проводят последовательный анализ всего трафика и выявляют подозрительную сетевую активность или ошибки. Фильтры могут устанавливаться, как на уровне маршрутизаторов, так и с помощью специальных аппаратных устройств.
В этой статье мы рассмотрели, что значит DDoS-атака и как защитить свой сайт от нападений. Важно помнить, что подобные вредоносные действия могут вывести из строя даже самые безопасные и крупнейшие веб-ресурсы. Это повлечет за собой серьезные последствия в виде огромных убытков и потери клиентов. Именно поэтому, обезопасить свой ресурс от DDoS-атак - актуальная задача для всех коммерческих структур и государственных учреждений.
Хотите профессиональный уровень защиты от DDoS-атак - выбирайте ! Постоянный мониторинг и круглосуточная техподдержка.
DoS и DDoS-атака — это агрессивное внешнее воздействие на вычислительные ресурсы сервера или рабочей станции, проводимое с целью доведения последних до отказа. Под отказом мы понимаем не физический выход машины из строя, а недоступность ее ресурсов для добросовестных пользователей — отказ системы в их обслуживании (D enial o f S ervice, из чего и складывается аббревиатура DoS).
Если такая атака проводится с одиночного компьютера, она классифицируется как DoS (ДоС), если с нескольких — DDoS (ДиДоС или ДДоС), что означает «D istributed D enial o f S ervice» — распределенное доведение до отказа в обслуживании. Далее поговорим, для чего злоумышленники проводят подобные воздействия, какими они бывают, какой вред причиняют атакуемым и как последним защищать свои ресурсы.
Атакам подвергаются корпоративные сервера предприятий и веб-сайты, значительно реже — личные компьютеры физических лиц. Цель подобных акций, как правило, одна — нанести атакуемому экономический вред и остаться при этом в тени. В отдельных случаях DoS и DDoS атаки являются одним из этапов взлома сервера и направлены на кражу или уничтожение информации. По сути, жертвой злоумышленников может стать предприятие или сайт, принадлежащие кому угодно.
Схема, иллюстрирующая суть DDoS-атаки:
DoS и DDoS-атаки чаще всего проводят с подачи нечестных конкурентов. Так, «завалив» веб-сайт интернет-магазина, который предлагает аналогичный товар, можно на время стать «монополистом» и забрать его клиентов себе. «Положив» корпоративный сервер, можно разладить работу конкурирующей компании и тем самым снизить ее позиции на рынке.
Масштабные атаки, способные нанести существенный урон, выполняются, как правило, профессиональными киберпреступниками за немалые деньги. Но не всегда. Атаковать ваши ресурсы могут и доморощенные хакеры-любители — из интереса, и мстители из числа уволенных сотрудников, и просто те, кто не разделяет ваши взгляды на жизнь.
Иногда воздействие проводится с целью вымогательства, злоумышленник при этом открыто требует от владельца ресурса деньги за прекращение атаки.
На сервера государственных компаний и известных организаций нередко нападают анонимные группы высококвалифицированных хакеров с целью воздействия на должностных лиц или вызова общественного резонанса.
Принцип действия DoS и DDoS-атак заключается в отправке на сервер большого потока информации, который по максимуму (насколько позволяют возможности хакера) загружает вычислительные ресурсы процессора, оперативной памяти, забивает каналы связи или заполняет дисковое пространство. Атакованная машина не справляется с обработкой поступающих данных и перестает откликаться на запросы пользователей.
Так выглядит нормальная работа сервера, визуализированная в программе Logstalgia :
Эффективность одиночных DOS-атак не слишком высока. Кроме того, нападение с личного компьютера подвергает злоумышленника риску быть опознанным и пойманным. Гораздо больший профит дают распределенные атаки (DDoS), проводимые с так называемых зомби-сетей или ботнетов.
Так отображает деятельность ботнета сайт Norse-corp.com:
Зомби-сеть (ботнет) — это группа компьютеров, не имеющих физической связи между собой. Их объединяет то, что все они находятся под контролем злоумышленника. Контроль осуществляется посредством троянской программы, которая до поры до времени может никак себя не проявлять. При проведении атаки хакер дает зараженным компьютерам команду посылать запросы на сайт или сервер жертвы. И тот, не выдержав натиска, перестает отвечать.
Так Logstalgia показывает DDoS-атаку:
Войти в состав ботнета может абсолютно любой компьютер. И даже смартфон. Достаточно подхватить троянца и вовремя его не обнаружить. Кстати, самый крупный ботнет насчитывал почти 2 млн машин по всему миру, а их владельцы понятия не имели, чем им приходится заниматься.
Перед началом атаки хакер выясняет, как провести ее с максимальным эффектом. Если атакуемый узел имеет несколько уязвимостей, воздействие может быть проведено по разным направлениям, что значительно усложнит противодействие. Поэтому каждому администратору сервера важно изучить все его «узкие места» и по возможности их укрепить.
Флуд, говоря простым языком, это информация, не несущая смысловой нагрузки. В контексте DoS/DDoS-атак флуд представляет собой лавину пустых, бессмысленных запросов того или иного уровня, которые принимающий узел вынужден обрабатывать.
Основная цель использования флуда — полностью забить каналы связи, насытить полосу пропускания до максимума.
Виды флуда:
Существуют разновидности флуда, которые воздействуют не на канал связи, а на аппаратные ресурсы атакуемого компьютера, загружая их по полной и вызывая зависание или аварийное завершение работы. Например:
Вариантов проведения такого рода атак неизмеримо больше, чем с использованием флуда. Их реализация зависит от квалификации и опыта злоумышленника, его умения находить ошибки в программном коде и использовать их во благо себе и во вред владельцу ресурса.
После того как хакер обнаружит уязвимость (ошибку в программном обеспечении, используя которую можно нарушить работу системы), ему останется лишь создать и запустить эксплойт — программу, которая эксплуатирует эту уязвимость.
Эксплуатация уязвимостей не всегда имеет цель вызвать только отказ в обслуживании. Если хакеру повезет, он сможет получить контроль над ресурсом и распорядиться этим «подарком судьбы» по своему усмотрению. Например, использовать для распространения вредоносных программ, украсть и уничтожить информацию и т. д.
Если злоумышленнику удалось достичь цели, не заметить атаку невозможно, но в отдельных случаях администратор не может точно определить, когда она началась. То есть от начала нападения до заметных симптомов иногда проходит несколько часов. Однако во время скрытого воздействия (пока сервер не «лег») тоже присутствуют определенные признаки. Например:
Всё перечисленное не является стопроцентным признаком атаки, но это всегда повод обратить на проблему внимание и принять надлежащие меры защиты.
Мы много расказываем о атаках на сайт, взломе и но тематика DDOS у нас не упоминалась. Сегодня мы исправляем это положение и предлагаем вам полный обзор технологий организации ДДОС атак и известных инструментов для выполнения хакерских атак.
Просмотреть листинг доступных инструментов для DDOS атак в KALI вы можете выполнив команду:
kali > / usr / share / exploitdb / platforms / windows / dos |
Для просмотра доступных инструментов ДДОС атаки Linux вводим команду:
/ usr / share / exploitdb / platforms / Linux / dos . |
The Low Orbit Ion Cannon (LOIC) Низко орбитальная ионная пушка. Возможно самая популярная DDOS программа. Она может рассылать массовые запросы по протоколам ICMP, UDP тем самым забивая канал к серверу жертвы. Самая известная атака с помощью LOIC была совершена группой Anonymous в 2009 году и направлена против PayPal, Visa, MasterCard в отместку за отключение WikiLeaks от системы сбора пожертвований.
Атаки, организованые с помощью LOIC могут утилизироваться с помощью блокировки UDP и ICMP пакетов на сетевом оборудовании интернет провайдеров. Вы можете скачать саму программу LOIC бесплатно на сайте . Этот инструмент на базе Windows и работа с ним очень проста, указываете сайты жертвы и нажимаете всего одну кнопку.
HOIC был разработан в ходе операции Payback by Praetox той же командой что создала LOIC. Ключевое отличие в том, что HOIC использует HTTP протокол и с его помощью посылает поток рандомизированных HTTP GET и POST запросов. Он способен одновременно вести атаку на 256 доменов. Вы можете скачать его с .
XOIC еще один очень простой DDOS инструмент. Пользователю необходимо просто установить IP адрес жертвы, выбрать протокол (HTTP, UDP, ICMP, or TCP), и нажать на спусковой крючек! Скачать его можно с
UDP Flooder соотвествует своему названию - инструмент прендназначен для отсылки множества UDP пакетов к цели. UDP Flooder часто используется при DDOS атаках на игровые сервера, для отключения игроков от сервера. Для скачивания программа доступна на .
ToR’s Hammer был создан для работы через сеть, с целью достижения большой анонимности атакующего . Проблема же данного инструмена в том, что сеть TOR является достаточно медленной и тем самым снижает эфективность ДДОС атаки. Скачать эту DDOS программу вы можете с сайтов Packet Storm или .
Pyloris это еще один ддос инструмен использующий новый подход. Он позволяет атакующему создать свой уникальный HTTP запрос. Затем программа будет пытаться удерживать TCP соединение открытым с помощью таких запросов, тем самым уменьшать количество доступных соединений на сервере. Когда лимит соединений сервера подходит к концу, сервер больше не может обслуживать соединения и сайт становится не доступным. Данный инструмент доступен бесплатно для скачивания с сайта .
Open Web Application Security Project (OWASP) и ProactiveRISK разработали инсрумент Switchblade DoS tool для тестирования WEB приложений на устойчивость к ДДОС атакам.Он имеет три режима работы: 1. SSL Half-Open, 2. HTTP Post, и 3. Slowloris. Скачать для ознакомления можно с сайта OWASP .
Эта программа для ДДОС (идет в поставке Kali) и отличается от большинства DDOS инструментов тем, что она не использует пропускную способность интернет канала и может быть использована с одного компьютера. THC-SSL-DOS использует уязвимость SSL протокола и способна “положить” целевой сервер. Если конечно эта уязвимость на нем имеется. Скачать программу можно с сайта THC , либо использовать KALI Linux где этот инструмент уже установлен.
На этом наш обзор заканчивается, но в будущем мы еще вернемся к теме ДДОС атак на страницах нашего блога.
Борьба с DDoS-атаками - работа не только сложная, но и увлекательная. Неудивительно, что каждый сисадмин первым делом пытается организовать оборону своими силами - тем более что пока еще это возможно.
Мы решили помочь вам в этом нелегком деле и опубликовать несколько коротких, тривиальных и не универсальных советов по защите вашего сайта от атак. Приведенные рецепты не помогут вам справиться с любой атакой, но от большинства опасностей они вас уберегут.
Суровая правда такова, что многие сайты может положить любой желающий, воспользовавшись атакой Slowloris, наглухо убивающей Apache, или устроив так называемый SYN-флуд с помощью фермы виртуальных серверов, поднятых за минуту в облаке Amazon EC2. Все наши дальнейшие советы по защите от DDoS своими силами основываются на следующих важных условиях.
Практика подсказывает, что сайт, который работает на винде (2003 или 2008 - неважно), в случае DDoS обречен. Причина неудачи кроется в виндовом сетевом стеке: когда соединений становится очень много, то сервер непременно начинает плохо отвечать. Мы не знаем, почему Windows Server в таких ситуациях работает настолько отвратно, но сталкивались с этим не раз и не два. По этой причине речь в данной статье будет идти о средствах защиты от DDoS-атак в случае, когда сервер крутится на Linux. Если вы счастливый обладатель относительно современного ядра (начиная с 2.6), то в качестве первичного инструментария будут выступать утилиты iptables и ipset (для быстрого добавления IP-адресов), с помощью которых можно оперативно забанить ботов. Еще один ключ к успеху - правильно приготовленный сетевой стек, о чем мы также будем говорить далее.
Второе важное условие - отказ от Apache. Если у вас, не ровен час, стоит Apache, то как минимум поставьте перед ним кеширующий прокси - nginx или lighttpd. Apache"у крайне тяжело отдавать файлы, и, что еще хуже, он на фундаментальном уровне (то есть неисправимо) уязвим для опаснейшей атаки Slowloris, позволяющей завалить сервер чуть ли не с мобильного телефона. Для борьбы с различными видами Slowloris пользователи Apache придумали сначала патч Anti-slowloris.diff, потом mod_noloris, затем mod_antiloris, mod_limitipconn, mod_reqtimeout... Но если вы хотите спокойно спать по ночам, проще взять HTTP-сервер, неуязвимый для Slowloris на уровне архитектуры кода. Поэтому все наши дальнейшие рецепты основываются на предположении, что на фронтенде используется nginx.
Что делать, если пришел DDoS? Традиционная техника самообороны - почитать лог-файл HTTP-сервера, написать паттерн для grep (отлавливающий запросы ботов) и забанить всех, кто под него подпадет. Эта методика сработает... если повезет. Ботнеты бывают двух типов, оба опасны, но по-разному. Один целиком приходит на сайт моментально, другой - постепенно. Первый убивает все и сразу, зато в логах появляется весь полностью, и если вы их проgrepаете и забаните все IP-адреса, то вы - победитель. Второй ботнет укладывает сайт нежно и осторожно, но банить вам его придется, возможно, на протяжении суток. Любому администратору важно понимать: если планируется бороться grep’ом, то надо быть готовым посвятить борьбе с атакой пару дней. Ниже следуют советы о том, куда можно заранее подложить соломки, чтобы не так больно было падать.
Пожалуй, самый главный, действенный и оперативный рецепт этой статьи. Если на ваш сайт приходит DDoS, то максимально действенным способом дать отпор может стать модуль testcookie-nginx , разработанный хабрапользователем @kyprizel. Идея простая. Чаще всего боты, реализующие HTTP-флуд, довольно тупые и не имеют механизмов HTTP cookie и редиректа. Иногда попадаются более продвинутые - такие могут использовать cookies и обрабатывать редиректы, но почти никогда DoS-бот не несет в себе полноценного JavaScript-движка (хотя это встречается все чаще и чаще). Testcookie-nginx работает как быстрый фильтр между ботами и бэкендом во время L7 DDoS-атаки, позволяющий отсеивать мусорные запросы. Что входит в эти проверки? Умеет ли клиент выполнять HTTP Redirect, поддерживает ли JavaScript, тот ли он браузер, за который себя выдает (поскольку JavaScript везде разный и если клиент говорит, что он, скажем, Firefox, то мы можем это проверить). Проверка реализована с помощью кукисов с использованием разных методов:
Чтобы избежать автоматического парсинга, проверяющая кукиса может быть зашифрована с помощью AES-128 и позже расшифрована на клиентской стороне JavaScript. В новой версии модуля появилась возможность устанавливать кукису через Flash, что также позволяет эффективно отсеять ботов (которые Flash, как правило, не поддерживают), но, правда, и блокирует доступ для многих легитимных пользователей (фактически всех мобильных устройств). Примечательно, что начать использовать testcookie-nginx крайне просто. Разработчик, в частности, приводит несколько понятных примеров использования (на разные случаи атаки) с семплами конфигов для nginx.
Помимо достоинств, у testcookie есть и недостатки:
Словом, testcookie_module не универсален. Но от ряда вещей, таких как, например, примитивные инструментарии на Java и C#, он помогает. Таким образом вы отсекаете часть угрозы.
Целью DDoS’еров часто становится наиболее ресурсоемкая часть сайта. Типичный пример - поиск, который выполняет сложные запросы к базе. Естественно, этим могут воспользоваться злоумышленники, зарядив сразу несколько десятков тысяч запросов к поисковому движку. Что мы можем сделать? Временно отключить поиск. Пускай клиенты не смогут искать нужную информацию встроенными средствами, но зато весь основной сайт будет оставаться в работоспособном состоянии до тех пор, пока вы не найдете корень всех проблем. Nginx поддерживает нестандартный код 444, который позволяет просто закрыть соединение и ничего не отдавать в ответ:
Location /search { return 444; }
Таким образом можно, например, оперативно реализовать фильтрацию по URL. Если вы уверены, что запросы к location /search приходят только от ботов (например, ваша уверенность основана на том, что на вашем сайте вообще нет раздела /search), вы можете установить на сервер пакет ipset и забанить ботов простым shell-скриптом:
Ipset -N ban iphash tail -f access.log | while read LINE; do echo "$LINE" | \ cut -d""" -f3 | cut -d" " -f2 | grep -q 444 && ipset -A ban "${L%% *}"; done
Если формат лог-файлов нестандартный (не combined) или требуется банить по иным признакам, нежели статус ответа, - может потребоваться заменить cut на регулярное выражение.
Нестандартный код ответа 444 может пригодиться еще и для оперативного бана клиентов по геопризнаку. Вы можете жестко ограничить отдельные страны, от которых испытываете неудобство. Скажем, вряд ли у интернет-магазина фотоаппаратов из Ростова-на-Дону много пользователей в Египте. Это не очень хороший способ (прямо скажем - отвратительный), поскольку данные GeoIP неточны, а ростовчане иногда летают в Египет на отдых. Но если вам терять нечего, то следуйте инструкциям:
Если, к примеру, боты по большей части были из Китая, то это может помочь.
Наконец, вы можете повторить опыт хабрапользователя @SaveTheRbtz, который взял нейронную сеть PyBrain, запихал в нее лог и проанализировал запросы (habrahabr.ru/post/136237). Метод рабочий, хотя и не универсальный:). Но если вы действительно знаете внутренности своего сайта - а вы, как системный администратор, должны, - то у вас есть шансы, что в наиболее трагических ситуациях такой инструментарий на основе нейронных сетей, обучения и собранной заранее информации вам поможет. В этом случае весьма полезно иметь access.log до начала DDoS"а, так как он описывает практически 100% легитимных клиентов, а следовательно, отличный dataset для тренировки нейронной сети. Тем более глазами в логе боты видны не всегда.
Сайт не работает - почему? Его DDoS’ят или это баг движка, не замеченный программистом? Неважно. Не ищите ответа на этот вопрос. Если вы считаете, что ваш сайт могут атаковать, обратитесь к компаниям, предоставляющим защиту от атак, - у ряда анти-DDoS-сервисов первые сутки после подключения бесплатны - и не тратьте больше время на поиск симптомов. Сосредоточьтесь на проблеме. Если сайт работает медленно или не открывается вообще, значит, у него что-то не в порядке с производительностью, и - вне зависимости от того, идет ли DDoS-атака или нет, - вы, как профессионал, обязаны понять, чем это вызвано. Мы неоднократно были свидетелями того, как компания, испытывающая сложности с работой своего сайта из-за DDoS-атаки, вместо поиска слабых мест в движке сайта пыталась направлять заявления в МВД, чтобы найти и наказать злоумышленников. Не допускайте таких ошибок. Поиск киберпреступников - это трудный и длительный процесс, осложненный самой структурой и принципами работы сети Интернет, а проблему с работой сайта нужно решать оперативно. Заставьте технических специалистов найти, в чем кроется причина падения производительности сайта, а заявление смогут написать юристы.
Для наиболее распространенной платформы создания веб-сайтов - PHP + MySQL - узкое место можно искать с помощью следующих инструментов:
Если сайт лежит навзничь и вы ничего не теряете, отключитесь от сети, посмотрите логи, попробуйте их проиграть. Если не лежит, то походите по страницам, посмотрите на базу.
Пример приведен для PHP, но идея справедлива для любой платформы. Разработчик, пишущий программные продукты на каком бы то ни было языке программирования, должен уметь оперативно применять и отладчик, и профилировщик. Потренируйтесь заранее!
Проанализируйте объем трафика, время ответа сервера, количество ошибок. Для этого смотрите логи. В nginx время ответа сервера фиксируется в логе двумя переменными: request_time и upstream_response_time. Первая - это полное время выполнения запроса, включая задержки в сети между пользователем и сервером; вторая сообщает, сколько бэкенд (Apache, php_fpm, uwsgi...) выполнял запрос. Значение upstream_response_time чрезвычайно важно для сайтов с большим количеством динамического контента и активным общением фронтенда с базой данных, им нельзя пренебрегать. В качестве формата лога можно использовать такой конфиг:
Log_format xakep_log "$remote_addr - $remote_user [$time_local] " ""$request" $status $body_bytes_sent " ""$http_referer" "$http_user_agent" $request_time \ $upstream_response_time";
Это combined-формат с добавленными полями тайминга.
Также посмотрите на число запросов в секунду. В случае nginx вы можете примерно оценить эту величину следующей shell-командой (переменная ACCESS_LOG содержит путь к журналу запросов nginx в combined-формате):
Echo $(($(fgrep -c "$(env LC_ALL=C date --date=@$(($(date \ +%s)-60)) +%d/%b/%Y:%H:%M)" "$ACCESS_LOG")/60))
По сравнению с нормальным для этого времени дня уровнем количество запросов в секунду может как падать, так и расти. Растут они в случае, если пришел крупный ботнет, а падают, если пришедший ботнет обрушил сайт, сделав его полностью недоступным для легитимных пользователей, и при этом ботнет статику не запрашивает, а легитимные пользователи запрашивают. Падение количества запросов наблюдается как раз за счет статики. Но, так или иначе, мы ведем речь о серьезных изменениях показателей. Когда это происходит внезапно - пока вы пытаетесь решить проблему своими силами и если не видите ее сразу в логе, лучше быстро проверьте движок и параллельно обратитесь к специалистам.
Многие забывают, что tcpdump - это обалденное средство диагностики. Я приведу пару примеров. В декабре 2011-го был обнаружен баг в ядре Linux, когда оно открывало TCP-соединение при выставленных флагах TCP-сегмента SYN и RST. Первым багрепорт отправил именно системный администратор из России, чей ресурс был атакован этим методом, - атакующие узнали об уязвимости раньше, чем весь мир. Ему, очевидно, такая диагностика помогла. Другой пример: у nginx есть одно не очень приятное свойство - он пишет в лог только после полной отработки запроса. Бывают ситуации, когда сайт лежит, ничего не работает и в логах ничего нет. Все потому, что все запросы, которые в данный момент загружают сервер, еще не выполнились. Tcpdump поможет и здесь.
Он настолько хорош, что я советовал людям не использовать бинарные протоколы до того, как они убедятся, что все в порядке, - ведь текстовые протоколы отлаживать tcpdump"ом легко, а бинарные – нет. Однако сниффер хорош как средство диагностики - в качестве средства поддержания production"а он страшен. Он легко может потерять сразу несколько пакетов и испортить вам историю пользователя. Смотреть его вывод удобно, и он пригодится для ручной диагностики и бана, но старайтесь ничего критичного на нем не основывать. Другое любимое многими средство «погрепать запросы» - ngrep - вообще по умолчанию пытается запросить в районе двух гигабайт несвопируемой памяти и только потом начинает уменьшать свои требования.
Как отличить DDoS-атаку, например, от эффекта рекламной кампании? Этот вопрос может показаться смешным, но эта тема не менее сложная. Бывают довольно курьезные случаи. У одних хороших ребят, когда они напряглись и основательно прикрутили кеширование, сайт слег на пару дней. Выяснилось, что в течение нескольких месяцев этот сайт незаметно датамайнили какие-то немцы и до оптимизации кеширования страницы сайта у этих немцев со всеми картинками грузились довольно долго. Когда страница начала выдаваться из кеша моментально, бот, у которого не было никаких тайм-аутов, тоже начал собирать их моментально. Тяжело пришлось. Случай особенно сложный по той причине, что если вы сами изменили настройку (включили кеширование) и сайт после этого перестал работать, то кто, по вашему и начальственному мнению, виноват? Вот-вот. Если вы наблюдаете резкий рост числа запросов, то посмотрите, например, в Google Analytics, кто приходил на какие страницы.
Какие еще есть ключевые моменты? Конечно, вы можете поставить «умолчальный» nginx и надеяться, что у вас все будет хорошо. Однако хорошо всегда не бывает. Поэтому администратор любого сервера должен посвятить немало времени тонкой настройке и тюнингу nginx.
Про что нужно помнить в первую очередь? Каждый ресурс имеет лимит. Прежде всего это касается оперативной памяти. Поэтому размеры заголовков и всех используемых буферов нужно ограничить адекватными значениями на клиента и на сервер целиком. Их обязательно нужно прописать в конфиге nginx.
Ресурсом является и время. Поэтому следующим важным шагом должна стать установка всех тайм-аутов, которые опять же очень важно аккуратно прописать в настройках nginx.
Сразу вопрос: какие параметры буферов и тайм-аутов правильные? Универсального рецепта тут нет, в каждой ситуации они свои. Но есть проверенный подход. Нужно выставить минимальные значения, при которых сайт остается в работоспособном состоянии (в мирное время), то есть страницы отдаются и запросы обрабатываются. Это определяется только тестированием - как с десктопов, так и с мобильных устройств. Алгоритм поиска значений каждого параметра (размера буфера или тайм-аута):
В ряде случаев ревизия данных параметров должна приводить к рефакторингу/редизайну сайта. Например, если сайт не работает без трехминутных AJAX long polling запросов, то нужно не тайм-аут повышать, а long polling заменять на что-то другое - ботнет в 20 тысяч машин, висящий на запросах по три минуты, легко убьет среднестатистический дешевый сервер.
В nginx также есть возможность лимитировать соединения, запросы и так далее. Если вы не уверены в том, как поведет себя определенная часть вашего сайта, то в идеале вам нужно протестировать ее, понять, сколько запросов она выдержит, и прописать это в конфигурации nginx. Одно дело, когда сайт лежит и вы способны прийти и поднять его. И совсем другое дело - когда он лег до такой степени, что сервер ушел в swap. В этом случае зачастую проще перезагрузиться, чем дождаться его триумфального возвращения.
Предположим, что на сайте есть разделы с говорящими названиями /download и /search. При этом мы:
Для этих целей сгодится конфигурация следующего вида:
Http { limit_conn_zone $binary_remote_addr zone=download_c:10m; limit_req_zone $binary_remote_addr zone=search_r:10m \ rate=1r/s; server { location /download/ { limit_conn download_c 1; # Прочая конфигурация location } location /search/ { limit_req zone=search_r burst=5; # Прочая конфигурация location } } }
Обычно имеет прямой смысл установить ограничения limit_conn и limit_req для locations, в которых находятся дорогостоящие к выполнению скрипты (в примере указан поиск, и это неспроста). Ограничения необходимо выбирать, руководствуясь результатами нагрузочного и регрессионного тестирования, а также здравым смыслом.
Обратите внимание на параметр 10m в примере. Он означает, что на расчет данного лимита будет выделен словарь с буфером в 10 мегабайт и ни мегабайтом более. В данной конфигурации это позволит отслеживать 320 000 TCP-сессий. Для оптимизации занимаемой памяти в качестве ключа в словаре используется переменная $binary_remote_addr, которая содержит IP-адрес пользователя в бинарном виде и занимает меньше памяти, чем обычная строковая переменная $remote_addr. Нужно заметить, что вторым параметром к директиве limit_req_zone может быть не только IP, но и любая другая переменная nginx, доступная в данном контексте, - например, в случае, когда вы не хотите обеспечить более щадящий режим для прокси, можно использовать $binary_remote_addr$http_user_agent или $binary_remote_addr$http_cookie_myc00kiez - но использовать такие конструкции нужно с осторожностью, поскольку, в отличие от 32-битного $binary_remote_addr, эти переменные могут быть существенно большей длины и декларированные вами «10m» могут скоропостижно закончиться.
Помимо тонкой настройки nginx, нужно позаботиться о настройках сетевого стека системы. По меньшей мере - сразу включить net.ipv4.tcp_syncookies в sysctl, чтобы разом защитить себя от атаки SYN-flood небольшого размера.
Обратите внимание на более продвинутые настройки сетевой части (ядра) опять же по тайм-аутам и памяти. Есть более важные и менее важные. В первую очередь надо обратить внимание на:
При канале в 100 Мбит/с значения по умолчанию еще как-то годятся; но если у вас в наличии хотя бы гигабит в cекунду, то лучше использовать что-то вроде:
Sysctl -w net.core.rmem_max=8388608 sysctl -w net.core.wmem_max=8388608 sysctl -w net.ipv4.tcp_rmem="4096 87380 8388608" sysctl -w net.ipv4.tcp_wmem="4096 65536 8388608" sysctl -w net.ipv4.tcp_fin_timeout=10
Идеально изучить все параметры /proc/sys/net/**. Надо посмотреть, насколько они отличаются от дефолтных, и понять, насколько они адекватно выставлены. Linux-разработчик (или системный администратор), разбирающийся в работе подвластного ему интернет-сервиса и желающий его оптимизировать, должен с интересом прочитать документацию всех параметров сетевого стека ядра. Возможно, он найдет там специфические для своего сайта переменные, которые помогут не только защитить сайт от злоумышленников, но и ускорить его работу.
Успешные DDoS-атаки изо дня в день гасят e-commerce, сотрясают СМИ, c одного удара отправляют в нокаут крупнейшие платежные системы. Миллионы интернет-пользователей теряют доступ к критичной информации. Угроза насущна, поэтому нужно встречать ее во всеоружии. Выполните домашнюю работу, не бойтесь и держите голову холодной. Вы не первый и не последний, кто столкнется с DDoS-атакой на свой сайт, и в ваших силах, руководствуясь своими знаниями и здравым смыслом, свести последствия атаки к минимуму.
DDOS атака. Объяснение и пример.
Всем привет. Это блог Компьютер76, и сейчас очередная статья об основах хакерского искусства. Сегодня мы поговорим о том, что такое DDOS атака простыми словами и примерами. Перед тем, как бросаться специальными терминами, будет введение, понятное каждому.
Взлом WiFi применяется для забора пароля беспроводной сети. Атаки в форме “ ” позволят слушать интернет-трафик. Анализ уязвимостей с последующей подгрузкой конкретного даёт возможность захвата целевого компьютера. А что же делает DDOS атака? Её цель в конечном итоге – отбор прав на владение ресурсом у законного хозяина. Я не имею ввиду, что сайт или блог вам не будет принадлежать. Это в том смысле, что в случае удачно проведённой атаки на ваш сайт, вы потеряете возможность им управления . По крайней мере, на некоторое время.
Однако в современной интерпретации DDOS атака чаще всего применяется для нарушения нормальной работы любого сервиса. Хакерские группы, названия которых постоянно на слуху, совершают нападения на крупные правительственные или государственные сайты с целью привлечь внимание к тем или иным проблемам. Но почти всегда за такими атаками стоит чисто меркантильный интерес: работа конкурентов или простые шалости с совсем неприлично незащищёнными сайтами. Главная концепция DDOS состоит в том, что к сайту единовременно обращается огромное количество пользователей, а точнее запросов со стороны компьютеров-ботов, что делает нагрузку на сервер неподъёмным. Мы нередко слышим выражение “сайт недоступен”, однако мало, кто задумывается, что скрыто на самом деле за этой формулировкой. Ну, теперь-то вы знаете.
игроки столпились у входа
Представьте, что вы играете в многопользовательскую онлайн игру. С вами играют тысячи игроков. И с большинством из них вы знакомы. Вы обговариваете детали и в час Х проводите следующие действия. Вы все единовременно заходите на сайт и создаёте персонаж с одним и тем же набором характеристик. Группируетесь в одном месте, блокируя своим количеством одновременно созданных персонажей доступ к объектам в игре остальным добросовестным пользователям, которые о вашем сговоре ничего не подозревают.
Представьте, что кому-то вздумалось нарушить автобусное сообщение в городе по определённому маршруту с целью не допустить добросовестных пассажиров к пользованию услугами общественного транспорта. Тысячи ваших друзей единовременно выходят на остановки в начале указанного маршрута и бесцельно катаются во всех машинах от конечной до конечной, пока деньги не кончатся. Поездка оплачена, но никто не выходит ни на одной остановке, кроме конечных пунктов назначения. А другие пассажиры, стоя на промежуточных остановках, грустно смотрят удаляющимся маршруткам вслед, не сумев протолкнуться в забитые автобусы. В прогаре все: и владельцы такси, и потенциальные пассажиры.
В реальности эти варианты физически не претворить в жизнь. Однако в виртуальном мире ваших друзей могут заменить компьютеры недобросовестных пользователей, которые не удосуживаются хоть как-то защитить свой компьютер или ноутбук. И таких подавляющее большинство. Программ для проведения DDOS атаки множество. Стоит ли напоминать, что такие действия противозаконны. А нелепо подготовленная DDOS атака, неважно с каким успехом проведённая, обнаруживается и карается.
Кликая по ссылке сайта, ваш браузер отсылает запрос серверу на отображение искомой страницы. Этот запрос выражается в виде пакета данных. И не одного даже, а целого пакета пакетов! В любом случае объём передаваемых данных на канал всегда ограничен определённой шириной. А объём данных, возвращаемых сервером, несоизмеримо больше тех, что содержаться в вашем запросе. У сервера это отнимает силы и средства. Чем более сильный сервер, тем дороже он стоит для владельца и тем дороже предоставляемые им услуги. Современные серверы легко справляются с резко возросшим наплывом посетителей. Но для любого из серверов всё равно существует критическая величина пользователей, которые хотят ознакомиться с содержанием сайта. Тем яснее ситуация с сервером, который предоставляет услуги по хостингу сайтов. Чуть что, и сайт-потерпевший отключается от обслуживания, дабы не перегрузить процессоры, которые обслуживают тысячи других сайтов, находящиеся на том же хостинге. Работа сайта прекращается до момента, когда прекратится сама DDOS атака. Ну, представьте, что вы начинаете перезагружать любую из страниц сайта тысячу раз в секунду (DOS). И тысячи ваших друзей делают на своих компьютерах тоже самое (distributed DOS или DDOS)… Крупные серверы научились распознавать, что началась DDOS атака, и противодействуют этому. Однако хакеры тоже совершенствуют свои подходы. Так что в рамках этой статьи, что такое DDOS атака более развёрнуто, я уже объяснить не смогу.
ВНИМАНИЕ. Если вы решитесь попробовать, все несохранённые данные будут утеряны, для возвращения компьютера в рабочее состояние потребуется кнопка RESET . Но вы сможете узнать, что конкретно “чувствует” сервер, на который напали. Развёрнутый пример абзацем ниже, а сейчас – простые команды на перегрузку системы.
Система откажется работать.
Назовите типа DDOS.bat
Объяснять смысл обоих команд, я думаю, не стоит. Видно всё невооружённым взглядом. Обе команды заставляют систему исполнить скрипт и тут же его повторить, отсылая в начало скрипта. Учитывая скорость исполнения, система впадает через пару секунд в ступор. Game , как говориться, over .
Для более наглядного примера воспользуйтесь программой Low Orbit Ion Cannon (Ионная пушка с низкой орбиты). Или LOIC . Самый скачиваемый дистрибутив располагается по адресу (работаем в Windows):
https://sourceforge.net/projects/loic/
ВНИМАНИЕ ! Ваш антивирус должен отреагировать на файл как на вредоносный. Это нормально: вы уже знаете, что качаете. В базе сигнатур он помечен как генератор флуда – в переводе на русский это и есть конечная цель бесконечных обращений на определённый сетевой адрес. Я ЛИЧНО не заметил ни вирусов, ни троянов. Но вы вправе засомневаться и отложить загрузку.
Так как нерадивые пользователи забрасывают ресурс сообщениями о вредоносном файле, Source Forge перекинет вас на следующую страницу с прямой ссылкой на файл:
В итоге мне удалось скачать утилиту только через .
Окно программы выглядит вот так:
Пункт 1 Select target позволит злоумышленнику сосредоточиться на конкретной цели (вводится IP адрес или url сайта), пункт 3 Attack options позволит выбрать атакуемый порт, протокол (Method ) из трёх TCP, UDP и HTTP. В поле TCP/UDP message можно ввести сообщение для атакуемого. После проделанного атака начинается по нажатии кнопки IMMA CHARGIN MAH LAZER (это фраза на грани фола из популярного некогда комикс –мема ; американского мата в программе, кстати, немало). Всё.
Этот вариант для опробывания только для локального хоста. Вот почему:
Прочитано: 9 326