У нас есть требование иметь доступ к ресурсам на мобильном устройстве. мобильное устройство должно действовать как сервер. он должен быть доступен независимо от того, как подключен телефон (wi-fi, 3g, за брандмауэром и т. д.). я понимаю, что это можно сделать, инициировав переадресацию обратного порта ssh с телефона на сервер, доступный в облаке. клиенты, желающие получить доступ к ресурсам на телефоне, теперь могут подключаться к облачному серверу через произвольный порт и туннелировать соединение с мобильным устройством. отлично.
мой вопрос касается осуществимости этой идеи как масштабируемого, надежного и безопасного решения. мобильное приложение, развернутое на десятках тысяч устройств с использованием этой схемы, чтобы сделать локальные ресурсы устройств доступными. локальные ресурсы устройства не обеспечивают сверхвысокой безопасности. ssh был предложен главным образом потому, что он упрощает настройку туннеля.
вот некоторые из моих опасений,
выделение портов. для каждого туннеля требуется уникальный порт на облачном сервере. Я считаю, что для этого потребуется, чтобы устройство и облачный сервер согласовали IP-адрес перед запуском туннеля. это, конечно, возможно, но это означает, что где-то есть довольно сложная служба, которая постоянно проверяет порты, чтобы определить их доступность.
портовые ресурсы. на сервере конечное количество портов. может быть, это не проблема, когда все масштабируется на нескольких серверах.
управление туннелем. туннели могут не всегда работать нормально, поэтому возникает проблема очистки туннелей, которые неожиданно выходят из строя (см. № 1).
безопасность. каждому устройству потребуется открытый ключ, чтобы соответствовать секрету на облачном сервере. если он есть на устройстве, то его можно взять с него. теперь, пока учетная запись заблокирована, мало что может произойти, но это открывает еще один вектор атаки.
Кроме того, простое открытие всех уникальных портов сервера является еще одним вектором атаки.
масштабируемость. насколько дорого (с точки зрения ресурсов) иметь, возможно, тысячи открытых туннелей SSH? это реалистично?
брандмауэр. порты облачного сервера будут не 80 или 8080, а какое-то случайное число. это проблема для некоторых брандмауэров, которые могут ограничивать исходящие подключения к стандартным портам?
Как видите, безопасность не моя сильная сторона, так что относитесь ко мне с осторожностью. Если вы еще не догадались, у меня есть крайние сомнения по поводу этого подхода, поэтому я ищу доказательства, чтобы посмотреть на другие решения для решения общей проблемы.