书接上文,因为我图个方便,将Transmission的前端Web面板放在了公网通过域名访问。
但是很奇怪的问题来了,在我使用了3.0版本的Transmission后,前端面板经常性403: Forbidden-Too many unsuccessful login attempts. Please restart transmission-daemon.
在翻阅了Transmission3.0的更新日志后发现作者在3.0中加入了RPC登录尝试次数上限的设定,但默认的次数为100次,一般来说是不会被触发的。后来通过查阅Nginx的响应日志后发现是公网里横行的网站目录扫描器造成的大量认证失败。
那么知道问题所在解决起来就很容易了,Nginx本身是带有个auth_basic
参数的,通过设定此参数即可在Nginx层面上增加一层认证,这层认证可以防止扫描器造成的大量认证失败。
首先通过openssl对密码进行加密
cd /etc/nginx/conf.d
指定用户名
echo -n "test:" > passwd
指定密码
openssl passwd abc123456 >> passwd
然后在Nginx配置文件的server段增加两行设置
auth_basic "请进行登录认证"; ##输入用户名密码提示框
auth_basic_user_file /etc/nginx/conf.d/passwd; ##配置用户名密码验证文件路径
auth_basic
的用户名与密码和RPC用户名密码一致,这样可以只用Nginx的一次认证即可登录。2022/11/2补充
目前的主线(Master)的稳定预览版本已包含此修正(4.0.0-beta),作者已提供了编译后的安装文件以供直接安装
2022/3/18补充
作者似乎已在2020年11月15日的主线合并中增加了两个设置项以修复此问题,根据commit cfce6e2
所增加的代码内容,现在可以尝试在setting.json中添加以下配置:
如果想要包含此修正的版本,请手动从源码编译master版本
{
"anti-brute-force-threshold":100,
"anti-brute-force-enabled":true,
}
anti-brute-force-threshold
为登录失败次数,默认值为100,可以修改为其他数值。anti-brute-force-enabled
为是否开启暴力破解防护,默认值为开启true
,将值设置为false
来关闭。
2021/8/31补充
看起来这是个历史遗留性问题,设计并提交这个功能的人是在2017年提交的PR,而后面有另一位提出增加设置项的开发者与Transmission主开发者意见不合导致RPC登录限制功能目前是被主开发者写死在Transmission的底层的,无法通过setting.json
进行修改。
此问题现在是处于被搁置的状态,主开发者究竟什么时候才会补全功能我就不得而知了。
可参考的PR及issue记录
- configure anti brute force by Chrool · Pull Request #1447 · transmission/transmission (github.com)
- Add Configurable brute force options · Issue #1415 · transmission/transmission (github.com)
- 403: Too many unsuccessful login attempts. Please restart transmission-daemon. · Issue #1762 · transmission/transmission (github.com)
- anti-brute force for RPC Server by bobbyhopere · Pull Request #371 · transmission/transmission (github.com)
- 最新
- 最热
只看作者