Kampf dem Spam: Spamfreies Gästebuch
Viele Spammer sind wohlbekannt!
Da nicht nur einzelne Personen von Spam betroffen sind, sondern es ein globales Problem darstellt, sind mit der Zeit natürlich eine Reihe Organisationen entstanden, die der Spamflut den Kampf angesagt haben. Die erste Organisation, die hier sogar recht erfolgreich gewesen ist, war MAPS (Kurzform für Mail Abuse Prevention System, zu Deutsch System zur Bekämpfung des E-Mail-Mißbrauchs). Danach sind noch zahlreiche weitere Organisationen entstanden (und einige auch wieder verschwunden), die sich die Spambekämpfung ebenfalls auf die Fahnen geschrieben haben. Die wohl bekanteste heute noch agierende Organisation ist Spamhaus, die über eine umfangreiche Sammlung an Daten über Spammer verfügt.
Ursprünglich dienten diese Informationen lediglich dazu, Mailserver gegen die Benutzung von bestimmten IP-Adressen oder auch ganzen Netzsegmenten, von denen aus gehäuft Spam verschickt wurde, abzusichern. Da Spam jedoch nicht mehr nur über Mailserver oder Schwarze Bretter verbreitet wird, sondern auch zunehmend über andere Verbreitungswege, haben sich diese Organisationen natürlich auch weiterentwickelt und ihre Datenbestände ergänzt, so daß man auch ermitteln kann, ob eine bestimmte Domain zu irgendwelchen Spammern gehört oder nicht – und wenn ja, kann man eine so erhaltene Nachricht gleich wieder verwerfen.
nach obenDeckel drauf!
Leider sind zuviele Gästebücher, Blogs und andere Wege der Kommunikation nicht ausreichend gegen Spam geschützt, und wenn ein Spammer erst einmal im Haus ist, dann wird man ihn so schnell nicht mehr los. Daher ist es unerläßlich, daß man vorher nachschaut, wer da was veröffentlichen will, und wenn die Informationen nicht gefallen, dann kann man ihm ganz einfach die Tür weisen. Alles, was Sie tun müssen, ist, den Code Ihres Gästebuchs geeignet zu ergänzen, so daß es die bereitgestellten Schwarzen Listen abfragt. Bei einem Treffer in einer dieser Listen können Sie davon ausgehen, daß es sich nicht um eine legitime Nachricht handelt, und diese verwerfen, ohne ihr weitere Beachtung zu schenken.
nach obenFunktionsweise
Um die Handhabung der Schwarzen Listen möglichst zu vereinfachen, greifen die
Organisationen, die diese Listen anbieten, auf ein System zurück, das im
Regelfalle dazu dient, Domainnamen in IP-Adressen und umgekehrt aufzulösen: Den
Domain Name Service.
Dabei betreiben Spamhaus & Co. eigene DNS-Server, die einen Code
zurückliefern, wenn man sie abfragt. Dieser Code wiederum enthält die Art des
Problems in codierter Form, wobei jedem Code eine bestimmte Bedeutung
zugeordnet ist. Anhand dieses Codes läßt sich herausfinden, ob es sich bei dem
fraglichen Rechner um eine aktive Spamschleuder, einen gekaperten Rechner oder
was auch immer handelt. Dann können Sie entscheiden, ob Sie alles
Problematische verbieten wollen oder aber nur bestimmte Problemfälle.
Um eine Schwarze Liste einsetzen zu können, müssen Sie diese dem Skript, das Ihr Gästebuch steuert, zunächst einmal zugänglich machen, und gerade unter Perl läßt sich dies recht einfach bewerkstelligen. Sie benötigen keine umfassenden Kenntnisse um die internen Mechanismen des DNS, sondern es ist vollkommen ausreichend zu wissen, welche Antwort des Servers welche Bedeutung hat.
Auch wenn DNSBL-Systeme normalerweise eingesetzt werden, um Mailserver gegen bedenkliche Verbindungen abzusichern, lassen sie sich in jede Kommunikationsplattform einbauen, z. B. Gästebücher, Blogs oder Foren. Die Arbeitsweise ist in allen Fällen identisch.
Hinter den Kulissen
Die Codes, die von einem DNSBL-Server zurückgeliefert werden, sind dabei nichts
anderes als IP-Adressen aus einem bestimmten Netzsegment: IP-Adressen, die
normalerweise dem Loopback-Gerät des Betriebssystems zugewiesen werden, also
der virtuellen Schnittstelle, die den Computer selbst ansteuert. Da hier
normalerweise die IP-Adresse 127.0.0.1 verwendet
wird, stehen alle Adressen von 127.0.0.2 bis
127.255.255.254 für die Übermittlung von
Informationen zur Verfügung.
Für eine DNSBL brauchen längst nicht alle Adressen verwendet zu werden, da es
keine 16,7 Millionen verschiedene Zustände gibt, sondern im Regelfalle um die
zwanzig. Das reduziert den Arbeitsaufwand beim Überprüfen ganz gewaltig.
Um eine Überprüfung vorzunehmen, baut der Aufrufer zunächst einmal einen Domainnamen zusammen, in dem die zu prüfende IP-Adresse codiert ist, und schickt die Anfrage an den DNSBL-Server, der für diese speziellen Domains verantwortlich zeichnet. Je nachdem, ob die fragliche IP-Adresse auf der Schwarzen Liste steht oder nicht, wird der Server entweder mit einer IP-Adresse, die das Problem beschreibt, antworten oder den Fehlercode NXDOMAIN zurückliefern. Im ersten Fall kann man den Vorgang, der die Überprüfung ausgelöst hat, einfach abbrechen oder weitere Überprüfungen vornehmen, ob man den Vorgang ggf. doch noch zulassen kann. Im letzten Fall hingegen liegen keine Erkenntnisse über Probleme mit der betreffenden Adresse vor, und es kann davon ausgegangen werden, daß man dem Vorgang stattgeben kann.
nach obenEine Schwarze Liste einbinden
Es empfiehlt sich, die Abfrage einer Schwarzen Liste an einem möglichst frühen
Punkt im Skriptverlauf einzubinden. Wenn sich herausstellt, daß sich eine
IP-Adresse auf einer DNSBL befindet, so können Sie den Zugriffsversuch auf Ihr
Gästebuch abblocken, bevor auch nur eine Ihrer Vorkehrungen zur Spamabwehr
bemüht wird. Erst wenn dieser Test negativ ausfällt, sind weitere Überprüfungen
erforderlich.
Folgender Codeabschnitt erledigt die Abfrage:
Dazu benötigen Sie noch ein Modul mit einer bestimmten Funktion, die die Abfrage von DNSBL-Servern übernimmt:
Dieser Code regelt die Überprüfung einer DNSBL. Wenn Sie die Benutzung von
Schwarzen Listen aktiviert haben, wird zunächst einmal eine Abfrage von
DNSBL-Servern gestartet, und wenn es einen Treffer gibt, wird der Wert 1
(TRUE) zurückgegeben, sonst 0
(FALSE). Schlägt die Abfrage fehl, ist das Ergebnis
undef. Bei undef
empfiehlt es sich, den Zugriff zu verweigern, ohne daß es Konsequenzen gibt.
Dazu wird die Datenbank einfach auf den ursprünglichen Zustand zurückgesetzt.
Bei einer erfolgreichen Abfrage hängt es einzig davon ab, ob das Ergebnis
positiv oder negativ war: Bei einem positiven Ergebnis wird die Adresse als
gesperrt in die Tabelle der IP-Adressen
eingetragen, ggf. mit einer längeren Sperrfrist als normal. Die einzutragende
Nachricht wird dann einfach verworfen.
Ist das Ergebnis hingegen negativ, so sind weitere Überprüfungen notwendig um
festzustellen, ob die Nachricht gültig ist oder nicht.