You are on page 1of 11

INGENIERIA DE SISTEMAS

Práctica de laboratorio: Asegurar las comunicaciones


mediante SSH
Objetivos
Uso del servicio SSH

Información básica/situación
Hay un par de formas en que puede acceder a un shell (línea de comando) de forma remota en
la mayoría de los sistemas Linux / Unix. Una de las formas más antiguas es usar el programa
telnet, que está disponible en la mayoría de los sistemas operativos con capacidad de red. Sin
embargo, acceder a una cuenta shell a través del método telnet representa un peligro ya que
todo lo que envía o recibe a través de esa sesión telnet es visible en texto plano en su red local
y la red local de la máquina a la que se está conectando. De modo que cualquiera que pueda
"monitorear" la conexión intermedia puede ver su nombre de usuario, contraseña, correo
electrónico que leyó y los comandos que ejecuta. Por estos motivos, necesita un programa más
sofisticado que telnet para conectarse a un host remoto.
SSH, que es un acrónimo de Secure SHell, fue diseñado y creado para proporcionar la mejor
seguridad al acceder remotamente a otra computadora. No solo encripta la sesión, sino que
también proporciona mejores funciones de autenticación, así como funciones como transferencia
segura de archivos, reenvío de sesiones X, reenvío de puertos y más para que pueda aumentar
la seguridad de otros protocolos. Puede utilizar diferentes formas de cifrado que van desde 512
bits hasta 32768 bits e incluye cifras como AES (esquema de cifrado avanzado), Triple DES,
Blowfish, CAST128 o Arcfour. Por supuesto, cuanto más altos sean los bits, más tiempo llevará
generar y usar claves, así como el tiempo que tomará pasar datos a través de la conexión.
En el siguiente diagrama del lado izquierdo se muestra cómo cualquier usuario de la red puede
ver una sesión de telnet usando un programa de rastreo como Wireshark. En realidad, es
bastante trivial hacer esto y, por lo tanto, cualquier persona en la red puede robar sus
contraseñas y otra información. Se muestra al usuario jsmith ingresando a un servidor remoto a
través de una conexión telnet. Escribe su nombre de usuario jsmith y la contraseña C0lts06 !,
que pueden ver cualquiera que esté usando las mismas redes que él está usando.
El diagrama lado derecho, muestra cómo los datos en una conexión cifrada como SSH están
cifrados en la red y, por lo tanto, no pueden leerlos quienes no posean las claves negociadas en
la sesión, lo cual es una forma elegante de decir que los datos están codificados. El servidor aún
puede leer la información, pero solo después de negociar la sesión cifrada con el cliente.

Recursos necesarios
 VMware Workstation Pro (https://www.vmware.com/products/workstation-pro/workstation-
pro-evaluation.html)

1
INGENIERIA DE SISTEMAS

 Centos 7 Linux (https://www.centos.org/download/), instalado en dos máquinas virtuales,


una que actua como Cliente y otra como servidor
 Cliente Windows 10 instalado en una máquina virtual https://www.microsoft.com/es-
es/evalcenter/evaluate-windows-10-enterprise

Paso 1: Validar los usuarios existentes y la instalación del ssh en el Servidor y


Cliente
a. Validar la conectividad de la máquina virtual que contiene el Servidor (CentOS 7 Linux) con
la máquina virtual que tiene el cliente (CentOS 7 Linux y Windows 10), mediante el
comando ping.
Servidor Linux

Cliente Linux

Prueba de Conectividad mediante ping

b. Adicione usuarios en el Servidor mediante el comando


#useradd –c “Juan Perez” –p pruebassh1 jperez
c. Para verificar los usuarios existentes en el servidor visualizar el contenido del archivo
/etc/passwd. Puede utilizar el siguiente comando:
#cat /etc/passwd

2
INGENIERIA DE SISTEMAS

d. Para verificar la situación actual de la contraseña, visualice el usuario el archivo


/etc/shadow. Utilice el siguiente comando
#tail -5 /etc/shadow
e. Para encriptar la contraseña utilice el siguiente comando.
#passwd jperez
Vuelva a visualizar la situación actual de la contraseña y compruebe que está encriptado.

f. Ingrese como superusuario (root) para el uso adecuado de la utilidad YUM. Para el uso
completo de la utilidad, es necesario tener acceso a internet. Comprueba la instalación del
servicio ssh tanto en el cliente como en el servidor CentOS 7 Linux. Ejecute los siguientes

3
INGENIERIA DE SISTEMAS

comandos (por defecto debe estar instalado el servicio openssh, sino fuera el caso debe
instalarlo)
#rpm –qa openssh
#yum list all | grep ssh
#yum list installed | grep ssh
#yum list updates | grep ssh
#yum info openssh.x86_64

g. Ahora verifique si está activo el servicio ssh, mediante el comando:


#systemctl status sshd

Paso 2: Uso del servicio SSH desde un Cliente Linux


a. Lo primero que haremos es simplemente conectarnos desde la máquina cliente a la
máquina remota (el servidor). Esto se logra ejecutando 'ssh hostname' en su máquina

4
INGENIERIA DE SISTEMAS

local. El nombre de host que proporciona como argumento es el nombre de host de la


máquina remota a la que desea conectarse. De manera predeterminada, ssh asumirá que
desea autenticarse como el mismo usuario que usa en su máquina local. Para anular esto
y usar un usuario diferente, simplemente use remoteusername @ hostname como
argumento. Tal como se indica a continuación:
#ssh jperez@10.1.1.4
b. La primera vez le preguntará si desea agregar el host remoto a una lista de host conocidos
(“known_hosts”), continúe y diga “yes”, luego de ello ya estamos conectados al servidor.

Es importante prestar atención a esta pregunta porque esta es una de las principales
características de SSH (validación del servidor). Para decirlo simplemente, ssh comprobará
para asegurarse de que se está conectando al host al que cree que se está conectando.
De esa forma, si alguien intenta engañarte para que inicie sesión en su máquina para que
pueda “monitorear” tu sesión SSH, tendrás una advertencia.
Se crea una huella digital del servidor y después que el cliente valide esa huella, se guarda
en un archivo llamado known_hosts, alojado en el directorio oculto .ssh en el directorio
personal del usuario (/home/clientelinux). Compruebe la ubicación del archivo y el
contenido mediante los comandos que figuran en la siguiente pantalla.

c. Compruebe las conexiones al servidor mediante el comando que figura en la siguiente


pantalla:

Paso 3: Uso del servicio SSH desde un Cliente Windows


a. Para la conexión ssh desde un cliente Windows se utilizará el programa Putty. Descarge e
instale el programa desde la página www.putty.org
b. Abra el programa putty y registre el ingreso como se indica en la siguiente pantalla

5
INGENIERIA DE SISTEMAS

Similar al ingreso por el Cliente Linux, se emite un mensaje para asegurarse de que se
conecta al servidor correcto, responda si para continuar. Luego ingrese el usuario jperez
con el password respectivo y compruebe las conexiones al servidor (comando w)

6
INGENIERIA DE SISTEMAS

Paso 4: Monitoreo de la conexión mediante Wireshark


a. Para comprobar la diferencia entre una conexión telnet y una conexión por SSH desde un
cliente a un Servidor CentOS 7 Linux, monitoreamos la conexión con el “sniffer” Wireshark.
Ejecute el aplicativo y configúrelo para monitorear el enlace de red de la máquina virtual

b. Desde el Cliente Windows, abra el putty y conéctese al servidor Linux mediante ssh.
Capture las trazas y compruebe que los mensajes están encriptados.

7
INGENIERIA DE SISTEMAS

c. Ahora en el Servidor CentOS 7 Linux debe instalar telnet. Ejecute los comandos que se
indican en la siguiente imagen para instalar y configurar telnet.

8
INGENIERIA DE SISTEMAS

d. Desde el Cliente Windows, abra el putty y conéctese al servidor Linux mediante telnet.
Configure Wireshark para capturar trazas del protocolo telnet. Capture las trazas y
compruebe que los mensajes NO están encriptados.

9
INGENIERIA DE SISTEMAS

Paso 5: Uso de SCP (Secure copy) para transferencia de archivos


a. Dentro del directorio de trabajo del usuario jperez, en el servidor Linux, cree un archivo
para las pruebas con scp. En la siguiente imagen se ha creado un archivo llamado
scp_prueba.txt. Con el editor nano registre caracteres dentro del archivo indicado.

b. Verifique los archivos y directorios existentes en el directorio de trabajo que está usando en
el Cliente Linux, como se muestra en la siguiente imagen:

c. Utilice en comando scp, para copia segura de archivos, para transferir el archivo
scp_prueba.txt desde el servidor al cliente, como se indica en la siguiente imagen. Luego
valide la existencia del archivo en el directorio respectivo.

d. Ahora utilice SCP para transferir un archivo desde el Cliente Linux al Servidor. Para ello
debe crear un archivo en el Cliente Linux, y luego utilizar el comando scp, como se indica
en la siguiente imagen. Valide la transferencia.

10
INGENIERIA DE SISTEMAS

TRABAJO AUTÓNOMO SSH


INSTRUCCIONES:

1. Leer la separata subida en Trilce sobre asegurar las comunicaciones en Linux. También
las páginas 327 a 333 del libro electrónico compartido en Trilce.

2. Visualizar los siguientes enlaces/videos disponibles en la Web:

SSH Tutorial for Linux


https://support.suso.com/supki/SSH_Tutorial_for_Linux

SSH - OpenSHH en Centos 7


https://www.youtube.com/watch?v=e-io1frnw8M

Configurar llaves SSH para Linux y Windows


https://www.youtube.com/watch?v=dvVBIVywtFQ

Llaves SSH para iniciar sesión sin contraseñas


https://www.youtube.com/watch?v=gzXgZ2WFhEo

3. Extrae, instrucciones imágenes, ejemplos, de cada uno de los temas revisados y elabora
un instructivo que sirva como guía para utilizar las distintas funcionalidades de SSH:
- Utilizar un puerto distinto al 22 para ssh.
- Generación de claves públicas y privadas para utilizar ssh.
- Utilizar el programa ssh-agent
- Túneles SSH

4. Suba vuestro trabajo al Trilce.

5. Puede revisar material adicional que Ud. crea conveniente.

11

You might also like