Monitorear el tráfico TCP en un puerto específico

Monitorear el tráfico TCP en un puerto específico

He buscado esto bastante extensamente, pero parece que no puedo encontrar un ejemplo funcional.

Mi objetivo es monitorear el tráfico TCP en un puerto específico para ver las conexiones entrantes y escribirlas en un archivo de texto. El problema es que también necesito una marca de tiempo en cada fila para mostrar exactamente cuándo el cliente se conectó a la segunda.

Ya agoté netstat, nmap y tcptrack, pero ninguno admite marca de tiempo.

Estaba pensando que un script de shell de Linux podría funcionar si monitoreaba un puerto local específico y escribía texto en un archivo cuando se establecía una conexión y luego simplemente concatenaba la fecha en cada línea.

Estaba jugando con esto:

netstat -ano|grep 443|grep ESTABLISHED

tan bien como esto:

tcptrack -i eth0 port 443

pero ninguno de los dos se adapta a mis necesidades ya que necesito la hora a la que llega la conexión.

Si tiene alguna sugerencia o puede indicarme la dirección correcta, se lo agradecería mucho.

Gracias. :)

Respuesta1

editar: Todavía recibo votos a favor por esto años después. Por favor, no busques esta respuesta, laresponder usandoiptablesaquí es muy superior en mi opinión.


tcpdump port 443 and '(tcp-syn|tcp-ack)!=0'

o solo tcp-syn, o solo tcp-ack(supongo que sería ese), dependiendo de lo que necesites.

Respuesta2

Puede utilizar el soporte de iptables en el kernel de Linux para esto.La ventaja es que no requiere ningún software adicional para ser moderadamente útil. La desventaja es que requiere privilegios de root para configurarse (pero dado que estás hablando del puerto 443, que es un puerto privilegiado, probablemente necesites privilegios de root con la mayoría de las soluciones).

Agrega una regla de iptables con algo como:

sudo iptables -I INPUT -p tcp --dport 443 --syn -j LOG --log-prefix "HTTPS SYN: "

(Ajuste la -I INPUTpieza a su gusto).

Cuando se activa la regla, el kernel emitirá una entrada de syslog. Por ejemplo, con una regla de entrada, la entrada del registro puede verse así:

5 de diciembre 09:10:56 nombre de host kernel: [1023963.185332] HTTPS SYN: IN=ifX OUT= MAC=80:80:80:80:80:80:80:80:80:80:80:80:08:00 SRC=ABCD DST=WXYZ LEN=52 TOS=0x00 PREC=0x20 TTL=119 ID=11901 DF PROTO=TCP SPT=37287 DPT=443 VENTANA=8192 RES=0x00 SYN URGP=0

Luego puede utilizar cualquier herramienta de monitoreo de registros común y corriente para hacer algo útil con esta información. Si su implementación de syslog lo admite, puede incluso dirigirlos a un archivo de registro separado, cumpliendo efectivamente con su requisito de escribir los datos de conexión en un archivo con marca de tiempo en el segundo sin software adicional.

Tenga en cuenta que el LOGdestino es un destino que no termina, lo que significa que cualquier regla que lo siga aún se evaluará y el paquete no será rechazado ni aceptado por la regla LOG en sí. Esto hace que el LOGobjetivo también sea útil para depurar reglas de firewall.

Para evitar inundar su registro, considere usar el limitmódulo junto con esto. Consulte la página del manual de iptables(8) para obtener más detalles.

Respuesta3

Resolución de microsegundos

Por defecto, eltcpdumpLa utilidad informará el tiempo con una resolución de microsegundos. Por ejemplo:

$ sudo tcpdump -i any port 443

mostrará un resultado similar al siguiente:

12:08:14.028945 IP localhost.33255 > localhost.https: Banderas [S], secuencia 1828376761, win 43690, opciones [mss 65495,sackOK,TS val 108010971 ecr 0,nop,wscale 7], longitud 0
12:08: 14.028959 IP localhost.https > localhost.33255: Banderas [R.], secuencia 0, confirmación 1828376762, ganancia 0, longitud 0

Consulte tcpdump(8) para obtener una lista completa de las opciones de tcpdump y pcap-filter(7) para obtener la sintaxis completa de los filtros que puede utilizar.

Respuesta4

Es posible que también necesite esto para monitorear los paquetes entrantes y salientes de otras máquinas.

tcpflow -i eth0 -c port 7891

(opción -ipara mencionar la red, opción -cpara imprimir los paquetes en consola)

información relacionada