Discussion:
Blockieren von IP Adressen
(zu alt für eine Antwort)
Manfred Rebentisch
2022-08-24 10:40:01 UTC
Permalink
Hallo,

mit meiner neuen Software für Websites und Webapplications kann ich
IP-Adressen automatisch komplett vom Serverzugriff aussperren, wenn
bestimmte URLs aufgerufen werden. Das funktioniert wahlweise mit
iptables oder fail2ban und läuft super.

Doch was passiert, wenn tausende von Bots Millionen von Bad-Urls
aufrufen? [Bad-Urls sind nicht Schreibfehler, sondern sowas wie
"\x80w\x01\x03\x01" oder "wp-login.php"]

Hat jemand Lese-Tipps, über die ich in das Thema eintauchen kann?

Danke!

Manfred
--
Manfred Rebentisch
Ulf Brüggemann
2022-08-24 11:30:01 UTC
Permalink
Hallo Manfred,

Lese-Tipps habe ich dazu nicht.
Vielleicht helfen Dir meine Erfahrungen.

Hast Du dich vielleicht im Internet auf irgend welchen Seiten "bekannt gemacht"?

Ich hatte das mal und darauf hin ging die Anfragenflut los. Meinem Raspberry Pi hatte das nicht wirklich gestört, Protokolldateien wurden halt rasant größer. Aber mein Router hob dann doch mal die weiße Flagge. Ich hatte damals etwa 3000 Anfragen pro Sekunde.

Letztendlich habe ich meine DNS geändert, um das Problem loszuwerden.

Nicht schön, aber was will man machen. Das Internet merkt sich alles.

Ich persönlich halte nicht viel von Filterprogrammen. Jede Anfrage, die kommt, muss da erst mal durch. Wenn es nur ein paar tausend Adressen sind, ist das ja ok. Alles andere ist für mich das Verschwendung von Energie, die man anderweitig einsetzen könnte. Gesunder Menschenverstand, auch wenn es Arbeit kostet, ist da für mich doch besser.

Gruß Ulf
--
Ulf Brüggemann <***@t-online.de>
Manfred Rebentisch
2022-08-25 03:40:01 UTC
Permalink
Hallo Ulf,
Post by Ulf Brüggemann
Letztendlich habe ich meine DNS geändert, um das Problem loszuwerden.
Damit muss ich mich auch nochmal befassen...

Danke!
--
Manfred Rebentisch
d***@thomas.freit.ag
2022-08-24 15:40:01 UTC
Permalink
Hallo Manfred,
Post by Manfred Rebentisch
mit meiner neuen Software für Websites und Webapplications kann ich
IP-Adressen automatisch komplett vom Serverzugriff aussperren, wenn
bestimmte URLs aufgerufen werden. Das funktioniert wahlweise mit
iptables oder fail2ban und läuft super.
Doch was passiert, wenn tausende von Bots Millionen von Bad-Urls
aufrufen? [Bad-Urls sind nicht Schreibfehler, sondern sowas wie
"\x80w\x01\x03\x01" oder "wp-login.php"]
Du kannst mit fail2ban auch Deine Webserverlogs überwachen und entsprechend
sperren. Dazu musst Du einen entsprechenden Filter konfigurieren und in den
Logs per Regex nach solchen Zugriffen suchen.

Infos findest Du unter: https://fail2ban.readthedocs.io/en/latest/filters.html#developing-filter-regular-expressions,
zusätzlich gibt es auch schon vorgefertigte Filter, z.B. bei GitHub:
https://github.com/topics/fail2ban-filter, aus denen Du Anregungen
ziehen kannst (oder einfach direkt verwenden).

