Contenido
Características de SSH
¿Por qué usar SSH?
Versiones del protocolo SSH
Secuencia de eventos de una conexión
Capa de transporte
Autenticación
Canales
Archivos de configuración de OpenSSH
Más que un Shell seguro
Reenvío por X11
Reenvío del puerto
Requerir SSH para conexiones remotas
0. Introducción
Permite a los usuarios registrarse en sistemas de host remotamente a través de la shell
Encripta la sesión de registro no permite que alguien pueda obtener contraseñas no encriptadas
Reemplaza a métodos menos seguros como telnet, rsh y rcp
1. Características de SSH
Tipos de protección:
El cliente puede verificar que se está conectando a un mismo servidor
Información de autenticación encriptada con 128 bits
Datos enviados y recibidos encriptados con 128 bits
Posibilidad de enviar aplicaciones lanzadas desde el intérprete de comandos (reenvío por X11)
1.1. ¿Por qué usar SSH?
Existen ciertas amenazas:
Intercepción de la comunicación entre dos sistemas: un tercero en algún lugar de la red entre entidades en comunicación hace una copia de la información que pasa entre ellas. La parte interceptora puede interceptar y conservar la información, o puede modificar la información y luego enviarla al recipiente al cual estaba destinada.
Personificación de un determinado host: un sistema interceptor finge ser el receptor a quien está destinado un mensaje. Si funciona la estrategia, el cliente no se da cuenta del engaño y continúa la comunicación con el interceptor como si su mensaje hubiese llegado a su destino satisfactoriamente.
2. Versiones del protocolo SSH
Existen dos variedades en la actualidad:
SSH v.1: vulnerable a un agujero de seguridad que permite, a un intruso, insertar datos en la corriente de comunicación
SSH v.2: carece de dicho agujero de seguridad (OpenSSH)
3. Secuencia de eventos de una conexión SSH
Handshake encriptado para que el cliente pueda verificar la comunicación con el servidor correcto
Encriptación de la capa de transporte entre cliente y servidor mediante código simétrico
Autenticación del cliente ante el servidor
Interactuación del cliente con la máquina remota sobre la conexión encriptada
3.1. Capa de transporte
Facilita una comunicación segura entre los dos hosts en el momento y después de la autenticación.
Maneja la encriptación y decodificación de datos y proporciona protección de integridad de los paquetes de datos mientras son enviados y recibidos.
Comprime los datos, acelerando la transmisión de información
Al contactar un cliente a un servidor se producen los siguientes pasos:
Intercambio de claves
Determinación del algoritmo de encriptación de la clave pública
Determinación del algoritmo de encriptación simétrica
Determinación del algoritmo de autenticación de mensajes
Determinación del algoritmo de hash que hay que usar
El servidor se identifica con una clave de host única.
Después del intercambio de claves se crea un valor hash para el intercambio y un valor compartido secreto.
Después de transmitir una cierta cantidad de datos con un determinado algoritmo y clave se produce otro intercambio de claves que genera otro conjunto de valores hash y un nuevo valor secreto compartido.
3.1. Capa de transporte
[root@localhost /]# ssh a3144@serdis.dis.ulpgc.es
The authenticity of host 'serdis.dis.ulpgc.es (193.145.147.54)' can't be established.
DSA key fingerprint is 47:57:1a:ea:75:d0:71:5c:24:3c:e7:9b:66:24:ff:41.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'serdis.dis.ulpgc.es,193.145.147.54' (DSA) to the list of known hosts.
a3144@serdis.dis.ulpgc.es's password:
Last login: Wed Dec 29 2004 13:29:06
No mail.
bash: /bin/mail: Permission denied
bash$
3.2. Autenticación
Servidor informa al cliente de los métodos de autenticación soportados (firmas privadas codificadas con claves, inserción de contraseña,
) ? Cliente se autenticará con cualquiera de los métodos
Clientes y servidores SSH se pueden configurar para conceder varios tipos de autenticación
Servidor decide qué métodos de encriptación soportará en base a su pauta de seguridad ? Cliente puede elegir el orden en que intentará utilizar los métodos entre las distintas opciones
3.3. Canales
Múltiples canales son abiertos mediante multiplexación
Cada canal maneja la conexión para diferentes sesiones de terminal y de X11
Tanto clientes como servidores pueden crear canales nuevos
Soportan el control de flujo que les permite enviar y recibir datos ordenadamente. Los datos no se envían a través del canal sino hasta que el host haya recibido un mensaje avisando que el canal está abierto y puede recibirlos
El cliente y el servidor negocian las características de cada canal automáticamente. Otorga una gran flexibilidad en el manejo de diferentes tipos de conexiones remotas sin tener que cambiar la infraestructura básica del protocolo
4. Archivos de configuración de OpenSSH (I)
Tiene dos conjuntos diferentes de archivos de configuración:
Archivos para programas cliente (ssh, scp y sftp)
Archivos para el demonio del servidor (sshd)
Directorio /etc/ssh/:
moduli: Contiene grupos Diffie-Hellman usados para el intercambio de la clave Diffie-Hellman que es imprescindible para la construcción de una capa de transporte seguro. Cuando se intercambian las claves al inicio de una sesión SSH, se crea un valor secreto y compartido que no puede ser determinado por ninguna de las partes individualmente. Este valor se usa para proporcionar la autenticación del host
ssh_config: Archivo de configuración del sistema cliente SSH por defecto que se sobreescribe si hay alguno ya presente en el directorio principal del usuario (~/.ssh/config)
sshd_config: Archivo de configuración para el demonio sshd
ssh_host_dsa_key: Clave privada DSA usada por el demonio sshd
ssh_host_dsa_key.pub: Clave pública DSA usada por el demonio sshd
ssh_host_key: Clave privada RSA usada por el demonio sshd para SSH v1
ssh_host_key.pub: Clave pública RSA usada por el demonio sshd para SSH v1
ssh_host_rsa_key: Clave privada RSA usada por el demonio sshd para SSH v2
ssh_host_rsa_key.pub: Clave pública RSA usada por el demonio sshd para SSH v2
4. Archivos de configuración de OpenSSH (II)
Directorio principal del usuario ~/.ssh/:
authorized_keys: Lista de claves públicas "autorizadas". Cuando un cliente se conecta al servidor, el servidor valida al cliente chequeando su clave pública firmada almacenada dentro de este archivo
id_dsa: Clave privada DSA del usuario
id_dsa.pub: Clave pública DSA del usuario
id_rsa: Clave RSA privada usada por ssh para SSH v2
id_rsa.pub: La clave pública RSA usada por ssh para SSH v2
identity: La clave privada RSA usada por ssh para SSH v1
identity.pub: La clave pública RSA usada por ssh para SSH v1
known_hosts: Claves de host DSA de los servidores SSH accedidos por el usuario. Este archivo es muy importante para asegurarse de que el cliente SHH está conectado al servidor SSH correcto
Página siguiente |