Абузоустойчивый хостинг в ZERONET

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

Сегодня мы познакомим Вас с оригинальным решением по размещению контента, который может быть подвергнут абузам. Сразу же хочу напомнить, что если у вас возникнут какие либо трудности с его настройкой, мы с радостью поможем вам!

Децентрализованный веб, сайты в котором невозможно выключить, а доступ к информации нельзя запретить никакими методами, — давняя мечта любого айтишника. Однако только в последнее время мы начали замечать хоть какое-то движение на пути к реализации этой идеи. Появились проекты MaidSafe, Maelstrom и IPFS, а не так давно к ним присоединился проект ZeroNet, который отличается крайним дружелюбием к обычному пользователю и богатым набором функций.

Вступление

Во время американских выборов 2010 и 2012 годов Facebook провел интересный эксперимент над несколькими миллионами пользователей, суть которого заключалась в том, чтобы добавить в ленту новостей юзера специальное уведомление — оно сообщало, что его друг уже проголосовал на выборах в парламент или выборах президента. В результате простая и, казалось бы, совсем безобидная функция подняла явку на 340 тысяч человек и показала, что при желании такие мастодонты, как Facebook и Google, могут легко повлиять на значимые для целой страны события.

Очевидно, что ни одно правительство ни одной страны мира не захочет, чтобы им управляли Марк Цукерберг и Ларри Пейдж. Но если в США с таким влиянием принято бороться через сотрудничество, то, например, Китай и Россия предпочитают полностью отрезать себя от нежелательного контента и сервисов с помощью всевозможных блокировок и запретов.

Добавь в эту историю разного рода Михалковых и других держателей прав, и ты получишь довольно печальную картину интернета будущего, в который, может быть, и не придется «ходить по паспортам», но без VPN или Tor уже будет не обойтись. И все бы ничего, да вот только отключение от русского сегмента способны выдержать лишь большие ресурсы с большим количеством технически грамотных юзеров (это я про rutracker.org), тогда как более мелкие веб-сайты вынуждены будут закрыться.

РЕШЕНИЕ ПРОБЛЕМЫ Абузоустойчивого хостинга

Обеспечить бесперебойную работу веб-сайта и сделать его неуязвимым к любым блокировкам можно только одним путем — создать множество копий сайта и каким-то образом организовать автоматический поиск работающей копии при его открытии. Это называется децентрализацией, а ярчайший пример такой технологии — это пиринговые сети, в частности всем известный BitTorrent.

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

Один из примеров ее использования для веба — это система IPFS, о которой мы уже писали. IPFS — нечто вроде большой распределенной файловой системы, основанной на идеях P2P. Каждый подключившийся к сети узел становится хранителем части ее данных, а в файловой системе можно размещать как обычные файлы, так и целые веб-сайты. Каждый веб-сайт адресуется с помощью хеша его главной страницы, а поиск ближайшего узла, хранящего главную страницу, происходит автоматически без использования центрального сервера. Это замечательная, а главное — универсальная технология. Но у нее есть несколько проблем:

нет поддержки SQL и server-side-скриптов;
все файлы адресуются с помощью хешей, которые изменяются после обновления файла, в результате поддерживать веб-сайт, состоящий из сотен и тысяч файлов, проблематично;
после обновления сайта хеш его главной страницы изменится, а ты об этом даже не узнаешь (технология IPNS, решающая данную проблему, все еще находится в разработке);
простая установка, но неудобное использование: сам ищи сайты, сам указывай, какие сайты ты хочешь дублировать у себя, сам их обновляй.

ZeroNet лишен всех этих проблем, а пользоваться им сможет даже твоя мама. Все, что нужно сделать, — это просто скачать архив с официального сайта, распаковать его и запустить файл ZeroNet.cmd (Windows), ZeroNet.app (OS X) или ZeroNet.sh (Linux). После этого в браузере откроется новая вкладка с панелью управления ZeroNet. С ее помощью можно перейти на официальный форум, чат, открыть почтовый клиент и другие местные сайты. Каждый посещенный сайт попадает в кеш и будет автоматически обновляться по мере его обновления автором, а ты сам станешь участником раздачи. Даже если ты находишься за роутером, ZeroNet откроет нужный порт с помощью UPnP.

На момент написания статьи в ZeroNet существовали сотни сайтов (775 в базе местного поисковика). Из наиболее интересных можно отметить:

ZeroTalk — официальный форум;
ZeroBlog — блоговая платформа, аналог Blogger;
ZeroMail — почтовый клиент;
PLAY — нецензурируемый торрент-трекер;
RU-ZER0TALK — русскоязычный форум;
Kaffiene — поисковик, но ищет только по названиям веб-сайтов; • Flappy Bird — та самая игра, с таблицей рекордов;
Nullfolder — файлообменник.

Кстати для серфинга сети ZeroNet можно воспользоваться шлюзом – https://www.zeropro.xyz/

По адресам ссылок ты можешь заметить, что они все ведут на локальный хост. Это не ошибка, а особенность сети. Поскольку ZeroNet работает по принципу файлообменных сетей, то перед тем, как открыть веб-сайт, клиент ZeroNet сначала находит ближайшего пира (peer), у которого есть свежая версия сайта, скачивает его на диск (естественно, не весь, сначала только главную страницу и ресурсы: JS, CSS и так далее), а затем отдает браузеру в режиме прокси. Таким образом, для твоего браузера все сайты ZeroNet локальные. А это значит, что ты можешь открывать их, даже если у тебя нет интернета, а также автоматически получаешь защиту от шпионских скриптов, встроенных в сайт. Кстати, защита от снифинга трафика тут тоже есть, данные между участниками сети передаются зашифрованными с помощью TLS.

