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