ssh (secure shell): telnet y ftp seguros

21
SSH (Secure Shell): Telnet y FTP seguros Juan David González Cobas Mayo de 2005 0-0

Upload: cyberjzus

Post on 12-Jun-2015

1.438 views

Category:

Documents


0 download

DESCRIPTION

xD - Dar las gracias no toma mas de 5 segundos"!

TRANSCRIPT

Page 1: SSH (Secure Shell): Telnet y FTP seguros

SSH (Secure Shell):Telnet y FTP seguros

Juan David González Cobas

Mayo de 2005

0-0

Page 2: SSH (Secure Shell): Telnet y FTP seguros

Login remoto

El protocolo Telnet suministra una conexión TCP como servicio determinal virtual, cuya función más corriente es la posibilidad deestablecer sesiones (i.e., login o shell remoto). Más propiamentedebiéramos hablar de ejecución remota de programas.

El mayor peligro inherente al uso de Telnet como shell remoto es que laautenticación (casi siempre por contraseña) está expuesta a escucha porterceras partes, al no blindar criptográficamente la conexión TCP. Estambién fácil suplir un servicio Telnet por un troyano. Es decir, sufrimos

autenticación débilausencia de confidencialidadautenticación nula del servidor

El objeto inicial del protocolo SSH (Secure Shell) es resolver estasdeficiencias, proporcionando además otros servicios adicionales.

1

Page 3: SSH (Secure Shell): Telnet y FTP seguros

Transferencia de ficheros FTP

El protocolo FTP (File Transfer Protocol) es en la práctica el medio

universal de transferencia de ficheros entre hosts, únicamente

reemplazado en parte por HTTP.

Permite la transferencia de ficheros entre un cliente y un servidor previa

autenticación del cliente. También permite sesiones anónimas para

recuperación de contenidos en servidores de ficheros.

FTP se distingue de otros servicios en que usa dos conexiones TCP para

la comunicación

control Es la conexión que transporta los comandos FTP y las respuestas

del servidor.

datos Es la portadora efectiva de los datos que se transfieren.

Esto influye en la posibilidad de tunelizar FTP (dificultándola).

2

Page 4: SSH (Secure Shell): Telnet y FTP seguros

Autenticación rhosts: rlogin/rsh/rcp

Aunque menos utilizada actualmente, existe una serie de programas muy

popular en UNIX para la ejecución de procedimientos remotos y la

transmisión de ficheros: la serie rsh/rcp/rlogin.

Su objeto era proporcionar una forma conveniente de login y transferencia

de ficheros entre hosts circunvalando la autenticación por contraseña.

Para ello, el usuario definía en su directorio $HOME un fichero .rhosts

indicando las direcciones de hosts remotos, y usuarios en ellos, en los que

confiaba para hacer login en su nombre.

Los hosts “de confianza” podían definirse también globalmente para todo

el sistema en /etc/hosts.equiv

3

Page 5: SSH (Secure Shell): Telnet y FTP seguros

Ejemplo de fichero .rhosts

#### fichero .rhosts en /home/cobas de di015.edv.uniovi.es

#### todos estos puede entrar como ’cobas’ en di015 via rlogin

#### o copiar ficheros via rcp

di011.edv.uniovi.es # cualquier usuario de di011 puede entrar

156.35.94.1 cobas # cobas en 156.35.94.1 puede entrar

156.35.31.1 cobas # cobas en 156.35.31.1 puede entrar

156.35.31.1 jdgc # jdgc en la misma maquina

No hace falta decir que este mecanismo es seriamente desaconsejable.

4

Page 6: SSH (Secure Shell): Telnet y FTP seguros

rsh y rcp

Además de rlogin (el equivalente a Telnet), se ofrecían un par deprogramas para ejecución remota de procedimientos y copia remota deficheros. Suponiendo que yo sea cobas@di015

$ rsh [email protected] cat datos.txt >> datos_aqui.txt

$ rcp [email protected]:datos.txt cobas@pinon:datos_alla.txt

funcionarán si di015 y mi identidad en él se encuentran registrados en el

fichero .rhosts de cobas de los sitios 156.35.171.71 y pinon,

respectivamente.

5

Page 7: SSH (Secure Shell): Telnet y FTP seguros

Secure Shell (SSH)

SSH es un reemplazo de los programas rlogin, rsh, rcp, escrito por TatuYlönen (1996). Los programas ssh y scp presentan una interfaz similara rsh y rcp, pero envuelta en un protocolo de comunicaciones seguro ymecanismos de autenticación variadísimos y configurables a voluntad.

Existen dos versiones del protocolo, llamadas versión 1 y versión 2. Laprimera posee debilidades conocidas y se recomienda el uso exclusivo dela segunda. Ninguna de ellas es perfecta, sin embargo.

En conjunto, SSH proporciona

Privacidad por blindaje criptográfico de la conexión TCPAutenticación del cliente por una miríada de mecanismosAutenticación del servidor, idem.Protocolo de transferencia de ficheros (scp/sftp)Creación de túneles por port forwarding

Soporte de autenticación por agentes6

Page 8: SSH (Secure Shell): Telnet y FTP seguros

Autenticación del cliente

SSH puede autenticar autorizar el acceso al cliente mediante varios

métodos

rhosts al estilo BSD (basada en host)

rhosts con claves públicas de host

Clave pública

contraseñas (al modo clásico de Telnet, con transferencia cifrada).

desafío/respuesta

Para aportar conveniencia, SSH soporta el uso de un agente de

autenticación.

7

Page 9: SSH (Secure Shell): Telnet y FTP seguros

Autenticación por contraseña

ssh (cliente) sshd (servidor)

22DH Key Agreement

cuenta

de pepe

pepe

miclave

OK

