debian8上ocserv anyconnect对接sspanel v3 mod(魔改版)。 – outs – 宅…orz

debian8上ocserv anyconnect对接sspanel v3 mod(魔改版)。 – outs – 宅…orz

最后修改日期:2018-04-1
文章目录
  • 基础准备
    • sspanel面板
  • 对接
    • freeradius服务端设置
      • 测试freeradius服务端
  • freeradius客户端
  • ocserv anyconnect
  • 结束

我们知道,sspanel v3 mod(sspanel魔改版)是支持vpn开户之类的功能的,这里记录一下anyconnect和sspanel的对接。

基础准备

sspanel面板

这里参考我以前发的文章:
sspanel面板的安装:sspanel v3 魔改版前端安装

对接

这里默认已经按照sspanel面板里面的教程安装好了freeradius的服务端。

freeradius服务端设置

测试freeradius服务端

由于在之前我们已经把freeradius和服务端的数据库设置好了,如果你已经创建了用户,那么在freeradius的数据库当中应该能看到用户。
浏览器打开 http://你的vps ip/phpmyadmin
用户 : root
密码 :安装 lnmp 时设置的
查看freeradius数据库radcheck表里面的用户名和密码,username是用户名,value是密码。记下来之后会用得到。

回到freeradius的服务端,先停止正在运行的freeradius服务端。

  1. service freeradius stop

新建一个screen,用以调试freeradius。

  1. screen -S freeradius

如果提示 -bash: screen: command not found,则安装screen apt install screen
以调试模式运行freeradius。

  1. freeradius -X

然后在键盘上先输入 ctrl+A 然后按 D 切换SSH窗口。
执行以下命令。

  1. radtest 用户名 密码 localhost 0 testing123

如果看到 Access-Accept则说明服务端设置正确。
如果看到 Access-Reject 说明验证失败,你需要检查使用的命令。
如果修改了主机名,一定要当心出错。
当我们确认freeradius工作正常之后我们用freeradius客户端来访问freeradius服务端。不过在那之前我们需要先设置freeradius服务端设置。
首先打开设置文件(服务端上的客户端配置)/etc/freeradius/clients.conf
我们在这份文件可以对每个客户端进行设置(以ip区分),以及所有客户端的一些全局设置。内容很多,我们不一一详谈了。
我们直接找到第30行的 client localhost,我们刚才测试工具之所以能正确访问freeradius服务端,是因为默认设置下,localhost已被加入这份设置,即localhost可以访问freeradius服务端。

而我们之前在测试命令中使用的 testing123在这份文件的第101行,这个设置用来指定客户端发送请求时带的密钥,若密钥错误将导致服务端返回验证失败的信息。这个设置很重要,我们这里不去修改他,但是真正的生产环境需要修改这个设置。

为了方便起见,我们不另外再开一个客户端设置了,我们直接修改现有的客户端设置即 client localhost 的设置中的客户端ip设置。找到第34行的 ipaddr = 127.0.0.1修改为 ipaddr = anyconnect所在服务器的IP
保存这个文件。注意debian8中不支持 ipaddr = * 或者 ipv4addr = *这样的写法,具体原因未知,但是centos是可以写成ipv4addr = * 让任何地址都可以连接服务端。
freeradius服务端测试完成后,可以用ctrl+c退出调试模式,用service freeradius start 来后台启动freeradius。

freeradius客户端

这里我们在装有anyconnect的服务器上安装freeradius的客户端。
安装相关依赖

  1. apt install gcc make -y

安装freeradius客户端

  1. wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-client-1.1.7.tar.gz
  2. tar -zxvf freeradius-client-1.1.7.tar.gz
  3. cd freeradius-client-1.1.7
  4. ./configure
  5. make
  6. make install

为了测试freeradius服务端在这台服务器上也可以访问,我们可以在这台服务器上也安装测试工具并进行测试(假设freeradius服务器地址为1.1.1.1)
安装freeradius调试工具。

  1. apt-get install freeradius-utils -y

测试。

  1. radtest 用户名 密码 1.1.1.1 0 testing123

确认无误后我们进行接下来的设置。首先我们打开freeradius客户端设置文件。
修改 /usr/local/etc/radiusclient/radiusclient.conf
第37行改为 authserver 1.1.1.1
第42行改为 acctserver 1.1.1.1
保存这份文件
打开freeradius客户端的服务器设置
修改 /usr/local/etc/radiusclient/servers
添加1.1.1.1 testing123至最后一行,保存这份文件。
保存这份文件。自此,我们已经设置好了freeradius客户端需要做的设置。我们接下来让anyconnect使用freeradius作为验证模块。

ocserv anyconnect

ocserv anyconnect的安装:
自签SSL证书版本安装(客户端连接时会出现警告,但是更简单):安装自签SSL证书ocserv
可信SSL证书版本安装(客户端连接时不会出现警告,但是更复杂):可信SSL证书版ocserv
这一步可以不添加VPN用户。
注意:先安装ocserv anyconnect再安装freeradius-client会出现ocserv anyconnect没有freeradius模块,导致ocserv anyconnect无法正常启动,这个时候只需要重新编译安装ocserv anyconnect即可。
修改ocserv配置文件 /etc/ocserv/ocserv.conf
将第一行的验证方式修改为:

  1. auth = "radius[config=/usr/local/etc/radiusclient/radiusclient.conf,groupconfig=true]"

这样,我们就使得ocserv使用freeradius来进行用户验证。
使用ocserv -f -d 1来测试一下,没有问题的话则ctrl+C退出。然后使用 service ocserv start在后台来启动ocserv。

结束

那么关于ocserv对接sspanel的教程就到这里结束了。
参考链接:http://www.opscaff.com/2017/03/01/ocserv-radius-%E8%AE%A4%E8%AF%81%E6%90%AD%E5%BB%BA-freeradius-mysql/