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

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

Существуют также программы для добровольного участия в DDoS-атаках.

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

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

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

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

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

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


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

Установка TCP — соединения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Методы обнаружения DoS-атак можно разделить на несколько больших групп:
сигнатурные — основанные на качественном анализе трафика.
статистические — основанные на количественном анализе трафика.
гибридные (комбинированные) — сочетающие в себе достоинства обоих вышеназванных методов.

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

Для защиты от 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 ECHO:

# sysctl net.ipv4.icmp_echo_ignore_all=1


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

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

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


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

Защита строится на отключении очереди «полуоткрытых» 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-атаке и принять соответствующие меры по её избежанию.
 
# Защита от спуфинга
  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-соединению можно быстро получить доступ к серверу.
Программное обеспечение, которое установлено на сервере, должно быть в актуальном состоянии, а именно: должно быть установлено последнее ПО, касающееся обеспечения безопасности системы.
Все сетевые сервисы должны быть защищены брандмауэром.

Перед началом самой атаки атакующие компьютеры только набирают обороты, со временем увеличивая поток пакетов на компьютер-жертву. В это время необходимо быстро принять конкретные действия по предотвращению атаки. Например, для определения 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-адресов.

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

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

Также компания Google готова предоставлять свои ресурсы для отображения контента вашего сайта в том случае, если сайт находится под DDoS-атакой. На данный момент сервис Project Shield находится на стадии тестирования, но туда могут быть приняты сайты некоторых тематик[42]. Цель проекта - защитить свободу слова.
Категория: Интернет | Добавил: Admin3468 (11.12.2015)
Просмотров: 810 | Теги: DoS-атака | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: