DoS-атака

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

DoS (от англ. Denial of Service — отказ в обслуживании) — хакерская атака на вычислительную систему (обычно совершенная хакерами) с целью довести её до отказа, то есть создание таких условий, при которых легальные пользователи системы не могут получить доступ к предоставляемым системным ресурсам (серверам), либо этот доступ затруднён. Отказ «вражеской» системы может быть и шагом к овладению системой (если в нештатной ситуации ПО выдаёт какую-либо критическую информацию — например, версию, часть программного кода и т. д.). Но чаще это мера экономического давления: простой службы, приносящей доход, счета от провайдера и меры по уходу от атаки ощутимо бьют «цель» по карману.[1] В настоящее время DoS и DDoS-атаки наиболее популярны, так как позволяют довести до отказа практически любую систему, не оставляя юридически значимых улик.

DDoS-атака

Содержание

Распределенная DoS-атака[править | править вики-текст]

Если атака выполняется одновременно с большого числа компьютеров, говорят о DDoS-атаке [2] (от англ. Distributed Denial of Service, распределённая атака типа «отказ в обслуживании»). Такая атака проводится в том случае, если требуется вызвать отказ в обслуживании хорошо защищенной крупной компании или правительственной организации. Первым делом злоумышленник сканирует крупную сеть с помощью специально подготовленных сценариев, которые выявляют потенциально слабые узлы. Выбранные узлы подвергаются нападению, и злоумышленник получает на них права администратора. На захваченные узлы устанавливаются троянские программы, которые работают в фоновом режиме.[3] Теперь эти компьютеры называются компьютерами-зомби, их пользователи даже не подозревают, что являются потенциальными участниками DDoS-атаки. Далее злоумышленник отправляет определенные команды захваченным компьютерам и те, в свою очередь осуществляют мощную DoS-атаку на целевой компьютер. В некоторых случаях к фактической DDoS-атаке приводит непреднамеренное действие, например, размещение на популярном интернет-ресурсе ссылки на сайт, размещённый на не очень производительном сервере (слэшдот-эффект). Большой наплыв пользователей приводит к превышению допустимой нагрузки на сервер и, следовательно, отказу в обслуживании части из них.

Для защиты от сетевых атак применяется ряд фильтров, подключенных к интернет-каналу с большой пропускной способностью. Фильтры действуют таким образом, что последовательно анализируют проходящий трафик, выявляя нестандартную сетевую активность и ошибки. В число анализируемых шаблонов нестандартного трафика входят все известные на сегодняшний день методы атак, в том числе реализуемые и при помощи распределенных бот-сетей[4].

Причины использования DDoS-атак[править | править вики-текст]

Жертвы DDoS-атак.[5]

Специалисты в области защиты информации выделяют несколько причин использования DDoS-атак.[6]

Личная неприязнь[править | править вики-текст]

Эта причина нередко служит поводом для атак на крупные коммерческие и правительственные организации и компании. Так в 1999 году были атакованы Web-узлы ФБР, которые впоследствии были недоступны в течение нескольких недель. Мотивом послужил недавний рейд ФБР против хакеров.[7]

Развлечение[править | править вики-текст]

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

Политический протест[править | править вики-текст]

Наиболее известными DDoS-атаками с целью политического протеста были акции в поддержку Памятника Воину-освободителю в Эстонии (2007)[9], Южной Осетии (2008), Wikileaks (2011), Megaupload (2012) и EX.UA (2012).

Недобросовестная конкуренция[править | править вики-текст]

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

Вымогательство или шантаж[править | править вики-текст]

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

Классификация DoS-атак[править | править вики-текст]

Работа сервера в нормальном режиме[10]

Хакерам гораздо легче осуществить DoS-атаку на систему, чем получить полный доступ к ней. Существуют различные причины, из-за которых может возникнуть DoS-условие, то есть такая ситуация, при которой пользователи не могут получить доступ к ресурсам, которые предоставляет сервер, либо доступ к ним существенно затруднен:[11]

Насыщение полосы пропускания[править | править вики-текст]

В настоящее время практически каждый компьютер подключен к сети Internet, либо к локальной сети. Это служит отличным поводом для осуществления DoS-атаки за счет переполнения полосы пропускания. Обычно злоумышленники пользуются флудом (англ. flood — «наводнение», «переполнение») — атака, связанная с большим количеством обычно бессмысленных или сформированных в неправильном формате запросов к компьютерной системе или сетевому оборудованию, имеющая своей целью или приведшая к отказу в работе системы из-за исчерпания системных ресурсов — процессора, памяти или каналов связи. Есть несколько разновидностей флуда.[12]

