Checkpoint VPN SSL Network Extender in der Befehlszeile zum Laufen bringen

11

Das offizielle Checkpoint out-Befehlszeilentool von CheckPoint zum Einrichten eines SSL Network Extender-VPN funktioniert nicht mehr über die Linux-Befehlszeile. Es wird auch von CheckPoint nicht mehr aktiv unterstützt.

Es gibt jedoch ein vielversprechendes Projekt, das versucht, das Java-Applet zur Authentifizierung zu replizieren, das mit dem snxaufgerufenen Befehlszeilenprogramm kommuniziert snxconnect.

Ich habe versucht, das snxconnectTextdienstprogramm in Debian Buster zum Laufen zu bringen.

sudo pip install snxvpn

und

export PYTHONHTTPSVERIFY=0
snxconnect -H checkpoint.hostname -U USER 

Es starb jedoch meistens entweder mit einem HTTP-Fehler von:

HTTP/1.1 301 Moved Permanently:

oder:

Got HTTP response: HTTP/1.1 302 Found

oder:

Unexpected response, try again.

Was tun?

PS. Der offizielle EndPoint Security VPN-Client funktioniert sowohl in einem Mac High Sierra als auch in Windows 10 Pro einwandfrei.

Rui F Ribeiro
quelle

Antworten:

22

SNX Build 800007075 von 2012, zur Unterstützung von VPN in der Befehlszeile. Also habe ich es getestet und siehe da, es funktioniert immer noch mit den neuesten Distributionen und Kernel (s) 4.x.

Letztendlich gilt die andere Antwort in diesem Thread, wenn Sie SNX Build 800007075 nicht erhalten können oder wenn diese bestimmte Version von SNX nicht mehr mit den aktuellen Linux-Versionen funktioniert (dies könnte in naher Zukunft passieren) oder wenn Sie OTP-Unterstützung benötigen .

Derzeit installiert die Lösung diese spezielle letzte Version von SNX, die weiterhin das VPN über die Befehlszeile unterstützt.

1) snxUm Build 800007075 zu installieren , mache ich:

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

Für Debian und Debian-basierte Systeme wie Ubuntu und Linux Mint benötigen Sie möglicherweise:

sudo dpkg --add-architecture i386
sudo apt-get update    

Ich musste folgendes installieren:

sudo apt-get install libstdc++5:i386 libx11-6:i386 libpam0g:i386

Führen Sie dann aus:

chmod a+rx snx_install.sh
sudo ./snx_install.sh`

Sie kennen eine /usr/bin/snxausführbare 32-Bit-Client-Binärdatei. Überprüfen Sie, ob dynamische Bibliotheken fehlen, mit:

sudo ldd /usr/bin/snx

Sie können erst mit dem folgenden Punkt fortfahren, wenn alle Abhängigkeiten erfüllt sind.

Möglicherweise müssen Sie zuerst manuell ausführen, snx -s CheckpointURLFQDN -u USERbevor Sie eine automatische Verwendung als Skript ausführen können, damit das Signatur-VPN unter gespeichert wird /etc/snx/USER.db.

2) Bevor Sie es verwenden, erstellen Sie eine ~/.snxrcDatei mit folgendem Inhalt:

server IP_address_of_your_VPN
username YOUR_USER
reauth yes

3) Geben Sie zum Anschließen Folgendes ein 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 

Wenn Sie die Sicherheitsrisiken einer harten Codierung eines VPN-Kennworts in einem Skript kennen, können Sie es auch wie folgt verwenden:

echo 'Password' | snx

4) Zum Schließen / Trennen des VPN, während Sie möglicherweise stoppen / beenden, snxist der bessere und offizielle Weg, den folgenden Befehl auszugeben:

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

siehe auch Linux Checkpoint SNX - Tool Konfigurationsprobleme für einige Präzisierungen über die snxVersion zu verwenden.

5) Wenn ich die Anmeldung automatisiere und eine neue Signatur akzeptiere (und die Auswirkungen auf die Sicherheit verstehe), habe ich ein expectSkript geschrieben, das ich aufgerufen habe 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. Beachten snxSie, dass OTP nicht allein unterstützt wird. Sie müssen das snxconnectSkript verwenden, das in der anderen Antwort enthalten ist, wenn Sie es verwenden.

PPS @gibies machte mich darauf aufmerksam, dass das Kennwortfeld bei Verwendung eines Etoken das Kennwort vom Etoken erhält und kein festes Kennwort.

Rui F Ribeiro
quelle
1
Dies funktioniert unter Arch Linux mit snx aus unserem Repository.
Met
@Met in der Tat, finden Sie es viel später ... siehe den letzten Link in dieser Antwort. Wir sind uns jedoch nicht sicher, ob diese AUR legal ist und uns eine viel ältere und nicht unterstützte 32-Bit-Version 2012 von Checkpoints snx-Dienstprogramm bietet, selbst wenn diese von einer Website eines Drittanbieters heruntergeladen wird. Ich verwende dieselbe Version in der akzeptierten Antwort, die andere ist eine alternative Methode.
Rui F Ribeiro
1
Danke @RuiFRibeiro. Ich habe die neue Frage hier gepostet: unix.stackexchange.com/questions/485800/… Alle Gedanken wären wunderbar.
Ashwin Balamohan
1
Sehr gute detaillierte Beschreibung. Es funktioniert gut auf meinem Ubuntu-Laptop.
Gibies
1
Arbeitete für mich unter Ubuntu 18.04 (64-Bit). Ich habe nicht ausgeführt snx -s CheckpointURLFQDN -u USERund nur bis zu Schritt 3 ausgeführt.
Amil Waduwawara
7

Bei der Installation der offiziellen SSL VPN Extender-Schnittstelle von Firefox in der Frage VPN SSL Network Extender in Firefox habe ich einige weitere Teile des Puzzles dieser Frage herausgefunden und gelöst.

Anscheinend snxfunktioniert der webbasierte Client, wie im verlinkten Beitrag beschrieben, immer noch , obwohl die Verwendung der Befehlszeile von Checkpoint aus eingestellt wurde. Es gibt jedoch einen Python-Befehlszeilen- snxClient, der versucht, die Web + Java-Schnittstelle über dem Client zu replizieren. In diesem Beitrag geht es darum, sie für die Arbeit einzurichten.

Erstens funktioniert die snxvpInstallation von python pipnicht. Unter https://github.com/agnis-mateuss/snxvpn gibt es eine aktualisierte gepatchte Version , die einige nützliche Patches enthält, einschließlich einer Option zum Ignorieren nicht signierter und / oder abgelaufener Zertifikate, und interessanterweise Python2- und Python3-kompatibel ist.

Außerdem müssen alle URLs snxconnect.pyvon sslvpn/auf `` geändert werden .


Die Schritt-für-Schritt-Anleitung lautet also ungefähr:

1) Installieren Sie zuerst das snxSetup:

Wenn Sie sich im VPN befinden, um die Installationsdatei abzurufen, gehen Sie wie folgt vor:

wget --no-check-certificate https://VPN_FW_HOSTNAME/SNX/INSTALL/snx_install.sh 

Andernfalls müssen Sie es von der Weboberfläche abrufen, wie in der verknüpften Antwort beschrieben.

Für Debian benötigen Sie möglicherweise:

sudo dpkg --add-architecture i386
sudo apt-get update    

Ich musste folgendes installieren:

sudo apt-get install libstdc++5:i386 libx11-6:i386 libpam0g:i386

Führen Sie dann aus:

chmod a+rx snx_install.sh
sudo ./snx_install.sh`

Sie kennen eine /usr/bin/snxausführbare 32-Bit-Client-Binärdatei. Überprüfen Sie, ob dynamische Bibliotheken fehlen, mit:

sudo ldd /usr/bin/snx

Sie können erst mit dem folgenden Punkt fortfahren, wenn alle Abhängigkeiten erfüllt sind.

Nicht sicher, ob Sie snx -s CheckpointURLFQDN -u USERvor der Verwendung zuerst ausführen müssen snxconnect, damit das Signatur-VPN unter gespeichert wird /etc/snx/USER.db.

2) Jetzt haben wir das snxconnectPython-Dienstprogramm. Ein solches Programm versucht, die Weboberfläche zu emulieren, und interessanterweise benötigt es kein Java zur Authentifizierung.

Um das Setup zu installieren snxconnect, gehen Sie wie folgt vor:

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  

. dann mache als root für python3: (empfohlen)

apt-get install python3-docutils python3-pip python3-libxml2 python3-dev python3-crypto python3-bs4
make
python3 setup.py install --prefix=/usr/local

. oder stattdessen als root für 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) Nach der Installation können Sie als nicht privilegierter Benutzer ausgeführt werden:

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

Wenn alles in Ordnung ist, wird nach dem Passwort gefragt und dann gesagt:

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

Wenn Sie Probleme beim Abrufen dieser Nachricht haben und stattdessen mehrmals hintereinander die Meldung "Unerwartete Antwort, versuchen Sie es erneut." Ausführen, führen Sie die Firefox-Methode aus und trennen Sie die Verbindung und melden Sie sich ordnungsgemäß ab. Warten Sie einige Minuten, bevor Sie die Nachricht abrufen snxconnectBefehl erneut.

4) Die Cookie-Datei (en) wird nach erfolgreicher Verwendung bei ~ / .snxcookies erstellt.

Nachdem das VPN eingerichtet wurde, können Sie dies überprüfen ip addressoder ifconfigSie haben jetzt eine tunsnxSchnittstelle:

$ 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 routezeigt Ihnen auch neue Routen durch die tunsnxBenutzeroberfläche.

5) Zum Schließen / Trennen des VPN, während Sie möglicherweise stoppen / töten snxconnect, ist der bessere und offizielle Weg, den folgenden Befehl auszugeben:

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


Außerdem habe ich auch herausgefunden:

  • snxconnectscheint sich besser zu verhalten, wenn die vorherige VPN-Verbindung getrennt und in der offiziellen Weboberfläche abgemeldet wird, wenn ein seltsames Problem auftritt (muss versuchen, festzustellen snx -d, ob das gleiche Ergebnis erzielt wird);
  • PYTHONHTTPSVERIFY = 0 wirkt sich nur auf die Python2-Version aus.
  • Wenn die Weboberfläche eine HTML-Umleitung zu einem sekundären CheckPoint-Speicherort durchführt und direkt auf diesen umgeleiteten Hostnamen verweist, werden bessere Ergebnisse erzielt.
  • Wenn die Zertifikate der Firewalls selbstsigniert sind (häufig), muss die Option --skip-cert verwendet werden, da sonst die Authentifizierung fehlschlägt.
  • Um nicht so viele Probleme bei der erneuten Authentifizierung zu haben, musste --save-cookies verwendet werden, um Authentifizierungscookies zu verwenden, während der Benutzer am Remote-VPN-Punkt angemeldet ist (es gibt eine Zeitüberschreitung von x Stunden).
  • Wie in der letzten Frage beschrieben, muss die Option "Beim Anmelden SSL Network Extender starten" in "automatisch" geändert werden, damit das Skript funktioniert.
  • 7776 / TCP in localhost muss frei sein, um es snxzu besitzen, da es snxconnectmit der snxVerwendung spricht ;
  • Der an snxconnect/ übergebene Hostname snxwird als virtueller Host behandelt. Daher können Sie die VPN-IP-Adresse nicht direkt verwenden.
  • Das Installieren einer 32-Bit-Architektur scheint eine Voraussetzung für die Ausführung des snx_install.shSkripts zu sein.
  • Sie können sich dafür entscheiden, als python2Kompromiss für weniger Speicherplatz zu fungieren. Da Python2 jedoch ausläuft, wird es snxconnectin naher Zukunft möglicherweise nicht unterstützt.
  • Bei Verwendung der Webclient-Oberfläche ist klar, dass ich alle /sslvpnZeichenfolgen patchen / löschen muss , da meine URLs nicht mit beginnen /sslvpn. Ich würde Ihren speziellen Fall überprüfen. Ich habe absolut keine Ahnung, ob das Vorhandensein dieser Zeichenfolge im Code auf eine alte Version zurückzuführen ist. Ich würde mich über Feedback freuen.
  • in snxconnectder CheckPoint Hostnamen hat die genaue Bezeichnung der Webinterfaces zeigt Ihnen einmal dort authentifiziert sein, da es sich um eine Web - virtuellen Host ist. Andernfalls gelingt es Ihnen nicht, das VPN einzurichten.
  • Bei der ersten snxVerwendung wird eine Datei mit der Signatur des VPN / Checkpoint-Servers unter erstellt /etc/snx/USER.db.
  • Wenn Sie OTP über die Befehlszeile verwenden müssen, müssen Sie es verwenden, snxconnectda es snxallein nicht unterstützt wird.
Rui F Ribeiro
quelle
In Bezug auf das Entfernen von '/ sslvpn' Strings. Der Server, mit dem ich mich verbinde, hat es in der URL, also habe ich diesen Schritt nicht gemacht. Interessant, dies auf die Antwort zu verweisen, da es anderen Menschen passieren kann.
Wiley Marques
@WileyMarques Danke für das Feedback, ich habe bereits vermutet, dass es für einige anders sein würde, auch weil in der Github / Pip-Version die URL vorhanden ist.
Rui F Ribeiro
1
Mein VPN verwendet die Multiauthentifizierung, daher musste ich -MC yesden snxconnectBefehl ergänzen , damit er in meinem Fall funktioniert. Funktioniert jetzt wie ein Zauber, vielen Dank dafür, Rui!
Vito