コマンドラインで動作するCheckpoint VPN SSL Network Extenderを取得する


11

SSL Network Extender VPNを設定するためのCheckPointの公式のCheckpoint outコマンドラインツールは、Linuxコマンドラインからは機能しなくなりました。また、CheckPointでは積極的にサポートされていません。

ただし、認証のためにJavaアプレットを複製しようとする有望なプロジェクトがありsnx、と呼ばれるコマンドラインユーティリティと通信しますsnxconnect

私はsnxconnect、Debianバスターでテキストユーティリティを機能させようとしていました。

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.

それについて何をしますか?

PS。EndPoint Security VPN公式クライアントは、Mac High SierraとWindows 10 Proの両方でうまく機能しています。

回答:


22

2012年のSNXビルド800007075。コマンドラインでVPNをサポートするために使用されます。だから私はそれをテストしました、そして見たところ、それはまだ最新のディストリビューションとカーネル4.x / 5.xで動作します。

つまり、SNXビルド800007075を入手できない場合、SNXの特定のバージョンが現在のLinuxバージョンで動作しなくなった場合(近いうちに発生する可能性があります)、または OTPサポートが必要な場合、 。

現在、解決策は、コマンドラインからのVPN の実行を引き続きサポートする、SNXのこの特定の最新バージョンをインストールすることです。

1)snxビルド800007075 をインストールするには、次の場所から入手します。

wget https://starkers.keybase.pub/snx_install_linux30.sh?dl=1 -O snx_install.sh

DebianおよびUbuntuやLinux MintのようなDebianベースの64ビットシステムでは、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

2)使用する前に~/.snxrc、次の内容のファイルを作成します。

server IP_address_of_your_VPN
username YOUR_USER
reauth yes

3)接続するには、次のように入力します snx

$ snx
Check Point's Linux SNX
build 800007075
Please enter your password:

SNX - connected.

Session parameters:
===================
Office Mode IP      : 10.x.x.x
DNS Server          : 10.x.x.x
Secondary DNS Server: 10.x.x.x
DNS Suffix          : xxx.xx, xxx.xx
Timeout             : 24 hours 

スクリプトでVPNパスワードをハードコーディングすることのセキュリティリスクを理解している場合は、次のように使用することもできます。

echo 'Password' | snx

4)VPNを閉じる/切断するためにsnx、停止/強制終了することはできますが、より適切で正式な方法は次のコマンドを発行することです。

$snx -d
SNX - Disconnecting...
 done.

使用するバージョンについての説明は、Linux Checkpoint SNXツールの構成の問題も参照してくださいsnx

5)ログインを自動化して新しい署名を受け入れる(およびセキュリティへの影響を理解する)場合は、expectスクリプトを記述しましたsnx_login.exp。安全ではありませんが、ログインを自動化して、パスワードを引数として呼び出します。

#!/usr/bin/expect
spawn /usr/bin/snx 

set password [lindex $argv 0]

expect "*?assword:*"
send -- "$password\r"

expect {
   "o:" {
      send "y\r"
      exp_continue
   }
   eof
}

PS。注意snxしてくださいOTPだけをサポートしていません、それを使用するsnxconnect場合、他の回答にあるスクリプトを使用する必要があります。

PPS @gibiesは、etokenを使用する場合、passwordフィールドは固定のパスワードではなくetokenからパスワードを取得することに注意を呼びかけました。


1
これは、Aurリポジトリのsnxを使用してArch Linuxで動作します。
2018年

@確かに会った、後でもっと見つける...この回答の最後のリンクを参照してください。それにもかかわらず、サードパーティのサイトからダウンロードしたとしても、AURのチェックポイントのsnxユーティリティのサポートされていない32ビット2012バージョンを提供するAURの合法性については不明です。受け入れられた回答で同じバージョンを使用していますが、もう1つは別の方法です。
Rui F Ribeiro

@linuxatico Answerを編集して、古いダウンロードリンクを有効なものに置き換えます。どうだった?
Rui F Ribeiro

1
Ubuntu 18.04(64ビット)で私のために働いた。私は実行されなかったsnx -s CheckpointURLFQDN -u USERとだけステップ3まで実行
AMIL Waduwawara

@AmilWaduwawara "ステップ4"は切断方法です。ステップ5は主に、チェックポイントクラスターが異なる署名を提示している場合や、クラスターが動作している場合に役立ちます。IPv6がアクティブか無効かを確認してください。
Rui F Ribeiro

7

「FirefoxのVPN SSLネットワークエクステンダー」の質問でFirefox公式のSSL VPNエクステンダーインターフェースをインストールする作業をしているときに、この質問のパズルのいくつかのピースを見つけて解決しました。

どうやら、snxチェックポイントからのコマンドラインの使用は中止されましたが、リンクされた投稿に記載されている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/snx32ビットのクライアントバイナリ実行可能ファイルが作成されます。ダイナミックライブラリが不足していないかどうかを確認します。

sudo ldd /usr/bin/snx

すべての依存関係が満たされた場合にのみ、次のポイントに進むことができます。

snx -s CheckpointURLFQDN -u USERを使用する前に最初に実行する必要があるかどうか不明です。snxconnect署名VPNはに保存されてい/etc/snx/USER.dbます。

2)これでsnxconnectpythonユーティリティができました。このようなプログラムは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  

。次に、Python3の場合はrootとして実行します:(推奨)

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)cookie(s)ファイルは、使用に成功した後、〜/ .snxcookiesに作成されます。

VPNが確立された後、確認するip addressifconfigtunsnxインターフェースを取得できます。

$ 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 routetunsnxインターフェイスを通過する新しいルートも表示されます。

5)VPNを閉じる/切断するためにsnxconnect、停止/強制終了することはできますが、より適切で正式な方法は次のコマンドを発行することです。

$snx -d
SNX - Disconnecting...
 done.


さらに、私は次のことも発見しました:

  • snxconnect以前のVPN接続を切断して公式のWebインターフェースでログアウトすると、奇妙な問題が発生した場合に動作が向上するようです(snx -d同じ結果が得られるかどうかを確認する必要があります)。
  • PYTHONHTTPSVERIFY = 0はpython2バージョンにのみ影響します。
  • Webインターフェースが、リダイレクトされたホスト名を直接指す、セカンダリCheckPointの場所へのHTMLリダイレクトを行っている場合、より良い結果が得られます。
  • ファイアウォールの証明書が自己署名されている場合(多くの場合そうです)、-skip-certオプションを使用する必要があります。そうしないと認証が失敗します。
  • 再認証にそれほど多くの問題がなかったため、ユーザーがリモートVPNポイントにログインしている間(タイムアウトはx時間)、-save-cookiesを使用して認証Cookieを使用する必要がありました。
  • 前の質問で説明したように、スクリプトを機能させるには、「サインイン時にSSL Network Extenderを起動する」オプションを「自動」に変更する必要があります。
  • localhostの7776 / TCPは、snxそれを所有するために、それsnxconnectsnx使用することと対話するため、無料である必要があります。
  • snxconnect/に渡されるホスト名はsnx仮想ホストとして扱われるため、VPN IPアドレスを直接使用することはできません。
  • 32ビットアーキテクチャのインストールは、snx_install.shスクリプトを実行するための要件のようです。
  • python2より少ないスペースとのトレードオフとして実行することを選択することもできますが、python2が段階的に廃止さsnxconnectれているため、近い将来、サポートされなくなる可能性があります。
  • /sslvpnURLがで始まっていないため、Webクライアントインターフェイスを使用して、すべての文字列をパッチまたは削除する必要があることは明らか/sslvpnです。あなたの特定のケースをチェックします。コード内のその文字列の存在が古いバージョンによるものであるかどうかは、まったくわかりません。
  • snxconnect、それはウェブ仮想ホストであるとして、チェックポイントのホスト名、ウェブインターフェースがあなたを示している正確な名前は、かつてそこに認証されなければなりません。そうしないと、VPNの確立に成功しません。
  • 初めてsnx使用する場合は、VPN /チェックポイントサーバーの署名を含むファイルがに作成され/etc/snx/USER.dbます。
  • コマンドラインからOTPを使用する必要がある場合はsnxconnectsnx単独ではサポートされていないため、使用する必要があります。

'/ sslvpn'文字列の削除について。私が接続するサーバーはURL上にそれを持っているので、そのステップはしませんでした。他の人に起こるかもしれないので、これを答えに向けると面白いです。
Wiley Marques

@WileyMarquesフィードバックのおかげで、github / pipバージョンにURLが存在することからも、一部のユーザーには異なると疑っていました。
Rui F Ribeiro

1
私のVPNはマルチ認証を使用しているので、私の場合はそれを機能させるためにコマンドに追加する-MC yes必要がありましたsnxconnect。今、魅力のように機能します。これをありがとう、Rui!
Vito
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.