He buscado bastante por esto, pero parece que no puedo encontrar un ejemplo que funcione.
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 he agotado netstat, nmap y tcptrack, pero ninguno admite la marca de tiempo.
Estaba pensando que un script de shell de Linux podría funcionar si supervisaba un puerto local específico y escribía texto en un archivo cuando se realiza una conexión, luego concatena 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 tampoco se ajusta a mis necesidades ya que necesito el momento en que entra la conexión.
Si tiene alguna sugerencia o podría señalarme en la dirección correcta, sería muy apreciado.
Gracias. :)
Respuestas:
editar : Todavía estoy recibiendo votos para esto años más tarde. Por favor, no busque esta respuesta, la respuesta que usa
iptables
aquí es muy superior en mi opinión.o solo
tcp-syn
, o solotcp-ack
(supongo que sería ese), dependiendo de lo que necesite.fuente
-n
después de tcpdump (man tcpdump: -n No convierta direcciones (es decir, direcciones de host, números de puerto, etc.) a nombres. )Puede usar 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 configurar (pero dado que está hablando del puerto 443, que es un puerto privilegiado, probablemente necesite privilegios de root con la mayoría de las soluciones).
Agregue una regla de iptables con algo como:
(Ajuste la
-I INPUT
parte a su gusto).Cuando se activa la regla, el núcleo emitirá una entrada de syslog. Por ejemplo, con una regla de entrada, la entrada del registro puede verse así:
Luego, puede usar cualquier herramienta de monitoreo de registro corriente para hacer algo útil con esta información. Si su implementación de syslog lo admite, incluso puede dirigirlos a un archivo de registro separado, cumpliendo efectivamente su requisito de escribir los datos de conexión en un archivo con marca de tiempo al segundo sin software adicional.
Tenga en cuenta que el
LOG
objetivo es un objetivo sin terminación, lo que significa que las reglas que siguen se evaluarán y la regla LOG no rechazará ni aceptará el paquete. Esto hace que elLOG
objetivo sea útil también para depurar las reglas del firewall.Para evitar inundar su registro, considere usar el
limit
módulo junto con esto. Consulte la página del comando man iptables (8) para obtener más información.fuente
Micro-segunda resolución
Por defecto, la utilidad tcpdump informará el tiempo con una resolución de microsegundos. Por ejemplo:
mostrará una salida similar a la siguiente:
Consulte tcpdump (8) para obtener una lista completa de las opciones de tcpdump y pcap-filter (7) para ver la sintaxis completa de los filtros que puede usar.
fuente
443 es tráfico encriptado, de todos modos es muy difícil hacer cabezas o colas de tráfico en este puerto:
tu puedes hacer
yum install ngrep o apt-get install ngrep
entonces corre
fuente
Puede requerir esto también para monitorear los paquetes entrantes y salientes de otras máquinas.
(opción
-i
para mencionar la red, opción-c
para imprimir los paquetes en la consola)fuente
Puedes usar tcpdump o Wireshark.
fuente
Si necesita una solución permanente que siempre supervise el tráfico en los puertos de interés, le sugiero que use QoS (el comando tc en Linux). tc es un poco críptico e indocumentado, por lo que utilizo FireQoS para configurar QoS y netdata para monitorearlo en tiempo real.
Consulte esto para obtener más información: https://github.com/firehol/netdata/wiki/You-should-install-QoS-on-all-your-servers
fuente