Re: Richtiges Traffic Accounting

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Wed, 14 Jul 2004 10:40:52 +0200 (CEST)

Philon Terving <philon(at)macnews.de> wrote:
> auf meinem kleinen Apache-Server versuche ich nun seit einer kleinen
> Weile herauszubekommen wieviel Traffic an der Kiste passiert. Ntop macht
> da einen recht guten Job, bis jetzt. Dummerweise kann ich das was Ntop
> misst nicht in Relation zu dem setzen was mir die Apachelogs so auswerfen.
>
> Wenn da mehrere 100 MB Differenz sind, kann doch was nicht stimmen oder?
> Immerhin läuft auf der Kiste offen nur ein Apache auf Standard 80.

Ich kenne ntop nur dem Namen nach und weiß nicht, was das
genau mißt, aber mit Sicherheit mehr als in den Apache-Logs
zu finden ist -- der Apache loggt nämlich nur die Größe des
übertragenen Contents, nicht aber das HTTP-Protokoll, ganz
zu schweigen von TCP- und IP-Overhead.

Bei vielen Webseiten, deren Design aus lauter kleinen GIFs
oder PNGs aufgebaut ist, nehmen die HTTP-Header teilweise
mehr Platz ein als das jeweilige Bild selbst -- hier können
durchaus mal doppelt so viele Bytes durch die Leitung rau-
schen als der Apache loggt (als Content). Typisches Bei-
spiel wäre eBay, wo es nicht ungewöhnlich ist, wenn eine
Seite mal 100 oder mehr kleine Inline-Images hat.

Extremes Beispiel: Wenn Du auf einem Webserver surfst, wo
Dir jede Seite und jedes einzelne Inline-Image noch 4 Kbyte
Cookies mitschleppen, dann tauchen diese _nicht_ in den
Apache-Logs auf. Abschalten der Cookies im Browser hilft
da natürlich gar nichts, denn der Server schickt sie Dir
immer, ob Du sie nun willst oder nicht. (Das Abschalten
bewirkt lediglich, daß der Browser sie ignoriert und nicht
speichert oder zurücksendet.)

Außerdem loggt der Apache ja nur den Content, den er aus-
liefert; alles andere fällt unter den Tisch, beispielsweise
die Inhalte von HTML-Formularen, die Daten von CGI-Queries,
File-Uploads usw.

Und nebenbei hast Du natürlich zwangsläufig nicht nur auf
Port 80 Traffic. Ab und zu wird es auch mal DNS-Anfragen
geben, vielleicht gleichst Du Deine Uhrzeit per NTP ab (was
ja generell empfehlenswert ist), und das eine oder andere
ICMP-Paket wird auch auch Deinen Port passieren.

> tcpdump bin ich gerade am laufen lassen, dort ist aber nix
> ungewöhnliches, im Moment. Eine DoS-Attacke kann doch auch nix an
> geschloßenen Ports ausrichten?

Naja, ein Angriff (oder sei es nur ein Scan) erzeugt halt
auch Traffic. Erstens natürlich die Scan-Pakete, die ja
durchaus bei Dir ankommen und als Incoming-Traffic gezählt
werden müssen -- das läßt sich nicht verhindern, es sei
denn, das Zeug wird schon irgendwie von Deinem Provider
weggefiltert. Und dann schickt Dein Rechner ja wiederum
-- wie jeder korrekte TCP/IP-Stack -- Pakete mit TCP-Resets
zurück (das erzeugt dann auf der Gegenseite ein »connection
refused«), es sei denn, Du dropst das Zeug einfach in der
Firewall (blackhole).

> Ntop sagt hier was von etwa 500 MB IPSec
> Traffic, der nun wirklich nichts auf der Maschine verloren hat.

500 MB IPSec-Traffic ist schon 'ne Menge, wenn Dein Rechner
gar kein IPSec macht. Über welchen Zeitraum ist das denn
gemessen? Und bist Du sicher, daß ntop das richtig inter-
pretiert? In Zweifelsfall würde ich einem mitgelieferten
Tool (IPFW-counter, tcpdump) eher trauen als einem Third-
party-Tool wie ntop, trafshow o.ä.

> Gibt es noch andere Möglichkeiten ein- und ausgehenden Traffic zu
> überwachen und diesen später zu prüfen?

Zum Beispiel per IPFW. Jede Regel hat einen Counter einge-
baut (sowohl für Pakete als auch für Bytes). Man kann auch
explizite »count«-Regeln erzeugen, wenn man gar nicht fil-
tern will, sondern nur zählen. Die Counter kann man mit
»ipfw show« auflisten und mit »ipfw zero« auf Null zurück-
setzen.

Einfaches Beispiel: Das Kommando

   ipfw add count tcp from any to any 80

installiert eine Regel, die allen Port-80-Verkehr auf IP-
Ebene zählt; sowohl incoming als auch outgoing, egal welche
IP-Adressen beteiligt sind. Du kannst das natürlich noch
weiter aufdröseln, wenn Du magst; IPFW bietet eine ganze
Menge Möglichkeiten.

> Ist der promiscuous mode
> sinnvoll?

Der wird z.B. von tcpdump automatisch eingeschaltet (kann
man per Kommandozeilen-Option beeinflussen). Vielleicht
tut das ntop auch bereits. Ob der sinnvoll ist oder nicht,
kommt halt darauf an, was Du messen willst.

Wenn er eingeschaltet ist, siehst Du allen Traffic, der
physikalisch Dein Interface »berührt«, egal ob er für Dei-
nen Rechner bestimmt ist oder nicht.

> Wird da nicht auch Traffic mitgezählt der nicht für die
> Maschine bestimmt war? Durch Switches kommt ja eigentlich nicht mehr als
> das was an mich adressiert war.

Naja, und Broadcasts natürlich, und unter gewissen Umstän-
den auch noch andere Sachen (Multicast, bei Switches mit
Spanning-Tree wirst Du STP sehen, usw.). Davon abgesehen
brauchen Switches auch eine gewissen Lernphase -- wenn sie
den Status eines Ports nicht kennen oder sich etwas ändert,
schicken sie erstmal zur Sicherheit alles dorthin, mal ganz
abgesehen von Angriffen, mit denen das Switching beeinflußt
werden kann (z.B. Stichwort ARP-cache-poisoning).

Es gibt viel mehr, was da so kreucht und fleucht, als man
gemeinhin vermuten mag. ;-)

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"C++ is the only current language making COBOL look good."
        -- Bertrand Meyer
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 14 Jul 2004 - 10:41:21 CEST

search this site