GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare il port forwarding dinamico SSH su Linux

Molte aziende utilizzano server jump accessibili Secure Shell (SSH) per accedere ai sistemi business-critical. Gli amministratori si connettono prima a un jump server utilizzando SSH, possibilmente tramite una VPN, prima di connettersi al sistema di destinazione. Questo metodo di solito funziona alla grande fintanto che un amministratore si attiene all'amministrazione della riga di comando. Diventa un po' più complicato quando un amministratore vuole uscire dal regno della riga di comando e utilizzare invece un'interfaccia basata sul Web.

Diamo un'occhiata al seguente scenario:Bob è un amministratore di sistema di Securecorp e ha appena ricevuto un avviso che indica che un cluster di database composto da sirius.securecorp.io e orion.securecorp.io sta andando male. Per un'analisi iniziale, usa solitamente la console web RHEL8. Il firewall non gli permette di connettersi direttamente a questo sistema dalla sua workstation, ma può passare attraverso un jump server chiamato bastion.securecorp.io .

[ Potresti anche divertirti con: 6 guide SSH essenziali per gli amministratori di sistema ]

L'accesso da riga di comando SSH al cluster di database è semplice:

[bob@workstation ~]$ ssh bastion.securecorp.io
[bob@bastion ~]$ ssh sirius.securecorp.io
[bob@sirius ~]$
[bob@workstation ~]$ ssh bastion.securecorp.io
[bob@bastion ~]$ ssh orion.securecorp.io
[bob@orion ~]$

E se Bob volesse accedere alla console web RHEL8 di sirius.securecorp.io e orion.securecorp.io ? Esistono diversi modi per raggiungere questo obiettivo utilizzando SSH, tutti che coinvolgono il port forwarding di qualche tipo.

Disclaimer :in alcune organizzazioni, le politiche di sicurezza non consentono il port forwarding. Per assicurarti di non violare alcuna regola, consulta il tuo rappresentante per la sicurezza IT.

Inoltro porta SSH

Utilizzando SSH, Bob apre un tunnel TCP per entrambi i sistemi, puntando alla porta della console Web (9090) per sirius.securecorp.io e porta 9091 per orion.securecorp.io .

[bob@workstation ~]$ ssh -L 9090:sirius.securecorp.io:9090 bastion.securecorp.io
[bob@bastion ~]$
[bob@workstation ~]$ ssh -L 9091:orion.securecorp.io:9090 bastion.securecorp.io
[bob@bastion ~]$

Bob ora può puntare il browser della sua workstation locale su https://localhost:9090 per accedere alla console web di sirius.securecorp.io e https://localhost:9091 per accedere alla console web per orion.securecorp.io .

Questo approccio potrebbe funzionare bene in alcuni casi, ma ha i suoi limiti:

  • Convalida del certificato TLS:il browser locale non è soddisfatto perché, nella maggior parte dei casi, il nome comune del certificato non corrisponde al nome host nella barra degli indirizzi (localhost), quindi la convalida del certificato non riesce.
  • Reindirizzamenti:quando il sito Web a cui stai accedendo ti reindirizza a un altro URL, la connessione non riesce perché il port forwarding è valido solo per questo server Web. Questa situazione potrebbe essere un problema, ad esempio, quando si utilizza il Single Sign-On (SSO).

Avvia un browser sul jump server

Bob dovrebbe anche avviare un browser come Firefox sul server jump e visualizzarlo localmente sulla sua workstation. SSH fornisce una funzionalità chiamata X forwarding, che può essere utilizzata in questa situazione.

[bob@workstation ~]$ ssh -X bastion.securecorp.io
[bob@bastion ~]$ firefox https://sirius.securecorp.io:9090 &
[bob@bastion ~]$ firefox https://orion.securecorp.io:9090 &

Utilizzando questo metodo, il processo del browser viene eseguito sul jump server e le connessioni alle console Web di sirius.securecorp.io e orion.securecorp.io sono ammessi. Solo il rendering della finestra del browser avviene sulla workstation di Bob.

Sebbene questo approccio risolva alcuni problemi del semplice port forwarding SSH, presenta anche dei limiti:

  • Prestazioni:questo metodo di solito funziona piuttosto male perché l'output grafico deve essere trasferito dal jump server alla workstation attraverso la rete, il che è molto inefficiente.
  • Prerequisiti:un browser come Firefox deve essere installato sul jump server e un server X deve essere in esecuzione sulla workstation.

Inserisci il port forwarding dinamico

Dopo aver esplorato i due approcci precedenti e aver appreso i loro svantaggi, sarebbe fantastico avere una terza opzione, che ci offre il meglio di entrambi i mondi:

  • È possibile utilizzare il browser della workstation.
  • La connettività e la risoluzione dei nomi DNS dovrebbero essere le stesse del jump server.

Per raggiungere questo obiettivo, SSH fornisce una funzionalità chiamata port forwarding dinamico , che sfrutta il protocollo SOCKS. In questa configurazione, SSH funge da proxy SOCKS, inoltrando tutto il traffico rilevante attraverso la connessione SSH. Affinché ciò avvenga, il client (nel nostro esempio è il browser) deve essere a conoscenza di SOCKS.

Bob può avviare una sessione SSH con port forwarding dinamico come segue:

[bob@workstation ~]$ ssh -D 1080 bastion.securecorp.io
[bob@bastion ~]$

Dopodiché, il browser sulla workstation di Bob deve essere abilitato a SOCKS. La configurazione di Firefox può essere eseguita in questo modo:

  • Indirizza il browser su about:preferences.
  • Nel Generale scheda, scorri verso il basso in basso e fai clic su Impostazioni... nelle Impostazioni di rete sezione.
  • Nelle Impostazioni di connessione finestra, scegli Configurazione proxy manuale , specifica localhost per Host SOCKS , 1080 come Porta e seleziona SOCKS v5 .
  • Nella stessa finestra, seleziona DNS proxy quando utilizzi SOCKS v5 .

Bob ora può puntare il browser su https://sirius.securecorp.io:9090 e https://orion.securecorp.io:9090 per analizzare i problemi di prestazioni dei suoi due server di database utilizzando la console web RHEL8. Può anche accedere a qualsiasi altra risorsa interna come se il browser fosse in esecuzione su bastion.securecorp.io .

Nota :La porta 1080 è la porta registrata IANA per SOCKS, ma la connessione può utilizzare qualsiasi altra porta. I numeri nella configurazione SSH e del browser devono corrispondere.

Personalmente, ho trovato utile creare un profilo browser separato, quindi non è necessario passare continuamente da una configurazione proxy all'altra. È possibile creare un nuovo profilo passando il -P passa a firefox comando, avviando Gestione profili . Ho chiamato il mio profilo Salta . Dopo aver creato un nuovo profilo, viene creata una configurazione vuota. In questo profilo, ho applicato la configurazione come descritto sopra, lasciando inalterato il mio profilo predefinito.

Dopo aver creato il profilo, Firefox può essere avviato con il seguente comando:

[bob@workstation ~]$ firefox -P Jump

Un altro suggerimento utile è creare una configurazione specifica per l'host per il port forwarding dinamico nel tuo ~/.ssh/config file. Ad esempio:

[bob@workstation ~]$ cat ~/.ssh/config
Host bastion
  Hostname bastion.securecorp.io
  User bob
  DynamicForward 1080

[ Un corso gratuito per te:Panoramica tecnica su virtualizzazione e migrazione dell'infrastruttura. ] 

Concludi

Esistono molti modi per connettersi ai sistemi interni utilizzando un jump server e le possibilità descritte sopra non sono affatto esaustive. Nella mia esperienza, tuttavia, SSH ti fornisce un kit di strumenti molto potente, che nella maggior parte dei casi è disponibile e pronto per l'uso senza molti ostacoli. Il port forwarding dinamico è uno di questi strumenti e mi ha aiutato a essere più produttivo in situazioni specifiche, quindi provalo tu stesso.


Linux
  1. Come modificare la porta SSH in Linux

  2. Come configurare il tunneling SSH

  3. Come abilitare l'inoltro IP su Linux

  4. Come impostare un banner di avviso SSH personalizzato o un MOTD in Linux

  5. Come modificare la porta SSH su Lubuntu 20.04 Linux

Come configurare l'inoltro X11 utilizzando SSH in Linux

Come modificare la porta SSH in Linux

Come configurare la chiave pubblica e privata SSH in Linux

Utilizzo di SSH Port Forwarding come strumento di sicurezza in Linux

Come configurare le chiavi SSH su Debian 11 Linux

Come modificare la porta SSH in Linux:una guida semplice