Я пытаюсь защитить свою администраторскую и пользовательскую страницу входа в систему от атак перебором. У меня есть установка iptables и самая близкая вещь, которую я могу найти, какие полезные взгляды это:
файл тюрьмы:
[nginx-login]
enabled = true
filter = nginx-login
action = iptables-multiport[name=NoLoginFailures, port="http,https"]
logpath = /var/log/nginx*/*access*.log
bantime = 600 # 10 minutes
maxretry = 6
/etc/fail2ban/filter.d/nginx-login.conf
# Blocks IPs that fail to authenticate using web application's log in page.
# Scan access log for HTTP 200 + POST /sessions => failed log in.
[Definition]
failregex = ^<HOST> -.*POST /sessions HTTP/1\.." 200
ignoreregex =
Я, может казаться, не понимаю то, что это делает в этом отношении. В первую очередь, результат 200 средств, что вход в систему был успешен, таким образом, я не вижу, как он обнаружит недопустимые логины.
Кто-либо может объяснить, что делает этот код и почему он мог бы использоваться для остановки логинов грубой силы?
Похоже, я не могу понять, что он делает в этом отношении. Во-первых, результат 200 означает, что вход был успешным,
Нет, это просто код HTTP-статуса для OK
. Таким образом, сервер не сталкивался с проблемами на протокольном уровне, а также не имел серьезных проблем с запущенным на сервере приложением (4xx и 5xx). Это только означает, что будет обслужена страница.
так что я не вижу, как она будет обнаруживать недействительные логины
Это не так. Он только подсчитывает, как часто IP-адрес вызывал URL /сессия
через POST (отправил HTML-форму).
failregex = ^<HOST> -.*POST /sessions HTTP/1\.." 200
После 6-ти вхождений этой строки в лог (таким образом, пользователь отправил форму 6 раз), пользователь получает блокировку.
maxretry = 6
Время блокировки - bantime
, а время fail2ban выглядит в обратном направлении - findtime
. Оба значения по умолчанию равны 600 секундам, т.е. 5 минутам.
Для запрета только неудачных входов, их нужно регистрировать со своего приложения, так как веб-сервер сейчас не регистрирует, если вход (который обрабатывается веб-приложением) завершился неудачно или успешно.
.