Пт. Сен 25th, 2020

Infernal news

News for every taste

Tor: от азов до продвинутого уровня

tor onion

Как настроить Tor

Данный раздел посвящён настройке службы Tor. Эти настройки применимы как к службе Tor работающей в Linux, так и в Windows.

Как мы узнали в предыдущей части, в Linux главный конфигурационный файл tor располагается по пути /etc/tor/torrc.

Для Windows файлы службы Tor являются портативными — распространяются в виде обычного архива. Если извлечь архив в корень диска C:\, то конфигурационный файл будет расположен по пути C:\Tor\torrc.

Формат конфигурационного файла

Каждая опция настройки в конфигурации, по умолчанию, записывается на одной строке. Они имеют форму имя опции и через пробел значение, или имя опции и значение в кавычках (ОПЦИЯ ЗНАЧЕНИЕ или ОПЦИЯ “ЗНАЧЕНИЕ”). Всё, что идёт после символа # трактуется как комментарий. Опции не чувствительны к регистру. Экранированные символы в стили C разрешены внутри значений в кавычках. Для разбивки одной записи конфигурации на несколько строк, используйте символ обратного слэша (\) перед концом строки. В таких многострочных записях можно использовать комментарии, но они должны располагаться в начале строки.

Опции настройки могут быть импортированы из файлов или папок используя директиву %include после которой указан путь. Если путь является файлом, то будут обработаны опции из этого файла так, как если бы они были записаны в том месте, где указана опция %include. Если путь является папкой, все файлы в этой папки будут включены в конфигурацию в соответствии с лексическим порядком (по алфавиту). Файлы, имя которых начинается с точки, игнорируются. Файлы в подпапках игнорируются. Опция %include может использоваться рекурсивно.

По умолчанию опция в строке команды перезаписывает опцию, найденную в конфигурационном файле; а опция в конфигурационном файле перезаписывает значение опции в дефолтном файле.

Это простое правило для опций, которые принимают одно значение; но для опций, которые разрешено использовать более одного раза, всё немного сложнее: если вы указали четыре директивы SocksPorts в вашем конфигурационном файле и ещё одну SocksPorts в строке команды, опция в строке команды заменит все SocksPorts в конфигурационном файле. Если это не то что вы хотите, то добавьте перед именем опции знак плюс (+), и такая опция будет добавлена к предыдущим установленным значениям вместо их замены. Например, использование SocksPort 9100 задействует только порт 9100, но настройка +SocksPort 9100 will будет использовать порт 9100 и 9050 (поскольку второе значение установлено по умолчанию).

Если вы хотите удалить все экземпляры опции из конфигурационного файла и не заменять их новым значением, то это тоже возможно. Допустим, в строке команды вы хотите установить, чтобы SocksPorts не использовалась вовсе. Чтобы это сделать, перед именем опции добавьте слэш (/). Знак плюс (+) и слэш (/) вы можете использовать в конфигурационном файле и в строке команды.

Изменение порта Tor

При запуске службы Tor она создаёт SOCKS прокси и открывает для подключения порт 9050 для приложений с поддержкой SOCKS. С помощью директивы SocksPort можно изменить это значение и установить на любой незанятый порт:

1SocksPort 10050

В качестве значений SocksPort можно указать:

  • ПОРТ
  • АДРЕС:ПОРТ
  • unix:ПУТЬ
  • auto

Если указано слово auto, то служба Tor сама выберет для вас порт.

Если в качестве порта указать 0, то подключения приложений через SOCKS не будут разрешены.

Если указать АДРЕС:ПОРТ, то будет сделана привязка к указанному IP и порту:

1SocksPort 192.168.0.1:9100

Если IP адрес не указан, то по умолчанию привязка делается к localhost:9050 — это отличает службу Tor от многих других сетевых служб, которые прослушивают на всех интерфейсах и IP, если не указан конкретный адрес.

Примечание: хотя эта опция позволяет указать IP адрес отличный от localhost, вы должны это делать с крайней осторожностью. Протокол SOCKS не шифрует передаваемые данные и в Tor используется без аутентификации, поэтому если вы будете прослушивать подключения с доступного из вне IP адреса, то это может привести к утечке вашей информации для любого, кто видит вашу сеть, а также позволит любому использовать ваш компьютер в качестве открытого прокси.

