转:https://blog.csdn.net/z6878277w/article/details/78929641
一、安装mysql相关软件
因为要将认证信息存在数据库mysql中,所以必须安装如下三个软件。
sudo apt-get install mysql-server
sudo apt-get isntall mysql-client
sudo apt-get install libmysqlclient-dev
二、安装freeradius
首先从官网下载安装文件freeradius-server-3.0.15.tar.gz
tar zxvf freeradius-server-3.0.15.tar.gz 解压
cd freeradius-server-3.0.15 进入解压后目录
./configure
make
make install
安装完成后,配置文件的位置在/usr/local/etc/raddb。如果make install遇到权限问题,请用sudo make install。
注:./configure这个命令会检查操作系统中缺哪些必要的库,并将缺哪些库告诉你,你百度一下安装即可。ubuntu-16.04.3中需要安装如下库,你最好在./configure 之前就安装好,否则还得运行一遍./configure
sudo apt-get install libtalloc-dev
sudo apt-get install libssl-dev
sudo apt-get install openssl
三、配置freeradius
cd /usr/local/etc/raddb
vim radiusd.conf
在大概56%的地方,找到allow_vulnerable_openssl = no,修改成allow_vulnerable_openssl = yes
注:普通用户是无权进入这个目录的,请切换到root用户或者sudo chmod 755 -R/usr/local/etc/raddb 。因为freeradius毕竟存的是用户认证信息,普通用户无权进入很正常。
四、freeradius说明
调试的命令为:sudo radiusd -X 这个命令启动radiusd服务器
测试命令是 sudo radtest Username Password ServerIP Port Secret
测试的时候,开两个终端,一个终端是服务器,另一个是客户机
如果出现Access Accept的提示,测试成功!
五、测试用户认证信息在文件中的情况
freeradius默认不是用数据库的,用户认证信息保存在/usr/local/etc/raddb/users文件中。
vim users 找到如下位置,将注释去掉即可
steve Cleartext-Password := "testing"
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 172.16.3.33,
Framed-IP-Netmask = 255.255.255.0,
Framed-Routing = Broadcast-Listen,
Framed-Filter-Id = "std.ppp",
Framed-MTU = 1500,
Framed-Compression = Van-Jacobsen-TCP-IP
这里将注释去掉相当于在users增加了一条认证信息。用户名为steve 密码为testing
,其他信息属于附带信息。当然你也可以自己在users里添加其他用户信息。比如:
dog Cleartext-Password := "cat"
开启认证服务器
sudo radiusd -X 修改users后,必须重启才能生效
测试认证信息
radtest steve testing localhost 1812 testing123 这里是测试,出现Access Accept表示认证通过
六、测试认证信息保存在mysql的情况
创建数据库,输入命令mysql -u root -p要求输入密码时,直接回车即可。
mysql>create database radius;
mysql>grant all on radius.* to radius@localhost identified by "radpass";
mysql>exit;
上面命令中,对数据库增加了一个用户,用户名为radius@localhost,密码为radpass。
/usr/local/etc/raddb/mods-available/sql用这个用户名和密码访问数据库。
导入表结构命令:
mysql -u root radius </usr/local/etc/raddb/mods-config/sql/main/mysql/schema.sql
这样你就不能自己去创建相关的表了
插入一条认证信息
mysql>use radius;
mysql>insert into radcheck (username,attribute,value,op) values('test','Cleartext-Password','test123',':=');
修改 FreeRADIUS中的mysql 认证配置,表示支持sql
cd /usr/local/etc/raddb/mods-enabled/
ln -s ../mods-available/sql
你在/usr/local/etc/raddb/mods-enabled/目录下执行ls -l 你就会发现这个目录下的文件都是对/usr/local/etc/raddb/mods-available/软连接。
修改 FreeRADIUS中的mysql 配置文件
vim /usr/local/etc/raddb/mods-available/sql
1. 找到driver = “rlm_sql_null”这一行,修改为driver = “rlm_sql_mysql”。
2. 找到dialect = "sqlite",改为dialect = "mysql"
2. 找到如下位置,取消注释,
server = "localhost"
port = 3306
login = "radius"
password = "radpass"
这个就是freeradius访问数据库都用户名和密码。
这也是我们为什么执行在mysql 下执行
grant all on radius.* to radius@localhost identified by "radpass";的原因
测试认证信息
sudo radiusd -X 修改配置后必须重启才能生效
radtest test test123 localhost 1812 testing123 这里是测试,出现Access Accept表示认证通过
问题 :
1、找不到dictionary.microsoft
(https://github.com/talkincode/ToughRADIUS-GitBook/blob/master/toughradius/pptp.md)
INCLUDE /etc/radiusclient/dictionary.microsoft
如果目录中没有这个字典,可以下载:https://raw.githubusercontent.com/talkincode/ToughVPN/master/radius/dictionary/dictionary.microsoft
2、pptp没开启log
如何开启pptpd默认日志记录功能。
修改/etc/ppp/options.pptpd中的nologfd,默认没有开,把nologfd注释掉,然后添加 logfile /var/log/pptpd.log(将nologfd改成这个,在这个日志里就可以查到pptpd日志)