Назад | Перейти на главную страницу

Не могу понять этот пример правила fail2ban

Я пытаюсь защитить свою страницу входа администратора и пользователя от атак грубой силы. У меня есть настройки 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-адресом. /session через POST (отправили HTML-форму).

failregex = ^<HOST> -.*POST /sessions HTTP/1\.." 200

После 6 вхождений этой строки в журнал (таким образом, пользователь отправил форму 6 раз) пользователь блокируется.

maxretry = 6

Время блокировки bantime и время, когда fail2ban оглядывается назад, findtime. Оба значения по умолчанию равны 600 секундам, то есть 5 минут.

Чтобы запретить только неудачные входы в систему, вы должны регистрировать их из своего приложения, поскольку веб-сервер теперь не делает этого, если вход в систему (который обрабатывается веб-приложением) не удался или завершился успешно.