Press left mouse button to continue.

Monat: Februar 2011

tcpdump im Einsatz

Hinweis on: Das ist ein Beitrag aus dem ehemaligen Projekt „adminstories.de“. Bitte hier fuer weitere Informationen schauen.Hinweis off

Heute gibt es mal was aus meiner „Grabbelkiste“. Aufgrund meiner Taetigkeit als Administrator, der sowohl Infrastruktur sowie auch punktuell Server betreut, muss ich auch immer wieder nach Problemen im Netzwerk suchen. Neben Dingen wie etwa „get flow“ und „snoop“ fuer Juniper kommt da natuerlich auch immer wieder gerne tcpdump zum Einsatz. Die Nutzung von tcpdump macht nicht nur Eindruck bei den Frauen, sondern hilft durchaus auch Probleme im Netzwerkverkehr zu identifizieren.

Da die Auswertung der angezeigten Informationen von tcpdump in Echtzeit nur was fuer die ganze Harten ist, schreibe ich mir die Ausgabe in der Regel in ein File weg.

tcpdump -n -i eth0 -w dump.pcap

Anschliessend schaue ich das Resultat in einem Wireshark an, da man damit die eigentliche Auswertung doch etwas angenehmer gestalten kann. In diesem Beispiel wird man sich moeglicherweise wundern, dass die mitgeschnittenen Pakete nur bis zu einer bestimmen Groesse mitgeschnitten wurden. Der Standard fuer snaplen, so nennt sich der Wert, ist laut manpage fuer IPv4 68 Bytes. Da ich immer Sorge habe etwas zu verpassen rufe ich tcpdump daher immer mit -s 0 auf. Somit werden alle Pakete komplett mitgeschnitten.

In der Regel beschraenke ich meine Filter auf so einfache Dinge wie etwa host a.b.c.d oder (not) port 22. Es geht aber auch feiner. Das ist vor allem dann interessant, wenn man spaeter keine Auswertung via Wireshark machen kann oder moechte.

Auf unserem gemeinsamen Server hatten wir vor einigen Wochen das Problem, dass unser Webserver wegen einer ungewoehnlich hohen Anzahl an Anfragen leiden musste. Alles sah nach einem Spam-Angriff von einigen wenigen Adressen aus. Das konnten wir nicht nur nicht nur an vielen Eintraegen im Log sehen, sondern auch mit Hilfe von tcpdump darstellen.

sudo tcpdump -c 30 -ne -i eth0 dst port 80 and ‚tcp[13] == 2‘ \
| awk ‚{print $10}‘ \
| cut -d. -f1,2,3,4 \
| sort \
| uniq -c \
| sort -n

Mit Hilfe dieses Aufrufes werden 30 Pakete gesammelt, die ausschliesslich das SYN-Flag gesetzt haben. Nach dem Einsammeln der Pakete wird die IP-Adresse mit awk und cut „extrahiert“ und anschliessend wird eine Liste (Aufsteigend) erstellt, in der die Hauefigkeit einer auftretenden IP-Adresse zu sehen ist. Doofer Satz, daher eine Beispielausgabe:

ramon@bar ~ $ sudo tcpdump -c 30 -ne -i eth0 dst port 80 and ‚tcp[13] == 2‘ \
| awk ‚{print $10}‘ \
| cut -d. -f1,2,3,4 \
| sort \
| uniq -c \
| sort -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0:1, link-type EN10MB (Ethernet), capture size 96 bytes
30 packets captured
30 packets received by filter
0 packets dropped by kernel
1 114.64.146.44
1 188.40.55.145
1 218.214.140.146
1 66.244.66.217
1 66.244.72.142
1 67.145.111.246
2 66.244.72.44
2 41.210.106.254
4 66.244.66.44
4 87.150.185.168
14 45.220.250.244

Die IP-Adressen sind randomized (kann man „verzufaelligt“ sagen? ;). Die Liste kann man anschliessend prima nutzen um, nach der Bearbeitung, z.B. via iptables die „fuehrenden“ IP-Adressen zu blockieren.

Der Kreis

Aufgrund der haueslichen Situation schaue ich aktuell nicht so viel TV. Gestern aber konnte ich mir wieder mal zwei Folgen Heroes anschauen. Und was muss ich da sehen? In einer Szene steigt der Vater von Hiro in seine Limosine und auf dem Nummernschild ist „NCC-1701“ zu lesen 🙂 Das fand ich ja schon mal witzig. Noch besser ist allerdings, dass der Vater von George Takeis gespielt wird. Und er hat bereits in der Serie Enterprise als Steuermann mitgespielt. So schliesst sich der Kreis 🙂

Meranimi Hospital

