吳賢平
(溫州大學(xué),溫州 325035)
由于傳統(tǒng)認(rèn)證(Authentication,又稱鑒別)方式對校園網(wǎng)中用戶數(shù)據(jù)包繁瑣的處理造成了網(wǎng)絡(luò)傳輸瓶頸,而通過增加其他網(wǎng)絡(luò)設(shè)備來解決傳輸瓶頸勢必造成網(wǎng)絡(luò)成本的提升,因此無法滿足用戶對網(wǎng)絡(luò)安全性、高效性和低成本的要求。IEEE 802.1x通過對認(rèn)證方式和認(rèn)證體系結(jié)構(gòu)進(jìn)行優(yōu)化,有效地解決了傳統(tǒng)PPPoE和Web/Portal認(rèn)證方式帶來的問題,消除了網(wǎng)絡(luò)瓶頸,減輕了網(wǎng)絡(luò)封裝開銷,降低了建網(wǎng)成本,從而成為當(dāng)前校園網(wǎng)選型的一個熱點。
802.1 x作為一個認(rèn)證協(xié)議,在實現(xiàn)的過程中有很多重要的工作機制[1,2](如圖1所示)。
圖1 IEEE 802.1x協(xié)議的工作機制
認(rèn)證的發(fā)起可以由用戶主動發(fā)起,也可以由認(rèn)證系統(tǒng)發(fā)起。當(dāng)認(rèn)證系統(tǒng)探測到未經(jīng)過認(rèn)證的用戶使用網(wǎng)絡(luò),就會主動發(fā)起認(rèn)證;用戶端則可以通過客戶端軟件向認(rèn)證系統(tǒng)發(fā)送EAPOL-Start報文發(fā)起認(rèn)證。
圖2 802.1x協(xié)議的體系結(jié)構(gòu)
IEEE 802.1x協(xié)議的體系結(jié)構(gòu)包括三個重要的部分:Supplicant System客戶端、Authenticator System認(rèn)證系統(tǒng)、Authentication Server System認(rèn)證服務(wù)器。圖2描述了三者之間的關(guān)系以及互相之間的通信。
客戶端系統(tǒng)一般為一個用戶終端系統(tǒng),該終端系統(tǒng)通常要安裝一個客戶端軟件,用戶通過啟動這個客戶端軟件發(fā)起802.1x協(xié)議的認(rèn)證過程。為支持基于端口的接入控制,客戶端系統(tǒng)需支持EAPOL(Extensible Authentication Protocol Over LAN)協(xié)議[3,4]。
常見的寬帶接入用戶認(rèn)證方式主要有三種:PPPoE、Web/Portal、802.1x。
1)PPPoE認(rèn)證方法采用安裝在端局BNAS或支持PPPoE的交換機, 負(fù)責(zé)終結(jié)由用戶PC發(fā)起的PPPoE進(jìn)程, 并在BNAS后面連接認(rèn)證服務(wù)器和計費服務(wù)器。用戶登錄時,BNAS將用戶名和密碼傳送至認(rèn)證服務(wù)器, 驗證通過后, 用戶接入網(wǎng)絡(luò)并開始計費。PPPoE認(rèn)證操作簡單且用戶較容易接受,能夠很好地實現(xiàn)用戶計費、在線檢測和速率控制等功能。但PPP協(xié)議與以太網(wǎng)技術(shù)存在本質(zhì)上的差異, 需要被再次封裝到以太網(wǎng)的幀里, 存在封裝效率問題。
2)Web/Portal認(rèn)證是一種業(yè)務(wù)類型的認(rèn)證, 通過啟動一個Web頁面輸入用戶名和密碼, 實現(xiàn)身份認(rèn)證。該認(rèn)證方式無需特殊的客戶端軟件, 降低了網(wǎng)絡(luò)維護(hù)工程量; 無需多層數(shù)據(jù)封裝, 保證效率。但Web認(rèn)證基于應(yīng)用層協(xié)議, 建網(wǎng)成本高, 易用性不夠好, 開放性不夠好, 沒有統(tǒng)一標(biāo)準(zhǔn)。
3)802.1x認(rèn)證的特點: 協(xié)議為兩層協(xié)議, 對設(shè)備的整體性能要求不高, 但要求認(rèn)證系統(tǒng)內(nèi)的所有設(shè)備都必須支持802.1x協(xié)議, 用戶需要安裝客戶端軟件; 對組播業(yè)務(wù)的支持性很好, 易于支持多業(yè)務(wù)和新興流媒體業(yè)務(wù); 可以映射不同的用戶認(rèn)證等級到不同的VLAN; 不需要進(jìn)行協(xié)議間的多層封裝; 認(rèn)證與業(yè)務(wù)分離, 用戶通過認(rèn)證后, 系統(tǒng)對后續(xù)的數(shù)據(jù)包無特殊處理, 有效地解決了網(wǎng)絡(luò)“瓶頸”。
客戶端在邏輯結(jié)構(gòu)上分為兩部分:第一部分是底層的協(xié)議實現(xiàn),第二部分是與用戶交互的界面設(shè)計。底層部分參照802.1x協(xié)議設(shè)計,并進(jìn)行相應(yīng)的修改,最終生成一個動態(tài)鏈接庫方便上層調(diào)用[6]。下面就數(shù)據(jù)包封裝、數(shù)據(jù)包發(fā)送和功能設(shè)計等進(jìn)行詳細(xì)說明。
3.1.1 數(shù)據(jù)包封裝
用戶接入認(rèn)證的客戶端主要完成對二層數(shù)據(jù)幀的封裝以及發(fā)送,并響應(yīng)NAS的數(shù)據(jù)幀。設(shè)計的客戶端程序修改原有認(rèn)證過程中第三步(如圖1)的數(shù)據(jù)幀EAP-Response/Identity,在其中加入認(rèn)證需要的用戶IP和MAC地址,即在響應(yīng)NAS發(fā)送EAP-Request/Identity的時候。修改后的數(shù)據(jù)幀如圖3所示。
圖3 修改后的EAP-Response數(shù)據(jù)幀結(jié)構(gòu)
3.1.2 數(shù)據(jù)包發(fā)送
數(shù)據(jù)包發(fā)送功能利用了Winpcap(Windows packet capture)提供的免費接口來實現(xiàn)底層數(shù)據(jù)包的收發(fā)工作,Winpcap是windows平臺下一個免費、公共的網(wǎng)絡(luò)訪問系統(tǒng)。開發(fā)Winpcap這個項目的目的在于為win32應(yīng)用程序提供訪問網(wǎng)絡(luò)底層的能力。它提供了以下的各項功能:
1)捕獲原始數(shù)據(jù)包,包括在共享網(wǎng)絡(luò)上各主機發(fā)送/接收的以及相互之間交換的數(shù)據(jù)包;
2)在數(shù)據(jù)包發(fā)往應(yīng)用程序之前,按照自定義的規(guī)則將某些特殊的數(shù)據(jù)包過濾掉:
3)在網(wǎng)絡(luò)上發(fā)送原始的數(shù)據(jù)包;
4)收集網(wǎng)絡(luò)通信過程中的統(tǒng)計信息。
Winpcap提供了一系列的API,我們可以通過這些API在沒有任何另外中間層參與的情況下實現(xiàn)Ethernet網(wǎng)絡(luò)報文的截取。
在應(yīng)用開源的項目FreeRadius時,考慮實際需要,添加如下功能:
3.2.1 分階段認(rèn)證功能
在FreeRadius中實現(xiàn)了分階段認(rèn)證,第一階段的主機認(rèn)證(IP和MAC)在數(shù)據(jù)庫中做認(rèn)證,第二階段的用戶信息認(rèn)證(用戶名和密碼)也在數(shù)據(jù)庫中做認(rèn)證。
3.2.2 日志導(dǎo)出功能
在用戶通過認(rèn)證后,F(xiàn)reeRadius中實現(xiàn)了把用戶連接后的日志信息記錄到數(shù)據(jù)庫中,包括用戶登錄時間、下線時間、用戶IP和MAC地址、用戶連接的NAS地址等信息。
3.2.3 單一用戶登錄功能
當(dāng)用戶連接而沒有發(fā)出下線請求,同時相同的用戶名(在另一臺計算機上)再次登錄時,會提示出錯信息。這樣可以設(shè)定相同用戶名可以同時登錄的數(shù)目,防止帳號盜用。
3.2.4 帳號到期功能
分配帳號時,會預(yù)先設(shè)置帳號到期時間,過期后用戶將不能再登錄。這樣可以設(shè)定用戶帳號使用的有效日期。
FreeRadius是開源的免費使用的RADIUS服務(wù)器。FreeRadius已經(jīng)具有了商業(yè)化RADIUS大部分的功能。FreeRadius支持LDAP、MySQL、PostgreSQL和Oracle數(shù)據(jù)庫;它還支持多種加密類型,如EAP-MD5、EAP-TTLS和Cisco LEAP。本文中RADIUS服務(wù)器正是采用了FreeRadius 1.1.7,并在此基礎(chǔ)上做出修改。
數(shù)據(jù)庫服務(wù)器采用oracle9.2.0.1,認(rèn)證時可以用于存儲用戶的帳號信息和計算機認(rèn)證信息。用戶帳號數(shù)據(jù)庫服務(wù)器保存所有用戶上網(wǎng)的用戶名和密碼,不但對安全性要求很高,而且對于日后的網(wǎng)絡(luò)日常使用、管理和維護(hù)有很大的影響。因此,將數(shù)據(jù)庫服務(wù)器部署在網(wǎng)絡(luò)中心,并且與認(rèn)證計費服務(wù)器Radius分開,再由核心交換機的ACL功能允許認(rèn)證計費服務(wù)器Radius訪問它,從而進(jìn)一步提高后臺數(shù)據(jù)的安全性。
Web服務(wù)器用于客戶端軟件的升級,采用Apache Server作為升級服務(wù)器。在Web服務(wù)器上使用雙網(wǎng)卡。內(nèi)網(wǎng)網(wǎng)卡與數(shù)據(jù)服務(wù)器連接,交換數(shù)據(jù)。外網(wǎng)網(wǎng)卡接入校園網(wǎng)服務(wù)器區(qū),提供給校園網(wǎng)系統(tǒng)通過TCP/IP可以訪問的Web服務(wù)器。測試用的客戶端操作系統(tǒng)為WinXP。
測試用的NAS為華為的S系列的S3300交換機。
為了測試客戶端和服務(wù)器是否能正常工作,以及是否實現(xiàn)了預(yù)期的功能,設(shè)計了一些實際中出現(xiàn)的一些情況來加以測試,測試如下。
1)用戶A用計算機C上網(wǎng)時,利用用戶A的帳號、密碼和計算機C的IP和MAC地址進(jìn)行認(rèn)證,當(dāng)兩個認(rèn)證都通過,才能夠接入網(wǎng)絡(luò);另外一個用戶B也可以利用自己的帳號在計算機C上網(wǎng),此時認(rèn)證的則是B的用戶名和密碼,以及計算機C的IP和MAC地址。A也可以在校園網(wǎng)內(nèi)任何一臺IP和MAC設(shè)置正確的計算機上利用自己的帳號上網(wǎng)。測試目的:檢測用戶信息認(rèn)證和主機認(rèn)證是否能分開進(jìn)行,以及認(rèn)證信息在整個校園網(wǎng)中的統(tǒng)一性。
2)用戶A用計算機C上網(wǎng)時,同時用戶B用計算機D上網(wǎng),但是B盜用A的帳戶,則此時會給出錯誤提示。測試目的:檢測用戶帳號重登錄數(shù),即默認(rèn)情況下設(shè)置用戶帳號只能登錄一次。
3)用戶A用計算機C上網(wǎng)時,當(dāng)超過預(yù)期帳號的合法日期后,就會提示出錯。測試目的:檢測用戶帳號有效日期的正確性,即用戶只能在帳號合法日期內(nèi)進(jìn)行認(rèn)證。
4)用戶A用計算機C上網(wǎng)時,可以連接 WEB服務(wù)器來檢測是否有新版本的客戶端程序,如果有則進(jìn)行升級,升級后仍舊可以正常訪問網(wǎng)絡(luò)資源。測試目的:檢測WEB服務(wù)器是否正常工作,以及客戶端升級是否正常。
5)上述過程在另一臺NAS上也能夠達(dá)到預(yù)期的目的。
改進(jìn)后的802.1x認(rèn)證技術(shù)能夠比較好地解決現(xiàn)階段所面臨的用戶身份認(rèn)證和應(yīng)用終端的安全性問題,而且改進(jìn)后的協(xié)議也能進(jìn)一步增強網(wǎng)絡(luò)安全性,達(dá)到了設(shè)計要求和實現(xiàn)目的。但正如大家所共知的,任何一項技術(shù)都不可能解決目前所面臨的全部問題。因此,僅僅依靠802.1x這項技術(shù)來解決校園身份管理系統(tǒng)中的用戶身份認(rèn)證和應(yīng)用終端所面臨的所有安全問題是不現(xiàn)實的。只有多項技術(shù)和相關(guān)的管理規(guī)定有機結(jié)合,才能構(gòu)建一個真正安全、可靠的網(wǎng)絡(luò)環(huán)境。
[1]許亦鏡.802.1x協(xié)議在校園網(wǎng)中的應(yīng)用[J].閩江學(xué)院學(xué)報,2008,(2):13.
[2]韓榮珍.深入剖析802.1x協(xié)議[J].計算機安全,2008,(11):25.
[3]嚴(yán)小英,溫川.基于802.1x網(wǎng)絡(luò)的一卡通實現(xiàn)[J].中國教育網(wǎng)絡(luò),2008,(5):36.
[4]何江.基于802.1x的校園網(wǎng)認(rèn)證系統(tǒng)研究與實現(xiàn)[D].山西: 太原理工大學(xué), 2003.
[5]張毅,高東懷,許衛(wèi)中,等.校園網(wǎng)網(wǎng)絡(luò)用戶安全身份認(rèn)證體系分析[J].醫(yī)療衛(wèi)生裝備, 2008,(4):23.