Директиву SocksPort можно использовать несколько раз для прослушивания нескольких адресов/портов.

Если используется доменный сокет unix, вы можете экранировать путь используя стандартные управляющие последовательности C.

Вместе с адресом и портом при желании можно указать ФЛАГИ и ФЛАГИ ИЗОЛЯЦИИ:

1SocksPort [АДРЕС]:ПОРТ [ФЛАГИ] [ФЛАГИ ИЗОЛЯЦИИ]

В приведённым выше выражении то, что помещено в квадратные скобки, является необязательным и может быть пропущено независимо от других элементов.

ФЛАГИ позволяют сделать некоторую настройку подключения, а ИЗОЛИРУЮЩИЕ ФЛАГИ настраивают совместное использование подключения Tor. Рассмотрим их.

Флаги SocksPort

SocksPort распознаёт следующие флаги:

NoIPv4Traffic

Говорит узлам выхода не подключаться к адресам IPv4 в ответ на запросы SOCKS по этому соединению.

IPv6Traffic

Говорит узлам выхода разрешить адреса IPv6 в ответ на запросы SOCKS по этому соединению, при условии, что используется SOCKS5. (SOCKS4 не может обрабатывать IPv6.)

PreferIPv6

Говорит узлам выхода, что если хост имеет как IPv4, так и IPv6-адрес, мы бы предпочли подключиться к нему через IPv6. (по умолчанию используется IPv4).

NoDNSRequest

Не просить выходные узлы преобразовывать DNS адреса в SOCKS5 запросах. Tor будет подключаться к IPv4 адресам, IPv6 адресам (если настроен IPv6 трафик) и .onion адресам.

NoOnionTraffic

Не подключаться к .onion адресам в SOCKS5 запросах.

OnionTrafficOnly

Говорит клиенту tor подключаться только к .onion адресам в ответах на SOCKS5 запросы для этого подключения. Это эквивалентно NoDNSRequestNoIPv4TrafficNoIPv6Traffic. Соответствующий флаг NoOnionTrafficOnly не поддерживается.

CacheIPv4DNS

Говорит клиенту помнить IPv4 DNS ответы которые получены от выходных нод во время этого подключения.

CacheIPv6DNS

Говорит клиенту помнить IPv6 DNS ответы которые получены от выходных нод во время этого подключения.

GroupWritable

Только доменные сокеты Unix: делает сокет созданным как доступный для записи любым участником группы.

WorldWritable

Только для доменных сокетов Unix: делает сокет доступным для записи кем угодно.

CacheDNS

Сообщает клиенту запомнить все ответы DNS, которые мы получаем от выходных узлов через это соединение.

UseIPv4Cache

Сообщает клиенту использовать любые кэшированные ответы DNS IPv4, которые мы имеем при выполнении запросов через это соединение. (ПРИМЕЧАНИЕ. Этот параметр, или UseIPv6Cache, или UseDNSCache, может нанести вред вашей анонимности и, вероятно, не поможет повысить производительность так, как вы ожидаете. Используйте с осторожностью!)

UseIPv6Cache

Сообщает клиенту использовать любые кэшированные ответы DNS IPv6, которые мы имеем при выполнении запросов через это соединение.

UseDNSCache

Сообщает клиенту использовать любые кэшированные ответы DNS, которые мы имеем при выполнении запросов через это соединение.

PreferIPv6Automap

При обработке запроса поиска имени хоста на этом порту, который должен быть автоматически сопоставлен (в соответствии с AutomapHostsOnResolve), если мы можем вернуть либо ответ IPv4, либо ответ IPv6, предпочитать ответ IPv6. (Включено по умолчанию.)

PreferSOCKSNoAuth

Обычно, когда приложение предлагает оба варианта «аутентификацию по имени пользователя/паролю» и «без аутентификации» через SOCKS5, Tor выбирает аутентификацию по имени/паролю, чтобы IsolateSOCKSAuth мог работать. Это может сбить с толку некоторые приложения, если они предлагают комбинацию имени пользователя и пароля, а затем запутываются, когда их запрашивают снова. Вы можете отключить это поведение, чтобы Tor выбрал «Без аутентификации», когда IsolateSOCKSAuth отключён или когда установлена эта опция.

Флаги изоляции

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

Если в вашем файле конфигурации присутствует несколько записей опции SocksPort, Tor по умолчанию выполнит изоляцию потоков между слушателями. Аргументы флагов изоляции дают правила Tor, для которых потокам, полученным на этом SocksPort, разрешено совместно использовать каналы друг с другом. Распознаются следующие флаги изоляции:

IsolateClientAddr

Не делитесь цепями с потоками с другого адреса клиента. (Включён по умолчанию и настоятельно рекомендуется, когда поддерживается; вы можете отключить его с помощью NoIsolateClientAddr. Не поддерживается и принудительно отключается при использовании доменных сокетов Unix.)

IsolateSOCKSAuth

Не делитесь каналами с потоками, для которых была предоставлена различная аутентификация SOCKS. (Для соединений HTTPTunnelPort этот параметр просматривает заголовки Proxy-Authorization и X-Tor-Stream-Isolation. Включён по умолчанию; его можно отключить с помощью NoIsolateSOCKSAuth.)

IsolateClientProtocol

Не делитесь цепями с потоками, использующими другой протокол. (SOCKS 4, SOCKS 5, соединения TransPort, соединения NATDPort и запросы DNSPort рассматриваются как разные протоколы.)

IsolateDestPort

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

IsolateDestAddr

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

KeepAliveIsolateSOCKSAuth

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

SessionGroup=INT

Если никакие другие правила изоляции не помешают этому, разрешает потокам на этом порту совместно использовать каналы с потоками из любого другого порта с той же группой сеансов. (По умолчанию потоки, полученные на разных SocksPortsTransPorts и т. д. всегда изолированы друг от друга. Этот параметр переопределяет это поведение.)

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

Обработка DNS запросов через Tor

Вместе с использованием сети Tor для выхода в Интернет, также можно настроить выполнение DNS запросов через Tor.

Примечание: DNS запросы нужны для определения IP адресов сайтов, к которым вы подключаетесь. Эти запросы выполняются практически постоянно на работающем компьютере и могут служить причиной утечки информации, даже если вы используете Tor для непосредственно самих соединений. Смотрите Введение в DNS терминологию, компоненты и концепции.

DNS запросы показывают, какие сайты вы открывали. Чтобы не происходило утечки из DNS, эти запросы также можно выполнять через сеть Tor. Выполнение запросов через Tor можно настроить независимо от выхода в сеть через Tor — то есть можно использовать Tor только для получения IP адресов доменов, но подсоединятся к ним напрямую, либо использовать обе функции одновременно.

Для того, чтобы служба Tor открыла порт и начала обрабатывать входящие DNS запросы, используется директива DNSPort:

1DNSPort [АДРЕС:]ПОРТ|auto [ФЛАГИ ИЗОЛЯЦИИ]

Использование и ФЛАГОВ ИЗОЛЯЦИИ похоже с директивой SocksPort, поэтому ознакомьтесь с её описанием.

Пример:

1DNSPort 53000

В этом случае после запуска службы Tor будет открыт порт 53000 и все поступившие на него DNS запросы будут обработаны через сеть Tor, то есть внешний наблюдатель не сможет перехватить, увидеть или изменить ваши DNS запросы и ответы на них.

В системных настройках и настройках приложений в качестве IP адреса DNS сервера нужно указывать localhost, а в качестве порта нужно указывать тот порт, который является значением DNSPort.

Например:

1dig suip.biz @localhost -p 53000

Нужно помнить, что довольно часто в настройках операционной системы или приложений можно указать только IP адрес сервера, но невозможно указать порт, поскольку подразумевается, что используется стандартный порт 53. Чтобы использовать Tor для выполнения общесистемных DNS запросов, в качестве значения DNSPort нужно указать 53 или использовать iptables для перенаправления трафика, предназначенного для 53 порта, на локальный порт службы Tor.

Преобразователь DNS от службы tor имеет ряд ограничений: поддерживается только протокол UDP. Обрабатываются только запросы A, AAAA и PTR, произвольные типы DNS запросов не обрабатываются.

При указании значения “auto“, Tor выберет порт за вас.

Эта директива может использоваться несколько раз для привязки (прослушивания) нескольких адресов/портов.

Она поддерживает флаги изоляции, подробности о которых смотрите в описании директивы SocksPort.

Фильтрации узлов Tor

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

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

То есть хотя сеть Tor и должна служить интересам пользователя, скомпрометированные узлы Tor несут риск для пользователя. Если вы хотите сократить этот риск и не использовать узлы Tor из своей страны или из определённых стран, то этот раздел вам поможет. Далее показано, как исключить узлы из определённых стран при составлении маршрутов Tor.

Ниже будут рассмотрены директивы, которыми вы можете исключить узлы Tor по определённым характеристикам, или наоборот использовать только узлы, удовлетворяющие определённым характеристикам. Использование директив однокипное — после директивы нужно перечислить один признак или список признаков узлов Tor.

В качестве фильтров могут использоваться:

  • идентификационные отпечатки ноды
  • код страны
  • шаблоны адресов

Код страны представляет собой двухбуквенное обозначение кодов ISO3166. Они должны быть помещены в фигурные скобки.

Перед отпечатком ноды может стоять знак доллара.

В качестве адреса может быть один определённый адрес или подсеть.

Пример:

1ExcludeNodes ABCD1234CDEF5678ABCD1234CDEF5678ABCD1234, {cc}, 255.254.0.0/8

Маршруты Tor: исключение стран для всех узлов

1ExcludeNodes НОДА,НОДА,...

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

Пример исключения узлов Tor из стран РФ, Беларусь, Украина и Казахстан:

1ExcludeNodes {ru}, {by}, {ua}, {kz}

Обратите внимание, что могут использоваться не только коды стран, но и IP диапазоны и отпечатки определённых узлов.

По умолчанию этот параметр рассматривается как предпочтение, которое Tor может переопределить для продолжения работы. Например, если вы пытаетесь подключиться к скрытому сервису, но исключили все точки входа к этому скрытому сервису, Tor все равно подключится к одному из них. Если вам не нужно это поведение, установите параметр StrictNodes (описано ниже).

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

Коды стран не чувствительны к регистру. Код «{??}» относится к узлам, страну которых невозможно идентифицировать. Никакой код страны, включая {??}, не работает, если нельзя загрузить GeoIPFile.

Смотрите также опцию GeoIPExcludeUnknown ниже.

Фильтрация выходных узлов Tor

1ExcludeExitNodes НОДА,НОДА,...

Список идентификационных отпечатков, кодов стран и шаблонов адресов узлов, которые никогда не будут использоваться при выборе выходного узла, то есть узла, который доставляет вам трафик за пределы сети Tor. Обратите внимание, что любой узел, указанный в ExcludeNodes, автоматически считается также частью этого списка. Смотрите также предостережения по опции «ExitNodes» ниже.

Фильтрация неизвестных узлов Tor

1GeoIPExcludeUnknown 0|1|auto

Если для этой опции задано значение auto, то всякий раз, когда любой код страны устанавливается в ExcludeNodes или ExcludeExitNodes, все узлы с неизвестной страной ({??} и, возможно, {A1}) также рассматриваются как исключённые. Если для этого параметра установлено значение 1, то все неизвестные страны рассматриваются как исключённые в ExcludeNodes и ExcludeExitNodes. Этот параметр не действует, если файл GeoIP не настроен или не может быть найден. (По умолчанию: auto).

Выбор IP определённой страны для узлов Tor

1ExitNodes НОДА,НОДА,...

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

Пример настройки, которая устанавливает использование только выходные узлы Tor из европейских стран (Германия, Франция, Финляндия, Нидерланды, Новая Зеландия, Норвегия, Швейцария, Швеция, Дания, Эстония):

1ExitNodes {de}, {fr}, {fi}, {nl}, {nz}, {no}, {ch}, {se}, {dk}, {ee}

Обратите внимание: если вы укажете здесь слишком мало узлов или исключите слишком много выходных узлов с помощью ExcludeExitNodes, вы можете снизить функциональность. Например, если ни один из перечисленных выходов не разрешает трафик через порт 80 или 443, вы не сможете просматривать веб-страницы.

Также обратите внимание, что не каждый канал используется для доставки трафика за пределы сети Tor. Нормально видеть контуры без выхода (например, те, которые используются для подключения к скрытым службам, те, которые выполняют подключение к управляющим серверам, те, которые используются для самотестирования доступности ретранслятора и т. д.), которые заканчиваются на узле без выхода. Чтобы полностью исключить узлы по определённым признакам, смотрите ExcludeNodes и StrictNodes.

Опция ExcludeNodes переопределяет эту опцию: любой узел, указанный одновременно в ExitNodes и ExcludeNodes, рассматривается как исключённый.

Адресная запись .exit, если она включена через MapAddress, переопределяет эту опцию.

Исключение промежуточных узлов

1MiddleNodes НОДА,НОДА,...

Список идентификационных отпечатков и кодов стран узлов, используемых для «средних» хопов в обычных цепях. Обычные каналы включают в себя все каналы, кроме прямых соединений с управляющими серверами. Средние хопы — все узлы кроме выхода и входа.

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

Параметр ExcludeNodes переопределяет этот параметр: любой узел, указанный в MiddleNodes и ExcludeNodes, рассматривается как исключённый

Выбор входных узлов Tor

1EntryNodes НОДА,НОДА,...

Список идентификационных отпечатков и кодов стран узлов, которые будут использоваться для первого перехода в ваших обычных цепях. Обычные каналы включают в себя все каналы, кроме прямых соединений с управляющими серверами. Опция Bridge переопределяет эту опцию; если вы настроили Bridge, а значение UseBridges равно 1, то именно мост используются в качестве узлов входа.

Опция ExcludeNodes переопределяет эту опцию: любой узел, указанный в EntryNodes и ExcludeNodes, рассматривается как исключённый.

Строгий режим выбора узлов Tor

1StrictNodes 0|1

Если для параметра StrictNodes установлено значение 1, Tor будет рассматривать параметр ExcludeNodes не как рекомендательный, а как обязательный для всех генерируемых вами цепей, даже если это нарушит функциональность для вас (StrictNodes не применяется к ExcludeExitNodesExitNodesMiddleNodes или MapAddress). Если для StrictNodes задано значение 0, Tor все равно будет пытаться избегать узлов в списке ExcludeNodes, но при этом более высоким приоритетом является обеспечение работоспособности подключения. В частности, StrictNodes 0 сообщает Tor, что можно использовать исключённый узел, когда необходимо выполнить самотестирование достижимости ретранслятора, подключиться к скрытому сервису, предоставить скрытый сервис клиенту, выполнить запрос .exit, выгрузить управляющую информацию или загрузить управляющую информацию. (По умолчанию: 0)

Блокировка доступа к определённым IP и портам

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

По умолчанию для подключений через сеть Tor заблокированы все соединения на порты:

  • 25
  • 119
  • 135-139
  • 445
  • 563
  • 1214
  • 4661-4666
  • 6346-6429
  • 6699
  • 6881-6999

Эти блокировки распространяются как на IPv4, так и на IPv6 адреса.

Также заблокированы все серые IP адреса (то есть относящиеся к локальным сетям).

И дополнительно заблокированы ваши главные внешние IPv4 и IPv6 адреса.

Как заблокировать доступ к определённым диапазонам IP и портам через Tor

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

Синтаксис директивы следующий:

1ExitPolicy ПОЛИТИКА АДРЕС[/СЕТЬ][:ПОРТ]

В качестве ПОЛИТИКИ может быть одно из ключевых слов:

  • accept — разрешить IPv4 и IPv6 трафик
  • accept6 — разрешить IPv6 трафик
  • reject — запретить IPv4 и IPv6 трафик
  • reject6 — запретить IPv6 трафик

После политики должен следовать АДРЕС. Дополнительно можно указать длину МАСКИ, чтобы правило распространялось на диапазон IP адресов. Также при желании можно указать ПОРТ.

Вместо указания адреса или подсети, можно использовать “*“. Обратите внимание, что “*” означает (0.0.0.0/0 и ::/0). Если вы хотите, чтобы правило применялось ко всем, но только к IPv4 адресам, то нужно использовать *4. Если же вы хотите, чтобы правило применялось ко всем, но только к IPv6 адресам, то используйте *6.

В качестве ПОРТА может быть как одиночный номер порта, так и диапазон «С_ПОРТА-ДО_ПОРТА». Вместо порта можно указать звёздочку “*“, что будет означает, что правило применяется для всех портов данного IP или подсети. Если порт пропущен, то это равнозначно указанию “*“.

Можно использовать несколько директив ExitPolicy, либо указать несколько политик через запятую при одной директиве ExitPolicy.

Директивы обрабатываются начиная с первой. Первое совпадение выигрывает. Не забывайте о дефолтных политиках, которые хотя и отсутствуют в конфигурационном файле, но при этом обрабатываются первыми!

Примеры, когда разрешён доступ к irc портам, а всё остальное заблокировано:

1ExitPolicy accept *:6660-6667,reject *:*

Разрешить также доступ к nntp (по умолчанию доступ к порту 119 заблокирован):

1ExitPolicy accept *:119

Заблокировать всё, выход в Интернет через Tor будет невозможен:

1ExitPolicy reject *:*

В качестве псевдонима локальных сетей можно использовать слово “private“, хотя приватные IP диапазоны уже заблокированы по умолчанию. При использовании слова “private” помните, что оно всегда создаёт правила для IPv4 и IPv6, даже если используются политики accept6/reject6.

Как убрать блокировки доступа в Tor

Выше перечислены политики, которые применяются в Tor по умолчанию и которые блокируют доступ к некоторым подсетям и портам.

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

1ExitPolicyRejectPrivate 0

Политики выхода, которые вы указываете в конфигурационном файле, ДОБАВЛЯЮТСЯ к политикам по умолчанию. Если вы хотите ЗАМЕНИТЬ политики выхода, то в конце ваших правил используйте одну из следующих директив:

12ExitPolicy reject *:*ExitPolicy accept *:*

Использование строгой политики выхода через Tor

Как было рассказано в предыдущих разделах, по умолчанию Tor блокирует доступ через сеть Tor для некоторых портов и IP адресов. Вы можете использовать директиву

1ReducedExitPolicy 1

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

Содержание строкой политики такое:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879accept *:20-21accept *:22accept *:23accept *:43accept *:53accept *:79accept *:80-81accept *:88accept *:110accept *:143accept *:194accept *:220accept *:389accept *:443accept *:464accept *:465accept *:531accept *:543-544accept *:554accept *:563accept *:587accept *:636accept *:706accept *:749accept *:873accept *:902-904accept *:981accept *:989-990accept *:991accept *:992accept *:993accept *:994accept *:995accept *:1194accept *:1220accept *:1293accept *:1500accept *:1533accept *:1677accept *:1723accept *:1755accept *:1863accept *:2082accept *:2083accept *:2086-2087accept *:2095-2096accept *:2102-2104accept *:3128accept *:3389accept *:3690accept *:4321accept *:4643accept *:5050accept *:5190accept *:5222-5223accept *:5228accept *:5900accept *:6660-6669accept *:6679accept *:6697accept *:8000accept *:8008accept *:8074accept *:8080accept *:8082accept *:8087-8088accept *:8232-8233accept *:8332-8333accept *:8443accept *:8888accept *:9418accept *:9999accept *:10000accept *:11371accept *:19294accept *:19638accept *:50002accept *:64738reject *:*

Ограничение по IP для подключения к Tor

Вы можете ограничить по IP и сетям тех, кто может подключаться к запущенной службе Tor, для этого используется директива SocksPolicy.

Эта директива устанавливают политику для этого сервера. Политика заключается в установке правил, кто может или кто не может подключаться к портам SocksPort и DNSPort.

Политики подробно описаны в разделе «Как заблокировать доступ к определённым диапазонам IP и портам через Tor», отличие только в том, что указанный порт игнорируется. Любой адрес, не совпадающий с любой записью в политике принимается.

