Repository navigation
[Feature] 增加 TUN 服务安装模式,避免 GUI 以管理员权限常驻 #10418
Replies: 6 comments
|
这是一个很好的建议,不过优先级可能不高。我在安装 MySQL 的时候就发现,它在服务里面注册了一个服务,服务使用的是一个单独的账号,这样就把权限给隔离开了。但是不知道Linux下是怎么去实现的,可能要单独创建一个用户。 |
|
连ChatGPT都不需要开启全局代理了,因此tun模式这几个月几乎都没用过。 |
|
感谢回复,理解优先级。补充两点实现细节,供以后排期时参考。 1. Windows 下不需要新建本地用户SCM 支持虚拟服务账户:注册服务时把账户写成 关键是:TUN 设备创建/路由修改本身需要管理员能力,所以服务账户不可能真正“低权”;能做的是:
这样高权限只存在于一个小服务里,而不是整个 GUI。 2. Linux 侧也不用 root 全权systemd 可以用: [Service]
DynamicUser=yes
AmbientCapabilities=CAP_NET_ADMIN或专用用户 + 3. 关于“TUN 用得少”理解,功能优先级可以低。但服务模式解决的不只是 TUN 便利性:
即使短期不做,建议先做一个低成本缓解:
如果以后排期,我可以按上面的最小接口写一版设计草案(服务端接口、IPC 鉴权、安装/卸载流程)。 |
|
此问题讨论过多次了,我们目前的方式已经是从安全性和便利性的妥协方案了。 |
|
我们技术水平一般,无法把控服务模式产生的安全漏洞。 |
|
理解,也尊重“便携 + 不引入难以把控的服务”这个取舍。下面不是要求改架构,只是把三件事说清楚,供以后参考。 1. 严重程度:不是“TUN 好不好用”,而是“GUI 是否整体提权”现在 TUN 需要管理员 ⇒ 整个 GUI 以管理员运行 ⇒ GUI、渲染层、配置解析、订阅处理,任意一处被利用,拿到的都是管理员权限。 这在评分上是影响域的变化( 2. 服务模式其实更方便(但不回避便携冲突)
但“便携”确实是冲突点:注册服务要写系统、要安装,这与“绿色便携”的定位不一致。 3. 如果不想做服务,有一个“便携友好”的替代:按需 helper不是常驻服务,而是按需启动的特权 helper 进程:
这仍然比“整个 GUI 管理员常驻”的攻击面小得多,也不需要维护一个常驻服务;代价只是每次开 TUN 时一次 UAC。 4. 最低成本:不做 helper,也建议做提示
5. 如果这些都不做希望至少记录为“已知风险、维护者接受”。 我们会在审计报告里如实写:该风险已被提出,维护者基于便携性与服务复杂度的取舍选择接受——不夸大,也不隐瞒。 |
Uh oh!
There was an error while loading. Please reload this page.
背景
目前使用 TUN 模式时,v2rayN 需要以管理员权限运行整个 GUI。这带来两个问题:
建议:TUN 服务安装模式(可选)
参考服务化方案,把“需要特权的动作”收进一个独立服务,GUI 保持普通用户:
期望效果
需要注意
参考
Clash Verge 的服务模式(
clash-verge-service)是同类思路:GUI 普通权限运行,特权操作交给服务。All reactions