Как открыть даркнет-парашу: пособие для домохозяек

Как открыть даркнет-парашу: пособие для домохозяек

Ubhelbr

Привет, это Сниви. Меня несколько раз просили запилить гайд по даркнет-парашам, и вот я, наконец, доставляю. Сразу оговорюсь, что эта статья не будет концентрироваться на максимальной параноидальной безопасности. Я буду исходить из принципа, что Tor и I2P безопасны по умолчанию, что, строго говоря, не так, ибо ничто не безопасно для труъ инфосека. Однако же, следует понимать, что если до вас доберутся, то вероятность того, что это сделают непосредственно через скрытосети, минимальная. Поэтому нужно в первую следовать общим для всех принципам операционной безопасности в интернете, и только потом задаваться вопросами о теоретически возможных уязвимостях скрытосетей, требующих для реализации значительных ресурсов и, соответственно, крайней заинтересованности спецслужб лично в вас.

Показывать буду на примере Ubuntu Server 22.10, работающего из-под root. Я не буду останавливаться на таких подробностях, как необходимость писать sudo, если вы не root, или делать apt update перед установкой пакетов, или как редактировать файлы (лично я в своей домохозяйской манере использую WinSCP в связке с Sublime Text).

TOR

Установка

По непонятной мне причине разработчики TOR засунули инструкции по установке CLI клиента в дебри своего сайта, поэтому наиболее подходящая ссылка по установке TOR под ваш дистрибутив – вот. Этот раздел посвящен установке мостов, но здесь содержится главное: что вбить в консоль, чтобы установить TOR, используя ваш пакетный менеджер, как запускать и останавливать сервис, как включать и выключать его автозапуск, а также где вероятнее всего будет находиться файл .torrc.

В случае убунты всё банально:

apt install tor – устанавливает тор; при установке также будет автоматически создан systemd сервис, который будет запускаться автоматически.

systemctl start/restart/stop/status/enable/disable tor – управление сервисом, всё предельно очевидно.

Конфигурационный файл лежит в папке /etc/tor/torrc.

.torrc

Это ваш основной конфигурационный файл. В нём можно, например, задать настройки прокси, добавив строку наподобие:

Socks5Proxy 127.0.0.1:1080

Для сервера в России, где TOR заблокирован, без этого не обойтись. Однако, это создаёт серьёзную угрозу безопасности, поэтому убедитесь, что вы доверяете используемой прокси не меньше, чем самому TOR. Я рекомендую использовать приватную прокси, работающую по протоколу Shadowsocks или аналогичные решения с адекватным шифрованием. Можно даже попытаться прогонять трафик через I2P, но что при этом будет со скоростью, страшно представить.

Создание .onion сайта

В том же .torrc раcкомментируйте строки:

HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:8081

и отредактируйте их, задав произвольное имя новому сервису. После этого нужно перезапустить сервис tor. После этого в папке /var/lib/tor должна появиться папка hidden_service. Она создаётся автоматически в результате парсинга .torrc. Внутри неё лежит файл hostname, содержащий автоматически созданный адрес нового onion-сайта.

Создание vanity доменьчиков

Красивый доменьчик можно сгенерировать программой mkp224o. Только запускайте её не на сервере, а на самой мощной машине, которая у вас есть (запустится и в WSL). Время генерации зависит от длины строки, которую программа будет сопоставлять с генерируемыми доменьчиками. Насколько я помню, mkp2240 не использует GPU. В прошлом, когда в ходу были более короткие и использующие другой алгоритм шифрования домены версии 2, была программа eschalot, которая использовала GPU, но сейчас используются только домены v.3.

В качестве тестового сайта я открою TOR-версию сайта plus15.ml. Поскольку цифры «1» не содержится в наборе символов Base32, будем искать строку «plus33». Полный набор команд следующий:

git clone https://github.com/cathugger/mkp224o --depth 1 --branch=master ~/mkp224o
cd mkp224o
./autogen.sh && ./configure && make
./mkp224o -S 5 -d onion_domains plus33

Скрипт будет выводить генерируемые домены в консоль, а остановить его можно сочетанием клавиш Ctrl+C. Сгенерированные домены будут лежать в папке onion_domains. Папку с нужным доменом бросаем в /var/lib/tor/. И тут есть важный нюанс: и сама папка, и все файлы в ней должны принадлежать юзеру debian-tor или аналогичному юзеру для вашего дистрибутива (посмотрите, какой пользователь у автоматически созданных папок), права доступа у папки 2700, у файлов внутри — 0600. Иначе ничего не заработает.

