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 snx
desde 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 snxvp
instalado desde python pip
no 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.py
deben 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/snx
ejecutable 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 USER
antes de usar snxconnect
, ya que la firma VPN se guardará en /etc/snx/USER.db
.
2) Ahora tenemos la snxconnect
utilidad 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 snxconnect
comando 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 address
o ifconfig
ahora tiene una tunsnx
interfaz:
$ 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
le mostrará también nuevas rutas que pasan por la tunsnx
interfaz.
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í:
snxconnect
parece 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 -d
para 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
snx
ser propietario, ya que snxconnect
habla de snx
usarlo;
- el nombre de host pasado a
snxconnect
/ snx
se 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.sh
script;
- puede optar por correr como
python2
una compensación por menos espacio, sin embargo, dado que python2 se está eliminando gradualmente, snxconnect
en 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
/sslvpn
cadenas, 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
snxconnect
el 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
snx
se 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
snxconnect
ya que snx
solo no lo admite.