Esta página da cuenta de algunos protocolos de transporte y de autenticación relativamente conocidos y de cómo se relacionan con los contenidos del curso y cómo son de utilidad para un estudiante de Informática decente1).
TOBEDONE →IPSec
SSH es un protocolo de comunicación que se sienta al menos Capa 7 (Aplicación) del Modelo OSI, y que provee una interface “segura” para acceder al intérprete de comandos (shell de UNIX) de una máquina en forma remota. En estricto rigor SSH cubre las capas 5—7 del OSI, porque provee la interface de conexión de la aplicación (capa 7), un procedimiento para (de)encriptación y transferencia (capa 6) y gestión de autenticación de sesión con/sin encriptación por canales especiales (capa 5).
Esto significa que con SSH es posible loguear a una máquina remota que usa Linux y operar con ella como si estuviéramos físicamente sentados frente a ella, en cuanto a lo que a líneas de comandos respecta. O sea, mientras no hagamos sudo ifdow eth0
o cualquier cosa que desconecte la red, la terminal es nuestra.
Bajo distribuciones de Linux, para obtener SSH se instala el paquete OpenSSH, bajo el nombre usual de ssh-client
. Esto permite conectarse a otras máquinas. Para instalar el servidor, que permite conectarse a la máquina local desde otros puntos de red, se instala el paquete del servidor llamado ssh-server
en distribuciones RedHat como Fedora, o openssh-server
en distribuciones como (X/K/Edu)Ubuntu.
Para conectarse a una máquina remota el protocolo SSH hace uso del puerto 22, y provee de aplicaciones que permiten ejecutar transacciones SSH a la máquina remota:
ssh
(a secas), es el cliente que realiza la conexión al intérprete de comandos remoto.scp
es un cliente similar a cp
para copiar archivos.ssh-agent
es un agente que almacena claves y logins de SSH para facilitar el uso repetido de éstas.ssh-keygen
permite generar Llaves de Autenticación.Por ejemplo:
Acceder a nuestra terminal de usuario en la máquina remota remoto.cl
:
[yo@mipc ~]> ssh usuario@remoto.cl remoto.cl - usuario·s password: _ Welcome. [usuario@remoto.cl ~]>
scp
(“secure cp”) es el cliente para copiar archivos a la máquina remota.Por ejemplo:
Copiar un himno nacional a mi cuenta en la máquina remota remoto.cl
:
[yo@mipc ~]> scp /media/cdrom/La_Marseillaise.ogg usuario@remoto.cl:mimusica/himnos usuario·s password: Copying [===========35% ] 01:20 1646 KiB [yo@mipc ~]>
Algunas opciones interesantes de ssh
:
Opción | Argumento | Descripción |
---|---|---|
Túnel dinámico | ssh -Dnnnn | Crear un puente SOCKS por el puerto nnnn |
local | Puerto local en el cual abrir la conexión. |
target:port | Máquina y puerto remotos a los cuales conectar, resueltos desde el host SSH. |
Concepto de “túnel SSH”, muy bien explicado. Fuente: BlogRicardo [1] |
Establece una conexión a nuestro destino utilizando un puente el cual es la máquina target
en la cual tenemos acceso a una cuenta. Con esto se puede tunelear la conexión, es decir pasar la responsabilidad al target
para que derive las conexiones SSH que hacemos hacia ella. De este modo se puede por ejemplo, acceder a la red interna de la cual target
es un gateway, o derivar tráfico de un servicio TCP como mensajería instantánea o navegación web usando una máquina target
cuyo tráfico no está bloqueado.
La utilidad de un túnel es variada, permitiendo cosas como por ejemplo redirigir seguramente un servicio crítico entre dos firewalls. Es también una manera de saltar las restricciones de cortafuegos en instituciones “antilibertarias”.
Hay que tomar en cuenta que el destino del puente (target:port
) se resuelve desde el host al que nos estamos conectando, por tanto los nombres e IPs se resuelven desde su red, no desde la nuestra. Por ejemplo, el siguiente comando:
ssh -L 9990:192.168.20.131:5906 myremoteuser@192.168.5.80
Abre una conexión desde nuestro puerto local 9990
a la máquina con IP 192.168.20.131
, pero no a la que responde a nosotros con esa IP, sino a la que responde al servidor 192.168.5.80
. Por tanto si estamos en una red distinta a la del servidor SSH, estamos abriendo puertos a las máquinas de su red, no de la nuestra. De esta forma es posible conectar por SSH a servicios de red que están localizados detrás de un router o en una intranet (provisto, claro, que tengamos acceso al router o a una IP p´ublica).
TOBEDONE Ejemplo de túnel
Opción | Argumento | Descripción |
---|---|---|
Túnel dinámico | ssh -Dnnnn | Crear un puente SOCKS por el puerto nnnn |
nnnn | Un puerto remoto desocupado en la máquina local. |
Al cambiar el tipo de conexión a un puente SOCKS (usando -Dnnnn
), es posible conectar directamente a esa máquina remota y usarla como proxy en cualquier aplicación que sopore SOCKS, por ejemplo Firefox. Este tipo de proxy tiene la ventaja que no es necesario que la aplicación que usa el proxy sepa que está siendo tunelizada.
Por ejemplo, si hacemos:
ssh -D4321 miusuario@remoto.cl
Y luego procedemos a configurar Firefox como sigue:
Podremos conectarnos a Internet como si estuviéramos físicamente conectados a remoto.cl
.
Opción | Argumento | Descripción |
---|---|---|
Autenticar | ssh -i llave_priv | Antenticar usando una llave privada (RSA/DSA) en vez de un par usuario-contraseña |
Con ssh -i
podemos utilizar nuestras propias claves de autenticación o identificadores en la forma de archivos de texto que contienen una clave pública (o privada) RDA/DSA. Estos archivos son en realidad pares de claves privada/pública en sistema RSA o DSA. Simplemente nos quedamos nosotros con la llave privada, y otorgamos acceso a la clave pública a la máquina a la cual nos queremos conectar, almacenando la llave pública bajo /home/usuario/.ssh/
. Cuando tratemos de conectarnos con SSH usando la cuenta de usuario usuario
, el sistema remoto nos lanzará un “desafío” en la forma de un mensaje encriptado con la clave pública que le hemos provisto. Como nosotros y sólo nosotros tenemos la clave privada, nuestro cliente SSH puede desencriptar el mensaje y “responder” al desafío remoto, demostrando que somos quien decimos ser para que el servidor remoto nos autorice el acceso.
[] Este método de autenticación por medio de un desafío de un sistema público es el método para el cual los pendrives, originalmente llamados usb keys (llaves USB) fueron inventados originalmente.
TOBEDONE Procedimiento para crear una llave SSH
Con el método anterior es posible crear cuentas de usuario accesibles sólo vía SSH para ejecutar tareas de red por este medio, por ejemplo: backup de directorios a un servidor principal, sin necesidad de conectar a la máquina con una contraseña. De este modo es posible usar este proceso en forma desatentida (automatizada).
Los pares de claves se crean con la utilidad especial ssh-keygen
.
Ver ⇒ ssh-remote-mount
TOBEDONE Colocar más información e imágenes.