/etc/passwd

Canal SSH criptográficamente protegido

8

Page 10: SSH (Secure Shell): Telnet y FTP seguros

Autenticación por clave pública RSA

ssh (cliente)

22DH Key Agreement

cuenta

de pepe

pepe

miclave

OK

Canal SSH criptográficamente protegido

.ssh/id_rsa

sshd (servidor)

firma(id_sesion)id_sesion

.ssh/authorized_keys

9

Page 11: SSH (Secure Shell): Telnet y FTP seguros

Autenticación por rhosts con clave pública

ssh (cliente)

22DH Key Agreement

cuenta

de pepe

pepe

miclave

OK

Canal SSH criptográficamente protegido

/etc/ssh/id_rsa

sshd (servidor)

156.35.69.69

pepe,156.35.69.69,firma(id_sesion)

.ssh/known_hosts

10

Page 12: SSH (Secure Shell): Telnet y FTP seguros

Autenticación por dos factores

ssh (cliente)

22DH Key Agreement

cuenta

de pepe

pepe

miclave_para_id_dsa

OK

Canal SSH criptográficamente protegido

.ssh/id_rsa

sshd (servidor)

firma(id_sesion)id_sesion

.ssh/authorized_keys

11

Page 13: SSH (Secure Shell): Telnet y FTP seguros

Autenticación del servidor

En SSH, la autenticación fuerte es recíproca. Cada usuario mantiene un

registro de las claves de host con que ha “hablado” hasta el momento.

El cliente ssh emite una FUERTE advertencia (puede llegar a abortar la

sesión) si percibe un cambio en la clave de host. Esto previene

autenticación por contraseña contra un troyano (caza-claves)

ataques man-in-the-middle

No hay provisión para autenticación del servidor por dos factores.

12

Page 14: SSH (Secure Shell): Telnet y FTP seguros

Autenticación del servidor

ssh (cliente)

22DH Key Agreement

pepe

Canal SSH criptográficamente protegido

sshd (servidor)

.ssh/known_hosts

/etc/ssh/known_hosts

/etc/ssh/host_key

firma(session_id)

13

Page 15: SSH (Secure Shell): Telnet y FTP seguros

Transferencia de ficheros

Además de un protocolo de autenticación para login remoto que mejora laautenticación rhosts, SSH proporciona un mecanismo de transferenciade ficheros que reemplaza al clásico FTP para transferencias no anónimasmediante el comando scp, cuya sintaxis es semejante a la de rcp.

$ scp mi_fichero_de_aqui.txt infor24.epv.uniovi.es:nombre_alla.txt

La versión 2 de SSH incorpora un comando sftp similar al cliente FTP

clásico de línea de comandos.

Existen muchos programas sofisticados que implementan transferencia

SSH además del clásico FTP: lftp, yafc para Linux, WinSCP y la

serie de programas putty para Windows.

14

Page 16: SSH (Secure Shell): Telnet y FTP seguros

Agente SSH

Para facilitar la autenticación por dos factores durante una misma sesión,

SSH nos proporciona un agente de autenticación.

Esencialmente, se trata de un proceso que se mantiene vivo a la vez que

una sesión de un usuario, y mantiene un caché de claves privadas

descifradas.

Cada nuevo login remoto se efectúa solicitando la autenticación al agente,

sin que el usuario tenga que intervenir una vez más.

Es posible incluso que el agente autentifique remotamente, mediante un

proceso conocido como agent forwarding.

15

Page 17: SSH (Secure Shell): Telnet y FTP seguros

Agente de autenticación

ssh (cliente)

22DH Key Agreement

cuenta

de pepe

pepe

miclave_para_id_dsa

OK

Canal SSH criptográficamente protegido

sshd (servidor)

firma(id_sesion)id_sesion

.ssh/authorized_keys

.ssh/id_rsa

ssh−agent

.ssh/id_rsa

...

16

Page 18: SSH (Secure Shell): Telnet y FTP seguros

Port forwarding

SSH permite realizar port forwarding o reenvío de puertos; en otras

palabras, tunelizar conexiones TCP a través de una sesión SSH.

Existen dos formas de port forwarding: local y remota.

forward local Ejemplo

$ ssh -L 6969:frodo.inforg.uniovi.es:netbios \

di015.edv.uniovi.es

forward remoto Otro ejemplo

$ ssh -R 7070:smtp.telefonica.net:smtp \

di015.edv.uniovi.es

17

Page 19: SSH (Secure Shell): Telnet y FTP seguros

Forward local

NetBIOS server

frodo.inforg.uniovi.es

di015.edv.uniovi.es

Sesion SSH

NetBIOS clnt

SSH clntSSHD Server

6969

139

micasa.telefonica.net

18

Page 20: SSH (Secure Shell): Telnet y FTP seguros

Forward remoto

7070

Mail clnt

di015.edv.uniovi.es

Sesion SSH

SSH clntSSHD Server

micasa.telefonica.net

smtp.telefonica.net

25

Mail server

22

19

Page 21: SSH (Secure Shell): Telnet y FTP seguros

Ficheros

Fichero Significado

$HOME/.ssh/id_rsa Clave privada RSA de un usuario

$HOME/.ssh/id_rsa.pub Clave pública correspondiente al mismo usuario

$HOME/.ssh/authorized_keys Lista de claves públicas e identidades que el usuario

considera autorizadas para autenticarse como él por cla-

ve pública

$HOME/.ssh/known_hosts Lista de claves públicas de hosts conocidos hasta ahora,

utilizadas para autenticación de host remoto.

/etc/ssh/ssh_known_hosts Misma lista válida para todos los usuarios del sistema.

/etc/ssh/ssh_host_key Clave del host, para autenticación del mismo ante los

usuarios que acceden a él

20