Nun haben sie sich wohl auf mich eingeschossen

Nachdem in Dienstag und Mittwoch schon ein Angriff auf diesen Server stattgefunden hat, geht es seit gestern richtig heftig zur Sache. Freitag hat Strato den Server eine Weile vom Netz genommen, aber die Sache hat sich nicht beruhigt. Ich habe jetzt ca. 1.000 Rechner gezählt, die mit immer anderen Referer- und User-Agent-Angaben die Seiten Hauptseite abrufen. Hier eine Zeile aus dem Log.


121.54.54.45 - - [25/Nov/2012:00:05:43 +0100] "GET / HTTP/1.0" 403 1035 "k9bp0y0rh3.ru" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6"

Die Angriffe führen dazu, dass der Speicher zu 90% und der Prozessor meist zu 90-95% ausgelastet ist. Ein kleines Gegenmittel habe ich schon gefunden, aber es bewirkt nur, dass das ausgehende Datenvolumen geringer wird. Ich habe leider noch keinen Weg gefunden, den apache2 zu überreden, gar nicht mehr zu antworten.

Ob mir iptables hilft, hab ich noch nicht richtig nachvollziehen können. Der Apache bringt den Rechner an den Anschlag, sobald ich ihn starte. Leider ist beim Strato VServer nicht die SuSEfirewall sondern andere Firewall aktiv. So ganz werde ich aus den iptables nicht schlau. Was laut Beschreibung funktionieren sollte, gibt Fehlermeldungen oder wirkt nicht. Da werde ich noch etwas probieren müssen.

Gute Nacht – Vielleicht kommt mir ja noch eine Idee.

Der Pixray-Seeker wird lästig

In den letzten Tagen beobachte ich vermehrte Besuche durch den Pixray-Seeker[1]. Mit der Einführung der Permalinks funktioniert die frühere Umleitung auf ein Dummy-Bild nicht mehr. Außerdem kostet das Erzeugen des Zufallsbildes auf meinem VServer Prozessorzeit. Ich leite jetzt alle Zugriffe auf Pixray.com zurück. Für den Test habe ich den Useragent-Switcher[2] als Plugin im Firefox installiert. Ich denke, wenn es bei dem funktioniert, funktioniert es auch beim Bot.

Hier der Eintrag in der .htaccess.

RewriteCond %{HTTP_USER_AGENT} .*[Pp]ixray.*
RewriteRule . http://www.pixray.com/ [L]

Update: Ich habe den Ausdruck in der RewriteRule von ^.*$ auf . geändert. Irgendwie hat die alte Regel den Zugriff nicht für alle Dateien umgelenkt.

  1. [1]Siehe auch:„Unfreundliche Web-Crawler aussperren“
  2. [2]Siehe Chris Pederick – Useragent-Switcher 0.7.3

Unfreundliche Web-Crawler aussperren

Update 23. Oktober 2012: Inzwischen gibt es neue Erkenntnisse über den Pixray-Seeker. Er meldet sich wahrscheinlich nicht mehr mit Pixray-Seeker, sondern simuliert verschiedene User-Agents. Siehe Freundliche und unfreundliche Crawler

Beim Auswerten der Webalizer Statistiken sind mir Angriffe und verschiedene Suchmaschinen aufgefallen, von denen ich noch nichts gehört hatte. Die Angriffe gingen in der Regel gegen phpMyAdmin Installationen. Die laufen bei mir jedoch ins Leere. Über diese Angriffe schreibe ich später, d.h. in einem anderen Artikel. Heute soll es um eine spezielle Suchmaschine gehen.

„Unfreundliche Web-Crawler aussperren“ weiterlesen

The Webalizer – Mehrere virtuelle Server verwalten und auswerten

Gestern habe ich recht spontan über die Absicherung der Statistiken des Webalizer geschrieben. Das Meiste lässt sich auf andere Programme ohne Probleme übertragen. Heute soll es um die Einrichtung mehrerer virtueller Server (VServer) unter Apache und die Auswertung der Log-Dateien gehen.

Apache Konfigurationsdateien

Liegen viele Virtuelle Server auf einem Web-Server, gilt es den Überblick durch Ordnung zu wahren. Auch wenn alles im Apache in einer Datei beschreibbar ist, empfiehlt es sich, für jeden Server eine eigene Konfigurationsdatei zu erstellen und mit dem Namen des Servers zu versehen. Da mehre Domains auf meinem Server liegen, nehme den Fully Qualified Domain Name (FQDN) des Servers mit in den Dateinamen. Die Definition eines Servers steht somit in der Datei:

