Was tun gegen Referer Spam?
Spamming durch das Referer-Feld im HTTP-Header scheint ein neuer Trend zu sein.
Nachdem meine webalizer Statistiken bzgl. Referer ziemlich nutzlos geworden sind, hab ich mich einige Stunden mit dem Thema befasst. Der Apache bietet zwei Möglichkeiten um Referer-Spam aus den Logs loszuwerden: mod_rewrite und mod_access_rbl.
mod_access_rbl
Dieses Apache Modul, kann IPs, die in einer RBL (Realtime Blackhole List) stehen, den Zugriff auf die Website zu verwehren:
order allow,deny
allow from all
deny via rbl.maps.vix.com
Was bei SMTP-Servern sehr gut funktioniert, schließt bei Webservern unschuldige User aus: Bekommt er von seinem Internet-Provider, eine IP-Adresse zugewiesen, die in einer Blackhole List steht, ist ihm der Zugriff verwehrt. Bei Mailversand ist dies nicht kritisch, da dieser über das Relay des eMail-Providers, an dem er sich authentifizieren muss, stattfindet.
mod_rewrite
Wird auch Swiss Army Knife of URL manipulation genannt und eignet sich vorzüglich um Referer-Spam aus den Logs zu filtern.
Betrachtet man Referer-Spam, ist auffällig, dass der Referer immer auf die Root-URL einer Seite verweist,
also z.B. http://www.diesisteinespamurl.com/ und die Request-URL auf dem eigenen Server immer / lautet. Dies ist eine Eigenschaft, die ein echter Referer sehr selten hat. Zusätzlich wird eine Blacklists mit typischen Keywords verwendet. Man kann also das Logging für
potentiellen Referer-Spam folgendermassen filtern:
RewriteEngine on
RewriteCond %{HTTP_REFERER} (gay|porn|sex) [OR]
RewriteCond %{HTTP_REFERER} ^http://[^/]*/?$ [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^/?$ - [E=dontlog:1]
Wichtig: das Logging muss explizit ausgeschaltet werden, falls die Umgebungsvariable dontlog gesetzt ist:
CustomLog logs/access_log combined env=!dontlog
Mit obiger Methode konnte ich einen Großteil meines Referer-Spams filtern.
