CheckPoint 用于设置 SSL Network Extender VPN 的官方 Checkpoint 命令行工具不再在 Linux 命令行中运行。 CheckPoint 也不再积极支持它。
然而,有一个很有前途的项目,它试图复制 Java 小程序进行身份验证,并与snx
命令行实用程序进行对话,称为snxconnect
.
我试图snxconnect
在 Debian Buster 中使用文本实用程序,执行以下操作:
sudo pip install snxvpn
和
export PYTHONHTTPSVERIFY=0
snxconnect -H checkpoint.hostname -U USER
然而,它大多因以下 HTTP 错误而崩溃:
HTTP/1.1 301 Moved Permanently:
或者:
Got HTTP response: HTTP/1.1 302 Found
或者:
Unexpected response, try again.
该怎么办?
附言。 EndPoint Security VPN 官方客户端在 Mac High Sierra 和 Windows 10 Pro 中运行良好。
答案1
SNX 从 2012 年开始构建 800007075,用于通过 Linux 命令行支持 CheckPoint VPN。所以我测试了它,你瞧,它仍然适用于最新的发行版和内核 4.x/5.x。
所以最终,如果您无法获得 SNX build 800007075,我在该线程中的另一个答案是正确的或者如果该特定版本的 SNX 停止与当前 Linux 版本一起工作(这可能会在不久的将来发生)或者如果您需要 OTP 支持。
目前,解决方案是安装 SNX 的最新版本仍然支持从命令行执行 VPN。
- 要安装
snx
内部版本 800007075,请从以下位置获取:
wget https://starkers.keybase.pub/snx_install_linux30.sh?dl=1 -O snx_install.sh
对于 Debian 和基于 Debian 的 64 位系统(例如 Ubuntu 和 Linux Mint),您可能需要添加 32 位架构:
sudo dpkg --add-architecture i386
sudo apt-get update
我必须安装以下 32 位软件包:
sudo apt-get install libstdc++5:i386 libx11-6:i386 libpam0g:i386
然后运行snx
安装脚本:
chmod a+rx snx_install.sh
sudo ./snx_install.sh`
您现在将拥有一个/usr/bin/snx
32 位客户端二进制可执行文件。检查是否缺少任何动态库:
sudo ldd /usr/bin/snx
只有满足所有依赖关系后,您才能继续执行以下操作。
在编写任何自动使用脚本之前,您可能需要先手动运行snx -s CheckpointURLFQDN -u USER
,以便将签名 VPN 保存在/etc/snx/USER.db
。
在使用它之前,您需要创建一个
~/.snxrc file, using your regular user (not root)
包含以下内容的文件:server IP_address_of_your_VPN username YOUR_USER reauth yes
要连接,请键入
snx
$ snx Check Point 的 Linux SNX build 800007075 请输入您的密码:
SNX——已连接。
会话参数:
办公模式 IP : 10.xxx DNS 服务器 : 10.xxx 辅助 DNS 服务器 : 10.xxx DNS 后缀 : xxx.xx, xxx.xx 超时 : 24 小时
如果您了解在脚本中硬编码 VPN 密码的安全风险,您还可以将其用作:
echo 'Password' | snx
- 要关闭/断开 VPN,虽然您可以 stop/kill
snx
,但更好且官方的方法是发出命令:
$snx -d
SNX - Disconnecting...
done.
也可以看看Linux Checkpoint SNX 工具配置问题有关snx
使用哪个版本的一些说明。
如果自动登录并接受新签名(并了解安全隐患),我编写了一个
expect
脚本,我将其称为脚本snx_login.exp
;不是很安全,但是您可以自动登录,使用密码作为参数调用它:#!/usr/bin/expect 生成 /usr/bin/snx
设置密码 [lindex $argv 0]
预计 ”?密码:" 发送 -- "$密码\r"
期望{“o:”{发送“y\r”exp_continue}eof}
附言。请注意,snx
它不支持单独的 OTP,如果使用它,您将必须使用snxconnect
其他答案中存在的脚本。
PPS @gibies 引起我的注意,使用 etoken,密码字段获取密码加上附加的 etoken,而不是固定密码。
答案2
在问题中安装 Firefox 官方 SSL VPN Extender 界面时Firefox 中的 VPN SSL 网络扩展器,我发现并解决了这个问题的更多谜题。
显然,虽然来自检查点的命令行使用snx
已停止,但链接帖子中描述的基于 Web 的客户端仍然有效。然而,有一个 python 命令行客户端,它尝试在客户端之上复制 Web+Java 界面snx
,这篇文章是关于将其设置为工作的。
首先,snxvp
安装的版本python pip
不起作用。已经有更新的补丁版本了https://github.com/agnis-mateuss/snxvpn,它有一些有用的补丁,包括忽略未签名和/或过期证书的选项,更有趣的是,是 python2和兼容python3。
此外,所有的 URL 都snxconnect.py
必须从 改为sslvpn/
``。
所以分步说明大致是:
- 首先,安装
snx
设置:
如果在 VPN 中,要获取安装文件,请执行以下操作:
wget --no-check-certificate https://VPN_FW_HOSTNAME/SNX/INSTALL/snx_install.sh
否则,您将必须从网络界面获取它,如链接答案中所述。
对于 Debian,您可能需要:
sudo dpkg --add-architecture i386
sudo apt-get update
我必须安装以下内容:
sudo apt-get install libstdc++5:i386 libx11-6:i386 libpam0g:i386
然后运行:
chmod a+rx snx_install.sh
sudo ./snx_install.sh`
您现在将拥有一个/usr/bin/snx
32 位客户端二进制可执行文件。检查是否缺少任何动态库:
sudo ldd /usr/bin/snx
只有满足所有依赖关系后,您才能继续执行以下操作。
不确定snx -s CheckpointURLFQDN -u USER
使用前是否需要先运行snxconnect
,因为签名VPN保存在/etc/snx/USER.db
。
- 现在我们有了
snxconnect
python 实用程序。此类程序尝试模拟 Web 界面,更有趣的是,它不需要 Java 进行身份验证。
因此,要安装和设置snxconnect
,请以 root 身份运行:
apt-get -y install git make libxml2-dev libxslt1-dev zlib1g-dev
apt-get -y install python-pip
pip install pytz
git clone https://github.com/agnis-mateuss/snxvpn
git clone git://git.code.sf.net/p/sfreleasetools/code releasetools
cd snxvpn
Now, as for taking out the /sslvpn URL, some Checkpoint appliances need it, some do not. I am not still aware of why the difference. I need it, @WileyMarques does not.
sed -i "s/sslvpn\///g" snxconnect.py
。然后以root身份执行,对于python3:(推荐)
apt-get install python3-pip python3-docutils python3-pip python3-libxml2 python3-dev python3-crypto python3-bs4
pip install rsa
make
python3 setup.py install --prefix=/usr/local
。或者反而,以 root 身份执行,对于 python2:
apt-get install python-docutils python-libxml2 python-lxml python-dev python-bs4 python-beautifulsoup
sed -i "s/distutils.core/setuptools/g" setup.py
make
python setup.py install --prefix=/usr/local
安装后,您可以以非特权用户身份运行:
/usr/local/bin/snxconnect -H CheckpointURLFQDN -U USER --skip-cert --save-cookies
如果一切正常,它会要求输入密码,然后显示:
SNX connected, to leave VPN open, leave this running!
如果您在获取此消息时遇到问题,并且连续多次收到消息:“意外响应,请重试。”,请执行 Firefox 方法,然后正确断开连接并注销,等待几分钟,然后再尝试snxconnect
再次命令。
- 成功使用后,将在 ~/.snxcookies 中创建 cookie 文件。
VPN建立后,您可以检查ip address
或者ifconfig
您现在有一个tunsnx
界面:
$ ip addr show dev tunsnx
14: tunsnx: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
link/none
inet 10.x.x.x peer 10.x.x.x/32 scope global tunsnx
valid_lft forever preferred_lft forever
inet6 fe80::acfe:8fce:99a4:44b7/64 scope link stable-privacy
valid_lft forever preferred_lft forever
ip route
还将向您显示通过该tunsnx
界面的新路线。
要关闭/断开 VPN,虽然您可以 stop/kill
snxconnect
,但更好且官方的方法是发出命令:$snx-d
SNX - 断开连接...完成。
此外,我还了解到:
snxconnect
断开之前的 VPN 连接并在官方 Web 界面中注销时,似乎表现更好如果有一些奇怪的问题(必须尝试这样做,snx -d
看看是否会产生相同的结果);- PYTHONHTTPSVERIFY=0 只影响python2版本;
- 如果 Web 界面正在执行 HTML 重定向到辅助 CheckPoint 位置,直接指向该重定向的主机名,可以得到更好的结果;
- 如果防火墙的证书是自签名的(通常是),则必须使用 --skip-cert 选项,否则身份验证将失败;
- 为了避免重新身份验证时出现太多问题,必须使用 --save-cookies 来使用身份验证 cookie,同时用户登录到远程 VPN 点(超时时间为 x 小时);
- 如上一个问题所述,为了使脚本正常工作,必须将“登录时启动 SSL Network Extender”选项更改为“自动”;
- 本地主机中的 7776/TCP 必须是免费的,才能
snx
拥有它,就像使用它snxconnect
一样snx
; snxconnect
传递给/ 的主机名snx
被视为虚拟主机,因此您不能直接使用 VPN IP 地址;- 运行该脚本似乎需要安装 32 位架构
snx_install.sh
; - 您可能会选择运行作为
python2
更少空间的权衡,但是由于 python2 正在逐步淘汰,snxconnect
在不久的将来可能不会支持它; - 通过使用 Web 客户端界面,很明显我需要修补/删除所有
/sslvpn
字符串,因为我的 URL 不以/sslvpn
.我会检查你的具体情况。我完全不知道代码中该字符串的存在是否是由于旧版本造成的,希望得到一些反馈; - CheckPoint 主机名中的
snxconnect
名称必须是 Web 界面在其中通过身份验证后向您显示的确切名称,因为它是 Web 虚拟主机。否则,您将无法成功建立VPN; - 第一次
snx
使用时,将在 处创建带有 VPN/Checkpoint 服务器签名的文件/etc/snx/USER.db
; - 如果您需要从命令行使用 OTP,则必须单独使用,
snxconnect
因为snx
它不支持它。