Pull to refresh

Tor Relay за пять минут

Reading time 4 min
Views 83K
Безопасность и работоспособность сети Tor напрямую зависит от количества узлов, отвечающих за пересылку трафика, — relay nodes. Организация EFF даже открыла соревнование Tor Challenge с целью простимулировать как можно большее число пользователей настроить и запустить такие узлы. Собственно говоря, именно этому нехитрому действию и посвящена статья.

Нам потребуется сервер — машина, на которой Tor Relay будет работать. Можно воспользоваться своим домашним компьютером, можно перенастроить умный роутер. Я предлагаю другой способ — использовать VPS (Virtual Private Server). Программное обеспечение Tor довольно неприхотливо и легко уживается даже на VPS с минимальной конфигурацией. Хватает 256 Mb памяти, скорее всего хватит и 128Mb. Дисковые требования также минимальны: меньше гигабайта. Стоимость такого сервера в месяц близка к стоимости чашки кофе в какой-нибудь кофейне.

Итак, регистрируем себе VPS. Для нас главное, чтобы у нее был честный внешний IP адрес. Мне нравится Yourserver, но можно использовать любой другой VPS с Linux или *BSD на борту. Как правило, после покупки вы получаете сервер, на который уже установлен один из дистрибутивов Linux. Выбирайте сами, какой вам по душе. Я буду рассказывать на примере Debian.

Сначала на VPS надо установить Tor:

# aptitude install tor


По умолчанию Tor будет работать в режиме клиента сети: вы можете им воспользоваться для работы с сетью, но для для других этот экземпляр будет бесполезен. Чужой трафик через него идти не будет. Необходимо включить режим Tor Relay (пересылки пакетов). Еще мы включим Directory Service &mdsah; сервис каталогов, отвечающий за распространение информации о других tor серверах. В принципе, ничто не мешает использовать для пересылки и для каталога произвольные порты. Конфигурационный файл по умолчанию предлагает использовать порт 9001 для пересылки пакетов и 9030 для сервиса каталогов. Но, поскольку этот VPS больше ни для чего использоваться не будет, мы можем чуть схитрить и облегчить жизнь людям, сидящим за строгими межсетевыми экранами. Мы сделаем наш сервер доступным по портам 443 и 80 — по портам, которые обычно используются для www трафика.

Открываем /etc/tor/torrc и вписываем в него следующие строчки:
Nickname MyCoolNick
ContactInfo Person <somebody AT example dot com>
ORPort 443 NoListen
ORPort 9001 NoAdvertise
DirPort 80 NoListen 
DirPort 9030 NoAdvertise
ExitPolicy reject *:* # no exits allowed
ExitPolicy reject6 *:* # no exits allowed


В строчке Nickname вписываем какое-нибудь имя для этого сервера. По нему мы потом сможем контролировать работу сервера через специальные сервисы на TorProject.

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

Последние две строчки запрещают использовать наш сервер в качестве точки выхода (Exit Node) трафика. В противном случае, Tor будет пытаться использовать наш сервер для передачи исходящего трафика сети на внешние сервера. К сожалению, не все используют Tor с благими намерениями, а если трафик покидает Tor через ваш сервер, все проблемы и последствия свалятся в том числе и на вашу голову.

Кроме того, прописанная конфигурация заставляет сервер рассказать остальным участникам сети, что сервер доступен по портам 443 для пересылки пакетов и 80 для сообщения информации о других серверах сети. При этом на самом деле сервер будет ждать сообщений на портах 9001 и 9030. В Debian Tor по умолчанию работает не из-под рута и такая конфигурация позволяет избежать проблем с подключением к портам.

С помощью iptables мы сейчас настроим необходимую связь между портами.

Если в выбранном дистрибутиве есть специальные средства настройки сетевого экрана iptables, можно воспользоваться ими. Проще и нагляднее сделать все ручками.

Создаем файл /etc/iptables.save.rules такого содержания:

# Generated by iptables-save v1.4.14 on Sat Jul  5 14:15:04 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [22:1968]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 9001 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 9030 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Sat Jul  5 14:15:04 2014
# Generated by iptables-save v1.4.14 on Sat Jul  5 14:15:04 2014
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [1:104]
:POSTROUTING ACCEPT [1:104]
-A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 9001
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 9030
COMMIT
# Completed on Sat Jul  5 14:15:04 2014


Этим мы разрешаем работу с нашим сервером tor и доступ к ssh для удаленного администрирования.
Осталось прописать загрузку этих правил. Обычно я прописываю запуск iptables-restore в /etc/network/interfaces:

auto lo
iface lo inet loopback
	pre-up /sbin/iptables-restore /etc/iptables.save.rules


На Yourserver файл /etc/network/interfaces переписывается каждый раз при перезапуске, поэтому можно сделать чуть иначе.
Например, вставить загрузку правил iptables в /etc/rc.local. Для этого в конец файла перед exit 0 вставляем строчку

/sbin/iptables-restore /etc/iptables.save.rules

В заключение перезапускаем сервер tor:
# service tor restart


Проверяем, что мы все сделали правильно. Через некоторое время после перезапуска в файле /var/log/tor/log должна появиться строчки:

Self-testing indicates your ORPort is reachable from the outside. Excellent. Publishing server descriptor.
Tor has successfully opened a circuit. Looks like client functionality is working.
Self-testing indicates your DirPort is reachable from the outside. Excellent.
Performing bandwidth self-test...done.


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

Поначалу через новый сервер трафик идти не будет. Жизненный путь Tor Relay — это тема отдельной статьи.

UPD: Поскольку в дистрибутивах не всегда лежит последняя версия Tor, имеет смысл подключить специальные репозитории.
Так для Debian и Ubuntu можно подключить официальный репозиторий torproject.org. Для этого в /etc/apt/sources.list.d/ создаем файл torproject.list следующего содержания:
deb http://deb.torproject.org/torproject.org DISTRIBUTION main

где вместо DISTRIBUTION вписываем версию вашего дистрибутива (например, jessie или saucy). Выполняем
# gpg --keyserver keys.gnupg.net --recv 886DDD89
# gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add -
# apt-get update
# apt-get install tor
Tags:
Hubs:
+19
Comments 16
Comments Comments 16

Articles