Statistiques de trafic par port réseau

15

J'ai deux machines avec deux applications qui se parlent sur quelques ports réseau (TCP et UDP). Je veux compter le trafic qu'ils envoient et reçoivent. J'ai besoin non seulement du nombre total, mais des statistiques par machine, par port et par jour. J'ai essayé darkstat , mais il ne fournit pas de statistiques par jour, mais uniquement des compteurs globaux.

Existe-t-il une autre façon de compter ce trafic (je peux mettre un proxy ou une passerelle entre ces deux machines).

pbm
la source

Réponses:

16

iptables peut vous donner des statistiques sur le nombre de déclenchements de chaque règle, vous pouvez donc ajouter des règles LOG sur les ports d'intérêt (disons le port 20 et le port 80):

iptables -A INPUT -p tcp --dport 22
iptables -A INPUT -p tcp --dport 80

puis

iptables -n -L -v

vous donnera le nombre de paquets et d'octets envoyés via ces ports. Bien sûr, vous devrez analyser à partir de la sortie les ports qui vous intéressent.

Si vous avez besoin de valeurs exactes, ajoutez un -x:

iptables -n -L -v -x
mzet
la source
4
Pas besoin de mettre des LOGrègles (qui vont inonder vos fichiers journaux), il suffit de compter le nombre de fois qu'une règle est déclenchée.
Gilles 'SO- arrête d'être méchant'
4
En effet. Une règle n'a pas besoin d'avoir une action. Une leçon utile à apprendre: les règles sans -Jsont bonnes pour la comptabilité.
Alexios
2

Vous pouvez ajouter des règles comptables à votre configuration iptables. Ceux-ci doivent se produire avant d'accepter le trafic ÉTABLI et ASSOCIÉ ou vous manquerez de compter le trafic qui passe. Pour compter le trafic Web, essayez une règle comme:

iptables -A INPUT -p tcp --dport 80 

Si vous en avez plusieurs, vous souhaiterez peut-être créer une chaîne de comptabilité afin de pouvoir en faire rapport et de mettre à zéro les compteurs indépendamment des autres chaînes.

Le pare-feu Shorewall vous permet d'ajouter facilement des règles de comptabilité à votre ensemble de règles.

BillThor
la source
1

N'oubliez pas d'inclure les statistiques de trafic en sortie.

# Port 80 (HTTP).
iptables -A INPUT -p tcp --dport 80
iptables -A OUTPUT -p tcp --sport 80

# Port 443 (HTTPS).
iptables -A INPUT -p tcp --dport 443
iptables -A OUTPUT -p tcp --sport 443


iptables -n -L -v
iptables -n -L -v -x


iptables -n -L -v -x | grep -i "Chain\|:443\|:80"

Chain INPUT (policy DROP 357 packets, 22828 bytes)
 1286265 75076978 ACCEPT tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp dpt:80
 1305378 75018232 ACCEPT tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp dpt:443

Chain OUTPUT (policy ACCEPT 303516 packets, 94716311 bytes)
     442   255112        tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp spt:80
      46    10515        tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp spt:443
Busindre
la source
0

Utilisez le tcpdump,

tcpdump -i any -nnn

les sorties de la commande ci-dessus incluraient l'horodatage, les adresses ip src / dest, le port et la longueur du paquet. Avec ces informations, vous pouvez facilement atteindre votre objectif grâce à un script bien écrit.

Derui Si
la source
0

Il n'est pas clair si vous avez besoin d'une utilisation par IP de destination, mais vnstat est un outil utile pour enregistrer l'utilisation du trafic par interface. Installez-le, puis exécutez-le vnstat -u -i eth0pour chaque interface que vous souhaitez surveiller. Pour obtenir ensuite l'utilisation par jour, utilisez vnstat -i eth0 -d.

mgorven
la source
1
Je ne pense pas qu'en utilisant vnstatje peux obtenir des statistiques par port ... Ou je me trompe?
pbm
1
@pbm Ah, vous voulez dire le port TCP / UDP. Non, vnstat ne fera pas ça.
mgorven