Sunteți pe pagina 1din 9

UNIVERSIDAD ICESI

FACULTAD DE INGENIERÍA
ASEGURAMIENTO DE PLATAFORMAS
SSH, SCP, SFTP

Los objetivos de esta práctica de laboratorio son:


• Instalar y configurar correctamente el servicio SSH en un servidor Linux Ubuntu.
• Analizar y comprender el intercambio inicial de paquetes de una sesión SSH.
• Comprobar la protección que ofrece el servicio SSH, capturando una conversación
efectuada empleando este protocolo.
• Comprender el concepto de autenticación de dos factores, y sus ventajas sobre la
autenticación de un solo factor.
• Configurar el servicio SSH (Secure Shell) para que efectúe autenticación de dos factores,
mediante el uso de clave pública.
• Utilizar dos de los servicios adicionales que ofrece el protocolo SSH para transferencia de
archivos: SCP y SFTP.
• Verificar la seguridad ofrecida por SCP y SFTP.

Cada persona dispondrá de un computador con máquinas virtuales Ubuntu y Windows instaladas,
para efectuar la práctica. Los resultados de esta práctica, y las respuestas a las preguntas que
aparecen en esta guía de laboratorio, deberán consignarse en un informe de laboratorio, que será
entregado la clase siguiente. Debe notarse que algunas de las preguntas de la guía pueden exigir
investigación adicional a la práctica.

INSTALACIÓN DEL SERVICIO SSH

Iniciaremos la práctica instalando la alternativa segura para el servicio de conexión remota (Telnet):
el servicio SSH (Secure Shell). Los pasos necesarios para hacerlo en un servidor Ubuntu son los
siguientes:

• Instale la máquina virtual Ubuntu 10.04, si aún no lo ha hecho. Arránquela e ingrese como
usuario usuario, con contraseña Password1.
• Ejecute el comando sudo apt-get update. Esto hará que el sistema operativo
actualice sus catálogos de software, con el fin de obtener las versiones más recientes de
los paquetes que vamos a instalar.
• Para instalar el servidor SSH en su máquina, ejecute el comando sudo apt-get
install openssh-server. Es posible que aparezca un mensaje que indica que el
paquete ya está instalado (openssh-server is already the newest version).
• Para instalar los programas clientes de la suite de SSH, ejecute el comando sudo apt-
get install openssh-client. Es posible que el paquete ya esté instalado en su
sistema.
• Pida a uno de sus vecinos de puesto que cree una cuenta para usted en la máquina de él,
empleando para ello la opción System | Administration | Users and Groups del menú
Ubuntu.
• Una vez que le creen la cuenta, intente acceder a ella ejecutando el comando ssh
usuario@dirección IP.
• El sistema le mostrará un mensaje como éste:

The authenticity of host 'localhost (::1)' can't be established.


RSA key fingerprint is c6:72:63:6d:33:1b:d3:aa:0d:f4:e6:85:b5:a8:7b:07.
Are you sure you want to continue connecting (yes/no)?

Seguridad – Taller #2
Página 1 de 9
Es normal que este mensaje aparezca la primera vez que un usuario intenta conectarse con un
servidor nuevo, debido a que el cliente no conoce la identidad de dicho servidor. Para verificar la
identidad del servidor, pídale a su vecino que ejecute el siguiente comando:

ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub

…y pídale que le lea el resultado. El valor que arroja este comando debe ser el mismo que SSH
muestra en pantalla al intentar la conexión. Una vez verificado el valor, se puede contestar “yes” a
la pregunta que hace SSH. El programa procede entonces a almacenar el valor del fingerprint de la
clave en el archivo ~/.ssh/known_hosts. SSH no volverá entonces a hacer esta pregunta de
verificación para el nuevo servidor.

SSH solicitará entonces la clave de acceso a la cuenta. Digítela y presione ENTER. Debe iniciarse
un shell en el servidor remoto; puede comprobar que, en efecto, está conectado a la máquina
remota, ejecutando los comandos uname –a e ifconfig. Salga de la sesión remota digitando el
comando exit.

ESTUDIO DEL HANDSHAKE DE SSH

A continuación estudiaremos el intercambio inicial de datos (handshake) del protocolo SSH. Para
ello, se requiere usar el analizador de protocolos Wireshark, que usted ya aprendió a emplear en el
curso de introducción a la seguridad.

• Inicie Wireshark en la máquina real asignada a usted, e inicie una captura de datos
• Conéctese a la cuenta creada en la máquina de su vecino, empleando el comando ssh
usuario@dirección IP.
• Una vez aparezca el prompt de inicio de sesión, detenga la captura en Wireshark.
• Aplique en Wireshark un filtro por dirección IP, empleando para ello la dirección IP de la
máquina de su vecino.
Busque los paquetes del protocolo SSH. ¿Qué tipos de paquetes observa, y en qué orden?
¿Qué algoritmos de cifrado soporta el servidor? ¿En qué modalidades? ¿Qué algoritmos
de autenticación de contenido soporta el servidor? Responda la misma pregunta para el
CLIENTE.
Con base en la información sobre el algoritmo Diffie-Hellman suministrada por el profesor,
muestre cómo funciona el proceso de handshake en el protocolo SSH. Puede emplear
referencias adicionales si así lo requiere.

AUTENTICACIÓN DE DOS FACTORES CON SSH

Por omisión, el servicio SSH viene configurado para efectuar autenticación mediante palabra clave.
Como ya se ha estudiado en clase, este tipo de autenticación es de un solo factor, pues involucra
solamente un secreto que el usuario conoce. Dicho tipo de autenticación es muy débil, pues está
sujeta a espionaje “por encima del hombro”, y peligro de robo de la base de datos del servidor,
entre otros problemas.

Averigüe en qué consisten estos dos problemas de seguridad.

En esta práctica, se configurará el servicio SSH de tal manera que emplee autenticación de dos
factores. Dicho esquema de autenticación involucra:
• Un token de autenticación que el usuario posee (en este caso, un disquete o una memoria
USB).
• Un secreto que el usuario conoce (el passphrase que se emplea para desbloquear la clave
privada almacenada en el token).

Seguridad – Taller #2
Página 2 de 9
CONFIGURACIÓN DEL SERVIDOR SSH

Algunas versiones del servidor SSH no vienen configuradas para soportar autenticación con clave
pública. Para tal efecto, se debe hacer lo siguiente para configurar nuestro servidor Ubuntu para
soportar este tipo de autenticación:

• Acceder a la línea de comando en la máquina Ubuntu.


