在Linux上使用OpenConnect SSL VPN客户端连接到VPN Server
OpenConnect是一个SSL VPN客户端,最初创建是为了支持Ciscos AnyConnect SSL VPN。此后已被移植为支持Juniper SSL VPN(现在称为Pulse Connect Secure)。在本指南中,我们将研究OpenConnect SSL VPN客户端连接到Cisco AnyConnect SSL VPN和Juniper Pulse Connect Secure的安装和使用。
OpenConnect SSL客户端的功能
OpenConnect SSL Client在官方上具有以下功能:通过HTTP代理进行连接,包括对自动代理配置的libproxy支持;通过SOCKS5代理进行连接;自动检测IPv4和IPv6地址,路由;通过HTTP形式进行身份验证;使用SSL进行身份验证来自本地文件,受信任的平台模块和PKCS#11智能卡的证书。使用SecurID软件令牌进行身份验证(使用libstoken构建时)使用OATH TOTP或者HOTP软件令牌进行身份验证使用Yubikey OATH令牌(使用libpcsclite构建时)进行身份验证用户组支持选择在一台VPN服务器上的多个配置之间;通过TCP(HTTPS)或者UDP(DTLS或者ESP)进行数据传输;在HTTPS和DTLS上都进行Keepalive和Dead Peer检测; VPN服务器列表/配置的自动更新;漫游支持,允许重新连接本地IP地址更改。可以在没有root特权的情况下运行。支持Cisco Secure Desktop(请参阅此处)和GlobalProte ct HIP报告。
在Linux上安装OpenConnect SSL Client
现在让我们看看在我们喜欢的Linux发行版上安装OpenConnect SSL Client的不同方法:
在Arch Linux上安装OpenConnect SSL Client
对于Arch Linux用户及其派生发行版,我们可以从Pacman官方存储库安装openconnect。
sudo pacman -S openconnect
也可以使用yaourt完成此操作:
$yaourt -S openconnect
在Debian/Ubuntu上安装OpenConnect SSL客户端
对于Debian及其衍生版本,请使用aptpackage管理器安装openconnect软件包。
sudo apt update sudo apt-get install openconnect
在CentOS/RHEL上安装OpenConnect SSL客户端
对于CentOS和RHEL,可以从epel存储库中获得openconnect软件包。添加存储库,然后安装openconnect软件包:
sudo yum install epel-release sudo yum install openconnect
在Fedora上安装OpenConnect SSL客户端
对于Fedora,该软件包也可以从epel获得。只是软件包管理器的名称发生了变化:
sudo dnf install openconnect
在macOS上安装OpenConnect SSL Client
对于macOS用户,请使用" brew"安装openconnect软件包。
$brew install openconnect
如何使用Openconnect连接到SSL VPN服务器(手册)
一旦在操作系统上成功安装了openconnect软件包,就应该准备连接到SSL VPN服务器,该服务器可以使用Cisco AnyConnect SSL VPN和Juniper Pulse Connect Secure。
简单连接遵循以下语法:
$sudo openconnect -u user --passwd-on-stdin vpnserver
系统将提示我们输入密码,请参见以下示例:
$sudo openconnect 192.168.1.1 POST https://192.168.1.1/ Connected to 192.168.1.1:443 SSL negotiation with 192.168.1.1 Enter 'yes' to accept, 'no' to abort; anything else to view: yes Connected to HTTPS on 192.168.1.1 Got HTTP response: HTTP/1.0 302 Object Moved GET https://192.168.1.1/ Connected to 192.168.1.1:443 SSL negotiation with 192.168.1.1 Server certificate verify failed: signer not found Connected to HTTPS on 192.168.1.1 Got HTTP response: HTTP/1.0 302 Object Moved GET https://192.168.1.1/+webvpn+/index.html SSL negotiation with 192.168.1.1 Connected to HTTPS on 192.168.1.1 Please enter your username and password. GROUP: [ANYCONNECT_PROFILE] Please enter your username and password. Username:jmutai Password: POST https://192.168.1.1/+webvpn+/index.html Got CONNECT response: HTTP/1.1 200 OK CSTP connected. DPD 30, Keepalive 20 Connected as 192.168.4.2, using SSL Established DTLS connection (using GnuTLS). Ciphersuite (DTLS0.9)-(DHE-RSA-4294967237)-(AES-256-CBC)-(SHA1).
如何使用Bash脚本使用Openconnect连接到SSL VPN服务器
我写了一个bash脚本来简化连接,以方便连接到Cisco Autoconnect SSL VPN服务器。根据shell,将其放入~/.zshrc或者~/.bashrc。
myvpn () { local vpn_server="vpnserver" local vpn_username="user" local vpn_password="password" # try connect while true; do retry_time=$(($(date +%s) + 30)) sudo openconnect \ -u $vpn_username $vpn_server --non-inter --passwd-on-stdin <<< "$vpn_password" current_time=`date +%s` if [ $current_time -lt retry_time ]; then sleep $(( $retry_time - $current_time )) fi done }
提供正确的变量并保存文件。现在,每次我们想连接到VPN时,请按名称调用该函数:
$myvpn
Juniper 客户端
为了连接到Pulse Connect Secureserver,我们需要知道其证书的SHA-1.
openconnect --servercert=sha1:<HASH> \ --authgroup="single-Factor Pulse Clients" \ --protocol=nc <VPN_SERVER_ADDRESS>/dana-na/auth/url_6/welcome.cgi \ --pid-file="/var/run/work-vpn.pid" --user=<USERNAME>
在本指南中,我们学习了如何在Linux和macOS上安装和使用OpenConnect SSL客户端。