обратный порт SSH вперед на мобильное устройство - PullRequest
1 голос
/ 15 февраля 2011

у нас есть требование иметь доступ к ресурсам на мобильном устройстве.мобильное устройство должно действовать как сервер.он должен быть доступен независимо от того, как телефон подключен (Wi-Fi, 3G, за брандмауэром и т. д.).Я понимаю, что это может быть достигнуто путем запуска обратного порта SSH с телефона на облачный сервер.клиенты, желающие получить доступ к ресурсам на телефоне, теперь могут подключаться к облачному серверу через некоторый произвольный порт и получать соединение, подключенное к мобильному устройству.отлично.

Мой вопрос касается возможности реализации этой идеи как масштабируемого, надежного и безопасного решения. мобильное приложение, развернутое на десятках тысяч устройств с использованием этой схемы для создания локальных ресурсов устройства.доступны.локальные ресурсы устройства не имеют сверхвысокой безопасности.ssh был предложен главным образом потому, что он облегчает настройку туннеля.

Вот некоторые из моих проблем,

  1. распределение портов.для каждого туннеля требуется уникальный порт на облачном сервере.Я полагаю, что для этого потребуется устройство и облачный сервер для согласования IP-адреса перед началом туннеля.это, конечно, возможно, но это означает, что где-то есть довольно сложная служба, которая постоянно проверяет порты, чтобы определить их доступность.

  2. ресурсы порта.на сервере есть конечное число портов.возможно, это не проблема, когда все масштабируется на несколько серверов.

  3. управление туннелем.Туннели могут не всегда хорошо выходить из строя, поэтому существует проблема «очистки» туннелей, которые неожиданно выходят из строя (см. №1).

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

также, просто открывая все уникальные портысервер является еще одним вектором атаки.

  1. масштабируемость.Насколько дорого (с точки зрения ресурсов) открывать, возможно, тысячи SSH-туннелей?это реально?

  2. межсетевой экран.порты облачного сервера будут не «80» или «8080», а случайным числом.Является ли это проблемой для некоторых брандмауэров, которые могут ограничивать исходящие соединения стандартными портами?

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

спасибо.

1 Ответ

1 голос
/ 15 февраля 2011

Здесь может потребоваться некоторый пользовательский код или сеанс туннелирования по протоколу, предназначенному для этой концепции.IPSEC через UDP может быть хорошей номинацией.Если это вообще возможно, то, чтобы мобильное устройство слушало, как обычный сервер, и отправляло пинги, когда оно меняет адреса, это может избавить вас от многих проблем.Это будет зависеть от поведения телефона и от того, делает ли оператор раздражающие вещи, такие как фильтрация входящих TCP-соединений.В любом случае, для решения конкретных вопросов:

1) Нет, каждому соединению потребуется уникальный сокет.Это комбинация номера порта и IP-адреса.Даже если два телефона находятся за одним и тем же NAT, устройство NAT будет назначать разные порты соединениям.Вы можете запустить одну службу на одном порту вашего сервера.

2) См. Выше

3) Это будет происходить, как правило, а не как исключение.Они таймаут и закрываются.На самом деле это может оказаться менее сложной задачей, чем вы ожидаете.

4) Способ решения этой проблемы будет зависеть от ваших потребностей в безопасности.Вы можете попытаться идентифицировать базовые идентификаторы на телефоне, чтобы усложнить задачу, потребовать ввода пароля пользователя, чтобы сделать его двухфакторным, и т. Д. Это, конечно, конкурирует с простотой использования, поэтому компромиссное решение остается за вами..


1a) Понятия не имею ... но это не должно быть невозможным.

2a) Вы столкнетесь с этим в некоторых местах и ​​там, где трудно предсказать.Тем не менее, вы также выполняете эти функции через HTTPS.

...