SSH Significa Secure Shell o Secure Socket Shell. Es un protocolo de red criptográfico que permite a usuarios y administradores de sistemas acceder a computadoras a través de una red no segura, como Internet. Se utiliza para iniciar sesión en un servidor remoto, ejecutar comandos y transferir datos de una máquina a otra.
¿Dónde utilizamos SSH?
SSH se utiliza para reemplazar protocolos de inicio de sesión remoto no protegidos como Telnet, rlogin, rsh y otros, así como protocolos de transferencia de archivos inseguros como FTP. Los administradores de red utilizan ampliamente sus capacidades de protección. Podemos usar el protocolo SSH en diversos escenarios, como:
- Permitir el acceso seguro para los usuarios y procesos automatizados
- Realizar transferencias de archivos interactivas y automatizadas
- Emisión de comandos remotos
- Gestión de la infraestructura de red y otros componentes del sistema de misión crítica
¿Cómo funciona SSH?
El protocolo SSH funciona en una arquitectura cliente-servidor, por lo que un cliente SSH establece una conexión segura con un servidor SSH. El cliente SSH controla el proceso de establecimiento de la conexión y utiliza... infraestructura de clave pública (PKI) Para verificar la autenticidad del servidor SSH. Una vez configurado, el protocolo SSH utiliza cifrado simétrico robusto y algoritmos de hash para garantizar la confidencialidad e integridad de los datos intercambiados.
¿Cuáles son los diferentes tipos de autenticación?
Autenticación basada en claves
La forma más común de implementación de SSH es la autenticación con clave pública. Se prefiere a las contraseñas simples debido a su mayor seguridad. La autenticación basada en clave proporciona una robustez criptográfica inigualable, incluso superior a la que ofrecen las contraseñas muy largas. SSH aumenta considerablemente la seguridad mediante la autenticación con clave pública, eliminando la necesidad de que los usuarios recuerden contraseñas complejas.
Además de la seguridad, la autenticación de clave pública mejora la usabilidad. Esto permite al usuario implementar el inicio de sesión único en todos los servidores SSH a los que se conecta. Autenticación basada en claves También permite inicios de sesión automatizados sin contraseña, una característica clave de la gran cantidad de procesos automatizados seguros que se ejecutan en redes corporativas en todo el mundo.
Este tipo de autenticación genera un par de claves (clave pública y privada).
- La clave pública se copia al servidor SSH y, por defecto, se añade al archivo ~/.ssh/authorized_keys. Cualquier persona con una copia de la clave pública puede cifrar datos que solo pueden leer quienes tengan la clave privada correspondiente.
- La clave privada permanece (únicamente) con el usuario. Solo un usuario cuya clave privada coincida con la clave pública del servidor puede autenticarse correctamente. Las claves privadas deben almacenarse y manejarse con cuidado, y no deben distribuirse copias de ellas.
Desventajas de la autenticación basada en claves
- Una mala gestión de claves SSH puede suponer un gran riesgo para las organizaciones.
- El uso indebido de claves SSH puede provocar el acceso a información confidencial o privilegiada.
- Dado que las claves son de confianza permanente, aumentan las posibilidades de un ataque.
Autenticación basada en certificados
Este tipo de autenticación no requiere la aprobación ni distribución de claves. En lugar de distribuir claves públicas entre archivos estáticos, podemos usar certificados para vincular claves públicas a nombres. Un certificado contiene datos como una clave pública, un nombre y datos adicionales como fechas de vencimiento y permisos. Estos datos están firmados por un autoridad de certificación (CA).
Para habilitar la autenticación de certificados, configure los clientes y hosts para verificar los certificados utilizando la clave pública de su CA (es decir, certificados de confianza emitidos por su CA).
En cada host, edite /etc/ssh/sshd_config, especificando la clave pública de CA para verificar los certificados de usuario, la clave privada del host y el certificado del host.
En cada cliente, agregue una línea a ~/.ssh/known_hosts especificando la clave pública de CA para verificar los certificados del host.
Ventajas de la autenticación basada en certificados
- Es sencillo de usar como una confianza en el primer uso (TOFU); no se muestran advertencias porque la autenticación de certificados utiliza certificados para comunicar los enlaces de clave pública, lo que permite a los clientes autenticarse en todo momento.
- Optimiza las operaciones al eliminar el proceso de aprobación y distribución de claves. También reduce el coste operativo de supervisar y mantener la infraestructura actual para añadir, eliminar, sincronizar y auditar archivos de claves públicas estáticas.
- Promueve mejores prácticas de seguridad en comparación con la autenticación basada en claves. Es muy probable que una clave privada comprometida pase desapercibida durante mucho tiempo; sin embargo, los certificados, por otro lado, caducan, lo que significa que en caso de robo, uso indebido, etc., caducarán automáticamente, garantizando así la seguridad ante fallos.
Conclusión
La autenticación basada en certificados tiene muchas ventajas, como mejorar la usabilidad, aumentar la seguridad, agilizar las operaciones, etc. Si se implementa, ayudará a las organizaciones a reducir las complejidades de la aprobación y distribución de claves, los riesgos relacionados con una gestión inadecuada de las mismas y mucho más.
