使用Linux上的OpenConnect SSL VPN客户端连接到VPN服务器
OpenConnect是最初创建,以支持思科的AnyConnect SSL VPN的SSL VPN客户端。
它已被移植以支持现在称为脉冲连接安全的瞻博网络SSL VPN。
在本教程中,我们将查看OpenConnect SSL VPN客户端的安装和使用,以连接到Cisco的AnyConnect SSL VPN和Juniper Pulse Connect Secure。
OpenConnect SSL客户端的函数
从官方上,OpenConnect SSL客户端具有以下函数:通过HTTP代理连接,包括Libproxy支持自动代理配置。
通过Socks5 Proxy进行自动代理配置。
使用自动检测IPv4和IPv6地址,路由。
通过HTTP Forms的routes.Authentication。
使用SSL证书 - 来自本地文件,可信平台模块和PKCS#11 SmartCards.Authentication使用SecuriD软件令牌(在Libstoken)使用Oath TOTP或者Hotp软件令牌构建时身份验证。
使用Yubikey Oath令牌(用libpcsclite构建时)使用yubkentication多种配置之间进行选择关于VPN服务器列表的HTTPS和DTLS.Automatic更新单个VPN server.Data传输通过TCP(HTTPS)或者UDP(DTLS或者ESP).Keepalive和端点失效检测/configuration.Roaming支持,允许重新连接当本地IP地址更改时。
在没有root权限的情况下运行"Cisco Secure Desktop"(请参阅此处)和"GlobalP"旋转臀部报告"。
在Linux上安装OpenConnect SSL客户端
现在让我们看看在我们喜欢的Linux发行版上安装OpenConnect SSL客户端的不同方式:
在Arch Linux上安装OpenConnect SSL客户端
对于Arch Linux用户及其衍生分布,我们可以从官方Pacman存储库安装OpenConnect。
sudo pacman -S openconnect
也可以使用yaourt来完成同样的事情:
$yaourt -S openconnect
在Debian/Ubuntu上安装OpenConnect SSL客户端
对于Debian及其衍生品,请使用APT包管理器安装OpenConnect包。
sudo apt update sudo apt-get install openconnect
在CentOS/RHEL上安装OpenConnect SSL客户端
为CentOS和RHEL中, openconnect
软件包可从 epel
存储库。
添加存储库,然后安装OpenConnect包:
sudo yum install epel-release sudo yum install openconnect
在Fedora上安装OpenConnect SSL客户端
对于Fedora,该包也可从欧莱克提供。
只有程序包管理器的名称更改:
sudo dnf install openconnect
在MacOS上安装OpenConnect SSL客户端
对于MacoS用户,请使用OpenConnect包使用 brew
$brew install openconnect
如何使用OpenConnect连接到SSL VPN服务器(手动)
一旦OpenConnect包已成功安装在操作系统上,我们应该准备连接到SSL VPN服务器,该服务器可以思科的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).
如何连接到SSL VPN服务器使用Openconnect一个bash脚本
我编写了一个Bash脚本,简化了连接,以便于连接到Cisco Autoconnect SSL VPN服务器。
把它放在你的 ~/.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客户端
为了连接到Pulse连接安全服务器,我们需要了解其证书的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>