標籤:
作為一名網路系統管理員,您需要為您所需管理的每個網路裝置存放用於管理的使用者資訊。但是網路裝置通常只支援有限的使用者管理功能。學習如何使用Linux上的一個外部RADIUS伺服器來驗證使用者,具體來說是通過一個LDAP伺服器進行驗證,可以集中放置儲存在LDAP伺服器上並且由RADIUS伺服器進行驗證的使用者資訊,從而既可以減少使用者管理上的管理開銷,又可以使遠程登入過程更加安全。
資料安全作為現代系統中網路安全的一部分,與系統安全一樣的重要,所以保護資料--確保提供機密性、完整性和可用性--對管理員來說至關重要。
在本文中,我將談到資料安全性的機密性方面:確保受保護的資料只能被授權使用者或系統訪問。您將學習如何在Linux系統上建立和配置一個Remote Authentication Dial-In User Service 伺服器(RADIUS),以執行對使用者的驗證、授權和記帳(AAA)。
各組成元素介紹
首先讓我們談一談RADIUS協議、AAA組件以及它們如何工作,另外還有LDAP協議。
Remote Authentication Dial-In User Service 協議是在IET的RFC 2865中定義的(請參閱參考資料獲得相關連結)。它允許網路存取伺服器(NAS)執行對使用者的驗證、授權和記帳。RADIUS是基於UDP的一種客戶機/伺服器協議。RADIUS客戶機是網路存取伺服器,它通常是一個路由器、交換器或無線訪問點(訪問點是網路上專門配置的節點;WAP是無線版本)。RADIUS伺服器通常是在UNIX或Windows 2000伺服器上啟動並執行一個監護程式。
RADIUS和AAA
如果NAS收到使用者串連請求,它會將它們傳遞到指定的RADIUS伺服器,後者對使用者進行驗證,並將使用者的配置資訊返回給NAS。然後,NAS接受或拒絕串連請求。
功能完整的RADIUS伺服器可以支援很多不同的使用者驗證機制,除了LDAP以外,還包括:
PAP(Password Authentication Protocol,密碼驗證通訊協定,與PPP一起使用,在此機制下,密碼以明文形式被發送到客戶機進行比較);
CHAP(Challenge Handshake Authentication Protocol,挑戰握手驗證協議,比PAP更安全,它同時使用使用者名稱和密碼);
本地UNIX/Linux系統密碼資料庫(/etc/passwd);
其他本機資料庫。
在RADIUS中,驗證和授權是組合在一起的。如果發現了使用者名稱,並且密碼正確,那麼RADIUS伺服器將返回一個Access-Accept響應,其中包括一些參數(屬性-值對),以保證對該使用者的訪問。這些參數是在RADIUS中配置的,包括訪問類型、協議類型、使用者指定該使用者的IP地址以及一個存取控制清單(ACL)或要在NAS上應用的靜態路由,另外還有其他一些值。
RADIUS記帳特性(在RFC 2866中定義;請參閱參考資料獲得相關連結)允許在串連會話的開始和結束髮送資料,表明在會話期間使用的可能用於安全或開單(billing)需要的大量資源--例如時間、包和位元組。
輕量級目錄訪問協議
輕量級目錄訪問協議(Lightweight Directory Access Protocol,LDAP)是一種開放標準,它定義了用於訪問和更新類X.500 目錄中資訊的一種方法。LDAP可用於將使用者資訊儲存在一個中央場所,從而不必將相同的資訊儲存在每個系統上。它還可以用於以一種一致的、可控制的方式維護和訪問資訊。
LDAP在一個集中的目錄中系統管理使用者,從而簡化了使用者管理工作。除了儲存使用者資訊外,在LDAP中定義使用者還可以使一些可選特性得到啟用,例如限制登入的數量。在本文中,您將學習如何配置RADIUS伺服器,以便基於LDAP驗證使用者--由於本文的重點在於RADIUS,我不會描述關於LDAP伺服器的安裝和配置的細節。
OpenLDAP是LDAP的一種開放源碼實現。在OpenLDAP.org上可以找到關於它的詳細資料(請參閱參考資料獲得相關連結)。
情境
想像以下情境:
使用者在家裡可以通過撥號驗證訪問他公司的內部網。
帶無線支援的膝上型電腦可以通過無線驗證串連到一個校園網。
管理員使用他們的工作站通過系統管理使用者驗證以telnet或HTTP登入到網路裝置。
所有這些驗證任務都可以通過一個RADIUS伺服器基於一個中央LDAP伺服器來完成(見圖 1)。
圖1 通過RADIUS和LDAP進行驗證
在本文中,我將重點描述對最後一種選項的實現,作為對該解決方案的一個介紹。首先安裝RADIUS伺服器。
安裝 RADIUS
RADIUS伺服器軟體可以從多個地方獲得。在本文中,我將使用FreeRADIUS(請參閱參考資料獲得相關連結),但Cisco Secure Access Control Server (ACS)是一種集中式使用者存取控制架構,可用於跨UNIX和Windows上多個Cisco裝置的使用者管理,並支援Cisco 特有的協議TACACS+(據說在支援TACACS+的裝置上可擁有更多的特性)。
FreeRADIUS是來自開放源碼社區的一種強大的Linux上的RADIUS伺服器,可用於如今的分布式和異構計算環境。FreeRADIUS 1.0.2 支援LDAP、MySQL、PostgreSQL和Oracle資料庫,並與諸如EAP和Cisco LEAP之類的網路通訊協定相容。FreeRADIUS目前被部署在很多大型生產網路系統中。
下面的步驟示範如何在Red Hat Enterprise Linux Advanced Server 3.0上安裝和測試FreeRADIUS 1.0.2:
清單1 安裝和測試FreeRADIUS
tar -zxvf freeradius-1.0.2.tar.gz - extract it with gunzip and tar ./configure make make install - run this command as root radiusd or - start RADIUS server radiusd -X - start RADIUS server in debug mode radtest test test localhost 0 testing123 - test RADIUS server |
如果radtest收到一個響應,則表明FreeRADIUS伺服器工作正常。
同時我還推薦另一種免費工具,那就是NTRadPing,它可用於測試來自Windows客戶機的驗證和授權請求。它可以顯示從RADIUS伺服器發回的詳細的響應,例如屬性值。
現在讓我們來配置FreeRADIUS。
配置FreeRADIUS
RADIUS伺服器的配置包括對伺服器、客戶機和使用者的配置(都是用於驗證和授權)。出於不同的需要,對RADIUS伺服器可以有不同的配置。幸運的是,大多數配置都是類似的。
* 設定管理員
FreeRADIUS設定檔通常位於/etc/raddb檔案夾下。首先,我們需要像下面這樣修改radiusd.conf檔案。
清單2 修改radiusd.conf
1) Global settings: log_auth = yes - log authentication requests to the log file log_auth_badpass = no - don‘t log passwords if request rejected log_auth_goodpass = no - don‘t log passwords if request accepted 2) LDAP Settings: modules { ldap { server = "bluepages.ibm.com" - the hostname or IP address of the LDAP server port = 636 - encrypted communications basedn = "ou=bluepages,o=ibm.com" - define the base Distinguished Names (DN), - under the Organization (O) "ibm.com", - in the Organization Unit (OU) "bluepages" filter = "(mail=%u)" - specify search criteria base_filter = "(objectclass=person)" - specify base search criteria } authenticate { - enable authentication against LDAP Auth-Type LDAP { ldap } |
參數被設為使用 IBM BluePages,這是LDAP服務的一個執行個體。對於其他LDAP伺服器,參數可能有所不同。
* 配置客戶機
客戶機是在/etc/raddb/clients.conf 檔案中配置的。有兩種方式可用於配置RADIUS客戶機。您可以按IP subnet將NAS分組(清單 3),或者可以按主機名稱或 IP 位址列出NAS(清單4)。如果按照第二種方法,可以定義shortname和nastype。
清單3 按IP subnet將NAS分組
client 192.168.0.0/24 { secret = mysecret1 - the "secret" should be the same as configured on NAS shortname = mylan - the "shortname" can be used for logging nastype = cisco - the "nastype" is used for checkrad and is optional } |
清單4 按主機名稱或 IP 位址列出 NAS
client 192.168.0.1 { secret = mysecret1 shortname = myserver nastype = other } |
* 為驗證而配置使用者
檔案 /etc/raddb/user 包含每個使用者的驗證和配置資訊。
清單5 /etc/raddb/user 檔案
1) Authentication type: Auth-Type := LDAP - authenticate against LDAP Auth-Type := Local, User-Password == "mypasswd" - authenticate against the - password set in /etc/raddb/user Auth-Type := System - authenticate against the system password file - /etc/passwd or /etc/shadow 2) Service type: Service-Type = Login, - for administrative login |
* 為授權而配置使用者
下面的驗證伺服器屬性-值對(AV)應該為使用者授權而進行配置。在驗證被接受後,這個屬性-值對被返回給NAS,作為對管理員登入請求的響應。
對於Cisco路由器,有不同的權限等級:
層級1是無特權(non-privileged)。提示符是 router>,這是用於登入的預設層級。
層級15是特權(privileged)。 提示符是 router#,這是進入 enable 模式後的層級。
層級2到14 在預設配置中不使用。
下面的命令可以使一個使用者從網路存取伺服器登入,並獲得對EXEC命令的立即訪問:
cisco-avpair ="shell:priv-lvl=15"
下面的代碼處理相同的任務,這一次是對於Cisco無線訪問點:
Cisco:Avpair= "aironet:admin-capability=write+snmp+ident+firmware+admin"
任何功能組合都和這個屬性一起返回:
Cisco:Avpair = "aironet:admin-capability=ident+admin"
Cisco:Avpair = "aironet:admin-capability=admin"
請與 Cisco 聯絡,以獲得關於這些命令的更多資訊。
配置網路存取伺服器
接下來我們將配置NAS,首先是配置一個Cisco路由器,然後輪到一個Cisco WAP。
對於Cisco IOS 12.1路由器,我們將啟用AAA,然後配置驗證、授權和記帳。
清單6 啟用AAA
aaa new-model radius-server host 192.168.0.100 radius-server key mysecret1 |
AAA 在路由器上應該被啟用。然後,指定能為 NAS 提供 AAA 服務的 RADIUS 伺服器的列表。加密金鑰用於加密 NAS 和 RADIUS 伺服器之間的資料轉送。它必須與 FreeRADIUS 上配置的一樣。
清單7 配置驗證
aaa authentication login default group radius local line vty 0 4 login authentication default |
在這個例子中,網路系統管理員使用 RADIUS 驗證。如果 RADIUS 伺服器不可用,則使用 NAS 的本機使用者資料庫密碼。
清單8 配置授權
aaa authorization exec default group radius if-authenticated |
允許使用者在登入到 NAS 中時運行 EXEC shell。
清單9 配置記帳
aaa accounting system default start-stop group radius aaa accounting network default start-stop group radius aaa accounting connection default start-stop group radius aaa accounting exec default stop-only group radius aaa accounting commands 1 default stop-only group radius aaa accounting commands 15 default wait-start group radius |
必須對路由器進行特別的配置,以使之發送記帳記錄到RADIUS伺服器。使用清單9中的命令記錄關於NAS系統事件、網路連接、輸出串連、EXEC操作以及層級1和層級15上的命令的記帳資訊。
這樣就好了。現在讓我們看看為Cisco無線訪問點而進行的配置。下面的配置適用於帶有Firmware 12.01T1的Cisco 1200 Series AP。2中的螢幕快照所示,您:
* 輸入伺服器名或 IP 位址和共用的秘密。
* 選擇“Radius”作為類型,並選中“User Authentication”。
圖2 為WAP配置NAS
實際上,在這裡您還可以配置EAP Authentication,使FreeRADIUS可用於驗證無線LAN的一般使用者。
記帳:工作中的RADIUS
現在所有配置都已經完成,FreeRADIUS伺服器可以開始記錄NAS發送的所有資訊,將該資訊儲存在/var/log/radius/radius.log檔案中,就像這樣:
清單10 /var/log/radius/radius.log檔案
Thu Mar 3 21:37:32 2005 : Auth: Login OK: [David] (from client mylan port 1 cli 192.168.0.94) Mon Mar 7 23:39:53 2005 : Auth: Login incorrect: [John] (from client mylan port 1 cli 192.168.0.94) |
詳細的記帳資訊被存放在/var/log/radius/radacct目錄中。清單11表明,David在2005年3月4日19:40到19:51這段時間裡從 192.168.0.94登入到了路由器192.168.0.1。這麼詳細的資訊對於正在調查安全事故以及試圖維護易於審計的記錄的管理員來說無疑是一大協助。
清單11 RADIUS 提供的記帳細節樣本
Fri Mar 4 19:40:12 2005 NAS-IP-Address = 192.168.0.1 NAS-Port = 1 NAS-Port-Type = Virtual User-Name = "David" Calling-Station-Id = "192.168.0.94" Acct-Status-Type = Start Acct-Authentic = RADIUS Service-Type = NAS-Prompt-User Acct-Session-Id = "00000026" Acct-Delay-Time = 0 Client-IP-Address = 192.168.0.1 Acct-Unique-Session-Id = "913029a52dacb116" Timestamp = 1109936412 Fri Mar 4 19:51:17 2005 NAS-IP-Address = 192.168.0.1 NAS-Port = 1 NAS-Port-Type = Virtual User-Name = "David" Calling-Station-Id = "192.168.0.94" Acct-Status-Type = Stop Acct-Authentic = RADIUS Service-Type = NAS-Prompt-User Acct-Session-Id = "00000026" Acct-Terminate-Cause = Idle-Timeout Acct-Session-Time = 665 Acct-Delay-Time = 0 Client-IP-Address = 192.168.0.1 Acct-Unique-Session-Id = "913029a52dacb116" Timestamp = 1109937077 |
結束語
通過遵循本文中列出的簡單步驟,您可以建立一個Remote Authentication Dial-In User Service伺服器,該伺服器使用一個外部的LDAP伺服器來處理為網路安全問題而進行的驗證、授權和記帳。本文提供了以下內容來協助您完成此任務:
* 對RADIUS和LDAP伺服器以及AAA概念的介紹。
* 一個融入了安裝和配置任務的情境。
* 關於安裝和配置RADIUS伺服器的說明。
* 關於配置網路存取伺服器的細節。
* RADIUS將提供和管理的詳細資料的一個樣本。
這些指示可以快速確保受保護的資料只能由Linux系統上已授權的實體訪問。
Linux上構建一個RADIUS伺服器詳解