Hallo, ich habe ein kleines phpBB Forum welches in letzter Zeit von Gästen überrannt wird. Nun möchte ich einige Länder mittels .htaccess blockieren. Würde dies mit <IfModule mod_maxminddb.c>
funktionieren?
Als Hosting Paket habe ich „max“.
Vielen Dank im Voraus
hi Kirk
also bots hältst Du am besten mit captcha-Tests fern, wobei wir letztens auch durchwegs umfassende Änderungen an unseren Firewalls eingeführt haben, um regelrecht Millionen von bots tagtäglich fernzuhalten.
Dazu wird demnächst womöglich in unserem Blog was dazu getextet, aktuell ist das noch in der Erprobungsphase, aber dennoch sehr vielversprechend.
maxmind stellen wir aktuell eher absichtlich nicht zur Verfügung, da diese Datenbank noch zusätzlich an Lizenregelungen gebunden ist (wenn auch für die meisten irrelevant, aber auch unentgeltlich), da die Rate an Falscherkennungen nicht unbedingt gering ist.
Denn IP-Adressen-Bereiche unterligen einem Handel zwischen vielen/größeren Anbietern, sodass da nicht unbedingt der Anbieter bzw. das Land dahinter stecken muss, bei dem die Adresse auch tatsächlich gerade als Inhaber/Land gelistet ist.
Es gäbe damit zwar Möglichkeiten, das manuell einzubinden - aber das bedingt dann auch, dass tatsächlich jedes Datenpaket geprüft wird und mit Risiko der Falscherkennung entweder durchgelassen, oder aber auch verworfen wird.
Ich würde das aktuell lieber unserer Firewall überlassen, damit haben wir aktuell tatsächlich 1/3 weniger an Datenverkehr, was schon mal großartig ist und damit auch mehr Zeit und Ressourcen für echte Besucher bleiben.
Übrigens: bots sitzen überall, auch im DACH-Raum, da ist daher evtl. die Erkennung von gezielt als schädlich/botnetzwerk gemeldeten IP-Adressen und Adressbereichen sinnvoller, das machen wir aber eben schon auf höherer Ebene, noch bevor es zum Webserver überhaupt gelangt ist
Hallo miro, erstmal Danke für deine Antwort. Manche Bots konnte ich in der .htaccess blockieren. Wenn ich mir die online Liste anschaue konnte man bei manchen über die User Agent herausfinden ob es sich um ein Bot handelt. Die meisten Gäste kommen aus Vietnam, Japan usw. daher mein Gedanke diese Länder zu sperren. Hatte auch schon den Gedanken Cloudflare zu benutzen aber ich darüber hier gelesen das dies nicht funktioniert. Ich könnte zwar in mein Forum es so einstellen das Gäste nichts lesen können aber das wäre der letzte Ausweg. Ich wart mal bis ihr in euren Blog was dazu geschrieben hat.
also die Blockaden unsererseits sind schon wirksam und verringern wie erwähnt, den Datenverkehr locker um ein Drittel, wenn nicht mehr.
So sonst so Kram wie Cloudflare ist das (aller)letzte was ich empfehlen würde
Alternativ besteht sonst die Möglichkeit, die maxmind-Datenbank direkt in PHP zu nutzen, mit den erwähnten Nachteilen, etwa mit
<?php
require_once 'vendor/autoload.php';
use GeoIp2\Database\Reader;
// Pfad zur lokal gespeicherten MaxMind-Datenbank
$reader = new Reader('/pfad/zur/GeoLite2-Country.mmdb');
// Beispiel: IP-Adresse des Besuchers abrufen
$userIP = $_SERVER['REMOTE_ADDR'];
try {
$record = $reader->country($userIP);
$countryCode = $record->country->isoCode;
// Liste der ausgeschlossenen Länder
$blockedCountries = ['VN', 'JP']; // Vietnam & Japan
if (in_array($countryCode, $blockedCountries)) {
// Zugriff verweigern
header('HTTP/1.0 403 Forbidden');
echo "Zugriff aus deinem Land ist leider nicht erlaubt.";
exit;
}
} catch (Exception $e) {
// Bei Fehlern z.B. lokale IP oder Datenbankproblem
error_log("GeoIP Fehler: " . $e->getMessage());
// Optional: Zugriff gewähren oder blockieren
}
Die länderbezogene DB ist übrigens zu finden unter https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-Country.mmdb
Danke für den Code miro, werd ich auf jeden Fall testen. Was Cloudflare angeht, dazu kann ich nicht viel sagen nur das diejenigen welche es verwenden zufrieden sind.
Leider funktioniert dies nicht. Ich hatte in meinem Testboard diesen PHP Code als geoip.php gespeichert, den Pfad entsprechend angepasst. Diese ´Datei habe ich dann mit der länderbezogene DB in meinen Forenroot hochgeladen und diese PHP Datei in der index.php (welche sich im selbigen Vz. befindet) per include eingebunden. Folgende Fehlermeldung erschien dann:
Fatal error: Uncaught Error: Class "GeoIp2\Database\Reader" not found in geoip.php:8 Stack trace: #0 index.php(25): include() #1 {main} thrown in geoip.php on line 8
Das wird da am sog. namespace liegen, schreib uns doch bitte einfach unter
https://my.bplaced.net/support
mit einem möglichst vorliegendem Beispiel (daher ggf. einfach auskommentieren statt weglöschen) und wir regeln das