Tráfico anómalo saliendo de un servidor. Ningún log de aplicación útil. Tcpdump reveló en 3 comandos una conexión a una IP externa en el puerto 4444 cada 30 segundos. Cuando investigué una organización sanitaria pública con 2.000 endpoints que sufría ralentizaciones misteriosas, los logs del sistema estaban limpios. Los firewalls no registraban bloqueos. Ejecuté tcpdump y la realidad emergió: un proceso comprometido se comunicaba con una infraestructura C2 cada 30 segundos. El 73% de las brechas se originan en comunicaciones externas no monitorizadas según el Verizon DBIR 2025. Cumplir con el art. 21 de NIS2 exige visibilidad real de la red, no solo logs de sistema. Con tcpdump no tienes filtros interpretativos. Ves exactamente qué transita por los cables. Esta guía te entrega los comandos para capturar, filtrar y guardar el tráfico, transformándote de sysadmin en analista de seguridad.
Requisitos Previos para Tcpdump en Linux
En Debian y Ubuntu instala el paquete con sudo apt install tcpdump. En RHEL o Rocky Linux usa sudo dnf install tcpdump. La herramienta requiere privilegios root o la capability CAP_NET_RAW. Verifica la instalación con tcpdump --version. Para este entorno de prueba, necesitas acceso root y una máquina Linux con tráfico de red activo. La sintaxis base es simple: tcpdump [opciones] [filtro]. Sin opciones, captura todo en la primera interfaz disponible. En una red enterprise, el volumen de datos te sumerge en segundos. Aprende a filtrar de inmediato.
Captura y Filtrado de Tráfico de Red
Una máquina moderna tiene múltiples NIC. sudo tcpdump -D lista las interfaces disponibles. Si no especificas nada, tcpdump elige la primera. En un servidor con 300+ VM y bridge VLAN, debes apuntar a la interfaz correcta. El comando base es sudo tcpdump -i eth0. Si quieres capturar en todas las interfaces activas, usa sudo tcpdump -i any. Atención: -i any crea un tráfico agregado que Wireshark interpreta con timestamps inconsistentes. Apuntar a la interfaz específica siempre es la mejor opción para análisis forense.
El tráfico total es ruido. Aislar un host específico reduce la carga y te muestra solo la conversación relevante. sudo tcpdump -i eth0 host 192.168.1.1 captura todo lo que entra o sale de 192.168.1.1. Si quieres solo el tráfico de salida hacia esa IP, usa src: sudo tcpdump -i eth0 src host 192.168.1.1. Para el tráfico de entrada, dst host. En la práctica, cuando busco una comunicación sospechosa en un entorno enterprise, filtro por la IP del servidor comprometido y observo quién contacta al exterior.
Los puertos identifican los servicios. Filtrar por puerto te concentra en DNS, HTTP o SSH sin distracciones. sudo tcpdump -i eth0 port 80 captura el tráfico web. Para SSH usa port 22. Para combinar puertos: port 80 or port 443. Los filtros por puerto son la primera defensa cuando depuras un servicio que no responde. Si el tráfico no llega al puerto previsto, el problema es de routing o firewall, no de la aplicación.
Tcpdump distingue los protocolos de nivel 3 y 4. sudo tcpdump -i eth0 tcp captura solo segmentos TCP. udp, icmp, arp son otros filtros comunes. Si investigas un ataque DDoS volumétrico, filtrar por icmp te muestra inmediatamente la oleada de ping. Si depuras un problema de resolución DNS, udp port 53 es más preciso, pero filtrar por udp en general te da una panorámica de todos los servicios connectionless activos.
Análisis Profundo: BPF, PCAP y Casos Prácticos
Los paquetes vuelan por la terminal. No puedes analizar 50.000 paquetes en tiempo real. Debes guardarlos. sudo tcpdump -i eth0 -w captura.pcap escribe la salida raw en un archivo. El formato .pcap es el estándar universal para análisis de red. Añade -c 1000 para capturar solo 1000 paquetes y no llenar el disco. Una organización con 2.000 endpoints genera gigabytes de tráfico en pocas horas. Capturar sin límites hasta llenar el disco destruye tu sistema de archivos. Usa siempre -c o un cron para detener la captura.
El archivo .pcap es ilegible para un humano. Necesitas Wireshark. Transfiere el archivo del servidor Linux a tu estación de trabajo con scp. Abre Wireshark, carga el archivo y navega el tráfico con filtros GUI, coloraciones y estadísticas. Wireshark decodifica los protocolos de aplicación, mostrando el contenido de las solicitudes HTTP, los certificados TLS y las consultas DNS. Tcpdump captura. Wireshark analiza. Son las dos caras de la misma moneda. Consulta la documentación oficial completa en la tcpdump man page (https://www.tcpdump.org/manpages/tcpdump.1.html).
Berkeley Packet Filter (BPF) es el lenguaje que tcpdump usa para filtrar directamente en el kernel. Un filtro BPF bien escrito descarta los paquetes antes de que lleguen a la aplicación, reduciendo la carga en la CPU. sudo tcpdump -i eth0 'host 10.0.0.1 and port 443' combina host y puerto. Puedes usar and, or, not. Ejemplo para excluir tu SSH de monitorización: sudo tcpdump -i eth0 'not port 22 and host 10.0.0.1'. Los filtros BPF también soportan máscaras de red: net 192.168.0.0/24. Cuando analizo un incidente, uso combinaciones BPF complejas para aislar el tráfico C2 excluyendo el ruido de fondo legítimo.
Depurar HTTP en claro requiere visibilidad. sudo tcpdump -i eth0 -A port 80. La opción -A imprime el contenido de los paquetes en ASCII. Ves las solicitudes GET, las cabeceras y las cookies. En una red no cifrada, esto te muestra exactamente qué transita. El 40% del tráfico web interno sigue en claro según Statista 2025, convirtiendo este filtro en una mina de información durante la depuración.
Si un usuario no puede conectarse por SSH, captura el tráfico en el puerto 22. Ves el handshake TCP, el intercambio de claves y los intentos de autenticación. Si el firewall descarta el paquete, ves el SYN sin SYN-ACK.
Para DNS, ejecuta sudo tcpdump -i eth0 udp port 53. Ves las consultas y las respuestas. Si una aplicación no resuelve un hostname, comprueba si la consulta parte y si el DNS responde con un NXDOMAIN. Resolví un problema de latencia misteriosa en 300+ VM descubriendo que cada consulta DNS se reintentaba 3 veces antes de alcanzar el timeout.
# Cheatsheet rápida de filtros tcpdump
# Captura tráfico total en eth0
sudo tcpdump -i eth0
# Filtra solo host específico
sudo tcpdump -i eth0 host 192.168.1.1
# Filtra solo puerto 80
sudo tcpdump -i eth0 port 80
# Filtra solo protocolo TCP
sudo tcpdump -i eth0 tcp
# Combina host y puerto con BPF
sudo tcpdump -i eth0 'host 10.0.0.1 and port 443'
# Guarda captura en formato pcap
sudo tcpdump -i eth0 -w captura.pcap
# Lee tráfico HTTP en ASCII
sudo tcpdump -i eth0 -A port 80
Errores Comunes y Resolución de Problemas
«No suitable device found» significa que no tienes privilegios root o la interfaz está caída. Verifica con ip link. «Packet capture is too verbose» se resuelve añadiendo -q para una salida silenciosa o -t para eliminar los timestamps. Si la captura llena el disco, establece -c para el número de paquetes o -G 3600 para la rotación de archivos cada hora. No uses -i any para forense, los timestamps no son fiables.
Para ver el tráfico en tiempo real sin guardarlo, usa tcpdump sin la opción -w. Añade -nn para evitar la resolución DNS inversa, que ralentiza la salida, y -v para aumentar el nivel de detalle de los paquetes capturados.
La diferencia clave entre tcpdump y Wireshark radica en el entorno. Tcpdump captura y filtra el tráfico desde la línea de comandos en servidores remotos sin GUI. Wireshark analiza los archivos .pcap guardados con interfaz gráfica y decodificaciones avanzadas de los protocolos de aplicación.
Si necesitas capturar el tráfico de una VLAN específica, especifica la interfaz VLAN (ej. -i eth0.10) o usa el filtro BPF vlan 10. En switches gestionados, asegúrate de que el puerto esté configurado como mirror SPAN para capturar el tráfico de otros puertos.
Conclusiones con Puntos Clave Operativos
Tcpdump no es una herramienta de analistas de laboratorio. Es el primer instrumento que ejecuto cuando los logs mienten y la red oculta la verdad. Aprende los filtros BPF, usa -w para guardar y -A para leer el texto en claro. En una infraestructura enterprise, la capacidad de capturar y analizar el tráfico en 3 comandos marca la diferencia entre un incidente resuelto en 10 minutos y una brecha que dura meses. Todavía no tengo una respuesta definitiva sobre si las herramientas GUI reemplazarán algún día la velocidad de la CLI, pero en incidentes en vivo, la terminal gana. Lee también: Lynis Audit Linux: Guía Práctica de Hardening 2026