Netzwerkanalyse, Fehlersuche, Testberichte
Home / News
Netzwerkanalyse
Grundlagen
Verkabelung
Erste Schritte
Baselining
Let's sniff
Tools
Auswerten/Filtern
Typische Probleme 1
Typische Probleme 2
Sicherheit
Bücher
Tutorials
Cacti
DSL einrichten
DynDNS einrichten
m0n0wall | pfSense
Nmap
VirtualBox
Wireshark
FAQ
Know How
Testberichte
Hardware-DB
Netzwerklexikon
Links / Service
Suche
Kontakt
Impressum
Feedback
Sitemap
Tutorials

IP Traffic Accountig mit pmacct

Für das Traffic Accounting werden häufig Flows ausgewertet. Ein Flow ist eine Verkehrsbeziehung zwischen zwei IP-Hosts. Er wird gekennzeichnet durch IP-Adressen, Protokoll und Port-Nummern. Im folgenden Beispiel sind die beiden Flows einer SNMP-Abfrage zu sehen.

src_ip          dst_ip          src_port   dst_port  proto   packets   bytes
192.168.0.101  	192.168.0.102  	4352  	   161       udp     8         584  
192.168.0.102 	192.168.0.101 	161 	   4352      udp     8         616 

Die Erfassung von Flows ermöglich eine genauere Auswertung als die reine Messung der Bandbreite und Auslastung (z.B. mit Cacti oder MRTG). Dabei ist die Datenmenge aber wesentlich geringer als bei der Speicherung des kompletten Traffics (z.B. mit Wireshark oder tshark). Daher bietet sich die Erfassung von Flows für das Accounting oder für das Lokalisieren von sporadischen Netzwerkproblemen an.

pmacct kann die Trafficdaten direkt von einem Interface auslesen und in eine SQL-Datenbank schreiben. Der interessierende Traffic muss per Spiegelport oder Tap zu diesem Interface geleitet werden. Der Zugriff auf die Daten erfolgt via libpcap. sFlow und NetFlow werden von pmacct ebenfalls als Datenquellen unterstützt.

pmacct installieren und einrichten

Das Tool pmacct besteht aus dem Frontend pmacct und dem Daemon pmacctd. Nach dem Download der aktuellen Version von pmacct, wird das Archiv entpackt und installiert:

wget http://www.pmacct.net/pmacct-0.11.4.tar.gz
tar xvzf pmacct-0.11.4.tar.gz
cd pmacct-0.11.4
./configure --enable-mysql 
make
make install

pmacct benötigt die Packete libpcap und libmysqlclient. Diese können unter debian mit apt-get installiert werden. Die Konfiguration wird in der Datei /etc/pmacct/pmacctd.conf gespeichert:

debian2:~# cat /etc/pmacct/pmacctd.conf

interface: eth0
daemonize: true
aggregate: src_host,dst_host,proto,src_port,dst_port

ports_file: /etc/pmacct/ports.list 

plugins: mysql

sql_user: pmacct
sql_passwd: sqlpassword
sql_db: pmacct
sql_table: acct_v4_%Y_%m_%d
sql_table_schema: /etc/pmacct/acct_v4.schema
sql_table_version: 4
sql_refresh_time: 60
sql_optimize_clauses: true
sql_history: 10m
sql_history_roundoff: m

Die MySQL-Datenbank pmacct muss manuell angelegt werden und sql_user sowie sql_passwd angepasst werden. Der SQL-User muss Tabellen in der Datenbank anlegen dürfen. Für die Testphase können Sie auch daemonize: false in die Konfig schreiben. Dadurch läuft pmacctd im Vordergrund. Die Datei /etc/pmacct/acct_v4.schema beschreibt das Aussehen der Tabellen:

debian2:~# cat /etc/pmacct/acct_v4.schema
CREATE TABLE acct_v4_%Y_%m_%d (

        ip_src CHAR(15) NOT NULL,
        ip_dst CHAR(15) NOT NULL,
        src_port INT(2) UNSIGNED NOT NULL,
        dst_port INT(2) UNSIGNED NOT NULL,
        ip_proto CHAR(6) NOT NULL,
        packets INT UNSIGNED NOT NULL,
        bytes BIGINT UNSIGNED NOT NULL,
        stamp_inserted DATETIME NOT NULL,
        stamp_updated DATETIME,
        PRIMARY KEY (ip_src, ip_dst, src_port, dst_port, 
        ip_proto, stamp_inserted)

); 

Mit der gezeigten Konfig legt pmacctd für jeden Tag eine neue Tabelle in der Datenbank an. Nun wird noch eine Datei mit den relevanten UDP- bzw. TCP-Ports benötigt:

debian2:~# cat /etc/pmacct/ports.list
20
21
22
23
25
53
67
68
80
110
111
119
135
137
138
139
143
161
443
1433
4662
8080
10000 

Nur Flows mit den in der /etc/pmacct/ports.list aufgeführten Portnummern werden auch mit Portnummern erfasst. Alle andere Portnummern werden von pmacctd durch eine 0 ersetzt. Dadurch wird das Datenvolumen deutlich reduziert.

Starten von pmacctd

Für einen ersten Test starten Sie pmacctd mit der Option -d. Dadurch werden zusätzliche Debug-Meldungen ausgegeben.

debian2:~# pmacctd -d -f /etc/pmacct/pmacctd.conf 

INFO ( default/mysql ): 131070 bytes are available to address 
      shared memory segment; buffer size is 100 bytes.
INFO ( default/mysql ): Trying to allocate a shared memory 
      segment of 3276700 bytes.
OK ( default/core ): link type is: 1

( default/mysql ) *** Purging cache - START ***

