nhận được Checkpoint VPN SSL Extender làm việc trong dòng lệnh


11

Công cụ dòng lệnh Checkpoint out chính thức từ Checkpoint, để thiết lập VPN Network Extender VPN không còn hoạt động từ dòng lệnh Linux. Nó cũng không còn được hỗ trợ tích cực bởi Checkpoint.

Tuy nhiên, có một dự án đầy hứa hẹn, cố gắng sao chép applet Java để xác thực, nói chuyện với snxtiện ích dòng lệnh, được gọi snxconnect.

Tôi đã cố gắng đưa snxconnecttiện ích văn bản hoạt động trong Debian Buster, thực hiện:

sudo pip install snxvpn

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

Tuy nhiên, nó hầu như đã chết với lỗi HTTP là:

HTTP/1.1 301 Moved Permanently:

hoặc là:

Got HTTP response: HTTP/1.1 302 Found

hoặc là:

Unexpected response, try again.

Phải làm gì về nó?

Tái bút Ứng dụng khách chính thức Endpoint Security VPN đang hoạt động tốt cả trong Mac High Sierra và Windows 10 Pro.

Câu trả lời:


22

SNX build 800007075 từ năm 2012, được sử dụng để hỗ trợ VPN trong dòng lệnh. Vì vậy, tôi đã thử nghiệm nó, và lo và kìa, nó vẫn hoạt động với các bản phân phối và (các) hạt nhân mới nhất 4.x / 5.x.

Vì vậy, cuối cùng, câu trả lời khác của tôi trong chủ đề này là đúng, nếu bạn không thể nắm giữ SNX build 800007075 hoặc nếu phiên bản SNX cụ thể đó ngừng hoạt động với các phiên bản Linux hiện tại (có thể xảy ra trong tương lai gần) hoặc nếu bạn cần hỗ trợ OTP .

Hiện tại, giải pháp này đang cài đặt phiên bản SNX cụ thể cuối cùng này vẫn hỗ trợ thực hiện VPN từ dòng lệnh.

1) Để cài đặt bản snxdựng 800007075, hãy tải xuống từ:

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

Đối với các hệ thống 64 bit dựa trên Debian và Debian như Ubuntu và Linux Mint, bạn có thể cần thêm kiến ​​trúc 32 bit:

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

Tôi đã phải cài đặt các gói 32 bit sau:

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

Chạy sau đó snxtập lệnh cài đặt:

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

Bây giờ bạn sẽ có một /usr/bin/snxtệp thực thi nhị phân máy khách 32 bit. Kiểm tra nếu có bất kỳ thư viện động nào bị thiếu với:

sudo ldd /usr/bin/snx

Bạn chỉ có thể tiến hành các điểm sau khi tất cả các phụ thuộc được thỏa mãn.

Bạn có thể cần chạy thủ công trước snx -s CheckpointURLFQDN -u USER, trước khi kịch bản sử dụng tự động, cho VPN chữ ký được lưu tại /etc/snx/USER.db.

2) Trước khi sử dụng, bạn tạo một ~/.snxrctệp có nội dung sau:

server IP_address_of_your_VPN
username YOUR_USER
reauth yes

3) Để kết nối, gõ 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 

Nếu bạn hiểu các rủi ro bảo mật của việc mã hóa mật khẩu VPN trong tập lệnh, bạn cũng có thể sử dụng nó như:

echo 'Password' | snx

4) Để đóng / ngắt kết nối VPN, trong khi bạn có thể dừng / tắt snx, cách tốt hơn và chính thức là ban hành lệnh:

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

xem thêm các vấn đề cấu hình công cụ SNX của Checkpoint Linux để biết một số giải thích về snxviệc sử dụng phiên bản nào.

5) Nếu tự động đăng nhập và chấp nhận chữ ký mới (và hiểu ý nghĩa bảo mật), tôi đã viết một expecttập lệnh mà tôi gọi là tập lệnh snx_login.exp; không an toàn lắm, tuy nhiên bạn có thể tự động đăng nhập, gọi nó bằng mật khẩu làm đối số:

#!/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
}

Tái bút Cẩn thận snxkhông hỗ trợ OTP một mình, bạn sẽ phải sử dụng snxconnecttập lệnh có trong câu trả lời khác nếu sử dụng nó.

PPS @gibies kêu gọi tôi chú ý rằng bằng cách sử dụng etoken, trường mật khẩu sẽ lấy mật khẩu từ etoken chứ không phải mật khẩu cố định.


1
Điều này hoạt động trong arch linux sử dụng snx từ kho lưu trữ aur.
Gặp

@ Thực sự, tìm thấy nó nhiều sau này ... xem liên kết cuối cùng trong câu trả lời này. Tuy nhiên, không chắc chắn về tính hợp pháp của AUR đó mang lại cho chúng tôi phiên bản 32 bit 2012 cũ hơn và không được hỗ trợ của tiện ích snx của Checkpoint, ngay cả khi tải xuống từ trang web của bên thứ 3. Tôi đang sử dụng cùng một phiên bản trong câu trả lời được chấp nhận, cái còn lại là một phương pháp thay thế.
Rui F Ribeiro

@linuxatico Trả lời chỉnh sửa để thay thế liên kết tải xuống cũ bằng liên kết tải xuống. Làm thế nào nó đi?
Rui F Ribeiro

1
Làm việc cho tôi trên Ubuntu 18.04 (64-bit). Tôi đã không thực hiện snx -s CheckpointURLFQDN -u USERvà chỉ thực hiện đến bước 3.
Amil Waduwawara

@AmilWaduwawara "bước 4" là cách ngắt kết nối và bước 5 chủ yếu hữu ích cho những người có cụm điểm kiểm tra trình bày các chữ ký khác nhau và / khi cụm đang hoạt động. Bạn vui lòng xác nhận xem bạn có IPv6 hoạt động hay bị vô hiệu hóa không?
Rui F Ribeiro

7

Khi làm việc để cài đặt giao diện SSL VPN Extender chính thức của Firefox trong câu hỏi VPN SSL Network Extender trong Firefox , tôi đã tìm ra và giải quyết thêm một số câu đố của câu hỏi này.

Rõ ràng, trong khi việc sử dụng dòng lệnh snxtừ điểm kiểm tra đã bị ngừng, ứng dụng khách dựa trên web như được mô tả trong bài đăng được liên kết vẫn hoạt động. Tuy nhiên, có một máy khách dòng lệnh python, cố gắng sao chép giao diện Web + Java trên đầu snxmáy khách và bài đăng này là về việc thiết lập nó để hoạt động.

Thứ nhất, snxvpcài đặt từ python pipkhông hoạt động. Có một phiên bản vá được cập nhật trên https://github.com/agnis-mateuss/snxvpn , có một số bản vá hữu ích, bao gồm tùy chọn bỏ qua các chứng chỉ chưa ký và / hoặc hết hạn, và thú vị hơn là tương thích python2 python3.

Hơn nữa, tất cả các URL trên snxconnect.pyphải được thay đổi từ sslvpn/thành ``.


Vì vậy, các hướng dẫn từng bước đại khái là:

1) Trước tiên, cài đặt snxthiết lập:

Nếu trong VPN, để lấy tệp cài đặt, hãy làm:

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

Nếu không, bạn sẽ phải lấy nó từ giao diện web, như được mô tả trong câu trả lời được liên kết.

Đối với Debian, bạn có thể cần:

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

Tôi đã phải cài đặt như sau:

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

Chạy rồi:

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

Bây giờ bạn sẽ có một /usr/bin/snxtệp thực thi nhị phân máy khách 32 bit. Kiểm tra nếu có bất kỳ thư viện động nào bị thiếu với:

sudo ldd /usr/bin/snx

Bạn chỉ có thể tiến hành các điểm sau khi tất cả các phụ thuộc được thỏa mãn.

Không chắc chắn nếu bạn cần chạy snx -s CheckpointURLFQDN -u USERtrước khi sử dụng snxconnect, cho VPN chữ ký được lưu tại /etc/snx/USER.db.

2) Bây giờ chúng ta có snxconnecttiện ích python. Chương trình như vậy cố gắng mô phỏng giao diện web và thú vị hơn, nó không cần Java để xác thực.

Vì vậy, để cài đặt và thiết lập snxconnect, hãy chạy bằng 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  

. sau đó làm root, cho python3: (khuyên dùng)

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

. hoặc thay vào đó , làm root, cho 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) Sau khi cài đặt nó, bạn có thể chạy như một người dùng không có đặc quyền:

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

Nếu tất cả đều ổn, nó sẽ hỏi mật khẩu, rồi hiển thị:

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

Nếu bạn gặp sự cố khi nhận được thông báo này và thay vào đó nhận được nhiều lần liên tiếp, thông báo: "Phản hồi không mong đợi, hãy thử lại", thực hiện phương pháp Firefox và Ngắt kết nối và đăng xuất đúng cách, đợi vài phút trước khi thử snxconnectlại lệnh.

4) Tệp cookie (s) sẽ được tạo tại ~ / .snxcookies, sau khi sử dụng thành công.

Sau khi VPN được thiết lập, bạn có thể kiểm tra ip addresshoặc ifconfigbây giờ bạn có tunsnxgiao diện:

$ 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 routecũng sẽ cho bạn thấy các tuyến mới đi qua tunsnxgiao diện.

5) Để đóng / ngắt kết nối VPN, trong khi bạn có thể dừng / tắt snxconnect, cách tốt hơn và chính thức là ban hành lệnh:

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


Ngoài ra, tôi cũng tìm ra:

  • snxconnectdường như hoạt động tốt hơn khi ngắt kết nối VPN trước đó và đăng xuất trong giao diện web chính thức nếu có sự cố lạ (phải thử thực hiện snx -dđể xem liệu nó có tạo ra kết quả tương tự không);
  • PYTHONHTTPSVERIFY = 0 chỉ ảnh hưởng đến phiên bản python2;
  • nếu giao diện web đang thực hiện chuyển hướng HTML đến vị trí Checkpoint thứ cấp, trỏ trực tiếp đến tên máy chủ được chuyển hướng đó, sẽ giữ kết quả tốt hơn;
  • nếu các chứng chỉ của tường lửa là tự ký (chúng thường là) thì tùy chọn --skip-cert phải được sử dụng, hoặc xác thực sẽ thất bại;
  • vì không có quá nhiều vấn đề khi xác thực lại, đã phải sử dụng --save-cookies để sử dụng cookie xác thực, trong khi người dùng đăng nhập vào điểm VPN từ xa (thời gian chờ là x giờ);
  • như được mô tả trong câu hỏi cuối cùng, để tập lệnh hoạt động, tùy chọn "Khi khởi chạy đăng nhập SSL Network Extender" phải được thay đổi thành "tự động";
  • 7776 / TCP trong localhost phải miễn phí, snxđể sở hữu nó, như snxconnectnói chuyện với snxviệc sử dụng nó;
  • tên máy chủ được truyền đến snxconnect/ snxđược xử lý như một máy chủ ảo và do đó bạn không thể sử dụng trực tiếp địa chỉ IP VPN;
  • tạo ra kiến ​​trúc 32 bit dường như là một yêu cầu để chạy snx_install.shtập lệnh;
  • bạn có thể chọn chạy như python2một sự đánh đổi để có ít không gian hơn, tuy nhiên vì python2 đang bị loại bỏ, snxconnecttrong tương lai gần có thể không hỗ trợ nó;
  • từ việc sử dụng giao diện máy khách web, rõ ràng tôi cần phải vá / xóa tất cả các /sslvpnchuỗi, vì các URL của tôi không bắt đầu bằng /sslvpn. Tôi sẽ kiểm tra trường hợp cụ thể của bạn. Tôi hoàn toàn không biết liệu sự hiện diện của chuỗi đó trong mã có phải là do một phiên bản cũ hay không, sẽ thích một số phản hồi;
  • trong snxconnecttên máy chủ Checkpoint phải là tên chính xác mà webinterface đang hiển thị cho bạn khi được xác thực ở đó, vì nó là máy chủ ảo web. Nếu không, bạn đã thắng thành công khi thiết lập VPN;
  • Lần đầu tiên snxđược sử dụng, một tệp có chữ ký của máy chủ VPN / Checkpoint sẽ được tạo tại /etc/snx/USER.db;
  • Nếu bạn cần phải sử dụng OTP từ dòng lệnh, bạn phải sử dụng snxconnectnhư snxmột mình không hỗ trợ nó.

Về việc loại bỏ các chuỗi '/ sslvpn'. Máy chủ mà tôi kết nối có nó trên URL, vì vậy tôi đã không thực hiện bước đó. Thật thú vị khi chỉ ra điều này trên câu trả lời, vì nó có thể xảy ra với người khác.
Wiley Marques

@WileyMarques Cảm ơn phản hồi, tôi đã nghi ngờ rằng nó sẽ khác với một số người, bởi vì trong phiên bản github / pip, URL ở đó.
Rui F Ribeiro

1
VPN của tôi sử dụng đa thông tin, vì vậy tôi thấy tôi phải thêm -MC yesvào snxconnectlệnh để làm cho nó hoạt động trong trường hợp của tôi. Làm việc như một cơ duyên bây giờ, cảm ơn rất nhiều vì điều này, Rui!
Vito
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.