TP 4 – Realización práctica: El protocolo SSH
Elementos de corrección para este TP están disponibles en el repositorio de ejercicios: 👉 módulo-16 – Correcciones
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áquina | Sistema operativo | RAM | Disco | CPU | Red |
|---|---|---|---|---|---|
| SSH-SRV | Ubuntu Server 24.04 LTS (o 22.04 LTS) | 1 GB mínimo | 20 GB | 1 vCPU | Red interna (intnet) |
| SSH-CLI | Ubuntu Server 24.04 LTS (o 22.04 LTS) | 1 GB mínimo | 20 GB | 1 vCPU | Red interna (intnet) |
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-serveryopenssh-clientnetcat-openbsd(oncat)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áquina | Rol | Dirección IP | Máscara |
|---|---|---|---|
| SSH-SRV | Servidor Netcat / SSH | 10.11.12.1 | /24 |
| SSH-CLI | Cliente Netcat / SSH | 10.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?
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
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
| Criterio | Solo Netcat (Parte 1) | Netcat + túnel SSH (Parte 2) |
|---|---|---|
| Cifrado | Ninguno | Sí (SSH) |
| Puerto visible en la red | 64321 | 22 (solo SSH) |
| Contenido visible en Wireshark | Sí (en claro) | No (cifrado) |
| Autenticación | Ninguna | Por contraseña o clave |
| Seguridad | Baja | Alta |
TP creado el: Febrero 2025