Ich habe ein Szenario, in dem über 13.000 Crawler erkannt wurden und der Datenbankverkehr ins Unermessliche gestiegen ist. Jemand scrapt offensichtlich unser Forum, aber ich bin mir nicht sicher, wie ich die IP ermitteln und Maßnahmen dagegen ergreifen kann, da der Verkehr über Cloudflare-DNS läuft.
Habt ihr Ideen, wie man das angehen kann?
Ich möchte eine automatische Rate-Limiting-Lösung einrichten, die aggressives Netzwerkverhalten erkennt und diese dann entweder drosselt oder für einen bestimmten Zeitraum blockiert.
Ich sollte erwähnen, dass ich hier wirklich an eine Grenze stoße: Der Datenbankzugriff (ich verwende an derselben Stelle einen anderen Datenbankserver) liegt konstant bei 13 bis 20 Mbps. Als die Anzahl der Crawler explodierte, gab es einen starken Anstieg, der sich nun seit fast zwei Wochen nicht mehr beruhigt hat. Das Server-Steuerungspanel zeigt, dass der Datenverkehr zu diesem Zeitpunkt auf lächerlich hohe Werte gesprungen ist und auf diesem Niveau des ständigen Zugriffs geblieben ist. Wenn das so weitergeht, droht den Servern sogar, die verfügbare Bandbreite zu erschöpfen.
Wie Sie sich vielleicht erinnern, habe ich darüber nachgedacht, den Bandbreitenverbrauch an dieser Stelle zu begrenzen, indem ich einfach alles auf interne private IP-Adressen umstelle, da dies zumindest verhindern würde, dass ich hohe Rechnungen erhalte.
Mir ist hier noch etwas anderes Auffälliges aufgefallen. Ich habe die Datenbankverbindung von der öffentlichen IP-Adresse auf die private IP-Adresse umgestellt, um den monatlichen Transferkontingent nicht so schnell zu verbrauchen. Auf dem Datenbankserver erwartete ich jedoch, nur Verbindungen über die private IP-Adresse vom Discourse-Docker-Server zu sehen. Ich sehe zwar jetzt Verkehr von der lokalen privaten IP-Adresse, aber ich sehe immer noch unverhältnismäßig viel Verkehr von der öffentlichen IP-Adresse, wodurch das monatliche Kontingent weiterhin schnell aufgebraucht wird.
Ich habe sowohl auf dem Discourse-Docker-Server nach der öffentlichen IP-Adresse als auch nach dem Hostnamen des Datenbankservers gesucht, konnte sie jedoch nirgends finden. Selbst wenn ich in die App gehe (./launcher enter app) und env | grep DB ausführe, sehe ich die korrekte PRIVATE IP-Adresse für das hier verwendete LAN. Ich kann durch das Dateisystem greppen, aber ich finde keine Vorkommen, die ich erwarten würde.
Haben Sie Ideen, wie Discourse oder das Docker-Image möglicherweise immer noch auf die falsche IP-Adresse zugreifen? Ich kann einfach nicht herausfinden, woher dieser gesamte öffentliche IP-Verkehr auf dem Discourse-Server stammt.