encriptaciones tipo cebolla en comandos ssh multi-hop

0

En lo que podríamos llamar el ejemplo canónico de múltiples saltos ssh , podemos ver que el siguiente comando enrutaría el tráfico ssh del usuario a través de tres nodos consecutivos (ficticios):

ssh ruapehu.example.com ssh aoraki ssh tongariro

llamado ruapehu.example.com, aorakiy tongariro. El ejemplo simplifica la configuración mediante el uso de comandos proxy. Una debilidad en el esquema es que los dos primeros nodos pueden leer el tráfico, mientras que sería mejor si no pueden hacerlo. Si logramos introducir los comandos [cifrar] y [descifrar] en la cadena, en realidad podemos acercarnos a lo que hace la red tor. Otro problema es cómo introducir el reenvío de puertos en la cadena de múltiples saltos. Lo siguiente obviamente no funcionará, pero es más o menos lo que me gustaría hacer:

[cifrar] ssh ruapehu.example.com ssh aoraki ssh tongariro [descifrar] -L 80: somesite.com: 80

¿Alguien podría hacer que algo así funcione?

erik
fuente

Respuestas:

1

Hiciste dos preguntas:

  1. ¿Cómo podemos asegurarnos de que el tráfico a través de los hosts intermedios no se 'olfatee'?

La respuesta es que no necesitas hacer nada. CADA conexión ssh está encriptada. El tráfico "visto" por ruapehuy aorakino está a la vista. No necesita agregar ninguna capa de cifrado adicional.

  1. ¿Cómo puede habilitar el reenvío de puertos al destino?

La respuesta más fácil es usar el ~/.ssh/configarchivo y agregar una directiva solo para el destino, como en (tomando prestado de su propia referencia, agregando solo la última línea):

Host ruapehu
  HostName ruapehu.example.com

Host aoraki
  ProxyCommand ssh -q ruapehu nc -q0 aoraki 22

Host tongariro
  LocalForward 80:somesite.com:80
  ProxyCommand ssh -q aoraki nc -q0 %h 22

Es decir, suponiendo que puede abrir el puerto 80 en su host local, de lo contrario es posible que tenga que usar un puerto no privilegiado, algo por encima de 1024 (dependiendo de su host y configuración).

garceta carmesí
fuente
0

Si crea un puerto reenviado desde su máquina a la máquina de destino en un solo paso y luego emite una conexión SSH sobre ese puerto reenviado, alcanzará básicamente lo que describió en su último ejemplo.

  1. Cree el reenvío de puertos:

    # jump from aoraki -> tongariro
    ssh ruapehu.example.com "ssh -L 2222:tongariro:22 aoraki" 
    # jump from ruapehu.example.com -> aoraki
    ssh -L ruapehu.example.com:2222:aoraki:2222 ruapehu.example.com
    

    Esto espera que haya configurado su servidor con la adecuada GatewayPorts, por lo que podrá vincular el puerto 2222 desde el exterior.

  2. Inicie una nueva sshconexión al servidor de destino:

    ssh -p 2222 ruapehu.example.com
    

    Esta conexión se cifrará en todos los pasos intermedios y también puede configurar otro reenvío de puertos a través de ella.

Jakuje
fuente