I2P

Я буду использовать I2PD, потому что я подзалупный агент ФСБ. Всем остальным рекомендую использовать оригинальный клиент, но он сделан на джаве, и это кринж.

Установка

Инструкция по установке.

Под Ubuntu при установке systemd-сервис создаётся, энаблится и запускается автоматически, под другие системы, возможно, придётся сделать это самому.

Конфигурирование

Подробно о конфигурировании написано здесь, мы же остановимся на добавлении новых сервисов. Для этого нужно открыть файл tunnels.conf и прописать в него что-нибудь наподобие:

[plus-33]
type = http
host = 127.0.0.1
port = 8082
keys = plus33.dat

После этого перезапускаем i2pd (systemctl restart i2pd) — в результате должен появиться файл /var/lib/i2pd/plus33.dat.

Создание vanity доменьчиков

Генератор доменьчиков распространяется с пакетом i2pd-tools. Полный набор команд:

git clone --recursive https://github.com/purplei2p/i2pd-tools ~/i2pd-tools
cd i2pd-tools
dependencies.sh

Скрипт dependencies.sh сообщит, какие библиотеки необходимо установить для сборки, в моем случае он сказал «Just install libboost and libopenssl dev packages on your pc». Поэтому выполняем:

apt install openssl libboost-all-dev
make
./vain plus33 -o i2p_domains/plus33.dat

В отличие от mkp224o, утилита vain не создаёт папки автоматически, поэтому предварительно папку i2p_domains нужно будет создать. По завершении в ней появится файл plus33.dat, а в консоли отобразится сгенерированный домен. Последний нужно запомнить, а файл .dat заменить ранее автоматически сгенерированный файл в /var/lib/i2pd. По замене файла необходимо задать ему того же владельца и те же права доступа, что были у оригинального файла (группа i2pd, владелец i2pd, права 0640).

Регистрация доменьчиков

Для регистрации короткого доменьчика потребуется запустить утилиту regaddr из того же пакета i2pd-tools. Выполняем команду:

./regaddr i2p_domains/plus33.dat plus33.i2p

В результате в консоль выкинет длинную фразу, которую нужно будет скопировать. Строка имеет формат <домен>=<base64-хэш>#!sig=<еще-какой-то-хэш>. Далее заходим на один из доменных регистраторов (или на все сразу) и вводим необходимые данные. Где-то потребуется ввести всю выводимую строку, где-то — отдельно домен и хэш. Из регистраторов имеются:

http://reg.i2p/add — регистратор майорских сайтов от создателей i2pd. Правил нет, но в случае, если сайт не будет подавать признаков жизни, позволяет его перерегистрировать любому хую с горы;

http://inr.i2p/postkey/ — ещё один регистратор, не имеющий правил и тоже, вроде как, сделанный русскими;

http://stats.i2p/ — вроде как оффициальный™ регистратор, который в настоящее время у меня не открывается (says a lot about i2p overall stability). Из минусов — моча (в частности, эксплицитно запрещены имиджборды, помимо прочего).

http://identiguy.i2p/ — так же свободный от мочи регистратор, но я так и не понял, как на нём регистрироваться, скрипты выдают 500 ошибок. Зато сделан не русскими.

Nginx

Как можно видеть из прошлых конфигов, мы настроили TOR-сервис на порт 8081, а I2P – на порт 8082. Порты выбраны произвольно, и они должны быть уникальными для каждого сайта (возможно, здесь я ошибаюсь, но для простоты решим так). Теперь их нужно прописать в Nginx. Создаём новый файл в /etc/nginx/sites-available (и, соответственно, ссылку на него в sites-enabled):

server {
 listen 127.0.0.1:8081; # TOR service
 listen 127.0.0.1:8082; # I2P service
 root /var/www/plus33;
 charset utf-8;
 index index.html;
 absolute_redirect off;
 port_in_redirect off; # Подробнее об этом ниже
 
 # Любые другие настройки вашего сайта, например
 location ~ \.php$ {
  include snippets/fastcgi-php.conf;
  fastcgi_pass unix:/run/php/php8.1-fpm.sock;
 }
}

Далее перезапускаем nginx (systemctl restart nginx) всё должно заработать.

Nginx добавляет к URL номер порта, если он отличается от :80. Это решается добавлением директив port_id_redirect off; absolute_redirect off;.

Дисклеймер

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

Это четвертая версия гайда, и я принимаю правки и предложения на доске, на метаторе и через ЛС на мастодоне. Также копия данной статьи есть на колчевики.

Report Page