16. Ejercicios y herramientas prácticas

El dominio de la capa de aplicación se refuerza con ejercicios que permitan observar los protocolos en acción. Esta guía propone un laboratorio progresivo con utilidades disponibles en la mayoría de los sistemas operativos.

Las actividades se agrupan por tipo de tarea: pruebas rápidas, diagnóstico profundo y automatización. Adaptá cada ejercicio a tu entorno de desarrollo o laboratorio de red.

16.1 Pruebas con curl y wget

Comprueba endpoints HTTP/HTTPS verificando cabeceras, métodos y tiempos de respuesta:

curl -I https://api.ejemplo.com/v1/salud
curl -X POST https://api.ejemplo.com/v1/pedidos -H "Content-Type: application/json" -d "{\"producto\":42}"
wget --spider --server-response https://www.sitio.com/download.zip

Analiza el código de estado, los encabezados de caché, compresión y cookies. Con --trace-time en curl obtendras marcas temporales para identificar demoras.

16.2 Pruebas con ftp y sftp

Repite los flujos vistos en los temas de FTP y SFTP montando un laboratorio local:

ftp localhost
Name: demo
ftp> passive
ftp> put prueba.txt
ftp> get prueba.txt

sftp demo@localhost:/var/backups
sftp> put informe.csv
sftp> get log.txt

Documenta los puertos utilizados y registra con netstat o Get-NetTCPConnection cómo difieren los modos activo/pasivo y la encriptación.

16.3 Pruebas con ssh y scp

Verifica el acceso remoto, la huella digital y los tĂșneles:

ssh -i ~/.ssh/lab_ed25519 admin@192.168.0.10 "hostname && uptime"
ssh -L 9000:intranet.local:443 admin@servidor.bastion
scp archivo.log admin@192.168.0.10:/var/logs/

Complementa el ejercicio con ssh-keyscan para obtener las huellas digitales y compararlas con las que entrega el servidor en la primera conexión.

16.4 Pruebas con dig y nslookup

Confirma que los registros DNS estén disponibles y coherentes:

dig www.ejemplo.com A +trace
dig MX ejemplo.com
nslookup -type=TXT ejemplo.com

Anota los TTL, verifica los registros MX y TXT (SPF, DKIM) y valida la resolución desde distintos servidores públicos para descartar caches locales.

16.5 Análisis de tráfico con Wireshark o tcpdump

Captura sesiones breves para observar los mensajes reales de cada protocolo:

sudo tcpdump -i eth0 port 53
sudo tcpdump -i eth0 port 80 -w http.pcap

Abre los archivos en Wireshark y revisa el handshake TCP, las cabeceras HTTP y las respuestas DNS. Usa filtros por protocolo (http, smtp, ssh) para concentrarte en el tráfico relevante.

16.6 Comprobación de certificados TLS

Asegura que tus servicios presenten certificados vigentes y cadenas completas:

openssl s_client -connect www.ejemplo.com:443 -servername www.ejemplo.com
gnutls-cli www.ejemplo.com

Revisa las fechas de validez, el emisor y la configuración de cifrados. Complementa con Test-TlsConnection en PowerShell o scripts de Python que verifiquen la fecha de expiración.

16.7 Comprobación de puertos abiertos

Identifica rápidamente si los servicios están escuchando y accesibles:

nmap -p 22,25,80,443 servidor.ejemplo.com
Test-NetConnection -ComputerName servidor.ejemplo.com -Port 587

Acompaña los resultados con registros del firewall y herramientas de observabilidad para detectar bloqueos intermitentes o pérdida de paquetes.

16.8 Simulaciones de envío de correo

Practica el uso de SMTP con comandos manuales o scripts:

telnet smtp.ejemplo.com 25
EHLO laboratorio
MAIL FROM:<alertas@laboratorio.com>
RCPT TO:<soporte@laboratorio.com>
DATA
Subject: Prueba laboratorio

Mensaje de test.
.

Luego automatiza la misma prueba con PowerShell (Send-MailMessage) o Python (smtplib) para comprobar la consistencia de resultados.

16.9 Simulaciones de transferencia de archivos

Verifica el correcto funcionamiento de FTP/SFTP/SCP midiendo tiempos y verificando checksums:

scp archivo.iso admin@backup.local:/mnt/backups/
md5sum archivo.iso
ssh admin@backup.local "md5sum /mnt/backups/archivo.iso"

Confirmar que los checksums coinciden garantiza que la transferencia fue exitosa. Repite la prueba con distintos tamaños y condiciones de red.

16.10 Automatización de verificaciones

Integra varias pruebas en un script que puedas ejecutar a diario. Ejemplo en Python que consulta HTTP y DNS:

import requests
import dns.resolver

url = "https://www.ejemplo.com/health"
resp = requests.get(url, timeout=5)
print("HTTP", resp.status_code, resp.json())

resolver = dns.resolver.Resolver()
resolver.nameservers = ["8.8.8.8"]
respuesta = resolver.resolve("www.ejemplo.com", "A")
print("DNS", [r.address for r in respuesta])

Complementa el script con registros en archivos o dashboards para detectar tendencias y generar alertas automáticas cuando un servicio falle.