Как настроить 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 можно изменить это значение и установить на любой незанятый порт:
1 | SocksPort 10050 |
В качестве значений SocksPort можно указать:
- ПОРТ
- АДРЕС:ПОРТ
- unix:ПУТЬ
- auto
Если указано слово auto, то служба Tor сама выберет для вас порт.
Если в качестве порта указать 0, то подключения приложений через SOCKS не будут разрешены.
Если указать АДРЕС:ПОРТ, то будет сделана привязка к указанному IP и порту:
1 | SocksPort 192.168.0.1:9100 |
Если IP адрес не указан, то по умолчанию привязка делается к localhost:9050 — это отличает службу Tor от многих других сетевых служб, которые прослушивают на всех интерфейсах и IP, если не указан конкретный адрес.
Примечание: хотя эта опция позволяет указать IP адрес отличный от localhost, вы должны это делать с крайней осторожностью. Протокол SOCKS не шифрует передаваемые данные и в Tor используется без аутентификации, поэтому если вы будете прослушивать подключения с доступного из вне IP адреса, то это может привести к утечке вашей информации для любого, кто видит вашу сеть, а также позволит любому использовать ваш компьютер в качестве открытого прокси.
Директиву SocksPort можно использовать несколько раз для прослушивания нескольких адресов/портов.
Если используется доменный сокет unix, вы можете экранировать путь используя стандартные управляющие последовательности C.
Вместе с адресом и портом при желании можно указать ФЛАГИ и ФЛАГИ ИЗОЛЯЦИИ:
1 | 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:
1 | DNSPort [АДРЕС:]ПОРТ|auto [ФЛАГИ ИЗОЛЯЦИИ] |
Использование и ФЛАГОВ ИЗОЛЯЦИИ похоже с директивой SocksPort, поэтому ознакомьтесь с её описанием.
Пример:
1 | DNSPort 53000 |
В этом случае после запуска службы Tor будет открыт порт 53000 и все поступившие на него DNS запросы будут обработаны через сеть Tor, то есть внешний наблюдатель не сможет перехватить, увидеть или изменить ваши DNS запросы и ответы на них.
В системных настройках и настройках приложений в качестве IP адреса DNS сервера нужно указывать localhost, а в качестве порта нужно указывать тот порт, который является значением DNSPort.
Например:
1 | 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. Они должны быть помещены в фигурные скобки.
Перед отпечатком ноды может стоять знак доллара.
В качестве адреса может быть один определённый адрес или подсеть.
Пример:
1 | ExcludeNodes ABCD1234CDEF5678ABCD1234CDEF5678ABCD1234, {cc}, 255.254.0.0/8 |
Маршруты Tor: исключение стран для всех узлов
1 | ExcludeNodes НОДА,НОДА,... |
Эта опция исключает ноды на любых стадиях при составлении маршрута, то есть указанные ноды не могут использоваться для входной, промежуточной или выходной ноды.
Пример исключения узлов Tor из стран РФ, Беларусь, Украина и Казахстан:
1 | ExcludeNodes {ru}, {by}, {ua}, {kz} |
Обратите внимание, что могут использоваться не только коды стран, но и IP диапазоны и отпечатки определённых узлов.
По умолчанию этот параметр рассматривается как предпочтение, которое Tor может переопределить для продолжения работы. Например, если вы пытаетесь подключиться к скрытому сервису, но исключили все точки входа к этому скрытому сервису, Tor все равно подключится к одному из них. Если вам не нужно это поведение, установите параметр StrictNodes (описано ниже).
Также обратите внимание, что если вы являетесь ретранслятором, этот (и другие варианты выбора узлов ниже) влияют только на ваши собственные контуры, которые Tor создаёт для вас. Клиенты могут по-прежнему строить каналы через вас к любому узлу. Контроллеры могут сказать Tor, чтобы они строили схемы через любой узел.
Коды стран не чувствительны к регистру. Код «{??}» относится к узлам, страну которых невозможно идентифицировать. Никакой код страны, включая {??}, не работает, если нельзя загрузить GeoIPFile.
Смотрите также опцию GeoIPExcludeUnknown ниже.
Фильтрация выходных узлов Tor
1 | ExcludeExitNodes НОДА,НОДА,... |
Список идентификационных отпечатков, кодов стран и шаблонов адресов узлов, которые никогда не будут использоваться при выборе выходного узла, то есть узла, который доставляет вам трафик за пределы сети Tor. Обратите внимание, что любой узел, указанный в ExcludeNodes, автоматически считается также частью этого списка. Смотрите также предостережения по опции «ExitNodes» ниже.
Фильтрация неизвестных узлов Tor
1 | GeoIPExcludeUnknown 0|1|auto |
Если для этой опции задано значение auto, то всякий раз, когда любой код страны устанавливается в ExcludeNodes или ExcludeExitNodes, все узлы с неизвестной страной ({??} и, возможно, {A1}) также рассматриваются как исключённые. Если для этого параметра установлено значение 1, то все неизвестные страны рассматриваются как исключённые в ExcludeNodes и ExcludeExitNodes. Этот параметр не действует, если файл GeoIP не настроен или не может быть найден. (По умолчанию: auto).
Выбор IP определённой страны для узлов Tor
1 | ExitNodes НОДА,НОДА,... |
Список идентификационных отпечатков, кодов стран и шаблонов адресов узлов, которые будут использоваться в качестве выходного узла, то есть узла, который доставляет вам трафик за пределы сети Tor.
Пример настройки, которая устанавливает использование только выходные узлы Tor из европейских стран (Германия, Франция, Финляндия, Нидерланды, Новая Зеландия, Норвегия, Швейцария, Швеция, Дания, Эстония):
1 | ExitNodes {de}, {fr}, {fi}, {nl}, {nz}, {no}, {ch}, {se}, {dk}, {ee} |
Обратите внимание: если вы укажете здесь слишком мало узлов или исключите слишком много выходных узлов с помощью ExcludeExitNodes, вы можете снизить функциональность. Например, если ни один из перечисленных выходов не разрешает трафик через порт 80 или 443, вы не сможете просматривать веб-страницы.
Также обратите внимание, что не каждый канал используется для доставки трафика за пределы сети Tor. Нормально видеть контуры без выхода (например, те, которые используются для подключения к скрытым службам, те, которые выполняют подключение к управляющим серверам, те, которые используются для самотестирования доступности ретранслятора и т. д.), которые заканчиваются на узле без выхода. Чтобы полностью исключить узлы по определённым признакам, смотрите ExcludeNodes и StrictNodes.
Опция ExcludeNodes переопределяет эту опцию: любой узел, указанный одновременно в ExitNodes и ExcludeNodes, рассматривается как исключённый.
Адресная запись .exit, если она включена через MapAddress, переопределяет эту опцию.
Исключение промежуточных узлов
1 | MiddleNodes НОДА,НОДА,... |
Список идентификационных отпечатков и кодов стран узлов, используемых для «средних» хопов в обычных цепях. Обычные каналы включают в себя все каналы, кроме прямых соединений с управляющими серверами. Средние хопы — все узлы кроме выхода и входа.
Это экспериментальная функция, предназначенная для использования исследователями и разработчиками для безопасного тестирования новых функций в сети Tor. Эта функция может быть удалена в будущем.
Параметр ExcludeNodes переопределяет этот параметр: любой узел, указанный в MiddleNodes и ExcludeNodes, рассматривается как исключённый
Выбор входных узлов Tor
1 | EntryNodes НОДА,НОДА,... |
Список идентификационных отпечатков и кодов стран узлов, которые будут использоваться для первого перехода в ваших обычных цепях. Обычные каналы включают в себя все каналы, кроме прямых соединений с управляющими серверами. Опция Bridge переопределяет эту опцию; если вы настроили Bridge, а значение UseBridges равно 1, то именно мост используются в качестве узлов входа.
Опция ExcludeNodes переопределяет эту опцию: любой узел, указанный в EntryNodes и ExcludeNodes, рассматривается как исключённый.
Строгий режим выбора узлов Tor
1 | 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.
Синтаксис директивы следующий:
1 | 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 портам, а всё остальное заблокировано:
1 | ExitPolicy accept *:6660-6667,reject *:* |
Разрешить также доступ к nntp (по умолчанию доступ к порту 119 заблокирован):
1 | ExitPolicy accept *:119 |
Заблокировать всё, выход в Интернет через Tor будет невозможен:
1 | ExitPolicy reject *:* |
В качестве псевдонима локальных сетей можно использовать слово «private«, хотя приватные IP диапазоны уже заблокированы по умолчанию. При использовании слова «private» помните, что оно всегда создаёт правила для IPv4 и IPv6, даже если используются политики accept6/reject6.
Как убрать блокировки доступа в Tor
Выше перечислены политики, которые применяются в Tor по умолчанию и которые блокируют доступ к некоторым подсетям и портам.
Чтобы разрешить доступ к IP адресам из локальных диапазонов добавьте директиву:
1 | ExitPolicyRejectPrivate 0 |
Политики выхода, которые вы указываете в конфигурационном файле, ДОБАВЛЯЮТСЯ к политикам по умолчанию. Если вы хотите ЗАМЕНИТЬ политики выхода, то в конце ваших правил используйте одну из следующих директив:
12 | ExitPolicy reject *:* ExitPolicy accept *:* |
Использование строгой политики выхода через Tor
Как было рассказано в предыдущих разделах, по умолчанию Tor блокирует доступ через сеть Tor для некоторых портов и IP адресов. Вы можете использовать директиву
1 | ReducedExitPolicy 1 |
которая разрешает доступ к некоторым портам, но блокирует доступ для всех остальных портов.
Содержание строкой политики такое:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 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 отклоняются:
12 | SocksPolicy accept 192.168.0.0/16 SocksPolicy reject * |
Выбор между IPv4 и IPv6
1 | ClientUseIPv4 0|1 |
Если для этого параметра установлено значение 0, Tor будет избегать подключения к управляющим серверам и входным нодам по IPv4. Обратите внимание, что клиенты с IPv4-адресом в мосте, прокси или подключаемой транспортной линии будут пытаться подключиться через IPv4, даже если для ClientUseIPv4 установлено значение 0. (По умолчанию: 1).
1 | ClientUseIPv6 0|1 |
Если для этого параметра установлено значение 1, Tor может подключаться к управляющим серверам и входным нодам через IPv6. Для хостов, использующих только IPv6, необходимо также установить ClientUseIPv4 в 0, чтобы отключить IPv4. Обратите внимание, что клиенты, настроенные с IPv6-адресом в мосте, прокси или подключаемой транспортной линии, будут пытаться подключиться через IPv6, даже если для ClientUseIPv6 установлено значение 0. (По умолчанию: 0).
Защита от выявления пользователей Tor по профилю использования трафика
Существуют исследования, в которых предложены методы идентификации пользователей сетей Tor на основании собранной информации об исходящем от них трафике и трафике пришедшем к определённому хосту. Трафик может быть зашифрован, но характер активности иногда позволяет действительно сопоставить пользователей.
Для защиты от такого рода атак узлы сети Tor могут посылать ненужный трафик — просто чтобы сбить с толку подобные анализаторы профилей трафика. Эти данные называются padding, «заполнение».
1 | ConnectionPadding 0|1|auto |
Этот параметр регулирует использование Tor для защиты от некоторых форм анализа трафика. Если установлено значение auto, Tor будет отправлять заполнение только в том случае, если и клиент, и реле поддерживают его. Если установлено значение 0, Tor не будет отправлять ячейки заполнения. Если установлено значение 1, Tor все равно будет отправлять заполнение для клиентских подключений независимо от поддержки ретрансляции. Только клиенты могут установить эту опцию. Эта опция должна предлагаться через пользовательский интерфейс мобильным пользователям для использования там, где пропускная способность может быть дорогой. (По умолчанию: авто)
1 | ReducedConnectionPadding 0|1 |
Если установлено значение 1, Tor не будет держать OR соединения открытыми в течение очень долгого времени и будет меньше заполнять эти соединения. Только клиенты могут установить эту опцию. Эта опция должна предлагаться через пользовательский интерфейс мобильным пользователям для использования там, где пропускная способность может быть дорогой. (По умолчанию: 0)
1 | CircuitPadding 0|1 |
Если установлено значение 0, Tor не будет заполнять клиентские каналы дополнительным трафиком покрытия. Только клиенты могут установить эту опцию. Эта опция должна предлагаться через пользовательский интерфейс мобильным пользователям для использования там, где пропускная способность может быть дорогой. Если установлено значение 1, заполнение будет согласовываться в соответствии с консенсусом и поддержкой ретрансляции (в отличие от ConnectionPadding, CircuitPadding не может быть принудительно включён). (По умолчанию: 1)
1 | ReducedCircuitPadding 0|1 |
Если установлено значение 1, Tor будет использовать только алгоритмы заполнения, которые имеют низкие издержки. Только клиенты могут установить эту опцию. Эта опция должна предлагаться через пользовательский интерфейс мобильным пользователям для использования там, где пропускная способность может быть дорогой. (По умолчанию: 0)
Как часто меняется IP в Tor. Как менять свой IP в Tor чаще или реже
С помощью настройки:
1 | NewCircuitPeriod ЧИСЛО |
Устанавливается ЧИСЛО секунд, через которое создаётся новый контур отправки трафика, то есть, фактически, меняется ваш IP адрес. Значением по умолчанию является 30 секунд.
Выбор сетевого интерфейса для Tor
Если у вас несколько сетевых интерфейсов (например, имеется проводное соединение и Wi-Fi), то вы можете принудительно выбрать, какое из них будет использоваться для работы через Tor.
Опция
1 | OutboundBindAddress IP |
делает так, что все исходящие соединения отправляются с указанного IP адреса.
Эту опцию можно использовать дважды, один раз для IPv4 адреса и ещё один раз для IPv6 адреса. IPv6 адреса должны быть обёрнуты квадратными скобками.
Эта настройка игнорируются для подключений на петлевые (loopback) адреса (127.0.0.0/8 and ::1), а также не используется для DNS запросов.
Использование Tor при ограниченных возможностях подключения
Настройка
1 | ReachableAddresses IP[/МАСКА][:ПОРТ]... |
позволяет установить разделённый запятой список IP адресов (диапазонов) и портов, к которым разрешает подключаться ваш файервол. Формат адресов такой же, как и в ExitPolicy за исключением того, что «accept» понимается только если явно указано «reject«. Например,
1 | ReachableAddresses 99.0.0.0/8, reject 18.0.0.0/8:80, accept *:80 |
означает, что ваш файервол позволяет подключения к чему угодно внутри сети 99, отклоняет соединения на порт 80 для сети 18 и разрешает подключения на порт 80 во всех других случаях. (по умолчанию: ‘accept *:*’.)
Как избегать близких IP адресов при построении контуров Tor
При построении маршрутов трафика Tor, которые состоят из трёх случайных узлов этой сети, можно включить настройку, которая будет запрещать задействовать узлы, располагающиеся слишком близко друг к другу. Это делается опцией:
1 | EnforceDistinctSubnets 0|1 |
Если она установлена на 1, то Tor не будет помещать два сервера, чьи IP «слишком близки» в один контур. В настоящее время адреса считаются «слишком близкими», если они в одном /16 диапазоне (По умолчанию: 1).
Как через Tor подключаться к определённым сайтом с одним и тем же IP
С помощью опции TrackHostExits вы можете перечислить список разделённых запятой значений хостов, при подключении к которым Tor будет пытаться повторно использовать одну и ту же выходную ноду для каждого из этих сайтов. Если перед значением стоит . (точка), то оно трактуется как соответствие целому домену. Если одним из значений является просто . (точка), то это означает совпадение со всеми адресами (то есть эта функция будет применяться для всех сайтов).
1 | TrackHostExits ХОСТ,.ДОМЕН,... |
Эта опция полезна если вы часто подключаетесь к сайтам, на которых все ваши аутентификационные кукиз (то есть на этих сайтах вы выполняете вход) истекают при каждой смене вашего IP.
Помните, что у этой опции есть недостаток, который заключается в том, что она делает более чёткой связь истории просмотров с определённым пользователем. Тем не менее если вы всё равно совершаете вход на сайт, то эти данные в любом случае можно собрать с помощью кукиз или другими специфичными для протокола средствами.
Включение HTTP CONNECT вместо SOCKS в Tor
Опция
1 | HTTPTunnelPort [АДРЕС:]ПОРТ|auto [ФЛАГИ ИЗОЛЯЦИИ] |
откроет этот порт для прослушивания прокси-соединений, используя протокол «HTTP CONNECT» вместо SOCKS. Установите для этого параметра значение 0, если вы не хотите разрешать соединения «HTTP CONNECT». Установите порт в «auto», чтобы Tor выбрал порт для вас. Эта директива может быть указана несколько раз для привязки к нескольким адресам/портам. Если в вашем файле конфигурации присутствует несколько записей этой опции, Tor по умолчанию выполнит изоляцию потока между слушателями. Объяснения флагов изоляции смотрите выше. (По умолчанию: 0)
Прозрачный прокси
Опция
1 | TransPort [АДРЕС:]ПОРТ|auto [ФЛАГИ ИЗОЛЯЦИИ] |
откроет этот порт для прослушивания прозрачных прокси-соединений. Установите значение 0, если вы не хотите разрешать прозрачные прокси-соединения. Установите порт в «auto», чтобы Tor выбрал порт для вас. Эта директива может быть указана несколько раз для привязки к нескольким адресам/портам. Если в вашем файле конфигурации присутствует несколько записей этой опции, Tor по умолчанию выполнит изоляцию потока между слушателями. Подробности о флагах изоляции смотрите выше.
TransPort требует поддержки ОС для прозрачных прокси, таких как BSD pf или Linux IPTables. Если вы планируете использовать Tor в качестве прозрачного прокси-сервера для сети, вам нужно проверить и изменить VirtualAddrNetwork с настройками по умолчанию. (По умолчанию: 0)
Это далеко не все опции Tor. Это даже не все клиентские опции Tor — их намного больше! В этом разделе я попытался отобрать действительно важные настройки. Если вы считаете, что обязательно нужно упомянуть какую-то другую опцию, то напишите о ней в комментарии.