前提条件

阅读本文前,您需要搭建好PPTP,如果仍未搭建,可以参考:http://www.xj123.info/2301.html

如果您需要配置DaloRADIUS,那么您还需要安装LAMP,可以参考:http://www.xj123.info/2223.html

PPP:Point-to-Point Protocol,点对点协议,是工作在数据链路层的连接协议。常见的ADSL连接时使用的PPPoE便是指的以太网上的点对点协议(Point-to-Point Protocol over Ethernet)。而我们创建连接VPN时也会通过PPP来进行,*nix操作系统上的pppd能够完成这一任务,其进行用户验证的默认方法便是chap-secrets文件。配置完FreeRADIUS后,我们需要把用户验证这一环节交给RADIUS服务器来完成。

RADIUS:Remote Authentication Dial In User Service,远程用户拨号验证服务,基于RFC2865和RFC2866。具体的工作原理挺复杂的,仔细阅读这两个RFC标准应该可以搞明白。简单的说,它是一个兼顾验证(authentication)、授权(authorization)及记账(accounting)三种服务的协议,即AAA协议。RADIUS运行在应用层,使用UDP进行传输,它被广泛用于ISP和企业用来控制Internet或内部网络、无线网络的访问。

FreeRADIUS:是一个实现RADIUS协议的软件,基于GPLv2开源。它是目前部署最广泛的开源RADIUS软件。

daloRADIUS:是一个FreeRADIUS的Web挂历程序,使用PHP编写。

安装配置

yum install freeradius2 freeradius2-mysql freeradius2-utils

2014.12.10 更新 目前yum官方源已经取消了freeradius1的安装包,请执行下面的命令安装freeradius

yum install freeradius freeradius-mysql freeradius-utils

安装完以后,编辑/etc/raddb/users,加上

testing Cleartext-Password := “password”

打开radius的测试模式,执行radiusd -X,然后打开一个新终端,执行radtest testing password 127.0.0.1 0 testing123,如果看到Access-Accept,说明没问题,如果没看到,返回去检查。
测试连接成功后,我们可以把users里临时加上去的第一行删除。

下载ppp源码

wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.5.tar.gz
tar zxvf ppp-2.4.5.tar.gz
cp -R /root/ppp-2.4.5/pppd/plugins/radius/etc/ /usr/local/etc/radiusclient

编辑/usr/local/etc/radiusclient/servers,加上一组服务器和密钥,本例中为“LaoxieVPN”

localhost LaoxieVPN

编辑/usr/local/etc/radiusclient/dictionary

最后一行改成INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft,然后添加一行INCLUDE /usr/local/etc/radiusclient/dictionary.merit

编辑/etc/raddb/clients.conf

把client localhost段下的secret改成刚才指定的密钥。

编辑/etc/raddb/radiusd.conf,找到$INCLUDE sql.conf,去掉前面的#;找到$INCLUDE sql/mysql/counter.conf,去掉前面的#。

进入mysql,添加数据库

create database radius;
flush privileges;
exit;

编辑/etc/raddb/sql.conf,配置login(用户名),password(密码),radius_db(数据库名)等字段,并找到readclients一行,设为yes并去掉注释符号#。

编辑/etc/raddb/sites-enabled/default,根据下面的说明注释或取消注释相应的行:

  • authorize段,关掉files,打开sql,也可以把unix关掉
  • preacct段,关掉files
  • accounting段,打开sql,也可以把unix关掉
  • session段,打开sql
  • post-auth段,打开sql
  • pre-proxy段,关掉files

到这一步,我们的FreeRADIUS就算配置好了,用户信息都将保存在MySQL数据库中。至于数据库中的表,我们在后面统一导入。

配置DaloRADIUS

wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius-0.9-8/daloradius-0.9-8.tar.gz
pear install DB
mkdir /usr/share/daloRadius
tar zxvf daloradius-0.9-8.tar.gz
mv daloradius-0.9-8/* /usr/share/daloRadius/
rm -r daloradius-0.9-8

注意,这里需要安装pear,如果bash提示找不到命令,那么请自行google安装方法

下面导入数据库

mysql -uroot -p radius < /usr/share/daloRadius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql

编辑/usr/share/daloRadius/library/daloradius.conf.php,修改daloRADIUS的配置文件。首先是MySQL登录信息:

$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_USER'] = 'radius'; //根据自己实际情况填写
$configValues['CONFIG_DB_PASS'] = ''; // 设为自己的密码
$configValues['CONFIG_DB_NAME'] = 'radius';

下面有一个daloRADIUS的bug,默认配置中有一个表名和我们导入的不一样,把它改过来:

$configValues['CONFIG_DB_TBL_RADUSERGROUP'] = 'radusergroup';

然后修改daloRADIUS的路径:

$configValues['CONFIG_PATH_DALO_VARIABLE_DATA'] = '/usr/share/daloRadius/var';

网页目录下建目录链接

cd /usr/local/apache/htdocs/
ln -s /usr/share/daloRadius/ admin

daloRADIUS管理页面地址就是 http://ip/admin

默认用户名administrator和密码radius登录

重启mysql和apache服务

service httpd restart
service mysqld restart

daloRADIUS似乎写的不怎么样,最新稳定版已经是三年之前的了,不过作者直到现在还在更新SVN,下次有机会可以用最新的SVN版本试试看。在Management中添加一个新用户,注意密码类型选择Cleartext-Password。

在终端里再次启动radiusd -X,同时在另一个终端中用radtest username password localhost 0 LaoxieVPN测试一下,看看现在是不是还能正常接通,如果没问题就OK,让我们把这套系统接驳到PPP上。

配置Pppd

编辑/etc/ppp/options.pptpd,里面已经有许多配置选项了,我们要保证有下面的几行,如果没有就添加上去,为了保障用户登录的安全我们限制只使用MS-CHAPv2:

refuse-pap
refuse-chap
refuse-mschap
require-mppe-128
require-mschap-v2

在配置文件最后加上3行:

plugin radius.so
plugin radattr.so
radius-config-file /usr/local/etc/radiusclient/radiusclient.conf
流量控制服务

建立表格

INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Auth-Type',':=','Local');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Service-Type',':=','Framed-User');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Address',':=','255.255.255.255');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Netmask',':=','255.255.255.0');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Acct-Interim-Interval',':=','600');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Max-Monthly-Traffic',':=','5368709120');
INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('user','Simultaneous-Use',':=','1');

以上前四行不用改动,acct-interim-interval是计算流量的间隔(600秒),意味着每隔10分钟记录当前流量。倒数第二行是每月最大流量,这里是5G(单位是字节)。最后一行是允许同时连接数目。

访问daloRADIUS,在Management中添加一个新用户,注意密码类型选择Cleartext-Password。用户组选择user

radius -X
radtest username password localhost 0 LaoxieVPN

测试一下,看看现在是不是还能正常接通,如果没问题就OK

如果结果中有Access-Accept就代表成功了,否则退回去检查设置。

测试成功的话添加在认证时检测流量的语句,打开/usr/local/etc/raddb/sites-enabled/default,找到authorize一节插入:

update request {
Group-Name := "%{sql:SELECT groupname FROM radusergroup WHERE username='%{User-Name}' ORDER BY priority}"
}
if ("%{sql: SELECT SUM(acctinputoctets+acctoutputoctets) FROM radacct WHERE username='%{User-Name}' AND date_format(acctstarttime, '%Y-%m-%d') >= date_format(now(),'%Y-%m-01') AND date_format(acctstoptime, '%Y-%m-%d') <= last_day(now());}" >= "%{sql: SELECT value FROM radgroupreply WHERE groupname='%{Group-Name}' AND&nbsp;attribute='Max-Monthly-Traffic';}") {
reject
}
启动服务
service radiusd start
chkconfig radiusd on
chkconfig pptpd on

2013.06.03新增内容:自动断线检测脚本

#!/bin/bash
MYSQL_PASS=XXXXXXXXXX
/usr/local/mysql/bin/mysql -uroot -p$MYSQL_PASS -e "UPDATE radius.radacct SET acctstoptime = acctstarttime + acctsessiontime WHERE ((UNIX_TIMESTAMP(acctstarttime) + acctsessiontime + 240 - UNIX_TIMESTAMP())<0) AND acctstoptime IS NULL;"

至此,已经完成所有操作了!

本文主要参考以下文章,感谢以下所有文字创建者

在PPTP VPN服务器上配置FreeRADIUS+DaloRADIUS实现用户跟踪管理
PPTP+FreeRADIUS+MySQL搭建VPN认证和流量控制
ARA (ASN RADIUS admin) – FreeRADIUS 管理程序安装总结

原文地址 : http://www.xj123.info/2323.html

本站遵循 : 署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5)

版权声明 : 原创文章转载时,请务必以超链接形式标明文章原始出处

前提条件

阅读本文前,您需要搭建好PPTP,如果仍未搭建,可以参考:http://www.xj123.info/2301.html

如果您需要配置DaloRADIUS,那么您还需要安装LAMP,可以参考:http://www.xj123.info/2223.html

PPP:Point-to-Point Protocol,点对点协议,是工作在数据链路层的连接协议。常见的ADSL连接时使用的PPPoE便是指的以太网上的点对点协议(Point-to-Point Protocol over Ethernet)。而我们创建连接VPN时也会通过PPP来进行,*nix操作系统上的pppd能够完成这一任务,其进行用户验证的默认方法便是chap-secrets文件。配置完FreeRADIUS后,我们需要把用户验证这一环节交给RADIUS服务器来完成。

RADIUS:Remote Authentication Dial In User Service,远程用户拨号验证服务,基于RFC2865和RFC2866。具体的工作原理挺复杂的,仔细阅读这两个RFC标准应该可以搞明白。简单的说,它是一个兼顾验证(authentication)、授权(authorization)及记账(accounting)三种服务的协议,即AAA协议。RADIUS运行在应用层,使用UDP进行传输,它被广泛用于ISP和企业用来控制Internet或内部网络、无线网络的访问。

FreeRADIUS:是一个实现RADIUS协议的软件,基于GPLv2开源。它是目前部署最广泛的开源RADIUS软件。

daloRADIUS:是一个FreeRADIUS的Web挂历程序,使用PHP编写。

安装配置

yum install freeradius2 freeradius2-mysql freeradius2-utils

2014.12.10 更新 目前yum官方源已经取消了freeradius1的安装包,请执行下面的命令安装freeradius

yum install freeradius freeradius-mysql freeradius-utils

安装完以后,编辑/etc/raddb/users,加上

testing Cleartext-Password := “password”

打开radius的测试模式,执行radiusd -X,然后打开一个新终端,执行radtest testing password 127.0.0.1 0 testing123,如果看到Access-Accept,说明没问题,如果没看到,返回去检查。
测试连接成功后,我们可以把users里临时加上去的第一行删除。

下载ppp源码

wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.5.tar.gz
tar zxvf ppp-2.4.5.tar.gz
cp -R /root/ppp-2.4.5/pppd/plugins/radius/etc/ /usr/local/etc/radiusclient

编辑/usr/local/etc/radiusclient/servers,加上一组服务器和密钥,本例中为“LaoxieVPN”

localhost LaoxieVPN

编辑/usr/local/etc/radiusclient/dictionary

最后一行改成INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft,然后添加一行INCLUDE /usr/local/etc/radiusclient/dictionary.merit

编辑/etc/raddb/clients.conf

把client localhost段下的secret改成刚才指定的密钥。

编辑/etc/raddb/radiusd.conf,找到$INCLUDE sql.conf,去掉前面的#;找到$INCLUDE sql/mysql/counter.conf,去掉前面的#。

进入mysql,添加数据库

create database radius;
flush privileges;
exit;

编辑/etc/raddb/sql.conf,配置login(用户名),password(密码),radius_db(数据库名)等字段,并找到readclients一行,设为yes并去掉注释符号#。

编辑/etc/raddb/sites-enabled/default,根据下面的说明注释或取消注释相应的行:

  • authorize段,关掉files,打开sql,也可以把unix关掉
  • preacct段,关掉files
  • accounting段,打开sql,也可以把unix关掉
  • session段,打开sql
  • post-auth段,打开sql
  • pre-proxy段,关掉files

到这一步,我们的FreeRADIUS就算配置好了,用户信息都将保存在MySQL数据库中。至于数据库中的表,我们在后面统一导入。

配置DaloRADIUS

wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius-0.9-8/daloradius-0.9-8.tar.gz
pear install DB
mkdir /usr/share/daloRadius
tar zxvf daloradius-0.9-8.tar.gz
mv daloradius-0.9-8/* /usr/share/daloRadius/
rm -r daloradius-0.9-8

注意,这里需要安装pear,如果bash提示找不到命令,那么请自行google安装方法

下面导入数据库

mysql -uroot -p radius < /usr/share/daloRadius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql

编辑/usr/share/daloRadius/library/daloradius.conf.php,修改daloRADIUS的配置文件。首先是MySQL登录信息:

$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_USER'] = 'radius'; //根据自己实际情况填写
$configValues['CONFIG_DB_PASS'] = ''; // 设为自己的密码
$configValues['CONFIG_DB_NAME'] = 'radius';

下面有一个daloRADIUS的bug,默认配置中有一个表名和我们导入的不一样,把它改过来:

$configValues['CONFIG_DB_TBL_RADUSERGROUP'] = 'radusergroup';

然后修改daloRADIUS的路径:

$configValues['CONFIG_PATH_DALO_VARIABLE_DATA'] = '/usr/share/daloRadius/var';

网页目录下建目录链接

cd /usr/local/apache/htdocs/
ln -s /usr/share/daloRadius/ admin

daloRADIUS管理页面地址就是 http://ip/admin

默认用户名administrator和密码radius登录

重启mysql和apache服务

service httpd restart
service mysqld restart

daloRADIUS似乎写的不怎么样,最新稳定版已经是三年之前的了,不过作者直到现在还在更新SVN,下次有机会可以用最新的SVN版本试试看。在Management中添加一个新用户,注意密码类型选择Cleartext-Password。

在终端里再次启动radiusd -X,同时在另一个终端中用radtest username password localhost 0 LaoxieVPN测试一下,看看现在是不是还能正常接通,如果没问题就OK,让我们把这套系统接驳到PPP上。

配置Pppd

编辑/etc/ppp/options.pptpd,里面已经有许多配置选项了,我们要保证有下面的几行,如果没有就添加上去,为了保障用户登录的安全我们限制只使用MS-CHAPv2:

refuse-pap
refuse-chap
refuse-mschap
require-mppe-128
require-mschap-v2

在配置文件最后加上3行:

plugin radius.so
plugin radattr.so
radius-config-file /usr/local/etc/radiusclient/radiusclient.conf
流量控制服务

建立表格

INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Auth-Type',':=','Local');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Service-Type',':=','Framed-User');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Address',':=','255.255.255.255');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Netmask',':=','255.255.255.0');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Acct-Interim-Interval',':=','600');
INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Max-Monthly-Traffic',':=','5368709120');
INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('user','Simultaneous-Use',':=','1');

以上前四行不用改动,acct-interim-interval是计算流量的间隔(600秒),意味着每隔10分钟记录当前流量。倒数第二行是每月最大流量,这里是5G(单位是字节)。最后一行是允许同时连接数目。

访问daloRADIUS,在Management中添加一个新用户,注意密码类型选择Cleartext-Password。用户组选择user

radius -X
radtest username password localhost 0 LaoxieVPN

测试一下,看看现在是不是还能正常接通,如果没问题就OK

如果结果中有Access-Accept就代表成功了,否则退回去检查设置。

测试成功的话添加在认证时检测流量的语句,打开/usr/local/etc/raddb/sites-enabled/default,找到authorize一节插入:

update request {
Group-Name := "%{sql:SELECT groupname FROM radusergroup WHERE username='%{User-Name}' ORDER BY priority}"
}
if ("%{sql: SELECT SUM(acctinputoctets+acctoutputoctets) FROM radacct WHERE username='%{User-Name}' AND date_format(acctstarttime, '%Y-%m-%d') >= date_format(now(),'%Y-%m-01') AND date_format(acctstoptime, '%Y-%m-%d') <= last_day(now());}" >= "%{sql: SELECT value FROM radgroupreply WHERE groupname='%{Group-Name}' AND&nbsp;attribute='Max-Monthly-Traffic';}") {
reject
}
启动服务
service radiusd start
chkconfig radiusd on
chkconfig pptpd on

2013.06.03新增内容:自动断线检测脚本

#!/bin/bash
MYSQL_PASS=XXXXXXXXXX
/usr/local/mysql/bin/mysql -uroot -p$MYSQL_PASS -e "UPDATE radius.radacct SET acctstoptime = acctstarttime + acctsessiontime WHERE ((UNIX_TIMESTAMP(acctstarttime) + acctsessiontime + 240 - UNIX_TIMESTAMP())<0) AND acctstoptime IS NULL;"

至此,已经完成所有操作了!

本文主要参考以下文章,感谢以下所有文字创建者

在PPTP VPN服务器上配置FreeRADIUS+DaloRADIUS实现用户跟踪管理
PPTP+FreeRADIUS+MySQL搭建VPN认证和流量控制
ARA (ASN RADIUS admin) – FreeRADIUS 管理程序安装总结

原文地址 : http://www.xj123.info/2323.html

本站遵循 : 署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5)

版权声明 : 原创文章转载时,请务必以超链接形式标明文章原始出处

CentOS PPTP配置FreeRADIUS+DaloRADIUS实现高级用户控制+流量控制的更多相关文章

  1. CentOS PPTP配置LNMP+PPTP+FreeRADIUS+DaloRADIUS+流量控制

    折腾了好几天,查阅了很多资料,终于搞定了,泪牛满面,下面记录详细操作过程!注:测试环境为CENTOS5.8 x86 安装PPTP 直接使用赵蓉的PPTP一键安装包即可 wget http://dl.z ...

  2. 在 Windows 中为高级用户配置 IPv6 的指南

    在 Windows 中为高级用户配置 IPv6 的指南 适用于: Windows 10, version 1809Windows Server 2019, all versionsWindows Se ...

  3. CentOS6.5下搭建LAMP+FreeRadius+Daloradius Web管理和TP-LINK路由器、H3C交换机连接,实现,上网认证和记账功能

    什么是RADIUS服务: RADIUS:(Remote Authentication Dial In User Service)中文名为远程用户拨号认证服务,简称RADIUS,是目前应用最广泛的AAA ...

  4. CentOS7下搭建LAMP+FreeRadius+Daloradius Web管理

    注意:本文所有命令均在root命令下执行. freeradius服务官网:http://freeradius.org/ daloradius Web管理页面官网:https://sourceforge ...

  5. gitlab centos 安装配置运维笔记

    写在前面 如果你需要一个git服务器,为企业或自己的团队托管代码而又不希望将代码仓库存储到第三方.你可以在自己的服务器上搭建一个gitlab. 本文为我在最初安装配置gitlab服务器的时候留存的笔记 ...

  6. CentOS安装配置

    1.准备安装 1.1 系统简介 CentOS 是什么? CentOS是一个基于Red Hat 企业级 Linux 提供的可自由使用的源代码企业级的 Linux 发行版本.每个版本的 CentOS 都会 ...

  7. Hadoop集群(第1期)CentOS安装配置

    1.准备安装 1.1 系统简介 CentOS 是什么? CentOS是一个基于Red Hat 企业级 Linux 提供的可自由使用的源代码企业级的 Linux 发行版本.每个版本的 CentOS 都会 ...

  8. 阿里云服务器Linux CentOS安装配置(四)yum安装tomcat

    阿里云服务器Linux CentOS安装配置(四)yum安装tomcat 1.yum -y install tomcat  执行命令后,会帮你把jdk也安装好 2.tomcat安装目录:/var/li ...

  9. 阿里云服务器Linux CentOS安装配置(三)yum安装mysql

    阿里云服务器Linux CentOS安装配置(三)yum安装mysql 1.执行yum安装mysql命令:yum -y install mysql-server mysql-devel 2.启动mys ...

随机推荐

  1. zabbix调用微信报警

    1.注册微信企业号,可以选团体号(针对小团队) 2.创建管理组 3.创建部门,记住部门id (使用了部门id,发消息会发送到所有部门成员,所以如果要单独发送给某个用户,""这样设置 ...

  2. iOS UITableView 移除单元格选中时的高亮状态

    在处理UITableView表格时,我们希望用户能够和触摸单元格式进行交互,但是希望用户在完成交互之后,这些单元格的选中状态能够消失,.Cocoa Touch 提供了两种方法来防止单元格背持久选中. ...

  3. RML-怎样的语句会被归纳为同一类型(Unique Batches)

    我们知道使用RML工具分析跟踪数据(.TRC),其中的"Unique Batches",就是一个关于Batch级别的报表,Batch级别的报表针对的是存储过程或是一个TSQL Ba ...

  4. WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享

    WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享 在WinForm程序中,我们有时需要对某容器内的所有控件做批量操作.如批量判断是否允许为空?批量设置为只读.批量设置 ...

  5. 完全偶图K(3,3)与完全图K5是否存在平面表示

    本文论述k(3, 3)与K5平面表示的存在性.首先给出图的平面表示的定义: 若可以在平面里画出一个图而让边没有任何交叉(边的交叉是指边的直线或弧线在它们的公共端点以外的地方相交),则这个图是平面性的. ...

  6. servletFileUpload

    引用:http://bbs.csdn.net/topics/390290685?page=1 Java code? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  7. 优化Myeclipse10 Building Workspace速度慢等问题

    今天把ext3.0部署到web project很慢很慢,查了一下,这个当笔记.转自http://blog.163.com/jong_cai/blog/static/870280452013111781 ...

  8. animation 的属性一共有 6 个值,详细介绍在此

    animation 属性是一个简写属性,用于设置六个动画属性: animation-name animation-duration animation-timing-function animatio ...

  9. 递归函数 Python

    函数: def fact(n): if n==1: return 1 return n * fact(n-1) 递归过程: print(fact(5)) >>fact(5) >> ...

  10. logback文章推荐

    logback 配置详解:http://www.cnblogs.com/zhuawang/p/4002975.html Logback 日志输出到 mysql:http://www.codeweblo ...