Ubuntu系统下部署Cisco AnyConnect VPN

释放双眼,带上耳机,听听看~!

Ubuntu系统下部署Cisco AnyConnect VPN

AnyConnect的优势有:
1)长连接,待机不会断开;
2)速度快,稳定性好;
3)安全性好,全程加密;另外,支持freeradius认证功能;
4)能够下发路由表给客户端,这个功能是最激动人心的。因为如果长期连接,那么肯定是某些服务走VPN,而国内的网站可以走自己的网络体验最好。
5)耗电量较低;

AnyConnect是思科的安全远程接入解决方案,部署Anyconnect需要安装ocserv(OpenConnect server),它是一个OpenConnect SSL协议服务端,0.3.0版后兼容使用AnyConnect SSL 协议的终端。ocserv(OpenConnect Server)是由 GnuTLS 的作者 Nikos Mavrogiannopoulos 开发的一个能够兼容 Cisco Anyconnect 的开源服务端( SSL VPN),支持*nix/BSD 平台,最早是作为 OpenConnect(Linux下的兼容Cisco ASA的开源客户端)对应的服务端,在后续版本( 0.3.0 开始)中加入了对 Cisco Anyconnect 客户端的支持。下面介绍在ubuntu系统下安装Anyconnect的操作记录:

安装过程如下(采用一键安装方式)
root@localhost:~# apt-get update && apt-get upgrade -y
root@localhost:~# apt-get install wget
root@localhost:~# wget http://git.io/p9r8 –no-check-certificate -O ocservauto.sh       //独立下载地址:下载
——————————————————————————————-
如果以前使用了该脚本进行安装,只需要输入下面命令更新(只更新相关脚本,服务器不会更新)
root@localhost:~# wget http://git.io/ocservauto -O- –no-check-certificate|bash –
——————————————————————————————-
root@localhost:~# bash ocservauto.sh

Ubuntu系统下部署Cisco AnyConnect VPN

Ubuntu系统下部署Cisco AnyConnect VPN

Ubuntu系统下部署Cisco AnyConnect VPN

Ubuntu系统下部署Cisco AnyConnect VPN

Ubuntu系统下部署Cisco AnyConnect VPN

接着会进行一段时间的安装,如果顺利的话,出现下面信息则说明安装成功了!

Ubuntu系统下部署Cisco AnyConnect VPN

—————————————————————————————————————————————————————–
如果安装失败可以查阅安装日志文件ocinstall.log,日志文件在脚本所在文件夹下,可以使用下面命令逐步阅读
一般情况下安装成功之后,服务器就在启动状态了。

我的部署机器由于是虚拟机(没有外网ip),采用squid代理方式对外访问,导致脚本中定义的ftp方式对freeradius-client-1.1.7.tar.gz和ocserv-0.10.8.tar.xz安装包下载失败。
解决办法:将上面这两个包单独下载下来,放在和ocservauto.sh脚本同一目录路径下,然后再重新执行脚本进行安装即可。
——————————————————————————————————————————————————————

这里可以简单使用本地浏览器查看服务器信息,在本地浏览器输入 https://IP 或域名:(英文冒号)端口

ocserv的默认安装目录是/etc/ocserv,相关文件都在这个路径下,如配置文件ocserv.conf等

1
2
3
4
root@localhost:~# cd /etc/ocserv/
root@localhost:/etc/ocserv# ls
ca-cert.pem  config-per-group  dh.pem    ocserv.conf     ocserv-up.sh  server-cert.pem
CAforOC      defaults          ocpasswd  ocserv-down.sh  profile.xml   server-key.pem

ocserv服务在安装后默认就启动了,安装中选择证书登陆方式,即https方式,所以tcp端口选择的是443

1
2
3
4
5
6
7
8
root@localhost:~# ps -ef|grep ocserv
root       726     1  0 01:22 ?        00:00:00 ocserv-main
root       728   726  0 01:22 ?        00:00:00 ocserv-secm
root       865   849  0 01:26 pts/1    00:00:00 grep –color=auto ocserv
root@localhost:~# lsof -i:443
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
ocserv-ma 726 root    4u  IPv4 10406026      0t0  TCP *:https (LISTEN)
ocserv-ma 726 root    5u  IPv6 10406027      0t0  TCP *:https (LISTEN)

ocserv服务启动命令:
/etc/init.d/ocserv   start/stop/restart/status
—————————————————————————————————————————————-
ocserv服务启动过程中若是出现下面两个小报错:
1)/usr/sbin/ocserv: error while loading shared libraries: libtspi.so.1: cannot open shared object file:No such file or directory
解决办法:
root@localhost:~# apt-get install libtspi-dev

2)/usr/sbin/ocserv: error while loading shared libraries: libgnutls.so.28: cannot open shared objectfile: No such file or directory
解决办法:安装libgnutls
下载地址:下载
root@localhost:~# dpkg -i gnutls_3.3.8-13_amd64.deb
root@localhost:~# find / -name libgnutls.so.28
/usr/lib64/libgnutls.so.28
root@localhost:~# ln -s /usr/lib64/libgnutls.so.28 /usr/lib/
————————————————————————————————————————————–

可以在ocserv.conf文件里修改ocserv服务端口和域名等信息,修改后重启ocserv服务即可

1
2
root@localhost:~# /etc/init.d/ocserv restart
[ ok ] Restarting ocserv (via systemctl): ocserv.service.


———————————————————————————————————-

安装Anyconnect客户端工具,安装后,就可以使用上面安装ocserv过程中定义的信息连接了:

Ubuntu系统下部署Cisco AnyConnect VPN

特别注意:由于安装过程中选择的是自签证书,是不受信任的证书,所以客户端连接时需要关掉设置中的“阻止不信任的服务器”,即下面截图中的第四项”Block connection to untrusted servers”不要勾选!不管采不采用证书验证,都不要勾选第四项!。然后勾选第三项(第二项勾选与否都不要紧)

Ubuntu系统下部署Cisco AnyConnect VPN

点击“connect”,接着点击提示窗口中点击“Connect Anyway”,接着按照提示输入用户名和密码,正常连接就ok了。

Ubuntu系统下部署Cisco AnyConnect VPN

Ubuntu系统下部署Cisco AnyConnect VPN

连接成功后,点击右下角的Anyconnect标志图,图上有一把钥匙的状态就说明已经连上了。

Ubuntu系统下部署Cisco AnyConnect VPN

—————————————————-用户管理即登陆验证方式————————————————-
1)用户名和密码验证(客户端登陆时默认肯定会有的验证方式)

1
2
3
4
5
root@localhost:~# cat /etc/ocserv/ocserv.conf
……..
auth = “plain[passwd=/etc/ocserv/ocpasswd]”            //默认用户名和密码验证
enable-auth = certificate                              //用户名和密码验证同时,允许证书验证
auth-timeout = 40

创建用户名和密码命令(或重置用户密码):

1
2
3
4
5
6
7
8
9
10
root@localhost:~# ocpasswd -c /etc/ocserv/ocpasswd guohuihui
Enter password:
Re-enter password:
root@localhost:~# ocpasswd -c /etc/ocserv/ocpasswd liumengnan
Enter password:
Re-enter password:
root@localhost:~# cat /etc/ocserv/ocpasswd
wangshibo:*:$5$.GQf1omiKmvGElhU$q1yNyUxPRAHygEGaG98cwVGfYuJjSarsTkXROinhBX8
guohuihui:*:$5$z.H5ipnHSJCSigFU$30mseKwk13ZG9MuD3QSeBtYmX6xLOcafVPpioXkulA2
liumengnan:*:$5$mVSHMbBekX9vofxV$n7bc8LkJB9kjXl6OADGWySfTqkIBeyIGJRvk5A/ehHC

2)证书验证
除了用户名和密码验证之外,还可以进行证书验证。用户在AnyConnect客户端第一次登陆时会提示加载证书。首次登陆加载后,后面再登陆就不会提示加载证书了!
所有用户的 p12 证书文件可以在放置脚本的目录下找到,导入证书时需要输入证书创建时设定的密码。
新建用户证书命令:
root@localhost:~# bash ocservauto.sh gc

Ubuntu系统下部署Cisco AnyConnect VPN

Ubuntu系统下部署Cisco AnyConnect VPN

用户证书创建后会保存到和脚本同一路径下:
root@localhost:~# ls
huanqiu.p12 ocinstall.log ocservauto.sh vars_ocservauto

吊销客户证书命令
root@localhost:~# bash ocservauto.sh rc

Ubuntu系统下部署Cisco AnyConnect VPN

Ubuntu系统下部署Cisco AnyConnect VPN

——————————————————-脚本其他参数说明—————————————————
0)查看帮助
root@localhost:~# bash ocservauto.sh help

Ubuntu系统下部署Cisco AnyConnect VPN

