老谢博客

  • 首页
  • 折腾
  • 网络技术
  • 网站技术
  • 服务器技术
  • 乱七八糟
  • 吐槽
  • 联系我
  • VPS软件下载
  • RSS

CentOS PPTP配置FreeRADIUS+DaloRADIUS实现高级用户控制+流量控制

分类:服务器技术日期:2012-01-24 - 13:13作者:老谢阅读:190 围观

前提条件

阅读本文前,您需要搭建好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编写。

安装配置

1
yum install freeradius2 freeradius2-mysql freeradius2-utils

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

testing Cleartext-Password := “password”

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

下载ppp源码

1
2
3
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”

1
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,添加数据库

1
2
3
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

1
2
3
4
5
6
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安装方法

下面导入数据库

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

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

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

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

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

然后修改daloRADIUS的路径:

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

网页目录下建目录链接

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

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

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

重启mysql和apache服务

1
2
service httpd restart
service mysqld restart

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

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

配置Pppd

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

1
2
3
4
5
refuse-pap
refuse-chap
refuse-mschap
require-mppe-128
require-mschap-v2

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

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

建立表格

1
2
3
4
5
6
7
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

1
2
radius -X
radtest username password localhost 0 LaoxieVPN

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

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

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

1
2
3
4
5
6
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
}
启动服务
1
2
3
service radiusd start
chkconfig radiusd on
chkconfig pptpd on

CentOS PPTP配置FreeRADIUS+DaloRADIUS实现高级用户控制+流量控制

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

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

在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)

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

Tags: DaloRADIUS , FreeRADIUS , FreeRADIUSX流量控制 , PPTP
  • 上一篇:OpenVZ VPS配置PPTP VPN
  • 下一篇:iftop提示Unable to get IP address for interface
10条评论
  1. 邓肯 说:

    好艰涩难懂的技术文章啊 我是来送龙的

    POST:2012-01-24 16:39 回复
  2. 残忆 说:

    膜拜大牛~

    POST:2012-01-24 18:15 回复
  3. DickWu 说:

    介个可以拿去赚钱了~~可惜木有L2TP。

    POST:2012-01-24 22:32 回复
    • 老谢 说:

      @DickWu L2TP一样支持RADIUS插件,不过我目前使用的openvz无法搭L2TP,只能用PPTP

      POST:2012-01-24 22:49 回复
      • DickWu 说:

        我是XEN,应该可以的吧。拿去搭搭看~
        P.S. 我现在还不敢把博客往VPS放呢。

        POST:2012-01-25 15:16 回复
        • 老谢 说:

          @DickWu XEN可以支持L2TP和PPTP,为啥不放,生命在于折腾

          POST:2012-01-25 15:52 回复
          • DickWu 说:

            额,比较胆小。。一个是小内存VPS优化得不是很理想。手动配置的VPS安全系数不达标。。。折腾!!

            POST:2012-01-26 08:47 回复
  4. suN 说:

    大神啊!

    POST:2012-01-25 11:51 回复
  5. Junan 说:

    LINUX的VPN控流量比较简单~WINDOS的VPN控流量和限制登录人数比较难啊~

    POST:2012-01-25 14:56 回复
  6. eps构件 说:

    老谢真是辛勤,大过年的好好休息啊

    POST:2012-01-28 16:14 回复
发表评论 点击取消评论.

*必填

*必填

  • 域名注册
  • 文章归档
  • IP子网
  • 磁盘
  • 留言板
  • 关于
2012 年二月
一 二 三 四 五 六 日
« 一    
 12345
6789101112
13141516171819
20212223242526
272829  

最新文章

  • (D)DoS Deflate 防御简单DDOS攻击
  • 让cmd也能查询whois和ip信息
  • HDWIKI 安装提示Access Denied解决方案
  • 谁偷走了我的密码?
  • 吐槽の超淫乱!(重口、慎入)
  • css自定义滑块样式
  • CentOS安装MySQL支持远程连接的方法
  • 吐槽:情人结
  • nginx前端反代,后端apache记录正确访问者ip
  • 转载:VPS自动备份到dropbox的脚本

日志存档

  • 2012 年二月
  • 2012 年一月
  • 2011 年十二月
  • 2011 年十一月
  • 2011 年十月
  • 2011 年九月
  • 2011 年八月
  • 2011 年七月
  • 2011 年六月
  • 2011 年五月
  • 2011 年四月
  • 2011 年三月
  • 2011 年二月
  • 2011 年一月
  • 2010 年十二月
  • 2010 年十一月
  • 2010 年十月
  • 2010 年九月
  • 2010 年八月
  • 2010 年七月

热门文章

  • 把桌子收拾干净了
  • 2011中学聚会
  • 你真的懂每一张JPG的内涵么?
  • 博客搬家至日本东京
  • 2011年末总结
  • WP AJAX Edit Comments-留言编辑
  • wordpress读者墙血条版-感谢无冷大湿
  • T410 5天使用总结
  • CPU不给力?高清电影看不起来?没关系,我有硬解码!
  • 感谢Leyar,T楼奖品收到

随机文章

  • 百度说吧邀请接力
  • 二层交换机每个端口有没有MAC地址
  • 静态路由&默认路由试验笔记
  • PHP学习之:表单的获取
  • wp:使用windows live writer离线发日志
  • 馊博客改版计划
  • 强制本地域名解析
  • 谁偷走了我的密码?
  • CentOS安装MySQL支持远程连接的方法
  • wordpress备份插件IDrive

最新评论

  • 这个我收下了,前几天下了»
    Post: 2012-02-23 10:39:52
  • 不错 已经在用了»
    Post: 2012-02-23 08:46:30
  • 哈哈哈。。笑死我了。。»
    Post: 2012-02-22 23:30:30
  • 我也从来没有考虑过这种问»
    Post: 2012-02-22 23:28:57
  • 依然还是很瘦啊你。。。我»
    Post: 2012-02-22 23:27:02
  • YM老谢»
    Post: 2012-02-22 23:23:09
  • 老谢越来越NB了啊。。Y»
    Post: 2012-02-22 23:21:57
  • 拿到权限,什么都可以干~»
    Post: 2012-02-22 20:57:50
  • 占领地板,表示最近对cm»
    Post: 2012-02-22 20:53:18
  • 表示这个可以有,方面喜欢»
    Post: 2012-02-22 20:49:18

W3C

  • XHTML 1.0 Transitional
  • CSS level 3
Copyright © 2010-2012 老谢博客 All rights reserved.
Gzipped 74.02% | Optimized loading 28 queries in 2.119 seconds | Memory 6.77 MB
Powered by WordPress. Theme by WordPress主题巴士 | Uptime | 百度地图 | SiteMap |