SSH
El protocolo SSH permite establecer una conexión segura a máquinas remotas, con autenticación mutua robusta, cifrado de los datos transmitidos y chequeo de la integridad de los datos.
Este protocolo utiliza un proceso seguro de autenticación del usuario (ya que no se envían las contraseñas al servidor sin cifrar), permitiendo ejecutar comandos y copiar ficheros desde y hacia máquinas remotas de forma segura, a través de una comunicación cifrada. De hecho, permite una canalización segura de cualquier conexión TCP/IP con una máquina remota.
El protocolo consta de tres bloques o partes fundamentales:
Nivel de Transporte (sobre TCP/IP), que se encarga de la autenticación del servidor, del establecimiento de un canal cifrado para garnatizar la confidencialidad de la comunicación, de la comprobación de la integridad de los mensajes, así como de la generación de un identificador único de sesión.
Para el intercambio de claves entre lo dos equipos intervinientes en la comunicación se utiliza el algoritmo de Diffie-Hellman. Asimismo, se recurre a algoritmos de clave pública para la autenticación del servidor (certificados X.509 y certificados PGP), a algoritmos de claves simétrica para la confidencialidad de la comunicación (Triple-DES, Blowfish, IDEA, etc.) y a funciones hash para comprobar la integridad de los datos y mensajes transmitidos (MD5, SHA1).
A la hora de establecer la comunicación, tanto el cliente como el servidor SSH negocian los algoritmos criptográficos que se van a utilizar a lo largo de la comunicación.
La autenticación del servidor tiene lugar antes de que el usuario pueda transmitir sus credenciales de autenticación, para evitar de este modo que algunos progrmaas troyanos se intenten hacer pasar por el servidor para obtener el nombre y la contraseña del usuario.
Nivel de Autenticación del Usuario, ofreciendo varios mecanismos de autenticación:
- Autenticación basada en un algoritmo de clave pública, de modo que la autenticación del usuario se establece en base a la posesión de la clave privada correspondiente a una clave publica. Se trata de la opción recomendada por los fabricantes que ofrecen SSH en sus productos.
- Autenticación basada en un nombre de usuario y una contraseña.
- Autenticación basada en la procedencia de la conexión (dirección IP del equipo que se conecta al servidor)
A través de una autenticación robusta, SSH puede ofrecer protección frente a ataques de suplantación de identidad, como IP Spoofing, DNS Spoofing, ataques de tipo «man in the middle», etc.