My question is what is the risk of doing such thing
Stai esponendo un'applicazione in esecuzione su un sistema interno a Internet selvaggio. Se una caratteristica o un bug nell'applicazione consente ad esempio l'esecuzione di codice in modalità remota, l'utente malintenzionato sarà in grado di eseguire questo codice sulla macchina e quindi all'interno della rete locale e quindi potrebbe raggiungere e attaccare i sistemi interni della rete che non dovrebbero essere accessibili da al di fuori.
... only giving access to the authenticated user to port forward?
La mia interpretazione iniziale di questa domanda è stata che tu, nell'esaminare l'applicazione interna, vuoi limitare quali utenti esterni potrebbero connettersi a questa porta inoltrata. Ma non c'è autenticazione a questo livello, cioè è semplicemente una porta TCP che è raggiungibile dall'esterno per tutti. Qualsiasi tipo di autenticazione deve essere eseguita nella tua applicazione. Solo, questo viene fatto di nuovo nei tuoi sistemi interni, il che significa che i problemi prima o durante l'autenticazione potrebbero nuovamente influenzare l'intera rete interna.
In base al tuo feedback sembra che tu abbia cambiato i ruoli per questa parte della tua domanda, cioè non è più quella che vuole rendere accessibile la sua applicazione, ma invece è l'amministratore che vuole impedirlo. In generale: se l'utente ha accesso limitato tramite SSH (può eseguire comandi selezionati), allora si può limitare anche il port forwarding (opzione no-port-forwarding
in OpenSSH). Se l'utente ha invece accesso completo alla shell, può aggirare tali restrizioni.
is there any other way around without using third party apps like ngrok?
ngrok non è un semplice port forwarding ampio ma consente invece di pubblicare l'applicazione solo per gli utenti selezionati richiedendo l'autenticazione. Se viene utilizzato questo accesso limitato, il rischio viene notevolmente ridotto, ovvero solo gli utenti che conoscono l'URL e che hanno le credenziali di autenticazione possono connettersi. Tuttavia, se non ti puoi fidare di questi utenti per mantenere private queste credenziali di accesso e anche per non attaccare il tuo sistema, non dovresti farlo.