Политики разрешают или отклоняют SOCKS запросы на основе IP адреса. Первый пункт, который совпал, выигрывает. Если не установлена SocksPolicy, то принимаются все (и только) запросы, которые достигли SocksPort.

Пример настройки, когда принимаются соединения только от подсети 192.168.0.0/16, а для всех других адресов подключения к Tor отклоняются:

12SocksPolicy accept 192.168.0.0/16SocksPolicy reject *

Выбор между IPv4 и IPv6

1ClientUseIPv4 0|1

Если для этого параметра установлено значение 0, Tor будет избегать подключения к управляющим серверам и входным нодам по IPv4. Обратите внимание, что клиенты с IPv4-адресом в мосте, прокси или подключаемой транспортной линии будут пытаться подключиться через IPv4, даже если для ClientUseIPv4 установлено значение 0. (По умолчанию: 1).

1ClientUseIPv6 0|1

Если для этого параметра установлено значение 1, Tor может подключаться к управляющим серверам и входным нодам через IPv6. Для хостов, использующих только IPv6, необходимо также установить ClientUseIPv4 в 0, чтобы отключить IPv4. Обратите внимание, что клиенты, настроенные с IPv6-адресом в мосте, прокси или подключаемой транспортной линии, будут пытаться подключиться через IPv6, даже если для ClientUseIPv6 установлено значение 0. (По умолчанию: 0).

Защита от выявления пользователей Tor по профилю использования трафика

Существуют исследования, в которых предложены методы идентификации пользователей сетей Tor на основании собранной информации об исходящем от них трафике и трафике пришедшем к определённому хосту. Трафик может быть зашифрован, но характер активности иногда позволяет действительно сопоставить пользователей.

Для защиты от такого рода атак узлы сети Tor могут посылать ненужный трафик — просто чтобы сбить с толку подобные анализаторы профилей трафика. Эти данные называются padding, «заполнение».

1ConnectionPadding 0|1|auto

Этот параметр регулирует использование Tor для защиты от некоторых форм анализа трафика. Если установлено значение auto, Tor будет отправлять заполнение только в том случае, если и клиент, и реле поддерживают его. Если установлено значение 0, Tor не будет отправлять ячейки заполнения. Если установлено значение 1, Tor все равно будет отправлять заполнение для клиентских подключений независимо от поддержки ретрансляции. Только клиенты могут установить эту опцию. Эта опция должна предлагаться через пользовательский интерфейс мобильным пользователям для использования там, где пропускная способность может быть дорогой. (По умолчанию: авто)

1ReducedConnectionPadding 0|1

Если установлено значение 1, Tor не будет держать OR соединения открытыми в течение очень долгого времени и будет меньше заполнять эти соединения. Только клиенты могут установить эту опцию. Эта опция должна предлагаться через пользовательский интерфейс мобильным пользователям для использования там, где пропускная способность может быть дорогой. (По умолчанию: 0)

1CircuitPadding 0|1

Если установлено значение 0, Tor не будет заполнять клиентские каналы дополнительным трафиком покрытия. Только клиенты могут установить эту опцию. Эта опция должна предлагаться через пользовательский интерфейс мобильным пользователям для использования там, где пропускная способность может быть дорогой. Если установлено значение 1, заполнение будет согласовываться в соответствии с консенсусом и поддержкой ретрансляции (в отличие от ConnectionPaddingCircuitPadding не может быть принудительно включён). (По умолчанию: 1)

1ReducedCircuitPadding 0|1

Если установлено значение 1, Tor будет использовать только алгоритмы заполнения, которые имеют низкие издержки. Только клиенты могут установить эту опцию. Эта опция должна предлагаться через пользовательский интерфейс мобильным пользователям для использования там, где пропускная способность может быть дорогой. (По умолчанию: 0)

Как часто меняется IP в Tor. Как менять свой IP в Tor чаще или реже

С помощью настройки:

1NewCircuitPeriod ЧИСЛО

Устанавливается ЧИСЛО секунд, через которое создаётся новый контур отправки трафика, то есть, фактически, меняется ваш IP адрес. Значением по умолчанию является 30 секунд.

