nlothik (nlothik) wrote,
nlothik
nlothik

Category:

Про DDoS

Многие знают, что такое DDoS attack. Расскажу кратко для неспециалистов.

DDoS attack -- это аббревиатура от Distributed Denial of Service. В переводе -- распределённая атака, провоцирующая отказ в обслуживании.

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

Атака для достижения эффекта отказа обслуживания бывает умной -- когда хакер, используя какие-то дыры в операционной системе или программном обеспечении, при помощи особо написанных запросов, вызывает перегруженность сервера или сети, к которой он подключён. Таких атак сегодня мало, так как они требуют, во-первых, высокой квалификации, а во-вторых, обычно легко (при достаточной квалификации инженера) проследить, откуда она идёт, и перекрыть хакеру кислород. Такова была, например, атака на украинского провайдера Neon-V, выполненная сотрудником Demos'a. Было это -- 14 лет назад. Некие подробности можно прочитать у DZ, в архиве dibr, вот тут. Сотрудника по результату расследования, уволили -- ибо как говорил, проследить, откуда растут ноги, довольно легко.

Кроме того, атака бывает тупой, как лом. Примером такой атаки и является DDoS. Суть её в том, что группа компьютеров, находящимися под централизованным контролем, засыпает запросами (часто выглядящими весьма легитимно) сервер. При этом толщина канала сервера роли не играет почти никакой. Если группа компьютеров состоит из, например, миллиона машин, сообща они могут запинать даже Ай-Би-Эм и Майкрософт. При этом против лома, как говорится, нет приёма -- защититься от такой атаки практически невозможно. Остаётся уповать на то, что твои сервера, как тот неуловимый Джо, нахрен никому не нужны.

Как получаются такие огромные группы машин? Чаще всего -- это обыкновенные пользовательские компьютеры, заражённые вирусами. Внешне такой вирус себя может никак не проявлять, кроме того, что он прицепился к какому-то серверу, с которого хозяин вируса может им сказать "фас". Например, некоторые вирусы цепляются к irc чат-серверам. Далее они делают всё, что пожелает хозяин.

Зачем всё это нужно? И кому? Всё просто -- как обычно, всё сводится к деньгам или идеям. Вот, допустим, ты -- яростный гомофоб/антисемит/торговец наркотиками и тебе не даёт покоя существование out.com/goisrael.com/roizman.info. И ты покупаешь услугу (а этот подпольный рынок уже сложился) у хакера-крякера -- "шоб неделю этого сайта не было ни видно не слышно". И вперёд. Хакеру-крякеру это ничего не стоит, и он зарабатывает свои деньги. Страдает -- понятно, кто, владелец сайта, ну и наш брат сисадмин.

Сервера под моим управлением были под атаками DDoS пять раз. Это была в основном т.н. "конкурентная борьба" владельцев сайтов. Пару раз кто-то с кем-то не поделил клиентов. Ещё несколько раз пострадал сервер, на котором лежал сайт, предлагающий эскорт-услуги в Канаде (там, как я понимаю, это легально). Уж не знаю, почему. То ли один сутенёр вёл "конкурентную борьбу" с другим, то ли кто-то боролся за чистоту нравов.

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

Всегда надо первым делом связаться с провайдером. У них гораздо шире возможности по отлову гадов, и уровень специалистов тоже выше (по крайней мере, на это хочется надеяться).

Что я делал на своём сервере:

Для начала надо хотя бы посмотреть логи веб сервера.
В одном случае атака (выглядящая как запрос к index.html) шла напрямую на айпи адрес, а не на веб адрес (отсутствовала вменяемая строка HOST в http запросе). Первым делом я переименовал index.html в default.html и сделал его документом по умолчанию, а на место index.html положил файл с нулевой величиной. Это не снизило количество запросов, но сильно снизило трафик.

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

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

Что было бы здорово сделать -- так это пропарсить логи при помощи того же sed'a -- чтобы создать таблицу айпи адресов, с которых создавались вирусные запросы. И забанить эти адреса к соответствующей матери на брандмауэре. Проблема в том, что максимальное количество правил, которые можно прописать в ipfw брандмауэр на FreeBSD -- 65536, и все их использовать невозможно (ибо там есть правила, которые вообще разрешают к этому серверу обращаться снаружи, и удалить их, не заперев самого себя от сервера, невозможно). Если на тебя навалилась по-настоящему крупная группа уродов, только при помощи встроенного брандмауэра защититься от них невозможно. Кроме того, я не уверен, как сильно будет грузить процессор такая огромная таблица правил при таком количестве трафика.

Какие из этого можно сделать выводы? Во-первых, не думай, что ты и твой сервер -- неуловимый Джо, который нахрен никому не нужен. Увы, нужен. Даже если твой сервер не первичная цель, он может быть полезен хакеру-крякеру как промежуточный сервер, с которого уже будет вестись атака. Сервер на площадке провайдера, с реальными 100-мегабитами, которые можно забить всяким говном -- лакомая цель. Это не совсем про DDoS, про это -- в другой раз.
Во-вторых, когда сталкиваешься с такими вещами, сразу понимаешь, где у тебя пробелы в образовании. Например, я неплохо так себе знаю Апач, FreeBSD, могу настроить сервер с нуля. Но вот в том, что касается сетей, и особенно их защиты -- у меня есть серьёзные пробелы в знаниях. Впрочем, я на сетевого инженера учусь, так что выучусь!
Tags: сисадминское
Subscribe

  • Страховка — дрыгатель прогресса

    Весь ИТ-отдел гудит как улей. Сегодня наша страховая компания спустила нам указивку, что если к концу Ноября ВСЕ ИТ-сервисы не будут защищены…

  • Почти всё

    Так как одиннадцатая винда фичами пока не радует, попробовал заменить на рабочем компе всё на Убунту 20.04 И оно, знаете, практически взлетело.…

  • Про одиннадцатую винду

    Что-то не хочется мне на неё обновляться. Главная проблема в новой системе виртуализированной безопасности (virtualization-based security, VBS).…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 3 comments