亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

搭建Linux下RADIUS服務器

添加時間:2011-2-17  添加: admin 

RADIUS主要用于對遠程撥入的用戶進行授權和認證。它可以僅使用單一的“數據庫”對用戶進行認證(效驗用戶名和口令)。它主要針對的遠程登錄類型有:SLIP、PPP、telnet和rlogin等。

其主要特征有:

1. 客戶機/服務器(C/S)模式

一個網絡接入服務器(以下簡稱NAS)作為RADIUS的客戶機,它負責將用戶信息傳入RADIUS服務器,然后按照RADIUS服務器的不同的響應來采取相應動作。另外,RADIUS服務器還可以充當別的RADIUS服務器或者其他種類認證服務器的代理客戶。

2.網絡安全(Network Security)

NAS和RADIUS服務器之間的事務信息交流由兩者共享的密鑰進行加密,并且這些信息不會在兩者之間泄漏出去。

3.靈活認證機制(Flexible Authentication Mechanisms)

RADIUS服務器支持多種認證機制。它可以驗證來自PPP、PAP、CHAP和UNIX系統登錄的用戶信息的有效性。

4.協議可擴展性(Extensible Protocol)

所有的認證協議都是基于“屬性-長度-屬性值”3元素而組成的。所以協議是擴展起來非常方便。在目前很多比較高版本的Linux中,它們都把RADIUS的安裝程序包含在系統源碼中。這樣使得我們可以很容易地通過免費的Linux系統學習RADIUS授權、認證的原理和應用。


RADIUS協議原理


要弄清楚RADIUS協議為何能實現授權和認證,我們必須應該從四個方面去認識RADIUS協議:協議基本原理、數據包結構、數據包類型、協議屬性。下面我們就來詳細地介紹這些內容。

協議基本原理

NAS提供給用戶的服務可能有很多種。比如,使用telnet時,用戶提供用戶名和口令信息,而使用PPP時,則是用戶發送帶有認證信息的數據包。

NAS一旦得到這些信息,就制造并且發送一個“Access-Request”數據包給RADIUS服務器,其中就包含了用戶名、口令(基于MD5加密)、NAS的ID號和用戶訪問的端口號。

如果RADIUS服務器在一段規定的時間內沒有響應,則NAS會重新發送上述數據包;另外如果有多個RADIUS服務器的話,NAS在屢次嘗試主RADIUS服務器失敗后,會轉而使用其他的RADIUS服務器。

RADIUS服務器會直接拋棄那些沒有加“共享密鑰”(Shared Secret)的請求而不做出反應。如果數據包有效,則RADIUS服務器訪問認證數據庫,查找此用戶是否存在。如果存在,則提取此用戶的信息列表,其中包括了用戶口令、訪問端口和訪問權限等。

當一個RADIUS服務器不能滿足用戶的需要時,它會求助于其他的RADIUS服務器,此時它本身充當了一個客戶端。

如果用戶信息被否認,那么RADIUS服務器給客戶端發送一個“Access-Reject”數據包,指示此用戶非法。如果需要的話,RADIUS服務器還會在此數據包中加入一段包含錯誤信息的文本消息,以便讓客戶端將錯誤信息反饋給用戶。

相反,如果用戶被確認,RADIUS服務器發送“Access-Challenge”數據包給客戶端,并且在數據包中加入了使客戶端反饋給用戶的信息,其中包括狀態屬性。接下來,客戶端提示用戶做出反應以提供進一步的信息,客戶端得到這些信息后,就再次向RADIUS服務器提交帶有新請求ID的“Access-Request”數據包,和起初的“Access-Request”數據包內容不一樣的是:起初“Access-Request”數據包中的“用戶名/口令”信息被替換成此用戶當前的反應信息(經過加密),并且數據包中也包含了“Access-Challenge”中的狀態屬性(表示為0或1)。此時,RADIUS服務器對于這種新的“Access-Request”可以有三種反應:“Access-Accept”、“Access-Reject”或“Access-Challenge”。

如果所有的要求都屬合法,RADIUS返回一個“Access-Accept”回應,其中包括了服務類型(SLIP, PPP, Login User等)和其附屬的信息。例如:對于SLIP和PPP,回應中包括了IP地址、子網掩碼、MTU和數據包過濾標示信息等。

數據包結構

RADIUS數據包被包裝在UDP數據報的數據塊(Data field))中,其中的目的端口為1812。具體的數據包結構如表1。


8位 8位 16位
code Identifier Length
Authenticator(128位)
Attributes…(不定長)

 

· Code Code域長度為8位,具體取值見表2。其中,1、2、3用于用戶認證,而4、5則是統計流量用,12、13 用于試驗階段,255作為保留。


code 含義
1 Access-Request
2 Access-Accept
3 Access-Reject
4 Accounting-Request
5 5Accounting-Response
11 Access-Challenge
12 Status-Server(experimenta)
13 Status-client(experimenta)
255 Reserved

 

· Identifier Identifier域長度為8位,主要用于匹配請求和回應數據包,也即是數據包的編號。

· Length 長度為16位,取值范圍(20<=Length<=4096),此長度包括Code、Identifier、Length、Authenticator和 Attribute五個數據域的長度總和(Code、Identifier、Length、Authenticator為定長,Attribute為變長)。超出范圍的數據將被視為附加數據(Padding)或直接被忽略。

· Authenticator 長度為16個字節(128位),主要用于鑒定來自RADIUS服務器的回應,同時也用于對用戶口令進行加密。

(1) Request Authenticator

在“Access-Request”數據包中,Authenticator是一個16字節的隨機數,稱為“Request Authenticator”。它在NAS和RADIUS服務器之間通過“共享密碼”(secret)傳輸數據的整個生命周期中是唯一的。  

(2) Response Authenticator

在“Access-Accept”、“Access-Reject”和“Access-Challenge”中的Authenticator域被稱為“Response Authenticator”。

有下面的計算方法:

ResponseAuth = MD5(Code+ID+Length+RequestAuth+ Attributes+Secret) ——(公式1)

 

· Attributes 屬性域的數據格式如表3所示。


8位 8位 不定長(0或多個字節)
Type Length value…

 

Type指示了Atribute的類型,通用的有幾十種,如表4所示。


Type 說明 Type 說明
1 User-Name 5 NAS-Port-Id
2 Password 6 Service-Type
3 CHAP-Password 7 Framed-Protocol
4 NAS-IP-Address … …

數據包類型

RADIUS數據包的類型由其Code域(頭8位)指定。

· Access-Request(接入-請求)

“Access-Request”數據包由NAS發出,由RADIUS服務器接收。

其中的“User-Password”或“CHAP-Password”屬性值被默認地以MD5方法加密。

數據包結構如表5所示。


8位 8位 16位
Code=1 Identifier-隨著Attributes的Value變化而變化,重傳時則保持不變 Length
Authenticator(128位)—根據Identifier變化而變化
Attributes…(不定長)

 

Attributes應該包括以下幾個屬性:

◆ “User-Name”
◆ “User-Password”或“CHAP-Password”
◆ “NAS-IP-Address”
* “NAS-Identifier”
◆ “NAS-Port”
◆ “NAS-Port-Type”

 

· Access-Accept

“Access-Accept” 由RADIUS服務器發出,返回給NAS。表示用戶的信息是合法的。其中包括了必要的配置信息,以便下一步為用戶提供服務。數據包結構如表6所示。


8位 8位 16位
Code=2 Identifier-和“Access-Request”的Identifier相同 Length
Authenticator(128位)-屬于Response Authenticator,由公式1計算得到
Attributes…(不定長)

 

Access-Reject“Access-Reject”由RADIUS服務器發出,返回給NAS。表示用戶的信息是非法的。其中應該包括一個或多個的“Reply-Message”(回復消息,包含一些便于NAS返回給用戶的一些錯誤信息)。數據包結構如表7所示。


8位 8位 16位
Code=3 Identifier-和“Access-Request”的Identifier相同 Length
Authenticator(128位)-屬于Response的Authenticator,由公式1計算得到
Attributes…(不定長)

 

屬性

屬性如表8所示。其中,Length的計算方法為:Type+Length+Value。


8位 8位 不定長(0或多個字節)
Type Length Value…

 

Value有4種類型:

◆ String —— 0~253字節,字符串

◆ Ipaddress —— 32位,IP地址

◆ Integer —— 32位,整數

◆ Time —— 32位,從00:00:00 GMT, January 1, 1970到當前的總秒數

從這里可看出,RADIUS協議是一個不定長的協議棧。

安裝RADIUS Server


要安裝整套的IC-RADIUS,首先我們需要如表9所示的幾個軟件包。需要說明一下:表9中的源碼包都是免費得到的,它們可以幫助我們架設一個完整的RADIUS應用環境。


軟件源碼包 說明
mysql-3.23.39.tar.gz MySQL數據庫系統
DBI-1.18.tar.gz Perl調用數據庫的通用接口
Msql-Mysql-modules-1.2216.tar.gz Perl DBI針對MySQL的Driver,即DBD for MySQL
RadiusPerl-1.05.tar.gz Perl對Radius的Authen模塊
icradius-0.18.1.tar.gz IC-RADIUS源碼包

 

假設所有的原碼包都被拷貝到了/usr/tmp目錄下了。

安裝MySQL

1.解壓源碼包:

Linux]#cd /usr/tmp
Linux]#gzip zxvf mysql-3.23.39.tar.gz
Linux]#cd mysql-3.23.39

 

2.配置參數,安裝軟件:

//將mysql安裝在/usr/local/mysql中
Linux]#./configure prefix=/usr/local/mysql
Linux]#make //編譯,時間有點長,要有耐心
Linux]#make install //安裝到/usr/local/mysql中

 

3.創建初始數據庫:

Linux]#cd /usr/local/msyql/bin
Linux]#./mysql_install_db

 

4.創建共享庫鏈接

Linux]#ldconfig //更新系統共享庫鏈接

 

5.復制啟動/停止腳本:

Linux]#cp /usr/tmp/mysql-3.23.39/support-files/mysql.server \
      /etc/rc.d/init.d/mysql.server

 

6.復制并修改初始化配置文件:

Linux]#cp /usr/tmp/mysql-3.23.39/support-files/my-medium.cnf \
/etc/my.cnf

 

使用vi打開my.cnf,在[client]下加入user=root,password處留空。

7.改變root口令:

Linux]#mysqladmin u root p password ‘新口令'

 

8.如果有多個版本的mysql共存

在/etc/my.cnf的[mysqld]下加入:

1. Log-bin
2. Server-id=1 //必須是唯一的,以區別于其他的mysql.server的id

 

安裝DBI

Linux]#cd /usr/tmp
Linux]#tar zxvf DBI-1.18.tar.gz
Linux]#cd DBI-1.18
Linux]#perl Makefile.PL
Linux]#make test
//如果測試不通過,則使用make test TEST_VERBOSE=1
Linux]#make install

 

安裝DBD for MySQL

Linux]#cd /usr/tmp
Linux]#tar zxvf Msql-Mysql-modules-1.2216.tar.gz
Linux]#cd Msql-Mysql-modules-1.2216
Linux]#perl Makefile.PL

 

這時,系統開始和用戶交互,如下:

MySQL only
mSQL only (either of mSQL 1 or mSQL 2)
MySQL and mSQL (either of mSQL 1 or mSQL 2)
mSQL 1 and mSQL 2
MySQL,mSQL1andmSQL2
Enter the appropriate number: [3] 1

 

在我們這里的需求,應該回答1(說明此模塊是同時for MySQL和mSQL的)

Do you want to install the MysqlPerl emulation? You might keep your old Mysql module (to be distinguished from DBD::mysql!) if you are concerned

about compatibility to existing applications! [n] n 這里回答n

Where is your MySQL installed? Please tell me the directory that

contains the subdir 'include'. [/usr/local/mysql]?

這是缺省的mysql安裝目錄,我們已經按照上面的方式安裝,則MySQL自動被安裝到這個目錄下,則這里直接回車即可

Which database should I use for testing the MySQL drivers? [test]

直接回車即可

On which host is database test running (hostname, ip address

or host:port) [localhost]?

若mysql服務器和icradius服務器安裝在同一個服務器上 則這里直接回車即可

User name for connecting to database test? [undef] root?

root Password for connecting to database test? [undef] passwd?

這里輸入mysql的root用戶的密碼

make
make test
make install

安裝RadiusPerl:Authen模塊

Linux]#cd /usr/tmp
Linux]#tar zxvf RadiusPerl-0.05.tar.gz
Linux]#cd RadiusPerl-0.05
Linux]#perl Makefile.PL
Linux]#make
Linux]#make test
Linux]#make install

 

安裝IC-RADIUS

1. 安裝軟件:

Linux]#cd /usr/tmp
Linux]#tar zxvf icradius-0.18.1.tar.gz
Linux]#cd icradius-0.18.1
Linux]#cp Makefile.lnx Makefile
Linux]#make
Linux]#make install

 

2.創建radius數據庫:

Linux]#cd s
Linux]#mysql u root p mysql
Mysql>create database radius; //創建radius數據庫
//添加radius用戶
Mysql>grant all on radius.* on radius@localhost identified by ‘radius';
Linux]#mysqladmin u root p refresh //刷新數據庫內容

 

3.導入數據表:

Linux]# mysql -u root -pyourpassword radius < radius.db
修改dictimport.pl,設置
my $dbusername = 'radius';
my $dbpassword = 'radius'

 

然后,導入dictionary內容,使radius.dictionary數據表中包含了基本的屬性(ATTRIBUTE)和屬性值(VALUE)等信息。

Linux]# ./dictimport.pl ../raddb/dictionary

 

Radius數據庫結構如表10所示。


Radius數據庫
dictionary radgroupcheck
hints radgroupreply
nas radreply
radacct realmgroup
radact_summary realms
radcheck usergroup

 

4. 啟動radiusd

Linux]#cd /etc/rc.d/init.d
Linux]#radiusd start

 

這樣,我們已經在Linux上成功的安裝了一個完整的RADIUS服務器,你可以體驗一下RADIUS服務器運行的感覺了。若你對RADIUS協議的開發還興趣的話,你可以在此基礎上做深入的研究。

關鍵字:RADIUS、服務器

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站