Pull to refresh

Решаем проблему блокировок. Защищаемся от попадания в реестр запрещенных сайтов

Заранее прошу прощения за ошибки (в личку).
Я техник, пишу, как умею. Cтрелять в пианиста.

Преамбула


С наркотиками, педофилией и самоубийствами надо бороться, но не такими методами. За столь малый промежуток времени работы закона мы увидели, что в данный реестр может попасть абсолютно любой сайт, а заблокированным может оказаться даже тот, которого в реестре нет. Закон явно используется не против тех, на кого он был нацелен.
Мы поговорим о том, как мы можем применить наши навыки для борьбы с очевидным беззаконием. Я не буду повторяться про такие методы как VPN, tor, i2p, https анонимайзеры. Про них уже много сказано. Русскоязычные ресурсы не хотят терять посетителей — это их хлеб. И до тех пор, пока у каждого дома не будет VPN, администрация сайтов будет удалять не угодный правительству контент. Режь вдоль — говорит зомбоящик, а блокируют почему-то интернет.

Фабула


Типичные способы фильтрации запрещённых сайтов:

1. Блокировка по IP. Самый дешёвый способ.

1.1 На маршрутизаторе провайдера ip адрес с маской /32 (сеть состоящая из одного адреса) роутиться в null. При попытке зайти на любой сайт, находящийся на данном ip, вы получаете недоступность сайта по таймауту.

1.2 Отправка маршрутизатором провайдера сообщения «unreachable» в ответ на попытку открыть сайт по данному ip. В этом случае сообщение о недоступности сайта будет отображено вашем браузером без задержки.

1.3 Вместо роута в null провайдер может добавить запись в маршрутизатор с роутом на специальный сервер, который вместо контента сайта выведет сообщение о том, что ресурс заблокирован.

1.4 Блокировка по доменному имени. ДНС провайдера выдаёт при запросе заблокированного имени вместо ip адреса искомого сайта свой адрес сайта, на котором уже сообщает о блокировке.

2. Блокировка по URL

2.1. Это самый дорогой способ. Весь трафик проходит через DPI (анализатор пакетов, по простому — навороченный программно-аппаратный прокси-сервер). Крупные и средние провайдеры нередко используют их для нарезки ширины канала, приоретизации трафика, защиты от атак, спам контроля, родительского контроля и т.д т.п. В данном случае клиенту в ответ на запрашиваемый URL адрес выдаётся редирект на страницу, где сообщается о том, что данный конкретный URL заблокирован.

Напомню, что в списке на блокировку есть записи только с ip, блокировка происходит по ip.

На данный момент есть неоднозначность с трактовкой требований по блокировке. В том случае, если в записи на блокировку указан ip и URL, блокировать ли по жёсткому соответствию IP — URL, или при пропускании всего трафика у провайдера через DPI блокировать по URL (при блокировке только по URL смена ip адреса у заблокированного домена не поможет).

На текущий момент провайдеры, блокирующие с помощью DPI, используют жёсткую связку, и, если блокируемый сайт меняет ip, то он снова становится доступным, несмотря на блокировку по URL.

2.2. В данном случае всё как в пункте 1.3., только сервер или аппаратная железка редеректят на страницу блокировки только при запросе заблокированного URL, в противном случае просто блокируют трафик.
При данном подходе нет возможности блокировать URL, если сайт сменил ip (хотя пока этого никто и не требует).

Обход блокировки по IP (на текущий момент решает и проблему блокировки по URL):

1. Смена ip.

2. Использование CDN, а также сервисов защищающих от DDoS. CDN, как и сервисы защиты от DDoS, (своего рода обратные прокси-сервера) выдают на запрос вашего сайта ip из своего пула. Как правило, при этом используется целый блок адресов для группы сайтов. Блокировка одного ip из пула приведёт к лишь частичной недоступности Вашего ресурса. К тому же не только вашего, но и остальных, находящихся в пуле. Кроме этого, CDN использует сервера в разных странах, а это означает, что пользователи не из России проблем испытывать не будут.

Если надзорные органы не одумаются, и не откажутся от блокировке по ip, то можно ждать развития рынка DDoS-услуг новыми опциямия. Например, «завалю все сайты на Bitrix-е использующие CDN, недорого».

Когда сайты из CDN начнут попадать в реестр, все провайдеры будут вынуждены перейти на блокировку по URL.

3. Это должны сделать все. Создаем на сайте ссылку, которая не будет доступна в индексе сайта (кроме вас и тех, кому вы её передадите, никто не должен на неё попасть, даже робот). Контент на ней должен быть не запрещённым, можно вообще сделать её пустой страницей. Отправляем ссылку на www.zapret-info.gov.ru, затем смотрим лог и получаем профит в виде ip адреса. Cмотрим подсети провайдера, блокируем на фаэрволе (сетью можно поделится, чтобы всем не делать ненужную работу).

4. Уменьшаем зло от блокировки. Привожу общие сведения для линукса (пошаговой документации не даю, google или средний админ в помощь). Вместо одного ip для вашего сайта покупаете столько, сколько сможете. Вешаете их на алиасы интерфейса сетевой карты. Поднимаете и настраиваете ДНС сервер (речь, как вы понимаете, идёт не про шаред хостинга, а хотя бы VPS). Используя ip route и ip rules настраиваете, чтобы при запросе на один из ваших адресов ответ уходил с него же. ДНС сервер повесьте на отдельный ip, чтобы при блокировке по ip он был доступен.
Далее для Bind. Создаёте acl по количеству купленных ip, в них добавляете сети российских операторов (где взять будет дальше) и ещё один acl с сетью 0.0.0.0/0. Создаём для этих acl view с таким же количеством. В общем делаем по аналогии примера:

acl «operators_pool1» { 100.0.0.0/8;
131.100.0.0./16;
};

acl «operators_pool2» { 101.0.0.0/8;
132.100.0.0./16;
};

view «view_operators_pool1» {
match-clients { operators_pool1; };

zone «youdomain.com»{
type master;
notify yes;
file «master/ru/operators_pool1_youdomain.com»;
};
};

view «view_operators_pool2» {
match-clients { operators_pool2; };

zone «youdomain.com»{
type master;
notify yes;
file «master/ru/operators_pool2_youdomain.com»;
};
};

Создаёте файлы зон, где в разных файлах будут разные ip Вашего домена. Таким образом, при попадании ip в реестр, будет заблокирован доступ лишь от части операторов, среди которых будет тот, на котором сидит служащий, отправивший Ваш домен на блокировку. Дальше можно будет сменить этот ип, а для большинства пользователь недоступность останется незамеченной.
А когда наконец-то будет внедрён ipv6, можно будет вешать по одному ip на каждого российского оператора.

Качаем
ftp.ripe.net/ripe/dbase/split/ripe.db.aut-num.gz
ftp.ripe.net/ripe/dbase/split/ripe.db.inetnum.gz

Парсим файл inetnum, берём из него подсети «inetnum». Там, где «country» RU. Cобираем их в пулы по «mnt-by», берём для наглядности из aut-num на основании наших «mnt-by» «descr».
У нас получилась база провайдеров России с их блоками ip адресов. Читаем descr, ищем госорганизации, и в блокировку на фаэрволе их. Остальных делим в равных пропорциях и добавляем в acl.

Обход блокировки по URL:

