Saltar al contenido principal

TP 4 – Realización práctica: El protocolo SSH

Elementos de corrección

Elementos de corrección para este TP están disponibles en el repositorio de ejercicios: 👉 módulo-16 – Correcciones

Módulo Bonus: Comprender las tarjetas de red VirtualBox y VMware

Para una explicación detallada de los tipos de tarjetas de red (NAT, Internal Network, Host-Only, Bridged) y su equivalente en VMware, consulte: 👉 Módulo 15 - Bonus: Tarjetas de red VirtualBox vs VMware

Objetivo​

Este TP tiene como objetivo comprender mejor el uso de Netcat y SSH en un entorno de red, destacando sus diferencias en términos de seguridad y funcionalidades.


Directrices​

  • Responda a las preguntas proporcionando capturas de pantalla pertinentes con comentarios de cada paso de configuración solicitado, así como los resultados obtenidos.
  • Conserve sus máquinas virtuales incluso después de entregar este trabajo.

Entorno requerido​

Hipervisor​

  • VirtualBox (o VMware Workstation / VMware Player)

Máquinas virtuales a crear​

MáquinaSistema operativoRAMDiscoCPURed
SSH-SRVUbuntu Server 24.04 LTS (o 22.04 LTS)1 GB mínimo20 GB1 vCPURed interna (intnet)
SSH-CLIUbuntu Server 24.04 LTS (o 22.04 LTS)1 GB mínimo20 GB1 vCPURed interna (intnet)
Configuración de red en VirtualBox

Ambas máquinas deben estar conectadas a la misma red interna (modo «Internal Network» en VirtualBox, nombrada por ejemplo intnet). Ninguna de las dos máquinas necesita acceso a Internet para este TP.

Software requerido en las VMs​

  • openssh-server y openssh-client
  • netcat-openbsd (o ncat)
  • tcpdump
  • Wireshark (en la máquina anfitriona o en una VM con interfaz gráfica para analizar los archivos .pcap)

Topología de red​


Puesta en marcha del entorno​

Pregunta 1 – Creación de las máquinas virtuales​

Cree dos máquinas virtuales: SSH-SRV y SSH-CLI y configúrelas según la topología anterior.

MáquinaRolDirección IPMáscara
SSH-SRVServidor Netcat / SSH10.11.12.1/24
SSH-CLICliente Netcat / SSH10.11.12.2/24

Pregunta 2 – Instalación del servicio SSH​

Instale en el servidor Linux SSH-SRV el servicio SSH (openssh-server).

sudo apt install -y openssh-server    # Ubuntu/Debian
# o
sudo dnf install -y openssh-server # AlmaLinux/RHEL

Pregunta 3 – Descripción de Netcat​

Describa brevemente la herramienta Netcat.

Pregunta 4 – Instalación de Netcat​

Instale en los servidores Linux SSH-SRV y el cliente Linux SSH-CLI la herramienta Netcat.

# AlmaLinux / RHEL
sudo dnf install -y nmap-ncat

# Ubuntu / Debian
sudo apt install -y netcat

Primera parte – Transferencia con Netcat (no cifrada)​

Pregunta 5 – Captura del tráfico de red​

Utilizando el comando tcpdump, capture el tráfico de red en la interfaz 10.11.12.1 usando el comando:

tcpdump -i <interface> -w capture1.pcap

Donde <interface> es la interfaz de comunicación entre SSH-SRV y SSH-CLI.

Pregunta 6 – Apertura de la comunicación Netcat​

Cree un directorio llamado rep en SSH-SRV y luego abra una comunicación vía Netcat y ejecute el comando:

mkdir -p rep
cd rep
nc -l -p 64321 > tonfichier.txt

Pregunta 7 – Envío del archivo desde el cliente​

El comando anterior permitirá que el servidor SSH-SRV espere a que el cliente abra una conexión hacia el servidor que escucha en el puerto 64321. El archivo a enviar por el cliente al servidor se llamará monfichier.txt y será copiado bajo el nombre tonfichier.txt en el servidor una vez realizado el traspaso.

Debe, previamente, crear en SSH-CLI el archivo monfichier.txt con un contenido (por ejemplo: « Ceci est un contenu secret »).

El comando a ejecutar en la máquina cliente SSH-CLI es:

nc 10.11.12.1 64321 < monfichier.txt

Pregunta 8 – Detener la captura​

Detenga la captura de paquetes (Ctrl+C en la terminal de tcpdump).

Pregunta 9 – Verificación del archivo​

En SSH-SRV, verifique que el contenido del archivo tonfichier.txt es idéntico al de monfichier.txt del cliente.

cat tonfichier.txt

