GNU/Linux >> Tutoriels Linux >  >> Linux

Surveiller le trafic TCP sur un port spécifique

modifier :Je reçois toujours des votes positifs pour cela des années plus tard. S'il vous plaît, n'allez pas chercher cette réponse, la réponse en utilisant iptables ici est de loin supérieur à mon avis.

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

ou seulement tcp-syn , ou seulement tcp-ack (je suppose que ce serait celui-là), selon ce dont vous avez besoin.


Vous pouvez utiliser le support iptables dans le noyau Linux pour cela. L'avantage est qu'il ne nécessite aucun logiciel supplémentaire pour être modérément utile. L'inconvénient est qu'il nécessite des privilèges root pour être configuré (mais étant donné que vous parlez du port 443, qui est un port privilégié, vous avez probablement besoin de privilèges root avec la plupart des solutions).

Ajoutez une règle iptables avec quelque chose comme :

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

(Ajustez le -I INPUT pièce selon vos goûts.)

Lorsque la règle est déclenchée, une entrée syslog sera émise par le noyau. Par exemple, avec une règle d'entrée, l'entrée de journal peut ressembler à :

5 décembre 09:10:56 nom d'hôte noyau :[1023963.185332] HTTPS SYN :IN=ifX OUT=MAC=80:80:80:80:80:80:80:80:80:80:80:80:08:00 SRC=A.B.C.D DST=W.X.Y.Z LEN=52 TOS=0x00 PREC=0x20 TTL=119 ID=11901 DF PROTO=TCP SPT=37287 DPT=443 WINDOW=8192 RES=0x00 SYN URGP=0

Vous pouvez ensuite utiliser n'importe quel outil de surveillance de journal courant pour faire quelque chose d'utile avec ces informations. Si votre implémentation syslog le prend en charge, vous pouvez même les diriger vers un fichier journal séparé, répondant ainsi à votre exigence d'écrire les données de connexion dans un fichier horodaté à la seconde sans logiciel supplémentaire.

Notez que le LOG target est une cible sans terminaison, ce qui signifie que toutes les règles qui la suivent seront toujours évaluées et que le paquet ne sera ni rejeté ni accepté par la règle LOG elle-même. Cela rend le LOG cible utile également pour le débogage des règles de pare-feu.

Pour éviter d'inonder votre journal, pensez à utiliser le limit module en conjonction avec celui-ci. Voir la page de manuel iptables(8) pour plus de détails.


Résolution à la microseconde

Par défaut, l'utilitaire tcpdump rapportera l'heure avec une résolution en microsecondes. Par exemple :

$ sudo tcpdump -i any port 443

affichera une sortie semblable à la suivante :

12:08:14.028945 IP localhost.33255> localhost.https :Indicateurs [S], seq 1828376761, win 43690, options [mss 65495,sackOK,TS val 108010971 ecr 0,nop,wscale 7], longueur 0
12:08:14.028959 IP localhost.https> localhost.33255 :Drapeaux [R.], seq 0, ack 1828376762, win 0, length 0

Voir tcpdump(8) pour une liste complète des options tcpdump et pcap-filter(7) pour la syntaxe complète des filtres que vous pouvez utiliser.


Linux
  1. Comment surveiller le trafic Tcp entre l'hôte local et l'adresse IP ?

  2. Autoriser le trafic Web dans le pare-feu logiciel iptables

  3. Comment surveiller et enregistrer le trafic réseau sous Linux à l'aide de vnStat

  4. comment utiliser netstat sur un port spécifique sous Linux

  5. Acheminez uniquement le trafic spécifique via VPN

Surveillance de la bande passante

Comment envoyer un ping à un numéro de port spécifique

Installez Ntopng pour surveiller le trafic réseau sur Ubuntu 20.04

Vérifier le trafic réseau sortant

Comment puis-je transférer un port avec iptables ?

Socket Unix vs hôte TCP/IP:port