Практика использования анонимной сети Tor

14 ноября 2016

Многие ошибочно полагают, что сеть Tor — это такой набор бесплатных (и очень медленных) прокси-серверов в обычный интернет. Такой вариант использования Tor, конечно же, возможен, но куда большая ценность «даркнета», на мой взгляд, заключается в его внутренних .onion ресурсах. Из этой статьи вы узнаете не только об обоих вариантах использования Tor, но и о том, как поднять собственный .onion ресурс, или как установить TCP-соединение через Tor, даже если клиент и сервер находятся за NAT.

Вариант 1: использование tor и Chromium

Существует по крайней мере два способа подключиться к сети Tor. Первый заключается в том, чтобы установить сервис tor и настроить ваш браузер, в данном примере — Chromium, так, чтобы он использовал этот сервис в качестве прокси. Для опытов я использовал Arch Linux, но в других дистрибутивах последовательность шагов будет почти такой же.

Установка сервиса:

sudo pacman -S tor torsocks

Запуск, остановка, и так далее производятся, как обычно:

sudo systemctl start tor
sudo systemctl stop tor

Сервис Tor работает, как socks-прокси на 127.0.0.1:9050. Любую программу можно заставить работать через Tor при помощи утилиты torify:

curl https://eax.me/ip/ -o -
torify curl https://eax.me/ip/ -o -

Если torify по какой-то причине не работает (я сталкивался с таким на старых версиях Ubuntu), попробуйте также утилиту proxychains. Она по умолчанию настроена на использование Tor, поэтому даже конфиг (/etc/proxychains.conf) не придется трогать.

Теперь — запуск Chromium:

chromium --proxy-server="socks5://127.0.0.1:9050" \
  --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE 127.0.0.1" \
  --incognito http://godnotaba36dsabv.onion/

Первый ключ говорит использовать указанный socks-прокси, второй — перенаправлять через него в том числе и DNS трафик. Заметьте, что чтобы это работало, Chromium сначала нужно закрыть.

Вариант 2: использовать Tor Browser

Использовать Chromium плохо как минимум по трем причинам. Во-первых, по умолчанию в нем включен JavaScript, что может использоваться для деанонимизации пользователя. Во-вторых, никому не известно, сколько и какой статистики он будет сливать в Google в очередной новой версии. В-третьих, иногда он глючит и считает, что .onion ресурс в адресной строке — это на самом деле такой запрос к поисковой системе. Поэтому для работы с Tor крайне рекомендуется использовать Tor Browser.

В Arch Linux он устанавливается из AUR (см заметку Управление пакетами в Arch Linux с помощью ABS и pacman). Tor Browser не только лишен всех названных выше недостатков, но и чуть удобнее за счет того, что не требует отдельной установки сервиса tor.

Заходим на .onion ресурсы

В сети Tor существуют поисковые системы, например, Torch и Candle. Но они не очень хорошо работают сразу по нескольким причинам. Многие ресурсы требуют авторизации, поэтому индексировать их бесполезно. Самих ресурсов меньше (следовательно, меньше ссылок на другие ресурсы), а поведенческие факторы практически недоступны. Таким образом, традиционные алгоритмы ранжирования использовать трудно, и сортировка в выдаче никакая.

На помощь приходят старые-добрые каталоги сайтов. Вот некоторые из них:

С их помощью вы без труда найдете все остальные внутренние ресурсы сети — форумы, торренты, почту, jabber, магазины, обменники валют, и многие другие. Кстати, на счет валюты. Большой популярностью пользуется Bitcoin. Ему при желании можно посвятить отдельную небольшую статью. Здесь скажу лишь, что неплохим клиентом является Electrum. В настройках можно очень легко заставить его работать через Tor.

Поднимаем свой .onion ресурс

Для поднятия своих ресурсов не требуется внешний IP, поэтому все описанные действия можно произвести даже в поднятой на ноутбуке виртуалке.

Ставим Nginx:

sudo pacman -S nginx
sudo systemctl enable nginx
sudo systemctl start nginx
curl localhost:80 -o -

Должны увидеть знаменитое Welcome to nginx!.

Ставим Tor:

sudo pacman -S tor torsocks

Дописываем в файл /etc/tor/torrc:

HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80
# можно указывать несколько портов:
HiddenServicePort 22 127.0.0.1:22

Запускаем Tor:

sudo systemctl enable tor
sudo systemctl start tor

Обязательно делайте резервную копию /var/lib/tor/hidden_service/ — без нее вы не сможете перенести свой сайт на другую машину, сохранив доменное имя. В файле hostname вы увидите сгенерированное доменное имя. Можно вбить его в Tor Browser и убедиться, что вы увидите Welcome to nginx!. Заметьте, что весь трафик уже шифруется, и вы эффективно получаете SSL/TLS безо всяких там центров сертификации!

Можно подрубиться и по SSH:

torify ssh eax@g5a6wykhm2ajtwvk.onion

Помимо прочего, можно использовать этот прием для подключения по SSH к своему домашнему компьютеру, находящемуся за NAT.

Рассмотрим еще небольшой пример. Настроим проброс порта 3003, как это было описано выше. Затем скажем:

sudo pacman -S gnu-netcat
nc -l -p 3003

На другой машине говорим:

torify telnet g5a6wykhm2ajtwvk.onion 3003

В итоге получили анонимный чат с end to end шифрованием! Для большего удобства можно использовать специализированный LAN-чаты. Например, iptux (AUR) имеет GUI и поддерживает обмен файлами. Также для обмена файлами через Tor существует программа OnionShare (AUR).

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

Заключение

Еще из интересных тем можно назвать настройку relay и exit node, но они производятся тривиально по комментариям в файле torrc. Только имейте в виду, что поднимая relay, вы рискуете, так как когда к вам придут трехбуквенные агенства, будет поздно объяснять, что это не вы лично что-то делали, а один из пользователей сети Tor. В случае с exit node риск еще больше.

Дополнение: Тема инстант мессенджеров для сети Tor продолжена в статье Шифрование сообщений в Jabber при помощи OTR. Также вас могут заинтересовать статьи об OpenVPN и sshuttle.

Метки: .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.