Al trabajar para instalar la interfaz de SSL VPN Extender oficial de Firefox en la pregunta VPN SSL Network Extender en Firefox , descubrí y resolví algunas piezas más del rompecabezas de esta pregunta.
Aparentemente, aunque el uso de la línea de comandos snxdesde el punto de control se ha descontinuado, el cliente basado en la web como se describe en la publicación vinculada sigue funcionando. Sin embargo, hay un cliente de línea de comandos de Python que intenta replicar la interfaz Web + Java en la parte superior delsnx cliente, y esta publicación trata de configurarlo para que funcione.
En primer lugar, el snxvpinstalado desde python pipno funciona. Hay una versión parcheada actualizada en https://github.com/agnis-mateuss/snxvpn , que tiene algunos parches útiles, incluida una opción para ignorar certificados no firmados y / o caducados, y más interesante, siendo compatible con python2 y python3.
Además, todas las URL en snxconnect.pydeben cambiarse de sslvpn/a ``.
Entonces, las instrucciones paso a paso son aproximadamente:
1) En primer lugar, instalando el snx configuración:
Si está en la VPN, para obtener el archivo de instalación, haga lo siguiente:
wget --no-check-certificate https://VPN_FW_HOSTNAME/SNX/INSTALL/snx_install.sh
De lo contrario, deberá obtenerlo de la interfaz web, como se describe en la respuesta vinculada.
Para Debian, podría necesitar:
sudo dpkg --add-architecture i386
sudo apt-get update
Tuve que instalar lo siguiente:
sudo apt-get install libstdc++5:i386 libx11-6:i386 libpam0g:i386
Corre entonces:
chmod a+rx snx_install.sh
sudo ./snx_install.sh`
Ahora tendrá un /usr/bin/snxejecutable binario de cliente de 32 bits. Compruebe si faltan bibliotecas dinámicas con:
sudo ldd /usr/bin/snx
Solo puede continuar con los siguientes puntos cuando se satisfagan todas las dependencias.
No estoy seguro de si necesita ejecutar primero snx -s CheckpointURLFQDN -u USERantes de usar snxconnect, ya que la firma VPN se guardará en /etc/snx/USER.db.
2) Ahora tenemos la snxconnectutilidad python. Dicho programa intenta emular la interfaz web y, lo que es más interesante, no necesita Java para autenticarse.
Entonces, para instalar y configurar snxconnect, ejecute como 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
. luego haga como root, para python3: (recomendado)
apt-get install python3-docutils python3-pip python3-libxml2 python3-dev python3-crypto python3-bs4
make
python3 setup.py install --prefix=/usr/local
. o en su lugar , haz como root, para 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) Después de instalarlo, puede ejecutarlo como un usuario sin privilegios:
/usr/local/bin/snxconnect -H CheckpointURLFQDN -U USER --skip-cert --save-cookies
Si todo salió bien, le pedirá la contraseña y luego mostrará:
SNX connected, to leave VPN open, leave this running!
Si tiene problemas para obtener este mensaje y, en su lugar, recibe varias veces seguidas, el mensaje: "Respuesta inesperada, intente nuevamente", realice el método de Firefox y Desconecte y cierre la sesión correctamente, espere un par de minutos antes de intentar snxconnectcomando de nuevo.
4) El archivo de cookies se creará en ~ / .snxcookies, después de un uso exitoso.
Después de establecer la VPN, puede consultar ip addresso ifconfigahora tiene una tunsnxinterfaz:
$ 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 routele mostrará también nuevas rutas que pasan por la tunsnxinterfaz.
5) Para cerrar / desconectar la VPN, mientras puede detener / matar snxconnect, la mejor manera oficial es emitir el comando:
$snx -d
SNX - Disconnecting...
done.
Además, también descubrí:
snxconnectparece que se comporta mejor al desconectar la conexión VPN anterior y cerrar sesión en la interfaz web oficial si hay algún problema extraño (debe intentar hacerlo snx -dpara ver si produce el mismo resultado);
- PYTHONHTTPSVERIFY = 0 solo afecta la versión de python2;
- si la interfaz web está redirigiendo HTML a una ubicación CheckPoint secundaria, apuntando directamente a ese nombre de host redirigido, tiene mejores resultados;
- si los certificados de los cortafuegos son autofirmados (a menudo lo son), se debe usar la opción --skip-cert, o la autenticación fallará;
- para no tener tantos problemas para volver a autenticarse, tuve que usar --save-cookies para usar cookies de autenticación, mientras el usuario está conectado en el punto VPN remoto (tiene un tiempo de espera de x horas);
- como se describe en la última pregunta, para que el script funcione, la opción "Al iniciar sesión en SSL Network Extender" debe cambiarse a "automáticamente";
- 7776 / TCP en localhost tiene que ser gratuito, para
snxser propietario, ya que snxconnecthabla de snxusarlo;
- el nombre de host pasado a
snxconnect/ snxse maneja como un host virtual y, como tal, no puede usar directamente la dirección IP de VPN;
- instalar una arquitectura de 32 bits parece ser un requisito para ejecutar el
snx_install.shscript;
- puede optar por correr como
python2una compensación por menos espacio, sin embargo, dado que python2 se está eliminando gradualmente, snxconnecten un futuro cercano podría no ser compatible;
- desde el uso de la interfaz del cliente web, está claro que necesito parchear / eliminar todas las
/sslvpncadenas, ya que mis URL no comienzan con /sslvpn. Verificaría tu caso particular. No tengo ni idea de si la presencia de esa cadena en el código se debe a una versión anterior, me encantaría recibir algunos comentarios;
- en
snxconnectel nombre de host de CheckPoint tiene que ser el nombre exacto que la interfaz web le muestra una vez autenticado allí, ya que es un host virtual web. De lo contrario, no logrará establecer la VPN;
- La primera vez que
snxse usa, se creará un archivo con la firma del servidor VPN / Checkpoint en/etc/snx/USER.db ;
- Si necesita usar OTP desde la línea de comandos, debe usarlo
snxconnectya que snxsolo no lo admite.