Tor - система, позволяющая устанавливать анонимное сетевое соединение, защищённое от прослушивания. Рассматривается как анонимная сеть, предоставляющая передачу данных в зашифрованном виде.

В статье будет рассмотрена работа через Tor с обычными браузерами, что не гарантирует анонимность. Если вы хотите большей безопасности, установите Tor согласно данной официальной инструкции.

Установка Tor

Устанавливаем необходимые пакеты.

 sudo apt-get install tor tor-geoipdb privoxy 

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

Настройка

Бэкап базовой и новая конфигурация для privoxy:

 sudo mv /etc/privoxy/config /etc/privoxy/config.backup 
 sudo gedit /etc/privoxy/config 

Вставляем следующее и сохраняем:

# Generally, this file goes in /etc/privoxy/config
#
# Tor listens as a SOCKS5 proxy here:
forward-socks5 / 127.0.0.1:9050 .
confdir /etc/privoxy
logdir /var/log/privoxy
# actionsfile standard  # Internal purpose, recommended
actionsfile default.action   # Main actions file
actionsfile user.action      # User customizations
filterfile default.filter
 
# Don't log interesting things, only startup messages, warnings and errors
logfile logfile
#jarfile jarfile
#debug   0    # show each GET/POST/CONNECT request
debug   4096 # Startup banner and warnings
debug   8192 # Errors - *we highly recommended enabling this*
 
user-manual /usr/share/doc/privoxy/user-manual
listen-address  127.0.0.1:8118
toggle  1
enable-remote-toggle 0
enable-edit-actions 0
enable-remote-http-toggle 0
buffer-limit 4096

Перезапустим службу:

 sudo service privoxy restart 

Настроим Tor в браузере.

Для Firefox удобно данное дополнение.

Использовать torbutton для свежих версий firefox не рекомендуется (torbutton предназначен для версий firefox, включаемых в состав tor browser bundle). Скачать torbutton можно по следующим ссылкам:

Все версии

Текущая версия stable

Для быстрого переключения в любом браузере можно использовать любое дополнение, предназначенное для переключения прокси (proxy switcher).

Хочу отметить, что для Google Chrome единственным работоспособным расширением оказалось Proxy SwitchySharp.

Проверка

В настройках прокси (перечень дополнений для переключения прокси дан в предыдущем разделе) указываем следующие параметры:

узел: 127.0.0.1
 
порт: 9050

Данная конфигурация будет действовать при использовании настроек, указанных в статье.

Переключаем прокси в браузере.

Проверяем, видит ли нас Большой Брат:

https://check.torproject.org/

http://2ip.ru/

http://internet.yandex.ru/

Все!

При использовании иных программ (к примеру, Pidgin) в их настройках нужно установить прокси по протоколу socks 4a или 5.0 с указанными выше настройками.

Получение нового НИМа (смена конечной ноды Tor)

Зачастую Tor используется в качестве обычного прокси. Если вас не устроила текущая выходная нода, ее легко менять с помощью скрипта.

sudo apt install empty-expect telnet

Задаем пароль new_tor_password для доступа к Tor по telnet и получаем в ответ его хэш в виде строки 16:47015F09825889D86059FF44D9562496912AC67CD0EB93DAA25427F194:

tor --hash-password 'new_tor_password'

Затем дополняем конфиг Tor

sudo nano /etc/tor/torrc

следующими строками:

ControlPort 9051
HashedControlPassword 16:47015F09825889D86059FF44D9562496912AC67CD0EB93DAA25427F194

Остается создать скрипт со следующим содержимым (обратите внимание, ваш пароль хранится в скрипте в открытом виде!):

#!/bin/sh
# Автоматическая смена НИМа в TOR
empty -f -i torin -o torout telnet 127.0.0.1 9051
empty -s -o torin "AUTHENTICATE \"new_tor_password\"\n"
empty -s -o torin "signal NEWNYM\n"
empty -s -o torin "quit\n"

дать ему права на выполнение и запускать при необходимости.

Работа с onion-ресурсами

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

Настройки браузеров для работы с onion-ресурсами

Mozilla Firefox

Заходим в about:config, ищем параметр network.proxy.socks_remote_dns и выставляем его значение в true.

Chromium/Google Chrome

