Tor (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
Tor
. Дата последней синхронизации: 19 июля 2024. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
GNUnet (Русский)
I2P (Русский)
Freenet
Tor Project
(
T
he
o
nion
r
outing) — открытая реализация
луковой маршрутизации
, предоставляющая доступ к анонимной прокси-сети. Основная цель — сохранить
анонимность
пользователя в интернете, обеспечив защиту от
анализа трафика
.
Пользователи сети Tor запускают на своих машинах «луковый прокси» (onion proxy), который предоставляет программам-клиентам SOCKS-интерфейс. Прокси подключается к сети Tor, периодически согласовывая виртуальный канал через неё. Tor использует многослойную криптографию (отсюда аналогия с луком), последовательно обеспечивая секретность на каждом промежуточном маршрутизаторе.
В процессе работы луковый прокси управляет сетевым трафиком, обеспечивая анонимность конечного пользователя. Трафик зашифровывается, пересылается через узлы сети Tor и дешифруется на последнем узле перед отправкой на целевой сервер. Цена обеспечения анонимности — низкая скорость работы по сравнению с обычным прямым соединением из-за большого количества перенаправлений трафика. Кроме того, хотя Tor обеспечивает защиту от анализа трафика, он не позволяет предотвратить атаки на опознание трафика (traffic confirmation) на границах сети Tor (то есть в точках входа и выхода из сети). Подробнее смотрите
Wikipedia:ru:Tor
.
Примечание
Сам по себе Tor
не
обеспечивает полную анонимность. Есть целый ряд подводных камней, которые нужно учитывать при работе с Tor (смотрите
Может ли Tor обеспечить мне полную анонимность?
).
Установка
Установите
пакет
torbrowser-launcher
для использования
Tor Browser
— это единственный официально поддерживаемый способ для анонимного веб-сёрфинга через Tor.
Если вы планируете использовать Tor с другими приложениями или запустить свой собственный onion-сервис, установите пакет
tor
— данная статья в основном посвящена его использованию.
Nyx
— консольная утилита для мониторинга Tor. Позволяет отслеживать использование пропускной способности, детали соединений, а также редактировать настройки на лету. Для её использования
установите
пакет
nyx
.
Использование
Запустите/включите
службу
tor.service
. Также можно запустить вручную от имени пользователя
tor
:
[tor]$ /usr/bin/tor
Чтобы программа работала через Tor, настройте её использовать
127.0.0.1
или
localhost
в качестве SOCKS5-прокси на порте
9050
(для Tor со стандартными настройками).
Прокси позволяет удалённо выполнять разрешение доменных имён: используйте
socks5
h
://localhost:9050
для отправки DNS-запросов с выходного узла (вместо
socks5
для локальных запросов).
Проверить работу Tor можно на странице
https://check.torproject.org/
.
Настройка
По умолчанию Tor считывает настройки из файла
/etc/tor/torrc
, а если он отсутствует, то из
$HOME/.torrc
. Информация о настройках доступна в руководстве
tor(1)
. Настройки по умолчанию должны подходить для большинства пользователей.
После изменения настроек службу
tor.service
необходимо
перезагрузить
.
Настройка Tor Relay
Максимальное доступное для Tor количество открытых файловых дескрипторов задаётся параметром
LimitNOFILE
в файле
tor.service
. Для быстрых ретрансляторов имеет смысл увеличить это значение.
Если на вашей системе не запущен веб-сервер и вы не задавали значение
AccountingMax
(определяет максимальный объём передаваемых данных), рассмотрите возможность установки параметра
ORPort
в значение
443
и/или
DirPort
в значение
80
. Многие пользователи Tor находятся за жёсткими межсетевыми экранами, которые разрешают им только веб-сёрфинг, и такая настройка позволит им использовать ваш ретранслятор. Если порты
80
и
443
уже заняты, то подойдут
22
,
110
,
143
и
9001
[1]
. Порты с номерами до 1024 являются системными, и для их использования Tor должен быть запущен с привилегиями суперпользователя; задайте параметры
User=root
в юните
tor.service
и
User tor
в файле
torrc
.
Также будет полезно глянуть
документацию Tor
о жизненном цикле ретрансляторов.
Tor ControlPort
Как правило, особой необходимости открывать
ControlPort
не возникает, но некоторым программам это может потребоваться для получения низкоуровневого доступа к узлу.
Через открытый ControlPort внешние приложения смогут отслеживать состояние вашего узла, корректировать настройки, а также получать информацию о состоянии сети Tor и виртуальных каналов.
Добавьте следующую строку в файл
torrc
:
ControlPort 9051
Разумеется, доступ к ControlPort должен предоставляться только доверенным пользователям. Ограничение доступа осуществляется либо с помощью cookie-файла, либо паролем, либо обоими способами одновременно.
Важно
Предоставляйте пароль или cookie только доверенным процессам и пользователям, поскольку они могут быть использованы для изменения произвольных параметров в настройках службы.
Cookie-файл Tor Control
Добавьте к файлу
torrc
следующие строки:
CookieAuthentication 1
CookieAuthFile /var/lib/tor/control_auth_cookie
CookieAuthFileGroupReadable 1
DataDirectoryGroupReadable 1
Перезапустите
службу
tor.service
для применения изменений.
Доступ к ControlPort будет ограничен набором файловых разрешений cookie-файла и каталога data.
Добавьте нужных пользователей в
группу
tor
, чтобы они получили доступ к cookie-файлу.
Проверить права доступа можно такой командой:
$ stat -c%a /var/lib/tor /var/lib/tor/control_auth_cookie
Она должна вывести значения
750
и
640
.
Пароль Tor Control
Преобразуйте пароль из представления в виде открытого текста в хэш:
$ set +o history                  # отключить историю команд bash
$ tor --hash-password
пароль
$ set -o history                  # включить историю команд bash
Добавьте этот хэш к файлу
torrc
:
HashedControlPassword
хэш
Команда
set +o history
отключает сохранение истории в файл
$HISTFILE
, чтобы при выполнении команды
tor --hash-password
в нём не сохранилось значение пароля открытым текстом.
Tor ControlSocket
Tor ControlSocket имеет примерно то же назначение, что и
#Tor ControlPort
, с той лишь разницей, что прослушивается не TCP-сокет, а
сокет домена
Unix.
Если какой-то программе нужен доступ к Tor ControlSocket, добавьте следующие строки к файлу
torrc
:
ControlSocket /var/lib/tor/control_socket
ControlSocketsGroupWritable 1
DataDirectoryGroupReadable 1
CacheDirectoryGroupReadable 1             # обходное решение для бага #26913
Добавьте запускающего программу пользователя
группу
tor
.
Затем
перезапустите
службу
tor.service
и саму программу.
Чтобы проверить права доступа у сокета:
$ stat -c%a /var/lib/tor /var/lib/tor/control_socket
Команда должна вывести значения
750
и
660
.
Проверка Tor Control
Чтобы проверить ControlPort, используйте входящую в пакет
openbsd-netcat
утилиту
nc
:
$ echo -e 'PROTOCOLINFO\r\n' | nc 127.0.0.1 9051
Для проверки ControlSocket можно использовать
socat
:
$ echo -e 'PROTOCOLINFO\r\n' | socat - UNIX-CLIENT:/var/lib/tor/control_socket
Обе команды должны вывести
250-PROTOCOLINFO 1
250-AUTH METHODS=COOKIE,SAFECOOKIE,HASHEDPASSWORD COOKIEFILE="/var/lib/tor/control_auth_cookie"
250-VERSION Tor="0.4.8.12"
250 OK
514 Authentication required.
Информация о доступных командах есть в документации:
The Tor Control Protocol
.
Использование системной службы Tor в браузере
По умолчанию Tor Browser запускает свой собственный экземпляр Tor, но можно перенастроить его на использование системной службы Tor.
Актуальная инструкция о том, как это сделать, есть в запускающем скрипте, который обычно находится в
~/.local/share/torbrowser/tbb/x86_64/tor-browser/Browser/start-tor-browser
.
По состоянию на версию
0.3.7
действия такие:
В файле
/etc/tor/torrc
возьмите адрес и порт из настройки
SOCKSPort
. Если адрес не указан, по умолчанию используется
127.0.0.1
; если порт не указан, по умолчанию используется
9050
.
Выполните шаги, описанные в разделах
#Tor ControlPort
и
#Пароль Tor Control
, и скопируйте ControlPort и пароль для дальнейшего использования.
В Tor Browser откройте
about:config
и измените следующие параметры:
# ПАРАМЕТР                                 ЗНАЧЕНИЕ
# network.proxy.socks                      <адрес SOCKS>
# network.proxy.socks_port                 <порт SOCKS>
# extensions.torbutton.inserted_button     true
# extensions.torbutton.launch_warning      false
# extensions.torbutton.loglevel            2
# extensions.torbutton.logmethod           0
# extensions.torlauncher.control_port      <ControlPort>
# extensions.torlauncher.loglevel          2
# extensions.torlauncher.logmethod         0
# extensions.torlauncher.prompt_at_startup false
# extensions.torlauncher.start_tor         false
В запускающем скрипте, который обычно находится в
~/.local/share/torbrowser/tbb/x86_64/tor-browser/Browser/start-tor-browser
, найдите и измените строку с паролем, заменив
secret
на заданный вами пароль Tor Control:
setControlPortPasswd ${TOR_CONTROL_PASSWD:='"secret"'}
Важно
Не трогайте кавычки вокруг пароля, они должны быть именно в таком виде — двойные кавычки внутри одинарных кавычек.
Перезапустите Tor Browser. Если всё хорошо, на странице запуска должно быть сообщение о том, что браузер не контролирует соединение Tor, а в журнале службы
tor.service
должна появиться строка
New control connection opened from
адрес
.
Запуск Tor в chroot
Примечание
Подключение по telnet на локальный ControlPort окажется невозможным, если Tor был запущен в chroot.
Для повышения безопасности вы можете захотеть запускать Tor в
chroot
. Следующий скрипт создаст подходящее окружение chroot в каталоге
/opt/torchroot
:
~/torchroot-setup.sh
#!/bin/sh
export TORCHROOT=/opt/torchroot

mkdir -p $TORCHROOT
mkdir -p $TORCHROOT/etc/tor
mkdir -p $TORCHROOT/dev
mkdir -p $TORCHROOT/usr/bin
mkdir -p $TORCHROOT/usr/lib
mkdir -p $TORCHROOT/usr/share/tor
mkdir -p $TORCHROOT/var/lib
mkdir -p $TORCHROOT/var/log/tor/

ln -s /usr/lib  $TORCHROOT/lib
cp /etc/hosts           $TORCHROOT/etc/
cp /etc/host.conf       $TORCHROOT/etc/
cp /etc/localtime       $TORCHROOT/etc/
cp /etc/nsswitch.conf   $TORCHROOT/etc/
cp /etc/resolv.conf     $TORCHROOT/etc/

cp /usr/bin/tor         $TORCHROOT/usr/bin/
cp /usr/share/tor/geoip* $TORCHROOT/usr/share/tor/
cp /lib/libnss* /lib/libnsl* /lib/ld-linux-*.so* /lib/libresolv* /lib/libgcc_s.so* $TORCHROOT/usr/lib/
cp $(ldd /usr/bin/tor | awk '{print $3}'|grep --color=never "^/") $TORCHROOT/usr/lib/

### /var/log/tor/notices.log необходим только в том случае, если вы запускаете hidden service
# cp /var/log/tor/notices.log $TORCHROOT/var/log/tor/

cp -r /var/lib/tor      $TORCHROOT/var/lib/
cp /etc/tor/torrc       $TORCHROOT/etc/tor/

chown tor:tor $TORCHROOT
chmod 700 $TORCHROOT
chown -R tor:tor $TORCHROOT/var/lib/tor
chown -R tor:tor $TORCHROOT/var/log/tor

sh -c "grep --color=never ^tor /etc/passwd > $TORCHROOT/etc/passwd"
sh -c "grep --color=never ^tor /etc/group > $TORCHROOT/etc/group"

mknod -m 644 $TORCHROOT/dev/random c 1 8
mknod -m 644 $TORCHROOT/dev/urandom c 1 9
mknod -m 666 $TORCHROOT/dev/null c 1 3

if [ "$(uname -m)" = "x86_64" ]; then
  cp /usr/lib/ld-linux-x86-64.so* $TORCHROOT/usr/lib/.
  ln -sr /usr/lib64 $TORCHROOT/lib64
  ln -s $TORCHROOT/usr/lib ${TORCHROOT}/usr/lib64
fi
После выполнения скрипта от пользователя root вы можете запустить Tor в окружении chroot командой:
# chroot --userspec=tor:tor /opt/torchroot /usr/bin/tor
Или, если вы запускаете Tor через systemd, вы можете создать
drop-in файл
для службы
tor.service
:
/etc/systemd/system/tor.service.d/chroot.conf
[Service]
User=root
ExecStart=
ExecStart=/usr/bin/sh -c "chroot --userspec=tor:tor /opt/torchroot /usr/bin/tor -f /etc/tor/torrc"
KillSignal=SIGINT
Запуск Tor в контейнере systemd-nspawn
В этом примере мы создадим контейнер
systemd-nspawn
с виртуальным сетевым macvlan-интерфейсом. Контейнер будет называться
tor-exit
.
В статьях
systemd-nspawn
и
systemd-networkd
можно найти полную информацию о работе и настройке соответствующих программ.
Установка и настройка хоста
Контейнер будет размещаться в каталоге
/srv/container
:
# mkdir -p /srv/container/tor-exit
Установите
пакет
arch-install-scripts
, чтобы получить доступ к утилите
pacstrap
.
С помощью
pacstrap
установите в каталог контейнера пакеты
base
,
tor
и
nyx
(подробнее см. статью об
установке Arch Linux в контейнер
):
# pacstrap -K -сi /srv/container/tor-exit base tor nyx
Если зарегистрировать контейнер на хосте, то в дальнейшем с ним можно будет взаимодействовать извне с помощью команды
machinectl
. Для этого необходимо создать символическую ссылку на контейнер в каталоге
/var/lib/container/
. Создайте каталог, если он отсутствует:
# mkdir -p /var/lib/container
и поместите в него символическую ссылку на контейнер (см.
systemd-nspawn#Management
):
# ln -s /srv/container/tor-exit /var/lib/container/tor-exit
Виртуальный сетевой интерфейс
Создайте drop-in-файл настроек контейнера:
/etc/systemd/nspawn/tor-exit.nspawn
[Service]
MACVLAN=
интерфейс
[Exec]
LimitNOFILE=65536
Опция
MACVLAN=
интерфейс
создаёт macvlan-интерфейс с названием
mv-
интерфейс
и привязывает его к контейнеру, подробнее см.
systemd-nspawn#Use a "macvlan" or "ipvlan" interface
. Это полезно с точки зрения безопасности, поскольку контейнеру можно назначить приватный IP-адрес, а настоящий адрес машины из контейнера виден не будет. Так можно, например, скрыть DNS-запросы.
Опция
LimitNOFILE=65536
позволит открывать большее
#Количество соединений
одновременно.
Наконец, сохраните сетевые настройки
systemd-networkd
в файле
/srv/container/tor-exit/etc/systemd/network/mv-
интерфейс
.network
.
Запуск и включение systemd-nspawn
Запустите/включите
службу
systemd-nspawn@tor-exit.service
.
Настройка контейнера
Чтобы войти в контейнер, выполните (см.
systemd-nspawn#machinectl
):
# machinectl login tor-exit
Запуск и включение systemd-networkd
Запустите/включите
службу
systemd-networkd.service
. Команда
networkctl
отобразит список сетевых интерфейсов контейнера, если
systemd-networkd
настроен корректно.
Настройка Tor
Смотрите раздел
#Запуск сервера Tor
.
Совет
Файлы контейнера удобнее редактировать с хоста вашим любимым редактором.
Веб-сёрфинг
Единственный способ оставаться анонимным при просмотре страниц в интернете — использовать
Tor Browser Bundle
, который использует пропатченную версию
Firefox
. Его можно установить с помощью пакета
torbrowser-launcher
.
Также можно использовать Tor с обычными браузерами: в разделах
#Firefox
и
#Chromium
объясняется, как настроить их на работу через Tor. Обратите внимание, что даже в режиме приватного просмотра это не гарантирует анонимности:
отпечатки
[
устаревшая ссылка
2025-11-17 ⓘ]
, плагины, DNS-утечки и прочие недочёты могут привести к раскрытию вашего IP-адреса или личности
[2]
.
Firefox
Настройки > Основные > Настройки сети > Настроить...
, выберите пункт
Ручная настройка прокси
, после чего укажите узел SOCKS
localhost
на порте
9050
(SOCKS v5). Чтобы перенаправить все DNS-запросы в сеть Tor, выберите пункт
Отправлять DNS-запросы через прокси при использовании SOCKS 5
.
Chromium
Запустите Chromium с такими параметрами:
$ chromium --proxy-server="socks5://
мой-прокси
:8080" --host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE
мой-прокси
"
Флаг
--proxy-server="socks5://
мой-прокси
:8080"
означает, что все
http://
и
https://
запросы будут посылаться через прокси-сервер
"
мой-прокси
:8080"
посредством протокола SOCKS пятой версии. Разрешение имён для этих запросов будет выполняться прокси-сервером, а не браузером локально.
Примечание
Проксирование
ftp://
через SOCKS-прокси на данный момент не реализовано
[3]
.
Флаг
--proxy-server
влияет только на загрузку URL-страниц. Однако в Chromium есть и другие компоненты, которые могут попытаться выполнить DNS-разрешение напрямую. Наиболее важный их этих компонентов —
DNS-prefetcher
. Если DNS-prefetcher не отключён, то браузер будет посылать DNS-запросы напрямую, минуя SOCKS5-сервер. Prefetcher и другие компоненты можно отключить, но такой подход неудобен и ненадёжен, поскольку придётся отслеживать каждый элемент Chromium, который может захотеть посылать DNS-запросы самостоятельно.
Для комплексного решения этой проблемы используется флаг
--host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE
мой-прокси
"
, который представляет собой ловушку для посылаемых через обычную сеть DNS-запросов. Каждое выполняемое локально разрешение DNS теперь будет привязано к (нерабочему) адресу
~NOTFOUND
(можно представить его как адрес
0.0.0.0
). Указание
"EXCLUDE"
создаёт исключение для прокси-сервера
"
мой-прокси
"
, потому что без этого Chromium не сможет выполнять разрешение адреса самого́ прокси-сервера SOCKS и все запросы будут завершаться неудачей с ответом
PROXY_CONNECTION_FAILED
.
Также, чтобы предотвратить
утечки WebRTC
, можно установить расширение браузера
WebRTC Network Limiter
.
Примечание
Для приложений
Electron
флаг
--host-resolver-rules
указывать не нужно.
Отладка
В случае возникновения каких-либо проблем в первую очередь нужно проверить настройки прокси, введя адрес
chrome://net-internals/#proxy
.
Затем нужно изучить вкладку настроек DNS, чтобы убедиться, что Chromium не выполняет локальное разрешение DNS:
chrome://net-internals/#dns
.
Расширения
Как и для Firefox, вы можете установить удобный переключатель прокси вроде
Proxy SwitchySharp
.
После установки перейдите на его панель настроек. Под вкладкой
Proxy Profiles
добавьте новый профиль
Tor
, уберите отметку с опции
Use the same proxy server for all protocols
, затем добавьте
localhost
в качестве хоста SOCKS, порт
9050
, и выберите
SOCKS v5
.
При желании можно включить опцию быстрого переключения на вкладке настроек
General
. Тогда переключаться между нормальной навигацией и сетью Tor можно будет одним кликом на иконке Proxy SwitchySharp.
Electron
Смотрите
#Chromium
.
Luakit
Примечание
Вас будет легко опознать по редкой строке
user-agent
; также могут возникнуть проблемы с Flash, JavaScript и т.д.
Выполните:
$ torsocks luakit
HTTP-прокси
В Tor можно работать через встроенный туннелированный HTTP-прокси или сторонний прокси вроде
Privoxy
. Тем не менее, разработчики Tor рекомендуют использовать библиотеку SOCKS5, если ваш браузер её поддерживает.
Tor
Добавьте следующую строку в файл
torrc
, чтобы запустить HTTP-прокси на порте
8118
на
localhost
:
HTTPTunnelPort 127.0.0.1:8118
Подробнее смотрите
руководство Tor
.
Firefox
Расширение браузера
FoxyProxy
позволяет назначить несколько прокси-серверов как для всех HTTP-запросов в целом, так и для отдельных сайтов. После установки расширения перезапустите браузер и вручную настройте использование прокси по адресу
localhost:8118
, где должен работать
Privoxy
. Эти настройки находятся в меню
Add > Standard proxy type
. Выберите метку прокси-сервера (например,
Tor
) и введите хост и порт в поля
HTTP Proxy
и
SSL Proxy
. Для проверки правильности работы Tor посетите страницу
Tor Check
.
Privoxy
Privoxy также можно использовать с другими приложениями, например мессенджерами (
Jabber
,
IRC
). Приложения, которые поддерживают HTTP-прокси, можно подключить к Privoxy (то есть на адрес
127.0.0.1:8118
). Чтобы использовать SOCKS-прокси напрямую, направьте ваше приложение в Tor (адрес по умолчанию
127.0.0.1:9050
). Следует иметь в виду, что приложение может самостоятельно выполнять DNS-разрешение, что приведёт к утечке информации. В этом случае можно попробовать использовать SOCKS4A (например, с Privoxy).
Обмен мгновенными сообщениями
Для использования мессенджера через Tor не нужен HTTP-прокси вроде
Privoxy
. Мы используем напрямую демон Tor, по умолчанию прослушивающий порт 9050.
Pidgin
Pidgin
можно настроить на работу через Tor глобально или для отдельных аккаунтов. Для глобальных настроек используйте пункт меню
Средства -> Настройки -> Прокси
. Чтобы настроить использование Tor для одного аккаунта, перейдите в
Уч.записи > Управление учётными записями
, выберите нужный аккаунт, нажмите
Изменить
, после чего на вкладке
Прокси
укажите следующие параметры:
Тип прокси: SOCKS 5
Узел: 127.0.0.1
Порт: 9050
Irssi
This article or section is out of date.
Reason:
cap_sasl.pl
сломался с обновлением
perl
5.20; кроме того, SSL не работает с
torsocks
. (Discuss in
Talk:Tor (Русский)
)
Libera Chat рекомендует подключаться напрямую к
.onion
. Для этого также потребуется SASL для идентификации NickServ в процессе соединения; подробности можно найти в статье
Irssi#Authenticating with SASL
. Запустите irssi:
$ torsocks irssi
Задайте ваши идентификационные данные для сервиса
nickserv
, которые будут считываться при создании соединения. Поддерживаются механизмы аутентификации ECDSA-NIST256P-CHALLENGE (см.
ecdsatool
) и PLAIN. DH-BLOWFISH больше
не поддерживается
.
/sasl set
сеть
имя-пользователя
пароль
механизм
Отключите CTCP и DCC и задайте фальшивое имя хоста, чтобы скрыть настоящее:
[4]
/ignore * CTCPS
/ignore * DCC
/set hostname
фальшивый_хост
Подключитесь к Libera Chat:
/connect -network
network
libera75jm6of4wxpxt4aynol3xjmbtxgfyjpu34ss4d7r7q2v5zrpyd.onion
Дополнительную информацию можно найти в статьях
Accessing Libera.Chat Via Tor
,
Using SASL
и
IRC/SILC Wiki article
.
Pacman
Через сеть Tor можно выполнять загрузочные операции
pacman
— синхронизировать базы данных репозиториев, скачивать пакеты и открытые ключи.
Преимущества:
Если кто-то отслеживает интернет-соединение вашей машины, то он не увидит выполняемые обновления. Соответственно, нельзя будет определить, какие пакеты установлены, какие из них устарели и как часто выполняется обновление. Но следует учитывать, что атакующий всё ещё может опознать используемое программное обеспечение и узнать его версию другими способами. Например, проанализировав исходящие пакеты вашего HTTP-сервера и просканировав его порт, можно будет определить наличие работающего HTTP-сервера и его версию.
Если зеркало для скачивания находится не в onion-домене, то скомпрометированный выходной узел может обнаружить попытку обновления и решить атаковать вашу машину. Однако при этом атакующий скорее всего не будет знать, какую именно машину он атакует.
Атакующий может попытаться убедить вашу машину, что доступных обновлений нет, чтобы не позволить применить обновления безопасности. При обновлении через Tor сделать это будет крайне непросто, поскольку в анонимной сети почти невозможно определить конкретно вашу машину.
Недостатки:
Более длительное время обновления из-за высокого значения задержки и низкой пропускной способности сети Tor. Это может быть значительным недостатком с точки зрения безопасности, если обновление нужно выполнить как можно быстрее, особенно на машинах, подключённых напрямую к интернету. Например, если уязвимость серьёзная и её легко обнаружить и использовать, то злоумышленники часто стараются атаковать как можно больше уязвимых систем максимально быстро, чтобы успеть до применения обновлений безопасности.
Надёжность обновлений через Tor:
Не нужно полагаться на работоспособность DNS.
Вы зависите от состояния сети Tor и особенно выходных узлов (например, они могут блокировать обновления).
Вы зависите от правильной работы демона Tor. Например, если на диске закончилось свободное место, то демон Tor может отказаться работать. «Reserved blocks gid» в ext4, квоты на использование дискового пространства и некоторые другие меры помогут решить эту проблему.
Если вы находитесь в стране, где Tor блокируется или в которой почти или совсем нет пользователей Tor, то вам придётся использовать мост (Tor bridge).
Замечание по поводу GPG: по умолчанию pacman считает надёжными только те ключи, которые подписаны либо лично вами (делается командой
pacman-key --lsign-key
), либо тремя из пяти мастер-ключей Arch. Если вредоносный выходной узел попробует заменить пакет на другой, подписанный его ключом, pacman не позволит пользователю установить такой пакет.
Примечание
Для других дистрибутивов на основе Arch, а также неофициальных репозиториев и AUR это утверждение может оказаться неверным.
/etc/pacman.conf
...
XferCommand = /usr/bin/curl --socks5-hostname localhost:9050 --location --continue-at - --fail --output %o %u
...
Примечание
Во время обработки подписей баз данных иногда можно получить ошибку 404. Это зависит от
настроек pacman
и как правило безвредно.
Java
Чтобы заставить приложение Java
проксировать
все соединения через Tor, задайте следующую опцию командной строки:
export JAVA_OPTIONS="$JAVA_OPTIONS -DsocksProxyHost=localhost -DsocksProxyPort=9050"
Запуск сервера Tor
Сеть Tor существует благодаря пользователям, которые создают и обслуживают узлы сети, предоставляют свою пропускную способность и запускают onion-сервисы. Есть несколько способов внести свой вклад в работу сети.
Мост
Мост Tor (Tor bridge) — передающий узел сети, адрес которого не содержится в открытом каталоге узлов Tor. Благодаря этому мосты могут остаться доступны для желающих подключиться к Tor, даже если правительство или интернет-провайдер блокирует все публичные узлы Tor. На странице
https://bridges.torproject.org/
объясняется, как узнать адреса мостов.
Для запуска моста достаточно следующих четырёх строк в файле
torrc
:
SOCKSPort 0
ORPort 443
BridgeRelay 1
ExitRelay 0
Смотрите также
Running a Tor Bridge
и
пример запуска моста с obfs4
.
Передающий узел
В режиме передатчика (relay) ваша машина будет работать в качестве входного (entry node) или промежуточного (forwarding relay) узла сети. В отличие от моста, адрес передающей машины будет опубликован в каталоге узлов Tor. Задача передающего узла заключается в пересылке пакетов к другим передатчикам или выходным узлам, но не напрямую в интернет.
Файл настроек передающего узла с пропускной способностью не менее 20 Кбит/с должен выглядеть так:
Nickname
название-узла-Tor
ORPort 9001                    # Этот TCP-порт должен быть открыт или проброшен в вашем сетевом экране
BandwidthRate 20 KB            # Ограничить скорость передачи величиной 20 Kбит/с
BandwidthBurst 50 KB           # Но разрешить пиковые значения до 50 Kбит/с
ExitRelay 0                    # Запретить отправку пакетов в обычную сеть
Выходной узел
Чтобы запрос из сети Tor попал в обычный интернет, необходим выходной узел (exit relay). Важно понимать, что кто бы ни посылал запрос, для получателя всё будет выглядеть так, будто отправителем является именно выходной узел. Поэтому запуск выходного узла считается наименее безопасным в плане возможных проблем с законом. Если вы размышляете над его запуском, то стоит изучить
советы и рекомендации
от создателей проекта.
Настройка
В файле
torrc
можно настроить перечень разрешённых на выходном узле сервисов.
Сделать узел выходным:
ExitRelay 1
Разрешить весь трафик:
ExitPolicy accept *:*
Разрешить только соединения через IRC-порты 6660-6667 и запретить всё остальное:
ExitPolicy accept *:6660-6667,reject *:*
По умолчанию Tor настроен блокировать определённые порты. В файле
torrc
можно внести корректировки в этот список. Пример разрешения порта NNTP:
ExitPolicy accept *:119
Пример настройки 100-мегабитного выходного узла
Если у вас скоростной выходной узел (более 100 Мбит/с) с
ORPort 443
и
DirPort 80
, вам могут пригодиться следующие рекомендации по настройке Tor вместе с межсетевым экраном
iptables
и DNS-кэшем
pdnsd
. Настоятельно рекомендуется
предварительно
изучить статью
Пост-установка и советы по обслуживанию
.
Примечание
В разделе
#Запуск Tor в контейнере systemd-nspawn
описана установка Tor в контейнер
systemd-nspawn
.
Tor
Количество соединений
По умолчанию Tor может обрабатывать до 8192 соединений одновременно. Можно увеличить это значение
[5]
:
/etc/systemd/system/tor.service.d/increase-file-limits.conf
[Service]
LimitNOFILE=65536
Чтобы увеличение лимита сработало, вам также может понадобиться добавить следующие строки:
/etc/security/limits.conf
...
tor     soft    nofile    65536
tor     hard    nofile    65536
@tor    soft    nofile    65536
@tor    hard    nofile    65536
Чтобы узнать текущее значение
nofile
, выполните команду
ulimit -Hn
от имени пользователя
tor
.
Привилегированные порты
Чтобы разрешить Tor использовать привилегированные порты, службу
tor.service
нужно запускать от root. Не забудьте также добавить параметр
User tor
в файле
/etc/tor/torrc
, чтобы понизить привилегии после запуска.
/etc/systemd/system/tor.service.d/start-as-root.conf
[Service]
User=root
Конфигурация
Образец файла настроек выходного узла Tor:
/etc/tor/torrc
SOCKSPort 0                                       ## Только узел, без запуска локального прокси-сервера SOCKS

Log notice stdout                                 ## Стандартное поведение Tor

ControlPort 9051                                  ## Для соединения nyx
CookieAuthentication 1                            ## Для соединения nyx

ORPort 443                                        ## Служба tor.service должна быть запущена от root

Address $IP                                       ## IP-адрес или FQDN
Nickname $NICKNAME                                ## Название узла, отображаемое в
Tor Relay Search
RelayBandwidthRate 500 Mbits                      ## bytes/KBytes/MBytes/GBytes/KBits/MBits/GBits
RelayBandwidthBurst 1000 MBits                    ## bytes/KBytes/MBytes/GBytes/KBits/MBits/GBits

ContactInfo $E-MAIL                               ##
Tor Relay good practices
предлагает указать email

DirPort 80                                        ## Служба tor.service должна быть запущена от root
DirPortFrontPage /etc/tor/tor-exit-notice.html    ##
Оригинал
MyFamily $($KEYID),$($KEYID)...                   ## Не забудьте знак $ перед keyid ;)

ExitPolicy reject XXX.XXX.XXX.XXX/XX:*            ## Заблокировать отдельный домен или IP-адрес в дополнение к стандартной политике

User tor                                          ## Изменяет пользователя на tor после запуска от root

DisableDebuggerAttachment 0                       ## Для соединения nyx

### Производительность ###
AvoidDiskWrites 1                                 ## Уменьшение износа SSD
DisableAllSwap 1                                  ## Служба tor.service должна быть запущена от root
HardwareAccel 1                                   ## Использование аппаратной поддержки OpenSSL
NumCPUs 2                                         ## Запуск в двух потоках
Информацию об использованных здесь опциях можно найти в
tor(1)
.
Tor по умолчанию запускает SOCKS-прокси на порте 9050 — даже если вы не говорили ему этого делать. Укажите параметр
SOCKSPort 0
, если планируете использовать Tor только в качестве передатчика без запуска работающих через прокси-сервер локальных приложений.
Log notice stdout
перенаправляет логи в поток стандартного вывода stdout, что тоже является настройкой Tor по умолчанию.
ControlPort 9051
,
CookieAuthentication 1
и
DisableDebuggerAttachment 0
позволят использовать
nyx
для мониторинга.
ORPort 443
и
DirPort 80
говорит Tor прослушивать порты 443 и 80.
DirPortFrontPage
выводит
страницу приветствия
при установлении соединения на порте 80.
ExitPolicy reject XXX.XXX.XXX.XXX/XX:*
позволяет заблокировать соединения к определённым адресам; укажите здесь внешний IP-адрес и маску подсети вашего выходного узла (обычно можно узнать командой
ip addr
) для запрета подключения к нему и к соседним хостам через этот выходной узел, чтобы злоумышленник не смог воспользоваться ими для обхода правил сетевого экрана.
AvoidDiskWrites 1
уменьшает количество записей на диск и износ SSD.
DisableAllSwap 1
попытается заблокировать все текущие и будущие страницы памяти, чтобы их нельзя было выгрузить в подкачку.
Если команда
grep aes /proc/cpuinfo
возвращает какой-то результат, то ваш CPU поддерживает AES-инструкции. Если соответствующий модуль был загружен (
lsmod | grep aes
), то параметр
HardwareAccel 1
включит встроенное аппаратное ускорение шифрования, подробнее:
https://www.torservers.net/wiki/setup/server#aes-ni_crypto_acceleration
ORPort 443
,
DirPort 80
и
DisableAllSwap 1
требуют запуска службы Tor от root, как описано в разделе
#Привилегированные порты
.
User tor
понижает привилегии после запуска службы от имени root.
nyx
Если в файле
/etc/tor/torrc
указаны параметры
ControlPort 9051
и
CookieAuthentication 1
, то можно запустить
nyx
от имени пользователя
tor
:
[tor]$ nyx
Чтобы просматривать список соединений Tor с помощью
nyx
, нужно также указать параметр
DisableDebuggerAttachment 0
.
Чтобы запустить
nyx
от другого пользователя (не
tor
), изучите раздел
#Cookie-файл Tor Control
.
iptables
Установите и изучите работу с
iptables
. Вместо использования
экрана с контекстной фильтрацией
, которому на выходном узле пришлось бы отслеживать тысячи соединений, мы настроим межсетевой экран без отслеживания контекста.
/etc/iptables/iptables.rules
*raw
-A PREROUTING -j NOTRACK
-A OUTPUT -j NOTRACK
COMMIT

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p tcp ! --syn -j ACCEPT
-A INPUT -p udp -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -i lo -j ACCEPT
COMMIT
-A PREROUTING -j NOTRACK
и
-A OUTPUT -j NOTRACK
отключит отслеживание соединений в таблице
raw
.
:INPUT DROP [0:0]
— цель (target) цепочки
INPUT
по умолчанию; отбрасывает входящий трафик, который не был отдельно разрешён опцией
ACCEPT
.
:FORWARD DROP [0:0]
— цель цепочки
FORWARD
по умолчанию; используется для обычных маршрутизаторов, но не подходит для «луковых».
:OUTPUT ACCEPT [0:0]
— цель цепочки
OUTPUT
по умолчанию; разрешает все исходящие соединения.
-A INPUT -p tcp ! --syn -j ACCEPT
разрешает уже установленные по перечисленным ниже правилам входящие TCP соединения, а также TCP соединения от выходного узла.
-A INPUT -p udp -j ACCEPT
разрешает все входящие UDP соединения, т.к. мы не используем отслеживание соединений (connection tracking).
-A INPUT -p icmp -j ACCEPT
разрешает
ICMP
-пакеты.
-A INPUT -p tcp --dport 443 -j ACCEPT
разрешает входящие соединения на
ORPort
.
-A INPUT -p tcp --dport 80 -j ACCEPT
разрешает входящие соединения на
DirPort
.
-A INPUT -i lo -j ACCEPT
разрешает входящие соединения на петлевой интерфейс.
pdnsd
Важно
Предполагается, что у вас доверенный (не цензурируемый) DNS-сервер.
Вы можете использовать
pdnsd
для локального кэширования DNS-запросов, тогда выходной узел сможет быстрее выполнять разрешение и посылать меньшее количество запросов внешнему DNS-серверу.
/etc/pdnsd.conf
...
perm_cache=102400                       ## (Значение по умолчанию)*100 = 1 Мбайт * 100 = 100 Мбайт
...
server {
    label= "resolvconf";
    file = "/etc/pdnsd-resolv.conf";    ## Желательно не использовать файл /etc/resolv.conf
    timeout=4;                          ## Период ожидания ответа сервера; может быть значительно меньше, чем глобальное время ожидания
    uptest=query;                       ## Проверять доступность сервера, посылая пустые DNS-запросы
    query_test_name=".";                ## Используется, если удалённый сервер игнорирует пустые запросы
    interval=10m;                       ## Выполнять тестирование каждые 10 минут
    purge_cache=off;                    ## Игнорировать параметр TTL
    edns_query=yes;                     ## Использовать EDNS для исходящих запросов, чтобы разрешить UDP-сообщения длиннее 512 байт; может вызвать проблемы на некоторых устаревших системах
    preset=off;                         ## Перед проверкой состояния сервера предполагать, что он выключен
 }
...
Такая настройка позволит кэшировать локально до 100 Мбайт DNS-запросов.
Uncensored DNS
Если ваш обычный DNS-сервер каким-то образом цензурируется или работает нестабильно, вы можете выбрать
альтернативный DNS-сервер
; добавьте нужный в отдельный раздел server в файле
/etc/pdnsd.conf
(смотрите
Pdnsd#DNS servers
).
Проверка работоспособности узла
Сначала проверьте, запустился ли
tor.service
и нет ли в его
журнале
ошибок.
Если ошибок нет, можно запустить
nyx
, чтобы убедиться, что узел устанавливает соединения. Не беспокойтесь, если поначалу ваш
новый узел
работает медленно; это нормально. Примерно через 3 часа узел должен быть опубликован и стать доступен для поиска через
Relay Search
.
TorDNS
Можно посылать DNS-запросы с помощью команды
tor-resolve
:
$ tor-resolve archlinux.org
66.211.214.131
Начиная с версий 0.2.x в Tor появился механизм перенаправления DNS-запросов. Чтобы его включить, добавьте строки ниже в файл настроек и
перезапустите
демон Tor:
/etc/tor/torrc
DNSPort 9053
AutomapHostsOnResolve 1
AutomapHostsSuffixes .exit,.onion
Теперь Tor будет принимать запросы на порт 9053 как обычный DNS-сервер и выполнять разрешение доменов через сеть Tor.
Ограничение TorDNS в том, что через него можно выполнить разрешение только A, AAAA и PTR записей; MX и NS запросы будут проигнорированы. Дополнительную информацию можно найти в
документации TorDNS
для Debian.
Перенаправление всех DNS-запросов через TorDNS
Вашу систему можно настроить посылать
все
запросы A, AAAA и PTR записей через TorDNS вне зависимости от того, используется ли Tor для соединения с конечной целью. Для этого настройте систему использовать адрес
127.0.0.1
в качестве DNS-сервера и отредактируйте строку
DNSPort
в файле
/etc/tor/torrc
:
DNSPort 53
Альтернативное решение — использовать локальный кэширующий DNS-сервер, вроде
dnsmasq
или
pdnsd
. Кэш DNS позволит несколько компенсировать низкую скорость TorDNS по сравнению с обычными DNS-серверами. Далее приведены инструкции по настройке
dnsmasq
. Имейте в виду, что если dnsmasq запускается через
NetworkManager
, то его настройки находятся в другом месте (смотрите раздел
NetworkManager#dnsmasq
).
Укажите Tor прослушивать DNS-запросы на порте 9053 и
установите
пакет
dnsmasq
.
Задайте следующую конфигурацию dnsmasq:
/etc/dnsmasq.conf
no-resolv
port=53
server=127.0.0.1#9053
listen-address=127.0.0.1
Теперь dnsmasq будет принимать локальные запросы и использовать TorDNS в качестве посредника. Отредактируйте файл
/etc/resolv.conf
, чтобы система опрашивала только сервер dnsmasq:
/etc/resolv.conf
nameserver 127.0.0.1
Запустите
демон dnsmasq.
Наконец, если вы используете
dhcpcd
, укажите ему не изменять настройки в файле
resolv.conf
:
/etc/dhcpcd.conf
nohook resolv.conf
Если строка
nohook
уже есть, то добавьте в неё
resolv.conf
через запятую.
Torsocks
torsocks
позволяет заставить приложение работать через сеть Tor без необходимости корректировать настройки самого́ приложения. Выдержка из
torsocks(1)
:
torsocks — обёртка между библиотекой torsocks и приложением с целью сделать каждое интернет-соединение проходящим через сеть Tor.
Имейте в виду, что эта обёртка намеренно запрещает некоторые системные вызовы, поэтому некоторые приложения не смогут полноценно работать с ней. Смотрите
torsocks-and-unsupported-syscalls
.
Примеры использования:
$ torsocks elinks checkip.dyndns.org
$ torsocks wget -qO-
https://check.torproject.org/
| grep -i congratulations
«Торификация»
В некоторых случаях более безопасно (и часто проще) выполнить сквозную «торификацию» всей системы вместо настройки отдельных приложений на использование SOCKS-порта Tor и отслеживания утечек DNS. Для полной торификации сетевой экран
iptables
настраивают на пересылку всех исходящих пакетов (кроме собственно трафика Tor) на
TransPort
. В этом случае приложения не нужно настраивать для работы через Tor, хотя работа через
SOCKSPort
всё ещё возможна. Торификация также работает и для DNS (
DNSPort
), но при этом нужно учитывать, что Tor поддерживает только протокол TCP, и, за исключением DNS-запросов, UDP-пакеты через Tor посылаться не могут. Следовательно, они должны блокироваться для предотвращения утечек.
Торификация через iptables даёт сравнительно надёжную защиту, но она не является полноценной заменой приложениям виртуализированной торификации вроде Whonix или TorVM
[6]
. Торификация также не позволяет скрыть отпечаток браузера (fingerprint), поэтому рекомендуется воспользоваться «амнезийным» решением вроде
Tails
. Приложения всё ещё могут узнать имя хоста, MAC-адрес, серийный номер, часовой пояс вашего компьютера и другие данные, а с root-привилегиями смогут даже отключить сетевой экран целиком. Другими словами, полная торификация через iptables защищает от случайных соединений и DNS-утечек неправильно настроенного программного обеспечения, но не от вредоносных программ или ПО с серьёзными уязвимостями.
При работе через
прозрачный прокси-сервер
появляется вероятность случайно запустить сеанс Tor дважды — на клиенте и на прокси, и таким образом получить «Tor поверх Tor». Такая схема работы обладает непредсказуемым поведением и потенциально небезопасна. В теории, трафик пользователя будет выполнять шесть прыжков вместо обычных трёх, но нет никакой гарантии, что дополнительные прыжки не совпадут с тремя изначальными — например, в другом порядке. Разработчики Tor считают, что это небезопасно
[7]
[
устаревшая ссылка
2025-11-17 ⓘ]
[8]
.
Ниже приведён файл настроек для утилит
iptables-restore
и
ip6tables-restore
(используются
службами
iptables.service
и
ip6tables.service
соответственно).
Примечание
Правила в таблице NAT принудительно перенаправляют исходящие соединения на TransPort или DNSPort, и блокируют всё, что торифицировать не удаётся.
Флагами
--ipv6
и
--ipv4
задаются правила для конкретных версий протокола
IP
. Таким образом, утилиты
iptables-restore
и
ip6tables-restore
могут использовать один и тот же файл настроек.
В случае явного указания флага
--ipv6
или
--ipv4
утилита
ip*tables-restore
будет игнорировать правило, если оно установлено для другой версии протокола.
ip6tables
не поддерживает флаг
--reject-with
.
Убедитесь, что в файле
torrc
есть следующие строки:
SOCKSPort 9050
DNSPort 5353
TransPort 9040
Подробнее смотрите руководство
iptables(8)
.
Примечание
Если вы получили ошибку
iptables-restore: unable to initialize table 'nat'
, то нужно загрузить некоторые модули ядра:
# modprobe ip_tables iptable_nat ip_conntrack iptable-filter ipt_state
/etc/iptables/iptables.rules
*nat
:PREROUTING ACCEPT [6:2126]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [17:6239]
:POSTROUTING ACCEPT [6:408]

-A PREROUTING ! -i lo -p udp -m udp --dport 53 -j REDIRECT --to-ports 5353
-A PREROUTING ! -i lo -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040
-A OUTPUT -o lo -j RETURN
--ipv4 -A OUTPUT -d 192.168.0.0/16 -j RETURN
-A OUTPUT -m owner --uid-owner "tor" -j RETURN
-A OUTPUT -p udp -m udp --dport 53 -j REDIRECT --to-ports 5353
-A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040
COMMIT

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
--ipv4 -A INPUT -p tcp -j REJECT --reject-with tcp-reset
--ipv4 -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
--ipv4 -A INPUT -j REJECT --reject-with icmp-proto-unreachable
--ipv6 -A INPUT -j REJECT
--ipv4 -A OUTPUT -d 127.0.0.0/8 -j ACCEPT
--ipv4 -A OUTPUT -d 192.168.0.0/16 -j ACCEPT
--ipv6 -A OUTPUT -d ::1/8 -j ACCEPT
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -m owner --uid-owner "tor" -j ACCEPT
--ipv4 -A OUTPUT -j REJECT --reject-with icmp-port-unreachable
--ipv6 -A OUTPUT -j REJECT
COMMIT
Данный файл также подходит для утилиты
ip6tables-restore
. Создайте символическую ссылку на него:
# ln -s /etc/iptables/iptables.rules /etc/iptables/ip6tables.rules
Убедитесь, что Tor работает, и
запустите/включите
службы
iptables
и
ip6tables
.
При необходимости можно
добавить указания
Requires=iptables.service
и
Requires=ip6tables.service
к любому юниту systemd (например, к
экранному менеджеру
), чтобы выбранный процесс запускался строго после включения межсетевого экрана.
Советы и рекомендации
Привилегии
Если необходимо запустить Tor от обычного пользователя и при этом использовать порты меньше 1024, то можно воспользоваться функциональностью ядра для выдачи процессу
/usr/bin/tor
привилегии
прослушивать привилегированные порты:
# setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/tor
Примечание
После обновления пакета Tor эти разрешения сбросятся. Создайте
хук pacman
для автоматической выдачи привилегии после обновления.
Если вы используете службу systemd, то выдать Tor соответствующие разрешения можно также через настройки системного демона. Это удобно тем, что их не нужно восстанавливать после каждого обновления Tor:
/etc/systemd/system/tor.service.d/netcap.conf
[Service]
CapabilityBoundingSet=
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=
AmbientCapabilities=CAP_NET_BIND_SERVICE
Подробности можно найти на странице
superuser.com
.
Решение проблем
Проблема с параметром User
Если не удалось запустить демон Tor, выполните следующую команду от root (или воспользуйтесь утилитой
sudo
):
# tor
Ошибка
May 23 00:27:24.624 [warn] Error setting groups to gid 43: "Operation not permitted".
May 23 00:27:24.624 [warn] If you set the "User" option, you must start Tor as root.
May 23 00:27:24.624 [warn] Failed to parse/validate config: Problem with User value. See logs for details.
May 23 00:27:24.624 [err] Reading config failed--see warnings above.
означает проблемы с параметром User. Скорее всего, один или несколько файлов/каталогов в каталоге
/var/lib/tor
не принадлежат пользователю
tor
. Это можно определить с помощью команды
find
:
# find /var/lib/tor/ '!' -user tor
Для всех выведенных файлов и каталогов нужно поменять параметр владельца. Можно сделать это индивидуально для каждого файла
# chown tor:tor /var/lib/tor/
имя_файла
или отредактировать все сразу командой
# chown -R -v tor:tor /var/lib/tor
Теперь Tor должен запуститься без проблем.
Если запустить службу всё же не удаётся, запустите её от root. Измените имя пользователя в файле
/etc/tor/torrc
:
User tor
Затем
отредактируйте
юнит
tor.service
:
[Service]
User=root
Group=root
Type=simple
В дальнейшем процесс будет запускаться от пользователя
tor
, поэтому измените UID и GID файлов на
tor
и добавьте разрешение на запись:
# chown -R tor:tor /var/lib/tor/
# chmod -R 700 /var/lib/tor
Выполните
daemon-reload
для применения изменений и, наконец,
запустите
tor.service
.
Проблемы с прокси в Tor Browser
Tor Browser обычно нормально работает без дополнительных настроек. Если установленный/настроенный прокси выдаёт ошибку «Прокси-сервер отказывается принимать соединения» при попытке открытия любого сайта, попробуйте сбросить настройки, переместив или удалив каталог
~/.local/share/torbrowser/
.
Пустой чёрный экран в tor-browser
При работе с
AppArmor
для доступа к ресурсам необходимо внести изменения в профиль Tor Browser
[9]
,
[10]
:
/etc/apparmor.d/local/torbrowser.Browser.firefox
owner /{dev,run}/shm/org.mozilla.*.* rw,
Смотрите также
Как настроить свой onion-сервис
Использование подключаемых транспортов для обхода блокировки Tor
Tor Relay Operator best practices
Старая вики