文/廖曉群 田志英 趙安新
隨著Internet的發展和教育網的接入,校園網絡資源越來越豐富,功能越來越復雜。這雖然為用戶提供了更廣泛的資源共享和信息交流網絡平臺,但對網絡管理和網絡安全問題提出了新的挑戰。作為網絡安全管理的重要組成部分,認證計費系統的建設勢在必行。
目前,認證計費系統普遍存在以下三方面的問題:
1.網絡對接入用戶缺乏有效的接入控制,包括認證、計費、帶寬限制、時間限制等,也無法靈活地按要求限制用戶的接入。
2.單純的網絡連接服務和統一的包月收費這種粗放型的計費方式不能滿足不同用戶的要求,需要一種以用戶為主的精細的靈活的計費方式。
3.網絡的管理和運營存在大量的手工操作,不能及時、準確地完成如開戶、銷戶、交費、退費、定期結算等的操作,效率較為低下。
針對上述問題,本系統提供了一種解決方案。為了有效控制用戶網絡接入,對radius數據包attribute域的值進行修改和添加,實現了對賬戶IP、MAC、上行帶寬、下行帶寬、上網時限等信息的管理;為了滿足不同用戶的要求,提出了以包月、計時、計流量為計費原型的計費策略方案;為了減輕網絡管理的手工操作,設計了人性化的用戶自助服務子系統,實現了用戶信息注冊、開戶申請、續費申請、充值申請、銷戶申請等功能,申請提交后,等待網管人員的審核,提高了信息錄入的準確度。
AAA系統和radius協議
認證計費系統一般簡稱為AAA認證系統,是指Authentication(認證)、Authorization(授權)和Accounting(計費)。一套完善的AAA認證計費系統可以很好地解決網絡管理和運營過程中出現的問題,比如認證計費和用戶管理等。
radius(Remote Authentication Dial In User Service,遠程驗證撥號用戶服務)是解決AAA最常用的通信協議。接入服務器和認證計費系統間的通信協議多采用radius。該協議采用客戶機/服務器模式,能支持多種認證體系(PAP、CHAP、UNIX Login)。它通過UDP協議來傳送數據包,包的格式允許其不斷增加封裝的屬性,以支持新出現的認證需求,這提供了良好的可擴展機制。有關協議的最新標準可參照RFC2865 和RFC2866。
目前,FreeRADIUS服務被廣泛地應用到radius服務器中,它具有高性能和高可配置性,是符合GPL規范的免費軟件。它帶有基于PHP的Web管理接口dialup_admin,支持SQL數據庫用戶管理。
接入認證技術
用戶終端與接入服務器之間的接入協議或方式就是接入認證技術,目前最流行的有PPPoE、Web和802.1x 3種。PPPoE認證與電信運營商非對稱數字用戶線(ADSL)接入業務相結合,應用最為廣泛;Web認證和802.1x認證主要應用在以太網接入上,也獲得了規模應用。這幾種認證技術支撐了整個寬帶用戶接入的發展,對建設可運營、可管理的網絡起到了非常大的作用。
Web認證兼容性好,應用業務可擴展性強,而且不需要客戶端軟件,所以備受青睞。Web認證過程屬于全三層處理,可以跨越多個網絡,靈活性好。在設備需求方面,Web認證和PPPoE認證要求相同,需要BAS和計費認證系統的支持,但Web認證過程中沒有PPP的打包處理,所以不存在采用PPPoE認證方式中的MTU影響性能的問題。802.1x認證的設備一般是成本較低的交換機,其可靠性和安全性都不是很好,抗攻擊能力相對來說比較差,所以這種認證方式主要用于用戶比較少的網絡。而Web認證可以提供大容量的用戶接入,能夠在較大范圍內提供高密度用戶接入解決方案。本系統采用Web方式進行接入認證,用戶數據包的識別方式為IP+VLAN+MAC。
Web認證步驟如下:

圖1 系統體系
1.用戶PC機啟動,系統程序通過DHCP,向DHCP服務器請求IP地址。
2.接入服務器(如認證網關)為該用戶添加訪問記錄,目的是限制用戶只能訪問一些內部服務器、個別外部服務器如DNS。
3.用戶登錄Web認證界面(內部服務器提供服務),提交認證請求信息。
4.接入服務器通過radius協議和認證系統進行通信,請求對用戶進行認證。
5.認證系統返回認證結果,如果認證通過,用戶可以自由訪問網絡。在使用兩次地址分配的情況下,客戶端會觸發用戶重新獲取新的IP地址。
6.用戶下線時,接入服務器會更新用戶記錄,并通告計費系統停止計費,用戶的網絡訪問受限。如果使用兩次地址分配,客戶端會觸發用戶再次獲取IP地址。
工作原理
系統主要由認證網關、radius服務器和后臺數據庫三部分組成。認證網關和radius服務器之間通過UDP協議進行傳輸,傳輸時用共享密鑰來加密,且共享密鑰不在網上傳輸。默認認證端口是1812,計費端口是1813。
系統實現的體系框圖,如圖1所示。
用戶向認證網關提交認證請求;認證網關向radius服務器轉交用戶認證信息;radius服務器將用戶信息與數據庫信息進行比對,如果符合,則認證通過并授權,用戶可以順利訪問網絡資源,并開始計費,否則,認證失敗,用戶被拒絕訪問網絡資源。
可見,radius服務器是整個系統的核心,它與認證網關連接,處理用戶的認證和計費請求。在認證階段,從認證網關提取用戶名和密碼,連接數據庫,進行查詢比較。在計費階段,連接數據庫,更新計費信息記錄、上網日志記錄等。
功能模塊
本系統可分為三個子系統:網管子系統、用戶自助服務子系統和后臺通信子系統。
網管子系統由系統管理維護功能模塊(數據庫備份與恢復、日志管理、系統信息管理、系統升級管理)和用戶管理維護功能模塊(用戶信息管理、賬戶使用明細查詢等)組成。用戶自助服務子系統功能主要包括用戶注冊、賬號充值申請、賬號續費申請、使用明細查詢和用戶信息維護。功能框圖如圖2所示。
通信子系統是解決認證網關和radius服務器的實時信息交互問題,是基于radius協議的UDP數據包傳輸。工作流圖如圖3所示。

