Операторы узлов

Tor узнает свой IP-адрес, запрашивая у компьютера имя хоста и определяя IP по нему. Нередко бывает, что у людей в файле /etc/hosts хранятся старые записи, которые указывают на старые IP-адреса.

Если это не работает, вам нужно использовать опцию настройки "Address" и указать желаемый IP-адрес вручную. Если компьютер находится за NAT и имеет только внутренний IP-адрес, см. рекомендации в этом разделе относительно динамических IP-адресов.

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

Если ваш узел относительно новый, дайте ему время. Tor эвристически выбирает узлы для использования на основе данных контролирующих узлов. На контролирующих узлах собирается информация о пропускной способности вашего узла. Контролирующий узел направляет на ваш узел больше трафика, пока его загрузка не станет оптимальной. О том, как действует новый узел, подробно рассказано в нашем блоге. Если ваш узел действует уже какое-то время, а проблемы остаются, попросите совет в списке "tor-relays".

Если вы поддерживаете выходной узел, некоторые сервисы, к которым пользователи подключаются через вас, будут запрашивать обратное соединение, чтоб собрать больше информации. Например, сервер чата IRC подключается к порту identd, чтобы узнать, какой пользователь устанавливает соединение. (У IRC в данном случае ничего не получится, потому что у Tor просто нет этой информации). Кроме того, пользователи вашего выходного узла могут привлечь внимание других пользователей IRC, сайта и прочих, кто хотел бы узнать побольше об узле, с которого они подключаются.

Те, кто сканирует интернет в поисках открытых прокси-серверов, могут заметить, что иногда узлы Tor открывают свой SocksPort всему миру. Мы рекомендуем ограничить доступ к SocksPort локальной сетью.

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

  • Выходные узлы. Однако поддержка такого узла сопряжена с наибольшей публичностью и рисками (в частности, вы не должны запускать их из дома).
  • Если вы предпочитаете минимум усилий для запуска, попробуйте организовать быстрый входной узел.
  • Или мост.

Когда выходной узел неверно настроен или в руках злоумышленников, ему присваивается флаг BadExit. Для Tor это значит "не пропускать трафик через этот узел". Иначе говоря, узлы с таким флагом перестают действовать. Если вашему узлу присвоен этот флаг, значит, мы обнаружили проблему или подозрительную активность, когда наблюдали за трафиком, проходящим через ваш узел, и не смогли с вами связаться. Чтобы решить вопрос, пожалуйста, свяжитесь с теми, кто у нас занимается плохими узлами.

Когда обновляете узел Tor или перемещаете его на другой компьютер, весьма важно сохранить те же идентификационные ключи (они хранятся в вашей папке данных DataDirectory, "keys/ed25519_master_id_secret_key" и "keys/secret_id_key"). Рекомендуется делать резервные копии идентификационных ключей, чтобы вы могли восстановить узел в будущем, и репутация узла осталась бы с ним.

Таким образом, если вы будете обновлять свой узел Tor и сохраните прежние torrc и DataDirectory, то обновление пройдет без осложнений, и ваш узел будет использовать тот же ключ. Если необходимо сменить DataDirectory, позаботьтесь о том, чтобы скопировать свои прежние keys/ed25519_master_id_secret_key и keys/secret_id_key.

Обратите внимание: начиная с версии Tor 0.2.7 мы используем новое поколение идентификационных ключей узлов Tor, основанное на эллиптической криптографии с кривой ed25519. В конце концов они заменят старые идентификационные ключи на базе RSA, но это случится не сразу: важно обеспечить совместимость с более старыми версиями. До тех пор у каждого узла будет как идентификационный ключ, основанный на ed25519 (в файле keys/ed25519_master_id_secret_key), так и ключ RSA (в файле keys/secret_id_key). Вам следует сделать резервные копии обоих ключей на случай восстановления узла, смены настройки DataDirectory или переноса узла на новый компьютер.

Мы ищем людей с относительно стабильным интернетом, готовых поделиться как минимум 10 Mбитi/с в обе стороны. Если это вы, пожалуйста, подумайте о том, чтобы поддерживать у себя узел Tor.

Даже если у вас нет этих 10 Мбит/с, вы можете помочь сети Tor, если станете поддерживать у себя мост Tor с obfs4. В этом случае понадобится минимум 1 Мбит/с в обе стороны.

Чаще всего байт на входе в узел Tor означает и байт на выходе. Но есть несколько исключений.

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

У операторов выходных узлов есть еще одно небольшое исключение. Иногда вы получаете совсем немного данных (например, для мессенджера или SSH) и упаковываете их в полноразмерный 512-байтовый пакет для передачи через сеть Tor.

Ваш узел Tor использует больше памяти, чем вам бы хотелось? Вот почему это может происходить:

  • Если вы используете Linux, вероятны проблемы фрагментации памяти в реализации функции "malloc" в библиотеке "glibc". Иными словами, когда Tor освобождает память для системы, кусочки памяти настолько фрагментированы, что их сложно использовать повторно. Архив исходных кодов Tor поставляется с реализаций функции "malloc" из OpenBSD. В ней меньше проблем с фрагментацией, но выше нагрузка на процессор. Можно указать Tor использовать эту реализацию функции "malloc" следующим образом: ./configure --enable-openbsd-malloc.
  • Если у вас быстрый узел (много открытых TLS-соединений), вы наверняка теряете много памяти на внутренние буферы библиотеки OpenSSL (по 38+ Кб на соединение). Мы изменили OpenSSL, чтобы библиотека активнее освобождала неиспользуемые буферы. Если вы используете OpenSSL 1.0.0 или более позднюю версию, процесс сборки Tor автоматически использует эту возможность.
  • Если потребление памяти по-прежнему велико, попробуйте уменьшить пропускную способность, анонсируемую вашим узлом. Анонс меньшей пропускной способности привлечёт меньше пользователей. Узел не так сильно будет потреблять память. Подробнее опция MaxAdvertisedBandwidth описана в руководстве.

Быстрые узлы Tor обычно потребляют довольно много памяти. Быстрый выходной узел вполне может требовать 500-1000 Мб памяти.

Мы хотим, чтобы организация узла Tor была простой и удобной:

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

Если вы пользователь Debian или Ubuntu, лучше установить Tor из репозитория Tor Project.

  • Настройка ulimit -n устанавливается в 32768; этого достаточно для поддержания всех необходимых Tor-соединений.
  • Для Tor создается выделенный пользователь. Поэтому Tor не нужно запускаться в режиме суперпользователя (root).
  • Tor добавляется в автозагрузку соответствующим init-скриптом.
  • Tor запускается с опцией --verify-config. Так отлавливается большинство опечаток в конфигурационном файле.
  • Tor может начать c привилегированных портов, а потом сбрасывать привилегии.

Все исходящие соединения должны быть разрешены. Каждый узел должен иметь возможность связаться с любым другим узлом.

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

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

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

Лучше подумайте о том, чтобы разместить выходной узел на сервере компании, которая симпатизирует Tor. Обеспечьте для своего выходного узла отдельный IP-адрес. Не пропускайте через узел собственный трафик. Разумеется, лучше воздержаться от хранения любой важной или личной информации на компьютере, где поддерживается выходной узел.

  • Не используйте пакеты из репозиториев Ubuntu. Они не всегда корректно обновляются. С ними вы будете пропускать важные обновления, обеспечивающие стабильность и защиту.
  • Определите версию Ubuntu с помощью такой команды:
     $ lsb_release -c
    
  • Работая с правами суперпользователя, добавьте следующие строки в файл "/etc/apt/sources.list". Замените "version" на версию Ubuntu, определенную ранее:
     $ deb https://deb.torproject.org/torproject.org version main
     $ deb-src https://deb.torproject.org/torproject.org version main
    
  • Добавьте GPG-ключ для подписи пакетов:
     $ curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo apt-key add -
    
  • Установите Tor и проверьте подписи:
     $ sudo apt-get update
     $ sudo apt-get install tor deb.torproject.org-keyring
    

Простыми словами:

  • Есть главный идентификационный секретный ключ ed25519 – файл с названием "ed25519_master_id_secret_key". Это самый важный ключ. Убедитесь, что сделали резервную копию и храните ее в надёжном месте. Этот файл уязвим и нуждается в защите. Tor может его для вас зашифровать, если вы создадите ключ вручную и в ответ на запрос укажете пароль.
  • Для использования в Tor генерируется среднесрочный подписывающий ключ с названием "ed25519_signing_secret_key". Кроме того, создается сертификат "ed25519_signing_cert". Он подписан главным идентификационным секретным ключом и подтверждает, что среднесрочный подписывающий ключ актуален в определённый промежуток времени. По умолчанию этот промежуток – 30 дней, но его можно настроить в файле "torrc" с помощью параметра "SigningKeyLifetime N days|weeks|months".
  • Также существует открытый главный ключ с названием "ed25519_master_id_public_key". Он соответствует реальному узлу сети Tor. Этот ключ не нуждается в защите. Его можно вычислить, зная "ed5519_master_id_secret_key".

Tor нужен доступ только к среднесрочному ключу подписи и сертификату в пределах их срока действия. Таким образом, главный секретный идентификационный ключ узла Tor может храниться вне папки "DataDirectory/keys", например, на съёмном носителе или на другом компьютере. Вам придется вручную обновить среднесрочный ключ подписи и сертификат до истечения их срока действия, в противном случае процесс Tor на узле завершится по его истечении.

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

Теперь ваш узел входной (сторожевой). В других качествах его будут использовать меньше. Но клиенты не будут спешить сменить свои текущие сторожевые узлы на ваш. Подробнее об этом можно прочесть в блоге или в статье Changing of the Guards: A Framework for Understanding and Improving Entry Guard Selection in Tor.

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

Если вы решили поддерживать более одного узла, пожалуйста, используйте опцию "MyFamily" в "torrc" для каждого узла. Перечислите ваши узлы через запятую:

MyFamily $fingerprint1,$fingerprint2,$fingerprint3

Здесь каждый fingerprint – 40-значный идентификационный отпечаток (без пробелов).

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

Настройки статистики в torrc-файле позволяют вам указать максимальное число байтов, которые ваш узел обрабатывает в конкретный промежуток времени.

    AccountingStart day week month [день недели] ЧЧ:ММ

Это настройка времени обнуления счётчика. Например, так ограничивается количество переданных за неделю байт (со сбросом счётчика в 10:00 по средам):

    AccountingStart week 3 10:00
    AccountingMax 500 GBytes

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

Пример. Допустим, вы хотите разрешить 50 Гб трафика ежедневно в каждом направлении, и чтобы статистика обнулялась каждый полдень:

    AccountingStart day 12:00
    AccountingMax 50 GBytes

Обратите внимание: ваш узел не вернётся из спячки одновременно с началом учётного периода. Он отметит скорость исчерпания лимита в прошлом периоде и выберет случайный момент для пробуждения в новом интервале. Так мы избегаем ситуации, когда сотни узлов оказались бы в рабочем состоянии в начале месяца, и ни одного узла – в конце месяца.

Если вы можете выделить Tor лишь малый объём трафика по сравнению со скоростью вашего подключения, рекомендуем установить учётный период длиной в сутки. Так вы не окажетесь в ситуации с израсходованным трафиком в первый же день. Просто поделите месячный объем на 30. Возможно, вы также захотите ограничить пропускную способность для более равномерного распределения вашего вклада на протяжении суток. Если вы хотите выделить по X Гб на прием и на передачу, можете установить параметр RelayBandwidthRate равным 20*X Kб. Допустим, вы хотите выделить 50 Гб на приём и столько же на передачу. Попробуйте установить RelayBandwidthRate равным 1000 Kб. Так ваш узел будет каждый день приносить пользу по меньшей мере полсуток.

    AccountingStart day 0:00
    AccountingMax 50 GBytes
    RelayBandwidthRate 1000 KBytes
    RelayBandwidthBurst 5000 KBytes # allow higher bursts but maintain average

Tor поддерживает IPv6 частично. Мы предлагаем всем операторам узлов включить поддержку IPv6 в своих конфигурационных файлах torrc, чтобы быть наготове, когда поддержка IPv6 будет доступна. В настоящее время Tor требует для своих узлов адреса IPv4. Вы не можете организовать узел Tor только с IPv6.

Значения параметров AccountingMax и BandwidthRate применяются к функциям как узла Tor, так и клиента. Как только Tor впадет в спячку (гибернацию), вы можете остаться с неработающим браузером. В журнале появится такая запись:

Достигнут мягкий предел пропускной способности; приступаем к гибернации.
Новые подключения не допускаются

Решение вопроса – запускать два процесса Tor: один для узла, второй клиентский, и у каждого свои настройки. Один из способов сделать это (если вы начали с настройки рабочего Tor-узла):

  • В файле "torrc" узла Tor просто установите SocksPort на 0.
  • Создайте новый клиентский файл "torrc" из "torrc.sample" и убедитесь, что он использует другой лог-файл узла. Например, "torrc.client" и "torrc.relay".
  • Измените клиент Tor и стартовые скрипты узла; включите -f /path/to/correct/torrc.
  • В Linux/BSD/mac OS X изменение стартовых скриптов на Tor.client и Tor.relay может упростить разделение настроек.

Отлично. Именно поэтому мы реализовали политики исходящего трафика.

У каждого узла Tor есть политика исходящего трафика. Она определяет допустимые соединения от лица этого узла. Политики исходящего трафика влияют на клиентов Tor через директорию. Если конечное назначение, выбранное клиентом, запрещено в политике исходящего трафика узла, такой узел автоматически не будет предлагаться. Так владелец каждого узла может сам определять, с какими сервисами и сетями разрешать соединения. Если вы используете политику исходящего трафика по умолчанию, прочтите на нашем сайте о возможных проблемах. Мы также рекомендуем советы Майка Перри (Mike Perry) о том, как поддерживать выходной узел с минимальными рисками.

Политика исходящего трафика по умолчанию разрешает доступ ко многим популярным сервисам (например, просматривать интернет-страницы). Она ограничивает доступ к некоторым сервисам, где выше вероятность возникновения проблем (например, к электронной почте), а также к создающим недопустимо большую нагрузку на сеть Tor (например, к обычным портам файлообменных сервисов). Вы можете изменить политику исходящего трафика в файле torrc. If you want to avoid most if not all abuse potential, set it to "reject *:*". Эта настройка позволит вашему узлу передавать трафик внутри сети Tor, но не разрешит соединяться с внешними сайтами и другими сервисами.

Если вы разрешаете исходящие соединения, убедитесь, что ваш компьютер может корректно преобразовывать имена в IP-адреса. Если какие-либо ресурсы недоступны с вашего компьютера (например, вы ограничены брандмауэром или контентным фильтром), пожалуйста, явным образом укажите эти ресурсы в строчках "reject" вашей политики исходящего трафика. В противном случае пользователи Tor также не смогут пользоваться ими.

Tor вполне работает с динамическими IP-адресами узлов. Оставьте строчку "Адрес" в torrc пустой, и Tor самостоятельно определит адрес.

Да, при определённых атаках.

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

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

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

Чего тут больше – плюсов или минусов – сказать трудно. Многое зависит от того, какие типы атак волнуют вас сильнее. Для большинства пользователей поддержка узла Tor – разумный ход.

См. инструкции по настройке проброса портов в вашем маршрутизаторе.

Если ваш узел запущен во внутренней сети, вам потребуется настроить проброс портов. Настройка проброса TCP-соединений зависит от системы. В пункте FAQ о клиентах за NAT/брандмауэром есть несколько примеров таких настроек.

Например, так можно настроить брандмауэр GNU/Linux на базе iptables:

/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 9001 -j ACCEPT

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

В файле torrc можно указать следующие две опции:

BandwidthRate – максимальная выделяемая полоса пропускания (в байтах в секунду). Например, вы можете установить "BandwidthRate 10 MBytes" для 10 мегабайт в секунду (быстрый интернет) или "BandwidthRate 500 KBytes" для 500 килобайт в секунду (неплохое кабельное подключение). Минимальное значение BandwidthRate – 75 килобайт/с.

BandwidthBurst – пул байтов, который используется в случае кратковременного пика трафика выше BandwidthRate. При этом в среднем полоса пропускания на продолжительном отрезке времени остается ниже BandwidthRate. Низкое значение Rate при высоком Burst обеспечивает соблюдение ограничения "в среднем", при этом пропуская пиковые объёмы трафика, если средние значения не достигали лимита в последнее время. Например, если вы установите "BandwidthBurst 500 KBytes" и используете то же самое значение для BandwidthRate, то вы никогда не будете использовать более 500 килобайт в секунду. Если же вы установите BandwidthBurst выше (например, "5 MBytes"), это позволит пропустить больший поток, пока пул не будет исчерпан.

Если у вас ассимметричное соединение с интернетом (исходящий канал меньше входящего), например, кабельный модем, вам лучше сделать BandwidthRate меньше меньшего (обычно меньше ширины исходящего канала). Иначе может случиться, что вы будете терять много пакетов данных в моменты максимальной нагрузки на канал. Возможно, стоит поэкспериментировать с разными значениями и опытным путем определить, какие настройки обеспечат комфортное подключение. Затем укажите BandwidthBurst равным BandwidthRate.

Если узел Tor находится на компьютере Linux, у владельца есть еще один вариант. Он может установить низкий приоритет трафика Tor по сравнению с остальным трафиком на компьютере. Таким образом увеличение загрузки канала Tor не скажется на личном трафике владельца. A script to do this can be found in the Tor source distribution's contrib directory.

Также, у Tor есть опции спячки (гибернации): с их помощью вы можете ограничить объем передачи данных через Tor за отрезок времени (например 100 гигабайт в месяц). Они описаны ниже.

Обратите внимание, что BandwidthRate и BandwidthBurst указываются в байтах, а не битах.