Como vimos ayer, el protocolo Telnet sufre de diversos problemas que hacen desaconsejable su uso, entre ellos la falta de autenticación y de cifrado.
Es por ello que, en 1995, un investigador de la universidad de Helsinki diseñó un protocolo que resolviera estos problemas, conocido como SSH. Esta primera versión (conocida como SSH-1) también presentaba sus propios problemas, por lo que al año siguiente se diseñó un revisión de este, conocida como SSH-2 que los resolvía.
Esta versión se convirtió rápidamente en un estándar de-facto y, este mismo año, ha sido propuesta como estándar oficial con su propio RFC. Aunque la primera versión todavía está en uso en algunas aplicaciones, no se recomienda trabajar con ella. Al no ser compatible con la segunda, muchos clientes han optado por implementar las dos, aunque es aconsejable desactivar la primera para no acceder a algún servidor con ella por equivocación o descuido.
SSH funciona con una mezcla de criptografía de clave pública, lo que le permite garantizar la privacidad de las comunicaciones y su integridad. Funciona mediante varias capas diferenciadas: una de transporte en la que se realiza el intercambio de claves y la autenticación de los servidores, una de autenticación de usuario y una capa de conexión.
La de transporte es la que se encarga del cifrado, por lo que para las capas superiores este es transparente y representa como si enviaran el texto en plano. También es la que se encarga de autentificar al servidor, comprobando que nadie lo haya suplantado, por lo que debemos estar atentos ante mensajes de nuestro cliente que nos indiquen que este puede haber cambiado. Habitualmente, la primera vez que nos conectamos a un servidor nuestro cliente nos mostrará un hash, un resumen seguro de la clave del servidor, que deberíamos comprobar a través de otro canal, por ejemplo mediante una llamada telefónica para asegurarnos que es correcto. En caso de que así sea, el cliente ya no volverá a avisarnos a no ser que el hash del servidor cambie, lo cual puede indicar una suplantación o que el servidor ha cambiado sus claves. Es importante comprobar correctamente este paso, pues es el más importante para evitar ataques de intercepción.
La capa de autenticación de usuario es muy versátil, por lo que se puede implementar de muchas maneras. Una de las más típicas es mediante un usuario y una contraseña que se envían al servidor para que este las compruebe. Otra, mucho más segura, es el uso de certificados. Podemos llevar en una llave USB o tener almacenado en nuestro ordenador el certificado, de forma que la capa de autenticación pueda comprobarlo contra el servidor y este nos de acceso. Es habitual que el propio certificado incluya su propia contraseña para poder ser utilizado, cosa que también debemos tener en cuenta.
Finalmente, solo mencionar que la capa de conexión permite el uso de diversos canales en una sola conexión, por lo que podríamos, por ejemplo, abrir dos líneas de comando sobre una misma conexión.
Dejando a un lado estas cuestiones, el protocolo SSH suele utilizarse para ofrecer consolas remotos a los usuarios, pero también puede servir como transporte de otro tipo de conexiones, añadiéndoles cifrado y autenticación.
Existen varios servidores de SSH, tanto para Windows como para Linux, el más conocido de los cuales es OpenSSH, originario de OpenBSD pero portado a casi todas las distribuciones de sistemas Unix, al igual que el cliente. Para Windows, encontramos una implementación de OpenSSH con Cygwin, aunque se han creado paquetes para hacerlo más sencillo de instalar, como SSHWindows. Como cliente, al igual que en el caso de Telnet podemos utilizar PuTTY.
Más información | Wikipedia.
Ver 1 comentarios