Pregunta 10 – Análisis con Wireshark​

Abra el archivo capture1.pcap con Wireshark (puede instalarlo previamente en SSH-SRV, o transferir la captura de la VM a su PC).

# Instalación de Wireshark (si es necesario)
sudo apt install -y wireshark # Ubuntu/Debian

Pregunta 11 – Identificación del 3-way handshake​

Analizando el tráfico capturado, identifique los segmentos que aseguran la conexión entre el cliente y el servidor:

Para ello, utilice el filtro de Wireshark:

tcp.flags.syn == 1 || tcp.flags.ack == 1

Indique los números de los paquetes correspondientes.

Pregunta 12 – Puerto TCP del cliente Netcat​

¿Qué puerto TCP utiliza el cliente Netcat?

Pregunta 13 – Número de paquete de la transferencia​

Identifique el número de paquete que permite la transferencia del archivo monfichier.txt desde el cliente.

Pregunta 14 – Captura del contenido transferido​

Realice una captura de pantalla (en Wireshark) del contenido del archivo transferido.

Pregunta 15 – Deducción​

¿Qué se puede deducir?

A tener en cuenta

Con Netcat, los datos transitan en claro por la red. Cualquiera que capture el tráfico puede leer el contenido del archivo transferido. Es aquí donde SSH entra en juego para cifrar las comunicaciones.


Segunda parte – Transferencia vía túnel SSH (cifrado)​

Pregunta 1 – Autenticación por contraseña​

Configure la autenticación del cliente SSH por contraseña.

Pregunta 2 – Verificación de la autenticidad del servidor​

Verifique la autenticidad del servidor SSH SSH-SRV. Para ello, debe calcular el hash de la clave pública del servidor y compararlo con el que se propone antes de decidir conectarse a él.

# En SSH-SRV: mostrar la huella de la clave pública
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

Pregunta 3 – Autenticación por clave​

Configure la autenticación del cliente SSH por clave.

# En SSH-CLI: generar el par de claves
ssh-keygen -t ed25519

# Copiar la clave pública al servidor
ssh-copy-id root@10.11.12.1

Pregunta 4 – Captura del tráfico de red (túnel SSH)​

Utilizando el comando tcpdump, capture el tráfico de red en la interfaz 10.11.12.1 usando el comando:

tcpdump -i <interface> -w capture2.pcap

Pregunta 5 – Apertura de la comunicación Netcat en el servidor​

En el directorio rep en SSH-SRV, abra una comunicación vía Netcat y ejecute el comando:

cd rep
nc -l -p 64321 > tonfichier2.txt

Pregunta 6 – Configuración del túnel SSH​

Configure el túnel SSH para el servidor creado previamente por Netcat y el cliente. Supondremos que el cliente elige conectarse en el puerto local 10111/TCP.

Ejecute (en el cliente) el siguiente comando:

ssh -L 10111:10.11.12.1:64321 root@10.11.12.1

Explicación del túnel:

Pregunta 7 – Envío del archivo a través del túnel​

En otra terminal del cliente, ejecute el comando:

nc localhost 10111 < monfichier.txt

Pregunta 8 – Detener la captura​

Detenga la captura de paquetes de tcpdump.

Pregunta 9 – Verificación del archivo​

En SSH-SRV, verifique que el contenido del archivo tonfichier2.txt es idéntico al de monfichier.txt del cliente.

Pregunta 10 – Análisis con Wireshark​

Abra el archivo capture2.pcap con Wireshark.

Pregunta 11 – Puerto aleatorio del túnel​

¿Cuál es el número de puerto TCP aleatorio que utilizó el cliente SSH para el tunneling de Netcat?

Pregunta 12 – Filtro Wireshark sin resultado​

¿Por qué el siguiente filtro de Wireshark no arroja ningún resultado?

tcp.port == 64321 || tcp.port == 10111
Pista

Piense en lo que hace el túnel SSH con los puertos y el tráfico. ¿Son visibles los puertos 64321 y 10111 en la red entre las dos máquinas?

Pregunta 13 – Identificación de la transferencia cifrada​

¿Puede identificar el número de paquete que sirvió para la transferencia del archivo monfichier.txt? Si es así, ¿puede capturar el contenido del archivo transferido?


Comparación: Netcat vs túnel SSH​

CriterioSolo Netcat (Parte 1)Netcat + túnel SSH (Parte 2)
CifradoNingunoSí (SSH)
Puerto visible en la red6432122 (solo SSH)
Contenido visible en WiresharkSí (en claro)No (cifrado)
AutenticaciónNingunaPor contraseña o clave
SeguridadBajaAlta

TP creado el: Febrero 2025