HTTP-флуд и ping-флуд[править | править вики-текст]

Это самый примитивный вид DoS-атаки. Насыщение полосы пропускания можно осуществить с помощью обычных ping-запросов только в том случае, если канал атакующего (например 1.544 Мбит/с) намного шире канала компьютера-жертвы, скорость в котором 128 Кбит/с. Но такая атака бесполезна против сервера, так как тот, в свою очередь, обладает довольно широкой полосой пропускания. Для атаки на сервер обычно применяется HTTP-флуд. Атакующий шлет маленький по объему HTTP-пакет, но такой, чтобы сервер ответил на него пакетом, размер которого в сотни раз больше. Даже если канал сервера в десять раз шире канала атакующего, то все равно есть большой шанс насытить полосу пропускания жертвы. А для того, чтобы ответные HTTP-пакеты не вызвали отказ в обслуживании у злоумышленника, он каждый раз подменяет свой ip-адрес на ip-адреса узлов в сети.[13]

Smurf-атака (ICMP-флуд)[править | править вики-текст]

Атака Smurf или ICMP-флуд — одна из самых опасных видов DoS-атак, так как у компьютера-жертвы после такой атаки произойдет отказ в обслуживании практически со 100 % гарантией. Злоумышленник использует широковещательную рассылку для проверки работающих узлов в системе, отправляя ping-запрос. Очевидно, атакующий в одиночку не сможет вывести из строя компьютер-жертву, поэтому требуется ещё один участник — это усиливающая сеть. В ней по широковещательному адресу злоумышленник отправляет поддельный ICMP пакет. Затем адрес атакующего меняется на адрес жертвы. Все узлы пришлют ей ответ на ping-запрос. Поэтому ICMP-пакет, отправленный злоумышленником через усиливающую сеть, содержащую 200 узлов, будет усилен в 200 раз. Поэтому для такой атаки обычно выбирается большая сеть, чтобы у компьютера-жертвы не было никаких шансов.[14]

Атака Fraggle (UDP-флуд)[править | править вики-текст]

Атака Fraggle (осколочная граната)(от англ. Fraggle attaсk) является полным аналогом Smurf-атаки, где вместо ICMP пакетов используются пакеты UDP, поэтому ее ещё называют UDP-флуд. Принцип действия этой атаки простой: на седьмой порт жертвы отправляются echo-команды по широковещательному запросу. Затем подменяется ip-адрес злоумышленника на ip-адрес жертвы, которая вскоре получает множество ответных сообщений. ИХ количество зависит от числа узлов в сети. Эта атака приводит к насыщению полосы пропускания и полному отказу в обслуживании жертвы. Если все же служба echo отключена, то будут сгенерированы ICMP-сообщения, что также приведет к насыщению полосы.[14]

Атака с помощью переполнения пакетами SYN (SYN-флуд)[править | править вики-текст]
Установка TCP — соединения

До появления атаки Smurf была широко распространена атака с помощью переполнения пакетами SYN, также известная под названием SYN-флуд.[15] Для описания ее действия можно остановиться на рассмотрении двух систем А и В, которые хотят установить между собой TCP соединение, после которого они смогут обмениваться между собой данными. На установку соединения выделяется некоторое количество ресурсов, этим и пользуются DoS — атаки. Отправив несколько ложных запросов, можно израсходовать все ресурсы системы, отведенные на установление соединения.[16] Рассмотрим подробнее, как это происходит. Хакер с системы А отправляет пакет SYN системе В, но предварительно поменяв свой ip-адрес на несуществующий. Затем, ничего не подозревая, компьютер В отправляет ответ SYN/ACK на несуществующий ip-адрес и переходит в состояние SYN-RECEIVED. Так как сообщение SYN/ACK не дойдет до системы А, то компьютер В никогда не получит пакет с флагом ACK.[17][18] Данное потенциальное соединение будет помещено в очередь. Из очереди оно выйдет только по истечении 75 секунд.[19] Этим пользуются злоумышленники и отправляют сразу несколько пакетов SYN на компьютер жертвы с интервалом в 10 секунд, чтобы полностью исчерпать ресурсы системы. Определить источник нападения очень непросто, так как злоумышленник постоянно меняет исходный ip — адрес.[20]

Недостаток ресурсов[править | править вики-текст]

Злоумышленники прибегают к данному виду DoS атаки для захвата системных ресурсов, таких как оперативная и физическая память, процессорное время и другие. Обычно такие атаки проводятся с учетом того, что хакер уже обладает некоторым количеством ресурсов системы. Целью атаки является захват дополнительных ресурсов. Для этого не обязательно насыщать полосу пропускания, а достаточно просто перегрузить процессор жертвы, то есть занять все допустимое процессорное время.[21]

Отправка «тяжелых» пакетов[править | править вики-текст]

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

Переполнение сервера лог-файлами[править | править вики-текст]

Лог-файлы сервера — это файлы, в которых записываются действия пользователей сети или программы. Неквалифицированный администратор может неправильно настроить систему на своем сервере, не установив определенный лимит. Хакер воспользуется этой ошибкой и будет отправлять большие по объему пакеты, которые вскоре займут все свободное место на жестком диске сервера. Но эта атака сработает только в случае с неопытным администратором, квалифицированные хранят лог-файлы на отдельном системном диске.[13]

Плохая система квотирования[править | править вики-текст]

На некоторых серверах есть так называемая CGI-программа, которая связывает внешнюю программу с Web-сервером. Если хакер получит доступ к CGI, то он сможет написать скрипт (англ. scripting language), который задействует немало ресурсов сервера, таких как оперативная память и процессорное время. К примеру, скрипт CGI может содержать в себе циклическое создание больших массивов или вычисления сложных математических формул. При этом центральный процессор может обращаться к такому скрипту несколько тысяч раз. Отсюда вывод: если система квотирования настроена неправильно, то такой скрипт за малое время отнимет все системные ресурсы у сервера. Конечно, выход из этой ситуации очевиден — поставить определенный лимит на доступ к памяти, но и в этом случае процесс скрипта, достигнув этого лимита, будет находиться в ожидании до тех пор, пока не выгрузит из памяти все старые данные. Поэтому пользователи будут испытывать недостаток в системных ресурсах.[22]

Недостаточная проверка данных пользователя[править | править вики-текст]

Недостаточная проверка данных пользователя также приводит к бесконечному либо длительному циклу или повышенному длительному потреблению процессорных ресурсов (вплоть до исчерпания процессорных ресурсов) либо выделению большого объёма оперативной памяти (вплоть до исчерпания доступной памяти).[16]

Атака второго рода[править | править вики-текст]

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

Ошибки программирования[править | править вики-текст]

Профессиональные реализаторы DoS-атак не используют такой примитивный способ атаки, как насыщение полосы пропускания. Полностью разобравшись в структуре системы жертвы, они пишут программы (эксплойты), которые помогают атаковать сложные системы коммерческих предприятий или организаций. Чаще всего это ошибки в программном коде, приводящие к обращению к неиспользуемому фрагменту адресного пространства, выполнению недопустимой инструкции или другой необрабатываемой исключительной ситуации, когда происходит аварийное завершение программы-сервера — серверной программы. Классическим примером является обращение по нулевому (англ. null) адресу.[23]

Недостатки в программном коде[править | править вики-текст]

Обработка исключительных ситуаций всегда была головной болью для создателей операционных систем. Злоумышленники ищут ошибки в программном коде какой-либо программы либо операционной системы, заставляют ее обрабатывать такие исключительные ситуации, которые она обрабатывать не умеет. За счет этого возникают ошибки. Простым примером может служить частая передача пакетов, в которой не учитываются спецификации и стандарты RFC-документов.[24] Злоумышленники наблюдают за тем, справляется ли сетевой стек с обработкой исключительных ситуаций. Если нет — то передача таких пакетов приведет к панике ядра (kernel panic) или даже к краху всей системы в целом.[25]

К этому классу относится ошибка Ping of death, распространённая в 1990-е годы. Длина пакета IPv4 по стандарту RFC 791 IPv4 не может превышать 65 535 байт; компьютеру-жертве посылается ICMP-пакет большей длины, предварительно разбитый на части; у жертвы от такого пакета переполняется буфер. Другая ошибка тех времён — WinNuke (Windows 95 неправильно обрабатывала редкий бит TCP-пакета URG).

Переполнение буфера[править | править вики-текст]

Переполнение буфера возникает в том случае, если программа из-за ошибки программиста записывает данные за пределами буфера. Допустим, программист написал приложение для обмена данными по сети, которое работает по какому-либо протоколу. В этом протоколе строго указано, что определенное поле пакета максимум может содержать 65536 байт данных. Но после тестирования приложения оказалось, что в ее клиентской части в это поле нет необходимости помещать данные, размер которых больше 255 байт. Поэтому и серверная часть примет не более 255 байт. Далее злоумышленник изменяет код приложения так, что теперь клиентская часть отправляет все допустимые по протоколу 65536 байт, но сервер к их приему не готов. Из-за этого возникает переполнение буфера, и пользователи не могут получить доступ к приложению.[13]

Маршрутизация и атаки DNS[править | править вики-текст]

атака DNS

Все атаки на DNS-серверы можно разбить на два типа:[26]

DoS-атаки на уязвимости в программном обеспечении на DNS-серверах[править | править вики-текст]

Их ещё называют атаками на кэш. В процессе этой атаки злоумышленник подменяет IP-адрес DNS-сервера домена жертвы. После чего атакуемый при запросе HTML-страницы, попадает либо в «черную дыру» (если IP-адрес был заменен на несуществующий), либо прямиком на сервер злоумышленника. Второй случай более плачевен, так как злоумышленник легко может получить доступ к личным данным ничего не подозревающей жертвы. Рассмотрим на примере, как это происходит. Допустим, что клиент хочет попасть на Web-узел компании microsoft.com. Но использовав уязвимость в DNS-сервере компании, злоумышленник подменил IP-адрес узла microsoft.com на свой. Теперь жертва автоматически перенаправляется на узел к атакующему.

DDoS атаки на DNS-серверы[править | править вики-текст]
Иллюстрация примера атаки через неправильно сконфигурированный DNS-сервер.[27]

Далее речь пойдет о DDoS-атаках, так как участие DNS-серверов всегда подразумевает наличие большого количества компьютеров. Атаки на DNS-серверы — самые банальные атаки, приводящие к отказу в обслуживании DNS-сервера как путем насыщения полосы пропускания, так и путем захвата системных ресурсов. Но такая атака требует огромного количества компьютеров-зомби. После ее успешного проведения, пользователи не могут попасть на нужную им страницу в Интернете, потому что DNS-сервер не может преобразовать доменное имя в IP-адрес сайта. Но в настоящее время атаки на DNS-серверы с использованием большого числа компьютеров-зомби (такую систему называют «ботнет») менее актуальны, так как интернет-провайдеры легко замечают большое количество исходящего трафика и блокируют его. Злоумышленники теперь обходятся небольшими ботнетами, либо не используют их вовсе. Основная идея состоит в том, что хакеры используют DNS-серверы[28], работающие на основе технологии DNSSEC.[29] Мощность атаки возрастает вследствие увеличения отражений DNS-запросов. В идеале DNS-серверы определённого провайдера должны обрабатывать только те запросы, которые пришли к ним от пользователей этого провайдера, но это далеко от реальности. По всему миру очень много некорректно настроенных серверов, которые могут принять запрос от любого пользователя в Интернете. Работники компании CloudFlare утверждают, что в настоящее время в Интернете более 68 тысяч неправильно настроенных DNS-серверов, из них более 800 — в России.[30] Именно такие DNS-серверы используются для DDoS-атак. Основная идея состоит в том, что практически все DNS-запросы шлются по протоколу UDP, в котором сравнительно просто подменить обратный адрес на адрес жертвы. Поэтому через неправильно сконфигурированные DNS-серверы злоумышленник шлет такой запрос, чтобы ответ на него был как можно больше по объему(например, это может быть список всех записей в таблице DNS), в котором обратный ip-адрес подменяется на ip-адрес жертвы. Как правило, серверы провайдеров имеют довольно большую пропускную способность, поэтому сформировать атаку в несколько десятков Гбит/c не составляет особого труда.[31]

Расположение неправильно сконфигурированных DNS-серверов.
Красный — около 30 тысяч штук; бледно-бордовый — около 5 тысяч штук; серый — от 10 до 2000 штук; белый — практически нет неправильно настроенных DNS-серверов



Список автономных систем с самым большим числом неправильно сконфигурированных DNS-серверов на 10.11.2013.[30]

Число DNS-серверов Имя автономной системы
2108 BELPAK-AS Republican Unitary Telecommunication Enterprise Be
1668 HINET Data Communication Business Group
1596 OCN NTT Communications Corporation
1455 TELEFONICA CHILE S.A.
1402 KIXS-AS-KR Korea Telecom
965 Telefonica de Argentina
894 ERX-TANET-ASN1 Tiawan Academic Network (TANet) Information C
827 KDDI KDDI CORPORATION
770 Compa Dominicana de Telefonos, C. por A. — CODETEL
723 CHINANET-BACKBONE No.31,Jin-rong Street
647 LGDACOM LG DACOM Corporation
606 UUNET — MCI Communications Services, Inc. d/b/a Verizon Busi
604 TELKOMNET-AS2-AP PT Telekomunikasi Indonesia
601 COLOMBIA TELECOMUNICACIONES S.A. ESP


Выявление DoS/DDoS-атак[править | править вики-текст]

Существует мнение, что специальные средства для выявления DoS-атак не требуются, поскольку факт DoS-атаки невозможно не заметить. Во многих случаях это действительно так. Однако достаточно часто наблюдались удачные DoS-атаки, которые были замечены жертвами лишь спустя 2-3 суток. Бывало, что негативные последствия атаки (флуд-атаки) выливались в излишние расходы на оплату избыточного Internet-трафика, что выяснялось лишь при получении счёта от Internet-провайдера. Кроме того, многие методы обнаружения атак неэффективны вблизи объекта атаки, но эффективны на сетевых магистральных каналах. В таком случае целесообразно ставить системы обнаружения именно там, а не ждать, пока пользователь, подвергшийся атаке, сам её заметит и обратится за помощью. К тому же для эффективного противодействия DoS-атакам необходимо знать тип, характер и другие характеристики DoS-атак, а оперативно получить эти сведения как раз и позволяют службы обеспечения безопасности. Они помогают произвести некоторые настройки системы. Но определить, была ли данная атака произведена злоумышленником, либо отказ в обслуживании был следствием нештатного события, они не могут. В соответствии с правилами политики обеспечения безопасности, при обнаружении DoS или DDoS-атаки потребуется ее регистрация для дальнейшего аудита. После того, как атака была зафиксирована, могут потребоваться службы обеспечения безопасности для некоторых корректировок в системе и для ее возвращения к прежнему уровню работы. Также для обнаружения DDoS-атаки могут использоваться службы, не связанные с безопасностью, например, перенаправление трафика по другим каналам связи, включение резервных серверов для копирования информации. Таким образом, средства для обнаружения и предотвращения DDoS-атак могут сильно различаться в зависимости от вида защищаемой системы.[32]

Методы обнаружения DoS-атак можно разделить на несколько больших групп:

  • сигнатурные — основанные на качественном анализе трафика.
  • статистические — основанные на количественном анализе трафика.
  • гибридные (комбинированные) — сочетающие в себе достоинства обоих вышеназванных методов.

Получившие известность DDoS атаки[править | править вики-текст]

Визуализация DDoS-атаки[10]
Пик DDoS-атаки на CloudFlare
Воздействие DDoS-атаки на LINX в марте 2013 года.
Архитектура сетей разного уровня в Интернет

Так в 2012 году было проведено несколько крупномасштабных DDoS-атак на DNS-серверы. Первая из них планировалась осуществиться 31 марта, но так и не состоялась. Целью злоумышленников из группы Anonymous[33] было довести до отказа всю глобальную сеть Интернет. Они хотели это сделать с помощью DDoS-атаки на 13 корневых DNS-серверов[34]. Злоумышленники выпустили специальную утилиту Ramp, которая предназначалась для объединения более мелких DNS-серверов и интернет-провайдеров. С помощью них и планировалось вывести из строя глобальную сеть. Точно такая же атака была проведена в ноябре 2002 года. Ее до сих пор считают самой глобальной DoS-атакой на DNS-серверы, так как в результате злоумышленники смогли вывести из строя 7 корневых серверов. Следующая атака прошла в августе на компанию AT&T, являющуюся крупнейшей американской телекоммуникационной компанией. В результате после атаки, которая продлилась 8 часов, вышли из строя DNS-серверы компании. Пользователи некоторое время не могли зайти не только на сайт компании AT&T, но и на коммерческие сайты в ее сети. Ещё одна атака прошла 10 ноября 2012 года на компанию Go Daddy, которая является крупнейшим в мире хостинг-провайдером. Последствия атаки были очень разрушительны: пострадал не только сам домен www.godaddy.com, но и более 33 миллионов доменов в сети Интернет, которые были зарегистрированы компанией Go Daddy.[35] Намного раньше, 22 августа 2003 года злоумышленники при помощи вируса Mydoom вывели из строя сайт компании SCO, занимающейся разработкой системного программного обеспечения. Целых 3 дня пользователи не могли попасть на сайт компании.[36]

Атака на Spamhaus

15 сентября 2012 года, крупная DDoS-атака мощностью в 65 Гбит/с обрушилась на компанию CloudFlare, которая является сетью доставки контента, предназначенная для виртуального хостинга. Серверы данной компании расположены по всему миру.[31] Это помогает пользователю загружать страницу в Интернете с ближайшего (с географической точки зрения) сервера CloudFlare намного быстрее. Ранее данная компания выдерживала DDoS-атаки мощностью в несколько десятков Гбит/с, но с атакой в 65 Гбит/с справиться не смогла. Этот пик пришелся на субботу 15 сентября в 13:00. Сотрудники, работавшие на тот момент в компании CloudFlare, были бывшими хакерами, которым стало интересно разобраться, каким же именно методом была проведена данная DDoS-атака, и как злоумышленники смогли провести её с такой мощностью. Оказалось, что для такой атаки потребовалось бы 65 тысяч ботов, создающих трафик в 1 Мбит/c каждый. Но это невозможно, так как интернет-провайдеры с легкостью обнаружат и заблокируют такой большой объем трафика. При этом аренда большого ботнета очень дорого обходится. Поэтому выяснилось, что для такой атаки использовался метод приумножения DNS-запросов через открытые DNS-серверы. Приблизительно через полгода, 18 марта, началась, по версии газеты The New York Times, самая большая DDoS-атака в истории, жертвой которой стала компания Spamhaus, занимающаяся занесением в черный список источников спама.[37] Причиной атаки послужил тот факт, что Spamhaus занесла в черный список за рассылку спама голландского хост-провайдера Cyberbunker. Второй свое недовольство выразил с помощью DDoS-атаки с пиковой мощностью в 300 Гбит/с через открытые DNS-серверы. 19 марта мощность достигла 90 Гбит/c, меняя свое значение от 30 Гбит/с.[38] После этого было затишье, но оно продлилось недолго и атака возобновилась с новой силой и 22 марта ее мощность достигла 120 Гбит/c. Для отражения атаки компания CloudFlare распределила трафик между своими дата-центрами, после чего Cyberbunker поняла, что не сможет «положить» CloudFlare и начала новую волну атаки на ее вышестоящие пиры. Некоторая часть пакетов отфильтровалась на уровне Tier2, остальной трафик попал на уровень Tier1, где мощность и достигла своего максимума в 300 Гбит/c. В этот момент миллионы пользователей сети Интернет почувствовали на себе всю мощь данной атаки, у них тормозили некоторые сайты. В итоге провайдеры выдержали эту атаку, но в Европе было зарегистрировано некоторое увеличение пинга при доступе к различным сайтам. Например, в лондонском центре обмена трафика LINX 23 марта из-за атаки скорость обмена данными упала более чем в два раза. Средняя скорость в 1.2 Тбит/c упала до 0.40 Тбит/c.[39]

Защита от основных видов DoS-атак[править | править вики-текст]

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

Защита от HTTP-флуда[править | править вики-текст]

Для защиты от HTTP-флуда необходимо увеличить одновременное количество максимальных подключений к базе данных сервера, установить перед Web-сервером Apache производительный Nginx для кэширования запросов.

# Увеличение максимального количества используемых файлов
  worker_rlimit_nofile 80000;
  events {
      # Увеличение максимального количества соединений
      worker_connections 65536;
      # Использование эффективного метода epoll для обработки соединений
      use epoll;
  }
  http {
      gzip off;
      # Отключение таймаута на закрытие keep-alive соединений
      keepalive_timeout 0;
      # Скрытие версии nginx в заголовке ответа
      server_tokens off;
      # Сбрасывание соединения по таймауту
      reset_timedout_connection on;
  }
  # Стандартные настройки для работы в качестве прокси
  server {
      listen 111.111.111.111 default deferred;
      server_name host.com www.host.com;
      log_format IP $remote_addr;
      location / {
          proxy_pass http://127.0.0.1/;
      }
     location ~* \.(jpeg|jpg|gif|png|css|js|pdf|txt|tar)$ {
         root /home/www/host.com/httpdocs;
     }
  }

Защита от ICMP-флуда[править | править вики-текст]

Для того, чтобы защититься от ICMP-флуда нужно отключить ответы на запросы ICMP ECHO:

# sysctl net.ipv4.icmp_echo_ignore_all=1[40]

или с помощью брандмауэра:

# iptables -A INPUT -p icmp -j DROP --icmp-type 8

Защита от UDP-флуда[править | править вики-текст]

Так как UDP-пакеты отсылаются на различные UDP-сервисы, то достаточно просто отключить их от внешнего мира и установить ограничение на количество соединений к DNS-серверу:

# iptables -I INPUT -p udp --dport 53 -j DROP -m iplimit --iplimit-above 1[40]

Защита от SYN-флуда[править | править вики-текст]

Защита строится на отключении очереди «полуоткрытых» TCP-соединений:

# sysctl -w net.ipv4.tcp_max_syn_backlog=1024

Включение механизма TCP syncookies:

# sysctl -w net.ipv4.tcp_syncookies=1

Ограничение максимального числа «полуоткрытых» соединений с одного IP к конкретному порту:

# iptables -I INPUT -p tcp --syn --dport 80 -m iplimit --iplimit-above 10 -j DROP

На подходе к серверу должна быть настроена система анализа трафика, которая поможет вовремя узнать о приближающейся DoS-атаке и принять соответствующие меры по ее избежанию.[40]

 # Защита от спуфинга
  net.ipv4.conf.default.rp_filter = 1
  # Проверять TCP-соединение каждую минуту. Если на другой стороне - легальная машина, она сразу ответит. Значение по умолчанию - 2 часа.
  net.ipv4.tcp_keepalive_time = 60
  # Повторить через 10 секунд
  net.ipv4.tcp_keepalive_intvl = 10
  # Количество проверок перед закрытием соединения
  net.ipv4.tcp_keepalive_probes = 5

Универсальные советы[править | править вики-текст]

Также есть несколько универсальных советов, которые помогут подготовить систему к DoS-атаке.

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

Действия в самом начале DoS-атаки[править | править вики-текст]

Перед началом самой атаки атакующие компьютеры только набирают обороты, со временем увеличивая поток пакетов на компьютер-жертву. В это время необходимо быстро принять конкретные действия по предотвращению атаки. Например, для определения SYN-флуда необходимо установить число «полуоткрытых» соединений:

grep ":80\ " | grep SYN_RCVD

В идеале их не должно быть совсем (максимум 1-3). Если это не так, то можно говорить о наличии DoS-атаки. Сложнее обстоит дело с HTTP-флудом. В самом начале необходимо подсчитать количество подключений на 80 порт и количество процессов Apache. Если они значительно превышают среднестатистические, то следует задуматься.

grep httpd | wc -l grep ":80\ " | wc -l

Список IP-адресов, с которых идут запросы на подключение можно посмотреть следующей командой:

grep ":80\ " | sort | uniq -c | sort -nr | less

Далее следует провести анализ пакетов с помощью команды tcpdump:

# tcpdump -n -i eth0 -s 0 -w output.txt dst port 80 and host IP-сервера

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

# iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --destination-port http -j DROP

Все эти методы обнаружения и предотвращения DoS-атаки дадут лишь некоторое время для обращения к провайдеру. Необходимо предоставить все лог-файлы web-сервера, ядра самого компьютера, брандмауэра и списки всех обнаруженных IP-адресов.[40]

Защита от DDoS-атак[править | править вики-текст]

Цитата

Только атаки дилетантов нацелены на машины. Атаки профессионалов нацелены на людей.

