Сводка
14 октября 2020 года, в период с 02:41 до 02:52 UTC, каждый инстанс в AMS-01 был недоступен. Объёмная атака, направленная на один адрес клиента, достигла пика в 340 Гбит/с и насытила аплинки площадки. Мы решили проблему, попросив вышестоящего оператора отбрасывать весь трафик на целевой адрес, что восстановило площадку и оставило этого одного клиента офлайн ещё на пятьдесят минут. Данные не потеряны, ни один инстанс не пострадал. У площадки не было мощностей для очистки трафика на тот момент, и это было решение о покупке, а не случайность.
Хронология
Все время UTC, 14 октября 2020.
| Время | Событие |
|---|---|
| 02:41:04 | Трафик на один адрес клиента растёт примерно с 200 Мбит/с до 90 Гбит/с менее чем за двадцать секунд. |
| 02:41:30 | Оба аплинка площадки насыщаются. Потери пакетов становятся полными по всем префиксам на площадке, не только по целевому. |
| 02:42 | Автоматическое оповещение срабатывает о недоступности с трёх внешних проб. |
| 02:44 | Дежурный инженер подключается. Атака видна на графиках портов и нигде больше, потому что наш сбор потоков был сэмплирован со скоростью, которая не поспевала. |
| 02:46 | Пик измерен на 340 Гбит/с. Состав — отражённый UDP, в основном DNS и NTP, с десятков тысяч источников. |
| 02:47 | Принято решение запросить отбрасывание всего трафика на целевой адрес вышестоящим оператором. Это был единственный доступный нам инструмент. |
| 02:49 | Отбрасывание распространяется на первом вышестоящем операторе. |
| 02:51 | Второй вышестоящий оператор применяет его. Использование аплинка падает ниже ёмкости. |
| 02:52:10 | Площадка полностью доступна. Общая видимая клиентам недоступность составила одиннадцать минут и шесть секунд. |
| 03:20 | Пострадавший клиент уведомлён и получил новый адрес. |
| 03:42 | Клиент переехал на новый адрес; его сервис снова работает. |
Корневая причина
Непосредственная причина — атака, которую мы не могли поглотить. Настоящая причина в том, что мы продавали хостинг в городе, где атаки такого размера были обычным делом, с двумястами гигабит аплинка и никакой фильтрации, и рассматривали соглашение с вышестоящим оператором об отбрасывании как план.
Это не невезение. Это было решение, принятое в 2019 году в пользу траты денег на оборудование, и оно было неверным.
Два второстепенных сбоя усугубили ситуацию. Наш сбор потоков сэмплировался со скоростью, не дававшей полезной детализации во время реального инцидента, поэтому первые четыре минуты были потрачены на чтение счётчиков интерфейсов. И отбрасывание было ручным, требующим человека на связи, авторизованного и уверенного, а это на три требования слишком много в три часа ночи.
Что это стоило клиенту
Если прямо: мы решили нашу проблему, отключив их сервис. Маршрут отбрасывания — это решение, что один клиент будет недоступен, чтобы все остальные не были. Это был правильный звонок с нашими инструментами, но всё же это была их недоступность, а не наша, и они не покупали у нас продукт, который обещал иное.
Они остались. Мы не взяли с них плату за октябрь.
Что мы изменили
- Постоянная очистка на периметре, купленная в течение трёх недель, начиная с ёмкости 1,2 Тбит/с. Фильтрация постоянно стоит на пути, так что нет задержки обнаружения и нет кнопки для нажатия в 02:47. Теперь это стандарт на каждой площадке, до 12 Тбит/с на крупнейших.
- Аплинк в AMS-01 увеличен, сначала на 200 Гбит/с дополнительной ёмкости, а позже до 400 Гбит/с, на которых площадка работает сегодня.
- Несэмплированная потоковая телеметрия на каждом крае площадки, хранящаяся в операционных целях в течение семи дней. Это метаданные трафика для наших собственных портов; это не трафик инстансов и не содержимое чего-либо.
- Маршрут отбрасывания стал автоматическим, с задокументированным порогом, объявленной политикой и письмом пострадавшему клиенту в течение шестидесяти секунд, а не тридцати девяти минут.
- Атаки публикуются на странице статуса, с размером и продолжительностью, заметил ли кто-нибудь или нет.
Что мы не изменили и почему
Мы не начали брать плату за фильтрацию. Базовая очистка включена во все тарифы на всех площадках и была включена с того дня, как мы её купили. Атака — это не услуга, которую запрашивал потерпевший. Фильтрация уровня 7 с пользовательскими правилами существует как дополнение, потому что она требует человека с нашей стороны, а это не то же самое, что объёмная атака.
Мы не убрали маршрут отбрасывания. Двенадцать терабит в секунду — это число, а не бесконечность, и притворяться, что нам больше никогда не понадобится грубый инструмент, было бы нечестно. Изменилось то, что теперь это задокументированное последнее средство, а не единственный шаг.
Мы не ввели потолочные ограничения на трафик для каждого клиента. Ограничение скорости каждого клиента до безопасной доли аплинка предотвратило бы это, но также задушило бы каждый легитимный всплеск. Фильтрация должна быть на периметре, на атаке, а не на клиенте.
Мы не перевели клиента на другой продукт. Они запускали то, за что заплатили, на тарифе, который им подходил, и это не их вина, что кто-то нацелил на них ботнет.