• Ejecutar el comando sudo vi /etc/ssh/sshd_config
• Si lo hay, quitar el símbolo de comentario (#) de las siguientes líneas:

RSAAuthentication yes
PubKeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

• Verificar también que las líneas aparezcan como se ve en esta guía.


• Grabar el archivo.
• Ejecutar el comando sudo service sshd restart. De esta manera, el servidor SSH
leerá de nuevo el archivo de configuración, y aplicará los cambios.

INSTALACIÓN DEL CLIENTE SSH

En una máquina especificada por el instructor, encontrará el instalador de PuTTY, el cliente SSH
de código abierto que vamos a emplear en esta experiencia. Baje el instalador, e instale el
programa en su máquina. Fuera del salón de clase, puede encontrar la distribución más reciente
de PuTTY en http://www.chiark.greenend.org.uk/~sgtatham/putty/

CREACIÓN DE UN PAR DE CLAVES PARA AUTENTICACIÓN

Emplearemos ahora el programa PuTTYgen para generar un par de claves (pública y privada) para
la autenticación con SSH. La clave pública se copiará en el servidor Linux de su vecino, y la
privada se copiará en el medio que vamos a emplear como token de autenticación.

Ingresando por el menú Inicio al grupo de programas de PuTTY, inicie PuTTYgen. El programa
mostrará el siguiente cuadro de diálogo:

Seguridad – Taller #2
Página 3 de 9
Como parámetros, especifique una clave SSH-2 DSA, de 1024 bits de longitud. Presione el botón
Generate.

Mueva el mouse sobre el área blanca del cuadro de diálogo. Esto se hace con el fin de brindar una
semilla adecuada al generador de números aleatorios que se emplea para generar la clave.
PuTTYgen irá indicando la obtención de los datos aleatorios con una barra de progreso.

Tras generar la clave, el cuadro de diálogo aparecerá de la siguiente manera:

En el campo Key comment, escriba a continuación del texto que aparece, un guión, y sus
iniciales. Esto con el fin de dar una etiqueta de identificación a la clave.

En el campo Key passphrase, digite la passphrase que empleará para bloquear la clave privada.
Vuélvala a escribir en el campo Confirm passphrase.

Ahora, presione el botón Save private key. Emplee el nombre que quiera para el archivo (se
sugiere emplear sus iniciales), el sistema le adicionará la extensión .ppk. Guárdelo en el disquete,
o en la memoria USB, en el directorio raíz.

Seguridad – Taller #2
Página 4 de 9
Por último, vamos a transferir la clave pública al servidor Linux de su vecino. Para esto, arranque
PuTTY. Aparecerá el siguiente cuadro de diálogo:

En el campo Host name or IP Address, escriba la dirección del computador de su vecino.


Presione ENTER para abrir la sesión con el servidor.

Por tratarse de la primera vez que el cliente trata de conectarse con el servidor, aparecerá el
siguiente cuadro de diálogo:

Puede verificar de nuevo el fingerprint de la clave, para verificar que en efecto se esté conectando
con el servidor esperado. Una vez verificada, se acepta la clave presionando Yes.

Se abre entonces la pantalla de la terminal:

Seguridad – Taller #2
Página 5 de 9
Nos identificamos ante el sistema usando el nombre de usuario y el password adecuados. Tras
haber efectuado exitosamente la autenticación, obtendremos un signo de $ (el prompt del shell, o
intérprete de comandos de Linux).

Digite ahora el comando mkdir .ssh. Esto creará un directorio llamado .ssh, que se emplea
para almacenar archivos de configuración relacionados con el servicio SSH. Si aparece un error
que dice que el directorio ya existe, puede ignorarlo.

Luego digite chmod 700 .ssh, para que únicamente el dueño de este directorio (usted) pueda
acceder a él.

Acto seguido digite cd .ssh para pasarse al directorio de SSH.

Ahora, digite vi authorized_keys . Esto creará un archivo nuevo llamado authorized_keys,


donde se almacenará la clave pública que creamos con PuTTYgen. El archivo nuevo quedará
abierto en un editor de texto.

Regrese un momento a PuTTYgen, y seleccione todo el texto que aparece en el campo Public key
for pasting into OpenSSH authorized_keys file. Tenga en cuenta seleccionarlo TODO, dado que
hay más texto del que aparece en primera instancia en la pantalla. Presione CTRL+C para copiar
el texto al portapapeles.

Ahora regrese a PuTTY. Presione la tecla i (minúscula) para activar la modalidad de inserción del
editor. Haga clic con el botón derecho del ratón sobre la ventana, y el texto de la clave será pegado
en el editor.

Presione ahora Esc, y luego digite ZZ (dos zetas mayúsculas). Esto grabará el archivo y le
devolverá al prompt de shell.

Digite ahora el comando chmod 600 authorized_keys. Esto dejará el archivo con permisos de
lectura y escritura, solamente para el dueño.

Digite ahora el comando exit. Con esto saldrá del sistema, y la sesión de PuTTY se cerrará.

USO DEL PAR DE CLAVES PARA AUTENTICACIÓN

Con el par de claves instalado, podemos efectuar autenticación de dos factores. Para ello,
necesitamos configurar Pageant, que es el agente autenticador que PuTTY emplea para
autenticación con clave pública.

Seguridad – Taller #2
Página 6 de 9
Sencillamente, verifique que la memoria USB o el disco donde grabó la clave es accesible para el
sistema. Haga doble clic sobre el archivo de la clave privada (con extensión .ppk) para arrancar
Pageant. Si todo sale bien, aparecerá el siguiente cuadro de diálogo:

Digite el passphrase para desbloquear la clave privada. Si es correcta, Pageant se minimizará y


quedará corriendo en la barra de tareas (es el icono del computador con un sombrero).

En este momento, podemos arrancar PuTTY y ensayar la autenticación.


• Arranque PuTTY. En el campo “Host name or IP Address”, digite la dirección del servidor
de su vecino.
• Abrirá la terminal. Digite su nombre de usuario.

Si todo funciona bien, aparecerá un mensaje como éste:

Una vez que todos los usuarios tuvieran acceso por clave pública, se podría inhabilitar la
autenticación de SSH por password en el servidor, para hacer el equipo más seguro. Esto se
puede hacer de la siguiente manera:

• En el servidor, digite el comando sudo vi /etc/ssh/sshd_config


• Buscar la línea que dice PasswordAuthentication, quitarle el símbolo de comentario (#) y
cambiar el valor del parámetro a no.
• Debe también deshabilitarse el protocolo SSH versión 1, ya que tiene vulnerabilidades
significativas. Busque la línea Protocol en el mismo archivo de configuración, y verifique
que diga solamente Protocol 2. Si dice Protocol 1,2 deben eliminarse el uno y la
coma.
• Grabe el archivo.

Seguridad – Taller #2
Página 7 de 9
• Ejecute el comando sudo service ssh restart.

Tenga en cuenta que, a partir de este momento, los únicos usuarios que podrán acceder a la
máquina vía SSH, serán aquellos que hayan copiado su clave pública al archivo
~/.ssh/authorized_keys de su respectiva cuenta.

Una vez se finalice la sesión de SSH en Windows, se debe también finalizar Pageant, y desmontar
el token de autenticación. Si se inhabilita la autenticación con password, la única manera de
acceder al equipo sería:
• Estar en posesión de un token de autenticación válido.
• Conocer el passphrase que desbloquea el token.

USO DE WinSCP

Los servidores de SSH normalmente también ofrecen el servicio de copia segura de archivos entre
equipos, mediante el uso de los comandos SCP y SFTP. En esta parte del laboratorio,
emplearemos WinSCP, que es un cliente Windows que combina los dos comandos mencionados
anteriormente, en una interfaz gráfica muy fácil de usar.

Primero, descargue del servidor especificado por el profesor, el instalador de WinSCP. Por fuera
del laboratorio, podrá encontrar la distribución más reciente de WinSCP en http://winscp.net/

Corra el programa instalador. Una de las preguntas que se le hará especifica el tipo de interfaz a
usar; escoja la interfaz tipo “commander”, en la que las listas de archivos de los equipos local y
remoto aparecen lado a lado.

WinSCP también permite autenticación con clave pública. Para hacerlo, Pageant debe estar activo
(ver sección anterior) con su clave privada cargada. Arranque WinSCP; se mostrará el siguiente
cuadro de diálogo:

En el campo Host Name, introduzca la dirección IP del computador de su vecino, y en el campo


User Name, su nombre de usuario. Presione ENTER, podrá ver una ventana que muestra el
progreso del handshake y la autenticación. Una vez se hayan efectuado dichos procesos,
aparecerá la interfaz principal de WinSCP.

Seguridad – Taller #2
Página 8 de 9
Puede verse información específica de la conexión empleando el comando Commands | Server-
Protocol Information:

¿Qué algoritmo de cifrado están empleando su cliente WinSCP y el servidor de su vecino?


Cree un archivo de texto en Windows, y transfiéralo al computador de su vecino
empleando WinSCP. Capture el tráfico de la sesión completa de WinSCP, empleando
Wireshark. ¿Qué protocolo de capa de aplicación se emplea para la conexión y la
transferencia de los archivos?
Más allá de los paquetes iniciales del intercambio, ¿es posible ver algo más de texto plano
en la comunicación? (por ejemplo, algo del texto que escribió en el archivo?
¿Qué puede concluir de la seguridad del protocolo?

Seguridad – Taller #2
Página 9 de 9

S-ar putea să vă placă și