重复一下标题:
“跳过身份验证功能”指的是这两个选项:

- 勾选 对本地主机上的客户端跳过身份验证 选项,允许本机(localhost/127.0.0.1)访问 WebUI 时,跳过用户名和密码验证;
- 勾选 对 IP 子网白名单中的客户端跳过身份验证 选项,允许白名单列表中的 IP 或 IP 段设备访问 WebUI 时不进行用户名和密码验证,一般可能会填写一些局域网 IP。
看似是两个方便的功能,但是两个功能可能会让你的 qBittorrent WebUI 在互联网上**“裸奔”**。
也就是互联网任何人都可以“畅通无阻”地访问你的 WebUI,无需用户名和密码认证。意味着任何人都能添加、删除、修改你的种子,而且能直接看到你的 tracker 链接里的 Passkey。
有可能还会更严重,WebUI 页面可能会被搜索引擎收录!这样就会直接在搜索结果中暴露你的 IP。如果“恰好”你还有其他内网服务使用了一些只能起到造型上的作用的形同虚设的弱密码,甚至根本没有登录认证。那这些服务无一例外的“裸奔”。
为什么?
如果你开启了 WebUI 的跳过身份验证功能,并且使用了这些方法做“内网穿透”:
- 公网 IPv4/单播 IPv6 + 端口转发(端口映射);
- DDNS(公网 IPv4/单播 IPv6) + 端口转发,和直接用 IP 区别不大,通常使用不同端口区别不同的局域网服务;
- DDNS + 反向代理,通常会用于同二级域名访问不同的局域网服务;
- Cloudflare Tunnel,相当于 Cloudflare 提供了用于转发的公网服务器;
- FRP/NPS等反向代理工具,内网的客户端与外网的服务端建立一个持久的连接(隧道)实现内网穿透;
- 其他工作过程类似反向代理的内网穿透方法。
这些方法用到的工具,几乎都是扮演了反向代理服务器的角色,将互联网客户端的请求转发到提供服务的局域网服务端。这个转发过程很有可能会导致请求的源 IP 地址变成来自本地(localhost/127.0.0.1)、来自 docker 的默认网桥 docker0、或者来自于属于白名单的某个局域网 IP。
从局域网服务(qBittorrent WebUI)的角度来看,经过反向代理服务器的请求通常是来自于这些应当跳过验证的 IP。嗯,然后就“畅通无阻”了。

以上列出的内网穿透方法是我根据随便访问到的几个“点击就送”的 WebUI 的设置做出的不严谨的推测。
反向代理工具(如 Nginx)、FRP、NPS 及 Cloudflare Tunnel 都可以通过额外的设置,向被代理的服务端传递真实的客户端 IP,但我个人认为这不是解决问题的最佳办法。也没有测试这样做是否真的有效。
1. 为什么主动暴露 IP 是一件很糟糕的事?
主动暴露的 IP 更容易受到攻击,如 DDoS 攻击、端口扫描或漏洞利用。
公网 IP 地址无时无刻都在被来自全球各地的自动化攻击工具探测 IP 可用性以及开放的端口,如果有云服务器可以看一下 ssh 登录失败的记录,不出意外的话会看到大量尝试使用root
、admin
、test
等用户名登录的记录。IPv6 缓解了这个问题,因为 IPv6 有庞大的地址空间,很难被全面扫描。
主动暴露 IP 直接省去了攻击者扫描可用 IP 的步骤,IPv6 带来的优势也直接不存在了。改成不常用的端口只能挡住自动化工具,但是挡不住专门针对你这个 IP 的端口扫描。确定了一个 IP 是存在服务的,大不了逐个扫遍所有可用的端口。
另外,暴露 IP 还会造成隐私泄漏,一些免费的公开的 IP 数据库可以精确追踪 IP 地址到区县级精度。
2. 可是 PT 下载本来就会暴露 IP
是的,活动的 PT 种子在用户页面看到的 peer 都是公网 IP,确实会暴露 IP 地址。只能通过设置防火墙,只开放 PT 的端口,不开放其他内网服务,使用强密码等方法来防范攻击。
但是,暴露给其他 PT 用户总是好过于在搜索引擎中暴露给所有人。直接使用公网 IPv4 地址的 Web 服务(不论是不是用了 80/443 端口)很有可能被搜索引擎收录;IPv6 地址的 Web 服务倒是没见过,是否会收录我没有查证;但如果解析了域名,不论是 IPv4 还是 IPv6,都更容易被搜索引擎收录。
怎么办
最直接解决这个问题的办法,关闭 WebUI 中这两个跳过身份认证的选项,WebUI 认证使用复杂的用户名和强密码。使用 WireGuard 这类虚拟专用网络隧道(Virtual Private Network)工具做异地(外网)访问。
更进一步,不要将任何局域网内的个人服务映射到互联网上。FRP、NPS 和 Cloudflare Tunnel 这类内网穿透工具,原本的目的是将处于 NAT 后(如家庭网络)的内网服务映射到互联网上,供任何人访问。
但是,个人的服务本就不应该被任何人访问。即便可能还有一层服务自身提供的登录认证,也不应当暴露在互联网中,这些服务可能因更新不及时存在已知漏洞或者存在 0day 漏洞被攻击者利用。
使用强密码会好些吗?会,但仍然不推荐,借用 B 站 up @AlphaArea_的话:
即便设置了强密码,也不能把带锁的卫生间门当防盗门用。
此外,将家庭宽带中的内网服务映射至互联网提供 Web 服务,可能会有法律风险(引自阿里云文档):
根据《互联网信息服务管理办法》以及《非经营性互联网信息服务备案管理办法》,国家对非经营性互联网信息服务实行备案制度,对经营性互联网信息服务实行许可制度。未取得许可或者未履行互联网内容提供商 ICP(Internet Content Provider)备案手续的,不得从事互联网信息服务。
解析至中国内地服务器的网站、App 等服务,必须完成 ICP 备案才可对外提供服务。