Авторизация клиента — это способ сделать Onion-ресурс приватным и аутентифицированным.
Он требует, чтобы клиенты Tor предоставляли учетные данные для аутентификации для подключения к Onion-ресурсу.
Для Onion-ресурсов v3 этот метод работает с парой ключей (публичный и закрытый).
На стороне ресурса сконфигурирован открытый ключ, и клиент может получить доступ к ресурсу только при наличии закрытого ключа.
Примечание: С момента, как вы настроили авторизацию клиента, никто не сможет получить к ресурсу доступ без закрытого ключа.
Если авторизация не настроена, onion-ресурс доступен всем по onion-адресу.
Настройка Onion-ресурса v3
На стороне ресурса
Для настройки авторизации клиента на стороне ресурса должен существовать каталог <HiddenServiceDir>/authorized_clients/
. Данный каталог создаётся автоматически в случае следования инструкциям, описанным в разделе Настроить свой Onion-ресурс.
Авторизация клиента будет включена для ресурса только в том случае, если tor успешно загрузит хотя бы один файл авторизации.
Далее необходимо создать ключи самостоятельно с помощью скрипта (например, этого, написанного на Bash, Rust или Python) или вручную.
Чтобы вручную сгенерировать ключи, вам нужно установить openssl
версии 1.1+ and basez
.
Шаг 1. Сгенерируйте ключ с помощью алгоритма x25519:
$ openssl genpkey -algorithm x25519 -out /tmp/k1.prv.pem
Если вы получили сообщение об ошибке – что-то пошло не так, и вы не сможете продолжить, пока не выясните, почему это не сработало.
Шаг 2. Отформатируйте ключи в base32:
Закрытый ключ
$ cat /tmp/k1.prv.pem | grep -v " PRIVATE KEY" | base64pem -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.prv.key
Открытый ключ
$ openssl pkey -in /tmp/k1.prv.pem -pubout | grep -v " PUBLIC KEY" | base64pem -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.pub.key
Шаг 3. Скопируйте открытый ключ:
$ cat /tmp/k1.pub.key
Шаг 4. Создайте файл авторизованного клиента:
Отформатируйте аутентификацию клиента и создайте новый файл в каталоге <HiddenServiceDir>/authorized_clients/
.
Каждый файл в этом каталоге должен иметь расширение (suffix) ".auth" (т.е. "alice.auth"; имя файла не имеет значения), а формат его содержимого должен быть следующим:
<auth-type>:<key-type>:<base32-encoded-public-key>
Поддерживаемые значения для <auth-type>
: "descriptor".
Поддерживаемые значения для <key-type>
: "x25519".
<base32-encoded-public-key>
является представлением base32 только необработанных байт ключей (32 байта для x25519).
Например, файл /var/lib/tor/hidden_service/authorized_clients/alice.auth
должен выглядеть следующим образом:
descriptor:x25519:N2NU7BSRL6YODZCYPN4CREB54TYLKGIE2KYOQWLFYC23ZJVCE5DQ
Каждый файл авторизации должен содержать одну строку (для каждого клиента с аутентификацией необходим отдельный файл). Любой искаженный файл будет проигнорирован.
Шаг 5. Перезапустите ресурс tor:
$ sudo systemctl reload tor
Если вы получили сообщение об ошибке – что-то пошло не так, и вы не сможете продолжить, пока не выясните, почему это не сработало.
Важно: Отозвать авторизацию клиента можно, удалив его файл ".auth" и выполнив последующий перезапуск процесса tor.
На стороне клиента
Чтобы получить доступ к Onion-ресурсу v3 с авторизацией клиента в качестве пользователя, убедитесь, что в вашем torrc задан параметр ClientOnionAuthDir
.
Например, добавьте эту строку в /etc/tor/torrc
:
ClientOnionAuthDir /var/lib/tor/onion_auth
Затем в каталоге <ClientOnionAuthDir>
, создайте файл с расширением .auth_private
для соответствующего этому ключу Onion-ресурса (т.е. 'bob_onion.auth_private').
Содержимое файла <ClientOnionAuthDir>/<user>.auth_private
должно выглядеть следующим образом:
<56-символьный-onion-адрес-без-части-.onion>:descriptor:x25519:<x25519 private key in base32>
Например:
rh5d6reakhpvuxe2t3next6um6iiq4jf43m7gmdrphfhopfpnoglzcyd:descriptor:x25519:ZDUVQQ7IKBXSGR2WWOBNM3VP5ELNOYSSINDK7CAUN2WD7A3EKZWQ
Если вы вручную сгенерировали пару ключей, следуя инструкциям на этой странице, вы можете скопировать и использовать закрытый ключ, созданный в Шаге 2.
Затем перезапустите tor
, и вы сможете подключиться к адресу Onion-ресурса.
Если вы генерируете закрытый ключ для onion-сайта, пользователю не обязательно редактировать torrc Tor Browser. Можно ввести закрытый ключ непосредственно в интерфейсе Tor Browser.
Дополнительные сведения об аутентификации клиента см. в Tor manual.