圖2 網管子系統和用戶自助服務子系統的基本功能

圖3 通信子系統工作流
FreeRADIUS安裝
我們從http://freeradius.org/download.html下載freeradius2.0.0.tar.gz文件,解壓縮后執行./configure、make all、make install,然后編譯并安裝。FreeRADIUS的主配置文件(包括raduisd.conf、sql.conf、client.conf)放在/usr/local/etc/raddb目錄下,radiusd運行文件放置在/usr/local/sbin目錄下。最后,執行radiusdX命令,啟動FreeRADIUS服務。若正常啟動,則會出現:
Listening on authentication address * port 1812
Listening on accounting address * port 1813
Listening on proxy address * port 1814
Ready to process requests.
數據庫設計
本系統后臺數據庫使用的是MySQL數據庫。我們利用PowerDesiger工具軟件創建xkradius數據庫。通過對系統三大功能模塊的功能細化和詳細設計,將庫表分為四類:用戶信息表類、賬戶信息表類、計費策略表類、radius后臺通信表類。其中,用戶信息表類中的表字段信息可以從校園網信息平臺的學籍管理系統和教務管理系統直接獲取;賬戶信息表類可以同校園一卡通系統和財務管理系統共享;計費策略表類為系統計費功能的擴展提供了有效的后臺數據庫支持,以實現計費策略靈活管理;radius后臺通信表類的設計主要是為了存放認證網關上定時接收到的賬戶信息(IP、MAC、上線時間、下線時間等)。xkradius數據庫包括18個表:用戶基本信息表(user_base_info)、radius響應信息表(radreply)、radius檢測信息表(radcheck)、radius組響應信息表(radgroupreply)、radius組檢測信息表(radgroupcheck)、radius用戶組信息表(radusergroup)、radius授權信息表(radpostauth)、badusers_table(黑名單表)、account_log_table(賬戶日志表)、online_table(在線信息表)、admin_table(管理員信息表)、user_traffic_table(用戶流量表)、prepaid_log_table(充值日志表)、conpaid_log_table(續費日志表)、accountclapol(計費策略分類表)、pakgepol(包月策略表)、timepol(計時策略表)、trafficpol(計流量策略表)。在表中添加相應的字段后,生成xkradius.sql文件,以便導入到MySQL數據庫中。
配置FreeRADIUS服務
我們主要對以下文件進行操作:在radiusd.conf文件中去掉authorize和accouting函數體內的SQL注釋(#),確保SQL功能可用;在sql.conf文件中修改Server(數據庫服務器IP地址值)、login(root)、password(MySQL的root密碼)、radius_db(數據庫名)的值;在clients.conf文件中插入client{}函數,以添加認證網關服務器的相關信息(IP、secret、shortname)等。
Web服務管理
系統Web服務是建立在目前最流行的Web應用基礎架構LAMP(Linux+Apache+MySQl+PHP)上的。因此,我們只需考慮Web服務的管理問題,webmin應用服務軟件提供了一個友好的可視化Web管理平臺。在webmin中,只要打開Apache Webserver選項,修改virtual server下的address、port、Document root(dialup_admin文件包路徑)的值,配置Web Server服務。然后,打開MySQL Database Server選項,添加數據庫xkradius,導入已生成的xkradius.sql數據庫文件,這相當于在MySQL數據庫中創建了18個表,并且可以進行管理和修改。
子系統的實現
1.網管子系統和用戶自助服務子系統
這兩個子系統功能主要是通過PHP語言技術對后臺數據庫的操作來實現。
2.通信子系統
該子系統功能通過C語言技術對基于radius協議的FreeRADIUS服務的實現來完成。認證計費流程圖如圖4所示。

圖4 認證計費流程
本系統運營一年多,成功實現了對教師和學生用戶統一有效的認證計費管理,為用戶提供了相對安全的網絡環境。它不僅解決了校園網絡管理的問題,而且給局域網(公司、校區、網吧、酒店等)認證計費系統的建設提供了一種思路。隨著用戶數量的不斷增加,網絡負荷會逐漸加重,為保證系統的快速性和穩健性,可結合接收數據流和發送數據流的分離、認證流和計費流的分離的技術對系統進行改進。