使用pptp,FreeRadius及DaloRadius构建验证VPN服务器

文章目录

FreeRadius可以为pptp和l2tp提供验证和统计等功能,DaloRadius为FreeRadius提供一个网页界面。在前几篇文章的基础上,我给大家介绍下怎么使用FreeRadius对pptp vpn进行流量,在线人数等的控制。

pptp vpn安装

vpn的安装请参考openvz环境debian下安装PPTP VPN

配置freeradius和mysql

配置freeradius和mysql请参考debian6上使用apt-get安装和配置freeradius

整合freeradius及pptp进行验证

1、安装radclient
要整合就要依赖freeradius的一个客户端来做pptp和freeradius的中间人做联接作用、莪们从源码安装这个radclient

1
2
3
4
5
wget -c ftp://ftp.freeradius.org/pub/freeradius/freeradius-client-1.1.6.tar.gz
tar -zxf freeradius-client-1.1.6.tar.gz
cd freeradius-client-1.1.6
./configure
make && make install

2、配置radclient
安装好后编辑servers文件

1
vim /usr/local/etc/radiusclient/servers

加上以下内容

1
localhost   testing123

这里的意思是设定freeradius的地址和客户端密钥、因为客户端和服务器都在同一台机器上、所以使用localhost、如果是分开放置的放请输入对应的freeradius服务器IP、至于后面的密码请参看freeradius的服务器设定

如果你是客户端和服务端都是分开的、这里同样要把localhost改成对应的服务器IP

1
/usr/local/etc/radiusclient/radiusclient.conf

然后是增加microsoft的字典、这步非常非常的重要、否则windows的用户会无法通过freeradius的验证!!

1
2
wget -c http://small-script.googlecode.com/files/dictionary.microsoft
mv ./dictionary.microsoft /usr/local/etc/radiusclient/

然后再以下内容加入到/usr/local/etc/radiusclient/dictionary文件里

1
2
3
4
5
6
7
cat >>/usr/local/etc/radiusclient/dictionary<<EOF
INCLUDE /usr/local/etc/radiusclient/dictionary.sip
INCLUDE /usr/local/etc/radiusclient/dictionary.ascend
INCLUDE /usr/local/etc/radiusclient/dictionary.merit
INCLUDE /usr/local/etc/radiusclient/dictionary.compat
INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft
EOF

接着修改以下以下配置、否则可能会在其它地方报错

1
2
3
sed -i 's/logwtmp/\#logwtmp/g' /etc/pptpd.conf
sed -i 's/radius_deadtime/\#radius_deadtime/g' /usr/local/etc/radiusclient/radiusclient.conf
sed -i 's/bindaddr/\#bindaddr/g' /usr/local/etc/radiusclient/radiusclient.conf

把这些文件里的logwtmp、radius_deadtime、bindaddr都统统注释掉

3、配置pptp
然后编辑pptpd-options文件

1
vim /etc/ppp/pptpd-options

把这三行加入到行尾

1
2
3
plugin /usr/lib/pppd/2.4.5/radius.so
plugin /usr/lib/pppd/2.4.5/radattr.so
radius-config-file /usr/local/etc/radiusclient/radiusclient.conf

这里的radius.so和radattr.so地址可能按实际情况会有变、我这里的机器是32位的、所以选择lib、如果是64位的机器要将lib替换成lib64、如果版本不同也有可能不是2.4.5、具体可以自行搜索确定该路径

然后重启pptpd服务和freeradius服务就可以从windows来连接了

1
2
service freeradius restart
service pptpd restart

因为freeradius已经和mysql和pptpd连接了、所以现在的用户应该以mysql里的用户为准、比如chap-secrets文件存在用户为test、而mysql也存在test的用户、那么就应该以mysql的用户名和密码为准、即使chap-secrets的用户不存在、但已经存在于mysql的用户就可以通过登录了、所以都应该以mysql的radcheck表的用户密码为准

配置DaloRadius

1、下载并配置daloRadius
先安装必要php组件

1
apt-get install php-pear php-db

daloRadius的项目托管在sourceforge上,下载并解压。

1
2
3
4
5
6
7
8
9
10
# 下载并解压
cd /tmp
wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz
cd /var/www
tar -xvf /tmp/daloradius-0.9-9.tar.gz
mv daloradius-0.0.9 daloradius
 
# 修改权限
chown -R www-data:www-data daloradius
chmod 644 daloradius/library/daloradius.conf.php

修改/var/www/daloradius/library/daloradius.conf.php,设置关于FreeRadius数据库的各个变量,注意和/etc/freeradius/sql.conf的配置相同。

1
2
3
4
5
6
$configValues['FREERADIUS_VERSION'] = '2';
$configValues['CONFIG_DB_ENGINE'] = 'mysql';
$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_PORT'] = '3306';
$configValues['CONFIG_DB_USER'] = 'radius';
$configValues['CONFIG_DB_PASS'] = 'raduser';

其他需要修改的变量,其中SHARED_SECRET要和/etc/freeradius/clients.conf设置的共享密钥相同。

1
2
$configValues['CONFIG_PATH_DALO_VARIABLE_DATA'] = '/var/www/daloradius/var';
$configValues['CONFIG_MAINT_TEST_USER_RADIUSSECRET'] = 'SHARED_SECRET';

2、为daloRadius创建MySQL数据表
由于之前已经为FreeRadius创建了相应的表结构,这里只需要为daloRadius创建表即可

1
2
cd /var/www/daloradius/contrib/db/
mysql -u root -p radius < mysql-daloradius.sql

由于daloRadius向FreeRadius的数据库radius添加了若干新表,我们需要为FreeRadius的数据库用户添加这几张表的访问权限。 FreeRadius的数据库名称和用户可查看/etc/freeradius/sql.conf,这里使用默认数据库radius和默认用户radius。

登录MySQL数据库

1
mysql -u root -p

输入如下命令

1
2
3
4
revoke all privileges on *.* from 'radius'@'localhost';
grant all privileges on radius.* to 'radius'@'localhost';
flush privileges;
exit

3、daloRadius使用界面
如果你之前创建好了lnmp环境,这时你就可以访问daloRadius目录,注意默认的用户名是administrator,密码是radius。

daloRadius的管理账户存储在MySQL的radius.operators表中,密码使用明文存储。

1
2
3
4
Management => Users 管理VPN用户,注意添加新用户时,应选择Cleartext-Password(默认)密码类型
 
Config => Operators 管理daloRadius的登录账户,包括修改密码和权限设置等
Config => Interface Settings => Enable Password Hiding 设为yes可以将界面上的明文密码改为点号隐藏

4、可能存在的错误
异常掉线的用户在daloRadius显示为在线用户

异常掉线的client无法在退出时更新radius.radacct表的acctstoptime,这些client在daloRadius里会被显示为在线用户。使用如下的命令可修复该问题,最好使用cron定期执行该任务。

1
mysql -uroot -p -e "UPDATE radius.radacct SET acctstoptime = acctstarttime + acctsessiontime WHERE ((UNIX_TIMESTAMP(acctstarttime) + acctsessiontime + 240 - UNIX_TIMESTAMP())<0) AND acctstoptime IS NULL;"

本文出自 TENNFY博客,转载时请注明出处及相应链接。

本文永久链接: https://www.tennfy.com/2059.html

下一篇文章:

上一篇文章:

4人参与了讨论

  1. 屠龙 说:

    学习了,讲的很不错。

  2. Eleven 说:

    debian 7 按照教程下来,pptp认证总是失败,

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

7 + 3 = ?


您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

返回顶部