Tor: от азов до продвинутого уровня (ч. 9): Опции тонкой настройки Tor


Оглавление

1. Знакомство с Tor

2. Tor в Windows: установка службы, создание скрытого сервиса, использование браузерами и для пентеста

3. Как сделать свой прокси с Tor’ом в Windows

4. Подсказки по использованию браузера и службы Tor

5. Как перенаправить весь трафик через сеть Tor в Linux

6. Как получить красивое доменное имя для скрытого сервиса Tor

7. Анонимные сканирования с Nmap, sqlmap и WPScan через Tor

8. Служба Tor в Linux

9. Опции тонкой настройки Tor

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

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

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

9.4 Флаги SocksPort

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

10. Рецепты и подсказки по использованию Tor

11. Настройка скрытого сервиса Tor в Debian (Kali Linux, Linux Mint, Ubuntu)


Как настроить 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 можно изменить это значение и установить на любой незанятый порт:

SocksPort 10050

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


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

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

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

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

SocksPort 192.168.0.1:9100

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

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

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

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

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

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

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

ФЛАГИ позволяют сделать некоторую настройку подключения, а ИЗОЛИРУЮЩИЕ ФЛАГИ настраивают совместное использование подключения 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 запросы для этого подключения. Это эквивалентно NoDNSRequest, NoIPv4Traffic, NoIPv6Traffic. Соответствующий флаг 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

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

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

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

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

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

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

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

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

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

Пример:

DNSPort 53000

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

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

Например:

dig 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. Они должны быть помещены в фигурные скобки.

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

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

Пример:

ExcludeNodes ABCD1234CDEF5678ABCD1234CDEF5678ABCD1234, {cc}, 255.254.0.0/8

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

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

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

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

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

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

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

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


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

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

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

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

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

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

GeoIPExcludeUnknown 0|1|auto

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

StrictNodes 0|1

Если для параметра StrictNodes установлено значение 1, Tor будет рассматривать параметр ExcludeNodes не как рекомендательный, а как обязательный для всех генерируемых вами цепей, даже если это нарушит функциональность для вас (StrictNodes не применяется к ExcludeExitNodes, ExitNodes, MiddleNodes или 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.

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

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

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

  • 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 портам, а всё остальное заблокировано:

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

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

ExitPolicy accept *:119

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

ExitPolicy reject *:*

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

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

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

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

ExitPolicyRejectPrivate 0

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

ExitPolicy reject *:*
ExitPolicy accept *:*

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

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

ReducedExitPolicy 1

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

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

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

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

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

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

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

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

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

SocksPolicy accept 192.168.0.0/16
SocksPolicy reject *

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

ClientUseIPv4 0|1

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

ClientUseIPv6 0|1

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

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

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

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

ConnectionPadding 0|1|auto

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

ReducedConnectionPadding 0|1

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

CircuitPadding 0|1

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

ReducedCircuitPadding 0|1

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

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

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

NewCircuitPeriod ЧИСЛО

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

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

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

Опция

OutboundBindAddress IP

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

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

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

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

Настройка

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

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

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

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

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

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

EnforceDistinctSubnets 0|1

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

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

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

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

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

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

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

Опция

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

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

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

Опция

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

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

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

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


Рекомендуется Вам:

3 комментария to Tor: от азов до продвинутого уровня (ч. 9): Опции тонкой настройки Tor

  1. нонаме:

    Спасибо

  2. Сергей:

    Спасибо за очень подробную статью. Скажите, может быть вы знаете где посмотреть полный список переменных окружения, таких как TOR_SKIP_LAUNCH, TOR_TRANSPROXY и прочих? Пытаюсь найти, но не выходит.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *