王政軍 俞小怡 金玉玲
〔摘要〕[目的/意義]解決圖書館眾多的信息系統(tǒng)使用不同的認證方式給讀者和館員造成困惑和煩惱的問題,構(gòu)建圖書館統(tǒng)一認證平臺達到讀者使用不同信息系統(tǒng)認證方式的一致性。[方法/過程]基于匯文圖書館自動化系統(tǒng)中的讀者信息,利用開源軟件FreeRADIUS構(gòu)建圖書館統(tǒng)一的認證平臺,以大連理工大學(xué)圖書館認證平臺的實施方案為例,闡述系統(tǒng)的技術(shù)支撐原理、設(shè)計思路及具體實現(xiàn)方法。[結(jié)果/結(jié)論]通過具體實踐證明,基于FreeRADIUS的統(tǒng)一認證方案能夠滿足圖書館集成各信息系統(tǒng)的認證需求,提高信息系統(tǒng)的安全性和讀者使用的方便性。
〔關(guān)鍵詞〕FreeRADIUS;Linux;自動化系統(tǒng);統(tǒng)一認證;開源軟件;圖書館
隨著網(wǎng)絡(luò)信息化技術(shù)的不斷發(fā)展,圖書館引進的和自主開發(fā)的為讀者服務(wù)的信息化系統(tǒng)逐年增多。信息化應(yīng)用涉及圖書業(yè)務(wù)管理、讀者服務(wù)等方面,為了更好地開展這些信息化服務(wù)在讀者中的普及應(yīng)用,圖書館還要為讀者提供基礎(chǔ)的網(wǎng)絡(luò)接入服務(wù)。由于各種信息化應(yīng)用系統(tǒng)由不同的組織者提供的,造成讀者擁有多個系統(tǒng)的賬號密碼而容易混亂,同時因為缺少的統(tǒng)一的身份驗證平臺,管理員對于讀者身份的驗證和授權(quán)管理繁瑣。
當前計算機領(lǐng)域內(nèi)所使用的主流認證技術(shù)有AD[1]、LDAP[2]、RADIUS等技術(shù)。AD和LADP提供的是目錄服務(wù),將用戶和組織信息存儲在其中以方便查找,也可以理解為一種特殊的數(shù)據(jù)庫,它們的數(shù)據(jù)庫結(jié)構(gòu)只方便用戶信息的查找,而做不到對用戶信息的靈活修改。如果圖書館使用AD或LDAP作為認證服務(wù),就需要以AD或LDAP的存儲方式重新構(gòu)建讀者信息庫,而一般來說圖書館是以自動化系統(tǒng)中的讀者信息作為核心的信息庫,讀者的用戶名密碼和服務(wù)級別都由自動化系統(tǒng)來靈活管理,所以AD或LADP的認證模式不適合圖書館的需求。
本文以大連理工大學(xué)圖書館為例,采用RADIUS技術(shù)構(gòu)建統(tǒng)一認證平臺,前端采用基于Linux系統(tǒng)的開源軟件FreeRADIUS實現(xiàn)統(tǒng)一認證,后端RADIUS的數(shù)據(jù)庫采用關(guān)系型數(shù)據(jù)庫Oracle,以匯文自動化系統(tǒng)中的讀者信息表構(gòu)建適合FreeRADIUS需要的用戶信息表視圖。該方案提供安全、方便、穩(wěn)定的統(tǒng)一授權(quán)和認證平臺,讀者使用圖書館自動化系統(tǒng)中的賬號密碼就可以登錄所有集成該認證平臺的信息系統(tǒng),讓讀者有多套賬號且容易忘記自己密碼的時代成為歷史。
5期利用開源軟件FreeRADIUS構(gòu)建圖書館統(tǒng)一認證平臺的研究與實現(xiàn)May,2016Vol36No51RADIUS協(xié)議的介紹
RADIUS協(xié)議是專用的認證管理協(xié)議,其全稱為Remote Authentication Dial-In User Service,該協(xié)議在IETF的RFC 2865中有詳細定義[3]。RADIUS是基于UDP的一種客戶機/服務(wù)器協(xié)議,它允許網(wǎng)絡(luò)訪問服務(wù)器(NAS)執(zhí)行對用戶的驗證、授權(quán)和記賬。網(wǎng)絡(luò)訪問服務(wù)器通常是網(wǎng)絡(luò)設(shè)備(如路由器、交換機或無線AP等)或信息系統(tǒng)服務(wù)器(如圖書館中的遠程訪問、自助服務(wù)系統(tǒng)、電子資源閱覽服務(wù)等)。RADIUS服務(wù)器通常是在UNIX或Windows服務(wù)器上運行的一個監(jiān)護程序,本文所介紹的是在Linux操作系統(tǒng)上構(gòu)建FreeRADIUS認證服務(wù)器。
RADIUS協(xié)議認證機制靈活,可以采用PAP、CHAP或者Unix登錄認證等多種方式。RADIUS的認證過程有比較詳細的定義標準,本文限于篇幅限制并不能詳細介紹協(xié)議內(nèi)容,但是為方便讀者對整個認證系統(tǒng)結(jié)構(gòu)的理解,簡單介紹RADIUS的基本認證過程。RADIUS協(xié)議的認證過程如圖1所示。圖1RADIUS認證流程示意圖[4]
對RADIUS認證協(xié)議的理解首先要清楚認證協(xié)議的3個對象:
(1)用戶客戶端:一般指提交用戶名密碼的PC客戶端,通常以WEB頁面的形式展示給用戶,如圖書館讀者所使用的網(wǎng)絡(luò)登錄驗證頁面、校外訪問登錄頁面等;
(2)RADIUS Client:NAS(Network Access Server,網(wǎng)絡(luò)訪問服務(wù)器)被看成RADIUS的客戶端,接受用戶提交的用戶名密碼,并提交給RADIUS Server進行身份驗證,如圖書館所使用的網(wǎng)關(guān)設(shè)備、遠程訪問服務(wù)器等;
(3)RADIUS Server:對用戶名密碼進行合法性驗證,如本文所構(gòu)建的FreeRADIUS就是一個RADIUS Server。
當用戶通過本地計算機提交用戶名密碼請求登錄的時候,由接受登錄的RADIUS Client將用戶提供的認證信息發(fā)送給指定的RADIUS Server,并根據(jù)RADIUS Server的回應(yīng)作出相應(yīng)的授權(quán)決定。RADIUS Server負責接收認證請求并進行認證,然后將認證結(jié)果(包括連接協(xié)議、端口信息、ACL等授權(quán)信息)發(fā)送回RADIUS Client,RADIUS Client根據(jù)授權(quán)信息開通用戶對資源的訪問。RADIUS Server和RADIUS Client之間傳遞的認證信息用一個事先設(shè)置的口令進行加密,防止敏感信息泄露。如果是網(wǎng)絡(luò)設(shè)備的認證并開啟記賬服務(wù),RADIUS Client會向RADIUS Server發(fā)送一個連接開始的記賬信息包,其中包括用戶使用的連接種類、協(xié)議和其他自定義信息,當用戶斷開連接后,RADIUS Client會向RADIUS Server發(fā)送一個連接結(jié)束的記賬信息包,RADIUS Server根據(jù)此信息進行用戶記賬[5]。
2開源FreeRADIUS實施方法
本方案使用最新版本的FreeRADIUS 3010構(gòu)建RADIUS認證服務(wù)器,操作系統(tǒng)使用的是CentOS7 X64版本,后臺數(shù)據(jù)庫使用的是和匯文圖書館自動化系統(tǒng)一致的Oracle數(shù)據(jù)庫。
2Linux服務(wù)器的準備
FreeRADIUS的代碼執(zhí)行效率非常高,官方介紹文檔給出每秒鐘可處理3 000次請求的水平,加之其運行于Linux操作系統(tǒng)下,所以對硬件服務(wù)器的配置要求不高。普通單路CPU的服務(wù)器,在配置2G內(nèi)存、128G硬盤的情況下,可以滿足FreeRADIUS的處理需要。大連理工大學(xué)圖書館已經(jīng)采用虛擬化平臺很多年,幾乎所有的應(yīng)用服務(wù)器都構(gòu)建于虛擬化平臺之上。在虛擬化平臺上以CentOS7 X64的模板文件直接生成Linux操作系統(tǒng)即可。
無論是直接在物理機上直接安裝CentOS操作系統(tǒng),還是以虛擬化平臺生成的CentOS虛擬主機,建議安裝配置中選擇最小化(Minimal)安裝模式,因為FreeRADIUS只依賴于基本的操作系統(tǒng)功能即可,其他無用的服務(wù)容易造成服務(wù)器安全性降低、系統(tǒng)開銷增加、維護混亂等問題。
CentOS操作系統(tǒng)要進行基本的配置。首先是進行網(wǎng)絡(luò)配置,保證操作系統(tǒng)與需要認證的服務(wù)器(RADIUS Client)網(wǎng)絡(luò)聯(lián)通,保證操作系統(tǒng)與后臺Oracle數(shù)據(jù)庫服務(wù)器的網(wǎng)絡(luò)聯(lián)通。其次要進行CentOS操作系統(tǒng)的網(wǎng)絡(luò)安全特性的配置,CentOS操作系統(tǒng)默認開啟安全控制體系SELinux和網(wǎng)絡(luò)防火墻IPtables Service,為防止SELinux會對FreeRADIUS的執(zhí)行產(chǎn)生拒絕的情況,需要關(guān)閉SELinux服務(wù)特性,在文件/etc/selinux/config中添加SELINUX=disable記錄即可。CentOS的默認防火墻是屏蔽所有端口的訪問的,而FreeRADIUS服務(wù)需要開放UDP協(xié)議端口的1812和1813,所以需要修改CentOS操作系統(tǒng)的防火墻規(guī)則,通過編輯2編譯安裝支持Oracle數(shù)據(jù)庫的FreeRadius
本方案使用的FreeRADIUS版本是3010版本,可以從FreeRADIUS的官網(wǎng)(網(wǎng)站地址:http:∥freeradius.org/)上直接下載freeradius-server-3010.tar.gz文件,下載的文件解壓縮到指定的編譯工作目錄下,本文以目錄/opt/dev/freeradius-server-3010作為示例。
FreeRADIUS支持多種數(shù)據(jù)庫,默認支持的是MYSQL數(shù)據(jù)庫的,所以在裝有MYSQL的主機上直接就可以連接數(shù)據(jù)庫工作,行業(yè)內(nèi)很多FreeRADIUS的案例使用的也是MYSQL數(shù)據(jù)庫,對于維護人員來說安裝、部署、管理方便。本方案由于是要和匯文自動化系統(tǒng)中的用戶信息關(guān)聯(lián),所以FreeRADIUS使用的后臺數(shù)據(jù)庫為Oracle。當前FreeRADIUS搭配Oracle的使用案例和資料比較少,本文作者也是在查詢大量資料和不斷的試驗驗證之后,才總結(jié)出成功的實施方案經(jīng)驗。
很多的系統(tǒng)實施人員為使FreeRADIUS能夠支持Oracle順利編譯通過,先要在Linux下安裝完整的Oracle標準客戶端,而該軟件的安裝涉及到的技術(shù)點特別多,往往在實施過程中因?qū)映霾桓F的問題而難以繼續(xù)或軟件安裝后功能不全。其實查過Oracle的官方說明文檔后發(fā)現(xiàn),Oracle發(fā)布了精簡客戶端Instant Client及開發(fā)支持包SDK文件,精簡客戶端的部署只需將其釋放指定目錄并被LDLIBRARYPATH動態(tài)鏈接庫目錄包含即可。
3FreeRADIUS的設(shè)置
初始安裝的FreeRadius只支持本地test賬號的驗證,為使其適合圖書館各種信息系統(tǒng)的認證需求,還需要為其進行多種擴展化的設(shè)置。首先要準備FreeRADIUS的后臺Oracle數(shù)據(jù)庫,本方案是在匯文的Oracle數(shù)據(jù)中創(chuàng)建新的RADIUS數(shù)據(jù)庫方案。Oracle的管理工具Sql/Plus可對Oracle進行命令行的管理維護,RADIUS數(shù)據(jù)庫方案的創(chuàng)建命令如下,可以將這些代碼放在一個sql文件中,然后在Sql/Plus下執(zhí)行即可生成RADIUS數(shù)據(jù)庫方案。
在管理工具Sql/Plus中執(zhí)行/usr/local/radius/etc/raddb/mods-config/sql/main/oracle目錄下的schema.sql文件生成FreeRADIUS所需要的數(shù)據(jù)表結(jié)構(gòu)。數(shù)據(jù)庫中主要的表有radcheck(用戶檢查信息表)、radreply(用戶回復(fù)信息表)、Radgroupcheck(用戶組檢查信息表)、radgroupreply(用戶組檢查信息表)、Radusergroup(用戶和組關(guān)系表)、radacct(計費情況表)、radpostauth(認證后處理信息)等。本文作者所使用的FreeRADIUS 3010版本的schema.sql文件有錯誤,在該文件的190行缺少符號′/′而導(dǎo)致該sql文件執(zhí)行錯誤,可能是制作該sql文件的作者的筆誤,但是作為一個成熟的軟件發(fā)布版本有這樣的低級錯誤,讓本文作者確實不敢茍同,也許是因為FreeRADIUS搭配Oracle的案例太少而很少人提出這樣明顯的錯誤?如果是這樣的話更能體現(xiàn)出本篇論文的價值所在。
為了能夠使FreeRADIUS使用Oracle數(shù)據(jù)庫,需要設(shè)置FreeRADIUS支持通過sql認證的功能,在啟用模塊功能的/usr/local/radius/etc/raddb/mods-enabled/目錄下,通過建立已有模塊/usr/local/radius/etc/raddb/mods-available/sql的對應(yīng)文件軟鏈接來實現(xiàn)。編輯該sql
4利用匯文Oracle數(shù)據(jù)庫讀者信息
FreeRADIUS在數(shù)據(jù)庫中的賬戶信息是radcheck表中的記錄,而本文所搭建的圖書館統(tǒng)一認證平臺使用的認證用戶信息來自于匯文自動化系統(tǒng)中的用戶表(LIB3000.reader),該數(shù)據(jù)表包含讀者信息的證件號和被MD5加密的密碼字段。比較RADIUS數(shù)據(jù)庫方案的radcheck表和LIB3000方案中的reader表的結(jié)構(gòu),利用reader表可以在RADIUS方案中構(gòu)建radcheck視圖代替原有的radcheck表,將radcheck視圖中的用戶信息映射到reader下的記錄,實現(xiàn)使用reader表中的讀者信息進行FreeRADIUS的認證。本文作者所使用的radcheck視圖的創(chuàng)建代碼如下:
由于radcheck的視圖信息來自于匯文數(shù)據(jù)庫中的讀者信息表(reader),所以讀者在使用信息系統(tǒng)時的認證用戶名密碼與匯文自動化系統(tǒng)中的保持一致。管理人員不需要在統(tǒng)一認證平臺FreeRADIUS服務(wù)端維護讀者認證信息,所有讀者信息的創(chuàng)建、修改、權(quán)限劃分、注銷等通過匯文自動化系統(tǒng)集中維護,讀者也可以通過匯文OPAC終端查看修改自己的認證信息狀態(tài)。
3系統(tǒng)認證集成及效果
基于FreeRADIUS的統(tǒng)一認證平臺已經(jīng)在大連理工大學(xué)圖書館運行多年,圖書館所引進的信息系統(tǒng)要盡可能的與其集成認證。目前網(wǎng)絡(luò)接入認證、遠程訪問系統(tǒng)認證、自助服務(wù)認證以及其他的電子資源認證都能夠利用統(tǒng)一認證平臺對讀者進行身份驗證。
3網(wǎng)絡(luò)接入認證集成
大連理工大學(xué)圖書館網(wǎng)絡(luò)接入認證有兩種方式,一種是基于網(wǎng)絡(luò)交換機的8021X RADIUS認證,使用有線網(wǎng)絡(luò)接入的人員采用此種方式;另一種是基于網(wǎng)關(guān)的Web Portal Radius認證方式,使用無線終端或臨時接入網(wǎng)絡(luò)的人員采用此種方式。
8021X RADIUS認證的部署需要開啟交換機的8021X的認證功能,并且在交換機上指定為其提供RADIUS Server的服務(wù)器信息。本方案使用的網(wǎng)絡(luò)交換機是博科以太網(wǎng)接入交換機,我館自主開發(fā)的8021X的認證客戶端,其登錄和配置界面如圖2所示。圖28011X RADIUS認證客戶端及配置界面
Web Portal Radius需要網(wǎng)關(guān)設(shè)備具備RADIUS認證服務(wù)的功能。本方案采用的是深信服AC1700網(wǎng)關(guān)系統(tǒng),該設(shè)備利用WEB重定向技術(shù)驗證用戶名和密碼,后臺驗證方式通過外部FreeRADIUS認證服務(wù)器審查用戶的合法性。方案的效果如圖3所示。
2遠程訪問EZProxy集成
EZProxy是被廣泛使用的圖書館遠程訪問系統(tǒng),讀者經(jīng)過身份認證后,通過該系統(tǒng)可以訪問圖書館所購買的電子資源。EZProxy支持標準的RADIUS認證協(xié)議,本方案是在其配置文件user.txt文件中加入∶∶radius=192.168.10.154,secret=ezproxysharesecret,利用FreeRADIUS統(tǒng)一認證平臺進行用戶身份驗證。大連理工大學(xué)圖書館的EZProxy登錄頁面的效果如圖4所示。
33自助服務(wù)的集成
圖書館的自助服務(wù)系統(tǒng)越來越多,如大連理工大學(xué)圖書館有自助借還、自助上機、自助文印、自助超期罰款、自助研究間系統(tǒng)等。這些系統(tǒng)原來都是系統(tǒng)本地的用戶名密碼認證或者通過匯文一卡通等系統(tǒng)定制接口的方式認證,導(dǎo)致讀者使用的認證信息經(jīng)常混亂以及工作人員系統(tǒng)維護困難。通過與RADIUS統(tǒng)一認證平臺整合之后,所有讀者的圖3Web Portal的FreeRADIUS配置、讀者認證界面、后臺監(jiān)控界面
圖4EZProxy的登錄界面
用戶名密碼都與匯文自動化系統(tǒng)中的信息一致,提高讀者對于自助系統(tǒng)使用的便利性。
4其他資源的集成
目前數(shù)字資源廠商為使自己的平臺適應(yīng)最廣泛用戶群的需求,普遍支持標準的RADIUS認證協(xié)議,圖書館構(gòu)建統(tǒng)一的標準化RADIUS認證平臺也方便數(shù)字資源數(shù)據(jù)庫平臺的集成。本方案使用的FreeRADIUS認證系統(tǒng)符合RADIUS的標準協(xié)議,利用圖書館自動化系統(tǒng)系統(tǒng)中的用戶信息作為認證信息,讀者對數(shù)字資源的訪問只需要通過與圖書館自動化系統(tǒng)一致的用戶名密碼進行身