Ao trabalhar para instalar a interface oficial SSL VPN Extender do Firefox na pergunta VPN SSL Network Extender no Firefox , descobri e resolvi mais algumas peças do quebra-cabeça dessa pergunta.
Aparentemente, enquanto o uso da linha de comando snx
do ponto de verificação foi descontinuado, o cliente baseado na Web, conforme descrito na postagem vinculada, ainda funciona. No entanto, existe um cliente de linha de comando python, que tenta replicar a interface Web + Java na parte superior dosnx
cliente, e este post é sobre como configurá-lo para funcionar.
Em primeiro lugar, o snxvp
instalado de python pip
não funciona. Existe uma versão corrigida atualizada em https://github.com/agnis-mateuss/snxvpn , que possui alguns patches úteis, incluindo uma opção para ignorar certificados não assinados e / ou expirados e, mais interessante, sendo compatível com python2 e python3.
Além disso, todos os URLs ativados snxconnect.py
devem ser alterados de sslvpn/
para ``.
Portanto, as instruções passo a passo são aproximadamente:
1) Primeiramente, instalando o snx
instalação:
Se estiver na VPN, para obter o arquivo de instalação, faça:
wget --no-check-certificate https://VPN_FW_HOSTNAME/SNX/INSTALL/snx_install.sh
Caso contrário, você precisará obtê-lo da interface da web, conforme descrito na resposta vinculada.
Para o Debian, você pode precisar de:
sudo dpkg --add-architecture i386
sudo apt-get update
Eu tive que instalar o seguinte:
sudo apt-get install libstdc++5:i386 libx11-6:i386 libpam0g:i386
Execute então:
chmod a+rx snx_install.sh
sudo ./snx_install.sh`
Agora você terá um /usr/bin/snx
executável binário de cliente de 32 bits. Verifique se está faltando alguma biblioteca dinâmica:
sudo ldd /usr/bin/snx
Você só pode prosseguir para os seguintes pontos quando todas as dependências forem satisfeitas.
Não tenho certeza se você precisa executar primeiro snx -s CheckpointURLFQDN -u USER
antes de usar snxconnect
, para que a VPN da assinatura seja salva em /etc/snx/USER.db
.
2) Agora temos o snxconnect
utilitário python. Esse programa tenta emular a interface da web e, mais interessante, não precisa do Java para autenticar.
Portanto, para instalar e configurar snxconnect
, execute 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
. então faça 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
. ou , em vez disso , faça 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) Após a instalação, você pode executar como um usuário não privilegiado:
/usr/local/bin/snxconnect -H CheckpointURLFQDN -U USER --skip-cert --save-cookies
Se tudo der certo, ele solicitará a senha e exibirá:
SNX connected, to leave VPN open, leave this running!
Se você estiver com problemas para receber essa mensagem e, em vez disso, receber várias vezes seguidas, a mensagem: "Resposta inesperada, tente novamente.", Execute o método Firefox e Desconecte e efetue logout corretamente, aguardando alguns minutos antes de tentar o snxconnect
comando novamente.
4) O arquivo de cookie (s) será criado em ~ / .snxcookies, após um uso bem-sucedido.
Após o estabelecimento da VPN, você pode verificar ip address
ou ifconfig
agora possui uma tunsnx
interface:
$ 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
mostrará também novas rotas passando pela tunsnx
interface.
5) Para fechar / desconectar a VPN, enquanto você pode parar / matar snxconnect
, a maneira melhor e oficial é emitir o comando:
$snx -d
SNX - Disconnecting...
done.
Além disso, eu também descobri:
snxconnect
parece se comportar melhor ao desconectar a conexão VPN anterior e sair da interface da web oficial se houver algum problema estranho (tente fazer snx -d
para verificar se produz o mesmo resultado);
- PYTHONHTTPSVERIFY = 0 afeta apenas a versão python2;
- se a interface da web estiver fazendo um redirecionamento HTML para um local secundário do CheckPoint, apontando diretamente para esse nome de host redirecionado, obtém melhores resultados;
- se os certificados dos firewalls são autoassinados (geralmente são), a opção --skip-cert deve ser usada ou a autenticação falhará;
- por não ter tantos problemas para se autenticar, teve que usar --save-cookies para usar cookies de autenticação, enquanto o usuário está conectado no ponto de VPN remoto (o tempo limite é de x horas);
- conforme descrito na última pergunta, para que o script funcione, a opção "Ao fazer logon iniciar o SSL Network Extender" deve ser alterada para "automaticamente";
- 7776 / TCP no localhost tem que ser livre, para
snx
possuir, como snxconnect
fala com o snx
uso;
- o nome do host passado para
snxconnect
/ snx
é tratado como um host virtual e, como tal, você não pode usar diretamente o endereço IP da VPN;
- instalar uma arquitetura de 32 bits parece ser um requisito para executar o
snx_install.sh
script;
- você pode optar por executar como
python2
uma troca por menos espaço; no entanto, como o python2 está sendo eliminado,snxconnect
em um futuro próximo, talvez não seja possível;
- ao usar a interface do cliente da Web, fica claro que preciso corrigir / excluir todas as
/sslvpn
strings, pois meus URLs não começam /sslvpn
. Eu verificaria seu caso particular. Não tenho absolutamente nenhuma idéia se a presença dessa cadeia no código é devido a uma versão antiga, gostaria de receber algum feedback;
- no
snxconnect
nome do host do CheckPoint, deve ser o nome exato que a interface da web está mostrando, uma vez autenticado lá, pois é um host virtual da web. Caso contrário, você não conseguirá estabelecer a VPN;
- Na primeira vez em que
snx
é usado, um arquivo com a assinatura do servidor VPN / ponto de verificação será criado em/etc/snx/USER.db
;
- Se você precisar usar o OTP na linha de comando, precisará usá-lo,
snxconnect
pois snx
sozinho não o suporta.