Archiv für die Kategorie 'Netzwerk'

Collectd und rrdtool

Endlich habe ich mal ein schönes Programm zum Überwachen der Performance eines Computers gefunden. Das Programm nennt sich collectd. Der Collectd selbst, speichert nur die Daten in regelmäßigen Abständen (Ich glabe es sind 15 Sekunden per default) in mehrere Dateien. Diese Dateien sind im so genannten Round Robin Database-Format. Mit Hilfe des Prorgamms rrdtool kannn man dann relativ einfach eine graphische Darstellung dieser Daten erstellen. Das rrdtool in Aktion kann man hier sehen. Dazu mal ein kleiner Beispiel-Code, der mir einen Graphen über den Verlauf des Load-Averages der letzten 24 Stunden erstellt.

Graph eines Load-Average der letzten 24h
  1. rrdtool graph "/var/www/user/de/dev/htdocs/dev/rrd/load.png" –start -24h –en
  2.   –title "load average - last 24h" \
  3.   DEF:shortterm=/var/lib/collectd/load.rrd:shortterm:AVERAGE \
  4.   DEF:midterm=/var/lib/collectd/load.rrd:midterm:AVERAGE \
  5.   DEF:longterm=/var/lib/collectd/load.rrd:longterm:AVERAGE \
  6.   LINE1:shortterm#00CC00:"last minute" \
  7.   LINE1:midterm#FF0000:"last five minutes" \
  8.   LINE1:longterm#0000FF:"last fifteen minutes"

Man kann jetzt damit also recht detailiert seine Graphen erstellen lassen. Ich habe mir dazu gleich ein ganzes Shell-Script geschrieben, dem ich einen Parameter mitgebe, der angibt, von welchem Zeitpunkt an bis jetzt der Graph erstellt werden soll. Das Script könnt ihr euch (mit einer PHP-Datei zur Anzeige auf einem Webserver) nach Bedarf gerne einmal runterladen. Collectd And Rrdtool (1.54 KB)

Runde Ecken - wie Microsoft es tun würde

Ich bin eben beim google’n auf einen sehr interessanten Artikel von Microsoft gestoßen. Microsoft beschreibt darin, welche verschiedenen Möglichkeiten es gibt, in einer HTML-CSS-Seite sogenannte runde Ecken so gestalten.  Runde Ecken -  wer sich darunter nichts vorstellen kann, für den habe ich hier mal noch schnell ein Bild erstellt.

Der Artikel nochmal kurz und übersetzt zusammengefasst. Microsoft nennt als eine mögliche Methode zur Erstellen von runden Ecken, der Verwendung von 4 verschiedenen DIV-Containern. Diese Container stellen jeweils eine Ecke der Box dar. Folgendes hat bestimmt schon jeder mal gemacht.

Runde Ecken kompliziert gestalten
  1. <div class="box">
  2.   <div class="boxTL">
  3.     <div class="boxTR">
  4.       <div class="boxBL">
  5.         <div class="boxBR">
  6.           Mein Inhalt
  7.         </div>
  8.       </div>
  9.     </div>
  10.   </div>
  11. </div>

Ein erfahrender Entwickler erkennt sofort: Das ist scheiße. Ok, ich habe auch etwas übertrieben gearbeitet; so ist der äußerste DIV-Container eigentlich gar nicht nötig. Dennoch stehen dort mindestens 4 DIV, alle mit einem class-Attribut.

Leider ist es ziemlich schwer, eine wirkliche gute Lösung dafür zu finden. Die Mozilla Produkte haben zwar eine CSS-Eigenschaft -moz-border-radius, aber diese ist eben nicht in Microsoft Produkten anzutreffen. Eine schönere Möglichkeit ist nun die erweiterte Anwendung von CSS. CSS bietet ja auch die Möglichkeit, Elemente nach ihrer Verschachtelung zu formatieren. Das macht sich Microsoft zu nutze, was den Vorteil mit sich bringt, dass es ab sofort nicht mehr nötig ist, 4 Class-Attribute zu definieren, sondern nur noch eins. Obiger Code kann somit also auch so geschrieben werden:

Runde Ecken, schön gemacht
  1. <div class="box"><div><div><div>
  2.   Mein Inhalt
  3. </div></div></div></div>

Um meine Meinung besser teilen zu können, habe ich bei dem Code etwas geschummelt. So habe ich im ersten Code die eigentlich richtige (konsequente) Einrückung benutzt und hier mit der Einrückung etwas gespart. Ich bin von dieser Möglichkeit allerdings sehr angetan und werde sie in meiner nächsten Entwicklung wahrscheinlich auch verwenden. Achja, ich schreibe euch noch den CSS-Code dazu, falls Microsoft den Artikel verschieben, löschen oder ändern sollte.