Выбор сетевого интерфейса для Tor

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

Опция

1OutboundBindAddress IP

делает так, что все исходящие соединения отправляются с указанного IP адреса.

Эту опцию можно использовать дважды, один раз для IPv4 адреса и ещё один раз для IPv6 адреса. IPv6 адреса должны быть обёрнуты квадратными скобками.

Эта настройка игнорируются для подключений на петлевые (loopback) адреса (127.0.0.0/8 and ::1), а также не используется для DNS запросов.

Использование Tor при ограниченных возможностях подключения

Настройка

1ReachableAddresses IP[/МАСКА][:ПОРТ]...

позволяет установить разделённый запятой список IP адресов (диапазонов) и портов, к которым разрешает подключаться ваш файервол. Формат адресов такой же, как и в ExitPolicy за исключением того, что “accept” понимается только если явно указано “reject“. Например,

1ReachableAddresses 99.0.0.0/8, reject 18.0.0.0/8:80, accept *:80

означает, что ваш файервол позволяет подключения к чему угодно внутри сети 99, отклоняет соединения на порт 80 для сети 18 и разрешает подключения на порт 80 во всех других случаях. (по умолчанию: ‘accept *:*’.)

Как избегать близких IP адресов при построении контуров Tor

При построении маршрутов трафика Tor, которые состоят из трёх случайных узлов этой сети, можно включить настройку, которая будет запрещать задействовать узлы, располагающиеся слишком близко друг к другу. Это делается опцией:

1EnforceDistinctSubnets 0|1

Если она установлена на 1, то Tor не будет помещать два сервера, чьи IP «слишком близки» в один контур. В настоящее время адреса считаются «слишком близкими», если они в одном /16 диапазоне (По умолчанию: 1).

Как через Tor подключаться к определённым сайтом с одним и тем же IP

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

1TrackHostExits ХОСТ,.ДОМЕН,...

Эта опция полезна если вы часто подключаетесь к сайтам, на которых все ваши аутентификационные кукиз (то есть на этих сайтах вы выполняете вход) истекают при каждой смене вашего IP.

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

Включение HTTP CONNECT вместо SOCKS в Tor

Опция

1HTTPTunnelPort [АДРЕС:]ПОРТ|auto [ФЛАГИ ИЗОЛЯЦИИ]

откроет этот порт для прослушивания прокси-соединений, используя протокол «HTTP CONNECT» вместо SOCKS. Установите для этого параметра значение 0, если вы не хотите разрешать соединения «HTTP CONNECT». Установите порт в «auto», чтобы Tor выбрал порт для вас. Эта директива может быть указана несколько раз для привязки к нескольким адресам/портам. Если в вашем файле конфигурации присутствует несколько записей этой опции, Tor по умолчанию выполнит изоляцию потока между слушателями. Объяснения флагов изоляции смотрите выше. (По умолчанию: 0)

Прозрачный прокси

Опция

1TransPort [АДРЕС:]ПОРТ|auto [ФЛАГИ ИЗОЛЯЦИИ]

откроет этот порт для прослушивания прозрачных прокси-соединений. Установите значение 0, если вы не хотите разрешать прозрачные прокси-соединения. Установите порт в «auto», чтобы Tor выбрал порт для вас. Эта директива может быть указана несколько раз для привязки к нескольким адресам/портам. Если в вашем файле конфигурации присутствует несколько записей этой опции, Tor по умолчанию выполнит изоляцию потока между слушателями. Подробности о флагах изоляции смотрите выше.

TransPort требует поддержки ОС для прозрачных прокси, таких как BSD pf или Linux IPTables. Если вы планируете использовать Tor в качестве прозрачного прокси-сервера для сети, вам нужно проверить и изменить VirtualAddrNetwork с настройками по умолчанию. (По умолчанию: 0)

Это далеко не все опции Tor. Это даже не все клиентские опции Tor — их намного больше! В этом разделе я попытался отобрать действительно важные настройки. Если вы считаете, что обязательно нужно упомянуть какую-то другую опцию, то напишите о ней в комментарии.