Root

Spamassassin und QMail

Traurig aber wahr, ganze 5 Monate ist mein Mailserver ohne Spamfilter ausgekommen. Leider ist diese schöne Zeit vorbei und ich bekomme immer mehr
Müll in meinem virtuellen Briefkasten geworfen. Es ist Zeit Spamassassin zu installieren. Ich benutzte den QMail MTA, welchen ich aus den Sourcen kompiliert
und ein wenig angepasst habe.


Diese Howto ist für Debian Etch und Netqmail-1.5. Für stark frequentierte Mailserver sollte man die elegante Lösung über den QmailQueue Patch
und spamc/spamd bevorzugen, da diese ressourcenschonender ist

 

1: Safecat installieren:

Die aktuelle Version von Safecat besorgen und installieren ( http://jeenyus.net/~budney/linux/software/safecat.htm ).

 

 
cd /usr/local/src
wget http://jeenyus.net/~budney/linux/software/safecat/safecat-1.13.tar.gz
gunzip safecat-1.13.tar.gz
tar -xvf safecat-1.13.tar
cd safecat-1.13
make setup check

2. Spamassassin installieren:

Da ich das beste Betriebssystem der Welt benutzte ( Debian ), reicht eine Zeile um Spamassassin zu installieren.

 

apt-get install spamassassin

3. Spamassassin konfigurieren:

Dazu öffnen wir als erstes die /etc/default/spamassassin und aktivieren Spamassassin indem wir ENABLED=1 setzen.

 

 vi  /etc/default/spamassassin
ENABLED=1 

 Nun starten wir den Spamassassin Daemon mit folgendem Kommando:

 /etc/init.d/spamassassin start 

Für das Finetuning habe ich den Konfiguration auf folgender Seite benutzt: http://www.yrex.com/spam/spamconfig.php

Die Ausgabe in die /etc/spamassassin/local.cf eintragen

4. .Qmail Datei anpassen

Nun ist es fast geschafft, nun muss noch die .qmail Datei im Homeverzeichnis angepasst werden, so dass die Email durch Spamassassin gepipte wird.

| spamassassin -P |maildir ./Maildir/

 

 

 

Tooltip ApacheTop:

Auf meiner unendlichen Reise durchs Internet bin ich gerade auf ein kleines nettes Tool für den Apache gestoßen, es nennt sich apachetop und ist ein Echtzeit Monitor für Apache. Es überwacht das Logfile des Indianers ( access_log ) und gibt eine Statistik auf der Konsole aus. Dieses Tool kann sehr gut zur Analyse von Engpässen dienen. Wer kennt das nicht, dass die Ladezeiten unakzebtabel sind oder die Anfragen sogar auf einen Timeout laufen. Mit Apachetop kann man sehr schnell prüfen wieviel auf dem Server los ist, in Verbindung mit top und ps lässt sich die Situation schnell einschätzen.

Leider wird das Projekt nicht mehr weiterentwickelt

Screenshot:

 

Links:

 
Apache und DOS Angriffe

Apache und DOS Angriffe:

Bei meinen heutigen Lasttest bin ich auf das Problem gestoßen, das mein Apache ( mpm = worker ) nach einer gewissen Zeit zu viele Threads erstellen wollte und somit den kompletten Speicher allokiert hat. Dies führte zu einem Absturz des Indianers. Nach herabsetzten des entsprechenden Thread Konfiguration war das Problem gelöst. Jedoch war während der Lasttest die Seite kaum erreichbar und wenn, dann nur mit unakzebtabeler Ladezeit. Dies veranlasste mich zur einer Recherche im Internet, bei dieser ich das Modul mod_evasive fand.

Dieses Modul ist in der Lage solche Attacken zu erkennen und den entsprechenden Angreifer zu blockieren. Als Angriff gilt z.B. wenn ein Klient versucht eine gewisse Seite mehr als 3 mal pro Sekunde abzurufen. Wird dies erkannt, so werden für alle eingehenden Anfragen mit einem 403 Forbidden quittiert. Nach einer bestimmten Zeit wird dieser Klient wieder freigeschalten.

Denial of Service mehr bei Wikipedia: http://de.wikipedia.org/wiki/Denial_of_Service

Installation:

apxs -i -a -c mod_evasive20.c

Konfiguration:

<IfModule mod_evasive.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 10
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 120
DOSEmailNotify admin[at]yourhost[dot]com
#DOSSystemCommand "su - someuser -c '/sbin/... %s ...'"
DOSLogDir "/usr/local/apache2-worker/logs/"
DOSWhitelist 127.0.0.1
</IfModule>

Zusammenfassung:

Die obige Konfiguration erstellt eine Hastable mit der Größe von 3097 Bytes. Danach legen wir fest das eine Seite ( DOSPageCount ) nicht öfters als 2 mal in der Zeit von ( DOSPageInterval ) 1er Sekunde aufgerufen werden darf. Oder das nicht mehr wie 10 ( DOSSiteCount ) willkürlich gewählte Seiten in der Zeit von ( DOSSiteInterval ) 1er Sekunde aufgerufen werden dürfen.

Die Option DOSBlockingPeriod legt die Zeit in Sekunden fest, wie lange der Klient ausgesperrt werden soll. DOSEmailNotify ist die Email Adresse des Administrators der für den Webserver zuständig ist. Des weiteren können wir noch selbstdefinierte Aktionen ausführen ( DOSSystemCommand ). Das ganze schalten wir noch für unseren Localhost ab, indem wir ihn auf die DOSWhiteList setzten.

Also versucht nun ein Klient z.B. die index.php 5 mal in einer Sekunde anzufordern, bekommt er die ersten 2 mal die Seite ausgeliefert und beim drittem mal wird ein 403 HTTP Header zurück geschickt und ein Eintrag im Logfile getätigt.