mendapatkan Checkpoint VPN Extender Jaringan SSL bekerja di baris perintah

11

Alat checkpoint out perintah resmi dari CheckPoint, untuk mengatur SSL Network Extender VPN tidak lagi berfungsi dari baris perintah Linux. Itu juga tidak lagi didukung secara aktif oleh CheckPoint.

Namun, ada proyek yang menjanjikan, yang mencoba mereplikasi applet Java untuk otentikasi, yang berbicara dengan snxutilitas baris perintah, yang disebut snxconnect.

Saya mencoba menjalankan snxconnectutilitas teks di Debian Buster, melakukan:

sudo pip install snxvpn

dan

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

Namun, sebagian besar mati baik dengan kesalahan HTTP:

HTTP/1.1 301 Moved Permanently:

atau:

Got HTTP response: HTTP/1.1 302 Found

atau:

Unexpected response, try again.

Apa yang harus dilakukan tentang hal itu?

PS. Klien resmi EndPoint Security VPN bekerja dengan baik di Mac High Sierra dan Windows 10 Pro.

Rui F Ribeiro
sumber

Jawaban:

22

SNX build 800007075 dari 2012, digunakan untuk mendukung VPN di baris perintah. Jadi saya mengujinya, dan lihatlah, masih bekerja dengan distribusi dan kernel terbaru 4.x / 5.x.

Jadi pada akhirnya, jawaban saya yang lain di utas ini benar, jika Anda tidak bisa mendapatkan SNX build 800007075 atau jika versi tertentu SNX berhenti bekerja dengan versi Linux saat ini (mungkin terjadi dalam waktu dekat) atau jika Anda memerlukan dukungan OTP .

Saat ini, solusinya adalah menginstal SNX versi terakhir khusus ini yang masih mendukung melakukan VPN dari baris perintah.

1) Untuk menginstal snxbuild 800007075, dapatkan dari:

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

Untuk sistem 64-bit berbasis Debian dan Debian seperti Ubuntu dan Linux Mint, Anda mungkin perlu menambahkan arsitektur 32-bit:

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

Saya harus menginstal paket 32-bit berikut:

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

Jalankan kemudian snxskrip instalasi:

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

Anda akan memiliki /usr/bin/snxbiner klien 32-bit yang dapat dieksekusi. Periksa apakah ada pustaka dinamis yang hilang dengan:

sudo ldd /usr/bin/snx

Anda hanya dapat melanjutkan ke poin-poin berikut ketika semua dependensi terpenuhi.

Anda mungkin perlu menjalankannya secara manual terlebih dahulu snx -s CheckpointURLFQDN -u USER, sebelum membuat skrip penggunaan otomatis apa pun, agar tanda tangan VPN disimpan di /etc/snx/USER.db.

2) Sebelum menggunakannya, Anda membuat ~/.snxrcfile dengan konten berikut:

server IP_address_of_your_VPN
username YOUR_USER
reauth yes

3) Untuk menghubungkan, ketik 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 

Jika Anda memahami risiko keamanan pengodean kata sandi VPN dalam skrip, Anda juga dapat menggunakannya sebagai:

echo 'Password' | snx

4) Untuk menutup / memutuskan VPN, sementara Anda dapat menghentikan / membunuh snx, cara yang lebih baik dan resmi mengeluarkan perintah:

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

lihat juga masalah konfigurasi alat SNX Linux Checkpoint untuk beberapa klarifikasi tentang snxversi mana yang akan digunakan.

5) Jika mengotomatiskan login dan menerima tanda tangan baru (dan memahami implikasi keamanan), saya menulis sebuah expectskrip, yang saya sebut skrip snx_login.exp; tidak terlalu aman, namun Anda dapat mengotomatiskan login Anda, menyebutnya dengan kata sandi sebagai argumen:

#!/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. Waspadalah snxtidak mendukung OTP saja, Anda harus menggunakan snxconnectskrip yang ada di jawaban lain jika menggunakannya.

PPS @gibies meminta perhatian saya bahwa menggunakan etoken, bidang kata sandi mendapatkan kata sandi dari etoken dan bukan kata sandi tetap.

Rui F Ribeiro
sumber
1
Ini berfungsi di arch linux menggunakan snx dari repositori aur.
Bertemu
@Tetapi memang, temukan jauh di kemudian hari ... lihat tautan terakhir dalam jawaban ini. Namun demikian, tidak yakin tentang legalitas AUR yang memberi kami versi utilitas Checkpoint 32 bit 2012 yang jauh lebih tua dan tidak didukung, bahkan jika mengunduhnya dari situs pihak ke-3. Saya menggunakan versi yang sama dalam jawaban yang diterima, yang lain adalah metode alternatif.
Rui F Ribeiro
@linuxatico Jawaban diedit untuk mengganti tautan unduhan lama dengan tautan yang berfungsi. Bagaimana hasilnya?
Rui F Ribeiro
1
Bekerja untuk saya di Ubuntu 18.04 (64-bit). Saya tidak mengeksekusi snx -s CheckpointURLFQDN -u USERdan mengeksekusi hanya sampai langkah 3.
Amil Waduwawara
@AmilWaduwawara "langkah 4" adalah cara memutus hubungan, dan langkah 5 terutama bermanfaat bagi orang-orang dengan kelompok pos pemeriksaan yang menghadirkan tanda tangan berbeda dan / ketika gugus bertingkah. Bisakah Anda mengonfirmasi apakah IPv6 Anda aktif atau dinonaktifkan?
Rui F Ribeiro
7

Ketika bekerja untuk menginstal antarmuka Firefox VPN SSL Extender resmi dalam pertanyaan VPN SSL Network Extender di Firefox , saya menemukan dan memecahkan beberapa potongan teka-teki dari pertanyaan ini.

Tampaknya, sementara penggunaan baris perintah snxdari pos pemeriksaan telah dihentikan, klien berbasis web seperti yang dijelaskan dalam pos tertaut masih berfungsi. Namun, ada klien baris perintah python, yang mencoba untuk mereplikasi antarmuka Web + Java di atas snxklien, dan posting ini adalah tentang pengaturannya agar berfungsi.

Pertama, yang snxvpdiinstal dari python piptidak berfungsi. Ada versi tambalan yang diperbarui di https://github.com/agnis-mateuss/snxvpn , yang memiliki beberapa tambalan yang bermanfaat, termasuk opsi untuk mengabaikan sertifikat yang tidak ditandatangani dan / atau kedaluwarsa, dan yang lebih menarik, kompatibel dengan python2 dan python3.

Selanjutnya, semua URL yang aktif snxconnect.pyharus diubah dari sslvpn/menjadi ``.


Jadi petunjuk langkah demi langkah kira-kira:

1) Pertama, instal snxpengaturan:

Jika di VPN, untuk mendapatkan file instalasi, lakukan:

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

Jika tidak, Anda harus mendapatkannya dari antarmuka web, seperti yang dijelaskan dalam jawaban yang ditautkan.

Untuk Debian, Anda mungkin perlu:

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

Saya harus menginstal yang berikut ini:

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

Jalankan kemudian:

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

Anda akan memiliki /usr/bin/snxbiner klien 32-bit yang dapat dieksekusi. Periksa apakah ada pustaka dinamis yang hilang dengan:

sudo ldd /usr/bin/snx

Anda hanya dapat melanjutkan ke poin-poin berikut ketika semua dependensi terpenuhi.

Tidak yakin apakah Anda perlu menjalankan dulu snx -s CheckpointURLFQDN -u USERsebelum menggunakan snxconnect, untuk VPN tanda tangan disimpan di /etc/snx/USER.db.

2) Sekarang kita memiliki snxconnectutilitas python. Program semacam itu mencoba meniru antarmuka web, dan yang lebih menarik, tidak perlu Java untuk mengautentikasi.

Jadi untuk menginstal dan mengatur snxconnect, jalankan sebagai 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  

. kemudian lakukan sebagai root, untuk python3: (disarankan)

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

. atau sebagai gantinya , lakukan sebagai root, untuk 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) Setelah menginstalnya, Anda dapat berjalan sebagai pengguna yang tidak memiliki hak istimewa:

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

Jika semua beres, ia akan meminta kata sandi, dan kemudian menampilkan:

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

Jika Anda mengalami masalah dalam mendapatkan pesan ini, dan malah mendapatkan beberapa kali berturut-turut, pesan: "Respons yang tidak terduga, coba lagi.", Lakukan metode Firefox, dan Putuskan sambungan dan keluar dengan benar, tunggu beberapa menit sebelum mencoba snxconnectperintah lagi.

4) File cookie akan dibuat di ~ / .snxcookies, setelah penggunaan berhasil.

Setelah VPN dibuat, Anda dapat memeriksa ip addressatau ifconfigsekarang Anda memiliki tunsnxantarmuka:

$ 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 routeakan menunjukkan kepada Anda juga rute baru melalui tunsnxantarmuka.

5) Untuk menutup / memutuskan VPN, sementara Anda dapat menghentikan / membunuh snxconnect, cara yang lebih baik dan resmi mengeluarkan perintah:

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


Selain itu, saya juga menemukan:

  • snxconnecttampaknya berperilaku lebih baik ketika memutuskan koneksi VPN sebelumnya dan logout di antarmuka web resmi jika ada beberapa masalah aneh (harus coba lakukan snx -duntuk melihat apakah itu menghasilkan hasil yang sama);
  • PYTHONHTTPSVERIFY = 0 hanya memengaruhi versi python2;
  • jika antarmuka web melakukan pengalihan HTML ke lokasi CheckPoint sekunder, menunjuk langsung ke nama host yang dialihkan, memiliki hasil yang lebih baik;
  • jika sertifikat firewall ditandatangani sendiri (seringkali) opsi --skip-cert harus digunakan, atau otentikasi akan gagal;
  • karena tidak memiliki begitu banyak masalah otentikasi ulang, harus menggunakan --save-cookies untuk menggunakan cookie otentikasi, sementara pengguna login di titik VPN jarak jauh (memiliki batas waktu x jam);
  • seperti yang dijelaskan dalam pertanyaan terakhir, agar skrip berfungsi, opsi "Saat masuk meluncurkan SSL Network Extender" harus diubah menjadi "otomatis";
  • 7776 / TCP di localhost harus bebas, untuk snxmemilikinya, sebagai snxconnectpembicaraan dengan snxmenggunakannya;
  • nama host yang diteruskan ke snxconnect/ snxditangani sebagai host virtual, dan karenanya Anda tidak dapat menggunakan alamat IP VPN secara langsung;
  • menginstal arsitektur 32-bit tampaknya merupakan persyaratan untuk menjalankan snx_install.shskrip;
  • Anda mungkin memilih untuk menjalankan sebagai python2trade-off untuk ruang yang lebih sedikit, namun karena python2 sedang dihapus, snxconnectdalam waktu dekat mungkin tidak mendukungnya;
  • dari menggunakan antarmuka klien web, jelas saya perlu menambal / menghapus semua /sslvpnstring, karena URL saya tidak memulai /sslvpn. Saya akan memeriksa kasus khusus Anda. Saya sama sekali tidak tahu apakah keberadaan string dalam kode itu karena versi lama, akan menyukai umpan balik;
  • di snxconnectCheckPoint nama host harus nama yang tepat yang ditunjukkan oleh webinter setelah Anda dikonfirmasi di sana, karena itu adalah host virtual web. Jika tidak, Anda tidak akan berhasil membuat VPN;
  • Pertama kali snxdigunakan, file dengan tanda tangan dari server VPN / Checkpoint akan dibuat di /etc/snx/USER.db;
  • Jika Anda perlu menggunakan OTP dari baris perintah, Anda harus menggunakannya snxconnectkarena snxtidak mendukungnya.
Rui F Ribeiro
sumber
Mengenai penghapusan string '/ sslvpn'. Server yang saya hubungkan memiliki URL, jadi saya tidak melakukan langkah itu. Menarik untuk menunjukkan ini pada jawaban, karena mungkin terjadi pada orang lain.
Wiley Marques
@WileyMarques Terima kasih atas umpan baliknya, saya sudah menduga itu akan berbeda untuk beberapa orang, juga karena dalam versi github / pip URL ada di sana.
Rui F Ribeiro
1
Saya VPN menggunakan multiauthentication, jadi aku menemukan aku harus menambahkan -MC yeske snxconnectperintah untuk mendapatkannya untuk bekerja dalam kasus saya. Bekerja seperti pesona sekarang, terima kasih banyak untuk ini, Rui!
Vito