Б. Шнайер[41]

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

  • Предотвращение. Профилактика причин, побуждающих тех или иных лиц организовывать и предпринять DDoS-атаки. (Очень часто кибератаки вообще являются следствиями личных обид, политических, религиозных и иных разногласий, провоцирующего поведения жертвы и т. п.). Нужно вовремя устранить причины DDoS-атак, после этого сделать выводы, чтобы избежать таких атак в будущем.
  • Ответные меры. Применяя технические и правовые меры, нужно как можно активнее воздействовать на источника и организатора DDoS — атаки. В настоящее время даже существуют специальные фирмы, которые помогают найти не только человека, который провел атаку, но даже и самого организатора.
  • Программное обеспечение. На рынке современного программного и аппаратного обеспечения существует и такое, которое способно защитить малый и средний бизнес от слабых DDoS-атак. Эти средства обычно представляют собой небольшой сервер.
  • Фильтрация и блэкхолинг. Блокирование трафика, исходящего от атакующих машин. Эффективность этих методов снижается по мере приближения к объекту атаки и повышается по мере приближения к атакующей машине. В этом случае фильтрация может быть двух видов: использование межсетевых экранов и списков ACL. Использование межсетевых экранов блокируют конкретный поток трафика, но не позволяют отделить «хороший» трафик от «плохого». ACL списки фильтруют второстепенные протоколы и не затрагивают протоколы TCP. Это не замедляет скорость работы сервера, но бесполезно в том случае, если злоумышленник использует первостепенные запросы.[42]
  • Обратный DDOS — перенаправление трафика, используемого для атаки, на атакующего. При достаточной мощности атакуемого сервера, позволяет не только успешно отразить атаку, но и вывести из строя сервер атакующего.
  • Устранение уязвимостей. Не работает против флуд-атак, для которых «уязвимостью» является конечность тех или иных системных ресурсов. Данная мера нацелена на устранение ошибок в системах и службах.
  • Наращивание ресурсов. Абсолютной защиты, естественно, не дает, но является хорошим фоном для применения других видов защиты от DDoS-атак.
  • Рассредоточение. Построение распределённых и дублирование систем, которые не прекратят обслуживать пользователей, даже если некоторые их элементы станут недоступны из-за DoS-атаки.
  • Уклонение. Увод непосредственной цели атаки (доменного имени или IP-адреса) подальше от других ресурсов, которые часто также подвергаются воздействию вместе с непосредственной целью атаки.
  • Активные ответные меры. Воздействие на источники, организатора или центр управления атакой, как техногенными, так и организационно-правовыми средствами.
  • Использование оборудования для отражения DDoS-атак. Например, DefensePro® (Radware), SecureSphere® (Imperva), Периметр (МФИ Софт), Arbor Peakflow®, Riorey, Impletec iCore и от других производителей.
  • Приобретение сервиса по защите от DDoS-атак. Актуально в случае превышения флудом пропускной способности сетевого канала.

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. Internet Denial of Service, 2004
  2. Denial of Service Attacks, 2004
  3. Компьютерные вирусы изнутри и снаружи, 2006
  4. Что такое DDoS-атака и как с этим бороться. Проверено 19 марта 2013.
  5. Хакер, 12.08.2013
  6. Иллюстрированный самоучитель по защите в Интернет, 2004, p. 2
  7. Практическая криптография, 2005
  8. The philosophy of Anonymous, 2013
  9. Lenta.ru: Медиа: Хакеры атакуют эстонские правительственные сайты
  10. 1 2 Хакер, 28.04.2013
  11. Иллюстрированный самоучитель по защите в Интернет, 2004, p. 3
  12. Иллюстрированный самоучитель по защите в Интернет, 2004, p. 4
  13. 1 2 3 Хакер, 2003
  14. 1 2 Иллюстрированный самоучитель по защите в Интернет, 2004, p. 8
  15. RFC 4987, 2007
  16. 1 2 Security Problems in the TCP/IP protocol Suite, 1989
  17. «Project Neptune», 07.1996
  18. A Weakness in the 4.2BSD Unix TCP/IP Software, 1985
  19. IP-spooling Demystified, 1996
  20. Иллюстрированный самоучитель по защите в Интернет, 2004, p. 9
  21. Иллюстрированный самоучитель по защите в Интернет, 2004, p. 5
  22. Хакер, 2005
  23. Иллюстрированный самоучитель по защите в Интернет, 2004, p. 6
  24. RFC documents, 2004
  25. Анализ типовых нарушений безопасности в сетях, 2001
  26. Иллюстрированный самоучитель по защите в Интернет, 2004, p. 7
  27. CloudFlare, 30.10.2012
  28. DNS, 1987
  29. DNSSEC, 2010
  30. 1 2 Хакер, 31.10.2012
  31. 1 2 Хакер, 18.09.2012
  32. Информационная безопасность открытых систем, 2012, p. 39
  33. IRC-сервер Anonymous, 2011
  34. Root name server, 2013
  35. Падение DNS-серверов GoDaddy, 11.09.2012
  36. MyDoom – самая дорогая вредоносная программа десятилетия, 26.01.2011
  37. How the Cyberattack on Spamhaus Unfolded, 2013
  38. The DDoS That Almost Broke the Internet, 2013
  39. DDoS-атака 300 Гбит/с, 27.03.2013
  40. 1 2 3 4 Хакер, 2009
  41. Semantic Attacks: The Third Wave of Network Attacks
  42. DDoS Mitigation via Regional Cleaning Centers, 2011

Литература[править | править вики-текст]

Ссылки[править | править вики-текст]