在linux上优雅地使用EasyConnect

1. 导言

一直以来,基于VPN技术的远程连接软件是学校和公司在外工作的常用工具,兼容全平台的EasyConnect在其中发挥了重要作用。然而,越来越多的用户指出其具有较大的安全隐患和隐私泄漏风险,随后一些技术人员提出了自己的解决方法。

首先置顶神作:Github: docker-easyconnect。该开源项目结合docker技术,给出了一种在macOS上安全运行EasyConnect的方法。另外,使用 Docker 封印 EasyConnect一文还较详细地罗列了EasyConnect的安全风险。

M1 Mac 用不了深信服 easyconnet? 用 docker+clash封印它一文指出了EasyConnect在macOS上运行发热的严重问题,使用docker+clash中转流量,实现了局部代理 。

实际上,在linux上也可采用docker方案来安全运行EasyConnect。但对于不想使用docker的朋友(比如我)来说,有没有一种替代方案呢?

2. 问题

参考《使用 Docker 封印 EasyConnect》,我们首先来分析EasyConnect存在的安全问题:

  1. 依赖(macOS)已经废弃的系统特性。由于我使用的是linux系统,所以跳过。
  2. 偷偷安装自己的 CA 根证书。在kde上打开设置-网络设置-SSL首选项中,我并未发现有sangfor等相关机构签发的证书,因此跳过。(更新:后续我在chromium系浏览器的设置中发现了sangfor的证书,遂删除)
  3. 配置开机自动启动的进程。这个就是饱受诟病的问题了,也是造成一些用户电脑发热的元凶。在linux上,EasyMonitor进程注册并启用了一个systemd服务,这使得即便关闭了EasyConnect后该进程仍后台常驻。另有一个捆绑进程ECAgent,当EasyMonitor被关闭时会自动关闭。

分析可知,关键在于禁用EasyMonitor. 然而,EasyMonitor却是运行EasyConnect的必需进程。有报道提到EasyConnect会有连接不稳定、自动断开连接的问题,个人推测EasyMonitor很可能是用来监控连接状态、断开重连的进程。

为了确保在不使用EasyConnect时后台不再运行EasyMonitor,需要时自动加载运行,我们可以用shell脚本简单地做到这一点。

运行EasyConnect时EasyMonitor仍会加载,对于安全要求高的用户,仍建议使用docker封印。

3. 方法

首先默认禁用EasyMonitor.service,防止自启动:

sudo systemctl disenable EasyMonitor.service

在~/bin目录中写一个名为easyconnect的shell脚本:

sudo -k systemctl start EasyMonitor.service
env LD_LIBRARY_PATH=/usr/share/sangfor/EasyConnect/oldlib/pango/usr/lib /usr/share/sangfor/EasyConnect/EasyConnect --enable-transparent-visuals --disable-gpu
sudo -k systemctl stop EasyMonitor.service

第二行是我从EasyConnect.desktop中提取的命令,首行、末行分别开启、关闭EasyMonitor服务。这里调用了sudo命令,因此会提示你输入密码,“-k”的目的在于取消sudo的记忆功能,保证root权限不给第二行的EasyConnect.

如果你不使用命令行,sudo可能无法通过命令行来得到密码。你可以把上文的“sudo -k”替换为“pkexec”,这样可以自动调用系统的验证窗口。

如果你使用howdy(linux 人脸验证软件)并注册了kde pam文件,那么可以在使用systemctl时自动弹出PolicyKit KDE人脸验证窗口。这个窗口的好处是如果人脸验证失败,你还可以使用密码来验证。

PolicyKit KDE 验证程序

添加可执行权限:

chmod +x ~/bin/easyconnect

此外记得把~/bin添加到PATH环境变量中,可参考环境变量 – Arch Linux 中文维基。添加完后用source命令或重启终端生效。

现在你可以在命令行执行easyconnect来使用EasyConnect软件了。你甚至可以更改或新建EasyConnect.desktop文件(记得添加可执行权限),将其中的exc行替换为zsh /home/your_name/bin/easyconnect即可,这样更加贴合桌面使用体验。