DEBUG ( default/mysql ): UPDATE acct_v4_2007_11_03 SET packets=packets+1, 
      bytes=bytes+52, stamp_updated=NOW() WHERE FROM_UNIXTIME(1194117600) = 
      stamp_inserted AND ip_src='192.168.0.101' AND ip_dst='192.168.0.102' 
      AND src_port=0 AND dst_port=22 AND ip_proto='tcp'

DEBUG ( default/mysql ): UPDATE acct_v4_2007_11_03 SET packets=packets+44, 
      bytes=bytes+10210, stamp_updated=NOW() WHERE FROM_UNIXTIME(1194117600) = 
      stamp_inserted AND ip_src='88.72.223.254' AND ip_dst='192.168.0.102' AND 
      src_port=0 AND dst_port=0 AND ip_proto='tcp'

( default/mysql ) *** Purging cache - END (QN: 4, ET: 0) ***
OK: Exiting ...

115 packets received by filter
0 packets dropped by kernel

Beim ersten Aufruf legt pmacctd dann die benötigte Tabelle in der MySQL-Datenbank an und schreibt die Daten in diese Tabelle. Den Inhalt können Sie sich zum Beispiel via phpmyadmin ansehen. Wenn das funktioniert, können Sie in der pmacctd.conf wieder daemonize: true setzen und pmacctd starten:

debian2:~# pmacctd -f /etc/pmacct/pmacctd.conf 

So sollte es aussehen, wenn pmacctd mit dem MySQL-Plugin aktiv ist:

debian2:~# ps -ef | grep pmacctd
root    8506     1  0 20:35 ?      00:00:00 pmacctd: Core Process [default]    
root    8507  8506  0 20:35 ?      00:00:00 pmacctd: MySQL Plugin [default]    
root    8525  7982  0 20:36 pts/0  00:00:00 grep pmacctd

Nun können Sie sich die erfassten Flows in der Datenbank ansehen. In einem aktiven Netzwerk können da in kürzester Zeit Tausende Flows auflaufen. Über die Datei /etc/pmacct/ports.list lässt sich die Granularität der Erfassung beeinflussen. Wenn die genutzten Protokolle und Ports für Sie nicht relevant sind, können Sie auch die Ports aus dem Aggregate-Statement entfernen:

aggregate: src_host,dst_host

Das Datenvolumen in der Tabelle wird dadurch natürlich wesentlich verringert. Bei Bedarf lässt sich die Erfassung auch auf die lokalen Hosts eingrenzen.

Auswertung der Flow-Daten

Die von pmacctd in der SQL-DB gespeicherten Flows lassen sich auf die vielfältigsten Arten auswerten. Für Einzelreports eignen sich Programme wie OpenOffice.org Calc, Microsoft Excel und Access.

FloX - Flow eXplorer

Flox ist ein kleines PHP-Script zum Auswerten von Flow-Daten. Flox wird über ein Webinterface gesteuert und erlaubt das einfache Setzen von Filtern auf die Flows.

Auswertung der Flows

pNRG - pmacct's Network Resource Grapher

pNRG erlaubt eine einfache grafische Darstellung von pmacct-Daten. pNRG greift dazu auf das pmacct-Frontend zu und speichert die Daten in RRD-Files. Um den Traffic der lokalen Host darzustellen, eignet sich folgende pmacctd-Konfig:

debian2:~# cat /etc/pmacct/pmacctd-pnrg.conf

daemonize: true

interface: eth0
plugins: memory[in], memory[out]

aggregate[out]: src_host
aggregate[in]: dst_host
aggregate_filter[out]: src net 192.168.0.0/24
aggregate_filter[in]: dst net 192.168.0.0/24

imt_path[out]: /tmp/pmacct_out.pipe
imt_path[in]: /tmp/pmacct_in.pipe

Dann starten Sie eine neue pmacctd-Instanz mit:

debian2:~# pmacctd -f /etc/pmacct/pmacctd-pnrg.conf

Beim Aufruf von http://example.org/pnrg sollte das dann so aussehen:

Grafische Darstellung Traffic pro IP-Adresse

pNRG benötigt rrdtool und rrdcgi. Im Quellcode und den Templates von pNRG sind einige Pfade hart kodiert. Diese müssen Sie bei Bedarf an ihr System anpassen.

Weiterführende Informationen

Viele weitere Informationen zu den Möglichkeiten von pmacct finden Sie auf der Projekt-Homepage. Dort wird u.a. auch die Integration in Cacti beschrieben. In den pmacct-contribs finden Sie nützliche Scripts für die Auswertung der Flows (z.B. Top Talker finden).

Hilfe im Forum

Im Netzwerkforum erhalten Sie Hilfe zur Nutzung von pmacct.

  • Fragen zur Installation und Benutzung von pmacct posten Sie bitte in das Forum Tools
  • Fragen zu Netzwerkprotokollen wie SNMP posten Sie bitte in das Forum Netzwerkprotokolle und Dienste

Professioneller Support

Im Raum Berlin bieten wir Ihnen professionellen Support für pmacct und die anderen genannten Tools an. Wir bieten Ihnen Hilfe bei Netzwerkproblemen und betriebsbereite Server mit IP-Accounting-Tools nach Ihren Vorgaben. Für den kurzfristigen Einsatz zur Fehlersuche halten wir auch Leihsysteme mit pmacct, ntop, Cacti und anderer Analysesoftware für Sie bereit. Individuelle Schulungen und Workshops zu Netzwerk-Monitoring und Protokollanalyse gehören ebenfalls zu unserem Angebot.

 

 
© 2004-2023, network lab - we make your net work - Netzwerkforum
aktualisiert am 22.03.2012