Оффтоп Илья Рогов
7 273

На линии фронта цифровой войны: как работают блокировки Роскомнадзора

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

В закладки

Любая компания, которая предоставляет коммерческие услуги передачи данных, обязана иметь и продлевать лицензию, выдаваемую Роскомнадзором. Следовательно, любой оператор связи обязан подчиняться требованиям регулятора, в том числе по ограничению доступа к информации. Кстати, это касается только коммерческой деятельности — если вы не берёте плату за связь и передачу данных, то теоретически вас эти требования не касаются.

Мы — коммерческий дата-центр, наш принцип carrier neutral — это значит, что мы не навязываем клиентам сервис по доступу в интернет, можем организовать связность с любым из 25 интернет-провайдеров, представленных на нашей площадке, но можем дать и свой доступ в интернет. И для таких случаев (которых немало, потому что цены на интернет у нас низкие) у нас есть лицензия оператора, а значит, мы обязаны выполнять все требования РКН.

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

Первый способ, который Роскомнадзор использует уже довольно давно, — получение файла с сайта rkn.gov.ru по HTTP. Оператор направляет на известный URL веб-запрос, подписывает его сертификатом, который каждый оператор получает для себя в центре сертификации (кстати, это стоит денег), и получает ответ — это и есть файлик, дамп XML.

Второй способ сейчас введён для всех крупных операторов — это так называемая «дельта». Файл выгрузки формируется примерно раз в час. А периодически становится доступным не полный файл, а разница — то, во что РКН внёс изменения: «дельты», дельта-1, дельта-2, дельта-3. И операторы закачивают каждый раз не полную выгрузку, а изменения: это быстрее и удобнее.

Далее перед оператором стоит задача заблокировать список сайтов в файле. Есть два способа, которые РКН официально считает правильными.

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

Программное обеспечение DPI анализирует проходящие пакеты трафика и не пропускает те, которые соответствуют правилам, описанным в файле РКН. Есть коробочные сертифицированные DPI, есть самописные DPI. Роскомнадзор рекомендует пользоваться сертифицированными, но это необязательно. У Xelent, например, свой DPI.

Второй путь — блокировка по DNS, Domain Name Service, служба доменных имён. Сейчас он уже потерял свою значимость, потому что через DNS трудно добиться правильной блокировки.

Как работает DNS? Клиент вбил в браузере запрос, например, rutracker.org, его компьютер отправляет запрос на соответствие этого имени IP-адресу - либо DNS-серверу провайдера, либо DNS-серверу какого-то другого узла сети, это не имеет значения, потому что, как правило, DNS-запросы перехватываются провайдерами.

И вот этот провайдер, чтобы организовать блокировку, не возвращает правильный адрес заблокированного сайта, а сообщает некий поддельный адрес с другим IP, где, например, висит страничка с объявлением о блокировке сайта.

И третий вариант блокировки, самый лобовой — по IP-адресу сервера, где находится запрещённый контент. Но поскольку в этом случае весьма вероятно под раздачу попадают сторонние сервисы и сайты, то его использование может носить ограниченный характер — об этом чуть ниже, а теперь о том, что мы видим в файле выгрузки РКН.

Выгрузка РКН состоит из трёх основных типов записей. Первый тип – блокировка по адресу страницы, URL, он начинается так: http:// доменное имя, / страница. В этом случае блокируется доступ не ко всему сайту, а к его конкретной странице: например, к статье с запрещённой информацией. Второй тип – блокировка по домену. Здесь в файле указывается домен, сайт и IP, который Роскомнадзор зафиксировал для этого сайта.

Второй способ применяется, когда Роскомнадзор решил заблокировать весь домен целиком, например, Rutracker или LinkedIn. Домены могут быть как сами по себе, так и с поддоменами: *.linkedin.com, то есть всё, что включается в linkedin.com, блокируется.

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

Точно так же — по IP — РКН ранее боролся с интернет-рацией Zello. И поскольку один IP адрес может быть назначен нескольким виртуальным серверам, то здесь как раз и возникает проблема, с которой столкнулось из-за блокировки Telegram множество сервисов, использующих те же IP-адреса, что были заблокированы под одну гребёнку с мессенджером.

В чём вообще основная проблема с реализацией блокировок? В протоколе HTTPS, который обеспечивает шифрование веб-страниц. По протоколу HTTP данные и страницы передаются в нешифрованном виде.

А протокол HTTPS был разработан для того, чтобы решить все проблемы безопасности протокола HTTP: зашифровать всё внутри, чтобы никто снаружи не смог влезть в передаваемую страницу, подсмотреть содержимое – например, номера кредитных карт или персональных данных. И эту задачу успешно решили.

А вот те, кто хотят что-то отфильтровать, что-то подделать, в нашем случае — реализовать требования РКН, сталкиваются с трудностями. Главная – то, что в протоколе HTTPS нельзя выяснить страницу на сайте, на которую идёт пользователь.

В рамках HTTPS обмен данными идёт примерно по такой схеме: пользователь вбил доменное имя, оно преобразуется в IP, и начинается запрос на этот хост. И вот в рамках этого запроса наружу не отдаётся ничего кроме IP-адреса, даже не узнать, на какой домен идёт пользователь. В этом случае придётся заблокировать все запросы на этот IP: страдают все, кто на нём находится.

Хорошие новости в том, что все современные браузеры весьма «разумны» — они не просто отправляют IP сервера, а ещё указывают SNI-идентификатор, это некое имя, которое определяет, с какого домена нужно получить данные. И это, к счастью, позволяет системам DPI не блокировать все IP скопом, а, проанализировав запрос, понять, на какой домен всё же хочет пойти клиент, и заблокировать только его.

Но больше домена в случае HTTPS ничего определить невозможно, соответственно, непонятно, на какие страницы идёт клиент. Бывают случаи в выгрузке РКН, когда указывается сайт и страница – но всё это внутри HTTPS, то есть это приводит только к тому, что блокируется весь сайт, потому что саму страницу выделить нельзя. Такое редко, но бывает.

Поэтому, когда РКН требует заблокировать ролик на YouTube, то они добавляют строчку в выгрузке в формате HTTP, и ни одной страницы HTTPS на YouTube в выгрузке нет – если бы они были, нам пришлось бы блокировать весь YouTube.

Теперь пара слов о том, как регулятор контролирует исполнение блокировки. Каждый провайдер связи обязан установить в своей сети программно-аппаратный комплекс «Ревизор». Эта система проводит постоянные тесты, доступны ли из нашей сети адреса из выгрузки, и если они доступны, отправляет отчёты в РКН. Мы тоже можем видеть эти отчёты в своём личном кабинете – он есть у каждого оператора, включенного в «Ревизор», — и понимать, что у нас блокируется, а что нет. Так мы можем сами себя контролировать.

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

#блокировки

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Илья Рогов", "author_type": "self", "tags": ["\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438"], "comments": 16, "likes": 45, "favorites": 1, "is_advertisement": false, "subsite_label": "flood", "id": 36599, "is_wide": false }
00
дни
00
часы
00
мин
00
сек
(function(){ var banner = document.querySelector('.teaserSberbank'); var isAdsDisabled = document.querySelector('noad'); if (!isAdsDisabled){ var countdownTimer = null; var timerItem = document.querySelectorAll('[data-sber-timer]'); var seconds = parseInt('15395' + '50799') - now(); function now(){ return Math.round(new Date().getTime()/1000.0); } function timer() { var days = Math.floor(seconds / 24 / 60 / 60); var hoursLeft = Math.floor((seconds) - (days * 86400)); var hours = Math.floor(hoursLeft / 3600); var minutesLeft = Math.floor((hoursLeft) - (hours * 3600)); var minutes = Math.floor(minutesLeft / 60); var remainingSeconds = seconds % 60; if (days < 10) days = '0' + days; if (hours < 10) hours = '0' + hours; if (minutes < 10) minutes = '0' + minutes; if (remainingSeconds < 10) remainingSeconds = '0' + remainingSeconds; if (seconds <= 0) { clearInterval(countdownTimer); } else { timerItem[0].textContent = days; timerItem[1].textContent = hours; timerItem[2].textContent = minutes; timerItem[3].textContent = remainingSeconds; seconds -= 1; } } timer(); countdownTimer = setInterval(timer, 1000); } else { banner.style.display = 'none'; } })();
{ "id": 36599, "author_id": 164829, "diff_limit": 1000, "urls": {"diff":"\/comments\/36599\/get","add":"\/comments\/36599\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/36599"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199791 }

16 комментариев 16 комм.

Популярные

По порядку

Написать комментарий...
25

Будто немцы взяли в оккупацию, только это своя же власть

Ответить
13

Боже мой, сколько денег тратится впустую... специальные севера, программные комплексы, системы "ревизор", человеко-часы, да и весь Роскомнадзор с его бюджетом. И все это ради контроля и "безопасности". Причем на выходе ни контроля, ни безопасности. А деньги из кармана забрали 😣

Ответить

Комментарий удален

6

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

Ответить
–35

Раздражает. Знакомые экстренно переносят все свои проекты на RU серверы: а там не только блоги, но и крупные ИМ, целые платформы. Плюс в России не так много аналогов DO. Пока друзья ориентируются на Timeweb из-за помощи с переносом.

Ответить
26

Гений рекламы, блять. Хотя бы концы прячь, что работаешь в таймвебе.

Ответить
6

аха
скорее из рашки свалят все, чем все сюда перенесут.

Ответить
1

Сколько приходилось работать с хостингами, каждый второй предлагает помощь в переносе сайта к себе

Ответить

Комментарий удален

4

Интересно, что на главной Яндекса нет развития всей это истории с истерическими блокировками Роскомнадздора, в новостях вчера и сегодня, ох не зря их в друзья Путина записали, свободное распространение информации не их конёк

Ответить
1

Хорошая статья. А много в файле блокировок вида (https:// + страница), а не весь IP целиком?

Ответить
1

Толку от блокировок Youtube по http - ноль.

Ответить
1

Со всех сторон обложили

Ответить
1

Спасибо добрый человек!
За простое объяснение как там у вас, у операторов, все устроено...

Ответить
0

Видимо Kerio в "чей-то голове" дал фатальный сбой :D

Ответить
0

Только фишка в том что Телеграмм блокировали блоками адресов, не присылали они доменные имена

Ответить
0

Вопрос датацентру: Во сколько вы оцениваете capex и opex этой регуляторки?

Ответить
0

Сарех и орех? Это что-то из Израильской мифологии?

Ответить

Комментарий удален

0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Нейронная сеть научилась читать стихи
голосом Пастернака и смотреть в окно на осень
Подписаться на push-уведомления