Category: it

Как работает механизм блокировок со стороны Роскомнадзора

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

Одной из наших задач было: выявить среди десятков тысяч посетителей зеркал того одного, который зашёл с целью выявить «противоправную информацию» и сообщить об этом в Роскомнадзор / добавить в «запретный реестр». Речь не просто о том, чтобы выявить тех, кто проверяет доступность информации и заблокировать их / показывать им котят. Речь, по сути, о сборе разведывательной информации: каким образом они проверяют сайты — руками или автоматизированным скриптом; «щёлкают» ли они при проверке остальные страницы сайта на всякий случай, анализируя информацию на них; как часто они заходят на проверяемый сайт, в какое время; насколько они специалисты в техническом плане, где их слабые места и т.д. Мы знаем всё о том, как реализуется блокировка сайтов из реестра со стороны провайдеров, знаем сильные и слабые стороны этих механизмов (благодаря чему нами и была продемонстрирована возможность атаки заблокированным ресурсом), но вот механизм работы с реестром со стороны Роскомнадзора для нас был тогда чёрным ящиком. Тогда мы придумали как промаркировать всех пользователей: сделать wildcard-поддомен (т.е. ссылка любой.поддомен.fuckrkn.me приводила на актуальное зеркало).

Collapse )

Третий этап сопротивления. Упрощение доступа

Мы сделали очень крутую штуку для вас. Это расширение для браузера Google Chrome, вы можете поставить его и навсегда забыть о блокировках ЖЖ Алексея, а также необходимости переходить на наш сервис, нажимать большую красную кнопку и т.д. После установки расширения можете спокойно нажимать на ссылки как главной страницы блога Алексея (http://navalny.livejournal.com), так и на ссылки на конкретный пост Алексея (вида http://navalny.livejournal.com/917351.html) и даже на ссылки на конкретный комментарий к конкретному посту Алексея (вида http://navalny.livejournal.com/917351.html?thread=563084391#t563084391) — расширение само определит адрес актуального зеркала блога Алексея и подставит его в адресную строку.

Примечание. Расширение при установке потребует разрешить доступ к:
1) вашим данным на сайте navalny.us — это нужно для выполнения запросов к нашему API, чтобы получить актуальный адрес зеркала;
2) вашим данным на сайте navalny.livejournal.com — это нужно, чтобы расширение умело отслеживать и перехватывать обращения к navalny.livejournal.com и чтобы могло подставлять адрес зеркала;
3) вашим вкладкам (не путать с закладками), «табам» — это нужно, чтобы расширение имело право открывать новую вкладку со страницей настроек и информации расширения.


В дальнейшем мы подготовим аналогичные расширения для браузеров Firefox, Opera, Internet Explorer. Также мы планируем улучшать функциональность расширения: например, в планах введение функции автоматической проверки появления новых постов в блоге Алексея и уведомления пользователя, так что настойчиво советуем поставить расширение.

Поскольку мы начали собирать пожертвования на поддержание нашей деятельности, исходный код расширения мы опубликовали на Github под лицензией BSD — можете свободно использовать его в своих как коммерческих, так и некоммерческих продуктах, делать на основе него свои решения и т.д. Аналогично поступим и с кодом расширений для остальных браузеров. Как всегда, пулл-реквесты с улучшением и форки горячо приветствуются!

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










Спасибо всем за поддержку, мы это очень ценим!

P.S.: как всегда, комментарии по умолчанию скрываются. Раскрываются только полезные комментарии.


Важный update: нам поступают сообщения, что расширение при установке также просит доступ к журналу посещений, выглядит это так:



Как вы можете заметить, разрешение называется «Доступ к вкладкам и журналу посещений». В действительности расширению нужен только доступ к вкладкам, просто доступ к вкладкам и доступ к журналу посещений — это одно и то же разрешение в правах доступа расширения, отдельно попросить доступ только к вкладкам никак нельзя, здесь мы бессильны. Мы отправили сейчас в Google баг-репорт с просьбой изменить эту особенность. Если у вас остаются опасения, то вы можете проверить весь исходный код расширения на Github и увидеть, что к журналу посещений в реальности расширение не обращается. При желании, вы даже можете скачать с Github файлы расширения, переделать его по своему усмотрению, включить в Google Chrome режим разработчика (Инструменты => Расширения => Режим разработчика) и установить себе своё расширение (Инструменты => Расширения => Загрузить распакованное расширение) — оно так же будет прекрасно работать с нашим API-сервером и получать адреса актуального зеркала.

Зачем нужно это расширение, если есть friGate и другие аналоги?

Во-первых, в отличие от friGate и аналогов, расширение проксирует (на самом деле оно не проксирует, а просто переадресовывает на зеркало) только ЖЖ Навального, никак не трогая все остальные ваши сетевые соединения. Во-вторых, как мы уже сказали, расширение будет развиваться и дополняться новой полезной функциональностью: например, проверкой появления новых постов в блоге и уведомлением пользователя.

Второй этап сопротивления. Юридический террор

Докладываем о первых успехах нашего сервиса navalny.us (он же navalny.at), а также ответим на некоторые вопросы. После публикации нами инструкции по созданию зеркал ЖЖ Навального нам поступило некоторое количество новых зеркал. Не так много, но хватит надолго.

Disclaimer: к созданию сервиса navalny.us / navalny.at не имеет никакого отношения ни сам Алексей Навальный, ни те люди, которые ведут сейчас его блог, ни сотрудники Фонда борьбы с коррупцией. Мы (я и Влад, авторы сервиса) не являемся сотрудниками Фонда борьбы с коррупцией, хотя ранее и принимали участие в некоторых событиях ФБК как волонтёры. Никто из перечисленных лиц не просил нас создать обозначенный сервис и систему зеркал, денег нам за это не платил (все расходы мы производили из личных средств). Эту работу мы ни с кем не согласовывали, разрешения не спрашивали, всё сделано по нашей собственной инициативе.

Статьи про сервис в Ведомостях, Tjournal, АиФ, Роем, МК, Антон Носик. Примечание: идею с котиками для Роскомнадзора придумал Влад, я сначала думал просто блокировать доступ с IP Роскомнадзора :)

Для начала ответим на некоторые возникшие вопросы.

Почему navalny.us и как его зарегистрировали, он же только для США



Больше всего шумихи вызвал домен .us, прокремлёвские СМИ и политики моментально выступили с заявлениями, что «это прямо показывает связь Алексея Навального с США, доказывает на кого он работает». Такие выводы, конечно же, полный бред. Решение создать такой сервис принималось в экстренных условиях, когда был заблокирован блог Алексея. Выбор домена был самой маленькой из проблем при этом (настроить сервера как зеркала и настроить защиту от блокировок на них куда сложнее), выбирали из того, что было свободно и что было покороче по названию и запоминалось. Выбрали navalny.us (сейчас мы зарегистрировали и navalny.at — интересно, скажут ли теперь прокремлёвские «политологи», что Навальный показывает свою связь с Австрией).

И я, и Влад давным-давно (много лет) работаем в сфере IT, интернета. Для нас, как для людей чуть ли не каждодневно занимающихся темой создания веб-сайтов, регистрации доменов, давно не существует ассоциации «домен .us — значит строго США». Также, как для нас давным-давно не существует ассоциации «домены .com обозначают коммерческие организации, домены .org обозначают общественные организации» и т.д. Любой человек, связанный профессионально с созданием веб-сайтов, регистрацией доменов и занимающийся этим не первый год, скажет вам, что в интернете все границы моментально стираются. Возможно в самом начале, когда новая доменная зона (типо той же .us) только-только появилась, она и предполагалась как для «ограниченной регистрации», но почти сразу такие ограничения перестали соблюдать и эти домены регистрируют все, кому нравится. Прямо сейчас вы можете пойти на GoDaddy и зарегистрировать себе всего за 4 $ домен в зоне .us — никто и не подумает спрашивать вас, а связаны ли вы как-то с США, имеете ли право регистрировать такой домен. Точно так же, несмотря на заявленные изначально ограничения, вы можете спокойно зарегистрировать себе домен .pro или .xxx. Или возьмём пример зоны, которая ещё не родилась, но ограничения на неё уже заявлены: новая доменная зона .nyc. Заявляется, что зарегистрировать в ней домен смогут только жители и организации Нью-Йорка, но вы, не являясь ни тем, ни другим, можете уже сейчас заказать себе домен в этой зоне через кучу доменных регистраторов.

Почему вы не пиарите Tor, не создаёте зеркало в i2p, не пишите инструкцию подключения VPN и т.д.



Наша задача — сделать сервис, который совсем не требует от пользователя никаких лишних телодвижений. Просто заходишь и читаешь свежий пост из блога Алексея. Люди ленивы по своей природе, им лень что-то скачивать, устанавливать, настраивать. Поэтому несмотря на то, что все эти Tor, i2p, VPN дают солидные бонусы (с ними блокировки совсем не заметны), наш сервис пользуется спросом.

Роскомнадзор же может просто «забанить» основной сайт navalny.us, почему он этого не делает?



Сайт navalny.us не содержит в себе никакой противоправной информации, нет правовых оснований его блокировать, что подтвердил и официальный представитель Роскомнадзора (читайте статьи по ссылкам в начале этого поста). Всё, что делает наш сервис: даёт ссылку на другой сайт-зеркало, который содержит в себе копию блога Алексея Навального. Если вы считаете, что можно внести в реестр navalny.us, то на том же основании тогда можно внести в реестр любой сайт, где встречается ссылка на ЖЖ Алексея Навального. А даже если и внесут в реестр — не проблема, мы в считанные минуты поднимем хоть 10 таких сервисов.

