GNU/Linux >> Linux Esercitazione >  >> Linux

Tunneling e proxy SSH

Introduzione:

SSH, noto anche come Secure Shell o Secure Socket Shell, è un protocollo di rete che offre agli utenti, in particolare agli amministratori di sistema, un modo sicuro per accedere a un computer su una rete non protetta.

Secure Shell fornisce una forte autenticazione tramite password e autenticazione con chiave pubblica, nonché comunicazioni di dati crittografate tra due computer che si connettono su una rete aperta, come Internet.

Il tunneling SSH è un metodo per trasportare dati di rete arbitrari su una connessione SSH crittografata. Può essere utilizzato per numerosi motivi principalmente per aggiungere la crittografia alle applicazioni legacy, per essere utilizzato come rete privata virtuale e per accedere ai servizi intranet attraverso i firewall. Fornisce inoltre un modo per proteggere il traffico dati di una determinata applicazione utilizzando il port forwarding, in pratica il tunneling di qualsiasi porta TCP/IP su SSH. Ciò significa che il traffico dati dell'applicazione viene indirizzato a fluire all'interno di una connessione SSH crittografata in modo che non possa essere intercettato o intercettato mentre è in transito.

Prerequisiti:

  1. Server SSH ascolto di connessioni SSH, (X11Forwarding deve essere abilitato, puoi verificarlo nel file di configurazione sshd)
  2. Client SSH per inoltrare il traffico da una porta di ascolto locale, tramite il server SSH, al server delle applicazioni
  3. Server di destinazione servizi di offerta (http, vnc, ecc.)

Il server SSH e il server di destinazione possono trovarsi sulla stessa macchina o su macchine diverse accessibili tramite rete. Il diagramma seguente mostra il server SSH e i server delle applicazioni si trovano su macchine diverse e sono connessi in rete e la macchina client sta accedendo al server SSH tramite Internet.

Creiamo una configurazione in cui il client desidera connettersi a un servizio che non utilizza nativamente la crittografia ma non desidera che il traffico venga inviato non crittografato tramite Internet. L'ambiente per questo scenario è il seguente.

Server SSH:SSH è in ascolto sulla porta 22 all'indirizzo IP 192.168.1.1

Server di destinazione:il servizio VNC è in ascolto sulla porta 5900 all'indirizzo IP 192.168.1.2

Macchina client:client SSH e VNC installati

Creazione di tunnel utilizzando PuTTY :

  1. Apri l'interfaccia utente del client PuTTY
  2. Nella finestra Session, in "Opzioni di base per la tua sessione PuTTY", inserisci l'indirizzo IP e la porta di ascolto per il server SSH come si può vedere nell'immagine seguente:

3. Nel riquadro di sinistra, seleziona Connessione->SSH->Tunnel

4. In "Opzioni di controllo del port forwarding SSH", inserisci le seguenti impostazioni.

5. Porta di origine:scegli una porta arbitraria, non in uso sul tuo client; l'esempio usa 1590.

6. Destinazione:indirizzo IP e porta di ascolto per il server di destinazione, 192.168.1.2:5900.

7. Lascia i pulsanti di opzione "Locale" e "Auto" selezionati.

8. Fare clic su "Aggiungi" per salvare queste impostazioni.

9. Fare clic su "Apri" per creare il tunnel SSH. Inserisci il tuo nome utente e password per il server SSH quando richiesto.

Creazione di un tunnel SSH utilizzando OPENSSH:

Il tunnel SSH può essere creato utilizzando il comando seguente utilizzando il client OPENSSH.

ssh -L 1590:192.168.1.2:5900 192.168.1.1

Qui -L 1590 indica la Porta Locale

192.168.1.2:5900 indica l'IP e la porta del server di destinazione

192.168.1.1 Indica l'indirizzo IP del server SSH

Dopo aver inserito il comando accedi utilizzando le tue credenziali al server SSH.

Collegamento del servizio VNC tramite SSH Tunnel :

Dopo aver effettuato l'accesso al server SSH, configurare il client VNC per accedere al server di destinazione utilizzando la porta locale.

Utilizza l'indirizzo Loopback locale 127.0.0.1 e la porta 1590

L'esempio mostra il tunneling per la porta VNC, le stesse impostazioni possono essere utilizzate per accedere a qualsiasi servizio modificando le porte e gli IP.

Tunnel inverso SSH :

Il tunneling inverso è più o meno lo stesso, ma in questo caso il server di destinazione può utilizzare il tunnel per accedere ai servizi ospitati sulla rete di origine o sulla macchina stessa.

Consideriamo un esempio,

Supponiamo che tu abbia un server su una rete remota dietro un firewall e solo SSH (porta 22) sia aperto dalla rete remota alla tua rete, ma desideri accedere a un servizio http in esecuzione sulla porta 80 ospitata sulla tua macchina Linux.

Per scenari come questo il tunneling inverso è utile, vediamo di seguito come farlo in modo sicuro e semplice.

Usa il comando seguente sulla tua Linux Box in cui è ospitato il tuo servizio http...

ssh -R 180:localhost:80 [email protected]

Dove -R 180:localhost è la porta remota e l'IP/nome host (verrà utilizzato dal server remoto per accedere al servizio http)

E [email protected] è l'IP e il nome utente del server remoto da cui vorrai accedere al tuo servizio web

Dopo aver inserito il comando accedi con le credenziali,

Ora puoi accedere al tuo server web dal server remoto.

Possono esserci molti scenari in cui il tunneling SSH e il tunneling inverso possono essere utilizzati per accedere anche all'inaccessibile 🙂 con la facilità e la sicurezza di ssh dietro di esso.


Linux
  1. Come configurare il tunneling SSH

  2. Come scaricare e caricare file su SSH

  3. Ssh:cosa fanno esattamente le opzioni `serveraliveinterval` e `clientaliveinterval` in Sshd_config?

  4. Autorizzazioni Ssh e Home Directory?

  5. Risolvi i problemi di SSH

ScanSSH:server SSH veloce e scanner proxy aperto

Server SSH

Come installare e abilitare il server SSH su Debian 10

Come generare e utilizzare una chiave SSH utilizzando PuTTY

Come eseguire l'SSH sul server tramite Linux

Problemi e soluzioni comuni del server