Comment on Another massive distributed HTTP flood is currently hitting git.friendi.ca a
utzer@f.utzer.de@f.utzer.de 1 week ago @tom_s Danke für die Hinweise. Ich habe das jetzt in einer kurzen Stichprobe getestet:
- UA-Filter vorübergehend deaktiviert
- Anubis auf DEBUG gestellt
- separates TLS-Light-Logging in Nginx aktiviert
Ergebnis für den angeblichen Android-6-/Chrome-65-Client:
Requests: 13
Unterschiedliche IPs: 13
Challenges ausgestellt: 11
Challenges gelöst: 0Die 13 Verbindungen ergaben zunächst zwölf verschiedene TLS-Profile. Die Unterschiede bestanden allerdings ausschließlich aus zufälligen GREASE-Werten. Nach deren Normalisierung hatten alle Verbindungen exakt dasselbe TLS-Profil.
Der TLS-Fingerprint allein eignet sich trotzdem nicht für eine sichere Sperre: Dasselbe normalisierte Profil wurde in der Stichprobe auch von aktuellen Chrome-142-, Chrome-148- und Chrome-149-Clients verwendet.
Die Kombination ist jedoch eindeutig verdächtig: Der User-Agent behauptet Android 6 / Chrome 65, verwendet aber einen modernen TLS-1.3-/HTTP/2-Stack und über alle IP-Adressen hinweg dasselbe vollständige HTTP-Headerprofil.
Auch der User-Agent Mozilla/5.0 (compatible; crawler) löste keine seiner zwölf Challenges.
Der aktuelle Flood verbraucht in dieser Stichprobe also hauptsächlich Anubis-Ressourcen und gelangt nicht bis zu Forgejo.
UA-Filter und normales Anubis-Logging sind inzwischen wieder aktiv.
tom_s@friendica.ambag.es@friendica.ambag.es 1 week ago
@utzer hmm, der Zeitraum ist eigentlich viel zu kurz.
Warum Der Anubis bei diesem bisschen Rauschen schon umfallen soll, ist sehr merkwürdig. Irgendwo ne Fehlconfig am Werk.
ca. 10 Challenges/s, das ist kein Flood im wirklichen Sinne.
DEBUG-Logs und METRICS_BIND-Metriken suchen -> Speicher-Anstieg, offene Verbindungen, OOM? Irgendwas hakt da.
Das könntest Du als temporäre Spielerei aufnehmen. Würde halt nicht lange halten. Am besten erst eine Stunde oder Zwei nur loggen statt 444, um zu sehen, wen Du triffst!
Das ist also hier vermutlich nur ein Vorspiel.
Werden zukünftig Challanges gelöst, hat der Schlingel auf eine JS-Version umgeschwenkt. Erst dann wirds lustig. Bis dahin musst Du das Anubis genauer durchschauen.
Eindeutiges könntest Du auf DENY statt CHALLENGE stellen, das kann ich aus der Ferne nicht beurteilen.
tom_s@friendica.ambag.es@friendica.ambag.es 1 week ago
@utzer guter Punkt. Für nginx sind ca. 185/s zwar ok, aber dahinter kann das enger werden.
Ok, würde vorschlagen, den uaold13 scharf stellen und zudem noch:
Damit fällt schon mal Last ab.
Nun gilt es den Zähler von gelösten Challenges im Auge zu behalten.
Für das Beurteilen von Verbindungen, einfach mal nen Tag lang anschauen, was so passiert, z.B.
Wäre ein Anfang.
tom_s@friendica.ambag.es@friendica.ambag.es 1 week ago
@utzer
hab das zuvor ein wenig unglücklich ausgedrückt. ich meinte die input rule mal in ruhigen, normalen Zeiten laufen lassen. so 4x am Tag für jeweils ne Stunde. Aber vielleicht kennst Du die normale Auslastung ja selber schon.
Je nachdem, was Deine Messung ergibt, könnte man sowas beispielsweise einbauen: Rate: 50/s und Burst: 150
Ist nur ne Idee, um den Traffic zu deckeln.