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

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

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

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

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


Каковы плюсы подключения к сети фильтрации трафика до атаки?


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

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

В случае, если на начало атаки сеть или фильтрационное оборудование не были включены в её нейтрализацию, то в процессе обучения для автоматики и обучающихся моделей все пользователи, нажимающие «Обновить страницу», почти неотличимы от трафика атаки, соответственно, вероятность их блокировки высока. Зная предыдущее поведение пользователей ресурса, можно обезопасить и их, и себя от возникновения подобной ситуации.

Точно так же и с объёмом трафика и статистикой посещаемости в нормальной ситуации — в случае отсутствия такой информации на момент атаки будет очень сложно с уверенностью утверждать, вернулся ли трафик в норму после нейтрализации атаки из-за того, что под блокировку могли попасть настоящие пользователи, просто обладающие чуть отличающимся от медианного поведением во время деградации сервиса под атакой.

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

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

Каковы реальные минусы и возможные последствия при подключении под атакой?


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

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

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

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

Конечно, отработка false positive — не единственная трудность. Подключение под атакой не устраняет проблему частичной или полной недоступности, и если атака уже началась и успела причинить некоторый вред, то помимо работ по подключению ресурса к системе защиты нужен «контроль повреждений», то есть работа над последствиями атаки на стороне потребителя и заказчика.

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

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

К сетям фильтрации трафика существует два наиболее распространенных способа подключения — с использованием DNS либо BGP. Рассмотрим два этих сценария по отдельности.

DNS


Предположим, что атака ведётся только по доменному имени.

Типичный сценарий подключения сайта под атакой по DNS выглядит следующим образом: владелец сетевого ресурса, представленного доменным именем, в A-записи DNS которого указан текущий IP-адрес атакуемого веб-сервера, обращается к нам за помощью. После соблюдения всех формальностей Qrator Labs выделяет клиенту специальный IP-адрес, на который он заменяет свой текущий адрес.

Как правило, в этот момент приходится учитывать возможный высокий TTL на изменение записи DNS, который может составлять от нескольких часов до суток максимум (предел по RFC: 2147483647 секунд) — в течение этого времени старая А-запись будет существовать в кэше DNS-рекурсоров. Поэтому если вы заранее осознаете, что атака вероятна, необходимо иметь низкий TTL для A-записи DNS.

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

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

BGP


В случае с подключением по протоколу BGP всё выглядит несколько иначе.

Если атакуемый сервис обладает собственными блоками адресов (префиксами) и хочет перевести всю инфраструктуру под защиту целиком, анонсируя собственные префиксы через поставщика услуг нейтрализации DDoS — как выглядит данный процесс?

Автономная система под атакой добавляется в наш AS-SET, для того чтобы иметь возможность анонсировать собственные префиксы, после чего начинаются пресловутые сутки (24 часа) на получение всеми нашими аплинками данной информации и обновления префикс-листов. Естественно, в экстренном случае мы стараемся пойти навстречу такому клиенту, форсируя данный процесс, но это возможно не в каждом случае и делается вручную. В свете вышесказанного, время — ключевой и основной стресс-фактор, ведь защитить ресурс требуется безотлагательно, «обезболить мгновенно».

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

Лирическое отступление: ваш поставщик услуг связности покупает IP-транзит, как правило, у больших и надежных операторов связи, не ниже региональных Tier-1 операторов. Они фильтруют префиксы, поступающие к ним от клиентов, на основании некоторого списка (prefix-list), который они берут из открытых баз данных (RIPE, RADB и других). Штатно одни поставщики IP-транзита сервиса по защите от DDoS обновляют эти фильтры циклично раз в сутки, другие делают это только по запросу. У грамотного поставщика услуг нейтрализации DDoS точки присутствия расположены по всему миру, мгновенно не накатишь.

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

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


Постскриптум.
Коллеги, доводим до вашего сведения следующую важную новость: www.ietf.org/mail-archive/web/idr/current/msg18258.html

Инициатива о внедрении механизма автоматической защиты от возникновения «утечек маршрутов» (route leaks), непосредственное участие в создании которого принимали инженеры Qrator Labs, успешно прошла этап «принятия» (adoption call) и перешла в рабочую группу по Interdomain Routing (IDR).

Следующий этап — доработка документа в рамках IDR и, в дальнейшем, проверка руководящей группой (IESG). В случае успешного прохождения этих этапов черновик станет новым сетевым стандартом RFC.

Авторы: Александр Азимов, Евгений Богомазов, Рэнди Буш (Randy Bush, Internet Initiative Japan), Котикалапуди Шрирам (Kotikalapudi Sriram, US NIST) и Кейур Пател (Keyur Patel, Arrcus Inc.) осознают, что в индустрии есть острый спрос на предлагаемые изменения. Однако спешка в данном процессе также неприемлема, и авторы приложат максимум усилий, чтобы сделать предлагаемый стандарт удобным как для транснациональных операторов, так и небольших домашних сетей.

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

Мы также хотим донести до сведения заинтересованных инженеров, что у вас всё ещё есть возможность выразить собственные пожелания к внесению дополнений и уточнений через рассылку IETF (draft-ymbk-idr-bgp-open-policy@ietf.org) или через сайт инициатив Qrator Labs.

Важно также отметить, что к моменту принятия финального решения у стандарта должно быть две рабочих реализации. Одна из них уже доступна — это наша разработка на базе раутингового демона Bird, доступная на Github: github.com/QratorLabs/bird. Мы приглашаем вендоров и open source сообщество присоединиться к данному процессу.
Поделиться с друзьями
-->

Комментарии (10)


  1. jazzl0ver
    16.06.2017 19:33

    Первое и самое важное — это знание о поведении пользователей

    Можете посоветовать инструменты (лучше с открытым кодом) для анализа этого самого поведения?


    1. skyramp
      17.06.2017 15:14
      +1

      я бы порекомендовал посмотреть на TICK stack: telegraf для сбора статистики + influxdb для хранения статистики + kapacitor для ее анализа + chronograf или grafana для визуализации, либо на clickhouse для хранения логов + grafana для визуализации результатов разных хитрых аналитических запросов к этим логам. но и то и другое требует адаптации к конкретно вашему пониманию понятия «поведение» (какие именно аспекты поведения вы хотите анализировать), например могут потребоваться кастомные средства для сбора релевантной для вас статистики по запросам к интересующим вас местам веб-приложения (для последующего хранения в influx'е, если например telegraf тут окажется недостаточно гибким), либо хитро построенные запросы к clickhouse'у. в ряде случаев может потребоваться приделывать дополнительные более удобные кастомные способы визуализации «поведения», нежели просто графики, тут можно посмотреть на d3js


  1. lostpassword
    16.06.2017 20:16

    межсетевой экран (файрвол), являющийся нежным устройством
    O_O

    Мне всегда казалось, что задача МЭ — это как раз стоять на границе сети и стойко отражать атаки блокировать несанкционированные подключения. Разве нет?


    1. k0ldbl00d
      16.06.2017 20:55

      Единичные подключения МСЭ блокирует, но когда его заливает трафиком со всех сторон, ему, разумеется, тут же поплохеет.


      1. flx
        16.06.2017 22:47

        все что STATEFUL умирает в первую голову, ибо STATE это ресурсы выделяемые.


      1. tankistua
        16.06.2017 23:54
        +1

        Когда нам налили 20 гигабит, то стало плохо всему колокейшину. Толку от фаервола то в таком случае.


        Мне кажется, что банальное размещение нс-ов на клоудфлеере с бесплатным аккаунтом минимум на порядок снижает количество желающих поддосить


        1. gtsimms
          17.06.2017 11:49

          С чего бы ему снижаться на порядок, если сложность организации атаки возрастает незначительно?

          Как минимум, если ничего больше не делать, кроме прятанья реальных IP за CF — будет то, что в статье сказано (атакующему достаточно обратиться к DNS history своей цели).

          Как не минимум (если менять адреса и т.д.), существуют сервисы, которые резолвят в адреса позади CF — снова один дополнительный запрос для обитателя «серой зоны» Интернета. Дальше история повторяется.


          1. tankistua
            17.06.2017 12:30

            Увеличение стоимости атаки снижает вероятность ее проведения.


            Единственный вариант не умереть колокейшину — это заанонсить в девнулл сетку. Клоудфлеер настраивается на адрес из другой сети — просто к ддосу надо быть готовым, мы не были и у нас перевод портала для работы через клоудфлеер занял двое суток


            1. gtsimms
              17.06.2017 14:08

              просто к ддосу надо быть готовым

              Золотые слова!
              Клоудфлеер настраивается на адрес из другой сети

              Совершенно верно. Вариант «как минимум» это действие исключит, если стараться этот IP не светить.

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


        1. HSerg
          17.06.2017 15:56

          Из-за блокировок online-казино постоянно вылезают проблемы с HTTPS/IPv4-сайтами на бесплатном cloudflare. Так что это весьма грустный вариант для русскоязычных сайтов.