Это старая версия документа.


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.

Проверка

Жмем на torbutton.

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

https://check.torproject.org/

http://2ip.ru/

http://internet.yandex.ru/

Все!

*При использовании иных программ в их настройках нужно установить прокси по протоколу socks 4a или 5.0 с настройками:

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

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

Получение нового НИМа (смена конечной ноды 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 "SOCKS 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-нода.