Soweit mir bekannt ist, unterstützt das Auth Basic- Modul diese Funktion nicht. Sie können dies jedoch mithilfe von Fail2ban tun .
Beim Testen mit einem nicht vorhandenen Benutzer wird im Fehlerprotokoll Folgendes angezeigt:
2012/08/25 10:07:01 [error] 5866#0: *1 no user/password was provided for basic authentication, client: 127.0.0.1, server: localhost, request: "GET /pma HTTP/1.1", host: "localhost:81"
2012/08/25 10:07:04 [error] 5866#0: *1 user "ajfkla" was not found in "/etc/nginx/htpasswd", client: 127.0.0.1, server: localhost, request: "GET /pma HTTP/1.1", host: "localhost:81"
Dann erstelle den nötigen Filter:
/etc/fail2ban/filter.d/nginx-auth.conf
[Definition]
failregex = no user/password was provided for basic authentication.*client: <HOST>
user .* was not found in.*client: <HOST>
user .* password mismatch.*client: <HOST>
ignoreregex = </host></host></host>
/etc/fail2ban/jail.conf
[nginx-auth]
enabled = true
filter = nginx-auth
action = iptables[name=NoAuthFailures, port=80, protocol=tcp]
logpath = /var/log/nginx*/*error*.log
bantime = 3600 # 1 hour
maxretry = 3
Fail2Ban-Regeln testen:
fail2ban-regex /var/log/nginx/localhost.error_log /etc/fail2ban/filter.d/nginx-auth.conf
Failregex
|- Regular expressions:
| [1] no user/password was provided for basic authentication.*client: <HOST>
| [2] user .* was not found in.*client: <HOST>
| [3] user .* password mismatch.*client: <HOST>
|
`- Number of matches:
[1] 1 match(es)
[2] 2 match(es)
[3] 0 match(es)
Ignoreregex
|- Regular expressions:
|
`- Number of matches:
Summary
=======
Addresses found:
[1]
127.0.0.1 (Sat Aug 25 10:07:01 2012)
[2]
127.0.0.1 (Sat Aug 25 10:07:04 2012)
127.0.0.1 (Sat Aug 25 10:07:07 2012)
[3]
PS: Da Fail2ban Protokolldateien zum Sperren abruft, stellen Sie sicher, dass sie logpath
mit Ihrer Konfiguration übereinstimmen.
bcrypt
ed-Passwörter mit der Basisauthentifizierung von Nginx verwenden könnten , aber anscheinend nicht .Ich glaube nicht, dass Nginx eine interne Einrichtung hat, um dies zu tun. Die Dokumentationsseite schlägt nicht vor, dass dies möglich ist.
Sie können Fail2Ban verwenden, um IP-Adressen zu blockieren, bei denen Anmeldeversuche wiederholt fehlgeschlagen sind.
Das Fail2Ban-Wiki enthält einige Nginx -spezifische Muster .
Fail2Ban sollte in den meisten großen Distributionen als Paket verfügbar sein.
quelle
Das Nginx-HTTP-Auth-Digest- Modul kann das grundlegende Auth-Modul durch viele zusätzliche Funktionen ersetzen. Zusätzliche Dokumentation finden Sie hier
Der einzige Nachteil ist, dass dies wahrscheinlich den Neuaufbau von Nginx erfordert
quelle