Wie viel Aufwand du darein stecken willst, musst Du Dir aber überlegen, diese
Anfragen kommen in der Regel automatisiert aus irgendwelchen Botnetzen und bekommen
von deinem Webserver einen entsprechenden HTTP Status (404 Not Found) und das war es.
Die IP kommt nicht so schnell wieder, das Sperren hat also wenig Effekt.
Post by Manfred Rebentisch
Hat jemand Lese-Tipps, über die ich in das Thema eintauchen kann?
Viele dieser Botnetze landen relativ schnell auf DNS Blacklists. Für Apache httpd
gibt es ein Modul mod_defensible (https://packages.debian.org/bullseye/libapache2-mod-defensible)
mit dem Du Requests von solchen IPs auch vorab blocken kannst. Die XBL von SPAMHAUS
(https://www.spamhaus.org/xbl/) ist kostenlos verfügbar und hat bei mir merklich dafür
gesorgt, dass weniger Bot-Zugriffe beim Webserver aufschlagen.

Für beides gilt: Potenziell sperrst Du mit solchen Mechanismen auch valide Nutzer
aus (die über dynamische IP-Ranges kommen), zu lange Blocken ist daher nicht
ratsam, kurz blocken bringt nicht übermäßig viel. In dem Zusammenhang ist es
praktisch, dass fail2ban bei mehr Verstößen auch die Sperrzeit erhöhen kann,
damit kann man zunächst kurz sperren und dann verlängern (siehe z.B.:
https://visei.com/2020/05/incremental-banning-with-fail2ban/). Das geht auch
über verschiedene Dienste, die Du mit fail2ban überwachst hinweg (und damit
erwischt man dann eher sinnvoll zu sperrende IPs).
--
hth,
Thomas
Manfred Rebentisch
2022-08-25 03:30:02 UTC
Permalink
Hallo Thomas,
danke für Deine lange Antwort.

fail2ban wird bei mir seit langem eingesetzt.
Post by d***@thomas.freit.ag
Wie viel Aufwand du darein stecken willst, musst Du Dir aber überlegen, diese
Anfragen kommen in der Regel automatisiert aus irgendwelchen Botnetzen und bekommen
von deinem Webserver einen entsprechenden HTTP Status (404 Not Found) und das war es.
Die IP kommt nicht so schnell wieder, das Sperren hat also wenig Effekt.
Wahrscheinlich hast Du recht, dass ich fail2ban noch stärker nutzen
könnte. Auch meine IP-Blocks gelten immer für 10 Minuten und verhindern
genauso, wie bei fail2ban massenweise folgende Zugriffe auch über andere
Ports. Bei meinem System kann ich zur Laufzeit URLs rein- oder rausnehmen.
Post by d***@thomas.freit.ag
Viele dieser Botnetze landen relativ schnell auf DNS Blacklists. Für Apache httpd
gibt es ein Modul mod_defensible (https://packages.debian.org/bullseye/libapache2-mod-defensible)
mit dem Du Requests von solchen IPs auch vorab blocken kannst. Die XBL von SPAMHAUS
(https://www.spamhaus.org/xbl/) ist kostenlos verfügbar und hat bei mir merklich dafür
gesorgt, dass weniger Bot-Zugriffe beim Webserver aufschlagen.
Ach ja, das ist eine gute Idee! Muss mal schauen, ob es sowas auch für
NGINX gibt...
Post by d***@thomas.freit.ag
Für beides gilt: Potenziell sperrst Du mit solchen Mechanismen auch valide Nutzer
aus (die über dynamische IP-Ranges kommen), zu lange Blocken ist daher nicht
ratsam, kurz blocken bringt nicht übermäßig viel. In dem Zusammenhang ist es
praktisch, dass fail2ban bei mehr Verstößen auch die Sperrzeit erhöhen kann,
https://visei.com/2020/05/incremental-banning-with-fail2ban/). Das geht auch
über verschiedene Dienste, die Du mit fail2ban überwachst hinweg (und damit
erwischt man dann eher sinnvoll zu sperrende IPs).
Valide Nutzer werden mit meiner Methode nicht ausgesperrt. Sämtliche
Zugriffe auf PHP-Urls sind Angriffe, da bei mir kein PHP installiert ist.
--
Manfred Rebentisch
Marc Haber
2022-08-25 08:40:01 UTC
Permalink
On Thu, 25 Aug 2022 05:17:43 +0200, Manfred Rebentisch
Post by Manfred Rebentisch
Hallo Thomas,
danke für Deine lange Antwort.
fail2ban wird bei mir seit langem eingesetzt.
Post by d***@thomas.freit.ag
Wie viel Aufwand du darein stecken willst, musst Du Dir aber überlegen, diese
Anfragen kommen in der Regel automatisiert aus irgendwelchen Botnetzen und bekommen
von deinem Webserver einen entsprechenden HTTP Status (404 Not Found) und das war es.
Die IP kommt nicht so schnell wieder, das Sperren hat also wenig Effekt.
Wahrscheinlich hast Du recht, dass ich fail2ban noch stärker nutzen
könnte. Auch meine IP-Blocks gelten immer für 10 Minuten und verhindern
genauso, wie bei fail2ban massenweise folgende Zugriffe auch über andere
Ports. Bei meinem System kann ich zur Laufzeit URLs rein- oder rausnehmen.
Gegen welche Bedrohung möchtest Du Dich mit diesem Aufwand schützen?

Grüße
Marc
--
-------------------------------------- !! No courtesy copies, please !! -----
Marc Haber | " Questions are the | Mailadresse im Header
Mannheim, Germany | Beginning of Wisdom " |
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834
Alexander Reichle-Schmehl
2022-08-25 09:50:01 UTC
Permalink
Hi!
Post by Manfred Rebentisch
Valide Nutzer werden mit meiner Methode nicht ausgesperrt. Sämtliche
Zugriffe auf PHP-Urls sind Angriffe, da bei mir kein PHP installiert ist.
Und was stört dich dann daran? Wenn die Angriffe ohnehin ins leere
laufen, stören sie ja eigentlich nicht. Ich kann mir kaum vorstellen,
dass es einen signifikanten Performance Unterschied macht,.... Selbst
bei 20.000 Angriffsversuche pro Tag, hast mehr als fünf Sekunden
zwischen jedem einzelnen. Das sollte für einen Webserver eigentlich
genug Zeit sein, einen 404 zu loggen und weiter zu machen. Und sollten
die Log-Einträge selbst stören, wäre es vermutlich weniger Aufwand, das
loggen von 404en abzuschalten.


Mit besten Grüßen,
Alexander
d***@thomas.freit.ag
2022-08-25 20:50:02 UTC
Permalink
Hallo Manfred,
Post by Manfred Rebentisch
Post by d***@thomas.freit.ag
Wie viel Aufwand du darein stecken willst, musst Du Dir aber überlegen, diese
Anfragen kommen in der Regel automatisiert aus irgendwelchen Botnetzen und bekommen
von deinem Webserver einen entsprechenden HTTP Status (404 Not Found) und das war es.
Die IP kommt nicht so schnell wieder, das Sperren hat also wenig Effekt.
Wahrscheinlich hast Du recht, dass ich fail2ban noch stärker nutzen
könnte. Auch meine IP-Blocks gelten immer für 10 Minuten und verhindern
genauso, wie bei fail2ban massenweise folgende Zugriffe auch über andere
Ports. Bei meinem System kann ich zur Laufzeit URLs rein- oder rausnehmen.
Ich habe bei unterschiedlichen Diensten da sehr gemischte Erfahrungen gemacht.
Mein Mailserver (SMTP) ist seit Jahren Ziel von Password-Probing, seit ca. 2 Jahren
kommen in der Regel innerhalb weniger Tage nur sehr wenige Versuche von einer IP,
eher ein Versuch pro IP. Da bringt mir ein Blocken mit Fail2Ban quasi nichts. IMAPS
wird nahezu nicht bei Password-Probing verwendet.

SSH wird immer wieder versucht, hier auch häufiger von wiederkehrenden IPs (da
bin ich allerdings sehr restriktiv mit erlaubten Ranges und sehe eigentlich nur
Anfragen die vorab im tcpwrapper hängen bleiben.

Web (ich mache nur HTTPS) wird relativ viel gescannt, vorallem auf aktuelle (und
oft auch erschreckend alte) Lücken in gängiger Blog- oder Shopsoftware, hier auch
einmal die Latte an Exploits/Lücken von einer IP. Da bringt Blocken beim ersten
Zugriff aber auch eher nur ein wenig Loghygiene (also weniger 404er) in den Logs.
Ich nutze mod_defensive auch tendenziell eher dazu um weniger Müll in den Logs zu
haben und interessante Dinge eher zu sehen.
Post by Manfred Rebentisch
Post by d***@thomas.freit.ag
Für beides gilt: Potenziell sperrst Du mit solchen Mechanismen auch valide Nutzer
aus (die über dynamische IP-Ranges kommen), zu lange Blocken ist daher nicht
ratsam, kurz blocken bringt nicht übermäßig viel. In dem Zusammenhang ist es
praktisch, dass fail2ban bei mehr Verstößen auch die Sperrzeit erhöhen kann,
https://visei.com/2020/05/incremental-banning-with-fail2ban/). Das geht auch
über verschiedene Dienste, die Du mit fail2ban überwachst hinweg (und damit
erwischt man dann eher sinnvoll zu sperrende IPs).
Valide Nutzer werden mit meiner Methode nicht ausgesperrt. Sämtliche
Zugriffe auf PHP-Urls sind Angriffe, da bei mir kein PHP installiert ist.
Wie schon andere geschrieben haben: Du betreibst potenziell Aufwand, der sich
nicht lohnt, der erste Request wird sowieso durchschlagen und wie viel du potenziell
blockst ist fraglich (ich schätze, dass bei mir maximal 10% von Folgerequests
geblockt werden, weil in den letzten Jahren eben nicht mehr viel von einer IP aus
passiert.

Aber Spaß am Gerät ist immer ein valider Grund sich mit so etwas
auseinanderzusetzen. ;-)
--
hth,
Thomas
Manfred Rebentisch
2022-09-24 04:40:01 UTC
Permalink
Hallo in die Runde, hallo Thomas,

sorry, ich hatte ein paar Wochen keine Zeit zum Lesen.

Vielen Dank für eure Antworten!

Kurz erzählt, warum ich diese IP-Blockade programmiert habe: ich wollte
gleich den ersten Request blockieren. Ich hatte mich gerärgert über
kaputte Bots, die meinen Server mit falschen und uralten Url-Abfragen
fluteten. fail2ban reagierte mir zu spät.
Die Logs zeigten, dass von einer IP oft hunderte von Varianten
aufgerufen wurde, mit denen irgendeine Lücke gefunden werden kann. Nach
dem Webzugriff kamen ssh Versuche.

Naja, ich denke über eure Antworten nach.

Einen schönen Tag!
Manfred
--
Manfred Rebentisch
Manfred Rebentisch
2022-08-25 03:40:01 UTC
Permalink
Hallo Thomas,
Post by d***@thomas.freit.ag
Viele dieser Botnetze landen relativ schnell auf DNS Blacklists. Für Apache httpd
gibt es ein Modul mod_defensible (https://packages.debian.org/bullseye/libapache2-mod-defensible)
mit dem Du Requests von solchen IPs auch vorab blocken kannst. Die XBL von SPAMHAUS
(https://www.spamhaus.org/xbl/) ist kostenlos verfügbar und hat bei mir merklich dafür
gesorgt, dass weniger Bot-Zugriffe beim Webserver aufschlagen.
Use of Spamhaus's free public DNSBL service is restricted to low-volume
non-commercial users only. To make sure you qualify for free use, please
see the terms...

Bin nicht sicher, ob ich dann einfach das Apache-Modul einsetzen kann,
wenn da 20.000 Anfragen pro Tag gemacht werden...

Grüße
--
Manfred Rebentisch
d***@thomas.freit.ag
2022-08-25 20:30:01 UTC
Permalink
Hallo Manfred,
Post by Manfred Rebentisch
Post by d***@thomas.freit.ag
Viele dieser Botnetze landen relativ schnell auf DNS Blacklists. Für Apache httpd
gibt es ein Modul mod_defensible (https://packages.debian.org/bullseye/libapache2-mod-defensible)
mit dem Du Requests von solchen IPs auch vorab blocken kannst. Die XBL von SPAMHAUS
(https://www.spamhaus.org/xbl/) ist kostenlos verfügbar und hat bei mir merklich dafür
gesorgt, dass weniger Bot-Zugriffe beim Webserver aufschlagen.
Use of Spamhaus's free public DNSBL service is restricted to low-volume
non-commercial users only. To make sure you qualify for free use, please
see the terms...
Bin nicht sicher, ob ich dann einfach das Apache-Modul einsetzen kann,
wenn da 20.000 Anfragen pro Tag gemacht werden...
Ich habe (über verschiedene Dienste) ca. 50.000 Anfragen/Tag, nutze dafür einen
eigenen caching Resolver (bin für SPAMHAUS also mit meiner Resolver-IP sichtbar) ohne
Probleme. Ein konkretes Volumen geben die nicht an, wenn Du aber keine validen
Antworten mehr bekommst (kannst Du einfach testen, indem du den Google-DNS oder
einen anderen großen Anbieter verwendest, weißt Du, dass es hängt.

Viele Grüße,
Thomas
--
hth,
Thomas
Loading...