L'outil de ligne de commande Checkpoint out officiel de CheckPoint, pour la configuration d'un VPN SSL Network Extender ne fonctionne plus depuis la ligne de commande Linux. Il n'est également plus activement pris en charge par CheckPoint.
Cependant, il existe un projet prometteur, qui essaie de répliquer l’applet Java pour l’authentification, qui parle avec l’utilitaire de ligne de commande snx
, appelé snxconnect
.
J'essayais de mettre l'utilitaire de texte snxconnect
au travail dans Debian Buster, en faisant:
Sudo pip install snxvpn
et
export PYTHONHTTPSVERIFY=0
snxconnect -H checkpoint.hostname -U USER
Cependant, il mourait principalement avec une erreur HTTP de:
HTTP/1.1 301 Moved Permanently:
ou:
Got HTTP response: HTTP/1.1 302 Found
ou:
Unexpected response, try again.
Que faire à ce sujet?
PS. Le client officiel EndPoint Security VPN fonctionne bien à la fois dans un Mac High Sierra et Windows 10 Pro.
SNX build 800007075 de 2012, utilisé pour prendre en charge VPN en ligne de commande. Je l'ai donc testé, et voilà, il fonctionne toujours avec les dernières distributions et les derniers noyaux 4.x.
Donc, finalement, mon autre réponse dans ce fil est vraie si vous ne pouvez pas vous procurer la build SNX 800007075 ou si cette version spécifique de SNX cesse de fonctionner avec le les versions Linux actuelles (cela pourrait arriver dans un futur proche) ou si vous avez besoin du support OTP.
Actuellement, la solution consiste à installer cette dernière version spécifique de SNX qui continue de prendre en charge le VPN à partir de la ligne de commande.
1) Donc pour installer snx
build 800007075 je fais:
wget https://starkers.keybase.pub/snx_install_linux30.sh?dl=1 -O snx_install.sh
Pour les systèmes Debian et Debian comme Ubuntu et Linux Mint, vous pourriez avoir besoin de:
Sudo dpkg --add-architecture i386
Sudo apt-get update
J'ai dû installer ce qui suit:
Sudo apt-get install libstdc++5:i386 libx11-6:i386 libpam0g:i386
Exécutez ensuite:
chmod a+rx snx_install.sh
Sudo ./snx_install.sh`
Vous aurez connu un /usr/bin/snx
Exécutable binaire client 32 bits. Vérifiez s'il manque des bibliothèques dynamiques avec:
Sudo ldd /usr/bin/snx
Vous ne pouvez passer au point suivant que lorsque toutes les dépendances sont satisfaites.
Vous devrez peut-être d'abord exécuter manuellement snx -s CheckpointURLFQDN -u USER
avant de créer un script pour toute utilisation automatique, pour que le VPN de signature soit enregistré dans /etc/snx/USER.db
.
2) Avant de l'utiliser, vous créez un ~/.snxrc
fichier avec le contenu suivant:
server IP_address_of_your_VPN
username YOUR_USER
reauth yes
3) Pour vous connecter, saisissez 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
Si vous comprenez les risques de sécurité liés au codage en dur d'un mot de passe VPN dans un script, vous pouvez également l'utiliser comme:
echo 'Password' | snx
4) Pour fermer/déconnecter le VPN, alors que vous pouvez arrêter/tuer snx
, la meilleure façon et officielle est d'émettre la commande:
$snx -d
SNX - Disconnecting...
done.
voir aussi Problèmes de configuration de l'outil Linux Checkpoint SNX pour des clarifications sur la version de snx
à utiliser.
5) En automatisant la connexion et en acceptant une nouvelle signature (et en comprenant les implications pour la sécurité), j'ai écrit un script expect
, que j'ai appelé 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. Attention snx
ne prend pas en charge OTP seul, vous devrez utiliser le script snxconnect
présent sur l'autre réponse si vous l'utilisez.
PPS @gibies a attiré mon attention sur le fait qu'en utilisant un etoken, le champ du mot de passe obtient le mot de passe de l'etoken et non un mot de passe fixe.
En travaillant pour installer l'interface SSL VPN Extender officielle de Firefox dans la question VPN SSL Network Extender dans Firefox , j'ai découvert et résolu quelques pièces supplémentaires du puzzle de cette question.
Apparemment, bien que l'utilisation en ligne de commande de snx
à partir du point de contrôle ait été interrompue, le client basé sur le Web tel que décrit dans la publication liée fonctionne toujours. Cependant, il existe un client en ligne de commande python qui essaie de répliquer l'interface Web + Java au-dessus du client snx
, et ce message concerne sa configuration pour qu'il fonctionne.
Premièrement, le snxvp
installé à partir de python pip
ne marche pas. Il y a une version corrigée mise à jour sur https://github.com/agnis-mateuss/snxvpn , qui a quelques correctifs utiles, y compris une option pour ignorer les certificats non signés et/ou expirés, et plus intéressant, étant compatible python2 et python3.
De plus, toutes les URL sur snxconnect.py
doit être changé de sslvpn/
à ``.
Donc, les instructions étape par étape sont à peu près:
1) Tout d'abord, installez la configuration snx
:
Si dans le VPN, pour obtenir le fichier d'installation, procédez comme suit:
wget --no-check-certificate https://VPN_FW_HOSTNAME/SNX/INSTALL/snx_install.sh
Sinon, vous devrez l'obtenir à partir de l'interface Web comme décrit dans la réponse liée.
Pour Debian, vous pourriez avoir besoin de:
Sudo dpkg --add-architecture i386
Sudo apt-get update
J'ai dû installer ce qui suit:
Sudo apt-get install libstdc++5:i386 libx11-6:i386 libpam0g:i386
Exécutez ensuite:
chmod a+rx snx_install.sh
Sudo ./snx_install.sh`
Vous aurez connu un /usr/bin/snx
Exécutable binaire client 32 bits. Vérifiez s'il manque des bibliothèques dynamiques avec:
Sudo ldd /usr/bin/snx
Vous ne pouvez passer au point suivant que lorsque toutes les dépendances sont satisfaites.
Je ne sais pas si vous devez d'abord exécuter snx -s CheckpointURLFQDN -u USER
avant d'utiliser snxconnect
, pour que le VPN de signature soit enregistré dans /etc/snx/USER.db
.
2) Nous avons maintenant l'utilitaire snxconnect
python. Un tel programme essaie d'émuler l'interface Web, et plus intéressant encore, il n'a pas besoin de Java = pour s'authentifier.
Donc, pour installer le pour configurer snxconnect
, faites en tant que 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
. puis faites en tant que root, pour python3: (recommandé)
apt-get install python3-docutils python3-pip python3-libxml2 python3-dev python3-crypto python3-bs4
make
python3 setup.py install --prefix=/usr/local
. ou à la place , faites comme root, pour 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) Après l'avoir installé, vous pouvez exécuter en tant qu'utilisateur non privilégié:
/usr/local/bin/snxconnect -H CheckpointURLFQDN -U USER --skip-cert --save-cookies
Si tout s'est bien passé, il vous demandera le mot de passe, puis dira:
SNX connected, to leave VPN open, leave this running!
Si vous rencontrez des problèmes pour obtenir ce message, et que vous obtenez à la place plusieurs fois de suite, le message: "Réponse inattendue, réessayez.", Effectuez la méthode Firefox, puis déconnectez-vous et déconnectez-vous correctement, en attendant quelques minutes avant d'essayer le Commande snxconnect
à nouveau.
4) Le fichier des cookies sera créé dans ~/.snxcookies, après une utilisation réussie.
Une fois le VPN établi, vous pouvez vérifier avec ip address
ou ifconfig
vous avez maintenant une interface 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
vous montrera également de nouveaux itinéraires passant par l'interface tunsnx
.
5) Pour fermer/déconnecter le VPN, alors que vous pouvez arrêter/tuer snxconnect
, la meilleure façon et officielle est d'émettre la commande:
$snx -d
SNX - Disconnecting...
done.
De plus, j'ai également découvert:
snxconnect
semble se comporter mieux lors de la déconnexion de la connexion VPN précédente et de la déconnexion dans l'interface Web officielle s'il y a un problème étrange (devez essayer de faire snx -d
pour voir si elle produit le même résultat);snx
le possède, car snxconnect
parle avec snx
en l'utilisant;snxconnect
/snx
est traité comme un hôte virtuel, et en tant que tel, vous ne pouvez pas utiliser directement l'adresse IP VPN;snx_install.sh
script;python2
comme un compromis pour moins d'espace, mais comme python2 est en cours de suppression, snxconnect
dans un futur proche pourrait ne pas le supporter;/sslvpn
chaînes, car mes URL ne commencent pas par /sslvpn
. Je vérifierais votre cas particulier. Je n'ai absolument aucune idée si la présence de cette chaîne dans le code est due à une ancienne version, j'aimerais avoir des commentaires;snxconnect
, le nom d'hôte CheckPoint doit être le nom exact que l'interface Web vous montre une fois authentifié, car il s'agit d'un hôte virtuel Web. Sinon, vous ne réussirez pas à établir le VPN;snx
est utilisé, un fichier avec la signature du serveur VPN/Checkpoint sera créé à /etc/snx/USER.db
;snxconnect
car snx
seul ne le prend pas en charge.