jueves, 1 de diciembre de 2011

SSH, qué es y cómo funciona

SSH (Secure Shell) se podría traducir como “intérprete de órdenes seguro”. Es un protocolo y el nombre del programa que lo implementa, y nos presenta una metodología a través de consola  que asegura desde la autenticación hasta el cierre de la sesión.
La primera versión del protocolo lo implementa el finlandés Tatu Ylöen en 1995 como versión de software libre, y a finales de ese mismo año crea la compañía SSH Communications Security, manteniendo la licencia gratuita para uso de investigación y particular, pero de pago para empresas. En 1999 empiezan a aparecer las primeras versiones libres, como OpenSSH y que es con la que trabajaremos en este artículo.

OpenSSH
OpenSSH es un conjunto de aplicaciones que permiten la administración de un equipo remoto de forma segura empleando el protocolo SSH. Estas aplicaciones son:
  • ssh: la aplicación principal de OpenSSH, y que utilizaremos para conectarnos a un servidor SSH.
  • scp: programa y protocolo. El protocolo es una metodología para transferencia de archivos sobre TCP, confiando su seguridad y autenticación en SSH, y el programa scp es el script cliente que ejecuta los pasos de este protocolo.
  • sftp: permite más operaciones que scp y que son más típicas de una conexión por FTP.
  • sshd: servidor demonio SSH (del lado servidor)
  • ssh-keygen: herramienta para inspeccionar y generar claves RSA y DSA que son usadas para la autenticación del cliente o usuario.
  • ssh-agent y ssh-add: herramientas para autenticarse de manera más sencilla, manteniendo las claves listas para no tener que volver a introducirlas en cada acceso.
  • ssh-keyscan: escanea una lista de clientes y recolecta sus claves públicas.
El web del proyecto OpenSSH en español es http://www.openssh.com/es/index.html


Cliente y servidor
La arquitectura de OpenSSH funciona de forma “Cliente – Servidor”, es decir, tenemos que contar con un servidor que permita conectarnos (de esto se encarga la aplicación sshd). Una vez hayamos configurado el servidor, nos podremos conectar a él por medio de cualquier cliente SSH. Una de los más conocidos para Windows es puTTY.

Autenticación
Lo que logra hacer SSH en cada sesión es “compartir un secreto” en un medio público. La autenticación se realiza mediante el algoritmo Diffie-Hellman (desarrollado por Whitfield Diffie y Martin Hellman) basado en una técnica de criptografía asimétrica. Se trata de un problema matemático de logaritmos discretos, ya que se aplican números primos en las funciones exponenciales (la inversa de las logarítmicas), por lo tanto no hay un continuo entre un valor y otro, sino un salto desde un valor primo hasta el siguiente valor primo. Estos saltos hacen que sea una escala discreta de valores, en vez de una escala continua.
Se puede obtener un valor de forma muy sencilla conociendo algunos parámetros, pero si se intentara se deberían realizar miles de millones de operaciones.
A diferencia de FTP o Telnet (en los que los datos van en texto plano), SSH la primera trama que enviará será un conjunto de valores (correspondientes al algoritmo Diffie-Hellman), junto a una serie de algoritmos que el cliente puede soportar. Con este conjunto de valores el servidor calcula su clave de sesión, y le responderá en una segunda trama, con otro conjunto de valores y también los algoritmos que este acepta. Al recibir esta segunda trama, el cliente ya puede resolver la clave de sesión que será la misma que resolvió el servidor, y esta clave será con la que se cifrará todo a partir de la siguiente trama, en la que se empezará a enviar el  usuario, la contraseña y el resto de información hasta cerrar la sesión SSH.
Por lo tanto, únicamente viajan dos tramas en texto plano, pero en ellas no se ha enviado ningún dato privado. Y si fueran interceptadas estas tramas por otro ordenador, no servirían de nada.

Túneles SSH
Al establecerse la conexión SSH queda formado un túnel entre ambos equipos, es decir, sólo entra al mismo quien tenga permiso, y todo aquel que pueda capturar su tráfico no debe tener forma de interpretarlo, ni modificarlo, ni desviarlo de su destino. Al crear un túnel, se establece una red particular entre ambos (VPN, Virtual Private Network).

En la siguiente entrada, practicaremos con SSH viendo algunos de los usos más comunes, así como sus archivos de configuración, creación de llaves, etc.


Parte de esta entrada ha sido extraída del libro Seguridad por Niveles, de Alejandro Corletti Estrada. Publicado con permiso del autor.

0 comentarios:

Publicar un comentario