Que es i per a que serveix un tunels SSH?

Recentment he descobert una eina molt útil: els túnels SSH. No només son pràctics per navegar de forma privada i segura sinó que també ens poden permetre arribar a servidors o serveis als que no tenim accés des de l’ordinador que ens estem connectant.

Primer us explicaré com funciona i posteriorment la implementació que n’he fet en el meu cas particular.

Com funciona?

Podriem resumir-ho dient, que un túnel SSH ens permet comunicar-nos des de un ordinador A a un ordinador C (per exemple un servidor web) com si ens estiguem connectat des de un ordinador B (servidor intermedi). Una altre manera de dir-ho seria explicant que B suplanta a A desde el punt de vista de C.

Segurament la millor manera de veure-ho es mitjançant imatges. La manera habitual de connectar-nos a una web segueix un esquema com aquest:

Però aquest tipus de connexió presenta problemes de seguretat si ens estem connectant des de una xarxa publica (aeroport, cafeteria, biblioteca…) ja que les nostres comunicacions poden ser espiades, inclus abans d’arribar a Internet, per usuaris connectats a la mateixa xarxa que nosaltres.

Una manera d’evitar-ho es que l’ordinador que s’encarrega de comunicar-se amb la web estigui fora de la xarxa publica de manera que les nostres dades corrin menys perill, però com es obvi, necessitarem que la comunicació entre el nostre ordinador (A) i el servidor intermedi (B) sigui segura. Una manera de fer-ho es iniciant la comunicació entre aquests dos ordinadors per SSH, que es un protocol xifrat.

L’esquema de comunicació proposat vindria a ser similar a aquest (òbviament el servidor SSH no tindrà connexió directe amb el servidor web, sinó que passarà per Internet, però espero que s’entengui).

D’aquesta manera el nostre ordinador comptarà amb una connexió segura fins la web (C) i a més es possible que ens puguem saltar alguna que altre mesura de seguretat configurada en firewall/proxy de la xarxa publica en la que estem connectats, ja que al disposar d’una connexió xifrada entre el nostre ordinador i el servidor intermitg, no es pot saber que s’està comunicant pel “tunel” i òbviament no poden actuar sobre la comunicació que te el servidor SHH amb el de la web, ja que està fora de la seva xarxa.

Com us deia anteriorment aquesta arquitectura també pot ser molt útil en el cas que tinguem que accedir de forma remota a un servidor al que no tenim permisos des de l’ordinador en el que estem. Per exemple, estem de “vacances” i hem de re-iniciar un servidor de base de dades de l’empresa al qual només es pot accedir des de dins de la xarxa empresarial. Tot i que el millor sistema de fer-ho seria connectant-se a la VPN empresarial, el sistema proposat seria una alternativa si l’empresa disposes d’un servidor amb accés a internet al qual poguéssim obrir un túnel SSH, per així aconseguir connectar-nos al servidor de base de dades com si ho estiguessis fent des de la xarxa empresarial.

Implementació

En l’apart anterior us explicava la teoria per a que entengueu el concepte i sigueu capaços d’implementar-ho de manera que us resulti útil en el vostre cas.

De totes maneres, a mode d’exemple explicaré com ho he implementat jo que treballo amb clients Windows.

Com comentava anteriorment necessiteu un ordinador fora de la xarxa que faci de pont entre l’ordinador en el que esteu i al que es vol arribar (típicament un servidor web). Donat que aquest procés te una afectació pràcticament nul·la sobre qualsevol ordinador actual, faig una instància micro de Google Cloud. Per fer-ho, només us heu de d’assegurar que teniu obert el port que fareu servir (per defecte el 22) i que està ences el servei SSH per posteriorment connectar-vos al servidor (en el meu cas, faig servir el client PuTTy)

Tindreu que tenir una configuració especifica tant al PuTTy com en els programes que vulgueu que facin servir la connexió SSH.

En el vostre client SSH haureu de configurar-lo de manera que re-direccioneu els ports del vostre ordinador als del servidor. Això en el cas del Putty ho podeu fer així (Connection->SHH->Tunnels)

En aquest cas no es particularment interessant saber contra quin port del servidor es fa el “mapping” del port de l’ordinador client, però com es pot observar es podria arribar a configurar.

Després només ens haurem de connectar normalment al servidor per SSH

Encara ens queda configurar el programa que vulguem fer servir de forma privada de manera que es pensi que estem darrera d’un proxy i que ha de fer servir un port concret (el mateix port que hem configurat en el client SSH). En el cas del Firefox (Opcions->General->Paràmetres de xarxa)

A partir d’aquest moment sempre que haguem obert sessió SSH en el servidor mitjançant el PuTTy, les comunicacions entre el nostre dispositiu i la resta d’Internet es farà passar a traves del servidor que hem configurat i com la comunicació entre els dos esta encriptada podem dir que es segura.

Limitacions

La única pega que te aquest sistema es que el firewall de la xarxa on estem connectats ha de permetre la connexió al port que fem servir per establir la connexió (en el cas de l’exemple, el port 22). No es habitual que les xarxes publiques o de llocs de pas tinguin habilitat aquest port, per tant lo ideal seria que en comptes de d’obrir el port 22 en el servidor, s’utilitzi un que difícilment pugui ser tancat per una xarxa publica, com per exemple el port 80 (http) o el 443 (https).

Es probable que el nostre servidor tingui aquests port utilitzats per un altre servei (un servidor web per exemple). En un altre post explicaré com fer servir un mateix port per diferents serveis de manera que ens poguem saltar aquesta limitació.

Font : https://geekland.eu/que-es-y-para-que-sirve-un-tunel-ssh/

Leave a comment

Your email address will not be published. Required fields are marked *