文/周立聘
上海教育城域網(wǎng)跨校身份認(rèn)證聯(lián)盟基于Shibboleth構(gòu)建,已有超過40所的上海高校和區(qū)縣加入該聯(lián)盟。本文從Shibboleth開始介紹平臺(tái)的工作原理和實(shí)現(xiàn)細(xì)節(jié)。
目前,上海教育城域網(wǎng)(以下簡稱SEMAN)的設(shè)備配置基本上由運(yùn)維人員手工通過telnet或者ssh登錄設(shè)備操作,不方便、易出錯(cuò)并且不夠安全。對(duì)于在城域網(wǎng)日常運(yùn)維中會(huì)經(jīng)常發(fā)現(xiàn)黑客行為,運(yùn)維人員需要快速將黑客地址加入路由黑洞,以免造成進(jìn)一步的危害。因此非常有必要探索一種更加方便、安全、靈活的配置方式。
配置平臺(tái)利用SEMAN跨校認(rèn)證身份聯(lián)盟驗(yàn)證用戶身份,成功通過認(rèn)證的用戶就可以登錄平臺(tái)并配置屬于自己管理權(quán)限范圍內(nèi)的地址。平臺(tái)后臺(tái)維護(hù)關(guān)于用戶使用權(quán)限的數(shù)據(jù)庫,保存特定用戶所能夠配置的目標(biāo)地址列表等信息。用戶進(jìn)入平臺(tái)后輸入希望配置的地址信息,通過數(shù)據(jù)庫信息判斷該用戶是否有權(quán)限操作對(duì)應(yīng)的地址。對(duì)于確認(rèn)有操作權(quán)限的用戶,執(zhí)行對(duì)應(yīng)的配置,將此地址寫入目標(biāo)的黑洞設(shè)備當(dāng)中,同時(shí)通過BGP協(xié)議,將上述IP地址在SEMAN范圍內(nèi)進(jìn)行通告。配置平臺(tái)基于HTML5實(shí)現(xiàn),提供了Web GUI操作界面,運(yùn)維人員可以方便的隨時(shí)隨地在PC或者各種移動(dòng)終端上配置黑洞路由。同時(shí),日志系統(tǒng)會(huì)記錄下此次運(yùn)維人員的操作時(shí)間、內(nèi)容等,方便后續(xù)的排錯(cuò)、回溯。
SEMAN跨校身份認(rèn)證聯(lián)盟基于Shibboleth構(gòu)建,已有超過40所的上海高校和區(qū)縣加入該聯(lián)盟。本文從Shibboleth開始介紹平臺(tái)的工作原理和實(shí)現(xiàn)細(xì)節(jié)。
Shibboleth 是一個(gè)免費(fèi),開源的 Web SSO(Single Sign On,單點(diǎn)登錄)系統(tǒng),具有豐富屬性的開放標(biāo)準(zhǔn),支持安全訪問跨安全域的資源。有關(guān)用戶的信息是從身份提供者( IDP )發(fā)送到服務(wù)提供商( SP ),對(duì)受保護(hù)的內(nèi)容或應(yīng)用信息進(jìn)行保護(hù)。所謂的聯(lián)盟并不是一個(gè)純粹的技術(shù)建造,通??梢杂脕韼椭峁┮粋€(gè)可擴(kuò)展的方式信任對(duì)方。Shibboleth主要由以下三部分組成。
圖1 系統(tǒng)流程
1.IDP(Identity Provider, 身份提供者) 身份提供端:主要作用是向資源提供者提供用戶的屬性,以便使資源服務(wù)器根據(jù)其屬性對(duì)其訪問操作進(jìn)行授權(quán)和響應(yīng)。
2.SP(Service Provider, 資源提供者)資源服務(wù)提供端,主要作用是響應(yīng)用戶的資源請(qǐng)求,并向該用戶所在的IDP查詢用戶的屬性,然后根據(jù)屬性作出允許或拒絕訪問資源的決策。
3.WAYF(Where Are You From,認(rèn)證中心)。 Shibboleth2.0之后更名為DS,即Discovery Service, 但是習(xí)慣上依然稱呼為WAYF。
Shibboleth主要應(yīng)用在校園內(nèi)Web資源共享以及校園間的應(yīng)用系統(tǒng)的用戶身份聯(lián)合認(rèn)證。
平臺(tái)首先通過SEMAN跨校身份認(rèn)證聯(lián)盟認(rèn)證并確認(rèn)身份,對(duì)于成功通過認(rèn)證的用戶根據(jù)其身份信息在后臺(tái)數(shù)據(jù)庫里查找對(duì)應(yīng)的具有配置權(quán)限的IP地址段,然后根據(jù)用戶配置目標(biāo)檢查是否具有配置該設(shè)備的權(quán)限,如果有則正常配置,否則提示用戶輸入合法的配置目標(biāo)。最后,在日志中記錄下用戶的所有操作。圖1為利用該平臺(tái)配置黑洞路由的操作流程。
基于shibboleth的跨校認(rèn)證接入方式有兩種:shibboleth原生接入和sp代理方式接入。原生接入需要安裝shibboleth-sp組件。本文實(shí)現(xiàn)的系統(tǒng)是以SP代理方式接入。通過WAYF提供的代理接口對(duì)接,雙方提前協(xié)商好秘鑰。用戶通過認(rèn)證后攜帶base64編碼后的身份信息和認(rèn)證信息返回具體配置界面。SEMAN跨校認(rèn)證界面如圖2所示。
圖2 跨校認(rèn)證界面
跨校認(rèn)證成功返回配置頁面后,除了攜帶用戶名和域名等相關(guān)信息外,還包含校驗(yàn)碼和時(shí)間戳。配置頁面用PHP實(shí)現(xiàn),對(duì)秘鑰和時(shí)間戳計(jì)算校驗(yàn)碼,判斷來源請(qǐng)求是否偽造。只有滿足下述兩個(gè)條件的訪問請(qǐng)求才會(huì)被認(rèn)定為合法請(qǐng)求:1.計(jì)算出校驗(yàn)碼一致;2.時(shí)間戳是當(dāng)前時(shí)間提前五秒內(nèi)。對(duì)于通過認(rèn)證的合法用戶顯示配置界面,否則提示警告信息返回,并記錄在日志系統(tǒng)日志中以備后續(xù)管理。
合法用戶可以使用該系統(tǒng)提供的圖形化配置功能方便的配置管理對(duì)應(yīng)的設(shè)備,配置黑洞路由的界面如圖3所示。
圖3 路由配置界面
配置界面簡明扼要,輸入需要配置的地址段,點(diǎn)擊“添加/刪除”按鈕就可以操作。在執(zhí)行具體配置之前,根據(jù)前述跨校認(rèn)證返回的用戶信息,查詢后臺(tái)數(shù)據(jù)庫。根據(jù)從數(shù)據(jù)庫返回的該用戶具有操作權(quán)限的地址段,檢查其試圖配置的地址,如果有權(quán)限則執(zhí)行對(duì)應(yīng)的配置操作,沒有權(quán)限則返回失敗并提醒用戶重新輸入配置地址,同時(shí)將該行為保存在后臺(tái)日志中。
系統(tǒng)后臺(tái)維護(hù)著一份sqlite數(shù)據(jù)庫,保存了所有用戶能夠配置的目標(biāo)地址段等信息。由管理人員定期維護(hù)更新,所有使用該配置平臺(tái)的用戶信息會(huì)手工加入該數(shù)據(jù)庫中。其基本信息包括:用戶名,域名,可操作性IP地址段,掩碼,有效時(shí)間。具體內(nèi)容如下:
user1 sjtu.edu.cn 202.120.0.0 18 2099-12-31
user2 sjtu.edu.cn 202.120.64.0 17 2099-12-31
…
通過這些信息準(zhǔn)確的定義具體用戶所能配置的地址段,保證系統(tǒng)的安全性。
由于輕量級(jí)的sqlite數(shù)據(jù)庫著重于輕便和訪問效率,在安全方面考慮比較少。為確保數(shù)據(jù)安全,采用128位IDEA加密算法對(duì)所有數(shù)據(jù)進(jìn)行加密處理。數(shù)據(jù)加密后保存入數(shù)據(jù)庫,讀取之后解密再使用。
為確保操作的可追溯性,系統(tǒng)日志主要記錄兩類內(nèi)容:
1.通過跨校認(rèn)證進(jìn)入配置頁面的用戶信息,具體內(nèi)容包括:用戶名、域名、時(shí)間、是否偽造請(qǐng)求。對(duì)于偽造的請(qǐng)求還需要記錄下其源IP地址,以方便后續(xù)跟蹤追查。
2.合法用戶通過系統(tǒng)的操作行為,具體信息包括:用戶名、域名、時(shí)間、配置目標(biāo)、配置動(dòng)作、是否違規(guī)操作等。
為完成具體設(shè)備配置,系統(tǒng)使用PERL的Net::Telnet]模塊,通過Telnet完成具體的配置過程。Telnet同其它的Perl模塊一樣,使用面向?qū)ο蟮恼Z法,因此非常簡單易用。完成黑洞路由配置添加,用到的兩條具體命令如下:
conf iproute add **.**.**.**/32
conf bgp add network **.**.**.**/32
具體的命令格式根據(jù)不同的設(shè)備型號(hào)可能有所區(qū)別。刪除時(shí)將"add"改為"del"即可。同時(shí)通過BGP協(xié)議,將上述IP地址在上海教育城域網(wǎng)范圍內(nèi)進(jìn)行通告,將安全問題及時(shí)阻斷,實(shí)現(xiàn)用戶側(cè)的一鍵斷網(wǎng)。
系統(tǒng)目前在上海教育城域網(wǎng)內(nèi)試運(yùn)行并根據(jù)實(shí)際反饋加以改進(jìn),得到了相關(guān)運(yùn)維人員的肯定,很大程度上簡化了手工配置的工作量,減少了由于管理和誤操作產(chǎn)生的網(wǎng)絡(luò)故障。根據(jù)實(shí)際應(yīng)用反饋的信息,目前還存在一定的優(yōu)化空間:
首先,配置內(nèi)容有待豐富。除黑洞路由外,可以逐步添加其他常見的配置功能,如端口,訪問列表配置等。
其次,完善后臺(tái)數(shù)據(jù)庫維護(hù)機(jī)制,提供更加方便的操作接口。目前數(shù)據(jù)庫維護(hù)基本由開發(fā)人員手工操作,下一步需要提供操作接口由專門的運(yùn)維人員維護(hù)。
最后,逐步解決可能出現(xiàn)的安全風(fēng)險(xiǎn)。