Заходим в Настройки, выбираем «Показать дополнительные настройки» и в разделе «Личные данные» делаем пункт «Предсказывать сетевые действия для ускорения загрузки страниц» неактивным.

Использование pac-файла для упрощения доступа к onion-ресурсам

С помощью pac-файла можно настроить доступ к определенным доменным именам с помощью конкретных прокси (для доступа к onion-сайту вам не придется вручную переключать прокси). Пример конфигурации такого файла для совместного использования *.i2p и *.onion приведен ниже.

function FindProxyForURL(url, host)
	{
		if (dnsDomainIs(host, ".i2p"))
			{
				return "PROXY 127.0.0.1:4444";
			}		
		if (dnsDomainIs(host, ".onion"))
			{
				return "SOCKS5 127.0.0.1:9050";
			}
		else
			{
				return "DIRECT";
			}
	}

Обход блокировки Tor

В связи с последними изменениями в законодательстве Российской Федерации и Республики Беларусь возможно блокирование Tor провайдерами. Два основных метода - это блокирование известных IP-адресов узлов Tor (этому противодействует использование непубличных адресов - мостов) и глубокий анализ трафика (в связи с чем рекомендуется обфусцировать трафик). Также можно использовать Tor через IPv6.

Здесь нужно отметить, что Tor Bundle, скачиваемый с официального сайта, предоставляет более удобный механизм работы с обфускацией и мостами, чем представленный ниже в этом руководстве.

Обфускация трафика

Нам нужно обновить Tor до последней stable-версии из официального репозитория и установить утилиту для обфускации (проверяйте на официальном сайте torproject.org информацию о наиболее актуальных утилитах обфускации: чем новее утилита, тем сложнее расшифровать ваш трафик). Актуальной на момент конца 2016-го года является утилита obfs4proxy. Ищем нужный нам пакет в репозиториях Ubuntu:

apt-cache show obfs4proxy

Если его там не окажется, установим его из репозиториев Torproject:

 sudo nano /etc/apt/sources.list 

Добавляем в конец файла следующую строку:

 deb http://deb.torproject.org/torproject.org obfs4proxy main 

И обновляем информацию о репозиториях:

 sudo apt update 

Устанавливаем:

 sudo apt-get install obfs4proxy 

После этого заменяем содержимое файла /etc/tor/torrc следующим

SocksPort 9050
ORPort auto
BridgeRelay 1
Exitpolicy reject *:*
ExtORPort auto
 
## CHANGEME_1 -> provide a nickname for your bridge, can be anything you like
#Nickname CHANGEME_1
## CHANGEME_2 -> provide some email address so we can contact you if there's a problem
#ContactInfo CHANGEME_2
 
ServerTransportPlugin obfs4 exec /usr/bin/obfs4proxy

Перезапускаем Tor:

sudo service tor restart

Если при перезапуске Tor в логе

cat /var/log/tor/log|grep obfs4

вы увидели подобное:

Jul 17 20:01:37.000 [warn] Server managed proxy encountered a method error. (obfs4 Could not set up listener.)

, не пугайтесь - obfs4proxy не был перезапущен и удерживает требуемый порт, все будет работать.

Чтобы убедиться в правильности работы настроенного Tor, проверьте содержимое /var/log/tor/log на наличие следующих строк:

Nov 05 16:40:45.000 [notice] We now have enough directory information to build circuits.
Nov 05 16:40:45.000 [notice] Bootstrapped 80%: Connecting to the Tor network.
Nov 05 16:40:46.000 [notice] Bootstrapped 85%: Finishing handshake with first hop.
Nov 05 16:40:46.000 [notice] Bootstrapped 90%: Establishing a Tor circuit.
Nov 05 16:40:48.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
Nov 05 16:40:48.000 [notice] Bootstrapped 100%: Done.

Использование мостов

Мосты мы будем использовать при настроенной обфускации трафика (смотри предыдущий пункт). Чтобы получить мосты, заходим сюда либо отправляем на адрес bridges@bridges.torproject.org письмо с темой get transport obfs4 и ждем в ответ список из трех адресов следующего вида:

obfs4 111.111.111.113:2222 FF7652873C326B0AF41587409E88C8612B8FE654 cert=fP23efkIrlPawTerdcUpN3Uatrh9jQcP0UpnPkfcfge5WiPP1mVffEfgesGgAgnBO97lOA iat-mode=0
obfs4 111.111.111.114:2222 FF7652873C326B0EFC1587409E88C8612B8FE654 cert=fP23efkIdfeawTerdcUpN3Uatrh9jQcP0UpnPkfcfge5WiPP1mVffEfgesGgAgnBO97lOA iat-mode=0
obfs4 111.111.111.115:2222 FF7652873C326B0AFDF658409E88C8612B8FE654 cert=fP23efkIrlPawTerdcUpN3Uatrh9jQcP0UpnPkfcfge5WiPP1mVffEeftWGgAgnBO97lOA iat-mode=0

После этого остается изменить файл /etc/tor/torrc следующим образом: добавить в начало данные адреса в следующем формате:

UseBridges 1
 
SocksPort 9050
Exitpolicy reject *:*
ExtORPort auto
 
ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy managed
 
bridge obfs4 111.111.111.113:2222 FF7652873C326B0AF41587409E88C8612B8FE654 cert=fP23efkIrlPawTerdcUpN3Uatrh9jQcP0UpnPkfcfge5WiPP1mVffEfgesGgAgnBO97lOA iat-mode=0
bridge obfs4 111.111.111.114:2222 FF7652873C326B0EFC1587409E88C8612B8FE654 cert=fP23efkIdfeawTerdcUpN3Uatrh9jQcP0UpnPkfcfge5WiPP1mVffEfgesGgAgnBO97lOA iat-mode=0
bridge obfs4 111.111.111.115:2222 FF7652873C326B0AFDF658409E88C8612B8FE654 cert=fP23efkIrlPawTerdcUpN3Uatrh9jQcP0UpnPkfcfge5WiPP1mVffEeftWGgAgnBO97lOA iat-mode=0

Перезапускаем Tor:

sudo service tor restart

Использование Tor через IPv6

Установим IPv4-IPv6 туннель Miredo:

sudo apt install miredo

Проверим работоспособность:

$ ping6 ipv6.google.com
PING ipv6.google.com(waw02s08-in-x0e.1e100.net) 56 data bytes
64 bytes from waw02s08-in-x0e.1e100.net: icmp_seq=1 ttl=56 time=352 ms
64 bytes from waw02s08-in-x0e.1e100.net: icmp_seq=2 ttl=56 time=111 ms
64 bytes from waw02s08-in-x0e.1e100.net: icmp_seq=3 ttl=56 time=123 ms
64 bytes from waw02s08-in-x0e.1e100.net: icmp_seq=4 ttl=56 time=113 ms
64 bytes from waw02s08-in-x0e.1e100.net: icmp_seq=5 ttl=56 time=150 ms
^C
--- ipv6.google.com ping statistics ---
6 packets transmitted, 5 received, 16% packet loss, time 5007ms
rtt min/avg/max/mdev = 111.319/170.281/352.361/92.092 ms

Теперь мы можем работать с IPv6. Остается небольшой шаг для настройки Tor. Если вы используете Tor Browser, вам нужно зайти в подкаталог /path/to/tor/tor-browser_en-US/Browser/TorBrowser/Data/Tor/ и отредактировать файл torrc. Смело удаляйте все содержимое конфига и вставляйте туда единственную строку:

ClientUseIPv4 0

Остальное содержимое конфига Tor при запуске дополнит самостоятельно. Произведенная нами настройка запретит Tor'у подключаться к IPv4-адресам, которые могут блокироваться вашим провайдером. Здесь стоит отметить, что что в будущем могут блокироваться и IPv6-адреса, но на данный момент ни в России, ни в Беларуси этого не происходит. Если вы под Linux используете установленный пакет Tor, приведите свой конфиг /etc/tor/torrc к примерно такому виду:

ClientUseIPv4 0
SocksPort 9050
Exitpolicy reject *:*
ExitPolicy reject6 *:* 
ExtORPort auto
ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy managed

Заметьте, при использовании IPv6 можно по-прежнему обфусцировать трафик.

Как будет работать Tor при наших настройках? Первой из трех узлов в цепи Tor станет поддерживающая IPv6 нода, доступ к которой не заблокирован. Выходной останется IPv4-нода.