Установка и настройка tor-ноды

Nov 28, 2019 05:28

Установка tor

1. Загружаем исходники tor отсюда я взял версию 0.4.2.4-rc посвежее.

2. Собираем пакет:
- Распаковываем из архива каталог tor-0.4.2.4-rc со всеми подкаталогами
- Переходим в этот каталог и выполняем последовательно:

./configure
make
checkinstall

checkinstall нас спросит, какой пакет хотим создать (Slackware [S], RPM [R] or Debian [D]?), отвечаем s, далее вводим описание пакета, например tor и нажимаем два раза ENTER, после чего подтверждаем, что все верно (нажав ENTER еще раз) и checkinstall создаст пакет.

3. Можно сразу его установить:

installpkg tor-0.4.2.4-rc-i386-1.tgz

Создаем пользователя для tor

Негоже запускать tor под обычным пользователем, а тем более под root'ом, потому создадим для него отдельного пользователя. Пользователь будет неинтерактивный, т.е. войти в систему с терминала он не сможет.

1. Добавляем группу, например torgroup:

groupadd torgroup

2. Смотрим файл /etc/shells и проверяем, чтоб в файле была строка /bin/false, если ее нет - смело дописываем.

3. Создаем пользователя с именем, например, torusr:

useradd -g torgroup -m -d /home/torusr -s /bin/false torusr

где:
-g torgroup - группа пользователя (torgroup)
-m - создать домашний каталог
-d /home/torusr - путь к домашнему каталогу (/home/torusr)
-s /bin/false - установить пользователю оболочку, в данном случае фиктивную (/bin/false)
torusr - имя пользователя

4. Создаем каталог для данных tor:

cd /home/torusr
mkdir .tordata
и изменяем владельца созданного каталога на torusr

chown torusr:torgroup .tordata

Настройка tor-ноды

В каталоге /home/torusr создаем файл torrc и записываем в него следующие строки:

SocksPort 9050 - порт на localhost, где будет висеть tor, и принимать на него запросы. Проще говоря, это порт прокси-сервера, который надо будет прописать, чтоб соединиться с сетью tor с локальной машины. Порт 9050 является портом по умолчанию, и назначается на localhost (127.0.0.1), если строки SocksPort будут отсутствовать в конфигурации.

SocksPort 192.168.0.20:9660 - то же самое, только внутри локальной сети. Клиенты из локальной сети должны будут подключаться по адресу 192.168.0.20 и порту 9666, чтобы использовать сеть tor.

Tor организует только SOCKS5 прокси, как быть с браузерами, которым нужен HTTP, рассмотрим далее.

SocksPolicy accept 192.168.0.0/24
SocksPolicy accept 127.0.0.1
SocksPolicy reject *
Принимать запросы только из локальной сети и localhost'а.

Log notice file /home/torusr/notices.log - файл, куда будет писаться лог tor'а

RunAsDaemon 1 - запуск tor в режиме демона.

DataDirectory /home/torusr/.tordata - путь для данных tor

ORPort 9001 - порт, используемый для пересылки пакетов с других узлов.

DirPort 9030 - порт, используемый для сервиса каталогов, т.е узел будет позволять получать информацию о других узлах tor, а не только транслировать трафик.

Конечно, стоило бы облегчить жизнь пользователям, сидящим за сетевыми экранами и пустить трафик по портам 80 (8080) или 443, но я пока не стал. Впрочем, если вам будет надо - смотрите статью на Хабре (копия)

RelayBandwidthRate 1000 MB
RelayBandwidthBurst 2000 MB - ограничение пропускной способности. Чем больше, тем лучше. Но настраивайте эти числа под свой канал, чтоб не загадить его трафиком tor совсем.

Nickname PersonalChaosRelay - имя вашего релея (ноды) в базе tor. Можете придумать любое, но советую сначала проверить придуманное имя здесь, введя его в поиске. Если ничего не найдется, проздрабляю, ваш релей будет уникальным.

ExitPolicy reject *:*
ExitPolicy reject6 *:* - запрет использовать tor-ноду в качестве выходной. Для ГОРФ параметр строго обязательный.
Примечание: в /usr/local/etc/tor находится файл torrc.sample с подробным описанием конфигурации.
Пример файла конфигурации на PasteBin

Устанавливаем файлу правильного владельца:

chown torusr:torgroup torrc

Запуск ноды

Запуск осуществляется следующей командой:

sudo -u torusr tor -f /home/torusr/torrc

Если помещать запуск в автозагрузку, то желательно указать полный путь к файлу tor:

sudo -u torusr /usr/local/bin/tor -f /home/torusr/torrc

Запуск в отдельном network namespace (копия):

ip netns exec provns sudo -u torusr /usr/local/bin/tor -f /home/torusr/torrc

provns - имя network namespace

Проверка работоспособности

Минут через 15-20 после запуска можно заглянуть в /home/torusr/notices.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.

значит порты ORPort и DirPort доступны извне, и нода нормально функционирует.

Если же в логе что-то типа:

Your server (x.x.x.x:9001) has not managed to confirm that its ORPort is reachable. Relays do not publish descriptors until their ORPort and DirPort are reachable. Please check your firewalls, ports, address, /etc/hosts file, etc.
Your server (x.x.x.x:9030) has not managed to confirm that its DirPort is reachable. Relays do not publish descriptors until their ORPort and DirPort are reachable. Please check your firewalls, ports, address, /etc/hosts file, etc.

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

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

Настройка прокси для браузера-клиента

Как я уже говорил, Tor представляется исключительно Socks5 прокси. Для корректной работы браузерам потребуется прокси-прослойка. Их есть несколько, я использовал легковесный и простой Polipo.

1. Ставим Polipo, я не стал далеко ходить, воспользовался sbopkg.
2. Копируем файл /etc/polipo/config в /home/torusr/polipo.conf
3. Меняем владельца файла:

chown torusr:torgroup polipo.conf

4. Вносим изменения в конфигурацию, раскомментируем строчку proxyAddress, прописываем свой адрес сервера (0.0.0.0 для localhost):

proxyAddress = "192.168.0.20" # IPv4 only

5. Меняем порт, указываем, чтоб запускался в режиме демона, указываем путь к файлу PID и к логам. Поскольку запускаться он будет также от имени toruser, то меняем все пути на домашний каталог.

proxyPort = 9666
daemonise = true
pidFile = /home/torusr/polipo.pid
logFile = /home/torusr/polipo.log

6. Раскомментируем и проверяем строки:

socksParentProxy = "localhost:9050"
socksProxyType = socks5
Это как раз наш tor-прокси

7. Настройка кэширования.

Если оставить настройку кэширования по умолчанию, то при запуске из-под пользователя torusr polipo не сможет писать в кэш /var/cache/polipo/ и загадит свой log сообщениями вида

Couldn't create directory /var/cache/polipo/2ip.ru/: Permission denied

Есть два варианта решения этой проблемы.

Наиболее предпочтительный для пользования Tor и большей анонимности - отключить кэширование вообще. Для этого в конфиге polipo.conf находим строку

# diskCacheRoot = ""

и раскомментируем ее (или просто добавляем diskCacheRoot = "" в конфиг).

Другой вариант - создать отдельную директорию для кэша в каталоге пользователя torusr:

cd /home/torusr
mkdir .polipo-cache
chown torusr:torgroup .polipo-cache

и раскомментировать (добавить) строку diskCacheRoot = "~/.polipo-cache/" в конфиге.

8. Устранение глюка с PID-файлом.
У меня случилась довольно странная ситуация. При неправильном завершении работы polipo не смог удалить свой PID-файл и свалился с ошибкой

Couldn't create pid file /home/torusr/polipo.pid: File exists

На самом деле это довольно необычно для линуксовых программ, но на всякий случай можно добавить в скрипт запуска (ниже) перед запуском polipo, команду:

rm "/home/torusr/polipo.pid"

9. Запуск:

sudo -u torusr /usr/bin/polipo -c /home/torusr/polipo.conf
В network namespace:

ip netns exec provns sudo -u torusr /usr/bin/polipo -c /home/torusr/polipo.conf

Конфиг Polipo на PasteBin

Скрипт для запуска tor и polipo (в отдельном network namespace)

#!/bin/bash
echo "Start tor relay..."
ip netns exec provns sudo -u torusr /usr/local/bin/tor -f /home/torusr/torrc
sleep 5
echo "Starting Polipo proxy..."
if [ -f "/home/torusr/polipo.pid" ]; then
echo "Removing PID file..."
rm "/home/torusr/polipo.pid"
else
echo "Old PID file not found. OK."
fi

ip netns exec provns sudo -u torusr /usr/bin/polipo -c /home/torusr/polipo.conf

На PasteBin

Настройка клиента в локальной сети на примере Firefox

Приятно, что нода не только поддерживает сеть Tor, но и может служить в качестве прокси для клиентов из локальной сети. Конечно же есть максимально безопасно и оптимизировано под Tor настроенный Tor-браузер, но иногда использовать его неудобно.
Конечно же, при настройке браузера вручную, стоит установить некоторые плагины, используемые в Tor-браузере, но это тема отдельного разговора. Тут покажу только простую начальную настройку.

1. Заходим в Firefox и набираем в адресной строке about:profiles
2. Создаем новый профиль. Местоположение файлов профиля выбираем по вкусу. Я обычно не выбираю стандартное, а все профили Firefox хранятся в отдельном каталоге.
3. Запускаем еще один браузер с новым профилем и идем в настройки, выбираем, чтобы Firefox не сохранял историю, а в качестве домашней страницы указываем https://check.torproject.org/
4. Закрываем профиль и вновь открываем его, и пока видим, что мы не в сети Tor, о чем нам сообщает https://check.torproject.org/
5. Ищем в расширениях и устанавливаем FoxyProxy standart
6. Кликаем по иконке расширения и нажимаем Options.
7. Слева нажимаем Add и добавляем конфигурацию:
Proxy IP address: 192.168.0.20
Port: 9666
Title: Tor



8. Сохраняем настройки, закрываем их, опять кликаем на иконку расширения, выбираем наши настройки (включаем FoxyProxy)



7. Обновляем страницу, и видим, что мы в сети Tor


Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2019/11/26/ustanovka-i-nastrojka-tor-nody/
(
Comments
|Comment on this)

slackware, server, it, linux

Previous post Next post
Up