Configuración Servidor SSH en GNU/Linux (Parte V)

 

Hoy ampliamos la serie de configuración de un servidor SSH en GNU/Linux. Este quinto artículo se centra en las claves públicas y privadas y su función para verificar que un servidor es quien dice ser.

Claves

Cuando en este artículo se hace referencia a una clave RSA se ha de tener presente que se refiere a un par de claves pública y privada utilizadas en los sistemas criptográficos de cifrado asimétrico. La pública es la parte de la clave RSA que puede ser conocida por todos mientras que la parte privada debe estar bien almacenada con seguridad mediante permisos estrictos y debe transmitirse siempre por canales seguros que no puedan ser interceptados.

Generación de la clave de Host

Por defecto, nada más instalarse el servidor OpenSSH en el equipo, se crea un par de claves RSA, es decir, una parte pública y una parte privada para identificar al servidor y que el cliente pueda autenticar su veracidad. Este par de claves son autofirmadas, es decir, no están creadas por ninguna entidad certificadora conocida, y se almacenan en la siguiente ruta: /etc/ssh.

Se puede observar 3 pares de claves:

ssh_host_rsa_key: parte privada de la clave RSA para la versión 2 del protocolo SSH. Es la que OpenSSH utiliza por defecto.ssh_host_rsa_key.pub: parte pública de la clave RSA para la versión 2 del protocolo SSH.

ssh_host_dsa_key: parte privada de la clave DSA. Es la alternativa a RSA.ssh_host_dsa_key.pub: parte pública de la clave DSA.

ssh_host_key: parte privada de la clave RSA para la versión 1 del protocolo SSH. Se desaconseja el uso de la versión 1 del protocolo SSH ya que éste fue roto.ssh_host_key.pub: parte pública de la clave RSA para la versión 1 del protocolo SSH.

Por defecto el servidor utiliza la clave RSA para la versión 2.

Algoritmos para cifrado

Dependiendo de la versión del protocolo que se esté utilizando, el protocolo soportará unos algoritmos u otros. En la versión 1 del protocolo se disponen los siguientes algoritmos de cifrado: DES, 3DES, IDEA, Blowfish. Mientras que para la versión 2 del protocolo se aumentaron el número de algoritmos disponibles y se incluyeron algoritmos de cifrado más potentes: 3DES, Blowfish, Twofish, Arcfour, Cast128-cbc.

Creación de una clave de host más segura

Para generar una nueva clave de host más fiable que la que se genera en la instalación del OpenSSH se ejecutará la siguiente acción:

Distribución segura de la clave de host

Los clientes, cuando se conecten al servidor, durante el proceso de handshake SSL deberán identificar correctamente al servidor. Para ello, las claves públicas de los hosts de confianza son almacenadas en el cliente. El lugar donde se almacenan estas claves depende de la herramienta cliente que se esté utilizando. En los sistemas Linux se encuentra en la ruta ~/.ssh/known_hosts.
 
Si el cliente se conecta a un servidor del que no se tiene la clave pública almacenada, se generará una alerta de seguridad y se pedirá confirmación al usuario antes de iniciar la conexión. Se debe tener claro que en este punto en concreto se puede sufrir un ataque Man In The Middle si un atacante cogiera el certificado de host que envía el servidor, por lo que se recomienda distribuir la clave pública del host previamente a la primera conexión por medio de un dispositivo externo e instalarlo en el servidor sin utilizar la red.
  
En la próxima entrega de la serie autenticaremos mediante clave pública y privada, y también modificaremos el tamaño de la clave de sesión, de este modo se fortificará el canal por el que fluya la comunicación.