Tutorials - HTTP-Teergruben
Sprachenübersicht/Programmierung/PHP
HTTP-Teergruben
Diese Seite wurde 866 mal aufgerufen.
Dieser Artikel wurde in einem Wikiweb System geschrieben, das heißt, Sie können die Artikel jederzeit editieren, wenn Sie einen Fehler gefunden haben, oder etwas hinzufügen wollen.
Editieren Versionen Linkpartnerschaft Bottom Printversion
Keywords: http teergruben honeypots anti spammer
Inhaltsverzeichnis
Aktuelle Zahlen besagen, dass der Spamversand weltweit 2/3 bis 90% des Mailaufkommens ausmacht. Dies führt dazu, dass immer bessere Filter und Tricks entwickelt werden müssen, um Spam zuverlässig zu erkennen. Doch diese Mittel bekämpfen nur die Symptome und nicht die Ursache.
Eine andere Möglichkeit sind HTTP-Teergruben. Diese lösen zwar auch nicht die Urspungsproblematik der Werbemails, doch helfen zumindest dabei, die Adressensammler der Spammer für einige Zeit in die Irre zu führen.
Die Technik ist ganz einfach. Es wird versucht, durch die andauernde Verlinkung auf die Urspungsseite den Webcrawler des Spammers ins Unendliche zu führen.
Ein Beispiel dafür währe spam.4-web.net.
Ich habe für die Teergrube eine Subdomain geopfert, es ist aber auch möglich, sie einfach in einen eigenen Ordner zu stecken.
Webserver-Konfiguration:
<VirtualHost *:80>
ServerName spam.4-web.net
ServerAlias mails.online-tutorials.net
DocumentRoot /path/to/public_html/spam
AliasMatch ^/[A-Za-z0-9]+\.[A-Za-z0-9]+$ /path/to/public_html/spam/index.php
CustomLog /var/log/apache2/spam.4-web.net-access_log combined
</VirtualHost>
Würde sich die index.php beispielsweise im Ordner /infinite befinden, müsste man dazu eine .htaccess-Datei im selbigen Verzeichnis erstellen mit folgenden Inhalt.
.htaccess:
<Directory /path/to/infinite>
AliasMatch ^/spamfight/[A-Za-z0-9]+\.[A-Za-z0-9]+$ /path/to/infinite/index.php
</Directory>
Nun ist noch eine php-Datei mit dem Namen index.php erforderlich. Um die Last klein zu halten, verwendet dieses Script ein paar Funktionen, welche die Anzahl der gleichzeitigen Anfragen beschränkt. Dazu muss bei der PHP-Installation der Parameter --enable-sysvsem aktiviert sein sowie System V IPV im Kernel.
index.php:
<?
define("LINKS_GENERATED",20); // Links pro Seite
define("TIME_WAIT",1); // Wartezeit [s] zwischen zwei Links
define("MAX_CONCURRENT_USERS",20); // Obergrenze paralleler Aufrufe
define("SEM_PERMS",0600); // Rechte des Semaphors
/* HTTP-Header ausgeben.
Die Anfrage liefert immer OK, falls Einsatz über Error-Handler.
Die Seite ist immer neu, um eventuelle Proxys zu umgehen.
Content-Encoding wird wegen W3C-Konformität gesandt.
*/
header("HTTP/1.1 200 OK"); // Für ErrorDocument-Variante
header("Status: 200 OK"); // Für PHP3-Kompatibilität
header("Expires: ".gmdate("D, d M Y H:i:s")." GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Encoding: iso-8859-1");
/* HTML-Kopf ausgeben */
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<title>My very special links</title>
<META name="ROBOTS" content="NOINDEX, NOFOLLOW">
</head>
<body>
<h1>Welcome to my very special links.</h1>
<?
$sem_key = ftok (__FILE__,'T'); // Key für den Semaphor
if ($sem_key != -1) { // Key korrekt erzeugt
$sem_id = sem_get($sem_key,MAX_CONCURRENT_USERS,SEM_PERMS);
if ($sem_id !== FALSE) { // Semaphor erzeugt oder gefunden
if (sem_acquire($sem_id)) {
/* Kritischer Abschnitt. P(s) war erfolgreich. */
for ($i=0; $i<LINKS_GENERATED; $i++) {
print "<a href=\"". md5(uniqid(rand(), true)).
".php\">". md5(uniqid(rand(), true)).
"</a><br><br>";
sleep(TIME_WAIT);
}
/* Kritischen Abschnitt verlassen: V(s) */
if (!sem_release($sem_id)) {
/* Fehler bei V(s), Webmaster informieren */
die ('Internal Error');
}
} // end if sem_acquire
} // end if sem_id !== FALSE
} // end if semkey != -1
/* HTML-Footer */
?>
55 </body>
56 </html>
Ob sich der Umweg über das SysV-IPC rentiert, weiß ich noch nicht, da ich noch nicht die Zeit hatte, das Script anzupassen. Falls es bessere Lösungen gibt, bitte hier posten!
Damit nicht Suchmaschinen in Fallen tappen, die für die Spammer ausgelegt sind, nutzen wir die Datei robots.txt, welche von seriösen Webcrawlern befolgt wird.
robots.txt:
User-agent: *
Disallow: /
Befindet sich die Teergrube in einem Unterordner (hier: /infinite/), so ist eine Zeile anzupassen:
robots.txt:
User-agent: *
Disallow: /infinite/
Diese einfache Methode kann schlecht programmierte Webcrawler bis zu Tagen an einer einzigen Seite fesseln, ohne vernünftige Ergebnisse zu liefern. Es gibt jedoch noch viele Verbesserungsmöglichkeiten, um die Webseite noch realistischer Wirken zu lassen. Auch eine Logging- und Statistik-Funktion wäre denkbar.
Linux Magazin - Ernte, nein danke
Gibt es noch irgendwelche Fragen, oder wollen Sie über den Artikel diskutieren?
Editieren Versionen Linkpartnerschaft Top Printversion
Haben Sie einen Fehler gefunden? Dann klicken Sie doch auf Editieren, und beheben den Fehler, keine Angst, Sie können nichts zerstören, das Tutorial kann wiederhergestellt werden
Sprachenübersicht/Programmierung/PHP/HTTP-Teergruben