Documente Academic
Documente Profesional
Documente Cultură
FACULTAD DE INGENIERÍA
ASEGURAMIENTO DE PLATAFORMAS
SSH, SCP, 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.
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:
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.
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.
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.
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:
RSAAuthentication yes
PubKeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
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/
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.
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:
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.
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.
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á.
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:
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:
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:
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:
Seguridad – Taller #2
Página 9 de 9