Spambotabwehr mit Modsecurity

Auf Basis dieser schönen Erklärung habe ich versucht meine bisheriges Captcha Modul abzuschalten und die Spambot Bekämpfung mittels einer Regel für Modsecurity zu implementieren. Zwar habe ich bisher mit dem Captcha Modul keine schlechten Erfahrungen gemacht aber es ist sehr rechenintensiv und auch nicht immer gut zu lesen.

Die Idee ist simple. Spambots füllen alle Felder aus die sich Ihnen in einem Kommentarformular bieten. Also führen wir ein Feld ein das wir mittels CSS Anweisungen verstecken. Normale Benutzer sehen dieses Feld nicht und füllen es auch nicht aus. Spambots "sehen" das Feld und füllen es aus. Dann müssen wir nur noch eine Regel einfügen das alle Kommentare die dieses Feld ausgefüllt haben abgewiesen werden.

Die Resultate sind ermutigend. Ungefähr 20 Kommentare in etwas über einer Woche in drei Schüben. Alle mit demselben Autorennamen. Wenn der noch öfters kommt bekommt der eine eigene Regel. Im Schnitt wurden in zehn Tagen ungefähr 6 Kommentare pro Tag abgewiesen. An einem Tag wurden als Ausreißer 140 Kommentare abgewiesen.

Also in dem Template für die Kommentare wird folgendes Elemente eingefügt. (Geht alles noch natürlich noch "schöner")

 <style type="text/css">
             div .Check456 {display:none;}
</style>

  <div class="Check456">
      <input name="Check456" type="text">
</div>

Damit wird ein neues Feld eingefügt welches aber nicht sichtbar ist. Bots sehen das Feld und füllen es aus. Jetzt die custom rule in  Modsecurity
 

SecRule ARGS:Check456 "(\S+)" "auditlog,deny,log,msg:'Denied user creation by a bot'"


Dann passiert folgendes (manuel getestet mit einem sichtbaren Feld):

--15fd2321-A--
[10/Aug/2012:22:34:53 +0200] UCVwbT5LiwwAAHWcWUQAAAAE 127.0.0.1 3622 62.75.139.12 80
--15fd2321-B--
POST /cgi-bin/mt/mt-comments.cgi HTTP/1.1
Host: www.hagen-bauer.de
......
--15fd2321-C--
static=1&entry_id=916&__lang=de&parent_id=&armor=8b5a52fcb91lkjlj668348267b92b7dd&preview=&sid=&Check456=ksjflksafasfd&author=Hagen+Bauer&email=Hagen.Bauer%40caserio.de&url=&text=ljfdljsafdaslfd&token=98pWeJoiJuLLBCWRbeEfOptc1Yb2cFG601iiPp8U&captcha_code=
--15fd2321-F--
HTTP/1.1 403 Forbidden
Content-Length: 228
Keep-Alive: timeout=7, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1

--15fd2321-E--
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /cgi-bin/mt/mt-comments.cgi
on this server.</p>
</body></html>