Ricerca nel sito web

Come utilizzare il tunneling SSH per accedere ai server limitati


Sapere come avviare un tunnel ssh può aiutarti a raggiungere reti e sistemi altrimenti inaccessibili.

Il tunneling SSH o il port forwarding SSH è un metodo per creare una connessione SSH crittografata tra un client e un computer server attraverso il quale è possibile inoltrare le porte dei servizi.

Tunnel SSH locale con port forwarding

Puoi utilizzare un tunnel ssh locale quando desideri accedere a una risorsa a cui non puoi accedere direttamente, ma un server ssh a cui hai accesso può farlo. Ecco alcuni scenari.

Proxy al server remoto

Nell'immagine sopra, l'host blu non può raggiungere http://192.168.0.3 ma può ssh a 192.168.0.2. Il seguente comando ssh eseguito sull'host blu consentirà all'host blu di raggiungere l'host rosso.

ssh -L 8080:192.168.0.3:80 reduser@192.168.0.2

Ora l'host blu può aprire un browser, andare su http://localhost:8080 e visualizzarsi la pagina web ospitata su 192.168.0.3.

Port forwarding locale

Nell'immagine sopra, l'host blu vuole connettersi all'host rosso sulla porta 80 ma c'è un firewall in mezzo che lo nega. Poiché l'host blu può accedere tramite ssh all'host rosso, possiamo creare un tunnel ssh di port forwarding locale per accedere a quella porta.

Il comando sull'host blu sarà:

ssh -L 8080:192.168.0.2:80 reduser@192.168.0.2

Ora, quando l'host blu apre un browser e va su http://localhost:8080 potrà vedere qualunque cosa abbia il server rosso sulla porta 80.

Sintassi di inoltro della porta locale

Questa sintassi per creare un tunnel di port forwarding ssh locale è questa:

ssh -L <LPORT>:<RHOST>:<RPORT> <GATEWAY>

Tunnel SSH remoto con port forwarding

In questo scenario, stiamo creando un tunnel ssh inverso. Qui possiamo avviare un tunnel ssh in una direzione, quindi utilizzare quel tunnel per creare un tunnel ssh nell'altra direzione. Ciò può essere utile quando si inserisce un computer drone all'interno di una rete e si desidera che "telefoni a casa". Poi, quando telefona a casa, puoi connetterti attraverso il tunnel ssh stabilito.

Siamo sull'host verde e vogliamo connetterci tramite ssh all'host blu. Tuttavia, il firewall blocca direttamente questa connessione. Poiché l'host blu può connettersi tramite ssh all'host verde, possiamo connetterci utilizzandolo e quando l'host verde vuole tornare tramite ssh all'host blu, può percorrere questo tunnel precedentemente stabilito.

L'host blu avvia un tunnel ssh in questo modo:

ssh -R 2222:localhost:22 greenuser@192.168.0.2

Questo apre la porta 2222 sull'host verde, che quindi esegue il port forwarding alla porta 22 sull'host blu. Quindi, se l'host verde dovesse collegarsi a se stesso sulla porta 2222, raggiungerebbe l'host blu.

L'host verde ora può connettersi tramite ssh all'host blu in questo modo:

ssh -p 2222 blueuser@localhost

Utilizzando l'opzione -N

Quando utilizzi ssh, puoi specificare il flag -N che indica a ssh che non è necessario inviare alcun comando tramite la connessione ssh quando viene stabilita. Questa opzione viene spesso utilizzata quando si creano tunnel poiché spesso non è necessario ricevere effettivamente un prompt.

AutoSSH

Il comando autossh viene utilizzato per aggiungere persistenza ai tuoi tunnel. Il suo compito è verificare che la tua connessione ssh sia attiva e, in caso contrario, crearla.

Ecco un comando autossh che potresti riconoscere.

autossh -N -i /home/blueuser/.ssh/id_rsa -R 2222:localhost:22 [email 

L'opzione -i /home/blueuser/.ssh/id_rsa indica di utilizzare un certificato per autenticare questa connessione ssh.

Ora, quando il tuo tunnel si interrompe, tenterà automaticamente di riconnettersi e continuerà a provare finché non avrà successo. Per renderlo persistente durante il riavvio, aggiungi il comando ssh come processo cron.

Articoli correlati: