Все системы работают штатно 6 офшорных регионов Оформление без KYC
Hands-on Полевое руководство

Размещение onion-сервиса Tor на офшорном VPS

Onion-сервис выворачивает привычную задачу хостинга наизнанку: вместо того чтобы опубликовать адрес, а затем потратить остаток руководства на то, чтобы скрыть, что стоит за ним, вы не публикуете вообще ничего. Сервер не открывает ни одного входящего порта, не анонсирует IP, не нуждается ни в домене, ни в сертификате — он сам выходит в сеть Tor, а клиенты добираются до сервиса через точку встречи, которую ни одна из сторон не может проследить до конкретной машины. Это более надёжный способ скрыть источник, чем любой reverse proxy, и он естественно сочетается с машиной, у которой изначально нет привязанной к ней личности. Это руководство разворачивает такой сервис от начала до конца на офшорном VPS: актуальный Tor, приложение, привязанное к localhost, трёхстрочный torrc и единственный файл, потеря или утечка которого решает всё.

Обновлено 2026-09-08 · 15 мин чтения · Операции с парком серверов
На этой странице
  1. Что такое onion-сервис на самом деле
  2. Когда это правильный инструмент — а когда нет
  3. Что раскрывает эта настройка — и кому
  4. Установите актуальный Tor, а не тот, что идёт с дистрибутивом
  5. Привяжите приложение к localhost и больше ни к чему
  6. Объявите сервис, затем прочитайте свой адрес
  7. Анонсируйте его, держите оба варианта и выберите запоминающийся адрес
  8. Поддерживайте это: производительность, мониторинг и гигиена ключа
  9. Шаг за шагом
SP·01

Что такое onion-сервис на самом деле

Onion-сервис Tor — это сервер, доступный только через сеть Tor, по адресу, который заканчивается на .onion и получен из криптографического ключа, а не выдан регистратором. Здесь нет ни DNS-запроса, ни публичного IP в каком-либо реестре, ни TLS-сертификата, который нужно покупать: 56-символьный адрес и есть публичный ключ сервиса, поэтому соединение аутентифицировано и зашифровано end-to-end уже по построению. Посетитель с Tor Browser вводит адрес; сеть устраивает зашифрованную точку встречи; обе стороны общаются, не узнавая местоположение друг друга. Никто посередине — ни релей, ни интернет-провайдер, ни хостинг-провайдер — не видит оба конца разговора одновременно.

Следствие, которое действительно важно для хостинга, структурное, а не косметическое. Обычный веб-сервер вынужден слушать публичный порт, а значит, его адрес обнаружим, сканируем и в конечном счёте связываем с тем, кто платит по счёту. Onion-сервис не слушает ничего, до чего может дотянуться интернет. Tor на машине устанавливает только исходящие соединения, строит цепочки до нескольких introduction points и ждёт. Сервис онлайн и обслуживает трафик, пока ss -tlnp не показывает ничего привязанного к маршрутизируемому адресу. Именно эта инверсия — вся причина запускать такой сервис.

SP·02

Когда это правильный инструмент — а когда нет

Прибегайте к onion-сервису, когда местоположение машины — часть того, что вы защищаете: сайт, который должен оставаться доступным, даже если его домен в клирнете изъят; ящик для приёма материалов от источников или исследователей; админ-панель, которую вы предпочли бы вообще не показывать сканирующему интернету; или сервис, чья аудитория и так пользуется Tor и ценит то, что вы не можете залогировать IP, который никогда не получаете. Это и честный ответ в случаях, когда «скрыть источник» — это и есть настоящее требование: reverse proxy перед сервером в открытом интернете лишь сдвигает цель, тогда как onion-сервис убирает её вовсе.

Это неподходящий инструмент, если ваши посетители не хотят или не могут пользоваться Tor, если вам нужна необработанная пропускная способность и задержка меньше 100 миллисекунд, которую даёт напрямую доступный сервер, или если вся суть — в обнаруживаемости: на onion-адрес не натыкаются через поисковик. Многие операторы выбирают компромисс и держат оба варианта: обычный сайт ради охвата и onion-сервис для тех пользователей, которым он нужен, — причём отдаёт их одно и то же приложение. Этот вариант мы разбираем ниже. Ничто здесь не заменяет защиту самой машины: если сервер скомпрометирован, его местоположение и содержимое утекут независимо от того, как он опубликован, — так что относитесь к чек-листу защиты в первый час как к обязательному условию, а не как к чему-то второстепенному.

SP·03

Что раскрывает эта настройка — и кому

Стоит точно понимать модель анонимности, потому что под «onion-сервисом» часто подразумевают «нельзя отследить», а реальность точнее и уже. Клиенты никогда не узнают IP-адрес сервера — это сильное свойство, и в этом вся суть. А вот ваш хостинг-провайдер по-прежнему видит машину в своей сети, которая поддерживает постоянный поток зашифрованных исходящих соединений к сети Tor; он не может увидеть onion-адрес, содержимое или посетителей, но видит, что машина «говорит» на Tor. На массовом хостинге, привязанном к вашей личности, это нить, за которую стоит потянуть. На офшорном VPS с анонимной оплатой и без имени в базе она никуда не ведёт — и именно поэтому эти два приёма стоит применять вместе.

Сценарии, которые на практике деанонимизируют onion-сервисы, почти никогда не связаны с самим Tor. Это приложение, которое светит реальный IP в странице ошибки, в заголовке, в отправленном письме или в исходящем запросе к аналитике или серверу обновлений в клирнете; неверно настроенный сервер, который выдаёт своё имя хоста или часовой пояс; или корреляция из-за того, что оператор переиспользует одну и ту же машину, ключ или манеру письма поверх личности в клирнете. Криптография держится; попадаются на обвязке вокруг неё. Каждый шаг ниже написан так, чтобы эта обвязка оставалась плотной: привязка к localhost, никакой открытой отправки данных наружу и реальная личность, которую держат подальше от машины, — по принципам из материала как не оставлять своё имя на сервере.

SP·04

Установите актуальный Tor, а не тот, что идёт с дистрибутивом

Дистрибутивы замораживают Tor на той версии, что вошла в конкретный релиз, а средства защиты onion-сервисов развиваются быстро — защита от DoS-атак на introduction points, авторизация клиентов v3 и несколько исправлений стабильности появились в версиях новее тех, что по умолчанию несёт стабильный Debian или Ubuntu. Устанавливайте из собственного подписанного репозитория Tor Project, чтобы следовать актуальным релизам и получать обновления безопасности по их графику, а не по графику дистрибутива. Приведённый ниже сниппет автоматически определяет кодовое имя вашего релиза и привязывает репозиторий к ключу подписи проекта, так что атакующий, подделавший зеркало, не сможет подсунуть вам устаревший пакет.

Tor работает без привилегий, от имени пользователя debian-tor на Debian и Ubuntu, уходит в sandbox и не нуждается в особых сетевых привилегиях — он лишь дозванивается наружу, как любой клиент. Для самого onion-сервиса в firewall не нужно открывать вообще ничего, и это первый приятный сюрприз всего упражнения: ваш firewall с default-deny может оставаться настолько же строгим, каким был.

SP·05

Привяжите приложение к localhost и больше ни к чему

Onion-сервис — это парадный вход к обычному локальному сервису: веб-серверу, приложению, SSH-демону, чему угодно, говорящему на TCP. Правило, которое делает всё это безопасным, — локальный сервис должен слушать только loopback-интерфейс, 127.0.0.1. Если он также слушает публичный IP, вы незаметно воссоздали ту самую проблему, которую onion-сервис должен был решить: содержимое теперь напрямую доступно и поддаётся снятию отпечатка, а сканирование, сопоставившее ваш клирнет-сервер с содержимым onion, одним запросом уничтожает всю анонимность. Привязывайтесь к loopback, подтверждайте это через ss -tlnp и не позволяйте ничему, кроме Tor, когда-либо подключаться к этому порту.

Поскольку трафик между Tor и вашим приложением остаётся на 127.0.0.1, он никогда не выходит в сеть и не нуждается в собственном TLS — цепочка Tor уже шифрует всё end-to-end. Не вешайте самоподписанный сертификат на loopback-listener: это добавляет поверхность для снятия отпечатка и не даёт ровным счётом ничего. Держите приложение скучным: никаких редиректов в клирнет, никаких зашитых в шаблоны абсолютных ссылок вида https://your-domain, никаких сторонних шрифтов или аналитики, из-за которых браузер посетителя потянется с onion наружу, в открытый интернет.

SP·06

Объявите сервис, затем прочитайте свой адрес

Onion-сервис — это три строки torrc: директория, где Tor хранит ключевой материал, и сопоставление виртуального порта на onion-адресе локальному порту, который слушает ваше приложение. При первом перезапуске Tor генерирует в этой директории пару ключей Ed25519 и записывает файл hostname — 56-символьный адрес .onion, который вы будете раздавать. Этот адрес постоянен, пока вы храните ключ. Потеряете ключ — адрес исчезнет навсегда; допустите его утечку — кто-то другой сможет выдавать себя за ваш сервис. Относитесь к HiddenServiceDir как к фамильным драгоценностям: 0700, владелец — пользователь Tor, зашифрованный бэкап хранится вне машины.

Ещё две настройки заслуживают места рядом с сопоставлением портов. HiddenServiceEnableIntroDoSDefense 1 позволяет вашим introduction points ограничивать частоту соединений при флуде ещё до того, как он дойдёт до вашей машины, — это ближайший аналог защиты от DDoS, доступный onion-сервису. Фиксация HiddenServiceVersion 3 делает версию явной и защищённой на будущее. Если сервис должен быть приватным, а не публичным, авторизация клиентов v3 ограничивает доступ обладателями ключа, который вы распространяете вне сети, — чистый способ держать админ-панель, которая просто не отвечает никому без нужных учётных данных.

SP·07

Анонсируйте его, держите оба варианта и выберите запоминающийся адрес

Если вы также держите сайт в клирнете, сообщите Tor Browser об onion-версии через заголовок ответа Onion-Location (или эквивалентный HTML-meta-тег). Браузеры с поддержкой onion затем сами предлагают посетителям .onion-адрес — так делают, например, крупные издания и поисковики. Обслуживать одно и то же приложение и на домене, и на onion-адресе — это норма, а не экзотика: одна кодовая база, одна база данных, две парадные двери, причём сторона в клирнете стоит за обычным reverse proxy, скрывающим источник, а onion-сторона вообще ничего не раскрывает.

Адрес по умолчанию — случайная 56-символьная строка: она надёжна, но её невозможно запомнить. Vanity-адрес позволяет перебором подобрать ключ, чья base32-кодировка начинается с выбранного вами префикса, — несколько читаемых символов подбираются быстро, но каждый дополнительный символ умножает объём работы на 32, так что всё, что длиннее семи-восьми букв, превращается в серьёзную вычислительную задачу. Генерируйте vanity-ключи на доверенной локальной машине, никогда на сервере, и помещайте полученный ключ в HiddenServiceDir точно так же, как восстанавливали бы его из бэкапа. Узнаваемый префикс заодно притупляет одну вполне реальную атаку: фишинговые клоны, которые рассчитывают, что никто не станет вчитываться в стену случайных символов.

SP·08

Поддерживайте это: производительность, мониторинг и гигиена ключа

Onion-соединение проходит через шесть релеев вместо привычного нуля, поэтому задержка выше, а пропускная способность ниже, чем у напрямую доступного сервера, — это физика, а не ошибка конфигурации, и никакая настройка её не уберёт. Не поддавайтесь соблазну однохоповых или неанонимных режимов ради возврата скорости: они отдают ровно то свойство, ради которого всё это затевалось. Что вы действительно можете сделать — это держать Tor актуальным, оставить включённой DoS-защиту introduction points, прикрыть нагруженный сервис кешированием, чтобы каждый запрос требовал меньше работы, и заложить в машину запас по CPU, потому что криптография Tor не бесплатна. Скромный офшорный VPS от $8.00/мес спокойно справляется с типичным onion-сайтом.

В эксплуатации onion-сервис держат здоровым три привычки. Следите за journalctl -u tor@default на предмет ошибок доступности и публикации дескрипторов, а не считайте тишину признаком здоровья. Делайте бэкап HiddenServiceDir в день создания сервиса и после каждого изменения — зашифрованный и вне машины, — потому что этот ключ невозможно сгенерировать заново. И держите операционную идентичность машины чистой: свежий ключ на свежем анонимном VPS мало чего стоит, если те же привычки оператора связывают его с личностью в клирнете. Сам сервис годами будет спокойно работать без вмешательства; дисциплина нужна в обвязке вокруг него, а не в самом сервисе.

SP·09

Шаг за шагом

  1. 01

    Начните с защищённой анонимной машины

    Разверните офшорный VPS — он выходит в онлайн примерно за 15 min — и сначала сделайте скучную, но обязательную работу: именованный sudo-пользователь, SSH только по ключу, firewall с default-deny и автоматические обновления безопасности. Onion-сервис не добавляет ничего, что нужно открывать в этом firewall, так что запертая машина остаётся запертой. Не пропускайте этот шаг: onion-адрес перед скомпрометированным сервером не скрывает ровным счётом ничего.

    ssh admin@203.0.113.10
    sudo apt update && sudo apt full-upgrade -y
    # firewall stays default-deny; the onion service needs no inbound port
    sudo ufw status verbose
  2. 02

    Установите Tor из репозитория Tor Project

    Добавьте подписанный репозиторий проекта, чтобы работать с актуальным Tor и последними средствами защиты onion-сервисов, а затем установите его. Кодовое имя релиза определяется из /etc/os-release, а репозиторий привязан к ключу подписи Tor, так что подделанное зеркало не сможет подсунуть вам более старую версию.

    sudo apt install -y apt-transport-https wget gpg
    . /etc/os-release
    wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc \
      | gpg --dearmor | sudo tee /usr/share/keyrings/tor.gpg >/dev/null
    echo "deb [signed-by=/usr/share/keyrings/tor.gpg] https://deb.torproject.org/torproject.org $VERSION_CODENAME main" \
      | sudo tee /etc/apt/sources.list.d/tor.list
    sudo apt update && sudo apt install -y tor deb.torproject.org-keyring
  3. 03

    Привяжите свой сервис только к localhost

    Направьте то, что вы публикуете, на loopback-интерфейс и никуда больше. Здесь nginx отдаёт статический сайт на 127.0.0.1:8080; тот же принцип действует для любого приложения — привязывайтесь к 127.0.0.1, а не к 0.0.0.0. Перезагрузите конфигурацию, а затем через ss убедитесь, что ничего не слушает маршрутизируемый адрес.

    # /etc/nginx/sites-available/onion.conf
    server {
        listen 127.0.0.1:8080;
        server_name _;
        root /var/www/onion;
        index index.html;
    }

    Включите конфигурацию, перезагрузите её и убедитесь, что привязка идёт только к loopback:

    sudo ln -s /etc/nginx/sites-available/onion.conf /etc/nginx/sites-enabled/
    sudo nginx -t && sudo systemctl reload nginx
    ss -tlnp | grep 8080   # must show 127.0.0.1:8080, never 0.0.0.0:8080
  4. 04

    Объявите onion-сервис в torrc

    Добавьте сервис в /etc/tor/torrc: директорию с ключом и сопоставление виртуального порта 80 на onion-адресе с вашим локальным портом 8080. Включите DoS-защиту introduction points и зафиксируйте версию адреса. Затем перезапустите Tor — на Debian и Ubuntu запущенный экземпляр называется tor@default.

    # /etc/tor/torrc
    HiddenServiceDir /var/lib/tor/onion-www/
    HiddenServicePort 80 127.0.0.1:8080
    HiddenServiceVersion 3
    HiddenServiceEnableIntroDoSDefense 1
    
    sudo systemctl restart tor@default
  5. 05

    Прочитайте адрес и заблокируйте доступ к ключу

    Tor уже создал ключевой материал и записал ваш адрес. Прочитайте его, раздавайте — и убедитесь, что директория имеет права 0700 и принадлежит пользователю Tor: это обеспечивает сам Tor, но неаккуратное восстановление из бэкапа может это сломать. Файл hs_ed25519_secret_key в этой директории — это и есть ваша идентичность; больше ничего.

    sudo cat /var/lib/tor/onion-www/hostname
    # example: 2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion
    
    sudo ls -l /var/lib/tor/onion-www/
    # hostname  hs_ed25519_public_key  hs_ed25519_secret_key
    sudo chown -R debian-tor:debian-tor /var/lib/tor/onion-www
    sudo chmod 700 /var/lib/tor/onion-www
  6. 06

    Проверьте через Tor, затем анонсируйте

    Проверьте сервис с машины, на которой запущен Tor, используя torsocks, чтобы запрос шёл через сеть, а не через клирнет. Как только сервис ответит, при желании направьте посетителей из клирнета на onion-версию заголовком Onion-Location на вашем обычном сайте.

    # from any box running tor:
    torsocks curl -sSI http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion/ | head
    
    # advertise the onion from your clearnet nginx (inside the https server block):
    add_header Onion-Location "http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion$request_uri";
  7. 07

    Сделайте бэкап ключа и напишите runbook

    Адрес живёт и умирает вместе с директорией ключа. Заархивируйте её в тот же момент, как она появилась, перенесите архив с машины в зашифрованное хранилище и учтите, что восстановление в любом месте воспроизводит абсолютно тот же адрес .onion. Затем запишите две команды, которые реально понадобятся вам через полгода, — где лежит ключ и как проверить работоспособность, — потому что сервис будет работать нетронутым достаточно долго, чтобы вы обязательно это забыли.

    sudo tar czf onion-www-key.tar.gz -C /var/lib/tor onion-www
    # copy onion-www-key.tar.gz to encrypted off-box storage, then delete the local copy
    
    # health check any time:
    sudo systemctl status tor@default
    sudo journalctl -u tor@default --since "1 hour ago" | grep -i "onion\|error"
SP·10 — FAQ

Быстрые ответы

Видит ли мой хостинг-провайдер мой .onion-адрес или то, что я размещаю?

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

Нужны ли мне доменное имя или TLS-сертификат?

Ни то ни другое. Адрес .onion получен из собственного публичного ключа сервиса, поэтому ему не нужен регистратор и нечего продлевать или утекать. Соединение аутентифицировано и зашифровано end-to-end самим Tor, поэтому браузеры считают onion-источники защищёнными и без сертификата. При желании получить UI с замочком можно оформить сертификат, в который включён ваш onion-адрес, но это опционально и не даёт никакой дополнительной защиты транспорта — не вешайте самоподписанный сертификат на loopback-listener, думая, что это как-то помогает.

Onion-сервис или reverse proxy — что на самом деле скрывает источник?

Onion-сервис, и разрыв огромный. Reverse proxy скрывает IP источника от случайных посетителей, но источник по-прежнему остаётся слушающим, сканируемым сервером; любой, кто найдёт его адрес — через неверную конфигурацию, утёкшую DNS-запись или приложение, которое «звонит домой», — доберётся до него напрямую. У onion-сервиса просто нет доступного источника, который можно найти: машина не слушает ничего маршрутизируемого и только дозванивается наружу. Используйте reverse proxy, чтобы скрыть сервер в клирнете, который вы всё ещё хотите держать быстрым и публичным; используйте onion-сервис, когда источника как цели вообще не должно существовать. Многие операторы держат оба варианта для одного и того же приложения.

Почему мой onion-сервис медленнее обычного сайта?

Потому что соединение до него проходит через шесть релеев Tor вместо прямого пути к вашему серверу, а это добавляет задержку и ограничивает пропускную способность. Это неотъемлемое свойство того, как работает анонимность, а не изъян вашей настройки, и никакая конфигурация этого не уберёт. Смягчить эффект можно: держите Tor актуальным, агрессивно кешируйте, чтобы каждый запрос требовал меньше работы, держите страницы лёгкими и выделите машине достаточно CPU для криптографии Tor. Избегайте однохоповых или неанонимных режимов onion — они возвращают скорость, отказываясь от приватности местоположения, ради которой вы вообще затевали этот сервис.

Можно ли держать один и тот же сайт и в клирнете, и на .onion?

Да, и это распространённый паттерн. Одно приложение слушает loopback; и клирнет-фронтенд, и onion-сервис проксируют запросы к нему, так что за двумя парадными дверями стоят одна кодовая база и одна база данных. Анонсируйте onion пользователям Tor Browser заголовком Onion-Location на стороне в клирнете. Единственная по-настоящему важная дисциплина — избегать утечек, которые связывают эти две стороны: никаких зашитых в код клирнет-URL, никакой сторонней аналитики или шрифтов и никакой страницы ошибки, которая печатает настоящее имя хоста или IP сервера.

Что будет, если я потеряю ключ, и как работают vanity-адреса?

Потеряете HiddenServiceDir — и адрес пропадёт навсегда: восстановить его нельзя, и нет регистратора, к которому можно апеллировать, именно поэтому шаг с бэкапом не опционален. Восстановление этой директории на любой машине воспроизводит идентичный адрес .onion. Vanity-адрес — это ключ, подобранный перебором так, чтобы его base32-кодировка начиналась с выбранного вами префикса; короткий читаемый префикс подбирается быстро, но каждый дополнительный символ умножает объём перебора на 32, так что длинные пользовательские строки превращаются в настоящую вычислительную задачу. Генерируйте vanity-ключи на доверенной локальной машине, а затем устанавливайте ключ так же, как восстановленный бэкап, — никогда не генерируйте их на сервере.

Применить на практике

VPS в онлайне за 15 min, выделенный передаётся за 2–12 h. Пополните от $30.00 в крипте — без привязки личности.

Развернуть VPS