Также ты можешь заметить, что некоторые сайты имеют вполне осмысленные имена вроде Blog.ZeroNetwork.bit, тогда как имена других — это просто набор символов. На самом деле все веб-сайты в ZeroNet адресуются с помощью открытого ключа, сгенерированного с помощью алгоритма BIP32, который также используется для защиты кошелька в Bitcoin. Набор символов в ссылке — это и есть ключ, и он позволяет любому клиенту ZeroNet удостовериться, что веб-сайт не был скомпрометирован и действительно создан или обновлен его создателем. Без такой защиты любой участник сети мог бы легко подделать запрашиваемый другим участником веб-сайт.

Разумеется, использовать открытые ключи для доступа к сайтам не очень удобно, поэтому в ZeroNet есть возможность привязки сайтов к доменам, созданным с помощью распределенной системы доменных имен Namecoin. Она хороша тем, что у нее нет единой точки отказа, а информация о домене может быть изменена только его текущим владельцем. Тот же Роскомнадзор не сможет заблокировать такой домен, так как ни у него, ни у операторов связи просто не будет способа изменить информацию в базе Namecoin.

В ZeroNet можно ходить через Tor. Причем в версии для Windows Tor уже включен в архив, поэтому все, что нужно сделать, — просто открыть панель управления ZeroNet и активировать опцию Tor Enable Tor for every connection. В Linux и других *nix-системах необходимо предварительно установить Tor из репозитория, а затем открыть доступ на управление его настройками сторонним приложениям, добавив строки ControlPort 9051 и CookieAuthentication 1 в файл /etc/tor/torrc и перезапустив Tor:

Также в Debian/Ubuntu следует добавить себя в группу debian-tor и перелогиниться:

В ArchLinux необходимо выставить корректные права на конфиги Tor.

Кстати, ZeroNet вполне можно запустить в Docker (здесь /tmp — каталог для хра- нения конфигов в хост-системе):

Поднимаем абузоустойчивый хостинг в ZeroNet

О’кей, все просто, секьюрно, нецензурируемо и вообще круто. Но так ли легко поднять веб-сайт в ZeroNet и с какими подводными камнями можно столкнутьсяй Все это несложно проверить: система предлагает довольно простой и быстрый способ создания и запуска веб-сайта.

Для начала остановим ZeroNet, просто убив процесс с помощью комбинации Ctrl + C. Далее создадим новый веб-сайт (здесь и далее команды приведены для Linux):

ZeroNet.sh siteCreate

Команда сгенерирует для нас два ключа: приватный и публичный, попросит со- хранить первый ключ в укромное место и никому его не показывать. Далее следует ввести yes, и скрипт создаст для нас шаблон нового сайта, который будет располагаться в каталоге ZeroNet/data/публичный_ключ.

Теперь можно перейти в указанный каталог и разместить в нем все необходимые для работы сайта файлы (HTML, JS, CSS). Бэкенд в ZeroNet разместить невозможно, а если он все-таки нужен, то придется либо довольствоваться встроенной в ZeroNet базой данных SQL (которая не очень быстра), либо держать бэкенд в «обычном интернете», что убивает всю прелесть ZeroNet, так как у ресурса появляется точка отказа. Когда все файлы лежат на месте, сайт можно публиковать:

ZeroNet.sh siteSign публичный_ключ
ZeroNet.sh sitePublish публичный_ключ

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

В принципе, это все, что нужно знать, чтобы выложить client-only-сайт в ZeroNet. Однако если ты хочешь создать что-то серьезное, стоит прочитать два поста в официальном блоге: ZeroNet site development tutorial #1 и ZeroNet site development tutorial #2. На примере простого чата разработчики поясняют, как использовать ZeroFrame API. Он позволяет создавать динамические многопользовательские сайты, способные работать с локальным хранилищем файлов и базой данных.

Подробный FAQ по настройке можете почитать здесь http://zeronet.readthedocs.io/en/latest/faq/

Абузоустойчивая почта ZeroMail

ZeroMail — это официальное почтовое веб-приложение ZeroNet и один из наи- более удачных примеров использования ZeroNet. В отличие от традиционных почтовых клиентов, таких как Gmail, ZeroMail — это вообще не клиент, а всего лишь локальная система обмена сообщениями между пользователями.

При отправке письма ZeroNet не соединяется с сервером, а просто шифрует послание с помощью открытого ключа адресата и записывает его в локальную базу данных (data/users/zeromail.db), которая автоматически синхронизируется со всеми остальными пользователями ZeroMail (по сути, они просто получа- ют обновленную версию веб-приложения). Таким образом, в базе хранятся все сообщения всех пользователей приложения, однако расшифровать эти сообщения могут только адресаты, так как только у них есть закрытый ключ для расшифровки.

В сущности, большинство сайтов в ZeroNet работают подобным образом. С той лишь разницей, что открытые для всех веб-сайты не используют шифрование, а в некоторых информация записывается в текстовые файлы вместо баз данных. В любом случае все сайты по своей сути локальные, а доступ к ним с других узлов осуществляется с помощью встроенного в ZeroNet механизма обновления копии веб-сайта.

Заключение.

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

Рейтинг материала
[Голосов: 0 Рейтинг: 0]
28 декабря 2015, 11:10

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *