不能理解这个例子fail2ban规则

我试图确保我的pipe理员和用户login页面免受暴力攻击。 我已经安装了iptables和我能find的最接近的东西是这样的:

监狱档案:

[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意味着login成功,所以我不能看到它将如何检测无效login。

任何人都可以解释这个代码正在做什么,以及为什么它可能会被用来停止蛮力login请?

我似乎无法理解这方面正在做什么。 首先,结果是200表示login成功,

不,这只是OK的HTTP状态码。 所以服务器在协议层没有遇到任何问题,也没有在服务器上运行任何严重的问题(4xx和5xx)。 这只意味着,一个页面将被送达。

所以我不能看到它将如何检测无效的login

它不。 它只计算一次IP通过POST(提交一个HTML格式)调用URL /session频率。

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

在日志中出现6行(因此用户提交表单6次)之后,用户被阻止。

 maxretry = 6 

阻塞的时间是bantime ,fail2ban的时间倒退是findtime 。 这两个值默认是600秒,所以5分钟。

要仅禁止login失败,您必须从您的应用程序login它们,因为如果login(由Web应用程序处理)失败或成功,则Web服务器现在不会login。