Ich möchte nur einer IP erlauben, bis zu 1 GB Datenverkehr pro Tag zu verwenden. Wenn dieses Limit überschritten wird, werden alle Anforderungen von dieser IP bis zum nächsten Tag gelöscht. Eine einfachere Lösung, bei der die Verbindung nach einer bestimmten Anzahl von Anforderungen getrennt wird, würde jedoch ausreichen.
Gibt es bereits ein Modul, das dies kann? Oder kann ich das vielleicht durch so etwas wie iptables erreichen?
Vielen Dank
Antworten:
Wenn Sie eine reine Apache-Lösung wünschen, bw_mod für Apache 2.0 und mod_bandwidth für Apache 1.3. Sie können die Bandbreite Ihres Servers drosseln, um die Bandbreitennutzung zu begrenzen.
Es gibt auch mod_limitipconn, das verhindert, dass ein Benutzer viele Verbindungen zu Ihrem Server herstellt. mod_cband ist eine andere Option, aber ich habe sie nie benutzt.
Wenn Sie sich nicht mit Ihrer Apache-Installation anlegen möchten, können Sie einen Squid-Proxy vor Apache platzieren. Es gibt Ihnen mehr Kontrolle auch über die Drosselung.
In den meisten Fällen liegt das Problem jedoch bei einigen großen Objekten, wenn Sie die Bandbreite pro IP begrenzen möchten, und Sie möchten eine vernünftige Fehlermeldung ausgeben, wenn ein Benutzer zu viele Daten abruft und Sie ihn blockieren. In diesem Fall ist es möglicherweise einfacher, ein PHP-Skript zu schreiben und die Zugriffsinformationen in einer temporären Tabelle in einer Datenbank zu speichern.
quelle
Dies ist meine iptables-Lösung für diese Art von Problem. Passen
--seconds
--hitcount
Sie nach Bedarf auch die Tabelle iptables an.Erklärt:
iptables
Überprüfen Sie, ob die Quell-IP in der Datei / proc / net / ipt_recent / ATACK mindestens fünfmal im Abstand von 600 Sekunden aufgeführt ist und ob es sich um eine NEUE Anforderung handelt. Wenn dies der Fall ist, lehnen Sie ab. sonstiptables
Überprüfen Sie, ob die Anforderung an Port 80 gerichtet ist. Wenn ja, drucken Sie die IP und den Zeitstempel in / proc / net / ipt_recent / ATACK und leiten Sie das Paket weiter.Es funktioniert gut für meine Bedürfnisse.
quelle
Haben Sie sich ein Tool wie fail2ban angesehen? Wenn es für Sie etwas schwierig sein könnte, können Sie jedoch die Anzahl der Anforderungen begrenzen, die für eine bestimmte IP zulässig sind. Es funktioniert, indem Sie sich die Protokolle ansehen und Regeln festlegen, wie viele Verstöße pro Zeit zulässig sind. Für Sie sind dies möglicherweise Anforderungen pro Tag. Sobald sie darüber nachdenken, kann es Dinge wie das Blockieren mit IP-Ketten tun.
Ich habe es verwendet, um DDoS-Angriffe gegen einen Mailserver sehr erfolgreich zu blockieren. Es kann jedoch eine erhebliche Menge an Prozessorleistung verbrauchen.
quelle
versuchen Sie es
mod_dosevasive
odermod_security
mod_dosevasive
kann so konfiguriert werden, dass eine IP nach einer bestimmten Anzahl oder Seitenanforderungen an eine Site in einem bestimmten Zeitraum gesperrt wird.quelle