【已解答】fail2ban问题反馈
面板版本:宝塔linux面板 7.4.2系统版本:CentOS7.8.2003(Py3.7.4)
浏览器版本:Google Chrome 84
问题现象:经测试,fail2ban无法处理 http/2.0协议 的访问请求。没有权限提交带url的内容
重现方式:
网站开启http2后,curl测试访问,如:
curl -I 网址
服务器日志如下:
39.155.215.86 - - "HEAD / HTTP/2.0" 200 0 "-" "curl/7.70.0"
此时查看fail2ban,无日志记录。
而且ip被ban之后,此IP无法访问服务器上的所有站点了 新逸Cary 发表于 2020-7-27 16:53
而且ip被ban之后,此IP无法访问服务器上的所有站点了
这个banip相当于在服务器网络层的作用,加到黑名单后,就是该服务器上的所有站点都无法访问,直接从网络层杜绝 你第一个问题应该是curl无法处理http2协议的请求,fail2ban仅仅处理网络层,对http协议只从网站日志中取值分析哪些符合阈值的ip,然后ban掉
大炮运维V587 发表于 2020-7-27 17:38
你第一个问题应该是curl无法处理http2协议的请求,fail2ban仅仅处理网络层,对http协议只从网站日志中取值 ...
用浏览器访问是同样的效果,协议显示为 h2时,fail2ban没有日志,但nginx会有日志;而访问的网址为htttp/1.1协议时,nginx和fail2ban都会有日志 大炮运维V587 发表于 2020-7-27 17:38
你第一个问题应该是curl无法处理http2协议的请求,fail2ban仅仅处理网络层,对http协议只从网站日志中取值 ...
另外,您说的这个“curl无法处理http2协议的请求”,我试了,curl增加参数 --http2 时,fail2ban是没有日志的,但请求正常。使用参数--http1.1 和 --http1.0 时,nginx和fail2ban都有日志。 大炮运维V587 发表于 2020-7-27 17:38
你第一个问题应该是curl无法处理http2协议的请求,fail2ban仅仅处理网络层,对http协议只从网站日志中取值 ...
找到了fail2ban的源码,fail2ban_main.py,有这样一段:
if values["regex"] == "scan":
regex = "failregex = <HOST> -.* {}.* HTTP/1\..".format(values["dir"])
elif values["regex"] == "cc":
regex = "failregex = <HOST> -.*- .*HTTP/1.* .* .*$"
else:
regex = values["regex"]
可以看到插件里只匹配了http1.x的协议请求
新逸Cary 发表于 2020-7-29 12:04
找到了fail2ban的源码,fail2ban_main.py,有这样一段:
已反馈给程序员
页:
[1]