Parte: 1 — Redes y seguridad de redes · Fuente: Practical Packet Analysis, C. Sanders ⏱️ Duración estimada: 90 min · Nivel: Fundamentos
Capturar y filtrar tráfico desde la terminal con tcpdump, la herramienta imprescindible cuando no hay entorno gráfico (servidores, contenedores, dispositivos remotos por SSH). El alumno aprenderá la sintaxis BPF, la rotación de archivos y el flujo de trabajo "capturar en el servidor, analizar en Wireshark".
Al finalizar, el alumno podrá:
.pcap y rotarlas por tamaño o tiempo con un ring buffer.| # | Tema | Por qué importa |
|---|---|---|
| 1 | Selección de interfaz (-i) |
Capturar en el punto correcto |
| 2 | Snap length (-s) y verbosidad (-v) |
Equilibrio detalle/tamaño |
| 3 | Filtros BPF primitivos y compuestos | Reducir ruido en origen |
| 4 | Escritura y lectura de pcap (-w/-r) |
Analizar después con otras herramientas |
| 5 | Rotación con -C, -G, -W |
Capturas de larga duración |
| 6 | Filtrado por flags TCP | Ver handshakes, resets, escaneos |
| 7 | tcpdump sobre SSH | Capturar donde no hay GUI |
-s): bytes capturados por paquete. -s 0 (o el valor por defecto moderno) captura el paquete completo.-C tamaño, -W número) que evita llenar el disco.host, net, port, tcp, udp, src, dst.-n: desactiva resolución DNS/puertos; acelera y evita generar tráfico extra durante la captura.sudo apt install tcpdump o viene preinstalado.sudo o capacidad CAP_NET_RAW (sudo setcap cap_net_raw+ep $(which tcpdump)).tshark.⚠️ Nota ética: captura solo en interfaces de sistemas que administras o con autorización escrita. En servidores compartidos, tcpdump puede exponer datos de terceros.
bash
sudo tcpdump -D
bash
sudo tcpdump -i eth0 -n
bash
sudo tcpdump -i eth0 -n host 192.168.56.101 and tcp port 80
bash
sudo tcpdump -i eth0 -n 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack == 0'
bash
sudo tcpdump -i eth0 -s 0 -w /tmp/lab028.pcap port 53
Genera tráfico DNS en otra terminal (dig example.com) y detén con Ctrl-C.
6. Lee lo capturado con filtro de lectura:
bash
tcpdump -n -r /tmp/lab028.pcap 'udp port 53'
bash
sudo tcpdump -i eth0 -s 0 -C 10 -W 5 -w /tmp/rot.pcap
bash
sudo tcpdump -i eth0 -vvv -n icmp
bash
ssh usuario@servidor 'sudo tcpdump -i eth0 -s 0 -U -w - not port 22' | wireshark -k -i -
(El filtro not port 22 evita capturar tu propia sesión SSH y un bucle infinito.)
icmp.pcap.port 80 or port 443).-c 100 para limitar la captura a 100 paquetes y explica cuándo conviene.-G 60 y nómbralas con %Y%m%d-%H%M%S..pcap a .pcapng con editcap y ábrelo en Wireshark.Desde un servidor de laboratorio (o VM) sin entorno gráfico, captura durante 30 segundos todo el tráfico excepto tu sesión SSH, guárdalo con rotación en archivos de 5 MB, y entrega el primer archivo junto con el comando exacto usado. Documenta cuántos paquetes contiene según tcpdump -r archivo -n | wc -l.
Criterio de aceptación: el archivo abre sin errores en Wireshark, no contiene tráfico del puerto 22 hacia/desde tu IP, y el conteo declarado coincide con el del revisor.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
tcpdump: <iface>: You don't have permission |
Falta privilegio; usa sudo o asigna cap_net_raw |
| La captura por SSH nunca termina o se dispara | No excluiste el puerto 22; añade not port 22 |
| Paquetes truncados en Wireshark | Snap length bajo; captura con -s 0 |
| Filtro no captura nada | Sintaxis BPF incorrecta; prueba el filtro por partes y usa comillas |
| Disco lleno en captura larga | Sin rotación; usa -C/-W o -G/-W |
| No resuelve nombres y va lento | Al contrario, -n acelera; si va lento probablemente falta -n y hay DNS inverso |
❓ ¿tcpdump o Wireshark? tcpdump para capturar donde no hay GUI y para filtros rápidos; Wireshark para el análisis profundo. El flujo típico es capturar con tcpdump y disecar en Wireshark.
❓ ¿Por qué usar -w en vez de leer la salida de texto?
El texto pierde información. -w guarda el paquete íntegro para análisis posterior con cualquier herramienta.
❓ ¿Los filtros BPF de tcpdump y Wireshark son iguales? Los filtros de captura de Wireshark sí son BPF (idénticos a tcpdump). Los de visualización de Wireshark son un lenguaje distinto y más rico.
❓ ¿Cómo capturo sin que la captura afecte el rendimiento del servidor?
Filtra en origen con BPF, usa snap length moderado si solo necesitas cabeceras (-s 96) y evita -vvv en producción.
Clase 027 — Análisis de tráfico: filtros, seguimiento de flujos y estadísticas
Clase 029 — Nmap: descubrimiento de hosts y técnicas de ping