Conexiones Seguras en Red: SSH, Criptografía y Protocolos
Introducción a la Seguridad en Redes
Telnet, usado en los años 60-70, era fácil de usar pero muy inseguro. Hoy en día, en modo texto, se utilizan Telnet, Rlogin y SSH (Secure Shell). En modo gráfico, se emplean VNC en GNU/Linux y Terminal Server en Windows.
SSH (Secure Shell)
SSH establece conexiones seguras entre equipos conectados a través de una red insegura (como una intranet). Da soporte seguro a cualquier protocolo que funcione sobre TCP y se basa en mecanismos de criptografía. OpenSSH es la versión libre más importante y se describe en el RFC 4251.
Usa el puerto 22 (TCP/UDP), autentica usuarios mediante contraseñas y permite la integración con otros servicios de autenticación como Kerberos, PGP o PAM.
Tras la primera conexión, el cliente sabe que se conectará al mismo servidor en futuras ocasiones. El cliente transmite al servidor la información para su autenticación cifrada, y el cliente puede ejecutar aplicaciones gráficas desde el shell. Se evitan interceptaciones y suplantaciones de host.
Versiones de SSH: SSH1 vs SSH2
SSH2 es más seguro que SSH1. SSH1 usa dos claves: una pública y otra generada aleatoriamente al iniciar sesión. SSH2 usa dos claves que dependen del algoritmo de encriptación.
SSH2 no tiene inconvenientes significativos en comparación con SSH1. Sin embargo, SSH1 consume mucha CPU al generar la clave y tiene un fallo de seguridad al crearla.
SSH1 usa RSA. SSH2 usa RSA y DSA. SSH2 no es compatible con SSH1.
Criptografía en Redes
La encriptación resuelve:
- Privacidad
- Integridad
- Autenticación
- No repudio (o No rechazo)
Tipos de Criptografía
Criptografía Simétrica o de Clave Compartida: Usa una única clave conocida tanto por el emisor como por el receptor. La misma clave que cifra, descifra. Es eficiente para grandes volúmenes de información, ya que los algoritmos son rápidos, aunque la clave debe tener más de 40 bits para ser considerada fuerte.
Se usan algoritmos como 3DES (Triple DES), desarrollado por IBM en 1978 y adoptado por oficinas gubernamentales de USA para protección de datos desde 1977. Realiza un triple cifrado sobre una clave DES de 56 bits de longitud. Fue usado por la banca en la gestión de tarjetas de crédito. Ha sido ‘reventado’ varias veces y se considera obsoleto.
IDEA (International Data Encryption Algorithm), creado en 1992 en la Escuela Politécnica Federal de Zúrich, trabaja con claves de 128 bits y se usa para cifrar email (PGP). Es sencillo de programar, rápido y, hasta la fecha, no ha sido ‘roto’.
Criptografía Asimétrica: Usa un par de claves: la clave pública cifra y la clave privada descifra. Ambas se generan al mismo tiempo, por lo que la combinación es única. El algoritmo es conceptualmente sencillo, pero al usar claves de hasta 1024 bits (o más), el coste computacional es elevado.
La criptografía busca crear sistemas donde el coste para ‘reventar’ el cifrado supere el valor de la información a robar, y el tiempo necesario sea mayor que la vida útil de dicha información. Históricamente, USA impuso límites de 512 bits para la exportación de criptografía, lo que permitía ‘reventarla’ mediante fuerza bruta.
La criptografía asimétrica no es tan rápida como la simétrica al no usar algoritmos tan eficientes para el cifrado masivo, y no siempre es fácil disponer de una garantía de autenticidad de las claves públicas (problema de distribución de claves). Garantiza confidencialidad y autenticidad.
Claves en Criptografía Asimétrica
- Clave Pública: En criptografía asimétrica, es una de las dos claves generadas para cifrar la autenticación de usuarios. Se transmite por la red.
- Clave Privada: No se transmite; solo la conoce el usuario.
Algoritmos Asimétricos (de Clave Pública)
RSA: Desarrollado en 1977, es uno de los más usados en criptografía de clave pública. Estuvo bajo patente en USA hasta el año 2000. Con claves de hasta 512 bits (límite de exportación en USA en su momento) es inseguro; con 1024 bits es moderadamente seguro, pero vulnerable a máquinas potentes.
DSA (Digital Signature Algorithm): Se usa principalmente para firmar documentos digitales (no para cifrar datos masivos). La verificación de la firma es reversible, pero el cifrado (si se usara) no lo sería. Se considera que ofrece una seguridad comparable o superior a RSA para la firma.
Firma Digital
Mecanismo que permite autenticar el origen de un documento y comprobar su integridad.
IP Spoofing
Un atacante suplanta la identidad de una máquina con la que se tiene confianza.
Funcionamiento Básico de SSH
SSH garantiza:
- No transmitir contraseñas en texto plano por la red.
- Autenticación con garantías.
- Ejecución segura de órdenes remotas.
- Sesiones gráficas X11 seguras.
El cliente abre una conexión TCP al puerto 22 del servidor. Ambos se ponen de acuerdo en la versión de SSH a usar. El servidor tiene dos claves (pública y privada) y envía la clave pública al cliente. El cliente la recibe y la compara con la que tiene almacenada para ese servidor. La primera vez, al no tenerla, SSH pide que el usuario confirme la huella digital de la clave. Esto ayuda a mitigar ataques ‘Man-in-the-Middle‘, donde un atacante intercepta la comunicación y suplanta la identidad del servidor.
El cliente genera una clave de sesión aleatoria y crea un mensaje con esa clave y el algoritmo simétrico seleccionado, todo encriptado usando la clave pública del servidor. Lo envía al servidor. Para el resto de la sesión, se usa el algoritmo de cifrado simétrico seleccionado y la clave de sesión aleatoria para cifrar la comunicación. Una vez autenticado el usuario, se inicia la sesión segura.
Tunelización SSH (Port Forwarding)
Se habilita un puerto local en el PC cliente y se establece una conexión encriptada a un segundo equipo (servidor SSH). Todos los datos que se envían a ese puerto local pasan a través de la conexión segura al servidor SSH, el cual puede reenviarlos a un tercer equipo si es necesario. Esto permite asegurar protocolos inherentemente inseguros como Telnet, FTP o POP3 mediante el reenvío de puertos (Port Forwarding).
Usos comunes incluyen:
- Acceder a servicios TCP internos de una LAN con direcciones privadas.
- Evitar enviar credenciales en texto plano para protocolos como FTP, Telnet, POP3, IMAP o SMTP.
- Atravesar firewalls que solo permiten conexiones SSH.
- Disponer de servicios gráficos X (X11) de forma segura a través de una red insegura.
SSHFS (Secure Shell File System)
SSHFS es un sistema de archivos para sistemas operativos tipo GNU/Linux que permite montar sistemas de archivos remotos en nuestro equipo local a través de SSH. De esta forma, el usuario final puede interactuar con los archivos remotos en un servidor SSH viéndolos y gestionándolos como si estuviesen en su sistema de archivos local.
Comandos Relacionados
La orden scp (secure copy) permite realizar transferencias de archivos simples desde la línea de comandos, realizando copias seguras de archivos entre equipos.
sftp (SSH File Transfer Protocol): Emula la forma de uso de un cliente FTP tradicional, pero sobre una conexión SSH segura.
Términos Adicionales
X11: Se refiere a la Versión 11 del protocolo X Window System, usado para interfaces gráficas en sistemas Unix/Linux.
xterm: Es un emulador de terminal virtual comúnmente usado en el sistema gráfico X Window.