欢迎光临
我们一直在努力

如何配置freeradius从mysql数据库读取用户信息

本篇文章为大家展示了如何配置freeradius从mysql数据库读取用户信息,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

配置freeradius从mysql数据库读取用户信息
 
1) 首先更改/etc/raddb/radiusd.conf,首先将$INCLUDE  ${confdir}/sql.conf字段这行原有的注释去掉,然后编辑/etc/raddb/radiusd.conf 使其支持mysql认证;
 
authorize {
 
preprocess
 
chap
 
mschap
 
suffix
 
sql
 

 
}

accounting {
 

 
#radutmp (因为我要使用Simultaneous-Use:=1(同一用户一次只能登陆一台机器),用它在radiusd意外结束会有问题,所以禁用)
 
sql
 

 
}

session {
 
        #radutmp (同上)
 
        sql
 
}

2)需要更改sql.conf中的设置,主要是设置读取的mysql服务器的相关信息,可更改如下一些字段:
 

 
        driver = "rlm_sql_mysql"

server = "localhost"                                                 #数据库服务器
 
    
    login = "mysql_username"                                       #数据库用户
 
    
    password = "mysql_password"                                 #数据库密码
 
        radius_db = "radius"                                                #数据库名称
 

 
3) 当然前提是你要现把mysql服务设置好,设置方法是:

先处理一下mysql的库,freeradius默认查找libmysqlclient_r.so,可是mysql默认为libmysqlclient.so,内容完全一样,做个链接即可:(至关重要,否则启动freeradius的时候会提示找不到rlm_sql_mysql.so:Could not link driver rlm_sql_mysql: file not found)
 
        # echo "/usr/lib/mysql" >> /etc/ld.so.conf
 
        # ldconfig
 
        # cd /usr/lib/mysql/
 
        # ln -s libmysqlclient.so.15.0.0 libmysqlclient_r.so
 
        先启动你的mysqld:
 
                service mysqld start
 
        然后设置root帐户密码:
 
                mysqladmin –uroot –p password 12345
 
        创建radius数据库
 
                mysqladmin –uroot –p123456 create radius
 
       
 
        建立mysql的数据库raius的表,我们可以通过软件已经给出的sql脚本导入数据库:
 
                mysql -uroot –p123456 radius < /usr/share/doc/freeradius-1.1.3/examples/mysql.sql
 
        这样,所有radius需要的数据库和表都已经建立好了。
 
        此时可以添加测是帐号来测试是否正常工作。具体方法就不在这说了。我们待会要使用freeradius源代码自带的dialup_admin来进行数据库的管理工作,那是一个基于web的管理界面,使用
 php编写,要比直接用sql语句方便的多。
 
        这里要注意的是,如何在数据库里添加限制没用户同时登录个数的限制,比如,我先用sql语句添加一个测试用户,然后来限制他的登录个数,语句是:
 
mysql -uroot –p123456 radius
 
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-Protocol','=','ppp');

insert into radgroupcheck (groupname, attribute, op, value) values ('user', 'Auth-Type', ':=', 'Local');
 
insert into radgroupcheck (groupname, attribute, op, value) values ('user', 'Simultaneous-Use', ':=', '1');

然后加入用户信息:
 
insert into radcheck (username,attribute,op,value) values ('bbb','User-Password','==','bbb');

然后把用户加到组里:
 
insert into usergroup(username,groupname) values('bbb','user');
 
        这样就给我们的数据库中添加了一个帐户测试帐户bbb,并让bbb帐户属于user组。
 
        然后我们可以通过设置user组的检查属性来设置此组帐户的登录数限制,以后只要用户加入这个组,登录数都不能超过1次:
 

 
        好了,限制完成。我们现在可以使用bbb帐户登录,并测试是否是通过mysql数据库验证的。并且可以检查是不是只能登录一个。
 

 
第四部分:使用dialup_admin来管理radius服务器
 

 
        服务器搭建成功后如果需要web管理,freeradius自带了一个web管理程序dialup_admin。
 
        首先测试Apache与
 PHP安装的正确性。Apache的WEB目录在 /var/www/html 下首先测试Apache,在浏览器输入 Http://127.0.0.1 下看到Apache界面表示正常。
 
        编辑一个
 PHP测试文件,内容为  ,保存为 
 phpinfo.
 php。在浏览器输入Http://127.0.0.1/
 phpinfo.
 php 看到
 php相关信息页面,表示
 php运作正常。
 
        直接将freeradius源代码中的dialup_admin/文件夹全部拷贝到Apache网页目录下/etc/local下。
 
        修改dialup_admin/conf/下的admin.conf文件中的如下参数:
 
                sql_type:mysql
 
                sql_server:localhost                    //sql地址
 
                sql_port:3306                         //默认端口
 
                sql_username:root
 
                sql_password:123456                   //密码
 
                sql_database:radius                     //数据库名
 

 
                general_base_dir: /var/www/html/dialup_admin //dialup_admin主目录

general_radiusd_base_dir: /usr/sbin/radiusd
 
                general_domain: company.com     //这个可改也可不改,没什么影响,改了还看点而已
 
                general_radius_server_auth_proto: chap   //将pap改成chap
 
                general_encryption_method: clear        //将crypt改成clear
 
        说明一下,general_encryption_method: clear是必须得改的,否则用web管理界面添加用户后会出现密码被加密后无法识别导致认证失败,clear方式是以明文存储密码,freeradius默认是用明文存储密码,两者要对应,所以这里要用clear方式。
 
        修改dialup_admin/conf/下的naslist.conf文件如下
 
                nas1_name: nas1.%{general_domain}
 
                nas1_model: Computer                 //NAS服务器的类型
 
                nas1_ip: 192.168.1.1                 //NAS服务器的IP地址
 
                nas1_port_num: 15
 
                nas1_community: public
 
        其他的通通删掉或用#号注释掉,这样修改的目的是方便在web管理界面中直观的看到每个NAS服务器连接用户的情况。
 
        导入相关数据库表
 
                cd /var/www/html/dialup_admin/sql
 
                mysql -uroot –p123456 radius < userinfo.sql
 
                mysql -uroot –p123456 radius < totacct.sql
 
                mysql -uroot –p123456 radius < mtotacct.sql
 
                mysql -uroot –p123456 radius < badusers.sql
 
        dialup_admin用的是
 php3格式的文件,需要web服务器支持这种格式,
 
        修改/etc/httpd/conf/httpd.conf文件,在此文件最后添加
 
                AddType application/x-httpd-
 php .
 php .html .htm .
 php3
 
        并在默认的主页目录下建立一个指向/usr/local/dialup_admin/htdocs的符号连接htdocs
 
        保存后重启httpd服务
 
                service httpd restart
 
访问:http://localhost/htdocs/index.html
 
        能正常打开各页面就ok了。默认是打开的sql调试模式。可以在admin.conf中找到sql_debug.把true改为false即可关闭。

第五部分:使用用户认证来管理radius服务器

Apache服务器已经内置用户验证机制,大家只要适当的加以设置,便可以控制网站的某些部分要用户验证。大家只要跟着我一步步做下来就应该能轻松实现用户验证。

第1步:

我们在/var/www/html/dialup_admin/htdocs

然后我们编辑httpd.conf

添加

Alias /radiusadmin "/var/www/html/dialup_admin/htdocs"

<Directory "/var/www/html/dialup_admin/htdocs">

Options Indexes MultiViews

AllowOverride AuthConfig #表示进行身份验证

Order allow,deny

Allow from all

</Directory>

#AllowOverride AuthConfig 表示进行身份验证 这是关键的设置

第3步

在/var/www/html/dialup_admin/htdocs创建.htaccess文件

vi /var/www/html/dialup_admin/htdocs/.htaccess

AuthName "radius web"

AuthType Basic

AuthUserFile /var/www/html/dialup_admin/htdocs/.htpasswd

require valid-user

#AuthName 描述,随便写

#AuthUserFile /var/www/html/dialup_admin/htdocs/.htpasswd

#require valid-user 或者 require user admin 限制是所有合法用户还是指定用户

#密码文件推荐使用.htpasswd,因为apache默认系统对“.ht”开头的文件默认不允许外部读取,安全系数会高一点哦。

第4步

就是创建apache的验证用户

htpasswd -c /var/www/html/dialup_admin/htdocs/.htpasswd radiusadmin

#第一次创建用户要用到-c 参数 第2次添加用户,就不用-c参数

如果你们想修改密码,可以如下

htpasswd -m .htpasswd radiusadmin

第5步:

ok,重启apache服务,然后访问
 http://10.0.0.64/radiusadmin就能看到一个用户验证的弹出窗口,只要填入第4步创建的用户名和密码就行

上述内容就是如何配置freeradius从mysql数据库读取用户信息,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注云搜网行业资讯频道。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。