bjdgyc / anylink

AnyLink是一个企业级远程办公 ssl vpn 软件,可以支持多人同时在线使用。基于 openconnect 协议开发,并且借鉴了 ocserv 的开发思路,可以完全兼容 AnyConnect 客户端。
GNU Affero General Public License v3.0
1.56k stars 375 forks source link

是否考虑增加无客户端模式 #149

Open silenceroom opened 1 year ago

silenceroom commented 1 year ago

目前好像没有看到有开源的工具在这块发力,是否考虑支持呢?

bjdgyc commented 1 year ago

无客户端模式,具体指什么模式

itviewer commented 1 year ago

估计是说所谓的不需要安装客户端,用户直接浏览器登陆使用VPN?每次见到这种需求忍不住想骂人的冲动!

silenceroom commented 1 year ago

具体原因是?无客户端模式现在主流系统上确实都在陆续提供啊?

itviewer commented 1 year ago

浏览器是个沙箱,浏览器里的网页和代码只能在浏览器运行,受到严格限制,跑不到浏览器外面去。最多能保存和读取电脑其它地方的文件,操作不了电脑上其它程序。 使用sslvpn,不在电脑上安装软件并获得管理员权限,是不可能修改操作系统路由表的,不修改路由表或对操作系统网络栈进行注入,电脑上的其它软件发送的数据是不可能被拦截,然后转发到VPN服务器的。 所谓的浏览器登陆,有两种情况 第一种,你用的电脑不是你的,别人已经装过客户端,而你不知道。但是商家产品提供通过浏览器调用本地客户端的功能,浏览器输入密码,传给电脑上的客户端登陆,这个很容易做到。我了解的深信服有这个功能。 第二种,用浏览器网页模拟客户端软件,比如模拟个ssh终端,通过服务器中转登陆代理,访问内网服务器。不管你网页能模拟啥功能,模拟多少功能,始终无法操作电脑上的软件,始终无法让电脑上的软件走VPN。这种产品只能满足很简单的使用场景,算不上刚需,只能是锦上添花或者产品宣传的噱头。总之,就是你电脑上的任何软件没法使用VPN服务。

silenceroom commented 1 year ago

谢谢详细的解答。 我想我大概明白分歧在哪里了。

我假设的场景其实就是想要提供基于浏览器的入口,向用户提供访问内部系统应用,从而避免将业务直接暴露给公网。 只需要在B/S端能访问内网上架设的网站即可,并不需要将本地的软件也连到VPN上。

比如目前国内各大高校(几乎)都在使用的瑞智康诚和网瑞达,他们提供的这种服务(称之为WebVPN),主要解决的就是向用户提供访问内网资源的同时又不直接将相关系统暴露在公网。 同时应该还可以帮助企业用户在等保上规避一些合规风险。

itviewer commented 1 year ago

重新思考了下,目前已有的用户分组功能和权限控制已经可以避免不想让某个组的用户访问的功能暴露给该组用户,只是需要管理员设置好,设置不好的话可能有些信息暴露风险。专业的后台权限配置,可能不如直接限制一些用户不能用客户端登陆,只能通过网页应用更易操作和傻瓜式。 综合类似仅web资源访问这种简单业务场景,尽可能少的专业配置来避免尽可能的资源暴露,不用客户端登陆这个需求还是不错的!

bjdgyc commented 1 year ago

@silenceroom 瑞智康诚和网瑞达的WebVPN,这种之前研究过,是基于浏览器的代理,有很多的硬编码,如果换个网站,可能就得重新编写一套规则,普适性不强。基于反向代理的零信任模式,还是可以的!

itviewer commented 1 year ago

。基于反向代理的零信任模式,还是可以的!

反向代理难道不是传统的代理服务器?难道不需要用户侧自己修改浏览器或操作系统代理配置?

bjdgyc commented 1 year ago

一般使用泛域名的方式,需要改动,改动相对会少一些,实现起来比较简单,生态成熟。 当然这些都跟vpn无关了,只是用户需要,有需求就有市场!

itviewer commented 1 year ago

浏览器使用反向代理服务需要用户配置,感觉还不如教育用户安装客户端软件,使用vpn简单粗暴!或者评价下 https://github.com/bjdgyc/anylink/issues/157 思路

silenceroom commented 1 year ago

@silenceroom 瑞智康诚和网瑞达的WebVPN,这种之前研究过,是基于浏览器的代理,有很多的硬编码,如果换个网站,可能就得重新编写一套规则,普适性不强。基于反向代理的零信任模式,还是可以的!

谢谢回复。是的,我也研究了下,据说是要根据实际要发布的应用来测试和编写规则。可能普适性不是太好。

另外看到Azure上有提供一种AAD Applicaiton Proxy的服务,方法是在本地建立connector,用户访问建立在azure上的入口后将流量转发到本地的connector后再转发给实际的应用来最终实现:

  1. 直接使用Azure AD来认证。
  2. 内部业务避免对公网开放。
  3. 如果是需要无认证的(比如有api服务的)可以通过白名单的方式passthrough来传递。

不过向bjdygc所说,这大概不是VPN的思路了?

yzazzx2021 commented 1 year ago

无客户端模式确实蛮好的,至少去网吧回内网,就可以不用使用TAP了,网吧的环境一旦启用TAP,顺网客户端会直接掉线黑掉,就很难受。不管是哪种VPN,只要有客户端的无一例外都会卡掉顺网客户端。