在ubtunu使用apt-get安装和配置freeradius

学习编程 2017-12-30

安装freeradius之前先要确保已经安装了mysql、因为后来要用到、没有安装使用apt-get来安装

apt-get install mysql-server

然后就是安装freeradius的部件

sudo apt-get install freeradius freeradius-ldap freeradius-mysql

安装完成后freeradius就会自动启动了、由于莪们要使用调试模式来启动freeradius、所以先关闭freeradius服务先

service freeradius stop

注意:

使用ubtuntu的apt-get方式来安装freeradius的位置会和源码不同、源码安装的默认位置是

/usr/local/etc/raddb/

而使用ubuntu的apt-get方式的配置文件则安置在

/etc/freeradius/

然后修改/etc/freeradius/下的users文件、

在ubtunu使用apt-get安装和配置freeradius
steve   Cleartext-Password := "testing"<br />    Service-Type = Framed-User,<br />    Framed-Protocol = PPP,<br />    Framed-IP-Address = 172.16.3.33,<br />    Framed-IP-Netmask = 255.255.255.0,<br />    Framed-Routing = Broadcast-Listen,<br />    Framed-Filter-Id = "std.ppp",<br />    Framed-MTU = 1500,<br />    Framed-Compression = Van-Jacobsen-TCP-IP
在ubtunu使用apt-get安装和配置freeradius

把这几行反注释、也就是使用一个名为steve、密码为testing的用户来测试一下是否通则登录freeradius服务器、保存后退出然后启动radius的调试模式

freeradius -X

然后打开另一个终端、使用radtest来测试用户是否能够通过

<strong>radtest steve testing localhost 1812 testing123</strong>

这句前steve和testing代表用户和密码、localhost和1812则是freeradius的IP地址和端口号、testing123则是freeradius服务端与客户端之间通讯的key、由/etc/freeradius目录下的clients.conf定义、在client localhost字段的secret参数、

在ubtunu使用apt-get安装和配置freeradius
client localhost {<br />    ...<br />    ...<br />    secret      = testing123<br />    ...<br />    ...<br />}
在ubtunu使用apt-get安装和配置freeradius

注意这个secret字段最好不要少于8个字节、更多具体的详细说明请看clients.conf文件中secret参数前面的注释说明

radtest成功通过后则会显示Access-Accept状态、

另外、如果迩一个不好运、确实在linux系统中存在steve的用户、这样子的话freeradius服务器则会跳过迩现在的用户配置直接去查询系统的配置、这时的密码就会以系统密码为准、

这里在users文件中定义的密码就会失效、而且如果改用户是禁止在linux上登录的话、则会直接把用户打回成Access-Reject。

=========================================================================================================================================

FreeRadius安装完后默认只允许本机的client客户端访问radius服务器

添加代理主机,编辑文件clients.conf

#vi clinets.conf  

 在文件末尾添加客户端,格式如下

# 添加一个子网 192.168.2.0/ 的网段可访问

client 192.168.2.0/ {
        secret          = 111111  #radius客户端认证密钥
}<br />
:wq!<br />  #强制保存退出<br /><br />关闭防火墙
Iptables -F

至此freeradius测试环境搭建完成,可以使用测试账号登陆。本人测试已成功。

P.S.:如果客户端不具备公网地址或者由于处于某种防火墙之下、会有可能造成访问失败、

========================================================================================================================================

接下来的工作是使用mysql数据库与freeradius连接

首先要做的就是建立相应的radius数据库、进入mysql

mysql -uroot -p

然后建立radius数据库

CREATE DATABASE radius;

之后使用exit退出mysql、然后建立一系统的表格、freeradius已经自带有sql脚本、莪们执行这些脚本就可以自行建立了、首先定位到这些脚本的位置先

cd /etc/freeradius/sql/mysql

看见有不少sql文件

在ubtunu使用apt-get安装和配置freeradius
-rw-r--r-- 1 root root      661 2010-01-04 21:56 admin.sql<br />-rw-r----- 1 root freerad  4543 2010-01-04 21:56 counter.conf<br />-rw-r--r-- 1 root root     1242 2010-01-04 21:56 cui.conf<br />-rw-r--r-- 1 root root      452 2010-01-04 21:56 cui.sql<br />-rw-r----- 1 root freerad 14375 2012-01-31 23:26 dialup.conf<br />-rw-r----- 1 root freerad 14379 2012-01-31 23:25 dialup.conf.bak<br />-rw-r----- 1 root freerad  4058 2010-01-04 21:56 ippool.conf<br />-rw-r----- 1 root freerad   579 2010-01-04 21:56 ippool.sql<br />-rw-r----- 1 root freerad   400 2010-01-04 21:56 nas.sql<br />-rw-r----- 1 root freerad  4318 2010-01-04 21:56 schema.sql<br />-rw-r--r-- 1 root root     1844 2010-01-04 21:56 wimax.conf<br />-rw-r--r-- 1 root root      407 2010-01-04 21:56 wimax.sql
在ubtunu使用apt-get安装和配置freeradius

