far funzionare Checkpoint VPN SSL Network Extender nella riga di comando


11

Lo strumento ufficiale della riga di comando di Checkpoint out di CheckPoint, per configurare una VPN di Extender di rete SSL, non funziona più dalla riga di comando di Linux. Inoltre, non è più supportato attivamente da CheckPoint.

Tuttavia, esiste un progetto promettente, che tenta di replicare l'applet Java per l'autenticazione, che parla con l' snxutilità della riga di comando, chiamata snxconnect.

Stavo cercando di snxconnectfar funzionare l'utility di testo in Debian Buster, facendo:

sudo pip install snxvpn

e

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

Tuttavia, moriva principalmente con un errore HTTP di:

HTTP/1.1 301 Moved Permanently:

o:

Got HTTP response: HTTP/1.1 302 Found

o:

Unexpected response, try again.

Cosa fare al riguardo?

PS. Il client ufficiale di EndPoint Security VPN funziona bene sia su Mac High Sierra che su Windows 10 Pro.

Risposte:


22

Build SNX 800007075 dal 2012, utilizzato per supportare VPN nella riga di comando. Quindi l'ho provato, ed ecco, funziona ancora con le ultime distribuzioni e kernel 4.x / 5.x.

Quindi, in definitiva, la mia altra risposta in questo thread è vera, se non riesci a ottenere la build SNX 800007075 o se quella versione specifica di SNX smette di funzionare con le attuali versioni di Linux (potrebbe accadere in un prossimo futuro) o se hai bisogno del supporto OTP .

Attualmente, la soluzione sta quindi installando questa ultima versione specifica di SNX che supporta ancora l'esecuzione della VPN dalla riga di comando.

1) Per installare la snxbuild 800007075, ottenerlo da:

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

Per i sistemi a 64 bit basati su Debian e Debian come Ubuntu e Linux Mint, potrebbe essere necessario aggiungere l'architettura a 32 bit:

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

Ho dovuto installare i seguenti pacchetti a 32 bit:

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

Esegui quindi lo snxscript di installazione:

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

Ora avrai un /usr/bin/snxeseguibile binario client a 32 bit. Controlla se mancano librerie dinamiche con:

sudo ldd /usr/bin/snx

È possibile procedere ai punti seguenti solo quando tutte le dipendenze sono soddisfatte.

Potrebbe essere necessario eseguire manualmente prima snx -s CheckpointURLFQDN -u USER, prima di eseguire lo script di qualsiasi utilizzo automatico, per salvare la firma VPN su /etc/snx/USER.db.

2) Prima di usarlo, si crea un ~/.snxrcfile con i seguenti contenuti:

server IP_address_of_your_VPN
username YOUR_USER
reauth yes

3) Per il collegamento, digitare 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 

Se capisci i rischi per la sicurezza della codifica hardware di una password VPN in uno script, puoi anche usarla come:

echo 'Password' | snx

4) Per chiudere / disconnettere la VPN, mentre è possibile arrestare / uccidere snx, il modo migliore e ufficiale è emettere il comando:

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

vedere anche i problemi di configurazione dello strumento Linux Checkpoint SNX per alcuni chiarimenti sulla snxversione da utilizzare.

5) Se automatizzando il login e accettando una nuova firma (e comprendendo le implicazioni di sicurezza), ho scritto uno expectscript, che ho chiamato script snx_login.exp; non molto sicuro, tuttavia puoi automatizzare il tuo login, chiamandolo con la password come argomento:

#!/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. Attenzione snxnon supporta solo OTP, dovrai utilizzare lo snxconnectscript presente sull'altra risposta se lo usi.

PPS @gibies ha richiamato la mia attenzione sul fatto che utilizzando un etoken, il campo password ottiene la password dall'etoken e non una password fissa.


1
Funziona in arch linux usando snx dal repository aur.
Ho incontrato il

@Met sì, lo troverai molto più tardi ... vedi l'ultimo link in questa risposta. Tuttavia, non sono sicuro della legalità di tale AUR che ci fornisce una versione 2012 a 32 bit molto più vecchia e non supportata dell'utilità snx di Checkpoint, anche se lo scarica da un sito di terze parti. Sto usando la stessa versione nella risposta accettata, l'altro è un metodo alternativo.
Rui F Ribeiro,

@linuxatico Risposta modificata per sostituire il vecchio link di download con uno funzionante. Com'è andata?
Rui F Ribeiro,

1
Ha funzionato per me su Ubuntu 18.04 (64 bit). Non ho eseguito snx -s CheckpointURLFQDN -u USERe eseguito solo fino al passaggio 3.
Amil Waduwawara,

@AmilWaduwawara "passaggio 4" è come disconnettersi e il passaggio 5 è utile soprattutto per le persone con cluster di checkpoint che presentano firme diverse e / quando il cluster agisce. Confermereste se IPv6 è attivo o disabilitato?
Rui F Ribeiro,

7

Quando ho lavorato per installare l'interfaccia SSL VPN Extender ufficiale di Firefox nella domanda VPN SSL Network Extender in Firefox , ho scoperto e risolto alcuni altri pezzi del puzzle di questa domanda.

Apparentemente, mentre l'utilizzo della riga di comando snxda checkpoint è stato interrotto, il client basato sul web come descritto nel post collegato funziona ancora. Tuttavia, esiste un client da riga di comando python, che tenta di replicare l'interfaccia Web + Java sulla parte superiore del snxclient e questo post riguarda l'impostazione per il funzionamento.

Innanzitutto, l' snxvpinstallazione da python pipnon funziona. Esiste una versione aggiornata di patch su https://github.com/agnis-mateuss/snxvpn , che ha alcune utili patch, inclusa un'opzione per ignorare i certificati non firmati e / o scaduti e, cosa più interessante, essendo compatibile con python2 e python3.

Inoltre, tutti gli URL su snxconnect.pydevono essere cambiati da sslvpn/a ''.


Quindi le istruzioni dettagliate sono approssimativamente:

1) Innanzitutto, installare l' snxinstallazione:

Se nella VPN, per ottenere il file di installazione, eseguire:

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

Altrimenti, dovrai ottenerlo dall'interfaccia web, come descritto nella risposta collegata.

Per Debian, potresti aver bisogno di:

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

Ho dovuto installare quanto segue:

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

Esegui quindi:

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

Ora avrai un /usr/bin/snxeseguibile binario client a 32 bit. Controlla se mancano librerie dinamiche con:

sudo ldd /usr/bin/snx

È possibile procedere ai punti seguenti solo quando tutte le dipendenze sono soddisfatte.

Non sono sicuro se è necessario eseguire snx -s CheckpointURLFQDN -u USERprima di utilizzare snxconnect, per salvare la firma VPN su /etc/snx/USER.db.

2) Ora abbiamo l' snxconnectutilità python. Tale programma tenta di emulare l'interfaccia Web e, cosa più interessante, non ha bisogno di Java per l'autenticazione.

Quindi per installare e configurare snxconnect, esegui come 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  

. quindi fai come root, per python3: (consigliato)

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

. o invece , fai come root, per 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) Dopo averlo installato, è possibile eseguire come utente non privilegiato:

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

Se tutto è andato bene, verrà richiesta la password, quindi verrà visualizzato:

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

Se riscontri problemi nel ricevere questo messaggio e ricevi invece più volte di seguito, il messaggio: "Risposta imprevista, riprova.", Esegui il metodo Firefox e Disconnetti e disconnettiti correttamente, aspettando un paio di minuti prima di provare snxconnectcomando di nuovo.

4) Il file dei cookie verrà creato su ~ / .snxcookies, dopo un utilizzo corretto.

Dopo aver stabilito la VPN, puoi verificare con ip addresso ifconfighai ora tunsnxun'interfaccia:

$ 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 routeti mostrerà anche nuovi percorsi che attraversano l' tunsnxinterfaccia.

5) Per chiudere / disconnettere la VPN, mentre puoi fermare / uccidere snxconnect, il modo migliore e ufficiale è quello di emettere il comando:

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


Inoltre, ho anche scoperto:

  • snxconnectsembra comportarsi meglio quando si disconnette la precedente connessione VPN e si effettua il logout nell'interfaccia web ufficiale se c'è qualche strano problema (bisogna provare snx -da vedere se produce lo stesso risultato);
  • PYTHONHTTPSVERIFY = 0 influisce solo sulla versione python2;
  • se l'interfaccia Web sta eseguendo un reindirizzamento HTML su una posizione CheckPoint secondaria, puntando direttamente a quel nome host reindirizzato, ottiene risultati migliori;
  • se i certificati dei firewall sono autofirmati (spesso lo sono) è necessario utilizzare l'opzione --skip-cert, altrimenti l'autenticazione fallirà;
  • per non avere così tanti problemi di riautenticazione, ha dovuto usare --save-cookies per usare i cookie di autenticazione, mentre l'utente è loggato nel punto VPN remoto (ha un timeout di x ore);
  • come descritto nell'ultima domanda, affinché lo script funzioni, l'opzione "All'accesso avvia SSL Network Extender" deve essere modificata in "automaticamente";
  • 7776 / TCP in localhost deve essere gratuito, per snxpossederlo, mentre snxconnectparla con il suo snxutilizzo;
  • il nome host passato a snxconnect/ snxviene gestito come host virtuale e come tale non è possibile utilizzare direttamente l'indirizzo IP VPN;
  • l'installazione di un'architettura a 32 bit sembra essere un requisito per eseguire lo snx_install.shscript;
  • potresti scegliere di correre come python2un compromesso per meno spazio, tuttavia mentre Python2 viene gradualmente eliminato, snxconnectin un prossimo futuro potrebbe non supportarlo;
  • dall'uso dell'interfaccia del client Web, è chiaro che devo correggere / eliminare tutte le /sslvpnstringhe, poiché i miei URL non iniziano con /sslvpn. Verificherei il tuo caso particolare. Non ho assolutamente idea se la presenza di quella stringa nel codice sia dovuta a una versione precedente, mi piacerebbe un po 'di feedback;
  • nel snxconnectnome host CheckPoint deve essere il nome esatto che l'interfaccia web ti mostra una volta autenticato, in quanto è un host virtuale web. Altrimenti, non riuscirai a stabilire la VPN;
  • Al primo snxutilizzo, verrà creato un file con la firma del server VPN / Checkpoint in /etc/snx/USER.db;
  • Se è necessario utilizzare OTP dalla riga di comando, è necessario utilizzarlo snxconnectpoiché snxda solo non lo supporta.

Per quanto riguarda la rimozione delle stringhe '/ sslvpn'. Il server a cui mi connetto lo ha nell'URL, quindi non ho fatto questo passo. Interessante sottolineare questo sulla risposta, dal momento che può accadere ad altre persone.
Wiley Marques,

@WileyMarques Grazie per il feedback, ho già sospettato che sarebbe stato diverso per alcuni, anche perché nella versione github / pip l'URL è lì.
Rui F Ribeiro,

1
La mia VPN utilizza l'autenticazione multipla, quindi ho scoperto che dovevo aggiungere -MC yesal snxconnectcomando per farlo funzionare nel mio caso. Ora funziona come un incantesimo, grazie mille per questo, Rui!
Vito,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.