Home > Codes/Configs, ghcif > User Agents mit lighttpd oder iptables blocken

User Agents mit lighttpd oder iptables blocken

Aktuell fahren ein paar IPs einen merkwuerdigen Angriff auf nopaste.info wie ich meinen Logs entnehmen konnte laeuft dies nun seit ein paar Tagen:

217.122.119.176 nopaste.info - [25/Apr/2011:15:16:01 +0200] "GET / HTTP/1.1" 200 345 "-" "Java/1.6.0_24"
87.161.159.195 nopaste.info - [25/Apr/2011:15:16:01 +0200] "GET / HTTP/1.1" 200 345 "-" "Java/1.6.0_24"
95.96.36.139 nopaste.info - [25/Apr/2011:15:16:01 +0200] "GET / HTTP/1.1" 200 345 "-" "Java/1.6.0_24"

da es sich hierbei um ein paar 100.000 Anfragen handelt, ist es unwahrscheinlich, dass hier ein Programmierer einen komischen Crawler geschrieben hat. Generell eigentlich nichts schlimmes, aber es stoert mich und so habe ich nun einige Moeglichkeiten durchgespielt das ganze zu beenden. Die erste Idee die ich hatte war das ganze mit IPTables einzudaemmen, aber nicht mit rating, sondern via:

iptables -A INPUT -p tcp --dport 80 -m string --string "Java" --algo bm -j DROP

Die Idee war aber nur wenige Sekunden lang gut, denn neben evtl schlechter Performance koennte auch das Problem auftreten, dass nun keine Kommentare oder schlimmer noch keine Codes mehr mit dem Wort Java veroeffentlicht werden koennten. Also musste das verworfen werden.
Damit ich nun Last vom Server nehme habe ich mich fuer die Methode entschieden via Lighttpd Useragents zu blocken und so wurde die lighttpd.conf erweitert und nun Java ausgesperrt:

$HTTP["useragent"] =~ "Java" {
    url.access-deny = ( "/" )
}

Genutzt werden kann dies auch um Beispielsweise wget auszusperren, jedoch auch einzelne Verzeichnisse zu erlauben, ein Beispiel hier:

$HTTP["useragent"] =~ "Wget" {
    $HTTP["url"] !~ "^/downloads($|/)" {
        url.access-deny = ( "" )
    }
}

Hier wuerden Anfragen mittels wget mit 403 beantwortet, ausser eben ^/downloads.

Zusaetzlich dazu habe ich mir die IPs welche mehr als 100 Anfragen mittels Useragent „Java/1.6.0*“ gestellt haben in ein File ge’awk’ed und die IPs gesondert geblockt mittels

for i in $(<block); do iptables -A INPUT -s $i -j DROP; done

Und somit Ruhe auf der Kiste.

Ähnliche Posts

  1. Bisher keine Kommentare
  1. Bisher keine Trackbacks