Стандартный узел tor

Русский

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

  • Отменить режим "только клиент". Этот режим специально предназначен для тех случаев, когда до узла никак не "достучаться" извне, и он предотвращает процесс пустых попыток полноценной работы в сети. Когда мы не только клиент, то сеть tor мы видим намного лучше, а значит и работа идет быстрей.
  • Открыть порт извне Этим мы "откроем форточку" в сеть. Дело в том, что каналы луковой маршрутизации не всегда строятся как исходящие соединения, есть еще и соединения к узлу : его могут попросить "передать" что-то другому узлу. Это также в разы усложняет привязку траффика к точке входа или выхода(деанонимизация). Также Вам это ничем не чревато : вы передаете порцию данных, о которой и понятия не имеете, и передаете это внутри самой сети Tor.
  • По возможности обзавестись постоянным IP-адресом У этой меры есть несколько причин. Во-первых, раз в определенное время провайдер доступа в сеть Internet разрывает соединение, чтобы осуществить процесс тарификации. То есть, когда Вы не оплатили услугу доступа в сеть, то в следующий раз Вас не пустит. Это разрывает все сетевые соединения, и потом им нужно восстановиться. Те, кто использует SSH, уже наверное замечали, что при этом - если адрес постоянный - при определенных настройках оно не порвется, а "подвиснет" на момент пересоединения, а потом будет работать далее без разрыва сессии. Это же и произойдет с Tor'ом. Во-вторых, соединения в принципе - по тем или иным причинам - имеют свойство обрываться, и это абсолютно нормальное поведение сетевых соединений в любой операционной системе. Поэтому программы нередко после обрыва пытаются "перезвонить", пересоединиться - и продолжить с места разрыва. И смена адреса здесь создаст ситуацию, когда Вы попытаетесь перезвонить на телефон собеседнику, с которым Вас разъединило, а у него сменился номер телефона. Третья причина - уже специфична для darknet'ов : у каждого узла есть не только свой ключ, но и в наборе данных о нем фигурирует его адрес, по которому с ним можно связаться. Да, если адрес сменится, то по прошествии некоторого времени узел переанонсирует свое присутствие в сети, в результате чего укажет свой новый адрес, но это процесс не быстрый, и все это время работа сети будет ограничена. Последняя - но только по списку - причина иметь постоянный адрес состоит в том, что Вы сможете поднять мост, которым сможете пользоваться с мобильных устройств и из недоверенных мест и с чужих компьютеров. Также Вы сможете помочь своим друзьям, дав им этот адрес моста - делать мост публичным Вас никто не обязывает! /li>



Итак, приступим! Для проброса(открытия) порта извне - если Вы выходите в сеть через роутер - можно применить одно из двух решений :

  • Протокол UPnP - он позволяет на ходу запрашивать перенаправления на роутере, но он должен им поддерживаться и быть включен на самом роутере. Это можно проверить программой Universal Plug-and-Play Tester, если она не запускается, то попробуйте установить Visual C++ Redistributable for Visual Studio 2012 и попробовать снова запустить. Важно: запускайте соответственно разрядности Вашей ОС 32 или 64 бит версию. При запуске она может попросить права администратора, это нормально : ей нужно будет проверить и запустить системный сервис самой Windows(если он еще не запущен). Также она добавит исключение в межсетевой экран Windows. Если программа спросит, запустить ли сервис - запускать его не обязательно. Результат также подтверждаем и другими программами - в межсетевом экране оказывается прописано разрешающее правило для использования UPnP всеми программами. На видео примера сначала был запущен 64-битный вариант на 32 разрядной ОС, и программа ругнулась, выдав предупреждение с разрядностями(32 и 64), потом оказалось, что нету библиотек Visual C++ Redistributable for Visual Studio 2012 - их установщик был запущен, в данном случае x86 установщик, в случае 64-бит системы скачивайте 64-битный установщик соответственно. Потом программа запустилась и отработала - все было открыто. Если будут дополнительные окна - нажимайте клавиши Yes и OK, там по умолчанию все нормально прописано.

  • Открыть на роутере в его интерфейсе управления - нужно сделать один раз, далее работает само. Нужно через браузер зайти в "мозги" роутера и просто прописать там tcp-порты на свой локальный компьютер, где будет жить тор. Способ подходит для продвинутых пользователей!

Но - если вы работаете через роутер, то первым делом выставьте своему компьютеру постоянный адрес в локальной сети роутера, чтобы он не менялся - вся сеть будет работать лучше в принципе. Теперь - о выборе портов, точнее - их номеров. Даже если Вас не фильтруют жестоко, то могут так фильтровать других, поэтому номера рекомендую выбрать следующие и вот почему :

  • 80 (http) Сюда Вы повесите сервис зеркала директории, если Вы будете его настраивать. Если скорость подключения и его стабильность позволяют - этот сервис следует поднять. Это поможет работе сети вокруг Вас, однако даже если соединение у Вас быстрое, но это например 3G/4G мобильный интернет - это не нужно делать, тут лучше обойтись без зеркала. Этот порт реже всего закрывают, поэтому можно использовать его для зеркала директории. Если Вы держите на нем(80-м порте) еще и свой web-сервер, доступный извне, то в его настройках пропишите, чтобы все, что не относится к именно тем хостам, что он обслуживает - перенаправлялось на узел тор внутри Вашей локальной сети за роутером.
  • 443 (https) Вот сюда Рекоммендуется вешать OBFS-транспорт, или - если он не используется - сам узел tor. Этот порт также реже всего закрывают.
  • 8080 , 8443 , 8888 Если 80-м порте у Вас зеркало, на 443-м порте Вы размещаете OBFS-транспорт, то на любой из этих часто используемых портов повесьте Ваш узел. Просто выберите число из списка, также можете выбрать любое число больше 4096 =)

Итак, если Вам нужен вариант проброса порта через маршрутизатор и Вы выбрали вариант "вручную" - сделайте это. Предупреждение : если у Вас напрямую воткнут кабель подключения в Internet от провайдера в машину с ОС Windows - бегите за роутером! Это небезопасно - сидеть вот так напрямую! Если принципиально не хотите роутер(причины не доверять роутеру из магазина есть - см. ссылку), то возьмите Raspberry Pi B+ или Raspberry Pi 2 - их настройку тоже скоро опишем =) Но НЕ СОВЕТУЕМ сидеть напрямую из-под ОС Windows. Что нужно сделать в конфигурации Tor, чтобы получился просто узел :
ClientOnly 0
ORPort 443
Exitpolicy reject *:*
Nickname mynickname
ContactInfo some@email.tld
SocksPort 9050
SocksListenAddress 127.0.0.1
CircuitBuildTimeout 30
LongLivedPorts 21,22,80,443,465,554,636,706,873,993,995,1863,2401,3690,4155,5050,5190,5222,5223,5269,5298,6523,6666,6667,6668,6669,6697,6881,6882,6883,6884,6885,6886,6887,6888,6889,7000,8000,8010,8300,8554

А теперь подробнее о конфигурации :

  • ORPort 443 - это тот самый порт, по которому узел виден извне напрямую по протоколу tor. По подключаемым транспортам он может быть виден и по другим портам также, об этом подробнее будет рассказано в соответствующем разделе. Он должен быть открыт извне, если у Вас роутер! Если он не открыт, то работать-то оно конечно будет, но на букву <Х>, но только не подумайте, что Хорошо
  • Nickname mynickname - впишите свой никнейм вместо mynickname, под которым Вас знают в Сети, а если у Вас его еще нет - то самое время его придумать. Только латинские буквы, возможно цифры, более никаких символов. Что-то короткое и запоминающееся, в Сети вовсе не обязательно - и даже нежелательно - везде идти по полному ФИО
  • ContactInfo some@email.tld - советую создать отдельный адрес под сетевую жизнь, его так и так нужно иметь отдельный. Здесь не забудьте его указать, чтобы контакт был актуальный - это ничем Вам не грозит.
  • SocksPort 9050 На каком порте будет открываться порт SOCKS-прокси. Если Вы хотите написать конфигурацию по новым правилам, то напишите в виде "адрес:порт" и не пользуйтесь директивой SocksListenAddress.
  • SocksListenAddress 127.0.0.1 На каком адресе будет открываться порт из директивы выше для приема входящих соединений. Работает ТОЛЬКО если в значении SocksPort только номер порта(!)
  • CircuitBuildTimeout 30 Тайм-аут в секундах, по истечении которого новая цепочка(circuit) при проверке во время построения будет считаться слишком медленной. Значение по-умолчанию равно 60, что довольно медленно. Ниже 30 секунд ставить это значение я Вам настоятельно НЕ рекомендую даже на сверхбыстрых соединениях! Это существенно ограничит круг узлов, которые могут участвовать в построении цепочек. Если у Вас медленный интернет или мобильный 3G/4G - попробуйте 45, потом 60, потом с шагом 5 можно попробовать повышать до 100. Для каждого мобильного интернета есть одна тонкость : подобранное значение привязано к месту, где Вы стационарно находитесь, так как от качества связи в нем зависит качество подключения к сети Internet. Одни значения, например, для дачи, другие - для парка, где Вы обычно гуляете. Имейте это в виду и не забудьте переключить. Также в случае мобильного интернета не забудьте взять себе белый внешний адрес - вот в случае мобильного интернета его наличие видно на глаз и очень явно.
  • Exitpolicy reject *:* Мы не являемся - в данной установке - узлом, выпускающим других в сеть internet, но для других узлов можем передать посылку.

Если Вы хотите с одного устройства на всю свою локальную домашнюю сеть открыть сокс-прокси, то добавьте
SocksListenAddress 192.168.0.2
SocksPolicy accept 127.0.0.0/8
SocksPolicy accept 192.168.0.0/24
SocksPolicy reject *

Директивы SocksPolicy идут сверху вниз, первая из подходящих срабатывает и далее анализ прекращается. Первое значение имеет следующий смысл:

  • accept - в переводе с английского "принять". Предписывает пропустить запрос с адреса или подсети, идущей следом.
  • reject - в переводе с английского "отвергнуть". Предписывать отвергнуть запрос с адреса или подсети, идущей следом.

В данном примере фигурирует сеть 192.168.0.0/24 - она обычно стоит в большинстве домашних роутеров. Уточните свою, и если она отличается - впишите сюда. Сеть 127.0.0.0/8 - это адрес внутри каждого сетевого устройства, его не лишним также указать, так как если ни одной политики не указано, то запросы принимаются с только адресов, которые указаны в директиве(ах) SocksListenAddress/SocksPort, а раз мы указали хоть одну политику - сделаем же себе удобно! Символ звёздочки заменяет собой "что угодно". Последней строкой мы говорим, что если запрос не разрешен выше, то отклонить его.

А теперь - самое интересное "на десерт". Директива LongLivedPorts говорит о том, соединения на какие порты могут длиться(оставаться открытыми) долго - например мы сидим через них в чате, качаем файл и.т.п. Список портов "по умолчанию" весьма мал, мы расширяем его, и давайте по каждому порту разберемся - зачем :

  • 21 FTP - протокол передачи файлов. Используйте в настройках при установке серверов и в клиентах только вариант Passive FTP - это гарантирует использование только данного порта. Передача файлов может быть долгой
  • 22 SSH - протокол удаленного управления устройствами по защищенному терминалу. Сеанс тоже может быть долгим, плюс по данному каналу могут также не только передаваться файлы(протокол SFTP = FTP over SSH), но и быть просто тоннели
  • 80,443 - обычный и шифрованный протоколы работы HTTP сайтов. В сайт может быть встроена картинка, аудио или видео - и они тоже грузятся по этим каналам по этому протоколу.
  • 465,993,995 - зашифрованные версии почтовых протоколов SMTP(отправка почты),IMAP и POP3 для приема почты. Почта обычно работает быстро или недолго, но может быть синхронизация ящика и.т.п.
  • 554,8554 - протокол RTSP, служит для передачи аудио и видео в потоке.
  • 636 защищенный протокол LDAP, может использоваться для защищенного взаимодействия узлов. Вещь нечастая, но если есть - должна работать быстро.
  • 706 протокол защищенных интернет-конференций SILC. Конференция - как тот же Skype, в нем можно долго сидеть, так что нет нужды постоянно пересоединяться
  • 6666,6667,6668,6669,6697,7000 интернет-чаты IRC. на 7000-м порте я лично встречал только DalNet, но есть и другие. Эти соединения передают только текст самих сообщений, трафика минимум, но длятся все время, пока пользователь на сервере
  • 6881,6882,6883,6884,6885,6886,6887,6888,6889 стандартные порты BitTorrent. Сколько может скачиваться торрент - сами знаете =)
  • 873 протокол rsync. Используется для синхронизации образов файловых систем, а также зеркал сайтов. Сайты и зеркала бывают БОЛЬШИМИ, соответственно процесс может быть долгим
  • 1863 протокол мессенджера MSN - программы для обмена сообщениями от Microsoft
  • 2401 протокол системы контроля версий CVS. Он используется в том числе для обновления чего-то из исходных текстов(как GitHub)
  • 3690 протокол системы контроля версий SVN(Subversion). Он используется в том числе для обновления чего-то из исходных текстов(как GitHub)
  • 4155 протокол системы контроля версий BZR(Bazaar). Он используется в том числе для обновления чего-то из исходных текстов(как GitHub)
  • 5050 протокол MMCC, он используется для работы мультимедиа-конференций
  • 5190 протокол ICQ и его предшественника AOL для обмена сообщениями.
  • 5222,5223,5269,5298,8010 протокол обмена сообщениями XMPP, используется также в сайтах социальных сетей.
  • 6523 протокол открытой библиотеки Gobby/Libinfinity. Используется для совместной работы с текстовыми редакторами, как в Google Docs например
  • 8000 протокол iRDMI для защищенной настройки серверов Intel, также порт используется для работы потоковых сервисов iTunes
  • 8300 протокол Novell GroupWise для обмена текстовыми сообщениями

Как видите - список не лишен здравого смысла, хоть и большой. И даже при наличии большого количества узлов в сети tor - отсутствие правильно настроенного списка долгоживущих портов убавит скорости работе сети.

Image: 
Tor стандартный узел