Для публикации домашнего видеосервиса в интернете без проброса портов и обхода CGNAT автор предлагает использовать VPS с обратным SSH-туннелем. Домашний компьютер сам устанавливает соединение с сервером, а публичный Nginx на VPS перенаправляет HTTPS-запросы через этот туннель к локальным ресурсам.
Основная угроза такой архитектуры — SSRF (Server-Side Request Forgery). Если приложение принимает произвольные URL от пользователя, злоумышленник может заставить сервер обращаться к внутренним устройствам, например, к роутеру. Сервер в этом случае выступает в роли прокси, обходя сетевые ограничения локальной сети.
Для защиты рекомендуется использовать белый список адресов вместо передачи URL от клиента, а также проверять авторизацию на сервере для каждого запроса, включая HLS-сегменты. Все внутренние сервисы должны быть привязаны только к интерфейсу 127.0.0.1, а снаружи на VPS должен быть открыт только порт 443.
SSH-туннель следует настраивать для отдельного пользователя с ограниченными правами. Использование директивы 'permitlisten' в файле 'authorized_keys' позволяет разрешить проброс только конкретных портов. Управление туннелем должно осуществляться через скрипты, которые отслеживают PID процесса, чтобы гарантировать его корректную остановку.
Необходимо регулярно проверять состояние портов командами вроде 'ss' или 'Get-NetTCPConnection', чтобы убедиться, что сервисы не слушают внешние интерфейсы. При подозрении на компрометацию ключа автор советует немедленно удалить его из 'authorized_keys', завершить сессии и сменить пароли в приложении и на камерах.





