Autenticación con clave pública para SSH

El protocolo SSH soporta muchos métodos de autenticación. Podría decirse que uno de los más importantes es la autenticación con clave pública para conexiones interactivas y automatizadas.

Autenticación de clave pública – ¿qué y por qué?

La motivación para usar la autenticación de clave pública sobre las simples contraseñas es la seguridad. La autenticación de clave pública proporciona una fuerza criptográfica que incluso las contraseñas extremadamente largas no pueden ofrecer. Con SSH, la autenticación de clave pública mejora la seguridad considerablemente, ya que libera a los usuarios de recordar complicadas contraseñas (o peor aún, de escribirlas).

Además de la seguridad, la autenticación de clave pública también ofrece beneficios de usabilidad: permite a los usuarios implementar el inicio de sesión único en todos los servidores SSH a los que se conectan. La autenticación de clave pública también permite el inicio de sesión automatizado y sin contraseña, que es un factor clave para los innumerables procesos de automatización seguros que se ejecutan dentro de las redes empresariales en todo el mundo.

La criptografía de clave pública gira en torno a un par de conceptos clave. Las secciones siguientes los explican brevemente.

Criptografía asimétrica – Algoritmos

Como cualquier esquema de cifrado, la autenticación de clave pública se basa en un algoritmo. Existen varios algoritmos bien investigados, seguros y fiables, siendo los más comunes RSA y DSA. A diferencia de los algoritmos de cifrado comúnmente conocidos (simétricos o de clave secreta), los algoritmos de cifrado de clave pública funcionan con dos claves distintas. Estas dos claves forman un par que es específico para cada usuario.

Par de Claves – Públicas y Privadas

En el caso de uso de autenticación de clave pública SSH, es bastante típico que los usuarios creen (es decir, proporcionen) el par de claves por sí mismos. Las implementaciones de SSH incluyen utilidades fácilmente utilizables para esto (para más información ver ssh-keygen y ssh-copy-id).

Cada par de claves SSH incluye dos claves:

  • Una clave pública que se copia al servidor(es) SSH. Cualquiera que tenga una copia de la clave pública puede encriptar datos que luego sólo puede leer la persona que tiene la clave privada correspondiente. Una vez que un servidor SSH recibe una clave pública de un usuario y considera que la clave es de confianza, el servidor marca la clave como autorizada en su archivo authorized_keys. Dichas claves se denominan claves autorizadas.

  • Una clave privada que permanece (únicamente) en poder del usuario. La posesión de esta clave es una prueba de la identidad del usuario. Sólo un usuario que posea una clave privada que se corresponda con la clave pública en el servidor podrá autenticarse con éxito. Las claves privadas deben almacenarse y manejarse con cuidado, y no deben distribuirse copias de la clave privada. Las claves privadas utilizadas para la autenticación del usuario se denominan claves de identidad.

    • Configuración de la autenticación de clave pública para SSH

      Se requieren los siguientes pasos sencillos para configurar la autenticación de clave pública (para SSH):

  1. Se crea el par de claves (normalmente por el usuario). Esto se hace típicamente con ssh-keygen.

  2. La clave privada se queda con el usuario (y sólo allí), mientras que la clave pública se envía al servidor. Normalmente con la utilidad ssh-copy-id.

  3. El servidor almacena la clave pública (y la «marca» como autorizada).

  4. El servidor permitirá ahora el acceso a cualquiera que pueda demostrar que tiene la clave privada correspondiente.

  5. Manejo de la clave privada

    Es extremadamente importante que la privacidad de la clave privada se proteja cuidadosamente. Para la mayoría de los casos de uso dirigidos por el usuario, esto se logra cifrando la clave privada con una frase de contraseña.

    Cuando se necesita una clave privada, se pide al usuario que proporcione la frase de contraseña para que la clave privada pueda ser descifrada. El manejo de las frases de contraseña puede automatizarse con un agente SSH.

    En la mayoría de los casos de uso automatizados (scripts, aplicaciones, etc.) las claves privadas no están protegidas y es necesario ejercer una planificación cuidadosa y prácticas de gestión de claves para permanecer seguros y cumplir con los mandatos regulatorios.

    Del caos al orden – Gestión de claves SSH

    En entornos en los que los usuarios son libres de auto-aprovisionar claves de autenticación es común que a lo largo de los años el número de claves provisionadas y desplegadas crezca mucho. Dado que no hay forma de averiguar quién es el propietario o quién ha aprovisionado originalmente una determinada clave pública que se encuentra en un servidor, y dado que estas claves nunca caducan, el verdadero estado del control de acceso en grandes entornos no gestionados puede ser muy poco claro o directamente caótico.

    La gestión y el control del acceso a los servidores y a otras infraestructuras de TI es un requisito legal para cualquier empresa que opere en mercados regulados como el financiero, el energético, el sanitario o el comercial. Estas empresas necesitan emplear soluciones para la gestión de claves SSH para controlar el acceso concedido por las claves SSH.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *