Secure Shell
I♥SSH

Table of Contents

1 Túnels SSH

1.1 Túnels a nivell d'aplicació

L'objectiu d'aquests tipus de túnels no és altre que obrir ports que transportin la comunicació, com forats de cuc, a un altre xarxa. Per tant normalment definirem el punt d'entrada d'aquest túnel (port local) i el punt de sortida (port remot). Recordem que un port no deixa de ser un socket on està escoltant un dimoni del sistema, i per tant el que fem és establir comunicacions entre ports -> sockets -> aplicacions.

1.1.1 Connexions port a port

  1. Obrir un port local que connecti amb un port remot

    Imaginem que volem obrir un port local que ens connecti directament amb un servei que està en un altre xarxa, per exemple un servei MySQL (port 3306). L'opció a utilitzar serí -L i la seva sintàxis aquesta:

    ssh -L <port_local>:<equip_remot>:<port_remot> <servidor_SSH>
    

    El primer escenari imaginable és que el servidor MySQL estigui en el mateix servidor SSH. Per tant tindriem quelcom així:

    vpn_app-1.jpg

    Per tant, si volem un port local obert que comuniqui amb el remot (i que els dos siguin el matiex, que no és imprescindible) faríem:

    ssh -L 3306:localhost:3306 172.16.1.100
    

    Però el servidor MySQL no necessàriament ha de ser el mateix que el SSH, tan sols estar en la mateixa xarxa. En aquest cas l'escenari sería:

    vpn_app-2.jpg

    ssh -L 3306:172.16.1.111:3306 172.16.1.100
    
  2. Exposició d'un port local al servidor SSH remot

    Si volem exposar un servei local (per exemple un MySQL del nostre equip o de la nostra xarxa) i que quan el servidor SSH accedeixi a un port concret vagi a parar a aquest servei podem fer servir el paràmetre -R:

    ssh -R <port_loca>:<equip_nostre_xarxa>:<port_remot> <servidor_ssh>
    

    En cas que el equip que contingui el servei MySQL sigui el nostre localhost tindriem:

    vpn_app-3.jpg

    ssh -R 3306:localhost:3306 172.16.1.100
    

    En cas que el servei MySQL estigui en un equip de la nostra xarxa local tindrem:

    vpn_app-4.jpg

    ssh -R 3306:192.168.0.123:3306 172.16.1.100
    

1.1.2 Connexions port a xarxa

Si volem que tot el que enviem cap a un port local vagi a parar a la xarxa remota i a partir d'allà enruti de forma normal, com si fos tràfic intern pròpi, farem servir l'opció -D amb la següent sintàxis:

ssh -D <port_local> <ip_servidor_SSH>

Així doncs si volguessim per exemple redirigir tot el tràfic del nostre navegador web i enviar-lo cap a la xarxa del servidro remot SSH tindríem un escenari com aquest:

vpn_app-5.jpg

La comanda a executar sería per exemple, obrint el port local 9999:

ssh -D 9999 172.16.1.100

I després configurar la nostra aplicació per utilitzar localhost:9999 com a servidor proxy socks.

vpn_app-6.jpg

ATENCIÓ: Cal notar aquí que amb el navegador podriem accedir ara a aplicaicons web internes, no publicades a Internet, i també sortir cap a Internet utilitzant la IP pública de la xarxa remota.

1.2 TODO Túnels a nivell de xarxa

A diferència dels túnels a nivell d'aplicació on el que feiem era connectar ports/aplicacions mitjançant SSH aquí el que farem serà crear una xarxa punt a punt. Això esdevindrà en una nova interfície de xarxa tant en el nostre client com en el servidor SSH que permetrà connectar el equip client i que aquest pugui treballar com un equip local de la xarxa remota.

Per aconseguir-ho necessitarem realitzar una sèrie de passos:

1.- Configuracions a fer en el servidor SSH:

Activar el forwarding a nivell de kernel en el servidor SSH:

echo "1" > /proc/sys/net/ipv4/ip_forward

Modificar els següents paràmetres en la configuració del servidor ssh (/etc/ssh/sshd_config):

PermitTunnel yes

2.- Establir el túnel punt a punt amb SSH emprant el paràmetre -w:

ssh -NTCf -w <id_tun_local>:<id_tun_remot> <srv_ssh>

Per tant en el exemple faríem:

ssh -NTCf -w 0:0 1.2.3.4

Aquí cal remarcar les opcions i paràmetres utilitzats:

-N
(opcional) No executar comandes remotes.
-T
(opcional) Desactiva la terminal (tty).
-C
(opcional) Demana utilitzar compressió.
-f
(opcional) Intenta executar el ssh en segon plà.
-w 0:0
Estableix la connexió punt a punt utilitzant una nova interfície anomenada ~tun~+/id/, especificant primer el id local i després el remot.

Un cop arribat aquí podem verificar amb ip a que tant en el equip local com en el servidor ssh que ja tenim una nova interfície tun0, però sense configurar.

2 TODO Hardering SSH

2.1 Paràmetres bàsics

2.2 Certificats digitals

2.3 Doble factor amb Google Authenticator

2.4 Port Knocking

3 TODO Altres opcions SSH interessants

3.1 Entorn gràfic amb X11

4 TODO Altres aplicacions sobre SSH

4.1 SSHFS

4.2 sFTP

5 Webgrafía

6 [0/1] ToDo

  • [ ] Passar corrector.

Date: 2020-11-24 dt. 00:00

Author: Raul Gimenez Herrada

Created: 2020-11-25 dc. 20:02

Validate