Website-Icon .: blog cscholz.io :.

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

Die mobile Version verlassen