Fingerprint Spamfilterung
Spamfilteurng ist ein permanenter Kampf, in dem man seine Ansatzpunkte immer wieder neu überdenken bzw. anpassen muss.
Aktuell bin ich auf die Möglichkeit gestoßen (die es bestimmt schon länger gibt 😉 ), die Spam Filterung von amavisd-new/spamassassin anhand von Fingerprints zu verfeinern. Viele der Spam E-Mails werden von Botznetzwerken verschickt. Dies lässt sich mit p0f in die Bewertung von Spam E-Mails mit einbeziehen. P0f ist in der Lage, passive anhand der Verbindungskriterien das Betriebssystem der Gegenstelle zu bestimmen. Das Betriebssystem wiederrum ermöglicht Rückschlüsse auf die wahrscheinlichkeit das die eingehende E-Mail eine Spam E-Mail ist.
Installation von p0f
Installieren lässt sich p0f unter Debian netterweise wieder über apt-get (Ich liebe die Menge an verfügbaren Paketen)
apt-get install p0f
Start/Stop Skript
Um p0f beim booten mit den entsprechenden Parametern zu starten habe ich ein Skript unter /etc/init.d/ abgelegt welches dann über das antsprechende Runlevel gestartet wird. Anschließend muss dieses noch fürs entsprechende Runlevel verlinkt werden.
ln -s /etc/init.d/p0f.sh /etc/rc2.d/S99p0f
Amavisd-New anpassen
Nun muss der Filter noch über amavisd-new aktiviert werden. Da ich verschiedene Policies einsetzt, habe ich es in den entsprechenden Policies aktiviert.
/etc/amavis/conf.d/50-user
$policy_bank{'blog.cscholz.io'} = { [...] os_fingerprint_method => 'p0f:127.0.0.1:2345', # p0f aktivieren [...]
Spamassasin anpassen
Damit Spamassassin die E-Mail nun auch entsprechend bewerten kann, müssen wir noch die Header-Felder und Score Werte festlegen. Dazu habe ich unter /etc/spamassasin/ eine eigene Datei Namens p0f.cf angelegt.
header L_P0F_OS_WINDOWSXP X-Amavis-OS-Fingerprint =~ /^Windows XP/ score L_P0F_OS_WINDOWSXP 3.5 header L_P0F_OS_WINDOWS_OTHER X-Amavis-OS-Fingerprint =~ /^Windows(?! XP)/ score L_P0F_OS_WINDOWS_OTHER 1.7 header L_P0F_OS_UNKOWN X-Amavis-OS-Fingerprint =~ /^UNKNOWN/ score L_P0F_OS_UNKOWN 0.8 header L_P0F_OS_LINUX X-Amavis-OS-Fingerprint =~ /^Linux/ score L_P0F_OS_LINUX -0.3 header L_P0F_OS_UNIX X-Amavis-OS-Fingerprint =~ /^((Free|Open|Net)BSD)|Solaris|HP-UX|Tru64/ score L_P0F_OS_UNIX -1.0 header L_P0F_D_1_4 X-Amavis-OS-Fingerprint =~ /bdistance [1-4](?![0-9])/ score L_P0F_D_1_4 -0.7 header L_P0F_D_5_6 X-Amavis-OS-Fingerprint =~ /bdistance [5-6](?![0-9])/ score L_P0F_D_5_6 -0.5 header L_P0F_D_7_9 X-Amavis-OS-Fingerprint =~ /bdistance [7-9](?![0-9])/ score L_P0F_D_7_9 -0.3 header L_P0F_D_15_25 X-Amavis-OS-Fingerprint =~ /bdistance (1[0-5]|2[0-5])(?![0-9])/ score L_P0F_D_15_25 0.3
Nun sollte nach einem Neustart der Dienste die Bewertung anhand von Fingerprints funtkionieren. Ob dies der Fall ist, erkennt man am Header der betreffenden E-Mails.
X-Spam-Score: 10.78 X-Spam-Level: ********** X-Spam-Status: No, score=10.78 tagged_above=-100 required=14.31 tests=[HELO_DYNAMIC_DIALIN=3.995, L_P0F_D_7_9=-0.3, L_P0F_OS_WINDOWSXP=3.5, MISSING_SUBJECT=1.285, NO_REAL_NAME=1.2, RDNS_DYNAMIC=0.1, UNDISC_RECIPS=1] X-Amavis-OS-Fingerprint: Windows XP/2000 (RFC1323+, w+, tstamp-) [GENERIC] Signature: [65535:121:1:52:M1260,N,W3,N,N,S:.:Windows:?], (distance 7, link: PIX, SMC, sometimes wireless), [80.141.48.85:]
score L_P0F_OS_WINDOWSXP 3.5
header L_P0F_OS_WINDOWS_OTHER X-Amavis-OS-Fingerprint =~ /^Windows(?! XP)/
score L_P0F_OS_WINDOWS_OTHER 1.7
header L_P0F_OS_UNKOWN X-Amavis-OS-Fingerprint =~ /^UNKNOWN/
score L_P0F_OS_UNKOWN 0.8
header L_P0F_OS_LINUX X-Amavis-OS-Fingerprint =~ /^Linux/
score L_P0F_OS_LINUX -0.3
header L_P0F_OS_UNIX X-Amavis-OS-Fingerprint =~ /^((Free|Open|Net)BSD)|Solaris|HP-UX|Tru64/
score L_P0F_OS_UNIX -1.0
header L_P0F_D_1_4 X-Amavis-OS-Fingerprint =~ /bdistance [1-4](?![0-9])/
header L_P0F_D_5_6 X-Amavis-OS-Fingerprint =~ /bdistance [5-6](?![0-9])/
header L_P0F_D_7_9 X-Amavis-OS-Fingerprint =~ /bdistance [7-9](?![0-9])/
header L_P0F_D_15_25 X-Amavis-OS-Fingerprint =~ /bdistance [15-25](?![0-9])/
score L_P0F_D_1_4 -0.7
score L_P0F_D_5_6 -0.5
score L_P0F_D_7_9 -0.3
score L_P0F_D_15_25 0.3
Nachtrag 15.01.2010
Wie ich gerade gesehen habe, gibt es p0f auch als Spamassassin Plugin 😉
Nachtrag 29.07.2014
Wenn p0f in mit dem Parameter fürs Logging (-o) gestartet wird, fügte Amavisd-new bei mir kein Header-Feld mehr zur E-Mail hinzu.