其中admin.sql可以为mysql建立一个专门管理radius数据库的管理员

schema.sql则是用来建立radius数据库最基本的表格、

其它的sql就不用管先了、是其它附加模块才需要导入的

首先导入admin.sql

mysql -u root -p<strong>PASSWD</strong> radius < admin.sql<br />mysql -u root -pPASSWD radius < schema.sql

其中的USERNAME和PASSWD代表mysql管理员的帐户和密码、通常是使用最高权限的root用户来执行、【特别要注意格式!!!】

schema.sql同样也是照此格式来执行导入到数据库、如果结果正常的话、可以使用radius账户进入mysql数据库

mysql -u radius -p

默认密码是"radpass"(没有引号)、登录后再查看数据库、

use radius;<br />show tables;

会看到已经建立有相应的表格了、现在就完成了mysql数据库的部署了、之后再去配置freeradius的相关数据吧、

MySQL中表结构的定义
 
 /etc/raddb/sql/mysql/schema.sql 主数据库定义,7个表,包括
 radcheck 用户检查信息表
 radreply 用户回复信息表
 radgroupcheck 用户组检查信息表
 radgroupreply 用户组检查信息表
 radusergroup 用户和组关系表
 radacct 计费情况表
 radpostauth 认证后处理信息,可以包括认证请求成功和拒绝的记录。

修改/etc/freeradius/radiusd.conf、定位到该行

$INCLUDE  sql.conf

将之反注释、启动sql.conf、

然后编辑/etc/freeradius/sql.conf

sql {
#
# Set the database to one of:
#
# mysql, mssql, oracle, postgresql
#
database = "mysql"

#
# Which FreeRADIUS driver to use.
#
driver = "rlm_sql_${database}"

# Connection info:
server = "localhost"
#port = 3306
login = "radius"
password = "radpass"

# Database table configuration for everything except Oracle
radius_db = "radius"
...
}

默认情况下、使用ubuntu的apt-get命令来安装freeradius会自动检测到已经安装了mysql而自动把database设置为mysql、如果迩的不是这样显示请设置成mysql、然后再再看password这个参数、如果迩之前已经更改了radius用户的密码、这里要做相应的修改、其余的参数就默认好了、

修改了sql.conf、再设置相应的设备通知其使用mysql作为数据存储设备、

vim /etc/freeradius/sites-available/default

把authorize{}字段下的file注释掉、反注释sql、这里的file指的就是usrs文件、将不再把用户信息写在users而使用mysql来存储用户信息、

把accounting{} 字段下的sql反注释、启用sql来记录统计信息、

把session{}字段下的sql反注释、启用用户同时登录限制功能、这里还需要修改其它地方、一会再说

把post-auth{} 字段的sql反注释、启用用户登录后进行数据记录功能、

整个文件如下所示

