Unter Linux ist die Shorewall Firewall ein quasi Standard – bietet sie doch mehr Möglichkeiten als nur böse Jungs fernzuhalten. Wäre es nicht manchmal schön, wenn Admina mit einen Blick sehen könnte, welcher Rechner den meisten traffic verursacht? Genau dieses Feature ermöglicht uns die accounting Funktion der Shorewall.
Diese Anleitung basiert auf einen Server mit 3 Netzwerkkarten (2 kabel und 1 wlan), Ubuntu 12.04.2 LTS und Shorewall 4.4.26. Außerdem gehe ich hier von einer funktionsfähigen Shorewall aus. Diese Anleitung beschreibt quasi eine Ergänzung dieser Firewall. Ich gehe hier nicht(!) auf Grundlagen ein. Ich gehe hier von einer Konfiguration wie in meinen Artikel beschrieben aus. Kurz: Der Server hat eine Netzwerkkarte eth0/dhcp zum Internet, eine eth1/statisch zum Home- Lan und eine Wlan- Karte wlan1/statisch. Der Server ist ein (Wlan-) Router mit dnsmasq und für kabel und wlan getrennte subnets.
- Installiere folgendes Paket: xtables-addons-common.
- Überprüfe nochmal deine konfigurierte Shorewall auf OK.
- Überprüfe in /etc/shorewall/shorewall.conf ob folgende Optionen konfiguriert sind:
ACCOUNTING=yes ACCOUNTING_TABLE=filter # die Shorewall Webseite spricht hier von der table 'mangle' aber ich habe # es auf dem Vorgabewert 'filter' gelassen. Damit werden verschiedene # Sektionen z.B. FORWARD in der conf ermöglicht. OPTIMIZE_ACCOUNTING=no # ebenfalls Vorgabewert, also unverändert
- Kopiere die Datei /usr/share/doc/shorewall/default-config/accounting nach /etc/shorewall.
- Ergänze die /etc/shorewall/accounting mit Regeln – wie in dem folgenden Bild – entsprechend deinem Netzwerk:
Der Begriff SEKTION hilft Shorewall die aufgeführten Regeln an der richtigen Stelle in der Regel-Kette einzubauen. Die – beispielhaft aufgeführte – SEKTION INPUT ist leer, hat also keine Regeln, weil ich hier nur Regeln angelegt habe, die das routing/weiterleiten über einen Server vom Home-Lan in das Internet betreffen. Deswegen auch SEKTION FORWARD.
Übrigens: Die Großschreibung mache ich hier nicht weil meine Taste klemmt, sondern weil Shorewall es so verlangt!
Die Regeln kann man mit ein bischen Verstand gut nachvollziehen: Das Schlüsselwort ‘web’ ist frei wählbar und wird später mit den Befehlen wieder gebraucht, die Option COUNT besagt, dass Shorewall einfach den traffic ‘zählen’ soll – natürlich muss dann Shorewall auch wissen, von wo der traffic (192.168.1.0/24) angefragt und von wo (eth0, hier: das Internet) er kommen wird. Interessant (für mich) ist eigentlich nur tcp als Protokoll mit den Webserverdiensten http und https. Alternativ können auch port- Nummern eingetragen werden, z.B. 80, 443.
Da mein Server auch ein Wlan Router ist und die Wlan Geräte ein eigenes Subnet haben, wollte ich natürlich auch eine Regel, die mir den web-traffic dieser Geräte loggt (http aus 192.168.2.0).
Die zwei Zeilen – welche mit COUNT beginnen – dienen nur der Zusammenfassung und machen in der Befehls- Ausgabe eine eigene Zeile: Fasse mir alles, was über die zweite Netzwerkkarte eth1 und die Wlan- Karte wlan1 traffic verursacht – unabhängig(!) welcher Dienst – nochmal in jeweils einer Zeile zusammen.
Die letzen zwei Zeilen – welche mit ACCOUNT beginnen – ermöglichen die Aufschlüsselung des traffic’s nach Verursacher, also IP-Adresse aus dem genannten Subnet. Der Account- Name (hier: web-lan, web-wlan) ist frei definierbar.
Führe jetzt folgende Befehle auf der console aus:
sudo shorewall restart
sudo shorewall show -x web
(Das Schlüsselwort ‘web’ haben wir oben in unseren Regeln festgelegt.)
sudo iptaccount -a
(Der Parameter -a listet uns die tables auf, die wir oben in den ACCOUNT Zeilen festgelegt haben.)
sudo iptaccount -l <table aus -a>
Natürlich werden nur Werte (in bytes) angezeigt, wenn mittlerweile Traffic war – also einfach einen Rechner im Lan starten und Webseiten aufrufen.
Gute Hilfe bieten die Shorewall Webseiten und besonders der Abschnitt traffic accounting sowie ein ‘man accounting’ auf der console. Diese Konfiguration ist ausbaufähig: So könnte Admina festlegen, dass der traffic von einem Programmen ausgewertet wird, welches von einem bestimmten Benutzer gestartet wurde. Aber sowas brauchen nur kontroll- süchtige Eltern, die Telekom oder Gheimdienste.
Have fun
Comments