安裝freeradius之前先要確保已經安裝了mysql、因為後來要用到、沒有安裝使用apt-get來安裝 然後就是安裝freeradius的部件 安裝完成後freeradius就會自動啟動了、由於莪們要使用調試模式來啟動freeradius、所以先關閉freeradius服務先 註意: 使用ubt ...
安裝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文件、
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)
大功告成!!!!