Tecniche di tunneling SSH e port forwarding
Padroneggi il port forwarding locale, remoto e dinamico e ne comprenda gli usi legittimi e quelli rilevanti per la sicurezza.
Tecniche di tunneling SSH e port forwarding è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.
Concetto di port forwarding locale
Il port forwarding locale (ssh -L local_port:destination_host:destination_port user@ssh_server) associa una porta del computer locale. Il traffico inviato a quella porta attraversa la connessione SSH cifrata fino al server SSH, che si connette quindi alla destinazione. L'applicazione locale comunica con localhost, mentre SSH trasporta il traffico in modo sicuro fino alla destinazione remota.
Caso d'uso del forwarding locale: accesso a un database
Un caso d'uso comune del port forwarding locale consiste nell'accedere a un database interno dietro un firewall. Con ssh -L 5432:db.internal:5432 user@bastion, il client PostgreSQL locale si connette a localhost:5432. Il bastion host inoltra questo traffico al server del database interno, che altrimenti non sarebbe raggiungibile da Internet.
Concetto di port forwarding remoto
Il port forwarding remoto (ssh -R remote_port:local_host:local_port user@ssh_server) associa una porta del server SSH remoto. Quando client esterni si connettono a quella porta remota, il traffico torna indietro attraverso il tunnel SSH fino al computer locale. In questo modo è possibile esporre un servizio in esecuzione localmente tramite un server connesso a Internet.
Caso d'uso del forwarding remoto: dietro NAT
Il forwarding remoto è particolarmente utile quando il computer si trova dietro NAT e non può ricevere direttamente connessioni in ingresso. Creando un tunnel inverso verso un server pubblico, si consente ai client esterni di raggiungere il servizio locale attraverso il server pubblico. Questa tecnica viene utilizzata anche da alcuni strumenti di accesso remoto e sistemi di gestione dei dispositivi IoT.
Port forwarding dinamico: proxy SOCKS5
Il port forwarding dinamico (ssh -D local_port user@ssh_server) crea un proxy SOCKS5 sul computer locale. Qualsiasi applicazione compatibile con SOCKS5 può instradare il traffico attraverso questo proxy, che risulterà provenire dal server SSH. In pratica, il traffico di navigazione viene instradato attraverso la rete remota, una soluzione utile per accedere a risorse soggette a restrizioni geografiche o aggirare i filtri della rete locale.
Tunnel inversi e implicazioni di sicurezza
I tunnel inversi sono potenti, ma introducono rischi per la sicurezza. Se un server consente GatewayPorts, le porte inoltrate in remoto diventano accessibili da Internet, non solo da localhost. Un aggressore che comprometta una macchina con un tunnel inverso potrebbe raggiungere i servizi interni. Le organizzazioni dovrebbero monitorare i tunnel inversi non autorizzati e limitare GatewayPorts nelle configurazioni SSH.
Controlli dei tunnel sul server SSH
La configurazione del server SSH controlla le funzionalità di tunneling. AllowTcpForwarding determina se il port forwarding locale e remoto è consentito. AllowStreamLocalForwarding determina se è consentito il forwarding dei socket Unix. Impostando questi parametri su no si disabilita il tunneling per tutti gli utenti; è anche possibile limitarli per singolo utente o gruppo. Disabilitare il forwarding non necessario riduce la superficie di attacco.
SSH come VPN con dispositivi tun
SSH supporta la creazione di interfacce di rete tun per il tunneling IP completo (ssh -w). In questo modo SSH diventa una VPN leggera in cui vengono instradati interi pacchetti IP, non solo connessioni TCP specifiche. PermitTunnel deve essere abilitato sul server. Sebbene sia meno efficiente dei software VPN dedicati, questo approccio non richiede software aggiuntivo e sfrutta l'infrastruttura SSH esistente.
Multiplexing delle connessioni
Il multiplexing delle connessioni SSH (impostazioni ControlMaster e ControlPath) riutilizza una connessione SSH esistente per le nuove sessioni. Questo accelera notevolmente le connessioni successive allo stesso host, il che è particolarmente utile negli ambienti con script. I tunnel possono inoltre rimanere attivi tra più sessioni SSH utilizzando la connessione condivisa.
Rilevamento dei tunnel SSH
Gli amministratori di rete possono rilevare il tunneling SSH attraverso schemi di traffico insoliti: connessioni TCP di lunga durata sulla porta 22, volumi di dati inaspettatamente elevati per connessioni che dovrebbero trasportare solo traffico da terminale oppure connessioni verso destinazioni note come sensibili dopo la loro instaurazione. L'ispezione approfondita dei pacchetti non può visualizzare il contenuto SSH, ma l'analisi dei metadati può segnalare comportamenti sospetti dei tunnel.
Best practice per la configurazione dei tunnel
Per gli utilizzi autorizzati, documenti tutti i tunnel e i relativi scopi. Utilizzi -N (nessun comando) con i tunnel per evitare di aprire una shell inutilmente e -f (in background) per eseguirli senza bloccare il terminale. Per i tunnel persistenti, utilizzi AutoSSH o l'attivazione dei socket di systemd, che riavviano automaticamente il tunnel se la connessione cade.
Port forwarding locale e remoto
Desidera esporre su Internet il server di sviluppo locale (in esecuzione sulla porta 3000) attraverso un server SSH pubblico. Quale tipo di forwarding dovrebbe utilizzare?
Riepilogo del tunneling SSH
Riepilogo del tunneling SSH: il forwarding locale (-L) consente di raggiungere in modo sicuro i servizi interni dalla propria macchina, il forwarding remoto (-R) espone i servizi locali attraverso un server pubblico, il forwarding dinamico (-D) crea un proxy SOCKS5 per instradare il traffico a livello applicativo, il forwarding tun abilita una VPN IP completa e AllowTcpForwarding sul server controlla queste funzionalità.
Impara Cryptology Academy con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 67
- Lezioni
- 261
Domande Frequenti
La lezione «Tecniche di tunneling SSH e port forwarding» è gratuita?
Sì — il testo completo di «Tecniche di tunneling SSH e port forwarding» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.
Cosa imparerò in «Tecniche di tunneling SSH e port forwarding»?
Padroneggi il port forwarding locale, remoto e dinamico e ne comprenda gli usi legittimi e quelli rilevanti per la sicurezza. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cryptology Academy?
Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Tecniche di tunneling SSH e port forwarding»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?
Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Handshake SSH e autenticazione con chiave host
- Autenticazione a chiave pubblica e agent forwarding
- Tecniche di tunneling SSH e port forwarding
- Hardening SSH e buone pratiche di audit