История пока не окончилась и полноценный доступ к инфраструктуре я не вернул. В этой статье я на своем примере покажу, к каким катастрофическим последствиям может привести одна ошибка - использование одного домена для всей инфраструктуры. Моя история - это предупреждение для рядовых айтишников. Не претендую на качественную техническую статью, поэтому буду писать её простым слогом.
Архитектура и исходные данные
Всем привет! Меня в этом бренном мире зовут Дмитрий, а в сети я давно существую под ником vajrock, будем знакомы.
Когда-то давно я решил себе прикупить именной домен vajrock.ru. Имя домена в статье не хочу скрывать, т.к. это дает возможность читателю статьи самостоятельно проверить реестры РКН. Да и не сложно по моему нику догадаться о каком домене могла пойти речь.
Не буду рассказывать причин, историй происхождения инфраструктуры и чем я занимаюсь. Это дает возможность выкинуть из черновика 5 страниц текста.
Вводные данные
Сервер hp dl360g9 в роли гипервизора.
Cisco ASA 5525-x в роли VPN шлюза.
На сервере только мои виртуальные машины для тестов и пет проекта, который только в разработке.
Ключевые сервисы:
ns1.vajrock.ru – первичный DNS сервер, который отвечал почти за все мои зарегистрированные домены.
mail.vajrock.ru – почтовый сервер на базе проекта mailu. Так же отвечает за множество моих доменов.
xxx1.vajrock.ru – домен для подключения к cisco vpn
Еще важные домены третьего уровня, которые будут фигурировать в истории: vpn.vajrock.ru, vpn-kg.vajrock.ru.
Не ключевых сервисов на сервере тоже достаточно и часть из них использует домен vajrock.ru с автоматизированным через acme-dns challenge выпуском сертификатов, но упоминать их не хочу, просто прошу учесть, что статья не про потерю доступа к паре виртуалок.
Архитектура сервисов достаточно устоявшаяся. Около 4 лет данный сервер путешествует по ЦОДам и сейчас осел в г.Казань. Был сделан выбор в пользу ЦОД Стек24 по соотношению цена/качество/дальность и рекомендации друга. Важно понимать, что я сейчас временно проживаю в МСК и в Казань не езжу.
В этом январе, в следствии получения гранта от государства на пет проект удалось расширить команду еще 1 разработчиком. Надеюсь чуть позже расширить команду еще.
Появление второго человека в команде, по моим ощущениям, ускорило разработку раза в 4. Женя, привет! Теперь когда я решаю бюрократические вопросы разработка не останавливается. Уважаемого читателя прошу прочувствовать этот момент блокировки. За последние три месяца я очень сильно устал от бюрократии, буквально перед началом истории мне требовалось закончить один просроченный отчет перед фондом и я наконец-то смог бы погрузиться в программирование!
Часть 1. Блокировка РКН: Хронология катастрофы
День 1: 26 января. Первые симптомы и фатальная ошибка.
Наш скромный коллектив собрался на созвон в nextcloud Talk, развернутый на моем сервере. В один момент из конфы вылетает коллега. Созваниваемся через мобильную связь и начинаем диагностику проблем с его интернетом. Проблему не можем найти и в этот момент меня также выкидывает из конфы.
В этот момент у меня был активен cisco vpn до инфраструктуры. Бегло ищу проблемы на сервере, но ничего не вижу, перезапускаю сервис и это не дает никакого результата. Страница не открывается с ошибкой по таймауту.
Иду на соседнюю виртуалку и пробую курлом проверить доступность nextcloud. Удивительно но никаких проблем. И тут мне приходит в голову шальная мысль: «А что будет если я от cisco ssl vpn отключусь и попробую заново подключиться? vpn тоже же на 443 порту»
Никогда, повторяю, никогда так не делайте. Не рубите сук на котором сидите, особенно когда это последняя ниточка до вашей инфраструктуры. Это была очень глупая ошибка.
Я думаю все уже догадались, что обратно я не подключился. Появились первые мысли про РКН, но подтвердить сходу ничего не могли.
День 2-3: 27-28 января. Поиск виновника и общение с РКН.
27 января.
Во вторник я закончил с просроченным отчетом для фонда, благо локальные копии необходимых документов сохранились, а почта продолжала быть доступной по imap. Из-за недостатка времени пристально проблему с cisco ssl vpn посмотреть не удалось, но всё же некоторый анализ ситуации в голове начал складываться.
Один знакомый поделился ссылкой на пост в Телеграм одной компании, предоставляющей vpn, с их рассказом как в понедельник РКН пытался заблокировать их сервис. По их мнению новость про отказ в понедельник системы бронирования авиарейсов произошел из-за действий РКН. Ссылку на пост в телеге не буду указывать, а то это может оказаться рекламой vpn сервиса. А при чем тут мой домен? Краткий анализ показывал, что блокируются только https подключения ко всем доменам 3 уровня vajrock.ru. Ответ в голову пришел достаточно быстро – у меня 3 субдомена связанных с vpn, и каждый из них работает на 443 порту. Есть подозрение, что мои 3 сервера восприняли как публичный vpn сервис и когда боролись действительно с vpn сервисом и я попал под раздачу. Первые два я скрывать не буду, а домен подключения к циске раскрывать не горю желанием.
vpn.vajrock.ru – мой в нидерландах, на котором я развернул vpn для обхода иностранных блокирок доступа к множеству сайтов. Например репозиторий для убунты docker-ce, переодически включавший блокировку https://pkg.go.dev/, cisco.com и куча прочих. Несколько месяцев назад РКН заблокировал подсеть хостинга и проплаченный сервер остался пылиться, но субдомен я не удалил.
Зачем мне vpn-kg.vajrock.ru? У меня открыто ЮЛ в Кыргызстане и периодически для доступа к местным сайтам мне требуется подключаться с киргизских ip адресов.
Но похоже это стало огромной ошибкой использовать домен из ru зоны с явным упоминанием vpn. Признаю, глупость, что такие ошибки допустил. За выбор сделанный когда-то в прошлом приходится расплачиваться сейчас.
Второй, более опасной ошибкой стало использовать основной домен инфраструктуры для именования серверов расположенных за пределами нашего государства.
На второй день блокировки теплилась надежда, что РКН откатит правила, блокирующие доступ к моим сервисам.
28 января. Третий день блокировки.
Первое что начал изучать – как обратиться в РКН и описать проблему.
Существует сервис https://eais.rkn.gov.ru на котором можно проверить вхождение в реестр сайтов с запрещенной информации и второй сервис на проверку блокировки https://blocklist.rkn.gov.ru. Ни одного моего ip и домена в списках не обнаружил, ни на 28 января, ни в день написания статьи – 3 февраля.
Начал путь в сторону написания жалобы, но и тут столкнулся с сюрреализмом. Если вы хотите подать жалобу на блокировку сервиса – он должен быть на blocklist.rkn.gov.ru. А что делать если его нет в списках?
Если ваш сайт заблокирован - идите на сервис проверки блокировки, находите там домен и после этого у вас будет возможность отправить обращение.
Что бы понять точно как этой ситуации надо действовать – пришлось звонить в РКН и просить пояснения. Сказали обращайтесь на сайте через электронную приемную и выберете «Другое» в форме обращения.
без госуслуг никуда
Обратите ваше внимание, что чтобы оставить обращение в электронную приемную РКН необходимо аутентифицироваться при помощи госуслуг. Я написал обращение от имени директора ООО, получателя гранта. Упомянул, что такую бездоказательную блокировку моих ресурсов, без включения в публичные списки РКН придется упомянуть в итоговом отчете перед фондом ФСИ. Так же упомянул, что фактически они прервали выработанные бизнес процессы и разработка остановилась. Точный текст обращения не сохранил, т.к. писал на эмоциях.
Так же отправляя данное обращение я указал в качестве контактного email ООО, который так же размещен на моем почтовом сервере mail.vajrock.ru. В момент отправки мне казалось это правильным решением. Раз ЮЛ обращается, то и контакты ЮЛ необходимо оставить. На тот момент я еще не понимал до какого абсурда я дотянусь. В этой ситуации это была ошибка. Надо было указывать почту на gmail или yandex, т.к. я всё равно аутентифицировался электронной подписью на госуслугах и дал РКН доступ к аккаунту.
Сроки гранта никто не отменял, поэтому работу, в которую я вписался за государственные деньги необходимо сделать. Поэтому доступ к своей инфраструктуре необходимо восстанавливать.
День 4: 29 января. Частичное восстановление доступа.
29 января. Четвертый день блокировки. Восстанавливаем бразды правления в своей инфраструктуре.
Утро началось с того, что РКН прислал ответное письмо - на ответ по моему запросу они берут себе месяц. Надежды на ускоренный ответ пропали.
Упоминать средства обхода блокировок я в этой статье не намерен, т.к. пока не понимаю куда разойдутся ссылки на неё. В общем, достаточно просто удалось получить доступ по https к своим веб ресурсам. Проблем с их работой не наблюдалось. После этого можно с уверенностью говорить, что проблема доступа возникала из-за промежуточного узла, а именно DPI системы.
Веб-ресурсы работают, а что с vpn? А вот с cisco ssl vpn все было не сильно радужно.
Соединение вроде устанавливалось, дело доходило до аутентификации, но циска присылала RST и соединение обрывалось. Позже имитируя такое подключение, имея доступ к циске, я увидел только ошибку о не удаче выбора шифрования. Точную причину не понял, да и не сильно важно, т.к. такая проблема возникает только через одного провайдера.
В этот момент я решил прерваться и по размышлять. По факту было 2 пути: первый – продолжать перебирать параметры и ждать хорошего исхода, либо второй – найти другой канал связи. В такой ситуации, когда глаз замылился, реально помогает сделать шаг назад и взглянуть на проблему с другой стороны.
схематическое отображение рабочего канала связи
Подарок судьбы - я нахожу на своем сервере запущенную машинку с доступным ssh из вне. Данная виртуалка была создана для совместного использования с одним знакомым человеком и доступа к закрытой сети инфраструктуры она не имеет.
Главное, что между ней и циской нет промежуточного оборудования РКН.
Подключаюсь к ней, далее запускаю screen, что бы vpn сессию отвязать от ssh сессии и дать ей работать в фоне. Подключаю свой впн и успешно получаю маршруты в приватную сеть. После этого можно пробросить tcp порт удаленного сервиса на локальную машину
ssh -L <локальный порт>:10.X.X.X:<tcp порт на сервере 10.X.X.X> user@host
Получив таким образом доступ я конечно порадовался, но мне показалось этого мало. Сижу и чувствую, что где-то подвох. Ну можно же удобнее доступ получить, ну я же это когда-то практиковал. Через некоторое время все же вспомнил про утилиту shuttle. Удивился, что она даже в репозитории убунты доступна.
shuttle -r user@host 10.X.X.0/24 10.X.Y.0/24
В этот момент можно было выдохнуть. Появилось полное понимание как дать доступ коллеге и продолжить совместную работу.
30 января. Пятый день блокировки
Сложилось ощущение, что проблемы позади и осталось только дождаться ответа от РКН. После успешного получения доступа к инфрастуре у меня нашлось достаточно дел не связанных с РКН. День прошел как обычный
31 января. Шестой день блокировки
Прошел как беззаботный выходной
Часть 2. Удар с тыла: История с reg.ru
День 7: 1 февраля. Fatality. Отключение делегирования.
Утро воскресенья. Только проснулся и вижу на почте следующее письмо:
Регистратор Рег.ру в соответствии с Правилами регистрации доменных имён в доменах .RU и .РФ инициировал проверку идентификационных данных Администратора доменного имени vajrock.ru. Поскольку документов, подтверждающих идентификационные данные, предоставлено не было, делегирование доменного имени было приостановлено. По всем вопросам рекомендуем обращаться в службу поддержки https://www.reg.ru/support/ .
Через час после отправки письма рег.ру отключил делегирование домена. Я буквально в прямом эфире наблюдал как вся моя инфраструктура стала недоступной. Отъехали dns сервера для пачки доменов, почта (ns1.vajrock.ru, ns2.vajrock.ru, mail.vajrock.ru) и прочее, что на фоне апокалипсиса менее важное. Это потянуло недоступность сервисов еще на 5+ доменах.
Я знаю как подключиться к инфраструктуре используя ip адреса, но если в этом смысл? Рвать когти и начать всё полностью перенастраивать? Я вспоминаю сколько я времени на всё потратил и понимаю, что сходу я не готов бросаться на такую работу. Находясь в замешательстве написал ответное письмо о полном не понимании ситуации и запросил какие документы от меня требуются.
Постойте, а что вообще произошло?
Я домен не на reg.ru оформлял! Что за номер тикета? Что есть еще по этому тикету? Кто вообще инициатор обращения?
Обратился в техподдержу firstbyte, где регистрировал домен, но они подтвердили проблему и сказали обращаться в техподдержку рег.ру. Видимо они просто партнеры рег.ру, а не самостоятельные регистраторы. Ну и раз выбора уже нет, то иду в рег.ру.
День 7-8: 1-2 февраля. Сюрреализм техподдержки.
Теоретически, если есть тикет, то должна же быть тикетница, логично? Логично. Действительно я нашел её по адресу https://www.reg.ru/support/tickets и нашел злополучный тикет.
Только текст от письма отличается...
пропущенное сообщение
Обратите внимание, что дата 24 января 12:41. Напомню, что блокировка домена со стороны РКН произошла 26 января примерно в 18:30. А это ключевой момент! Блокировка со стороны РКН произошла позже инициации проверки домена. При этом домен не числится в реестрах РКН. Страшные вещи в голову приходят. Давайте обсудим их в комментариях.
Но это же еще не всё.
Тут с рег.ру история только начинается. Вы думаете мне удалось подтвердить валидность владения доменом vajrock.ru когда на рег.ру у меня логин vajrock и используемая почта vajrock@gmail.com?
Обратите внимание на скриншот всего тикета. В нем отсутствуют промежуточные сообщения, которые приходили мне на почту! Первое мое сообщение в тикете это ответ на второе сообщение рег.ру, которое я отправит ответом в почте.
Скрытый текст
На мое сообщение не было никакой реакции. После того как я увидел тикетницу и первое сообщение я побежал спасать свой домен и загружать скан своего паспорта.
Обращаю внимание, что в этот раз мне предоставили ссылку для загрузки документов. Ссылка одноразовая. Было видно что это специальный сервис для конфиденциальной загрузки документов, но что точно там под капотом мне не известно.
Помимо этого в личном кабинете мне подсвечивалось, что у меня не проверенная учетная запись. Для проверки необходимо связать учетку рег.ру с госуслугами. В другой ситуации я бы наверно это не стал делать, но уже скан паспорта отправил и для упрощения валидации моей личности (как мне казалось) я связал учетную запись с госуслугами.
Так же обращаю внимание что паспорт проверяют только по будням. Я от безысходности отписался в тикетницу о проведенных действиях и стал ждать результатов проверки.
2 февраля получаю ответ на проверку паспорта:
Первый ответ на проверку паспорта
Документ XXXXXXXXXX, загруженный Вами через наш сайт для подтверждения сведений для идентификации Администратора по домену:vajrock.ru.
НЕ ПРОШЕЛ РУЧНУЮ ПРОВЕРКУ.
Причина отклонения документа: "Сведения об администраторе домена не подтверждены, т.к. частично не совпадают с предоставленными документами(некорректное расположение ФИО).
Просьба обратиться в службу поддержки для актуализации данных администратора домена https://www.reg.ru/support/.
Важно! После того, как вы актуализируете данные администратора необходимо загрузить документы повторно для прохождения Идентификации. Ссылка для загрузки документов находится ниже в письме".
Вы можете загрузить новые версии документов, подтверждающих регистрационные данные Администратора (владельца) домена.
Для этого перейдите по ссылке: https://www.reg.ru/user/docs/add?userdoc_secretkey=fbd1c413c5dd0ec468a84f488 Для получения дополнительной информации, пожалуйста, обратитесь в службу поддержки: https://www.reg.ru/support/. Наши специалисты обязательно Вас проконсультируют.
Я читаю это сообщение и просто не понимаю что они имели ввиду. Где не корректное расположение ФИО? Посмотрел в паспорт – ошибку не наблюдаю :) Почему переписываясь с поддержкой рег.ру мне надо создавать новый тикет в эту же поддержу? Вот, я вам паспорт прислал. Актуализируйте информацию. Вы же паспорт мой хотели.
Я не знаю что на меня нашло, но такое ощущение, что конструктивно размышлять я уже не мог. Спустя сутки, когда пишу эту статью я понимаю, что пришел к нелогичному выводу и сделав свежий скан паспорта загрузил по ссылке. Зачем? Почему? Возможно повлияло, что я ранее отправлял старый не качественный скан паспорта. Но при этом я получил безумный результат. Теперь к ФИО претензий нет, а есть к адресу регистрации.
Второй ответ на проверку паспорта
Документ XXXXXXXXXX, загруженный Вами через наш сайт для подтверждения сведений для идентификации Администратора по домену:vajrock.ru.
НЕ ПРОШЕЛ РУЧНУЮ ПРОВЕРКУ.
Причина отклонения документа: "Сведения об администраторе домена не подтверждены, т.к. частично не совпадают с предоставленными документами(адрес регистрации).
Просьба обратиться в службу поддержки для актуализации данных администратора домена https://www.reg.ru/support/.
Важно! После того, как вы актуализируете данные администратора необходимо загрузить документы повторно для прохождения Идентификации. Ссылка для загрузки документов находится ниже в письме".
Вы можете загрузить новые версии документов, подтверждающих регистрационные данные Администратора (владельца) домена.
Пока я ждал предыдущего ответа я создал 2 тикета на актуализацию данных администратор. Один касаемо правки ФИО, а другой касаемо адреса.
Прикольно то что в админке рег.ру этот домен не отображается, а следовательно не могу сверится с данными которые у них в базе.
А еще 2 февраля вечером тикетница перестала работать. Список тикетов можно увидеть, а содержимое нет.
Пока я ждал предыдущего ответа я создал 2 тикета на актуализацию данных администратора. Один касаемо правки ФИО, а другой касаемо адреса. Прикольно то что в админке рег.ру мой домен не отображается, а следовательно не могу сверится с данными которые у них в базе.
А еще 2 февраля вечером тикетница перестала работать. Список тикетов можно увидеть, а содержимое нет.
Скрытый текст
День 9: 3 февраля. Требование подписать одностороннюю сделку.
Утром я во всех 3 тикетах обнаружил очень интересное одинаковое сообщение.
Скрытый текст
Теперь мне надо подписать заявление и загрузить фактически скан всего паспорта.
Давайте присмотримся куда просят загрузить более полный скан паспорта? Ссылку для этого предоставили как делали раньше? Нет. Судя по интерфейсу я делаю вывод, что предлагают загрузить прям в тикетницу. Неплохо, неплохо...
После я решил взглянуть на заявление. Честно предполагал, что будет какое-то типовое на пару строк, но как же я ошибался. В этом заявлении мне предлагают подписаться под этим текстом:
Гарантирую корректность вышеуказанных данных. Выражаю свое согласие с принятыми ООО «РЕГ.РУ» решениями по любым спорам, явившимися следствием корректировки данных администратора доменных имен. Гарантирую возмещение причиненных ООО «РЕГ.РУ» убытков, явившихся следствием корректировки данных администратора доменных имен, в том числе затрат, понесенных в связи с урегулированием соответствующих споров.
Подождите, какое согласие с рег.ру по всем спорам? Какая еще гарантия возмещения убытков? А можно сперва с «прайсом» ознакомиться?
Ребят, это нормально? Вот такой текст меня бы точно устроил:
убытков, явившихся следствием корректировки данных администратора доменных имен ПО ДАННОМУ ЗАЯВЛЕНИЮ.
И вот в этот момент я понял, что я хочу отдать на суд сообществу всю эту ситуацию.
Финальное замечание на 03 февраля. После того как firstbyte, где я регистрировал домен, отправил меня к рег.ру этот сервис выпал из моего поля зрения. Но 3 февраля в админке firstbyte открыл Анкетные данные клиента и увидел, что значения полей ФИО действительно перемешаны. А в почтовом адресе не корректно указан индекс и нет квартиры. При этом в адресе моего контакта все данные были корректны. По какой причине данные перемешались мне не известно и считаю, что истину не узнать.
Я внес правки и запросил информацию у поддержки будет ли передана данная информация в рег.ру. Получил ответ:
Нет, Вам необходимо самостоятельно направить им скан паспорта владельца домена.
При этом спросил про это заявление, отправив ссылку. Ответ:
Подписать заявление, стандартная процедура. Обычно никаких денежных средств не требуется за смену данных. Но к сожалению, это может сделать только владелец домена. Если у Вас будут еще вопросы обращайтесь.
Так же этим днем запросил у рег.ру ссылку для загрузки паспорта, а они мне прислали копию той что отправили на почту ранее, когда прислали отказ по адресу. Это меня тоже очень сильно удивило. Т.е. в одном тикете вы берете в учет информацию из всех тикетов разом, а в другом просите новый тикет создавать, где меня заново просят паспорт. Абсолютный ввод в ступор. Я же не могу читать ваши мысли, могу только текст вашего сообщения прочитать.
04 февраля
Ночью все же решил, что отправлю полный скан паспорта, но только не в саму заявку, а по ссылке.
Так же заполнил заявление. Указал свои данные на русском и английском языках одновременно и перечислил в заявке сразу все домены (10шт).
Отправил в 11:31
Получил ответ о разблокировке домена в 18:03
Примерно к 21:00 в большинстве мировых dns кеш сбросился и всё вернулось к состоянию утра воскресенья.
При этом cisco vpn не заработал. Блокировка РКН сохраняется
Анализ ошибок.
Ошибка явного использования букв vpn. Это пока не 100% подтвержденная ошибка, но другого повода не вижу, начать государству пристально смотреть на мой домен.
Размещение критической инфраструктуры и зарубежных сервисов на одном домене. Воспринимаю данный пункт как дополнительный мотивационный фактор взглянуть на мой домен по ближе.
Отключение последнего канала доступа. Тут без комментариев, все могут ошибиться, даже сисадмин с многолетним опытом. Человеческий фактор. Главное теперь на всю жизнь запомнил.
При обращении к госучреждению я использовал почтовый сервер с которым уже возникли проблемы. Надо было обезопасится и использовать почту с одного из публичных почтовых сервисов. Обращение еще на рассмотрении, но если бы с рег.ру я не решил проблему, то потенциально я скорее всего не узнал ответ РКН.
Невнимание к данным в панели регистратора. Я на эти формы с контактными данными смотрю только 1 раз, когда регистрируюсь на сервисе. Никогда не думал, что это может привести к проблемам.
Мои рекомендации себе и другим.
Разделить инфраструктуру по разным доменами. Резервный dns сервер ns2.vajrock.ru находится за пределами инфраструктуре в ЦОД, но это никак не помогло, т.к. в его имени используется тот же самый домен.
Обязательно необходимо реализовать вторую точку входа в инфраструктуру с использованием другого домена. Я это реализую при помощи запуска виртуализированного NGFW на существующем сервере.
Желательно регламентная проверка данных у регистратора. Но возможно лучшим решением будет письмам от abuse@reg.ru сделать отдельную обработку в почтовом ящике, например пересылка минимум на 1 почтовый ящик каждого домена.
В качестве промежуточного заключения.
Я дополню статью новостями от РКН, если будет возможность редактировать статью на тот момент.
Однозначный вывод, что я сделал – привязка госуслуг к учетной записи рег.ру не имеет никакого смысла.
Я 3 дня подозревал, что рег.ру замешан в блокировке домена. Возможно это совпадение, что ТСПУ начали блокировать буквально через 2 дня после инициированной проверки. Статью написал 3 февраля, но я не стал её публиковать – стало очень интересно, что произойдет после разблокировки домена, если бы в этот момент еще и блокировки от РКН исчезли, то это было бы очень интересно.
Я подозреваю по каким причинам к моему домену возникло пристальное внимание, возможно государственные службы пока только собирают информацию для письменного обращения в мою сторону, а может и судебный иск готовят... В любом случае посмотрим как это всё будет развиваться. Я уверен, что УК РФ не нарушал. Ребята из РКН, которые это всё инициализировали, если вы это читаете, вы могли бы мне письмо написать или позвонить, я бы ответил на ваши вопросы. А теперь РКН и рег.ру будут фигурировать в НИОКТР отчете, который отправлю государственному фонду по итогам гранта.