Ich muss fail2ban implementieren, um einen Server zu sichern. Ich möchte die Protokolle scannen und Hosts sperren, die viele 404-Meldungen generieren.
Mein Problem ist, dass sich hinter einer bestimmten NAT-IP mehrere Clients befinden können und ich diese unterscheiden muss. Jeder Client fordert eine andere URL im folgenden Format an:
https://server.example.com/path/<uniqueid>/<mac_address>
Ich möchte fail2ban so ausführen, dass es die eindeutige ID im regulären Ausdruck berücksichtigt, anstatt nur die Anzahl der 404-Fehler pro IP zu betrachten.
Ich habe den folgenden regulären Ausdruck entwickelt, der die benötigten Ereignisse abzufangen scheint:
(?P<host>(\d{1,3}.){4})\ -\ -\ \[\d{1,2}\/\w+\/\d{4}[\:\d{2}]+\ \+\d{4}\] "GET \/path\/(?P<unique_id>.+)\/.+HTTP\/\d.\d" ".+" ".+" 404.+
Dies sollte übereinstimmen mit:
1.1.1.11 - - [29/Aug/2018:01:27:45 +0100] "GET /path/3B44444444483/ddddee37D4.cfg HTTP/1.1" "somestring" "otherstring" 404 - 2005 5 0.117
Und dies sollte übereinstimmen, aber als eine andere Instanz als das Obige betrachtet werden:
1.1.1.11 - - [29/Aug/2018:01:27:45 +0100] "GET /path/3B46666444483/ddddee37D4.cfg HTTP/1.1" "somestring" "otherstring" 404 - 2005 5 0.117
Antwort1
Mit dieser Konfiguration verbraucht Ihr Server mehr CPU-Leistung bei der Suche nach 404-Antworten in Protokollen als es einen Sicherheits- oder CPU-Vorteil bringt, wenn für X IP keine 404-Antworten bereitgestellt werden.
Wenn Sie diese Antworten nicht sehen möchten, erstellen Sie keine Protokolleinträge dafür.