当尝试在Firefox中的VPN SSL Network Extender问题中安装Firefox官方SSL VPN Extender界面时,我发现并解决了该问题的更多难题。
显然,虽然snx
来自checkpoint的命令行使用已被终止,但链接文章中所述的基于Web的客户端仍然有效。但是,有一个python命令行客户端,该客户端尝试在snx
客户端顶部复制Web + Java界面,而本文旨在将其设置为正常工作。
首先,无法snxvp
从安装python pip
。https://github.com/agnis-mateuss/snxvpn上有一个更新的修补程序版本,其中包含一些有用的修补程序,包括用于忽略未签名和/或已过期证书的选项,更有趣的是,它与python2 和 python3兼容。
此外,所有URL snxconnect.py
都必须从更改sslvpn/
为``。
因此,分步说明大致如下:
1)首先,安装snx
安装程序:
如果在VPN中,要获取安装文件,请执行以下操作:
wget --no-check-certificate https://VPN_FW_HOSTNAME/SNX/INSTALL/snx_install.sh
否则,您将必须从Web界面中获取它,如链接答案中所述。
对于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
。
2)现在我们有了snxconnect
python实用程序。此类程序尝试模拟Web界面,更有趣的是,它不需要Java进行身份验证。
因此要安装和设置snxconnect
,请以root身份运行:
apt-get -y install git make libxml2-dev libxslt1-dev zlib1g-dev 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-docutils python3-pip python3-libxml2 python3-dev python3-crypto python3-bs4
make
python3 setup.py install --prefix=/usr/local
。或代替,如做根,为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
3)安装后,您可以以非特权用户身份运行:
/usr/local/bin/snxconnect -H CheckpointURLFQDN -U USER --skip-cert --save-cookies
如果一切正常,它将要求输入密码,然后显示:
SNX connected, to leave VPN open, leave this running!
如果您在收到此消息时遇到问题,而连续几次却收到消息,则显示消息:“意外响应,请重试。”,执行Firefox方法,然后正确断开连接并注销,请等待几分钟,然后再尝试snxconnect
再次命令。
4)成功使用后,将在〜/ .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
界面的新路线。
5)对于关闭/断开VPN,虽然您可以停止/杀死snxconnect
,但更好的官方方式是发出以下命令:
$snx -d
SNX - Disconnecting...
done.
另外,我还发现:
snxconnect
如果存在一些奇怪的问题,断开先前的VPN连接并从官方Web界面注销时,似乎表现更好(必须尝试snx -d
查看是否产生相同的结果);
- PYTHONHTTPSVERIFY = 0仅影响python2版本;
- 如果Web界面正在将HTML重定向到次要CheckPoint位置,并直接指向该重定向的主机名,则会获得更好的结果;
- 如果防火墙的证书是自签名的(通常是),则必须使用--skip-cert选项,否则身份验证将失败;
- 因为重新身份验证没有太多问题,所以当用户登录到远程VPN点(超时时间为x小时)时,必须使用--save-cookies来使用身份验证cookie;
- 如上一个问题所述,要使脚本正常工作,必须将“登录时启动SSL Network Extender”选项更改为“自动”;
- 7776 / TCP在本地主机必须是免费的,
snx
拥有它,因为snxconnect
与谈判snx
使用它;
- 传递给
snxconnect
/ 的主机名snx
被视为虚拟主机,因此您不能直接使用VPN IP地址;
- 安装32位体系结构似乎是运行
snx_install.sh
脚本的必要条件。
- 您可以选择以
python2
较少的空间作为折衷方案来运行,但是随着python2的逐步淘汰,snxconnect
在不久的将来它可能不支持它。
- 通过使用Web客户端界面,很明显,我需要修补/删除所有
/sslvpn
字符串,因为我的网址不是以开头/sslvpn
。我会检查您的具体情况。我绝对不知道代码中该字符串的存在是否是由于旧版本引起的,不希望有一些反馈。
- 在
snxconnect
该检查站的主机名必须是webinterface正显示出你确切的名字曾经在那里验证,因为它是一个网络的虚拟主机。否则,您将无法成功建立VPN。
- 首次
snx
使用时,将在处创建带有VPN / Checkpoint服务器签名的文件/etc/snx/USER.db
。
- 如果需要从命令行使用OTP,则必须单独使用,
snxconnect
因为snx
它不支持。