在ubtunu使用apt-get安装和配置freeradius
authorize {<br />  ...<br />#        files<br />        sql<br />  ...<br />}<br />accounting {<br />        ...<br />        sql<br />        ...<br />}<br />session {<br />    radutmp<br />    #<br />    #  See "Simultaneous Use Checking Queries" in sql.conf<br />    sql<br />}<br /><br />post-auth {<br />    ...<br />    sql<br />    ...<br />}
在ubtunu使用apt-get安装和配置freeradius

注释:↑↑↑↑↑↑↑↑上段配置文件中 “...”的意思代表还有其他文档,请勿修改

编辑dialup.conf文件

vim /etc/freeradius/sql/mysql/dialup.conf

找到这几行、将之反注释

# Uncomment simul_count_query to enable simultaneous use checking<br />    simul_count_query = "SELECT COUNT(*) \<br />                             FROM ${acct_table1} \<br />                             WHERE username = '%{SQL-User-Name}' \<br />                             AND acctstoptime IS NULL"

之后整个对mysql的radius配置就已经完成了

建立组信息:(这些命令不用做任何修改,直接ctrl+c→ctrl+<span>v就好了)(<strong>复制mysql> 后面的</strong>)<br />
Liunx@ubuntu# mysql -u root -p<br /><br />mysql> use radius;<br /><br />mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Auth-Type',':=','Local');

mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Service-Type',':=','Framed-User');
mysql> <span>insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Address',':=','255.255.255.255'<span>); <br />
mysql> <span>insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Netmask',':=','255.255.255.0');<br /><br />

#建立用户信息:

mysql> insert into radcheck (username,attribute,op,value) values ('test','User-Password',':=','123');

将用户加入组中:

mysql> insert into radusergroup (username,groupname) values ('test','user');

添加用户回复信息:

mysql> insert into radreply(username,attribute,op,value) values('test','Reply-Message','=','Yes,Good!');

注释:“mysql> 表示进入mysql状态。” “test 表示需要自己输入用户名的变量 123 是表示自己输入密码的变量”

退出测试账号是否认证成功

service freeradius stop#停止freeradius服务

freeradius -X#调试模式启动freeradius服务

打开另一个终端

radtest test 123 localhost 1812 testing123

输入以下结果证明成功

Sending Access-Request of id 232 to 127.0.0.1 port 1812
        User-Name = "test"
        User-Password = "123"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1812
        Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=232, length=49
        Reply-Message = "Yes,Good!"
        Service-Type = Framed-User
        Framed-IP-Netmask = 255.255.255.0
        Framed-IP-Address = 255.255.255.255

注释:“testing123 是raidus密码”上文中提到修改代理主机有一个认证密钥,如果用本机测试切勿使用上文中的密钥,否则会认证失败。

<em><span>    当涉及到wifi 802.1x认证的时候radius密码填写上文中提到的密钥。<br /><strong>【如下图】Radius服务器就填写搭建服务的主机IP地址就可以端口号默认1812,怎么修改我也不知道。</strong><br /><br /><br /></em>
<span>设置完成后去mysql里面查看一下各个表格。<br />
Liunx@ubuntu# mysql -u root -p<br /><br />mysql> use radius;

mysql> show tables;
+------------------+
| Tables_in_radius |
+------------------+
| radacct |
| radcheck |
| radgroupcheck |
| radgroupreply |
| radpostauth |
| radreply |
| radusergroup |
+------------------+
7 rows in set (0.00 sec)

<br />mysql> select * from radusergroup;
      +---------------+-----------+----------+
      | UserName      | GroupName | priority |
      +---------------+-----------+----------+
      | fredf         | dynamic   |         1|
      | barney        | static    |         1|
      | dialrouter    | netdial   |         1|
      +---------------+-----------+----------+
rows in set (0.01 sec)
 
      mysql>                                                  
      +----+----------------+--------------------+------------------+------+
      | id | UserName       | Attribute          | Value            | Op   | 
      +----+----------------+--------------------+------------------+------+
      |  1 | fredf          | Cleartext-Password | wilma            | :=   |
      |  2 | barney         | Cleartext-Password | betty            | :=   |
      |  2 | dialrouter     | Cleartext-Password | dialup           | :=   |
      +----+----------------+--------------------+------------------+------+
rows in set (0.01 sec)
 
      mysql> select * from radreply;
 
      +----+------------+-------------------+---------------------------------+------+
      | id | UserName   | Attribute         | Value                           | Op   |
      +----+------------+-------------------+---------------------------------+------+
      |  1 | barney     | Framed-IP-Address | 1.2.3.4                         | :=   |
      |  2 | dialrouter | Framed-IP-Address | 2.3.4.1                         | :=   |
      |  3 | dialrouter | Framed-IP-Netmask | 255.255.255.255                 | :=   |
      |  4 | dialrouter | Framed-Routing    | Broadcast-Listen                | :=   |
      |  5 | dialrouter | Framed-Route      | 2.3.4.0 255.255.255.248         | :=   |
      |  6 | dialrouter | Idle-Timeout      | 900                             | :=   |
      +----+------------+-------------------+---------------------------------+------+
rows in set (0.01 sec)
 
      mysql> select * from radgroupreply;
      +----+-----------+--------------------+---------------------+------+
      | id | GroupName | Attribute          | Value               | Op   |
      +----+-----------+--------------------+---------------------+------+
      | 34 | dynamic   | Framed-Compression | Van-Jacobsen-TCP-IP | :=   |
      | 33 | dynamic   | Framed-Protocol    | PPP                 | :=   |
      | 32 | dynamic   | Service-Type       | Framed-User         | :=   |
      | 35 | dynamic   | Framed-MTU         | 1500                | :=   |
      | 37 | static    | Framed-Protocol    | PPP                 | :=   |
      | 38 | static    | Service-Type       | Framed-User         | :=   |
      | 39 | static    | Framed-Compression | Van-Jacobsen-TCP-IP | :=   |
      | 41 | netdial   | Service-Type       | Framed-User         | :=   |
      | 42 | netdial   | Framed-Protocol    | PPP                 | :=   |
      +----+-----------+--------------------+---------------------+------+
rows in set (0.01 sec)
<strong> 大功告成!!!!</strong>

相关推荐