Ssh (secure Shell): Telnet Y Ftp Seguros

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Ssh (secure Shell): Telnet Y Ftp Seguros as PDF for free.

More details

  • Words: 1,214
  • Pages: 21
SSH (Secure Shell): Telnet y FTP seguros Juan David González Cobas Mayo de 2005

0-0

Login remoto El protocolo Telnet suministra una conexión TCP como servicio de terminal virtual, cuya función más corriente es la posibilidad de establecer sesiones (i.e., login o shell remoto). Más propiamente debiéramos hablar de ejecución remota de programas. El mayor peligro inherente al uso de Telnet como shell remoto es que la autenticación (casi siempre por contraseña) está expuesta a escucha por terceras partes, al no blindar criptográficamente la conexión TCP. Es también fácil suplir un servicio Telnet por un troyano. Es decir, sufrimos autenticación débil ausencia de confidencialidad autenticación nula del servidor El objeto inicial del protocolo SSH (Secure Shell) es resolver estas deficiencias, proporcionando además otros servicios adicionales. 1

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

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

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 156.35.94.1 cobas 156.35.31.1 cobas 156.35.31.1 jdgc

# cualquier usuario de di011 puede entrar # cobas en 156.35.94.1 puede entrar # cobas en 156.35.31.1 puede entrar # jdgc en la misma maquina

No hace falta decir que este mecanismo es seriamente desaconsejable.

4

rsh y rcp Además de rlogin (el equivalente a Telnet), se ofrecían un par de programas para ejecución remota de procedimientos y copia remota de ficheros. 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

Secure Shell (SSH) SSH es un reemplazo de los programas rlogin, rsh, rcp, escrito por Tatu Ylönen (1996). Los programas ssh y scp presentan una interfaz similar a rsh y rcp, pero envuelta en un protocolo de comunicaciones seguro y mecanismos de autenticación variadísimos y configurables a voluntad. Existen dos versiones del protocolo, llamadas versión 1 y versión 2. La primera posee debilidades conocidas y se recomienda el uso exclusivo de la segunda. Ninguna de ellas es perfecta, sin embargo. En conjunto, SSH proporciona Privacidad por blindaje criptográfico de la conexión TCP Autenticación del cliente por una miríada de mecanismos Autenticación del servidor, idem. Protocolo de transferencia de ficheros (scp/sftp) Creación de túneles por port forwarding Soporte de autenticación por agentes 6

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

Autenticación por contraseña DH Key Agreement ssh (cliente)

22 sshd (servidor)

Canal SSH criptográficamente protegido OK

/etc/passwd

cuenta de pepe

pepe miclave

8

Autenticación por clave pública RSA 22

DH Key Agreement

sshd (servidor) ssh (cliente)

id_sesion

firma(id_sesion)

Canal SSH criptográficamente protegido OK

.ssh/id_rsa

.ssh/authorized_keys cuenta de pepe

pepe miclave

9

Autenticación por rhosts con clave pública 156.35.69.69 22

DH Key Agreement

sshd (servidor) ssh (cliente)

pepe,156.35.69.69,firma(id_sesion) Canal SSH criptográficamente protegido OK

/etc/ssh/id_rsa

.ssh/known_hosts cuenta de pepe

pepe miclave

10

Autenticación por dos factores 22

DH Key Agreement

sshd (servidor) ssh (cliente)

id_sesion

firma(id_sesion)

Canal SSH criptográficamente protegido OK

.ssh/id_rsa

.ssh/authorized_keys cuenta de pepe

pepe miclave_para_id_dsa

11

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

Autenticación del servidor DH Key Agreement

22 sshd (servidor)

ssh (cliente)

firma(session_id) Canal SSH criptográficamente protegido

/etc/ssh/known_hosts

/etc/ssh/host_key .ssh/known_hosts

pepe

13

Transferencia de ficheros Además de un protocolo de autenticación para login remoto que mejora la autenticación rhosts, SSH proporciona un mecanismo de transferencia de ficheros que reemplaza al clásico FTP para transferencias no anónimas mediante 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

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

Agente de autenticación 22

DH Key Agreement

sshd (servidor) ssh (cliente)

id_sesion

firma(id_sesion)

Canal SSH criptográficamente protegido OK ssh−agent .ssh/id_rsa

... .ssh/authorized_keys cuenta de pepe .ssh/id_rsa

pepe miclave_para_id_dsa

16

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

Forward local micasa.telefonica.net

di015.edv.uniovi.es SSHD Server

SSH clnt Sesion SSH

6969

NetBIOS clnt

frodo.inforg.uniovi.es 139 NetBIOS server

18

Forward remoto micasa.telefonica.net

22

di015.edv.uniovi.es SSHD Server

SSH clnt Sesion SSH

7070

Mail clnt

smtp.telefonica.net 25 Mail server

19

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 clave 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

Related Documents