der Sperre: Ständig wiederholte Zugriffe blockierbar?

Beitrag lesen

Dann startet er "WebZIP/3.71 (http://www.spidersoft.com)"

Nun würde mich mal interessieren, ob und welche Möglichkeiten es gibt, solchen offensichtlich unsinnigen Traffic zu blockieren.

Falls der Webserver nichts zur Verfügung stellt (mod_throttle?), nur indem unerwünschte Software von vornherein erkannt und die dazugehörige IP gesperrt wird. Die Sperre der IP ist nötig, da ganz besonders Schlaue nach dem ersten Fehlschlagen ihre Downloadsoftware inkognito nochmals starten.

Die Lösung erfordert noch regelmäßiges manuelles Aufräumen der .htaccess.

/.htaccess
----------

ErrorDocument 403 /fehler/403.shtml

Order Deny,Allow
Deny from env=blockagent
Deny from env=blockaddress

SetEnvIfNoCase User-Agent "Plucker" blockagent
SetEnvIfNoCase User-Agent "^Java" blockagent
SetEnvIfNoCase User-Agent "^Wget" blockagent
SetEnvIfNoCase User-Agent "HTTrack" blockagent
SetEnvIfNoCase User-Agent "^WebZIP" blockagent

/fehler/403.shtml
-----------------

Zugriff verweigert blabla

<!--#if expr="$blockagent$blockaddress" -->
<!--#exec cmd="/bin/bash blockem.sh" -->
<!--#endif -->

/fehler/blockem.sh
------------------

#! /bin/bash

if [ -n "$REMOTE_ADDR" ]
then
    if [ -z "$blockaddress" ]
    then
        echo >> ../.htaccess -e "\n# date --rfc-822\n# URL: $REDIRECT_URL\n# Domain: dig +short -x $REMOTE\_ADDR\n# Agent: $HTTP_USER_AGENT\nSetEnvIf Remote_Addr $REMOTE_ADDR blockaddress"
        set | grep "^HTTP_" | sed "s/^/# /" >> ../.htaccess
    fi

i=20;
    while ((i--))
    do
        sleep 20
        read < /dev/random -n 1 byte
        echo -n $byte
    done
fi

Bei erstem Zugriff wird $blockagent gesetzt, was in blockem.sh dazu führt, das die IP und einige Parameter in die .htaccess als Sperre (SetEnvIf Remote_Addr $REMOTE_ADDR blockaddress) eingefügt wird. Alle folgenden Zugriffe setzen daraufhin (auch) $blockaddress, so dass blockem.sh zwar noch angefahren und die Warteschleife ausgelöst, aber nicht mehr (if [ -z "$blockaddress" ]) die .htaccess gefüllt wird.

Statt den Bösewicht in eine fast siebenminütige Warteschleife zu schicken, in der er nur 400 Bytes Müll erhält, und ihn damit zur Weißglut zu treiben, lässt sich das Spiel auch rigoros mit "iptables -A INPUT --source $REMOTE_ADDR -j DROP" spielen (sofern die Rechte es zulassen).