Unser Jahr hat bisher schon sehr prima angefangen. Nachdem unsere Kleine Ende 2010 noch zwei mal schnell in der Notfallambulanz war haben wir im neuen Jahr gleich weiter gemacht. Milena hatte ein RS-Virus und musste einige Tage im Krankenhaus bleiben. Melanie ist natuerlich mit dabei geblieben. Allerdings hat meine Frau es sich nicht nehmen lassen vorher noch schnell eine Erkaeltung zu haben und anschliessend eine Mittelohrentzuendung mit perforiertem Trommelfell mit zu nehmen. Zwischendurch ist Niklas dann noch mal krank geworden und hatte einen Krupp-Keuchhusten, oder so, mit 40 Grad Fieber. Der ist Gott sei Dank weg. Ich auch besser so, da er jetzt auch eine Mittelohrentzuendung hat und der Keuchhusten dabei echt fies waere. Milena ist auch noch krank und ich warte drauf, dass es mich in den naechsten Tagen auch umhaut. Kann ja nicht sein, dass ausser mir alle krank sind.

Wenn wir endlich mal wieder alle Gesund sind werde ich mich mit dem Schwiegervater in der Garage einsperren und mal gemuetlich ein Bier trinken.

Fehler und Logging

Hinweis on: Das ist ein Beitrag aus dem ehemaligen Projekt „adminstories.de“. Bitte hier fuer weitere Informationen schauen.Hinweis off

Ein immer gern vernachlaessigter Punkt bei der Erstellung von Scripte oder auch groesseren Programmen ist die Fehlerbehandlung und fehlenden Ausgaben. Ich habe eine Zeit lang Skripte fuer die Uebertragung von Daten geschrieben. Da gab es natuerlich so simple Anforderungen, die Datei abc.xyz von Laufwerk C: nach D: zu kopieren. Aber es gab da auch etwas anspruchsvollere Aufgaben. Hole die PGP-verschluesselte Datei NAME_Datum_von_gestern.txt via scp ab und entschluessele diese. Anschliessend bitte alle Daten in eine Datenbank importieren und die Datei dann via FTP auf einen Server verschieben. Damit es nicht langweilig wurde gab es dann auch regelmaessig Anforderungen eingetroffene und verarbeitete Dateien zu sichern, so dass im Fehlerfall noch einmal darauf zugegriffen werden kann.

Jetzt koennte ein einfacher Job, der taeglich um 01:00 Uhr laueft, wie folgt aussehen:

#!/bin/bash
#
cp /home/transfer/partner/abc.xyz /home/user/abc.xyz

Vermutlich wird der Job regelmaessig ohne Probleme laufen. Nun ruft aber der Fachbereich an und fragt ob die Datei vor drei Tagen an den Partner uebertragen wurde. Da ist es natuerlich prima, wenn man die Frage ausreichend beantworten kann. Das oben beschriebene Konstrukt glaenzt allerdings nicht mit hohem Informationsgehalt. Besser waere etwas wie beispielsweise:

#!/bin/bash
#
timestamp=$(date „+%Y%m%d-%H%M“)
echo $timestamp
echo „Starte Script ABC“
if cp /home/transfer/partner/abc.xyz /home/user/abc.xyz; then
echo „Datei abc.xyz von /home/transfer/partner/ nach /home/user/ kopiert“
else
echo „Kopiervorgang fehlgeschlagen“
fi
echo „Beende Script ABC“

Wird das Script nun via kopierjob.bash >> kopierjob.log aufgerufen hat man spaeter immer noch die Moeglichkeit zu pruefen, ob eine Datei kopiert wurde.

Das Script ist natuerlich sehr einfach gehalten. Und auch die Ausgabe in das Log ist so simpel, dass das anschauen aus optischen Gruenden keinen Spass macht. Es soll aber auch nur darstellen wie hilfreich es sein kann, wenn man sich nicht nur auf die eigentliche Aufgabe konzentriert. Wichtig ist auch, dass man im sinnvollen Rahmen Fehler abfragt und Informationen wegschreibt. Die Zeit die man in die Erstellung des etwas umfangreicheren Skriptes steckt, spart man nachher bei der moeglichen Fehlersuche.

Wie ist eure Erfahrung mit dem Thema? Ignoriert ihr Meldungen oder seit ihr bekennende „Logschreiber“?

Sehr klasse

Eben war ich auf der Suche nach einem Lied. Dabei bin ich ueber eine Benutzerin gestolpert, die bekannte Lieder mit dem Klavier nachspielt. Da sind schon ein paar richtig gute Stuecke dabei!

Prima sind aber teilweise auch die Kommentare 😀

i was once watching this video with headphones and my bro walked in and said she just bashing that keyboard. i gave him the headphones and the next thing was „mom, can we buy a piano“?

Kindermund

Sie: Niklas. Moechtest du runter ins Wohnzimmer?
Niklas: Ja.
Sie: Moechtest du den Schlafanzug anbehalten?
Niklas: Ja.
Sie: Gut. Dann bringe ich erst Milena runter und hole dich dann, ok?
Niklas: Wieso? Du hast doch zwei Arme?

© 2025 Software Failure

Theme von Anders NorénHoch ↑