CSS-Code um runde Ecken zu gestalten
  1. div.roundcorner2 {
  2.   width: 200px;
  3.   background: #FFFFFF url(TROuterBlue.gif) no-repeat top right;
  4. }
  5. div.roundcorner2 div {
  6.   background: transparent url(TLOuterBlue.gif) no-repeat top left;
  7. }
  8. div.roundcorner2 div div {
  9.   background: transparent url(BROuterBlue.gif) no-repeat bottom right;
  10. }
  11. div.roundcorner2 div div div {
  12.   background: transparent url(BLOuterBlue.gif) no-repeat bottom left;
  13.   padding: 15px;
  14. }

Pimp my DS #2

Es ist da: Mein kleines Spielzeug. *g* Wie erwartet kann man damit eine Menge lustiger Sachen anstellen. Die Software dafür lässt sich sogar sehr leicht selbst programmieren. Nichtmal ASM wird dafür benötigt. Eine tolle Gelegenheit um meine C-Kentnisse ein wenig zu erweitern. Falls es noch was interessantes dazu zu berichten gibt, werde ich mich umgehend wieder melden. ;-)

Pimp my DS #1

Gerade eben habe ich mir nun ein neues Spiel für meinen Nintendo DS bei Amazon bestellt. Nunja, Spiel ist falsch. In Wirklichkeit handelt es sich um dieses hübsche Teil hier. Damit soll es möglich sein, beliebige Programme (genannt Homebrews) auf dem DS auszuführen, ohne dabei immer wieder ein neues Spiele-Modul kaufen zu müssen. Dabei stehen die verschiedensten Homebrews zur Auswahl: Ein MP3-Player, ein Internet-Browser, ein Mini-Linux oder tausende kostenlose Spiele. Durch das eingebaute WLAN des Nintendo DS lässt sich also auch im Internet surfen. Mal sehen, was das Ding so taugt. Ich freue mich auf jeden Fall drauf. :-)

Network Notepad

Wer kennt das Programm “Network Notepad”? Ich kenne es seit heute und möchte gerne mal etwas darüber schreiben. Mit dem Programm kann man kinderleicht Netzwerk-Diagramme anfertigen. Das Programm ist Freeware und hat eine einfache, intiutive Bedienung. Hier mal ein kleiner Vorgeschmack. Es handelt sich um ein Diagramm meines Homenetzwerkes, wie es schon seit einigen Wochen ist.

Das schöne daran ist, dass es für direkten Gebrauch im Netzwerk geeignet ist. Das heißt, man kann für jedes Element im Diagramm eine IP festlegen und damit direkt vom Diagramm aus verschiedene Aktionen ausführen. So brauche ich lediglich ein Rechtklick auf das Router-Icon machen und auf “ping” klicken und schon öffnet sich ein Fenster, in welchem ich Pings zum Router sehen kann. Aktionen dieser Art gibt es mehrere, zum Beispiel Telnet oder im Browser öffnen. Auch ist es möglich selbst welche zu definieren, wie ich es zum Beispiel mit PuTTY getan habe.

Schaut euch das Programm mal an. Zu finden ist es unter http://www.networknotepad.com/

Digitaler Türsteher: fail2ban

Auch wenn ich dieses Programm schon längere Zeit benutze, ist es mir jetzt doch noch einen Eintrag wert, denn nach der Neuinstallation meines Servers fiel auch die Installation von fail2ban an. Die Funktionsweise von fail2ban ist einfach beschrieben: Das Programm läuft im Hintergrund und liest in bestimmten Abständen bestimme Log-Dateien von diversen Servern (SSH, WWW, FTP) aus. Findet es dort Einträge, die auf Fehlgeschlagene Login-Versuche hindeuten werden diese gezählt. Diese Einträge werden via Regular Expressions gefiltert. Sobald eine bestimmte, konfigurierbare Anzahl an fehlgeschlagenen Login-Versuchen stattgefunden hat, führt das Programm eine Aktion aus. Meistens ist dies ein Eintrag in der Firewall zum sperren der IP.

Und was bringt uns das ganze? Man kann damit sehr effektiv Bruteforce-Angriffe verhindern. Wer nicht weiß, was Bruteforce ist: Bei einem Bruteforce-Angriff werden alle möglichen Passwörter bei einem Login probiert; solange, bis das richtige gefunden ist. Besonders bei kürzeren Passwörtern ist ein solcher Schutz sehr sinnvoll.

Die Installation des ganzen ist dank Debians großem Paket-Repertoire auch ein Kinderspiel. Zuerst den Daemon mit folgendem Befehl installieren.

Installation des Daemons “fail2ban”
  1. apt-get install fail2ban

Dann ins Verzeichnis /etc/fail2ban/ wechseln, wo sich fail2bans Konfigurationsdateien befinden. Dort gibt es 4 relevante Dateien und Ordner. Im Ordner action.d sind Dateien, welche bestimmte Aktionen bei einem Bann vom Server und dem Löschen eines Banns definieren. Dabei sind mehrere verschiedene Firewall-Typen bereits als Beispiel angegeben. Die meisten werden wohl iptables benutzen.

Im Verzeichnis filter.d befinden sich - wie der Name auch schon andeutet - die Filterdateien für die Logs. Auch dort sind schon Beispiele vorgegeben, zum Beispiel für proftpd, ssh oder dem Apache. Meht Beispiele gibt es mit ls. ;-)

In der Datei fail2ban.conf befindet sich eine globale Konfiguration, welche einige Grundsätzliche Einstellungen des Servers beinhaltet. Zumindest bei mir kann man diese Datei so lassen wie sie ist. (Dennoch lohnt sich ein Blick natürlich immer. ;-) )

Die jail.conf beinhaltet nun den interessanten Teil des Daemons. Hier wird im Format einer Ini-Datei angegeben, welche Log-Dateien ausgelesen werden sollen, welche Filter dafür zutreffen, welche Aktionen zutreffen, wieviele Fehlversuche bei einem Login möglich sind und so weiter… Besonders toll an dieser Datei ist, dass die bekanntesten Services schon drin stehen. Das Vorgehen nun ist einfach. Man sucht sich den zu schützenden Dienst heraus und ändert in der Ini das enabled = false auf enabled = true. Anschließend muss der fail2ban-Server noch die Einstellungen neu laden.

Neuladen der fail2ban Einstellungen
  1. fail2ban-client reload

Wer Interesse an fail2ban gefunden hat, dem kann ich noch ein paar Dinge empfehlen, die man sich angucken könnte. So liefert fail2ban einen Clienten aus, mit dem man den Server einfach steuern kann; dieser nennt sich, wie bereits oben erwähnt fail2ban-client. (man fail2ban-client) Zwar nicht direkt mit fail2ban verbunden, aber auch recht interessant ist ein iptables-Modul namens “recent”. Auch einen Blick wert, vielleicht schreibe ich auch darüber mal was…

ARP-Spoofing

Aufgrund eines heise.de-Artikels habe ich mich mal kurzer Hand mit ARP-Spoofing, auch ARP-Poisoning, beschäftigt. Folgendes Szenario: Ich habe einen Router, an diesem Router hängt ein 8-Port Switch. An diesem wiederum hängen alle meine Rechner. Opfer war in diesem Fall meine Windows XP Maschine. Angreifer eine Gentoo-Kiste. Mittels ARP-Spoofing kann man nun das Opfer so manipulieren, dass Pakte über die Gentoo-Kiste, statt direkt an den Router gesendet werden. Das kann man dann dazu missbrauchen, den Traffic zu manipulieren, oder wichtige Passwörter auszuspähen. Der Vorgang ging erstaunlich einfach. Nach kurzer Einrichtung der Gentoo-Kiste als Gateway ging mit folgendem Befehl alles wie von selbst.

Mit “arpoison” einen ARP-Cache verändern
  1. arpoison -i eth0 -d  -s  -r  -t

Und schon ging der gesamte Traffic des Windows-Rechners über die Gentoo-Kiste. Das könnte man mit Hilfe eines Traffic-Sniffers (Wireshark, tcpdump) dazu ausnutzen, um während unverschlüsselten HTTP-Verbindungen Passwörter auszulesen, oder Daten während des Up- oder Downloads zu modifizieren. Um sich vor solchen Angriffen zu schützen gibt es nur wenige Möglichkeiten, allerdings keine wirklich gute oder einfache. Am besten ist wohl eine physikalische Abtrennung zweier Netzwerke. Wenn nur ein Rechner im Netzwerk ist (oder zumindest kein Angreifer in das Netzwerk gelangt), kann eigentlich nichts passieren. Ansonsten wäre noch die Möglichkeit eines statischen ARP-Caches, die ich hier aber nicht näher erläutere.

Python: mod_cband Scoreboard lesen

So, jetzt habe ich es endlich geschafft. *g* Ich wollte mit Python ein Scoreboard des Apache-Moduls mod_cband auslesen. Nach etlicher Sucherei und intensiver Einarbeitung in die mod_cband Source habe ich hier folgende Lösung zu präsentieren:

  1. #!/usr/bin/python
  2.  
  3. import struct
  4.  
  5. f = file("my_scoreboard_file", "rb")
  6. st = struct.unpack("4QLli", f.read())
  7. f.close()
  8.  
  9. scoreboard = {
  10.   "total_bytes": st[0],
  11.   "class_bytes": ( st[1], st[2], st[3] ),
  12.   "start_time": st[4],
  13.   "score_flush_count": st[5],
  14.   "was_request": st[6]
  15. }
  16.  
  17. print scoreboard

Ich hoffe jemanden damit geholfen zu haben. :-)

Mein erster Mailserver

Juhuu, endlich habe ich es geschafft. Ich habe nach dem Millionsten Versuch einen Mailserver mit Postfix, Courier-POP3, Courier-IMAP und MySQL als Backend erschaffen. Sowohl Empfangen, als auch Senden und Weiterleiten funktioniert einwandfrei. Aber das Beste ist die Anleitung die ich verwendet habe. Was im Internet an Artikeln über Mailserver zu finden ist, kann man alles schlichtweg vergessen. Die besten Anleitungen sind die man-Pages zu Postfix und Courier selbst. Ich werde nun noch einige Zeit damit verbringen, mich weiter in das Thema einzuarbeiten. Habe schon jemanden gefunden, der mir seinen Server zum Opfer stellt.