会话参数:

会话参数:

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。

  1. 要安装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/snx32 位客户端二进制可执行文件。检查是否缺少任何动态库:

sudo ldd /usr/bin/snx

只有满足所有依赖关系后,您才能继续执行以下操作。

在编写任何自动使用脚本之前,您可能需要先手动运行snx -s CheckpointURLFQDN -u USER,以便将签名 VPN 保存在/etc/snx/USER.db

  1. 在使用它之前,您需要创建一个~/.snxrc file, using your regular user (not root) 包含以下内容的文件:

    server IP_address_of_your_VPN
    username YOUR_USER
    reauth yes
    
  2. 要连接,请键入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
  1. 要关闭/断开 VPN,虽然您可以 stop/kill snx,但更好且官方的方法是发出命令:
    $snx -d
    SNX - Disconnecting...
     done.

也可以看看Linux Checkpoint SNX 工具配置问题有关snx使用哪个版本的一些说明。

  1. 如果自动登录并接受新签名(并了解安全隐患),我编写了一个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/``。


所以分步说明大致是:

  1. 首先,安装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/snx32 位客户端二进制可执行文件。检查是否缺少任何动态库:

sudo ldd /usr/bin/snx

只有满足所有依赖关系后,您才能继续执行以下操作。

不确定snx -s CheckpointURLFQDN -u USER使用前是否需要先运行snxconnect,因为签名VP​​N保存在/etc/snx/USER.db

  1. 现在我们有了snxconnectpython 实用程序。此类程序尝试模拟 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
  1. 安装后,您可以以非特权用户身份运行:

    /usr/local/bin/snxconnect -H CheckpointURLFQDN -U USER --skip-cert --save-cookies

如果一切正常,它会要求输入密码,然后显示:

SNX connected, to leave VPN open, leave this running!

如果您在获取此消息时遇到问题,并且连续多次收到消息:“意外响应,请重试。”,请执行 Firefox 方法,然后正确断开连接并注销,等待几分钟,然后再尝试snxconnect再次命令。

  1. 成功使用后,将在 ~/.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界面的新路线。

  1. 要关闭/断开 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它不支持它。

相关内容