前提条件

阅读本文前,您需要搭建好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. 开源实体映射框架EmitMapper介绍

    开源实体映射框架EmitMapper介绍   综述       EmitMapper是一个开源实体映射框架,地址:http://emitmapper.codeplex.com/.       Emit ...

  2. UE4 性能优化方法(工具篇)

    本文依据UE4官方文档以及官方博客等总结而来,可能不全面,后面会陆续添加.内置工具的详细说明请参考官方文档. 游戏帧率很低,或者有卡顿的现象,可能会有很多原因,这时候不要乱猜,比如是不是人物太多了或者 ...

  3. startup.c

    在Startup.s文件中包含一个startup的入口函数,该函数为EBOOT的最开始的入口.在系统上电或者冷启动的时候,这是第一个被执行的函数.该函数都是由汇编语言编写的,完成基于硬件平台的最初的初 ...

  4. Talend 从Excel导入Saleforce数据(一) 直接从salesforce lookup 性能的噩梦

    速度的瓶颈是在查询Sales force是否有该电话号码的联系人资料. TMap属性的 lookup Model, 如果用Load Once, 则会把SaleForce的contact全部load下来 ...

  5. navicat------------利用navicat查看两个数据库之间的差异

  6. 字符编码 and cpp

    预备知识 字符:抽象的最小文本单位.仅代表符合没有实际意义(如:¥, a, 国) 字符集:字符的集合(如gb2312, ASCII, UNICODE) 编码:是对字符集的描述,计算机要准确的处理各种字 ...

  7. 记录一下我使用的vim的配置文件

    还不是很完美: "au BufReadPost * if line("'\"") > 0|if line("'\"") &l ...

  8. WDR7500 花生壳问题

    新进一WDR7500 居然不能解析花生壳. 百度一番, 发现别人有同样的问题. 找来找去从别人的只言片语中发现需要升级固件. 好不容易加入一个群, 把固件下下来. 升级固件, 重新设置, 解析成功. ...

  9. C#网络爬虫

    CronMaker is a utility which helps you to build cron expressions. CronMaker uses Quartz open source ...

  10. python中的正则表达式(re模块)

    一.简介 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎 ...