Com s'utilitza el túnel SSH per accedir a servidors restringits i navegar de manera segura
Un client SSH es connecta a un servidor Secure Shell, que permet executar ordres de terminal com si estigués assegut davant d’un altre ordinador. Però un client SSH també us permet "tunelitzar" un port entre el vostre sistema local i un servidor SSH remot.
Hi ha tres tipus diferents de túnels SSH i s’utilitzen tots per a propòsits diferents. Cadascun implica utilitzar un servidor SSH per redirigir el trànsit d’un port de xarxa a un altre. El trànsit s’envia per la connexió SSH xifrada, de manera que no es pot controlar ni modificar durant el trànsit.
Podeu fer-ho amb ssh
inclosa a Linux, macOS i altres sistemes operatius similars a UNIX. Al Windows, que no inclou cap ordre ssh integrada, recomanem l'eina gratuïta PuTTY per connectar-vos als servidors SSH. També és compatible amb el túnel SSH.
Reenviament de ports locals: feu accessible els recursos remots al vostre sistema local
El "reenviament de ports locals" us permet accedir a recursos de xarxa locals que no estan exposats a Internet. Per exemple, suposem que voleu accedir a un servidor de bases de dades a la vostra oficina des de casa vostra. Per motius de seguretat, aquest servidor de base de dades només està configurat per acceptar connexions des de la xarxa d’oficines locals. Però si teniu accés a un servidor SSH a l’oficina i aquest servidor SSH permet connexions des de fora de la xarxa d’oficines, podeu connectar-vos a aquest servidor SSH des de casa i accedir al servidor de bases de dades com si estiguéssiu a l’oficina. Sovint és així, ja que és més fàcil assegurar un únic servidor SSH contra atacs que no pas assegurar diversos recursos de xarxa.
Per fer-ho, heu d’establir una connexió SSH amb el servidor SSH i dir-li al client que reenviï el trànsit des d’un port específic des del vostre PC local (per exemple, el port 1234) a l’adreça del servidor de la base de dades i del seu port a la xarxa d’oficines. Per tant, quan intenteu accedir al servidor de base de dades al port 1234 del vostre ordinador actual, "localhost", aquest trànsit es "tunelitza" automàticament per la connexió SSH i s'envia al servidor de base de dades. El servidor SSH es troba al centre, reenvia el trànsit d’anada i tornada. Podeu utilitzar qualsevol línia d’ordres o eina gràfica per accedir al servidor de base de dades com si s’executés al vostre PC local.
Per utilitzar el reenviament local, connecteu-vos al servidor SSH normalment, però també proporcioneu el fitxer -L
argument. La sintaxi és:
ssh -L local_port: remote_address: remote_port [email protected]
Per exemple, suposem que el servidor de base de dades de la vostra oficina es troba al 192.168.1.111 de la xarxa d’oficines. Teniu accés al servidor SSH de l’oficina a ssh.youroffice.com
, i el vostre compte d'usuari al servidor SSH és bob
. En aquest cas, la vostra ordre tindria aquest aspecte:
ssh -L 8888: 192.168.1.111: 1234 [email protected]
Després d’executar aquesta ordre, podreu accedir al servidor de base de dades al port 8888 de localhost. Per tant, si el servidor de base de dades oferia accés web, podeu connectar // localhost: 8888 al navegador web per accedir-hi. Si teniu una eina de línia d’ordres que necessita l’adreça de xarxa d’una base de dades, la dirigiríeu a localhost: 8888. Tot el trànsit enviat al port 8888 del vostre PC es tunelitzarà a 192.168.1.111:1234 a la xarxa de la vostra oficina.
És una mica més confús si voleu connectar-vos a una aplicació de servidor que s’executa al mateix sistema que el propi servidor SSH. Per exemple, suposem que teniu un servidor SSH que s’executa al port 22 del vostre ordinador d’oficina, però també teniu un servidor de base de dades que s’executa al port 1234 del mateix sistema a la mateixa adreça. Voleu accedir al servidor de bases de dades des de casa, però el sistema només accepta connexions SSH al port 22 i el seu tallafoc no permet cap altra connexió externa.
En aquest cas, podeu executar una ordre com la següent:
ssh -L 8888: localhost: 1234 [email protected]
Quan intenteu accedir al servidor de base de dades al port 8888 del vostre PC actual, el trànsit s’enviarà per la connexió SSH. Quan arriba al sistema que executa el servidor SSH, el servidor SSH l’enviarà al port 1234 a “localhost”, que és el mateix PC que executa el propi servidor SSH. Per tant, el "localhost" de l'ordre anterior significa "localhost" des de la perspectiva del servidor remot.
Per fer-ho a l'aplicació PuTTY del Windows, seleccioneu Connexió> SSH> Túnels. Seleccioneu l'opció "Local". A "Port d'origen", introduïu el port local. A "Destinació", introduïu l'adreça i el port de destinació al formulari adreça_remota: port_remot.
Per exemple, si voleu configurar el mateix túnel SSH que l'anterior, hi entraria 8888
com a port d'origen i localhost: 1234
com a destinació. Feu clic a "Afegeix" després i feu clic a "Obre" per obrir la connexió SSH. També haureu d’introduir l’adreça i el port del propi servidor SSH a la pantalla principal “Sessió” abans de connectar-vos, és clar.
Reenviament de ports remots: feu accessibles els recursos locals en un sistema remot
El "reenviament de ports remots" és l'oposat al reenviament local i no s'utilitza amb tanta freqüència. Us permet fer que un recurs al vostre PC local estigui disponible al servidor SSH. Per exemple, suposem que executeu un servidor web al PC local al qual esteu assegut. Però el vostre PC està darrere d’un tallafoc que no permet el trànsit entrant al programari del servidor.
Suposant que podeu accedir a un servidor SSH remot, podeu connectar-vos a aquest servidor SSH i utilitzar el reenviament de ports remots. El vostre client SSH indicarà al servidor que reenviï un port específic (per exemple, el port 1234) del servidor SSH a una adreça i port específics del vostre PC o xarxa local actuals. Quan algú accedeixi al port 1234 al servidor SSH, aquest trànsit es "tunelitzarà" automàticament a través de la connexió SSH. Qualsevol persona que tingui accés al servidor SSH podrà accedir al servidor web que s’executa al vostre PC. Aquesta és efectivament una manera de fer túnels a través dels tallafocs.
Per utilitzar el reenviament remot, utilitzeu el fitxer ssh
ordre amb el fitxer -R
argument. La sintaxi és en gran mesura la mateixa que amb el reenviament local:
ssh -R remote_port: local_address: local_port [email protected]
Suposem que voleu que una aplicació de servidor escolti al port 1234 del vostre PC local disponible al port 8888 del servidor SSH remot. L’adreça del servidor SSH és ssh.youroffice.com
i el vostre nom d'usuari al servidor SSH és bob. Executaria l'ordre següent:
ssh -R 8888: localhost: 1234 [email protected]
Aleshores algú es podria connectar al servidor SSH al port 8888 i aquesta connexió es canalitzaria a l'aplicació del servidor que s'executa al port 1234 del PC local des del qual heu establert la connexió.
Per fer-ho a PuTTY al Windows, seleccioneu Connexió> SSH> Túnels. Seleccioneu l'opció "Remot". A "Port font", introduïu el port remot. A "Destinació", introduïu l'adreça i el port de destinació al formulari adreça_local: port_local.
Per exemple, si voleu configurar l'exemple anterior, hi entraria 8888
com a port d'origen i localhost: 1234
com a destinació. Feu clic a "Afegeix" després i feu clic a "Obre" per obrir la connexió SSH. També haureu d’introduir l’adreça i el port del propi servidor SSH a la pantalla principal “Sessió” abans de connectar-vos, és clar.
Les persones podrien connectar-se al port 8888 al servidor SSH i el seu trànsit es canalitzaria al port 1234 del vostre sistema local.
Per defecte, el servidor SSH remot només escoltarà les connexions del mateix amfitrió. Dit d’una altra manera, només es podran connectar les persones del mateix sistema que el propi servidor SSH. Això és per motius de seguretat. Haureu d’activar l’opció "GatewayPorts" a sshd_config al servidor SSH remot si voleu anul·lar aquest comportament.
Reenviament dinàmic de ports: utilitzeu el servidor SSH com a servidor intermediari
RELACIONATS:Quina diferència hi ha entre una VPN i un servidor intermediari?
També hi ha un "reenviament dinàmic de ports", que funciona de manera similar a un servidor intermediari o VPN. El client SSH crearà un servidor intermediari SOCKS que podeu configurar per utilitzar les aplicacions. Tot el trànsit enviat a través del servidor intermediari s’enviaria a través del servidor SSH. Això és similar al reenviament local: pren el trànsit local enviat a un port específic del vostre PC i l’envia per la connexió SSH a una ubicació remota.
RELACIONATS:Per què pot ser perillós utilitzar una xarxa Wi-Fi pública, fins i tot quan s’accedeix a llocs web encriptats
Per exemple, suposem que utilitzeu una xarxa Wi-Fi pública. Voleu navegar de forma segura sense deixar-vos escapar. Si teniu accés a un servidor SSH a casa, podeu connectar-vos-hi i fer servir el reenviament de ports dinàmics. El client SSH crearà un servidor intermediari SOCKS al vostre PC. Tot el trànsit enviat a aquest servidor intermediari s’enviarà per la connexió del servidor SSH. Ningú que vigili la xarxa Wi-Fi pública no podrà controlar la vostra navegació ni censurar els llocs web als quals podeu accedir. Des de la perspectiva de qualsevol lloc web que visiteu, serà com si estiguéssiu assegut davant del vostre PC a casa. Això també significa que podeu utilitzar aquest truc per accedir a llocs web només als Estats Units fora dels EUA, suposant que teniu accés a un servidor SSH als Estats Units, és clar.
Com a exemple més, és possible que vulgueu accedir a una aplicació de servidor multimèdia que tingueu a la vostra xarxa domèstica. Per motius de seguretat, només podeu tenir un servidor SSH exposat a Internet. No es permeten les connexions entrants des d'Internet a l'aplicació del servidor de suports. Podeu configurar el reenviament de ports dinàmics, configurar un navegador web per utilitzar el servidor intermediari SOCKS i, després, accedir als servidors que s’executen a la xarxa domèstica a través del navegador web com si estiguéssiu davant del vostre sistema SSH a casa. Per exemple, si el servidor de suports es troba al port 192.168.1.123 de la vostra xarxa domèstica, podeu connectar l'adreça 192.168.1.123
a qualsevol aplicació que utilitzi el servidor intermediari SOCKS i accedireu al servidor multimèdia com si estigués a la vostra xarxa domèstica.
Per utilitzar el reenviament dinàmic, executeu l'ordre ssh amb el fitxer -D
argument, així:
ssh -D [email protected]
Per exemple, suposem que teniu accés a un servidor SSH a ssh.yourhome.com
i el vostre nom d'usuari al servidor SSH és bob
. Voleu fer servir el reenviament dinàmic per obrir un servidor intermediari SOCKS al port 8888 del PC actual. Executaria l'ordre següent:
ssh -D 8888 [email protected]
A continuació, podeu configurar un navegador web o una altra aplicació per utilitzar la vostra adreça IP local (127.0.01) i el port 8888. Tot el trànsit d’aquesta aplicació es redirigiria a través del túnel.
Per fer-ho a PuTTY al Windows, seleccioneu Connexió> SSH> Túnels. Seleccioneu l'opció "Dinàmica". A "Port d'origen", introduïu el port local.
Per exemple, si voleu crear un servidor intermediari SOCKS al port 8888, hi entrareu 8888
com a port d'origen. Feu clic a "Afegeix" després i feu clic a "Obre" per obrir la connexió SSH. També haureu d’introduir l’adreça i el port del propi servidor SSH a la pantalla principal “Sessió” abans de connectar-vos, és clar.
A continuació, podeu configurar una aplicació per accedir al servidor intermediari SOCKS del vostre PC local (és a dir, l'adreça IP 127.0.0.1, que apunta al vostre PC local) i especificar el port correcte.
RELACIONATS:Com configurar un servidor intermediari al Firefox
Per exemple, podeu configurar Firefox per utilitzar el servidor intermediari SOCKS. Això és particularment útil perquè Firefox pot tenir la seva pròpia configuració de servidor intermediari i no ha d’utilitzar la configuració de servidor intermediari a tot el sistema. Firefox enviarà el seu trànsit a través del túnel SSH, mentre que altres aplicacions utilitzaran la vostra connexió a Internet normalment.
Quan feu això al Firefox, seleccioneu "Configuració manual del servidor intermediari", introduïu "127.0.0.1" al quadre d'amfitrió SOCKS i introduïu el port dinàmic al quadre "Port". Deixeu els quadres Proxy HTTP, Proxy SSL i FTP Proxy buits.
El túnel romandrà actiu i obert mentre tingueu oberta la connexió de sessió SSH. Quan finalitzeu la sessió SSH i us desconnecteu d'un servidor, el túnel també es tancarà. Simplement torneu a connectar-vos amb l’ordre adequat (o les opcions adequades a PuTTY) per tornar a obrir el túnel.