OffshoreVps
Приватность и право20 окт. 20268 мин чтенияАвтор: команда OffshoreVps

Размещаем сайт .onion: скрытый сервис Tor на VPS

Запустите сайт как onion-сервис Tor: установите Tor, привяжите Nginx к localhost, узнайте свой адрес .onion, добавьте авторизацию клиентов и избегайте утечек, которые вас выдают.

Onion-сервис Tor позволяет людям заходить на ваш сайт через сеть Tor, и ни одна из сторон не узнаёт IP-адрес другой. Сервер сам подключается к Tor, поэтому ему вообще не нужен открытый входящий порт. В этом руководстве мы настроим такой сервис на VPS с Ubuntu, где Nginx отдаёт небольшой сайт.

Окно терминала на VPS с командами для публикации onion-службы Tor, начиная с «sudo apt update»
Примерно такие команды вы будете выполнять на своём сервере в этом руководстве.

Что даёт onion-сервис

  • Адрес .onion, который выводится из ключа, поэтому он самодостаточен для аутентификации и не требует удостоверяющего центра.
  • Сквозное шифрование между посетителем и вашим сервером внутри Tor.
  • Не нужно раскрывать посетителям публичный IP-адрес вашего сервера.

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

Шаг 1: установите Tor и Nginx

sudo apt update
sudo apt install -y tor nginx
sudo systemctl enable --now tor

Шаг 2: привяжите Nginx только к localhost

Веб-сервер не должен отвечать на публичном интерфейсе, иначе IP в обычном вебе и onion-сайт можно будет связать. Измените конфигурацию сайта так, чтобы он слушал loopback.

server {
    listen 127.0.0.1:8080;
    server_name _;
    root /var/www/onion;
    index index.html;
    server_tokens off;
}
sudo mkdir -p /var/www/onion
echo '<h1>Hello from onion space</h1>' | sudo tee /var/www/onion/index.html
sudo nginx -t && sudo systemctl reload nginx
Шаги этого руководства по порядку: 1. Что даёт onion-служба; 2. установите Tor и Nginx; 3. привяжите Nginx только к localhost; 4. объявите скрытую службу; 5. необязательная авторизация клиентов; 6. закройте типичные утечки
Шаги этого руководства по порядку.

Шаг 3: объявите скрытый сервис

Добавьте эти строки в /etc/tor/torrc:

HiddenServiceDir /var/lib/tor/my_site/
HiddenServiceVersion 3
HiddenServicePort 80 127.0.0.1:8080
sudo systemctl restart tor
sudo cat /var/lib/tor/my_site/hostname

Последняя команда выведет ваш 56-символьный адрес .onion. Откройте его в Tor Browser для проверки. Сделайте резервную копию папки /var/lib/tor/my_site/: ключ внутри неё и есть ваш адрес, а его потеря означает новый адрес.

Шаг 4: необязательная авторизация клиентов

Для приватного сервиса добавьте ключ, который есть только у одобренных посетителей. Создайте файл /var/lib/tor/my_site/authorized_clients/alice.auth со строкой вида descriptor:x25519:PUBLIC_KEY, затем перезагрузите конфигурацию Tor. Посетители без подходящего закрытого ключа даже не увидят, что сервис существует.

Шаг 5: закройте типичные утечки

  • Никогда не подключайте к страницам ресурсы, шрифты или аналитику из обычного веба.
  • Сделайте страницы ошибок и заголовки нейтральными и оставьте server_tokens off.
  • Следите за точностью системных часов сервера: Tor это необходимо.
  • Закройте брандмауэром всё, кроме SSH: sudo ufw default deny incoming, так как Tor не нужен входящий порт.
  • Не запускайте сайт для обычного веба на том же хосте, если вы не разделили их полностью.

Прочитайте привычки OpSec для серверов до публикации чего-либо и используйте чек-лист усиления защиты на новом сервере.