Какие наши дальнейшие шаги



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

Поскольку познания в IT у сотрудников Роскомнадзора минимальные, они каким-то образом (можно как-то пригрозили и заставили, может просто попросили, может запартнёрились) повлияли на сам ЖЖ, чтобы он самостоятельно вычислял и блокировал наши зеркала. Поэтому иногда «волонтёрские зеркала» (которые нам присылают) начинают выдавать ошибку 451 — мы их быстро убираем. У наших собственных зеркал защита гораздо более сложная и ЖЖ не получается их забанить. Должен сказать, по закону Роскомнадзор никак не может заставить ЖЖ блокировать наши зеркала. Наши зеркала — это сторонние ресурсы, никакой ответственности за содержание на них ЖЖ нести не может.

Мы продолжаем заявлять, что блокировка ЖЖ Навального — цензура в чистом виде. Слова представителя Роскомнадзора: представитель Роскомнадзора полагает, что, несмотря на массу появившихся «зеркал», блокировка блогов Навального достаточно эффективна: «Аудитория его блога рассеялась по массе сайтов и, очевидно, уменьшилась» нас только дополнительно злят. Фактически они прямо, ничуть не стесняясь, заявляют, что призывы к несанкционированным акциям, экстремизм, домашний арест тут совершенно не причём. Их цель — заткнуть Алексея, закрыть его блог, как площадку с альтернативным мнением. Поэтому мы решили перейти к новой стадии атаки на органы цензуры.

С самого начала истории с реестром как таковым, Роскомнадзор, да и прочие госорганы демонстрировали, что они совершенно ничего не знают об интернете, не разбираются в нём. К сожалению, в юридическом плане сотрудники этих органов подкованы ненамного лучше, чем в IT. Что уж говорить, если постановления Медведева, регулирующие деятельность реестра и РКН, прямо противоречат себе же в некоторых моментах (о чём я неоднократно давно заявлял в том числе лично руководству Роскомнадзора). Как пример: одни положения инструкции говорят, что в реестре могут содержаться только те сетевые адреса (IP-адреса), которые позволяют идентифицировать ресурс (т.е. принадлежат только одному сайту, когда можно сказать что-то вроде «IP-адрес 89.45.32.34 идентифицирует ресурс mysite.com, поскольку на нём находится только этот ресурс»); с другой стороны, переход ресурса из состояния «временной блокировки» (когда у ресурса есть ещё сутки, чтобы добровольно удалить информацию) в состояние «перманентной блокировки» (когда ресурс не удалил противоправную информацию и теперь выйти из реестра может только через суд) осуществляется путём дополнения записи о данном ресурсе в реестре, его IP-адресом. Т.е. для тех ресурсов, у которых нет своего, идентифицирующего IP-адреса (а таких подавляющее большинство в реестре), Роскомнадзор «вынужден» вносить в реестр «общие» IP-адреса (принадлежащие не только «запретному» ресурсу), тем самым прямо нарушая правила ведения реестра.

Есть подобные грубые нарушения Роскомнадзора и в деятельности по блокировке зеркал ЖЖ Навального. В частности, Роскомнадзор блокирует новые зеркала на основании старого решения Генпрокуратуры от 13 марта, то есть как бы вносит адреса зеркал в то постановление задним числом. Как они сами объясняют: «если ресурс содержит копию информации заблокированного ресурса, то дополнительной санкции Генпрокуратуры не требуется». Мы убеждены, что причины такой мотивации не в наплевательском отношении к закону, а в полном непонимании как закон работает, как работает право и т.д. Если вы внимательно вчитаетесь в решения Роскомнадзора, Генпрокуратуры, ФСКН и прочих ведомств, на основании которых вносили в реестр ресурсы, вы увидите, что в них налагается запрет на сам ресурс, а не на информацию, находящуюся на нём. В них только констатируется, что ресурс да, содержит информацию о способах самоубийства / призывы к беспорядкам / экстремизм, на основании чего решается наложить запрет на сам ресурс. Чтобы запретить и / или информацию, находящуюся на ресурсе, в постановлении должны содержаться прямые отсылки, что «на ресурсе имеется текст следующего содержания [цитата], который является призывом к тому-то».

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

Генеральная прокуратура, в свою очередь, также совершенно наплевала на законы. Напомню, что комментируя в прессе решение о блокировке ЖЖ Навального, Генпрокуратура и другие госорганы заявляют, что это сделано из-за нарушения условий домашнего ареста. Но поскольку в законе, регулирующем блокировку сайтов, нет такого основания для блокирования ресурса, Генеральная прокуратура выпустила приказ в котором нет ни слова про домашний арест, зато есть основание «призывы к массовым беспорядкам, экстремизму и участию в несогласованных акциях» (всё сразу). При это нет отсылки к конкретному посту, к конкретным словам Навального, где содержатся эти призывы. Теперь другие ресурсы, а в особенности СМИ, поставлены в неловкое положение: указания на конкретные слова, ставшие причиной блокировки, нет; Роскомнадзор же блокирует любые перепечатки без каких-либо дополнительных решений; как же тогда быть, как случайно не попасть под блокировку? Какие слова, посты из блога Навального можно процитировать, а какие нет?

В чём же суть новой стадии



С сегодняшнего дня мы решили перейти к новому этапу сопротивления: мы устроим Роскомнадзору и Генеральной прокуратуре юридический террор. По каждому случаю (прошлым и новым, в том числе не связанным напрямую с блокировкой ЖЖ Навального и наших зеркал) нарушения закона, правил будем составлять жалобы в Генпрокуратуру (на действия и решения Роскомнадзора) и суд (на решения Генпрокуратуры). В том числе сейчас мы готовим основательную жалобу на изначальное решение Генпрокуратуры о блокировке блога Навального. Да, все эти инстанции повязаны вместе и почти нет шансов что-то выиграть, но вот работы мы им добавим немало и нервишки потрепим.

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










P.S.: как всегда, комментарии по умолчанию скрываются. Раскрываются только полезные комментарии.

Операция «В жопу Роскомнадзор!»

Многие из вас знают, что решением Генпрокуратуры заблокирован для доступа из России ЖЖ navalny. Комментируя это решение, Следственный комитет и другие органы власти говорили, что «блог Навального нарушает условия его меры пресечения», хотя официально в постановлении Генпрокуратуры от 19.03.2014 № 27/3-286-2014/Нд6333-14 описана совершенно другая причина (без указания ссылки на конкретный пост или слова из ЖЖ): содержит призывы к массовым беспорядкам, осуществлению экстремистской деятельности, участию в массовых (публичных) мероприятиях, проводимых с нарушением установленного порядка.

От Роскомнадзора или Генпрокуратуры невозможно добиться комментариев, в каком именно посте, словах из ЖЖ Навального содержатся такие призывы. Соответственно, мы имеем дело ни с чем иным, как с цензурой.

Также многие из вас знают, что мы сделали сервис navalny.us (ранее фигурировавший под адресами navalny.fuckrkn.me, fuckrkn.me), который всегда даст вам ссылку на актуальное, незаблокированное зеркало ЖЖ Навального. Нам стало поступать много вопросов, как сделать такое зеркало и мы решили опубликовать более или менее полную инструкцию. Сразу уточняем, что без знания самых основ администрирования сервера, у вас, скорее всего, не получится сделать рабочее зеркало.

Что нужно для создания зеркала? Нужен сервер за пределами РФ (подойдёт простейший сервер из США от DigitalOcean за 5 $ в месяц) с SSH-доступом, на котором будет стоять nginx в роли прокси. Нужен домен (второго, третьего, четвёртого или другого уровня — не важно, всё подойдёт). Использовать Apache не рекомендуем, задохнётся под нагрузкой. В настройки nginx вписываете следующее:

server {
        server_name ВАШ.АДРЕС.ЗЕРКАЛА; # например navalny.mydomain.com
 
        location / {
                proxy_pass http://navalny.livejournal.com;
                proxy_set_header        Origin           http://$proxy_host/;
                proxy_set_header        Referer          http://$proxy_host/;
 
                proxy_set_header Accept-Encoding "";

                add_header X-Robots-Tag    noindex;
 
                sub_filter navalny.livejournal.com $host;
                sub_filter_once off;
        }
}


Исходник настройки на Github — улучшайте и присылайте свои пулл-реквесты!

Только не забываем включить модуль ngx_http_sub_module. Неплохо будет также включить кэширование, чтобы облегчить нагрузку на сервер.

Следующим шагом идём на Cloudflare и регистрируем бесплатный тарифный план (для наших целей он вполне подойдёт). Зарегистрировавшись, мы получим адреса NS-серверов Cloudflare — идём в панель управления доменом у вашего регистратора доменов и указываем эти NS-сервера для своего домена, который будете использовать как зеркало. Дальше идём в панель управления Cloudflare и создаём там A-запись поддомена для зеркала, которой указываем реальный IP сервера, который вы арендовали у DigitalOcean. В настройках записи, в колонке "Active" не забываем включить облачко:



Ваше зеркало готово, можете смело присылать нам его адрес на mirror@fuckrkn.me, теперь вы часть коллективного Навального.

Collapse )