English

EDV Beratung Michael Müller

Dipl. Math. Michael Müller

Linux Network Connection Statistics

Dieses Packet dient der einfachen Protokollierung und Auswertung von Netzwerkverbindungen unter Linux. Es bezieht seine Daten aus der Netfilter Connection Tracking Schicht des Kernels. Dadurch ist es in der Lage auch Datenverkehr von verbindungslosen Protokollen (außer icmp), wie etwa UDP DNS Anfragen mit dazugehöriger Antwort, zu protokollieren.

Diese Software wird unter der GNU General Public License veröffentlicht. Jede Haftung wird ausgeschlossen.

Download

Beschreibung

Das Packet besteht aus zwei Komponenten:

Kurzer Logfile Auszug von ipclog

P 2004-08-05-16:41:22 ipclog started
H 2004-08-05-16:41:22 prot src             dst             sport dport fl  time
I 2004-08-05-16:41:22 UP   lo              127.0.0.1
I 2004-08-05-16:41:22 UP   eth0            192.168.0.1
I 2004-08-05-16:41:22 UP   ppp0            217.235.218.69
O 2004-08-05-16:41:37 udp  ppp0            217.237.151.97  32799 53    -      -
O 2004-08-05-16:41:37 tcp  ppp0            212.227.15.145  32786 25    t      -
O 2004-08-05-16:42:22 tcp  192.168.0.2     212.227.15.149  1601  110   t      -
O 2004-08-05-16:43:22 tcp  192.168.0.3     eth0            1602  22    e      -
C 2004-08-05-16:41:37 tcp  ppp0            212.227.15.145  32786 25    t      0
S 2004-08-05-16:43:47 tcp  192.168.0.3     eth0            1602  22    t     25
C 2004-08-05-16:42:22 tcp  192.168.0.2     212.227.15.149  1601  110   t      0
C 2004-08-05-16:41:37 udp  ppp0            217.237.151.97  32799 53    -      0
O 2004-08-05-16:45:27 udp  ppp0            217.237.151.97  32799 53    U      -
O 2004-08-05-16:45:32 tcp  ppp0            212.227.119.68  32788 80    e      -
S 2004-08-05-16:45:37 tcp  ppp0            212.227.119.68  32788 80    w      5
S 2004-08-05-16:45:42 tcp  ppp0            212.227.119.68  32788 80    t     10
C 2004-08-05-16:43:47 tcp  192.168.0.3     eth0            1602  22    t     25
O 2004-08-05-16:45:47 tcp  ppp0            212.227.119.68  32789 80    c      -
O 2004-08-05-16:45:47 tcp  ppp0            212.227.119.68  32790 80    e      -
S 2004-08-05-16:45:52 tcp  ppp0            212.227.119.68  32790 80    w      5
S 2004-08-05-16:45:57 tcp  ppp0            212.227.119.68  32790 80    t     10
C 2004-08-05-16:45:47 tcp  ppp0            212.227.119.68  32789 80    c      0
C 2004-08-05-16:45:42 tcp  ppp0            212.227.119.68  32788 80    t     10
C 2004-08-05-16:45:57 tcp  ppp0            212.227.119.68  32790 80    t     10
C 2004-08-05-16:45:47 udp  ppp0            217.237.151.97  32799 53    -     20
P 2004-08-05-16:49:00 ipclog stopped, 0 errors

Das Protokoll zeigt drei lokale Interfaces als "UP": lo, eth0 und ppp0. Es wurden mehrere eingehende, ausgegende und durchgehende Verbindungen protokolliert. Der Beispielrechner ist als Router (unter Einsatz von NAT) configuriert. Jede Verbindung hat einen open ('O') und einen closed ('C') Eintrag. Der closed Eintrag zeigt in der letzten Spalte die Verbindungszeit in Sekunden. Bei tcp Verbindungen gibt es zusätzlich einen state change ('S') Eintrag (time wait state, 't'). Der 'H' Eintrag zeigt die Spaltenüberschriften für die 'O', 'C' und 'S' Einträge.

Zu weiteren Einzelheiten siehe den Kommentar oben im Sourcecode von ipclog.

Weitere ipclog Features

Linkt man ipclog auf den Namen "ipc" (gleichwertig mit "ipclog -1") bekommt man ein User Kommando (kein Daemon), das alle zu Zeit offenen Verbindungen anzeigt:

$ ipc

H 2004-08-31-12:40:06 prot src             dst             sport dport fl  time
O 2004-08-31-12:46:13 50   ppp0            195.135.220.3   -     -     -      -

Bei Einsatz von NAT zeigt ipclog immer die urspüngliche Source Adresse des eingehenden Packetes und die endgütige Destination Adresse des ausgehenden Packetes an, die eventuell durch NAT geändert wurde. Mit der Option -N kann man zusätzlich die durch NAT eventuell geänderte ausgehende Source Adresse und die ursprüngliche eingehende Destination Adresse anzeigen.

Ipclog eignet sich wenig zum Anzeigen von ICMP Packeten (wie zum Beispiel ping), da diese von der Netfilter Schicht des Kernels normalerweise nur ganz kurz (im Millisekundenbereich) in /proc/net/nf_conntrack (bzw. ip_conntrack) sichtbar gemacht werden.

Beispiel Ausgabe von constat

Der Aufruf

constat

beziehungsweise

constat -d 2004-08-05

gibt eine Übersicht über die Verbindungen des heutigen Tages bzw. über die des angegebenen Datums aus:

scanning for date 2004-08-05

src             prot dport      dst                n nopn    avgtm    maxtm
---------------------------------------------------------------------------
192.168.0.3     tcp  ssh        eth0               1    0     25.0       25

nat-pc          tcp  pop3       my-pop-server      1    0      0.0        0

ppp0            tcp  http       any                3    0      6.7       10
ppp0            tcp  smtp       my-smtp-server     1    0      0.0        0
ppp0            udp  domain     my-nameserver      2    0     10.0       20

0 ERRORS

Die Ausgabe gruppiert die weiter oben gezeigten ipclog Einträge. Neben Source, Destination, Protokoll und Port wird die Anzahl der Verbindungen, die Anzahl der noch offenen Verbindungen und die durchschnittliche und maximale Verbindungszeit angezeigt.

Alle IP Adressen außer 192.168.0.3 sind in der Lookup-Datei eingetragen, und werden im Klartext ausgegeben, ebenso alle verwendeten Services (siehe File constat.lookup im Download). So fallen nicht eingetragene Adressen sofort auf und können näher untersucht werden.

Da beim Browsen im Web meist in kurzer Zeit viele Verbindungen mit vielen Webservern hergestellt werden, werden alle http und https Verbindungen unter Destination 'any' zusammengefasst (unterdrückbar durch "constat -noany"). Man kann aber auch http und https Verbindungen in der Lookup-Datei eingetragen und dann getrennt darstellen.

Aufrufübersicht:

usage: constat [options]
       options:
          -a:              scan whole file
          -d 'jjjj-mm-dd': specific date
          -f logfile:      scan logfile, default /var/logs/ipclog.log
          -h:              help
          -noany:          no 'any' dst hosts
          -nc:             no name cache lookup

Installation

Nun können Sie jederzeit "constat" aufrufen oder das Logfile direkt inspizieren.