Я нахожусь под DDoS. Что я могу сделать?


179

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

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

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

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

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


Ответы:


191

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

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

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

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

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

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

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

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

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

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

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

Если вы можете сделать это, рассмотрите возможность использования сети распространения контента (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 на основе эксплойтов.


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

8

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

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

CDN

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

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

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

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

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

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

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

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


4

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

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


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

1

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


-1

У нас такая же ситуация была и раньше. Ниже то, что мы сделали.

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

Далее, у вас есть брандмауэр на месте? Если да, продлили ли вы подписку? Убедитесь, что вы включили функцию проникновения IPS в брандмауэре. Просто обновив подписку брандмауэра, мы решаем нашу DDOS-атаку.

Мы узнали, что мы должны продлить подписку на систему безопасности (например, firwall или антивирус), а не воспринимать это всерьез. DDOS-атака происходит каждый день и может случиться и с малым бизнесом. Надеюсь это поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.