Archive for the 'Linux' Category

Neues Hintergrundbild

Hey, will jemand mein neues Hintergrundbild benutzen? Hab’s selbst gemacht. *g*

Background image

Vorher hatte ich übrigens das gleiche ohne Schriftzug. :-D

IMAP, fetchmail und mehr

Nachdem ich nun schon lange nichts mehr geschrieben habe, berichte ich mal wieder über meinen stetig wachsenden Homeserver, der langsam anfängt echt nützliche Dinge für mich zu erledigen. ;-)

Seit einigen Wochen nun habe ich ein neues System, meine E-Mails abzurufen. Auf dem Server läuft nun das Programm fetchmail. Fetchmail ist ein Perl-Script, welches in regelmäßigen Abständen die Mails einer Mailbox abfragt und entsprechend weiterleitet. In meinem Fall checkt fetchmail alle fünf Minuten die Mails auf meinem GMX E-Mail Account und sendet sie an die lokal laufende Postfix Instanz. Wer es nicht weiß, Postfix ist ein Mailserver. ;-)

Postfix hat seit kurzer Zeit jetzt auch einen Spamfilter, genauer gesagt SpamAssassin. Dieser Spamfilter kann zwar auch Spam aussortieren, ich habe mich aber dazu entschieden, meinen Spam vorerst nur mit einer Änderung des Betreffs zu markieren. Damit möchte ich jetzt erst einmal testen, wie zuverlässig SpamAssassin Spam von nicht-Spam unterscheidet. Später dann kann ich Spam auch direkt löschen lassen. Bei meiner bisherigen Menge hingegen lohnt sich das noch nicht.

Um jetzt meine E-Mails von Postfix auf meine E-Mail-Clients zu bekommen, habe ich außerdem noch einen IMAP-Server installiert, genannt Courier. Courier erlaubt es mir, meine Ordnerstruktur für E-Mails und die E-Mails selbst direkt auf dem Server zu behalten und erleichtert mir somit die Synchronisierung der Mail-Clients enorm. Die gespeicherten Mails liegen außerdem noch in einer RAID1-Partition, was damit also auch die Sicherheit der Daten erhöht.

Neben Courier habe ich außerdem schon seit längerem noch einen Webserver laufen. Auf diesem Webserver befindet sich jetzt seit wenigen Tagen auch eine SquirrelMail-Installation. Mittels SquirrelMail ist die Mobilität meines E-Mail Accounts jetzt komplett. SquirrelMail ist ein Webinterface für IMAP-Accounts. Damit kann ich nun von jedem beliebigen Ort der Welt (Internetanbindung vorausgesetzt) meine E-Mails samt Ordnerstruktur abrufen. :-)

Vor lauter Langeweile habe ich heute außerdem noch einen kleinen Python-Bot hinzugefügt. Okay, zugegeben, eigentlich braucht man das nicht. Aber es ist auf jeden Fall mal wieder eine neue Erfahrung. Dieser Bot ist dauerhaft in meinen Jabber-Account eingeloggt und wartet mit Hilfe von FAM auf eine Änderung der Mailserver-Logs. Sollte er eine Änderung feststellen, werden die neuen Zeilen ausgelesen und auf ein Regular Expression überprüft. Konnte der RegEx angewendet werden, so werde ich via Jabber sofort über den Erhalt neuer Mails informiert. Das Ganze kann bei GMX-Mails natürlich bis zu fünf Minuten dauern, da fetchmail leider auf Polling zurückgreifen muss. Bei lokalen Mails hingegen bekomme ich fast eine Realtime-Benachrichtigung. Dinge, die die Welt nicht braucht, nicht wahr? ;-)

Erste Probleme mit Debian ‘lenny’

Nach einigen Monaten, in denen ich schon Debian testing benutze, traten heute das erste Mal Probleme auf. Während eines einfachen Updates via apt-get update && apt-get dist-upgrade wollte Debian mein eingesetztes Apache-MPM itk entfernen. Ich stimmte zu, da Debian in Richtung Updates bisher eigentlich immer gute Vorschläge geliefert hat und mir in dieser Richtung schlichtweg die Erfahrung fehlt. Nach dem Update wurde ein Neustart des Apachen mit No apache MPM package installed quittiert. Logisch, MPM-ITK ist ja auch gelöscht. *g* Dummerweise schlägt eine Neuinstallation allerdings fehl: apache2-mpm-itk: Hängt ab: apache2.2-common (= 2.2.9-10+lenny1) soll aber nicht installiert werden. Das heißt, soweit ich das verstanden habe: Installiert ist die Version X-lenny2 des Apachen, das MPM-ITK benötigt aber noch X-lenny1. Wie ich das Problem jetzt löse weiß ich leider selbst nicht. Ich hoffe auf eine Inkonsistenz der Paketlisten und dass sich das Problem in einigen Stunden oder Tagen selbst löst. Andere Ideen habe ich leider nicht… Update (15h später): Das Problem hat sich jetzt wie erhofft von selbst gelöst, nachdem ich die Paketlisten einfach erneut aktualisiert habe. :-)