1. Не уверен в его работоспособности, и точно уверен, что поможет ненадолго. Используем SPDY (http://habrahabr.ru/post/145918/). Если я не ошибаюсь, DPI на данный момент не умеют его разбирать. Соответственно, блокировать по URL у провайдеров не получится (ещё раз уточню, что я могу ошибаться, жду опровержение в комментариях). К тому же SPDY подразумевает возможность использовать SSL.

2. Использование https. В данном случае лучше использовать не само-подписанный сертификат, чтобы пользователь видел, что его провайдер подслушивает его. Недостаток способа в увеличении нагрузки на сервер, поскольку трафик шифруется.
Крупные провайдеры используют готовые решения, и не будут городить «линукс-анализаторы https с подменой сертификатов». А мелкие не двинутся, пока крупные не сделают свой шаг. Поэтому, до появления готовых железок с разбором https провайдеры смогут блокировать только по ip.
Если существующие железки это позволяют, сообщите, пожалуйста, в комментариях.

3. Способ лучше, чем использование https, даст 100%-ю защиту от блокировки по URL (но тоже имеет свои сложности в реализации и увеличивает нагрузку). Я думаю, все слышали о реферальных ссылках. Они предназначены для определения по ссылке с какого реферала пользователь зашёл на сайт.
Методика заключается в использовании данной технологии с небольшими изменениями.
Берём ссылку rutracker.org/forum/viewforum.php?f=1379 и превращаем её в
rutracker.org/forum/viewforum.php?f=1379&ip=XXX.XXX.XXX.XXX, где XXX.XXX.XXX.XXX — ip пользователя, зашедшего на сайт (за исключением случаев, когда пользователь зашёл по ссылке, полученной от другого пользователя. В этом случае ip того пользователя необходимо сохранить).
Для сайтов с авторизацией можно ещё добавить имя пользователя, для дальнейшей идентификации.
Теперь мы можем видеть, от какого пользователя получена ссылка. А также ссылка будет уникальна для каждого пользователя, но это будет видно всем и возможность блокировки по части ссылки останется.

Поэтому следующую часть 1379&ip=XXX.XXX.XXX.XXX необходимо зашифровать на сервере (алгоритм выбираете сами, речь идет о шифрации, а не о хешировании, тоесть процесс обратимый)
В результате ссылки превратятся во что-нибудь вида
rutracker.org/forum/viewforum.php?f=MTM3OSZpcD1YWFguWFhYLlhYWC5YWFgK и для каждого ip будут уникальны. На сервере вы их расшифруете, и выдадите нужный контент, а заодно узнаете, от кого пришла ссылка (если добавлять имя авторизованных пользователей, можно узнавать, кто из них вас сдал).

Теперь все ссылки на нашем сайте уникальны для каждого пользователя и/или ip (если добавили имя авторизованного пользователя). Соответственно, при попадании в реестр, ссылка будет заблокирована для конкретного ip и/или пользователя, а также мы сможем по логам узнать ip всех, кто проверял данную ссылку, и добавить их в чёрный список на фаэрволе.
Данную технологию можно применить и для СЕО ссылок

Например, kremlin.ru/news превращаем в kremlin.ru/ХХХ.ХХХ.ХХХ.ХХХ/news и применяем шифрацию kremlin.ru/0KXQpdClLtCl0KXQpS7QpdCl0KUu0KXQpdClL25ld3MK. После реврайтов она все равно будет передана на какой-нибудь index.php, где мы её и расшифруем.

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

Ответный удар:

Ресурсы маршрутизаторов и DPI не бесконечны и крайне дороги (к примеру, cisco SCE имеет ограничение в 100K правил для блокировки).
Поможем операторам заполнить их таблички, и, возможно, тогда они начнут лоббировать интересы своих пользователей.

1. Ищем в поисковике к примеру: «цифровые наркотики» (только википедию не блочьте, пожалуйста), «ширево», «наркота», «спайс», «Spice», «спиды», «легальные наркотики», «Курительные смеси», «курительные миксы», «легальные порошки», «новый спай», «гашиш круглосуточно», «гашик», «JWH» и т.д. и т.п.
Используем закон во благо (хотя это не к чему не приведёт, в свете лёгкого обхода блокировок). Бороться с розничной наркотой надо контрольными закупками и отслеживанием закладок. Камер-то везде понатыкали, чего сложного-то. Вот где надо казакам да разным хоругвеносцам себя проявлять. Cделали контрольную закупку — отвели в одел курьера. Даже если формула ещё не в реестре, так быстрее там появится.

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

3. Если помните, «Невинность мусульман» была на английском языке. Значит, надо проверять их лингвистические познания. Что делать — я думаю, понятно.

4. Они создали реестр запрещённых сайтов. Нам надо создать реестр блоков ip адресов госорганов и блокировать их на всех популярных ресурсах. Посмотрим, как они без «вконтактика» в думе (хотя Дуров как-то помалкивает).
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.