Вчера, 30 января, несколько часов в России «не работал весь Интернет». На самом деле, конечно, не так – у некоторого (довольно значительного) количества пользователей не открывались сайты в зоне .ru
Причиной объявили поломку загадачного DNSSEC. Давайте разберёмся, что это вообще такое.
Итак, как вообще работает интернет? Объясняем на пальцах, максимально просто. Каждый сервер, к которому вы обращаетесь, имеет свой IP-адрес, это просто набор цифр, хорошо понятный компьютеру, но непонятный человеку. Например, 91.122.56.43. И ваш компьютер тоже имеет IP-адрес. Собственно, весь интернет работает таким образом, что пакеты данных курсируют от одного компьютера к другому, а маршрутизаторы провайдеров эти пакеты, собственно, по нужному адресу направляют. Ваш домашний роутер – тоже маршрутизатор, он уже внутри локальной сети направляет пакет именно на ноутбук, а не на смартфон, например.
Но вводить в строке браузера IP-адрес неудобно. Более того, на одном сервере с одним IP-адресом может располагаться одновременно несколько разных сайтов и нужно как-то выбрать нужный.
За это отвечает DNS: Domain Names System, что переводится как «система доменных имён». Это своего рода таблицы, в которых указывается, какому буквенному адресу (URL) какой IP-адрес соответствует, а если на одном IP несколько сайтов, то также как найти конкретный. То есть, если совсем просто, набрали «yandex.ru», компьютер обратился к DNS-серверу, тот сообщил, что пакеты нужно слать на 5.255.255.70 – всё, процесс пошёл.
Чтобы лишний раз не обращаться к DNS-серверам, уже известные пары URL-IP хранятся в кэше. В том числе на компьютере, например, такая функция по умолчанию включена в Windows. И если вы вчера заходили на сайты, которые уже посещали ранее, то никакой «поломки интернета» могли вообще не заметить, потому что ваш компьютер и так знает, по какому IP-адресу обращаться.
Но когда компьютер обращается к DNS-серверу, то… не может проверить, действительно ли от нужного DNS-сервера поступил ответ и правильный ли он. То есть, изначально протокол DNS был достаточно «дырявым» и позволял довольно легко подменять ответы на запросы: набрал ты «yandex.ru», а злоумышленник перехватил запрос и отправил тебе «левый» IP-адрес фишингового сайта. В итоге в адресной строке «Яндекс» или адрес банка, а на самом деле открылась совсем другая страница. Эта атака называется DNS-спуфингом. Спуфить можно и локальный кэш DNS, но мы сейчас не об этом.
Для борьбы со спуфингом придумали дополнительный протокол безопасности DNSSEC. Он подразумевает обмен данными с DNS-сервером по шифрованному каналу. Принцип примерно такой же, как у сквозного шифрования переписки в мессенджерах: криптографические ключи на обеих сторонах и проверка подлинности подписей.
Имена в DNS имеют многоуровневую структуру. Например, .ru – это домен первого уровня, yandex.ru – второго, mail.yandex.ru – третьего и так далее. Каждый уровень подписывает данные для нижестоящего, то есть, yandex.ru отвечает за свои домены третьего уровня (mail.yandex.ru), а для основного, второго, ответственным выступает «первый уровень» – .ru, который находится в ведении Координационного центра доменов верхнего уровня .ru и .рф.
Это созданная в 2001 году некоммерческая организация, соучредителями которой стали Общественно-государственное объединение «Ассоциация документальной электросвязи», «Союз операторов Интернет», Региональная организация «Центр Интернет-технологий» и Российский НИИ развития общественных сетей. В 2015 году в состав учредителей также вошли Министерство связи и массовых коммуникаций Российской Федерации и Институт развития Интернета.
Вот именно эти ребята что-то и «сломали»: DNSSEC перестал работать корректно для всех доменов второго и последующих уровней, поскольку перестали приходить правильные подписи. И если нужного домена не было в локальном кэше – при вводе соответствующего адреса просто ничего не открывалось.
Некоторые провайдеры быстро «починили» проблему, временно отключив DNSSEC. А через пару часов всё вернулось обратно на круги своя.
Что именно и по какой причине сломали в КЦ – никто не признаётся. Версий множество: от простых случайностей до целенаправленных блокировок всего и вся – но все они исходят от экспертов разной степени диванности.
За 15 лет применения технологии DNSSEC в мировой практике произошло более 200 подобных случаев, а за последние три года более 20 раз. Например, из-за подобной ошибки в настройках в начале 2022 года на несколько часов оказались отключены от сети порядка 8 тысяч имен в национальном домене Швеции .se