/etc/apache2/vhosts.d/<servername>.conf

und ist meist recht spartanisch. Siehe dazu den vorherigen Artikel.

Apache Log-Dateien

In vielen Fällen schreibt der Apache alle Zugriffe in ein einziges Access log (/var/log/apache2/access_log unter OpenSuSE). Das Format der Log-Einträge kann frei definiert werden. Die Default-Einstellung protokolliert nicht mit, auf welchen VServer zugegriffen wurde. Mit einer Erweiterung der Log-Einträge um die ServerNamen kommt der Webalizer nicht zurecht. Die Konsequenz ist, dass für jeden VServer eine eigene Log-Datei angelegt werden muss. Für diese Log-Dateien verwende ich folgende Namenskonvention:

/var/log/apache2/vhosts/<servername>/access_log

Das Rotieren der Logs der VServer wird durch eine Datei /etc/logrotate.d/apache2.vserver gesteuert. Hier erzeuge ich nur eine Datei für alle Server.

(Einzelne Log-Dateien haben auch ihre Vorzüge.)

Es empfiehlt sich vor einem Rotieren des Logs dieses mit dem Webalizer auszuwerten, da sonst Einträge verloren gehen. Da eine Webalizer Auswertung recht lange dauern kann, sollte der Web-Server nicht gestoppt werden. Dadurch können einige Einträge für die Auswertung verloren gehen, aber dies sollte zu verschmerzen sein.

Webalizer Output Verzeichnis

Der Weebalizer erzeugt seien Report in einem Verzeichnis. Dort werden auch historische Daten gespeichert, um nicht laufend alle Log-Einträge auswerten zu müssen. Einmal zählen reicht. Um die Zugriffe leichter zu kontrollieren lege ich die Statistiken auf einem eigenen VServer ab, der unter

/srv/www/vhosts/<servername>/

gespeichert wird. Unterhalb des VServer-DocumentRoot lege ich für jeden VServer wieder ein eigenes Verzeichnis mit dem Servernamen ab. Z.B.:

/srv/www/vhosts/webalizer.excample.com/wiki.excample.com

Das spartanische php-Script index.php in diesem Verzeichnis liest die Unterverzeichnisse und erzeugt eine Übersichtsseite Seite mit Links zu den einzelnen Statistiken.

Webalizer Konfigurationsdateien

Nun gilt es die einzelnen Statistiken für die VServer zu steuern. Diese Webalizer Konfigurationsdateien werden unter

/etc/webalizer.d/<servername>.conf

abgelegt.

Konfigurationsscript

Um den alle VServer für den Webalizer einzurichten, habe ich ein kleines Script geschrieben, das die Verzeichnisse erzeugt und die Konfigurationsdateien anpasst bzw. fehlende erzeugt. Voraussetzung ist, dass alle VServer unter /etc/apache2/vhosts.d/ definiert sind. Das Script liest alle Konfigurationsdateien des Verzeichnisses und sucht nach Zeilen „ServerName …“ (wichtig Groß- und Kleinschreibung beachten) und erzeugt mit diesem Servernamen die Einträge. Der Haupt-Domain-Name wird aus dem ServerName Eintrag der default-server.conf genommen.

Das Script findet sich hier: download

Webalizer ausführen

Um den Webalizer regelmäßig auszuführen, startet Cron folgendes Mini-Script:

#!/bin/sh

for CONF in /etc/webalizer.d/*.conf
do
  webalizer -c "$CONF"
done

Damit soll es für heute gut sein. Genug für diese Nacht.

The Webalizer – Statistiken absichern

Wer einen Web-Server betreibt, der möchte – so wie ich – wissen, was so auf seinem Server vor sich geht. Welche Seiten werden besucht, wie viele, von wem, usw. Da bietet sich The Welalizer als Tool für die Auswertung der Access Logs an. Die Installation ist einfach, die Konfiguration auch. Dazu aber etwas in einem späteren Artikel. Hier möchte ich etwas über die Absicherung der Statistiken schreiben, weil mir auffiel, dass viele Administratoren die Statistiken nicht vor Zugriffen schützen.

„The Webalizer – Statistiken absichern“ weiterlesen