Gentoo, Server und Updates

Ich denke jeder kann mich verstehen, dass ich mich lieber gerne selbst davon überzeuge, was das Richtige ist und was nicht. Das gilt natürlich auch für Gentoo auf Servern. Ich zitiere da mal einen kleinen Satz aus dem Chat, der erst vor wenigen Tagen von Marcel geschrieben wurde.

marcel: Bei Gentoo ist nach einem Update erstmal das halbe System kaputt

Gestern Abend habe ich dann das erste Gentoo-Update auf meinem Root-Server gemacht. Jetzt mal ganz davon abgesehen, dass ich wirklich überrascht war, dass das Update auf diesem nichtmal einem Monat altem Server über 3 Stunden gedauert hat, war es doch fast ein Update, wie es im Buche steht. ;-) Gut, es kann schlimmer kommen, aber immerhin gehen alle meine Python-Scripte nicht mehr. Das kann schon ganzschön ärgerlich sein, denn das waren nicht wenige. Jetzt schlage ich mich gerade mit dem Programm “python-updater” rum, welches mir hier wegen irgendwelchen amd64-Keywords ein Ohr kaut.

Tja, was lernen wir wohl daraus? Nächstes mal auf jeden Fall wieder Debian. apt-get update && apt-get upgrade, 20 Sekunden warten und alle Updates sind gemacht. Wenn ich es mir da recht überlege, sind mir die Vorteile von Gentoo dann doch egal. Ich denke allerdings auch, dass ich es mal probiert haben muss. Auch wenn jeder sagt, dass Gentoo nicht das Richtige sei, ist es doch besser für mich, es mal am eigenen Leib erlebt zu haben. Aus Fehlern lernt man eben doch am besten. ;-)

Update: So, Problem behoben. Einfach entsprechendes Paket in /etc/portage/package.keywords eintragen. Trifft sich gut, denn jetzt kommt Dr. House auf RTL. :)

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.

zip Collectd And Rrdtool (1.54 KB, zip)

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. :-)

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.

Auf Probe: Fedora 9

Vor lauter Langeweile habe ich mich nun mal dazu entschlossen Fedora 9 zu testen. Fedora 9 ist mittlerweile schon ein paar Wochen lang draußen und gehört zu den ersten Distributionen, die von Haus aus SELinux unterstützen. Um mir diese Technik mal auf komfortable Art anzuschauen, habe ich mir Fedora ausgesucht. Fedora wird entweder als DVD oder als ein 6-CD Pack ausgeliefert. Leider muss man wirklich alle CDs runterladen, ich habe zumindest keine Netzwerkinstallation gefunden. DVD kam leider auf Grund mangelnder Hardware nicht in Frage. Die gesamte Installation ist im einem gut aussehenden, modernen Style und bedarf nur wenigen Klicks zum fertigen System. Der erste Schritt, das Kopieren der Daten auf die Festplatte, hat bei mir leider recht lange gedauert, allerdings hielt sich auch das noch in Maßen. Nach der Installation folgt zunächst die Einrichtung. Nach den allgemein üblichen Lizenzhinweisen, der Erstellung eines neuen Benutzers und das Setzen der Zeit kam ich dann auch endlich zum neuen Desktop.
Erste Eindrücke sind soweit positiv: Gutes Design, einfache Tools zur Administration des Systems. Sogar der Firefox präsentierte sich in der Version 3 Beta 5. Beim zweiten Blick allerdings fällt eine nur teilweise Übersetzung auf. Hier Englisch – Da Deutsch. Das wundert mich sehr, denn sowas sollte doch beim Bug-Testing eigentlich auffallen? Nungut, ich denke sowas behebt sich mit der Zeit.

Für heute erstmal genug Fedora, die nächsten Tage gehts weiter. ;-)

Next Page »