Tor Hidden Service как техника Nat Traversal

    За последние несколько месяцев мне несколько раз пришлось решать довольно однотипные задачи — регулярно получать доступ на компьютеры, «спрятанные» за NAT. Пока это был один стационарный компьютер, все решалось пробросом порта на домашнем роутере плюс DynDNS. Потом добавился ноутбук. И еще один. Ноутбуки могли подключаться к домашнему WiFi, а могли оказаться, например, на рабочем месте. Наша компания предоставляет услуги VPN, но именно в этот период VPN по каким-то причинам работал не стабильно. В ход пошли VPS, обратные ssh-туннели. Когда конфигурация перестала помещаться в голове, пришла идея сократить количество сущностей, используя Tor Hidden Service.

    Как известно, Tor предоставляет возможность создавать «скрытые» сервисы — сетевые имена из пространства .onion, подключение к которым возможно через любой клиент сети Tor. При этом с целью анонимизации сервера, на котором расположены эти сервисы, подключение происходит через «места встречи» (rendezvous points) — компьютеры, не закрытые NAT. Сам компьютер, на котором расположен скрытый сервис, может находиться за NAT, брандмауэром и т. п., но через сеть Tor к нему все равно можно получить доступ.

    Сказано — сделано. Устанавливаем Tor-клиент. В конфигурационный файл добавляем две строчки:
    HiddenServiceDir /var/lib/tor/hidden_service/
    HiddenServicePort 22 127.0.0.1:22
    


    В качестве HiddenServiceDir указываем любое место, в котором Tor сможет создать сам каталог (если его нет) и несколько конфигурационных файлов.
    В строчке HiddenServicePort первое число — это номер порта, к которому мы получаем доступ через Tor. Теоретически можно указать не 22, а, например, 1234.

    Перезапускаем Tor. В каталоге появятся два файла:

    • private_key — секретный ключ вашего сервиса. Tor использует этот ключ из этого файла для работы. Обратите внимание, зная этот ключ, злоумышленник может представиться вашим сервисом и никто ничего не поймет;
    • hostname — автоматически сгенерированный файл с именем вашего сервиса. Если вы удалите или поменяете это файл, все по-прежнему будет работать.


    В файле hostname находится имя вашего сервиса вида xxxxxxxxxxxxxxxx.onion.
    После этого я на любой машине могу сказать torsocks ssh xxxxxxxxxxxxxxxx.onion и попасть на свой ноутбук.

    Для скрытого сервиса можно подобрать менее случайное имя. Для этого используется программа Scallion. Сгенерированный ключ кладется в папку, соответствующую скрытому сервису.

    Один Tor-клиент может обслуживать несколько скрытых сервисов (достаточно указать эти строчки несколько раз). Каждый скрытый сервис «обслуживает» один или более портов, пробрасываемых через Tor (указываем несколько строк с HiddenServicePort подряд).
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 38

      –1
      В CJDNS тоже так же можно делать, только пока в UNIX только
        0
        Симметричный NAT Traversal в cjdns не получится. Это же F2F-сеть, при подключении к cjdns требуется ip (или mac) другого узла. За NAT такой возможности не будет.
        +1
        Месье знает толк в нестандартных способах удаления гланд. Простая сетка на. openvpn, раз уж есть. vds
          0
          будет проще и надежнее.
          (Извините промазал по кнопке с планшета)
            0
            OpenVPN — это хорошая идея. Наверное, если бы задача выходила за пределы ssh, я бы последовал этому совету. Но OpenVPN — это еще одно место конфигурации. К нему надо как-то прикручивать DNS или убеждаться, что mDNS работает нормально.
              0
              DNS совершенно НЕ необходим. Для SSH Вы можете создать записи в .ssh/config, Вы можете ходить по IP, Вы можете прописать записи в hosts, если уж совсем необходимы символьное обращение к хостам.
                0
                Это только если IP статический.
                А так у Tor Hidden Services есть следующие преимущества над VPN:
                1. Бесплатный постоянный onion-адрес в условиях динамического IP/NAT.
                2. Тонкий контроль над доступом к вынесенным во внешнюю сеть ресурсом: наружу попадают только те сервисы, которые указаны в настройках.
              +1
              вопрос с openvpn: а насколько будет удобно менеджить openvpn сервер на 20 тыс устройств?
                0
                Не знаю, не пробовал в таких масштабах. Но не вижу проблем экстраполировать мой опыт openvpn на несколько сотен клиентов на 20 тысяч. И какие именно задачи Вы подразумеваете под «менеджить»?

                Если что логическую сущность «openvpn-сервер» можно вполне разбить на несколько физических. Точнее в Ваших масштабах — нужно.
            • UFO just landed and posted this here
                0
                А что, все провайдеры уже его поддержали?
                  0
                  SixXS + Aiccu
                    0
                    Не советуйте бяку. Hurricane Electric, gogoIPv6 и прочие тередо.
                      0
                      почему это бяка? оО
                        0
                        Майнтейнеры редиски, которые абсолютно неуважительно относятся к пользователям.
                          0
                          Зато шикарные пинги по сравнению с альтернативами.

                          А из минусов еще добавлю замороченная регистрация и требования о реалистичных данных пользователя.
                            –1
                            Пинги у меня замечательные и на хенете. А сиксу я предоставлял реальные данные, но регистрацию заворачивали, называя меня абьюзером. Ну и хрен с ними. Сикс сакс.
                              0
                              Нормальные пинги — это какие? У меня до шлюза в sixxs — порядка 9.6 ms. Ни один шлюз в he мне такого дать не смог. Я в Москве.

                              Чуть хуже, чем SixXS пинги мне давал NetAssist (при самой незамороченной регистрации), но последнее время стал слишком нестабилен. Пришлось раскидать линки на SixXS и HE.

                              А что в данном контексте значит абьюзер?
                                –1
                                У меня пинги порядка миллисекунды. Но это не Москва, да.

                                Насчёт проблем с регистрацией, подробности тут: blog.shadura.me/2011/12/13/sixxs-suxxs/
                                  0
                                  Пинги порядка миллисекунды до шлюза IPv6-брокера? Простите, я Вам не верю. Это порядок пингов при нативном подключении до шлюза Вашего провайдера.

                                  Насчёт проблем с регистрацией, подробности тут: blog.shadura.me/2011/12/13/sixxs-suxxs/


                                  Прочитал. Я не понимаю, откуда у Вас вылезла эта проблема и что Вы указали в данных, но я специально написал, что необходимо вводить реалистичные (но не обязательно реальные) данные. То есть я ввел данные из головы, но приблизительно корректные, проверил, что адрес такой реально существует. И все прокатило.

                                  Возможно в Вашей стране у них есть возможность проверять данные, так Вам черным по белому написали, судя по Вашей ссылке, что Вы не указали ZIP-код.

                                  В общем это Ваша эпизодическая проблема.
                                    0
                                    Простите, но это именно так.

                                    Насчёт «эпизодичности» — это было бы так, если бы это было эпизодически. Проблемы подобного рода происходят постоянно с разными людьми. Точно так же как внезапно блокируют аккаунты на основе мониторинга сетевой активности. У сиксовцев в голове живут серьёзные забабоны, это точно.

                                    З.Ы. Кстати, адрес без почтового индекса является совершенно валидным. Более того, они пишут, что не могли проверить комбинацию адрес + имя. А проверить её и не получится, если они не полиция, особенно если речь идёт о жилье, предоставленном работодателем (на тот момент у меня было именно так).
                                  0
                                  Кроме того, ограничения на протоколы, которые я могу использовать — это идиотизм. А у хенета всё просто работает.
                                    0
                                    Что за ограничения?
                    • UFO just landed and posted this here
                        –1
                        А вот ссылочку бы на эти способы. Бо те что встречал пока что, скажем так, не особо вдохновляли…
                          0
                          Туннельные брокеры или VPN через свой сервер с нативным IPv6.
                          • UFO just landed and posted this here
                        0
                        Совет про ipv6 верный, но стоит использовать Teredo. Поддержка этой переходной технологии есть в современной винде из коробки, в линуксе достаточно набрать что-то вроде sudo apt-get install miredo и, вуаля!, у вас появился глобально маршрутизируемый ipv6 адрес
                          0
                          Есть способы так же надежно как VPN пробивать NAT? Да, Aiccu это умеет, но мне не показалось это очень стабильным.
                          0
                          «Когда конфигурация перестала помещаться в голове, пришла идея сократить количество сущностей, используя Tor Hidden Service.»
                          Насколько имена tor хостов вида xxxxxxxxxxxxxxxx.onion стало легче в голове умещать? )
                            +2
                            Они попали в .ssh/config
                              0
                              Тогда тем более не понимаю смысла не использовать VPN.
                                0
                                Основная причина, почему я не стал поднимать OpenVPN: VPN — это еще один инфраструктурный элемент. Который надо поддерживать, настраивать, следить и т. п. Tor, в этом плане, гораздо проще. Плюс, он не требует стабильной работы VDS.
                            +1
                            Название статьи неверное: nat traversal это конкретная технология, в которой после установления сеанса третья сторона не участвует в передаче данных.
                              0
                                0
                                Hamachi?
                                  0
                                  Не так давно стал платным для всех и без предупреждения. Я бы не стал завязываться на такой непредсказуемый сервис.
                                  0
                                  А если чтото из этого?
                                  habrahabr.ru/post/150151/

                                  Only users with full accounts can post comments. Log in, please.