1)平滑升级ocserv(升级后原来的用户数据都会保留)
root@localhost:~# bash ocservauto.sh ug

2)强制重装ocserv(注意这样会丢失之前的用户数据和配置)
root@localhost:~# bash ocservauto.sh ri

3)同时开启证书登录和用户名密码登录(请务必首先选择任意一种登录方式来完成安装,接着再使用下面命令)
root@localhost:~# bash ocservauto.sh pc

4)关于相同客户端证书可以登录多个服务器的方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
假定有三台服务器ABC:
 
在A服务器上,通过本脚本安装ocserv并选择使用证书登录方式。
在/etc/ocserv目录下可以找到ca-cert.pem文件。这里复制备用,ca-cert.pem不用保密,可以直接挂在公网上。
 
在BC服务器上下载本脚本,并且请在同文件夹下放置A服务器上的ca-cert.pem,然后执行:
# bash ocservauto.sh occ
这里ABC服务器共用了A服务器的验证证书。
 
想要获取新证书,请在A服务器上执行
# bash ocservauto.sh gc
也可以使用该客户端证书登录BC服务器。
 
如想要吊销证书,请在A服务器上执行
# bash ocservauto.sh rc
吊销所有想要吊销的证书。
 
由于不支持在线吊销证书列表,所以必须还要把A服务器上的/etc/ocserv/crl.pem文件同时复制到BC服务器相同位置,且修改ocserv的配置文件:
crl = /etc/ocserv/crl.pem

—————————————————登陆方式解说—————————————————
在上面一键安装过程中,选择了自签CA,安装后产生pem文件,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@localhost:~# cd /etc/ocserv/
root@localhost:/etc/ocserv# ll *.pem
-rw-r–r– 1 root root 1793 Jan 16 23:34 ca-cert.pem
-rw-r–r– 1 root root 1003 Jan 17 02:46 crl.pem
-rw-r–r– 1 root root 2406 Jan 16 23:34 dh.pem
-rw-r–r– 1 root root 3322 Jan 16 23:34 server-cert.pem
-rw-r–r– 1 root root 1675 Jan 16 23:34 server-key.pem
root@localhost:/etc/ocserv# cat ocserv.conf |grep pem
server-cert = /etc/ocserv/server-cert.pem
server-key = /etc/ocserv/server-key.pem
dh-params = /etc/ocserv/dh.pem
ca-cert = /etc/ocserv/ca-cert.pem
crl = /etc/ocserv/crl.pem
# http_anchors = FILE:/etc/ocserv-ca.pem

1)用户名密码登录
1–自签CA(证书授权中心),取得ca-cert.pem(不需要保密,类比公钥)和ca-key.pem(需要保密,类比私钥)。
2–CA签发信任服务器证书,取得server-cert.pem(不需要保密,类比公钥)、server-key.pem(需要保密,类比私钥)。
3–该模式下,密码库是/etc/ocserv/ocpasswd文件。
4–如果想使用购买的服务器证书,请参考Nginx服务器证书配置,只需将对应的crt、key 文件重命名为server-cert.pem、server-key.pem,并覆盖到/etc/ocserv/文件夹下面。

2)证书登录
1–自签CA(证书授权中心),取得ca-cert.pem(不需要保密,类比公钥)和ca-key.pem(需要保密,类比私钥)。
2–CA签发信任服务器证书,取得server-cert.pem(不需要保密,类比公钥)、server-key.pem(需要保密,类比私钥)。
3–CA签发信任客户端证书,最终取得username.p12。
4–这里证书授权中心的ca-cert.pem既当作服务器证书的根证书,也当作客户端证书的验证证书。
5–由于CA证书当作验证证书,签发客户端证书就需要这个ca-key.pem,可以比同为密码库。
6–如果想使用购买的服务器证书,只需将对应的crt、key 文件重命名为server-cert.pem、server-key.pem,并覆盖到/etc/ocserv/文件夹下面。

3)改善优化
修改的参数都在/etc/ocserv/ocserv.conf文件中。
a)对于某些移动宽带、长城带宽等,往往经过了很多重NAT,容易出现连接成功但是无法打开网页情况,请改小dpd、mobile-dpd数值。
b)如果vps对于本地延迟甚高,取消注释output-buffer项。

本文来自互联网

给TA打赏
共{{data.count}}人
人已打赏
技术

网站搬家停用了SSL,修改原图片路径的方法

2017-2-7 18:04:28

技术

Windows USB/DVD Download Tool

2017-3-1 14:59:51

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索