So alle 3-4 Wochen gibt es einen Scherzkeks der witzig findet eine kleine Spam-Attacke auf dieses Blog zu starten. Neulich war es jemand aus China und heute einer aus dem mittleren Westen in den USA. Kommen die Spam-Versuche alle von der gleichen IP, dann sperre ich diese einfach mit folgender Methode:
# IP-Sperre
order allow,deny
deny from 123.45.678.123
allow from all
Den oberen Code einfach in die .htaccess-Datei eintragen. Bei WordPress empfiehlt es sich diesen Code unterhalb den Rewrite-Regeln für die Permalinks unterzubringen.
Schickt der Scherzbold die Kommentare von mehreren IPs z. B. von 123.45.678.123
und 123.45.678.456
, dann kann man auch komplette IP-Bereiche sperren:
# IP-Sperre
order allow,deny
deny from 123.45.678
allow from all
Sperren kann man auch nach Hostnamen:
# IP-Sperre
order allow,deny
deny from boeser.spammer.com
allow from all
Allerdings sollte man vorsichtig sein beim Sperren und zwar aus mehreren gründen. Komplette Bereiche zu sperren kann auch, je nach dem welchen Bereich man sperrt, auch viele normale Besucher aussperren. Da die .htaccess-Datei afaik bei jedem Seitenaufruf geladen wird, kann es speziell bei schwächeren Servern zu Performance-einbrüchen führen, wenn die .htaccess-Datei zu groß ist.
Wir arbeiten seit 20 Jahren mit WordPress und bieten diverse Dienstleistungen rund um das System an. Kontaktiere uns für weitere Informationen oder für ein Angebot.
Und wäre es nicht einfacher die IP in die WordPress-Blacklist einzutragen? Wegen den von dir genannten Gründen? Habe aber nie ausprobiert 😉
Hallo Sergej,
ich habe es zwar nie getestet, aber ich denke das sollte funktionieren. Ich möchte die Spamversuche aber so früh wie möglich abfangen und am frühesten geht das imho wenn man es über den Webserver macht.
Richtig, aber wie du schon selbst sagst, du belastest damit auch jeden Request (Bilder etc.). Würdest du es in WP eintragen, hast du die Prüfung nur bei PHP/WP. Nur so als Idee 😉
@Sergej,
momentan sind lediglich 3 IP-Adressen und ein IP-Bereich gesperrt, dass hält sich noch im Rahmen. Wären es mehr Adressen, dann würde ich entweder mit der Blakcklist von WP arbeiten oder einfach das Anti Spam Bee von diesem S. Müller anweisen, Kommentare aus bestimmten Ländern zu blocken. 🙂
[…] bekannte Webentwickler Perun sprach in seinem Beitrag gestern das leidige Thema Spam an. Sicher geht es vielen ganz genau so, […]
Was bewirkt diese Sperrung im Detail? Dass derjenige nicht mehr kommentieren kann und trotzdem Zugang zur Seite hat oder bekommt er dann einen generellen 404-not found Error für die komplette Seite?
Und wie bekomme ich die IP desjenigen heraus?
Und wie findet Ihr diese Angriffe und die dazugehörige IP heraus?
@Mark und Chris,
schaut euch doch einfach mal die Kommentare in der Kommentar-Verwaltung mal genauer an.
Achso, ja klar. Ich dachte jetzt an Analytics oder dergleichen… 😉
ok, danke, was mir nach wie vor nicht klar ist – wie schon gesagt -, was passiert dann mit diesen Usern: können sie die Seite gar nicht mehr aufrufen, erhalten sie einen 404 Error oder wie muss man das verstehen?
Sorry, ist halt eine Newbie-Frage.
@Chris,
es wird eine 403er-fehlermeldung ausgegeben.
danke sehr.
Klingt irgendwie auf Anhieb nach “work more get less done”…
Spam auf IP Adressen analysieren (Zeitaufwand), den Spam löschen (nochmal Zeitaufwand) die Adressen dann in die htaccess schreiben (ein drittes Mal Zeitaufwand). Nachdem der Spammer dann einen neuen dial in gemacht hat, geht es von vorn los… Da ist Kommentarmoderation vermutlich noch schneller.
Aber vielleicht könnte da ein kleines Plugin helfen: Beim Klick auf “Spam” in der Moderationsnsicht wird die IP-Adresse in eine Tabelle übernommen. Das Script testet die Tabelle auf mehrfaches auftreten von IP adressen und schreibt die dann in die htaccess… Naja, aber wer möchte schon die htaccess für den PHP-User beschreibbar haben !?!
@Hinnerk,
Nö 🙂 … nach dem ich gestern zwei IPs und den Bereich gesperrt habe war Ruhe. Vorher kamen je 4-5 Spamversuche von den 3 gleichen IPs. Das wiederholt sich alle so 4 Wochen. Dann sperre ich 2-3 IPs für paar Tage und dann habe ich Ruhe. Anschließend entferne ich die IPs aus der .htaccess. Ich habe das mal testweise laufen lassen und wenn man die IP nach dem 3.-4. Versuch nicht sperrt, dann trudeln im Laufe des Tages mal gut 3-4 Dutzend Spamversuche (landen eh alle in der Moderation) von der gleichen IP rein. Da lohnt es sich schon einzelne IPs zu sperren.
Jetzt dafür, in Anbetracht der .htaccess und der WP-Blacklist, noch ein zusätzliches Skript zu installieren, halte ich für überdimensioniert.
@Vlad
Ich wollte in AB eine Blacklist für IPs einbauen, aber irgendwie konnte ich mich dazu nicht überreden, da WP die Liste eh führt.
Jepp, solange sich die Anzahl der Regel in der htaccess in Grenzen hält, ist alles Bestens 😉
Ist es nicht sinnvoller den Code als erstes in die .htaccess zu packen?
Das URL-Rewriting könnte man sich in diesem Fall sparen.
Ich finde allerdings leider keine Infos im Netz dazu, ob der Apache, sofern er von einer gesperrten IP GET-Befehle bekommt, sofort ein 403er sendet, oder die .htaccess weiter bearbeitet. In dem Fall wäre es egal, wo der Code steht.
Vielleicht kann hier jemand Licht ins Dunkle bringen.
Und wenn der Spamer intelligent ist, und das Abblocken des Requests erkennt, dann hilft ein weiterer Tipp: http://kau-boys.de/1471/webserver/schutz-der-website-oder-des-blog-vor-massiven-zugriffen-durch-crawler-oder-angreifer
Hi! Ich trage auffällige UAs zusammen für die “Bad-Bot-Liste” und bin so auf denen Blogeintrag hier gestoßen. Ich wollte die Nutzung der IP-Bannliste, entstanden durch Bot-Trap und Stopforumspam, ein wenig bekannter machen. Kampf den Spammern!
Ich weiß nicht mehr was ich falsch mache. Ich habe eine .htaccess erstellt, folgendes eingefügt:
order allow,deny
deny from 198.15.xxx.xxx
deny from 217.170.xxx.xx
allow from all
auch meine IP Adresse um es auszuprobieren und klapts nicht. Wenn ich einfüge:
order allow,deny
deny from all
dann funktioniert und wir die Site nich eingezeigt. Sind aber alle Zugänge gesperrt. Was mache ich falsch?
Ich hoffe mal, du hast die .xxx.xxx am Ende nicht stehen lassen. Wenn du den gesamten Bereich 198.15.0.0 bis 198.15.255.255 sperren willst, dann schreibe nur “deny 195.15”. Das sollte dann funktionieren.
Hallo Richard,
lass mal zum Schluss das allow from all weg.
Also nur:
order deny,allow
deny from 198.15
deny from 217.170
So wären alle, wie der Vorredner schon gepostet hat, gesperrt (also ganzer Bereich) – oder halt die exakte IP Adresse.
Danke für die Antworten. Natürlich .xxx.xxx am Ende habe ich nicht eingegeben sondern volle IP Adressen.
Dein Vorschlag Shoto hat leider auch nicht funktioniert. Ich habe auf eine Site gelesen dass, das am Server liegen kann. OK ich habe andere Lösung gefunden. Die Böse Jungs werden auf eine andere Site weiter geleitet mit:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^(1xx.15.117.xxx) [OR]
RewriteCond %{REMOTE_ADDR} ^(2xx.170.192.xx) [OR]
RewriteCond %{REMOTE_ADDR} ^(xx8.98.100.xxx)
RewriteRule .* http://www.xxxxxxxx.com [R=301,L]
Hallo!
Ich wollte mal fragen, wie lange belässt du eine IP Adresse auf der .htaccess? Spätestens wenn man ganze Bereiche sperrt, stellt sich ja diese Frage…