devome / dockerfiles

一些Dockerfile
https://evine.win
GNU General Public License v3.0
194 stars 23 forks source link

对本地主机上的客户端跳过身份验证/"WebUI\LocalHostAuth" #101

Closed Llllwood closed 10 months ago

Llllwood commented 10 months ago

当前程序版本 4.5.5

问题类型 安全隐患,功能开关问题

问题描述 容器重启后,WebUI界面此开关后会变成勾选状态 screenshot20230905 即使在停止容器情况下将qBittorrent.conf文件85行 修改为[WebUI\LocalHostAuth=true],而启动容器后程序会重写该为[WebUI\LocalHostAuth=false] screenshot202309052002

手动在UI去掉勾选,可以维持在容器停止以前。但,假如容器设置为"--restart always",而在人员不知的某时候容器自动重启,这有可能导致开启反代而反代目的地为127.0.0.1时,外网无需验证直接登陆

有对比过linuxserver/qbittorrent这个镜像,这个镜像是能正常开关的 发生问题时系统日志和配置文件 _qb-nevinee-1_logs.txt

Llllwood commented 10 months ago

这个问题不是4.5.5新发现的,4.5.2也有,nevinee/qbittorrent我就用过两个版本,其他版本是否也有这问题有待了解

devome commented 10 months ago

脚本需要使用qb的api,因为没有为脚本提供qb的账号和密码,所以要允许本地匿名登陆。

有两个解决办法:一是维持现状,但代理在代理qb时使用qb的局域网ip不使用127.0.0.1(我可以在教程中加入安全提醒);二是创建容器时要通过环境变量传入登陆qb和用户名和密码,且不允许创建后再通过webui修改。

你认为哪种方式更好?

Llllwood commented 10 months ago

脚本需要使用qb的api,因为没有为脚本提供qb的账号和密码,所以要允许本地匿名登陆。

有两个解决办法:一是维持现状,但代理在代理qb时使用qb的局域网ip不使用127.0.0.1(我可以在教程中加入安全提醒);二是创建容器时要通过环境变量传入登陆qb和用户名和密码,且不允许创建后再通过webui修改。

你认为哪种方式更好?

我认为第二种方式可能比较好。第一种是有可能你加了安全提醒,但是有人并不一定会看。而第二种方式,在没有默认账户密码的情况下创建账户密码这是相当好的一个变量改变,公网上很多默认账户密码就能登陆的qb。

devome commented 10 months ago

其实第二种方法还有个隐含条件,依赖包必须增加python,会增加镜像大小,不过这倒也不算是大问题。

devome commented 10 months ago

因为使用镜像已有的openssl无法计算出pbkdf2加密密码后的字符串,只能依赖python包的模块来计算出。

devome commented 10 months ago

已更新:https://github.com/devome/dockerfiles/commit/3146ce04dca63072b8daa3a204089348dc794dfb ,镜像已同步更新。

Llllwood commented 10 months ago

已安装可行,作者神速,点赞

cng10001 commented 9 months ago

再问下4.5.5以下版本Python qb name qb password这些变量都没用的吧? 如果反代的话,只能在反代设置里不要用127.0.0.1,localhost这些吧?

devome commented 9 months ago

再问下4.5.5以下版本Python qb name qb password这些变量都没用的吧? 如果反代的话,只能在反代设置里不要用127.0.0.1,localhost这些吧?

详见教程中的环境变量清单