歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

建立Linux下的RADIUS服務器

  作者:栗朝軍    ----遠程認證撥號用戶服務(Remote Authentication Dial In User Service,RADIUS)是在網絡訪問服務器(Network Access Server,NAS)和集中存放認證信息的Radius服務器之間傳輸認證、授權和配置信息的協議。其協議的標准定義在IETF的RFC 2865和RFC 2866文件中。對於中小型企業NAS應用來說,以Linux為平台建立RADIUS服務器是非常好的選擇。使用共享軟件完全可以建立簡潔、高效的RADIUS服務器,而且無須任何軟件上的花費。    ----一、RADIUS的工作原理    ----RADIUS以Client/Server方式工作,實現了對遠程電話撥號用戶的身份認證、授權和計費功能。其Client端多為通過撥號方式實現的NAS,主要用來將用戶信息傳遞給服務器;RADIUS服務器則對用戶進行認證,並返回用戶的配置信息。為了保證傳輸的安全性,在Client和Server之間傳送的數據均以MD5方式加密。在RADIUS的Server端和Client端之間的通信主要有兩種情況;一種是接入認證;另一種是計費請求。    ----使用RADIUS可以實現集中化的認證和記費功能,可以減少管理的負擔和費用,同時還可以實現很多擴展的功能,如用戶撥號時間的限定、用戶撥號時間的配額、根據用戶分配特定IP地址等等。RADIUS是一種基於UDP協議的上層協議,認證服務的監聽端口號為1812,記費服務的監聽端口號為1813。RADIUS的工作流程是:(1)用戶撥入NAS; (2)NAS向RADIUS服務器發送一系列加密的“屬性/值”; (3)RADIUS服務器檢查用戶是否存在、屬性/值是否匹配;(4)RADIUS服務器發送回“接受“或“拒絕“給NAS。    ----RADIUS服務器通常是基於數據庫來實現的。對於大型ISP,通常會使用諸如Oracle之類的大型後台數據庫。而對於中小型應用使用mysql這樣的數據庫就足夠了。其實RADIUS的身份驗證也可以通過LDAP來實現,但其應用不如數據庫那麼廣泛。    ----這裡介紹一種使用IC-RADIUS與mySQL配合建立RADIUS服務器的方案。並分別介紹了使用Cisco2610+Modem Pool作為NAS和使用Linux作為NAS的配置實例。    ----二、RADIUS服務器的建立    ----首先安裝配置好Linux的基本系統,注意需要安裝開發工具、Perl、Perl DBI和mySQL DBD模塊,當然還必須安裝mySQL數據庫。這裡我們假設把數據庫和RADIUS服務放在同一台服務器上。現在幾乎每個Linux發行版本裡都包含mySQL,所以可以直接安裝到系統裡。具體步驟如下。    ----1.安裝和配置ICRADIUS    ----(1)輸入以下命令    ----#tar xvfz icradius-0.18.1.tar.gz    ----#cd icradius-0.18.1/src    ----然後拷貝針對Linux的Make文件Makefile.lnx為Makefile,命令如下:    ----cp Makefile.lnx Makefile    ----這裡需要注意的是有可能需要修改Makefile文件,把mySQL庫、頭文件的位置根據實際安裝的情況加以修改。對於可執行文件的安裝位置也可以修改。    ----(2)運行如下命令    ----#make    ----#make install    ----2.創建RADIUS數據庫    ----(1)連接mysql數據庫,命令如下    ----#mysql -u root -pyourpassWord    ---->CREATE DATABASE radius; ### 創建radius數據庫    ----然後需要創建RADIUS數據庫需要的各個表格,這裡要使用icradius-0.18.1目錄下script子目錄中的radius.db文件,該文件已經定義了所需要的各個表格,這裡只要使用命令    ----#mysql -u root -pyourpassword radius < radius.db    ----即可。這時就創建了Radius認證和計費所需要的各個表格,見附表1。    ----3.填充各個表格    ----向上面創建的各個數據庫的表中添加內容。對於dictionary表的內容,icradius軟件提供了一個腳本文件script/dictimport.pl來創建,步驟如下。    ----(1)編輯該文件,修改    ----my $dbusername =root;    ----my $dbpassword = yourpassword;    ----為對應的數據庫管理員的用戶名和密碼。    ----(2)運行該腳本,命令如下:    ----#./dictimport.pl ../raddb/dictionary    ----如果使用Cisco路由器,還需要加載Cisco的dictionary文件,命令如下:    ----# ./dictimport.pl ../raddb/dictionary.cisco    ----(3)向nas表格中添加內容,先進入mysql:    ----# mysql -u root -pyourpassword radius    ----執行SQL語言命令如下:    ----insert into nas    ----values (0,"cisco nas","nas","10.60.39.250","cisco",32,"cisco","public","on");    ----其中各字段的意義見附表2。    ----(4)srcipts目錄下的radius.cgi是一個實現Web界面管理用戶及記費信息的CGI程序,但是要在使用該腳本程序以前,首先要在radcheck表格中添加如下內容:    ----INSERT INTO radcheck VALUES ("","admin","Password","adminpassword");    ----INSERT INTO radcheck VALUES ("","admin","Radius-Operator","Yes");    ----這裡,admin為RADIUS管理員的用戶名,adminpassword為管理員的密碼。    ----(5)將radius.cgi和usage.cgi拷貝到Web服務器的cgi-bin目錄下,再編輯這兩個文件,正確的設定數據庫管理員的用戶名和密碼。最後指定兩個文件中的$cookiedomain及$radhost為空。兩個文件中的$radsecret指定為NAS和RADIUS共享的密碼。    ----4.配置啟動radiusd    ----(1)在/etc/目錄下創建子目錄raddb    ----# mkdir /etc/raddb    ----(2)在該目錄下創建文件client,並設定其訪問權限:    ----# toUCh clients    ----# chmod 664 clients    ----(3)把icradius-0.18.1/raddb /目錄下的radiusd.conf拷貝到/etc/raddb目錄下:    ----#cp ~/icradius-0.18.1/raddb/radius.conf /etc/raddb/    ----(4)把~/icradius-0.18.1/raddb/中的所有文件拷貝到/etc/raddb目錄中。    ----其中在~/icradius-0.18.1/redhat/目錄下有一個名為rc.radiusd-redhat的文件,它是redhat環境下radiusd的啟動文件,將其拷貝到/etc/rc.d/init.d目錄下:    ----# cp ~/icradius-0.18.1/redhat/rc.radiusd-redhat /etc/rc.d/init.d/rc.radiusd    ----(5)編輯文件/etc/raddb/radius.conf文件,password後面修改為mysql的管理員密碼。    ----(6)編輯文件/etc/rc.d/init.d/rc.radius,把如下內容:    ----RADIUSD=/usr/sbin/radiusd    ----WATCHER=/usr/sbin/radwatch修改為(缺省安裝時)    ----RADIUSD=/usr/local/sbin/radiusd    ----WATCHER=/usr/local/sbin/radwatch    ----(7)拷貝~/icradius-0.18.1/scripts目錄下的radwatch到/usr/local/sbin目錄下。拷貝~/icradius-0.18.1/scripts目錄下的radiusd.cron.daily到/etc/cron.daily/目錄下。拷貝~/icradius-0.18.1/scripts目錄下的radiusd.cron.monthly到/etc/cron.daily/目錄下。    ----(8)啟動radiusd,命令如下    ----/etc/rc.d/init/rc.radiusd start    ----5.添加用戶    ----在浏覽器裡輸入http://radiusserver/cgi-bin/radius.cgi進入管理界面,在這裡輸入RADIUS管理員的用戶名和密碼。    ----(1)創建一個組,該組具有所有用戶都應該具有的特性,為該組起一個名字。    ----(2)進入組屬性設置界面,在“reply item”中設置最基本的屬性,命令如下:    ----Framed-Protocol PPP    ----Service-Type Framed-User    ----(3)添加用戶,為該用戶組起一個名字:aaa,並設定該用戶的密碼。    ----(4)進入了用戶屬性設置界面,選擇“add to group“*”all_user組”*“確定”,就可以看到,該用戶如下“reply item”:    ----Framed-Protocol PPP    ----Service-Type Framed-User    ----(5)如果需要設置該用戶的時間限制,則需要輸入時間限制的數字,注意時間單位為秒),因此一小時的時間限制對應的“Total-Time-Limte”屬性值為3600。    ----(6如果需要是設置回撥,在“reply item”中選擇“Cisco-AVPair lcp:callback-dialstring=1234567(回撥的電話號碼)”。對於“check item”和“reply item”根據不同的NAS設備類型有非常多的可選項,其功能也非常豐富。    ----三、撥號服務器的設置    ----通過上面的步驟,RADIUS服務器基本建立完畢了。為了讓撥號服務器使用RADIUS作為撥號用戶的身份驗證方式,必須在撥號服務器上作相應的設置。在本文討論的實例中使用了Cisco 2610路由器作為撥號服務器,在配備了16端口的異步串口模塊後,可以允許16個用戶同時撥入。在Cisco 2610上完成撥號基本配置可以正常工作後,需要加入如下語句來使用RADIUS作身份認證和記賬。    ----…    ----aaa new-model #激活AAA(authentication、authorization、accounting)訪問控制    ----aaa authentication login default line enable #進行login認證,若RADIUS Server未找到從本地數據庫內查找    ----aaa authentication ppp default radius local #進行P




Copyright © Linux教程網 All Rights Reserved