Вопрос: Я под DDoS. Что я могу сделать?


Это Канонический вопрос о DoS и смягчении DDoS.

Я обнаружил огромный трафик трафика на веб-сайте, который я принимаю сегодня; Я получаю тысячи подключений в секунду, и я вижу, что использую все 100 Мбит / с моей доступной пропускной способности. Никто не может получить доступ к моему сайту, потому что все запросы тайм-аут, и я даже не могу войти на сервер, потому что SSH тоже не работает! Это случалось пару раз раньше, и каждый раз это длилось пару часов и уходило само по себе.

Иногда у моего веб-сайта есть другая, но связанная с этим проблема: средняя загрузка моего сервера (обычно около 0,25) ракеты до 20 или более, и никто не может получить доступ к моему сайту так же, как и к другому делу. Он также уходит через несколько часов.

Перезагрузка моего сервера не помогает; что я могу сделать, чтобы сделать мой сайт доступным снова и что происходит?

Связано это, я нашел один раз, что на день или два, каждый раз, когда я начал свою службу, он получил соединение с определенного IP-адреса, а затем разбился. Как только я снова начал это, это случилось снова, и он снова рухнул. Как это похоже, и что я могу с этим поделать?


170
2017-08-19 09:14


Источник


Я последовал за этим после прочтения (Создание канонического вопроса «Справка, я получаю DDOS-редактор!»?). Я просто хотел сказать «Ницца»! - AngryWombat
Также см security.stackexchange.com/a/792/2379 - Pacerier


Ответы:


Вы испытываете атаку отказа в обслуживании. Если вы видите трафик, поступающий из нескольких сетей (разные IP-адреса в разных подсетях), у вас есть распределенный отказ в обслуживании (DDoS); если все это происходит из того же места, у вас есть обычная старая DoS. Может быть полезно проверить, если вы в состоянии; используйте netstat для проверки. Это может быть трудно сделать.

Отказ в обслуживании обычно относится к нескольким категориям: основанному на трафике и основанному на нагрузке. Последний элемент (с аварийной службой) - это DoS на основе эксплойта и совсем другой.

Если вы пытаетесь определить, какой тип атаки происходит, вы можете захватить некоторый трафик (используя wirehark, tcpdump или libpcap). Вы должны, если это возможно, но также знать, что вы, вероятно, захватите довольно много трафика.

Так часто, как нет, они будут поступать из бот-сетей (сети скомпрометированных хостов под центральным контролем какого-то злоумышленника, чьи ставки они будут делать). Это хороший способ для злоумышленника (очень дешево) приобрести восходящую полосу пропускания множества разных хостов в разных сетях, чтобы напасть на вас, прикрывая их дорожки. Низкая орбитальная ионная пушка является одним из примеров ботнета (несмотря на то, что он является добровольным, а не вредоносным); Зевс является более типичным.

Трафик на основе

Если вы находитесь под управлением DoS на основе трафика, вы обнаруживаете, что есть так много трафика на ваш сервер, что его подключение к Интернету полностью насыщено. Существует высокая скорость потери пакетов при отправке вашего сервера из другого места и (в зависимости от используемых методов маршрутизации) иногда вы также видите очень высокую задержку (пинг высок). Такая атака обычно является DDoS.

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

Тем не менее, большинство интернет-провайдеров и поставщиков транзита будут активно реализовывать то, что происходит, и публиковать маршрут черной дыры для вашего сервера. Это означает, что они публикуют маршрут на ваш сервер с минимальными затратами, используя 0.0.0.0: они делают трафик на ваш сервер более не маршрутизируемым в Интернете. Эти маршруты обычно / 32s, и в конечном итоге они удаляются. Это вам совсем не помогает; целью является защита сети интернет-провайдера от потопа. В течение всего времени ваш сервер будет эффективно потерять доступ в Интернет.

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

Вкратце, есть очень мало, что вы можете сделать об этой проблеме. Лучшим долгосрочным решением является размещение ваших услуг в разных местах в Интернете, которые должны быть DDoSed индивидуально и одновременно, что делает DDoS намного более дорогостоящим. Стратегии для этого зависят от службы, которую необходимо защитить; DNS может быть защищен несколькими авторитетными серверами имен, SMTP с резервными записями MX и почтовыми обменниками и HTTP с циклическим DNS или многоточечным (но некоторое ухудшение может быть заметным в любом случае).

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

Если вы в состоянии это сделать, подумайте об использовании сеть распространения контента (CDN), такие как Akamai, Limelight и CDN77, или использовать службу очистки DDoS, такую ​​как CloudFlare или Prolexic. Эти службы принимают активные меры для смягчения этих типов атак, а также имеют так много доступной полосы пропускания во многих местах, которые наводняют их, как правило, невозможно.

Если вы решили использовать CloudFlare (или любой другой CDN / прокси), не забудьте скрыть IP-адрес вашего сервера. Если злоумышленник узнает IP-адрес, он может снова выполнить DDoS-сервер напрямую, минуя CloudFlare. Чтобы скрыть IP-адрес, ваш сервер никогда не должен связываться напрямую с другими серверами / пользователями, если они не безопасны. Например, ваш сервер не должен отправлять электронные письма пользователям. Это не применяется, если вы размещаете весь свой контент на CDN и не имеете собственного сервера.

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

Нагрузка на основе

Когда вы испытываете DDoS на основе нагрузки, вы замечаете, что средняя нагрузка является аномально высокой (или процессор, ОЗУ или использование диска, в зависимости от вашей платформы и особенностей). Хотя сервер, похоже, ничего полезного не делает, он очень занят. Часто в журналах будет обильное количество записей, указывающих необычные условия. Чаще всего это происходит из разных мест и является DDoS, но это не обязательно так. Там даже не должно быть много разных хостов,

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

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

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

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

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

Exploit основе

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

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

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

Эти атаки довольно дешевы для монтирования, если эксплойт можно найти, и они могут быть очень мощными, но также относительно легко отслеживать и останавливать. Однако методы, которые полезны для DDoS на основе трафика, как правило, бесполезны в отношении DoS на основе использования.


181
2017-08-19 09:14



Что касается вашего последнего абзаца, а что делать, если вы используете эксплойт D DoS? Как вы могли отследить и остановить его? - Pacerier


Если вы являетесь предприятием, у вас есть много вариантов. Если вы такой маленький парень, как я, арендуя VPS или выделенный сервер для обслуживания небольшого веб-сайта, стоимость может быстро стать непомерно высокой.

По моему опыту, я считаю, что большинство посвященных и поставщиков VPS не будут устанавливать специальные правила брандмауэра только для вашего сервера. Но в настоящее время у вас есть несколько вариантов.

CDN

Если вы используете веб-сервер, подумайте о том, чтобы положить его на CDN, например CloudFlare или Amazon CloudFront.

CDN стоят дорого. Чтобы контролировать стоимость, подавайте большие файлы (большие изображения, аудио, видео) прямо с вашего сервера, а не через CDN. Однако это может привести к тому, что ваш IP-адрес вашего сервера будет атакуемым.

Частное облако

Частные облака обычно представляют собой дорогостоящие корпоративные решения, но Amazon VPC стоит почти ничего не для настройки. Однако пропускная способность Amazon в целом дорогая. Если вы можете себе это позволить, тогда вы можете настроить группу безопасности Amazon VPC и Network ACL для блокировки трафика до того, как он поступит в ваш экземпляр. Вы должны заблокировать все порты, кроме порта TCP-сервера.

Обратите внимание, что злоумышленник может атаковать ваш порт TCP-сервера. Если это веб-сервер, тогда подумайте о том, чтобы использовать что-то вроде nginx, которое использует неблокирующий IO и может обрабатывать большое количество подключений. Кроме того, вы не можете сделать так, чтобы обеспечить запуск последней версии серверного программного обеспечения.

Когда ваш TCP-порт атакован и все остальное не работает

Это решение, которое я разработал, который относится к не веб-серверам, которые не могут скрываться за CDN, например, WebSocket, медиаконтент / потоковые серверы. CloudFlare поддерживает WebSocket, но только для предприятия на данный момент.

Цель состоит в том, чтобы быстро изменить ваш порт прослушивания TCP, чтобы ботнет не мог удержаться, скажем, раз в 10 секунд. Это достигается с помощью простой прокси-программы, выполняющей роуминг портов. Последовательность портов псевдослучайна, но должна основываться на времени сервера. И алгоритм вычисления времени сервера и порта должен быть скрыт в вашем javascript / flash-коде клиента. Программа также должна модифицировать брандмауэр, поскольку он изменяет порт прослушивания, а брандмауэр должен быть работоспособным. Если кому-то интересно, я загружу сценарий node.js, который работает с Amazon, в GitHub.


5
2017-12-05 18:04





Измените свой домен, чтобы на короткое время перейти в черную дыру, например 0.0.0.0.

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


2
2018-02-26 07:44



Изменение DNS, как это, скорее всего, принесет больше вреда, чем пользы. Сначала я бы уменьшил TTL записи A, но оставил IP-адрес без изменений - пока у меня не будет новый IP-адрес. - kasperd


Когда вы находитесь под атакой DDoS, ваш провайдер может помочь вам больше всего, но если у них нет защиты от DDoS, очень вероятно, что вы перестанете работать до тех пор, пока не прекратится атака. Обычно они будут видеть атакуемый IP-адрес и обнулять сеть на своем маршрутизаторе. Если у вас нет большого трафика, есть много онлайн-сервисов для защиты DDoS, где ваш трафик перенаправляется, фильтруется и отправляется обратно на ваш сервер.


0
2017-11-18 11:42