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


一、安裝mysql

安裝freeradius之前先要確保已經安裝了mysql、因為后來要用到、沒有安裝使用apt-get來安裝

apt-get install mysql-server

二、安裝freeradius

然后就是安裝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文件、

復制代碼
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
復制代碼

把這幾行反注釋、也就是使用一個名為steve、密碼為testing的用戶來測試一下是否通則登錄freeradius服務器、保存后退出然后啟動radius的調試模式

freeradius -X

然后打開另一個終端、使用radtest來測試用戶是否能夠通過

radtest steve testing localhost 1812 testing123

這句前steve和testing代表用戶和密碼、localhost和1812則是freeradius的IP地址和端口號、testing123則是freeradius服務端與客戶端之間通訊的key、由/etc/freeradius目錄下的clients.conf定義、在client localhost字段的secret參數、

復制代碼
client localhost {
...
...
secret = testing123
...
...
}
復制代碼

注意這個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/24 的網段可訪問

client 192.168.2.0/24 {
        secret          = 111111  #radius客戶端認證密鑰
}
:wq!
  #強制保存退出

關閉防火牆 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文件

復制代碼
-rw-r--r-- 1 root root      661 2010-01-04 21:56 admin.sql
-rw-r----- 1 root freerad 4543 2010-01-04 21:56 counter.conf
-rw-r--r-- 1 root root 1242 2010-01-04 21:56 cui.conf
-rw-r--r-- 1 root root 452 2010-01-04 21:56 cui.sql
-rw-r----- 1 root freerad 14375 2012-01-31 23:26 dialup.conf
-rw-r----- 1 root freerad 14379 2012-01-31 23:25 dialup.conf.bak
-rw-r----- 1 root freerad 4058 2010-01-04 21:56 ippool.conf
-rw-r----- 1 root freerad 579 2010-01-04 21:56 ippool.sql
-rw-r----- 1 root freerad 400 2010-01-04 21:56 nas.sql
-rw-r----- 1 root freerad 4318 2010-01-04 21:56 schema.sql
-rw-r--r-- 1 root root 1844 2010-01-04 21:56 wimax.conf
-rw-r--r-- 1 root root 407 2010-01-04 21:56 wimax.sql
復制代碼

其中admin.sql可以為mysql建立一個專門管理radius數據庫的管理員

schema.sql則是用來建立radius數據庫最基本的表格、

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

首先導入admin.sql

mysql -u root -pPASSWD radius < admin.sql
mysql -u root -pPASSWD radius < schema.sql

其中的USERNAME和PASSWD代表mysql管理員的帳戶和密碼、通常是使用最高權限的root用戶來執行、【特別要注意格式!!!】

schema.sql同樣也是照此格式來執行導入到數據庫、如果結果正常的話、可以使用radius賬戶進入mysql數據庫

mysql -u radius -p

默認密碼是"radpass"(沒有引號)、登錄后再查看數據庫、

use radius;
show tables;

會看到已經建立有相應的表格了、現在就完成了mysql數據庫的部署了、之后再去配置freeradius的相關數據吧、

 

 1 MySQL中表結構的定義
 2 
 3 /etc/raddb/sql/mysql/schema.sql 主數據庫定義,7個表,包括
 4 radcheck 用戶檢查信息表
 5 radreply 用戶回復信息表
 6 radgroupcheck 用戶組檢查信息表
 7 radgroupreply 用戶組檢查信息表
 8 radusergroup 用戶和組關系表
 9 radacct 計費情況表
10 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反注釋、啟用用戶登錄后進行數據記錄功能、

整個文件如下所示

復制代碼
authorize {
  ...
# files
sql
  ...
}
accounting {
...
sql
...
}
session {
radutmp
#
# See "Simultaneous Use Checking Queries" in sql.conf
sql
}

post-auth {
...
sql
...
}
復制代碼

 注釋:↑↑↑↑↑↑↑↑上段配置文件中 “...”的意思代表還有其他文檔,請勿修改

編輯dialup.conf文件

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

找到這幾行、將之反注釋

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

之后整個對mysql的radius配置就已經完成了

 

建立組信息:(這些命令不用做任何修改,直接ctrl+c→ctrl+v就好了)(復制mysql> 后面的)
Liunx@ubuntu# mysql -u root -p

mysql> use radius;

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> insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Address',':=','255.255.255.255'); 
mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Netmask',':=','255.255.255.0');

  #建立用戶信息:

  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密碼”上文中提到修改代理主機有一個認證密鑰,如果用本機測試切勿使用上文中的密鑰,否則會認證失敗。

    當涉及到wifi 802.1x認證的時候radius密碼填寫上文中提到的密鑰。
【如下圖】Radius服務器就填寫搭建服務的主機IP地址就可以端口號默認1812,怎么修改我也不知道。


設置完成后去mysql里面查看一下各個表格。
Liunx@ubuntu# mysql -u root -p

mysql> use radius;

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


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)

 

 大功告成!!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM