it-swarm.com.de

Überwachen des HTTP-Verkehrs mit tcpdump

Zur Überwachung des HTTP-Verkehrs zwischen einem Server und einem Webserver verwende ich derzeit tcpdump. Dies funktioniert gut, aber ich möchte einige überflüssige Daten in der Ausgabe entfernen (ich kenne tcpflow und wireshark, aber sie sind in meiner Umgebung nicht ohne weiteres verfügbar).

Von der Manpage tcpdump:

So drucken Sie alle IPv4-HTTP-Pakete zu und von Port 80, d. H. Drucken Sie nur Pakete, die Daten enthalten, nicht beispielsweise SYN- und FIN-Pakete und Nur-ACK-Pakete.

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

Dieser Befehl

Sudo tcpdump -A 'src example.com und tcp port 80 und (((ip [2: 2] (ip [0] & 0xf) << 2)) - ((tcp [12] & 0xf0) >> 2) )! = 0) '

bietet die folgende Ausgabe:

19: 44: 03.529413 IP 192.0.32.10.http> 10.0.1.6.52369: Flags [P.], seq 918827135: 918827862, ack 351213824, win 4316, options [nop, nop, TS val 4093273405 ecr 869959372], length 727

--- (E ..... @ ........... P..6.0 ......... D ...... __ .. e = 3 ...__ HTTP/1.1 200 OK Server: Apache/2.2.3 (Red Hat) Inhaltstyp: text/html; Zeichensatz = UTF-8 Datum: Sa, 14. November 2009 18:35:22 GMT Alter: 7149
Inhaltslänge: 438

<HTML> <HEAD> <TITLE> Beispielwebseite </ TITLE> </ HEAD> <body>
<p> Sie haben diese Webseite erreicht ... </ p> </ BODY> </ HTML>

Dies ist bis auf den hervorgehobenen Teil nahezu perfekt. Was ist das, Ende - was noch wichtiger ist - wie werde ich es los? Vielleicht ist es nur eine kleine Änderung des Ausdrucks am Ende des Befehls?

42
otto.poellath

tcpdump druckt komplette Pakete. "Garbage", das Sie sehen, sind tatsächlich TCP Paket-Header.

sie können die Ausgabe sicherlich mit einem Perl-Skript massieren, aber warum nicht stattdessen tshark, die Textversion von wireshark, verwenden?

tshark 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

es werden dieselben Argumente wie bei tcpdump (dieselbe Bibliothek) verwendet, aber da es sich um einen Analysator handelt, kann es eine eingehende Paketprüfung durchführen, sodass Sie Ihre Filter noch weiter verfeinern können, d. h.

tshark 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' -R'http.request.method == "GET" || http.request.method == "HEAD"'

39

schauen Sie sich ngrep an - es könnte für Sie von Nutzen sein.

als Referenz für andere httpry [Server scheint jetzt ausgefallen zu sein, aber ich hoffe, es ist vorübergehend] und tshark sind auch nützlich für die passive Protokollanalyse - erstens nur für http, zweitens - für viel mehr.

18
pQd

Versuchen Sie httpry oder justniffer

Justniffer funktioniert gut bei TCP-Paketen, bei denen Neuübertragungen und IP-Fragmentierung neu angeordnet werden

5
Mole24

Ich würde vorschlagen, eine heruntergekommene tcpdump-Befehlszeile zu verwenden, die alles in einer pcap-Datei für den Nachbearbeitungsprozess speichert. Je nachdem, was genau Sie diagnostizieren möchten, eignet sich tcpflow hervorragend, um die Kommunikation für die Analyse auf kohärente Weise wieder zusammenzusetzen.

Einige andere gute Informationen, einschließlich einiger Verwendungen für httpry, finden Sie unter: http://taosecurity.blogspot.com/2008/06/logging-web-traffic-with-httpry.html

1
ScottZ

Auf dem Markt sind verschiedene Tools verfügbar, die speziell für die Überwachung des HTTP-Verkehrs entwickelt wurden. Fiddler2 ( http://www.fiddler2.org ) und HTTP Debugger Pro sind Beispiele für solche Tools.

0
Web developer

Produziert der von Ihnen verwendete Webserver keine Protokolle? Dies wäre sicherlich eine viel bessere Möglichkeit, den HTTP-Verkehr zu überwachen. Es gibt eine Vielzahl von Tools zur Analyse der Daten, und jeder kompetente Webserver sollte zuverlässige Protokolle erstellen.

0
JamesHannah

Ihr "Problem" bei der Verwendung von TCPDUMP ist, dass es Ihnen den Inhalt des Headers des Pakets anzeigt.

Wenn Sie TCPDUMP weiterhin verwenden möchten, entfernen Sie einfach das - A. Wenn Sie dies tun, sollte dies aus der Ausgabe entfernt werden.

Sudo tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
0
BANJOSA