SSH es un protocolo de red y un conjunto de estándares
que permiten una conexión encriptada entre dos computadoras.
Usa criptografía de clave pública para autentificar al computador
y al usuario. Por defecto suele usar el puerto TCP
22.
SSH se usa para acceder a una máquina remota y ejecutar comandos en una
máquina remota. También sirve para proteger conexiones inseguras
y transferir ficheros de manera segura.
SSH utiliza un modelo cliente-servidor.
Un programa cliente (normalmente denominado ssh
)
es utilizado para establecer una conexión a otro programa que da el
servicio y que se ejecuta en la máquina remota (normalmente denominado sshd
o SSH daemon).
SSH soporta autentificación basada en RSA y DSA.
RSA fué el primer algoritmo
publicado que permite el cifrado y la firma digital. Se cree que es seguro
si las claves son lo suficientemente largas. Se usa aún en comercio electrónico.
La alternativa mas usada es DSA cuyas inciales corresponden
a Digital Signature Algorithm. DSA
es propiedad del gobierno de los Estados Unidos de America.
Hay criptosistemas -a los que RSA pertenece - en los cuales el cifrado
y desencriptado se hace utilizando claves separadas y no es posible derivar la clave de
desencriptado del conocimiento de la clave de encriptado.
El cliente utiliza un par de claves pública/privada para la autentificación.
El servidor sólo conoce la clave pública. Funciona como una pareja llave/cerradura
en la que el conocimiento de la cerradura no permite deducir
la forma de la llave.
- Tatu Ylönen diseña y publica la primera versión del protocolo SSH (SSH-1)
- Ylönen funda SSH Communications Security a finales de 1995. La versión original - que usaba software libre - evoluciona
a software propietario
- Aparece en 1996 el protocolo SSH-2, que es incompatible con SSH-1.
Se mejora la seguridad (via el algoritmo Diffie-Hellman para
el intercambio de claves) y la comprobación de la integridad via mensajes de autentificación.
Además permite ejecutar un número arbitrario de sesiones shell sobre una única conexión
SSH.
- En 1998 se encuentra una vulnerabilidad en SSH 1.5. El fallo ha sido resuelto
en la mayoría de las implementaciones
- En 1999 comienza el desarrollo de lo que será la primera versión abierta de SSH: OpenSSH
- En 2005 OpenSSH se convierte en la implementation ssh mas popular
- El protocolo SSH-2 protocol es propuesto como Internet estandard en 2006
- En el 2008 se descubre una vulnerabilidad en el cifrado en SSH-2:
Fue resuelta en OpenSSH 5.2.
El protocolo SSH-2 tiene una arquitectura de capas.
Las capas son:
- La capa de transporte. Esta capa maneja el intercambio inicial de claves y la autentificación del servidor
y establece los métodos de cifrado, compresión y verificación de la integridad.
Deja visible a la capa superior una interfaz para el envío y recepción de paquetes de
texto plano de hasta 32 768 bytes cada uno. La capa de transporte también organiza
el reintercambio de claves - normalmente despues de que haya pasado una hora o se haya
transferido mas de 1 GB de datos.
- La capa de autentificación. Maneja la autentificación del cliente y proporciona un conjunto de métodos
de autentificación.
Entre los métodos de autentificación están:
- password
- publickey: para el uso de parejas DSA o RSA
- keyboard-interactive
- GSSAPI: permite el uso de mecanismos externos como Kerberos 5
El proceso de autentificación es dirigido por el cliente.
- La capa de conexión.
Esta capa define el concepto de canal, peticiones de canal y peticiones globales para el uso de los servicios
proporcionados por SSH. Una única sesión SSH puede alojar simultáneamente múltiples canales.
Los canales transfieren datos en ambas direcciones. Las peticiones de canal son usadas
para pasar datos específicos fuera-del-canal como el cambio de tamaño de una ventana de terminal
o el código de salida de un proceso que se ejecuta en el servidor.
El cliente SSH usa una petición global para solicitar la redirección de un puerto del lado
del servidor. Entre los tipos estandar de canal se encuentran:
- canal shell: para las shell de terminales y peticones SFTP y exec (incluyendo transferencias vía SCP)
- canal direct-tcpip: para la redirección de conexiones cliente-servidor
- canal forwarded-tcpip: para la redirección de conexiones servidor-clientes
- Los registros SSHFP DNS proporcionan las huellas (fingerprints) para las claves
públicas de las máquinas para ser usadas en el proceso de autentificación de las máquinas.
Subsecciones
Casiano Rodriguez León
2015-01-07