tcpdump es un potente analizador de paquetes de línea de comandos que le permite capturar e inspeccionar el tráfico de la red. Una de sus funciones más útiles es la capacidad de filtrar el tráfico por puerto, lo que le ayuda a centrarse en servicios o aplicaciones específicas.

Sintaxis básica de filtrado de puertos

Para capturar tráfico en un puerto específico, use el port palabra clave:

Comando
sudo tcpdump port 80

Esto captura todo el tráfico (tanto entrante como saliente) en el puerto 80 (HTTP).

Puertos de origen y destino

Puede especificar si filtrar por puerto de origen o de destino:

Comando
## Capture traffic FROM port 443
sudo tcpdump src port 443

## Capture traffic TO port 443
sudo tcpdump dst port 443

Múltiples puertos

Para monitorear múltiples puertos, use or o portrange:

Comando
## Capture HTTP and HTTPS traffic
sudo tcpdump port 80 or port 443

## Capture a range of ports
sudo tcpdump portrange 8000-8080

Combinación de filtros de puerto con otros criterios

Combine filtros de puerto con filtros de host o protocolo utilizando operadores lógicos:

Comando
## Capture SSH traffic from specific host
sudo tcpdump port 22 and host 192.168.1.100

## Capture DNS traffic (UDP port 53)
sudo tcpdump udp and port 53

## Exclude specific port
sudo tcpdump not port 22

Opciones útiles

Mejore su salida de tcpdump con estas opciones:

Comando
## Save capture to file
sudo tcpdump port 80 -w capture.pcap

## Show packet contents in ASCII and hex
sudo tcpdump port 443 -X

## Limit number of packets
sudo tcpdump port 25 -c 100

## Don't resolve hostnames (faster)
sudo tcpdump port 80 -n

Casos de uso comunes

  • Tráfico web: sudo tcpdump port 80 or port 443
  • Correo electrónico: sudo tcpdump port 25 or port 587 or port 993
  • Base de datos: sudo tcpdump port 3306 (MySQL) o port 5432 (PostgreSQL)
  • SSH: sudo tcpdump port 22

El filtrado de puertos con tcpdump es esencial para la resolución de problemas de la red, el análisis de seguridad y el monitoreo de aplicaciones específicas sin capturar tráfico innecesario.

Estrategia de captura que escala

Un buen flujo de trabajo tcpdump evita capturas gigantes inútiles:

  1. definir hipótesis (qué host/puerto/protocolo)
  2. construir filtro estrecho
  3. limitar el número o la duración de los paquetes
  4. guarde pcap para un análisis más profundo en Wireshark

Ejemplo:

Comando
sudo tcpdump -n -i eth0 host 10.0.0.15 and port 443 -c 500 -w tls-check.pcap

Esto le brinda un conjunto de datos enfocado en lugar de capturar todo en la interfaz.

Capturas de búfer en anillo para incidentes prolongados

Para problemas intermitentes, utilice archivos rotativos:

Comando
sudo tcpdump -i eth0 port 443 -C 20 -W 10 -w web-%Y%m%d%H%M%S.pcap

Esto mantiene el almacenamiento bajo control y al mismo tiempo preserva las ventanas de tráfico recientes.

Errores comunes de los filtros

Faltan paréntesis con and / or

La precedencia de la lógica del filtro puede sorprenderte. Condiciones del grupo claramente:

Comando
sudo tcpdump '(port 80 or port 443) and host 192.168.1.20'

Capturar sin -n

Las búsquedas inversas de DNS ralentizan la captura y añaden ruido. uso -n en sesiones de solución de problemas a menos que se requiera resolución de nombres.

Capturando en una interfaz incorrecta

Primero verifique la interfaz (ip a / ifconfig) antes de asumir eth0 está activo.

Recordatorio de seguridad y cumplimiento

Las capturas de paquetes pueden incluir credenciales, cookies, tokens y datos personales. Maneje archivos pcap como artefactos confidenciales:

  • restringir el acceso
  • cifrar en reposo
  • eliminar después de la investigación

Conclusión (operacional)

El filtrado de puertos es potente cuando es preciso. Utilice capturas pequeñas basadas en hipótesis con expresiones BPF claras y luego analice sin conexión. Esto proporciona un análisis de la causa raíz más rápido y menos conclusiones falsas.

Patrón de clasificación rápida para interrupciones del servicio

Cuando un servicio aparece inactivo:

  1. capturar el comportamiento SYN/SYN-ACK en el puerto de servicio
  2. confirmar que los paquetes lleguen a la interfaz correcta
  3. comparar capturas del lado del cliente y del lado del servidor
  4. validar contadores/registros de firewall

Esto le indica rápidamente si la falla se debe a la ruta, al firewall del host o al proceso de servicio.

Conclusión (respuesta a incidentes)

Durante los incidentes, tcpdump con filtros de puerto estrictos es una de las formas más rápidas de pasar de las conjeturas a la evidencia a nivel de paquete.