文/周立聘
上海教育城域網跨校身份認證聯盟基于Shibboleth構建,已有超過40所的上海高校和區縣加入該聯盟。本文從Shibboleth開始介紹平臺的工作原理和實現細節。
目前,上海教育城域網(以下簡稱SEMAN)的設備配置基本上由運維人員手工通過telnet或者ssh登錄設備操作,不方便、易出錯并且不夠安全。對于在城域網日常運維中會經常發現黑客行為,運維人員需要快速將黑客地址加入路由黑洞,以免造成進一步的危害。因此非常有必要探索一種更加方便、安全、靈活的配置方式。
配置平臺利用SEMAN跨校認證身份聯盟驗證用戶身份,成功通過認證的用戶就可以登錄平臺并配置屬于自己管理權限范圍內的地址。平臺后臺維護關于用戶使用權限的數據庫,保存特定用戶所能夠配置的目標地址列表等信息。用戶進入平臺后輸入希望配置的地址信息,通過數據庫信息判斷該用戶是否有權限操作對應的地址。對于確認有操作權限的用戶,執行對應的配置,將此地址寫入目標的黑洞設備當中,同時通過BGP協議,將上述IP地址在SEMAN范圍內進行通告。配置平臺基于HTML5實現,提供了Web GUI操作界面,運維人員可以方便的隨時隨地在PC或者各種移動終端上配置黑洞路由。同時,日志系統會記錄下此次運維人員的操作時間、內容等,方便后續的排錯、回溯。
SEMAN跨校身份認證聯盟基于Shibboleth構建,已有超過40所的上海高校和區縣加入該聯盟。本文從Shibboleth開始介紹平臺的工作原理和實現細節。
Shibboleth 是一個免費,開源的 Web SSO(Single Sign On,單點登錄)系統,具有豐富屬性的開放標準,支持安全訪問跨安全域的資源。有關用戶的信息是從身份提供者( IDP )發送到服務提供商( SP ),對受保護的內容或應用信息進行保護。所謂的聯盟并不是一個純粹的技術建造,通常可以用來幫助提供一個可擴展的方式信任對方。Shibboleth主要由以下三部分組成。

圖1 系統流程
1.IDP(Identity Provider, 身份提供者) 身份提供端:主要作用是向資源提供者提供用戶的屬性,以便使資源服務器根據其屬性對其訪問操作進行授權和響應。
2.SP(Service Provider, 資源提供者)資源服務提供端,主要作用是響應用戶的資源請求,并向該用戶所在的IDP查詢用戶的屬性,然后根據屬性作出允許或拒絕訪問資源的決策。
3.WAYF(Where Are You From,認證中心)。 Shibboleth2.0之后更名為DS,即Discovery Service, 但是習慣上依然稱呼為WAYF。
Shibboleth主要應用在校園內Web資源共享以及校園間的應用系統的用戶身份聯合認證。
平臺首先通過SEMAN跨校身份認證聯盟認證并確認身份,對于成功通過認證的用戶根據其身份信息在后臺數據庫里查找對應的具有配置權限的IP地址段,然后根據用戶配置目標檢查是否具有配置該設備的權限,如果有則正常配置,否則提示用戶輸入合法的配置目標。最后,在日志中記錄下用戶的所有操作。圖1為利用該平臺配置黑洞路由的操作流程。
基于shibboleth的跨校認證接入方式有兩種:shibboleth原生接入和sp代理方式接入。原生接入需要安裝shibboleth-sp組件。本文實現的系統是以SP代理方式接入。通過WAYF提供的代理接口對接,雙方提前協商好秘鑰。用戶通過認證后攜帶base64編碼后的身份信息和認證信息返回具體配置界面。SEMAN跨校認證界面如圖2所示。

圖2 跨校認證界面
跨校認證成功返回配置頁面后,除了攜帶用戶名和域名等相關信息外,還包含校驗碼和時間戳。配置頁面用PHP實現,對秘鑰和時間戳計算校驗碼,判斷來源請求是否偽造。只有滿足下述兩個條件的訪問請求才會被認定為合法請求:1.計算出校驗碼一致;2.時間戳是當前時間提前五秒內。對于通過認證的合法用戶顯示配置界面,否則提示警告信息返回,并記錄在日志系統日志中以備后續管理。
合法用戶可以使用該系統提供的圖形化配置功能方便的配置管理對應的設備,配置黑洞路由的界面如圖3所示。

圖3 路由配置界面
配置界面簡明扼要,輸入需要配置的地址段,點擊“添加/刪除”按鈕就可以操作。在執行具體配置之前,根據前述跨校認證返回的用戶信息,查詢后臺數據庫。根據從數據庫返回的該用戶具有操作權限的地址段,檢查其試圖配置的地址,如果有權限則執行對應的配置操作,沒有權限則返回失敗并提醒用戶重新輸入配置地址,同時將該行為保存在后臺日志中。
系統后臺維護著一份sqlite數據庫,保存了所有用戶能夠配置的目標地址段等信息。由管理人員定期維護更新,所有使用該配置平臺的用戶信息會手工加入該數據庫中。其基本信息包括:用戶名,域名,可操作性IP地址段,掩碼,有效時間。具體內容如下:
user1 sjtu.edu.cn 202.120.0.0 18 2099-12-31
user2 sjtu.edu.cn 202.120.64.0 17 2099-12-31
…
通過這些信息準確的定義具體用戶所能配置的地址段,保證系統的安全性。
由于輕量級的sqlite數據庫著重于輕便和訪問效率,在安全方面考慮比較少。為確保數據安全,采用128位IDEA加密算法對所有數據進行加密處理。數據加密后保存入數據庫,讀取之后解密再使用。
為確保操作的可追溯性,系統日志主要記錄兩類內容:
1.通過跨校認證進入配置頁面的用戶信息,具體內容包括:用戶名、域名、時間、是否偽造請求。對于偽造的請求還需要記錄下其源IP地址,以方便后續跟蹤追查。
2.合法用戶通過系統的操作行為,具體信息包括:用戶名、域名、時間、配置目標、配置動作、是否違規操作等。
為完成具體設備配置,系統使用PERL的Net::Telnet]模塊,通過Telnet完成具體的配置過程。Telnet同其它的Perl模塊一樣,使用面向對象的語法,因此非常簡單易用。完成黑洞路由配置添加,用到的兩條具體命令如下:
conf iproute add **.**.**.**/32
conf bgp add network **.**.**.**/32
具體的命令格式根據不同的設備型號可能有所區別。刪除時將"add"改為"del"即可。同時通過BGP協議,將上述IP地址在上海教育城域網范圍內進行通告,將安全問題及時阻斷,實現用戶側的一鍵斷網。
系統目前在上海教育城域網內試運行并根據實際反饋加以改進,得到了相關運維人員的肯定,很大程度上簡化了手工配置的工作量,減少了由于管理和誤操作產生的網絡故障。根據實際應用反饋的信息,目前還存在一定的優化空間:
首先,配置內容有待豐富。除黑洞路由外,可以逐步添加其他常見的配置功能,如端口,訪問列表配置等。
其次,完善后臺數據庫維護機制,提供更加方便的操作接口。目前數據庫維護基本由開發人員手工操作,下一步需要提供操作接口由專門的運維人員維護。
最后,逐步解決可能出現的安全風險。