Alle paar Wochen haben wir ein Problem, bei dem eine einzelne IP-Adresse eine große Anzahl von Apache-Prozessen gleichzeitig öffnet.
Es scheint jedes Mal eine Verbindung zu ähnlichen Seiten herzustellen, aber unsere Apache-Prozesse gehen von den normalen ~ 20-25 ausgelasteten Slots auf unser Maximum (256) über.
Diese IP-Adresse aktualisiert dann alle Anforderungen unermüdlich, wodurch die Belastung unseres Servers erheblich zunimmt und die Site drastisch verlangsamt wird.
Die Lösung ist in jedem Fall einfach; Ich finde die IP aus Apache "Serverstatus" heraus und blockiere die IP mithilfe einer IP-Tabellenregel.
Leider ändert sich die IP-Adresse jedes Mal (sie ist immer ähnlich und wenn ich nach dem Host suche, sagt "bt openworld"), und ich bin nicht rund um die Uhr verfügbar, um mich anzumelden und eine IP-Tabellenregel hinzuzufügen.
Um es klar auszudrücken, wir verarbeiten Crawls von Google und anderen Suchmaschinen ohne Probleme. Ich bin mir nicht sicher, ob das, was wir erleben, böswillig ist oder nicht.
Wie kann ich den Effekt begrenzen, den dies hat?
Unser Setup ist ein einzelner Server, der sowohl MySQL als auch Apache verwaltet.
Ich wurde darauf hingewiesen, dass ein Load Balancer die einzige Möglichkeit ist, die Anzahl der Verbindungen von einzelnen IP-Adressen (die sich jedoch pro Angriff ändern) zu begrenzen.
quelle
Antworten:
Vielleicht hilft so etwas. Es blockiert alle Hosts, die innerhalb von 2 Minuten (180 Sekunden) mehr als 150 Verbindungen öffnen:
Sie müssen das Skript optimieren, damit normale Benutzer niemals blockiert werden
quelle
Nun, Sie können einige iptables-Regeln verwenden , um die Anzahl gleichzeitiger Verbindungen zu begrenzen.
Die andere Lösung wäre, Ihre Anwendung so zu optimieren, dass sie mit weniger Ressourcen schneller verarbeitet wird.
quelle