級別: 初級 |
IT 專家, IBM
2005 年 6 月 23 日
作為一名網絡管理員,您需要為您所需管理的每個網絡設備存放用于管理的用戶信息。但是網絡設備通常只支持有限的用戶管理功能。學習如何使用 Linux® 上的一個外部 RADIUS 服務器來驗證用戶,具體來說是通過一個 LDAP 服務器進行驗證,可以集中放置存儲在 LDAP 服務器上并且由 RADIUS 服務器進行驗證的用戶信息,從而既可以減少用戶管理上的管理開銷,又可以使遠程登錄過程更加安全。
數據安全作為現代系統中網絡安全的一部分,與系統安全一樣的重要,所以保護數據 —— 確保提供機密性、完整性和可用性 —— 對管理員來說至關重要。
在本文中,我將談到數據安全性的機密性方面:確保受保護的數據只能被授權用戶或系統訪問。您將學習如何在 Linux 系統上建立和配置一個 Remote Authentication Dial-In User Service 服務器(RADIUS),以執行對用戶的驗證、授權和記帳(AAA)。
各組成元素介紹
首先讓我們談一談 RADIUS 協議、AAA 組件以及它們如何工作,另外還有 LDAP 協議。
Remote Authentication Dial-In User Service 協議是在 IETF 的 RFC 2865 中定義的(請參閱 參考資料 獲得相關鏈接)。它允許網絡訪問服務器(NAS)執行對用戶的驗證、授權和記帳。RADIUS 是基于 UDP 的一種客戶機/服務器協議。RADIUS 客戶機是網絡訪問服務器,它通常是一個路由器、交換機或無線訪問點(訪問點是網絡上專門配置的節點;WAP 是無線版本)。RADIUS 服務器通常是在 UNIX 或 Windows 2000 服務器上運行的一個監護程序。
RADIUS 和 AAA
如果 NAS 收到用戶連接請求,它會將它們傳遞到指定的 RADIUS 服務器,后者對用戶進行驗證,并將用戶的配置信息返回給 NAS。然后,NAS 接受或拒絕連接請求。
功能完整的 RADIUS 服務器可以支持很多不同的用戶驗證機制,除了 LDAP 以外,還包括:
在 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 上可以找到關于它的詳細信息(請參閱 參考資料 獲得相關鏈接)。
場景
想像以下場景:
所有這些驗證任務都可以通過一個 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
|
如果 radtest
收到一個響應,則表明 FreeRADIUS 服務器工作正常。
同時我還推薦另一種免費工具,那就是 NTRadPing(請參閱 參考資料 獲得相關鏈接),它可用于測試來自 Windows 客戶機的驗證和授權請求。它可以顯示從 RADIUS 服務器發回的詳細的響應,例如屬性值。
現在讓我們來配置 FreeRADIUS。
配置 FreeRADIUS
RADIUS 服務器的配置包括對服務器、客戶機和用戶的配置(都是用于驗證和授權)。出于不同的需要,對 RADIUS 服務器可以有不同的配置。幸運的是,大多數配置都是類似的。
配置服務器
FreeRADIUS 配置文件通常位于 /etc/raddb 文件夾下。首先,我們需要像下面這樣修改 radiusd.conf 文件。
|
參數被設為使用 IBM BluePages,這是 LDAP 服務的一個實例。對于其他 LDAP 服務器,參數可能有所不同。
配置客戶機
客戶機是在 /etc/raddb/clients.conf 文件中配置的。有兩種方式可用于配置 RADIUS 客戶機。您可以按 IP subnet 將 NAS 分組(清單 3),或者可以按主機名或 IP 地址列出 NAS(清單 4)。如果按照第二種方法,可以定義 shortname
和 nastype
。
|
清單 4. 按主機名或 IP 地址列出 NAS
|
為驗證而配置用戶
文件 /etc/raddb/user 包含每個用戶的驗證和配置信息。
|
為授權而配置用戶
下面的驗證服務器屬性-值對(AV)應該為用戶授權而進行配置。在驗證被接受后,這個屬性-值對被返回給 NAS,作為對管理員登錄請求的響應。
對于 Cisco 路由器,有不同的權限級別:
router>
,這是用于登錄的默認級別。 router#
,這是進入 enable 模式后的級別。 下面的命令可以使一個用戶從網絡訪問服務器登錄,并獲得對 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 在路由器上應該被啟用。然后,指定能為 NAS 提供 AAA 服務的 RADIUS 服務器的列表。加密密鑰用于加密 NAS 和 RADIUS 服務器之間的數據傳輸。它必須與 FreeRADIUS 上配置的一樣。
清單 7. 配置驗證
|
在這個例子中,網絡管理員使用 RADIUS 驗證。如果 RADIUS 服務器不可用,則使用 NAS 的本地用戶數據庫密碼。
清單 8. 配置授權
|
允許用戶在登錄到 NAS 中時運行 EXEC shell。
清單 9. 配置記帳
|
必須對路由器進行特別的配置,以使之發送記帳記錄到 RADIUS 服務器。使用清單 9 中的命令記錄關于 NAS 系統事件、網絡連接、輸出連接、EXEC 操作以及級別 1 和級別 15 上的命令的記帳信息。
這樣就好了?,F在讓我們看看為 Cisco 無線訪問點而進行的配置。下面的配置適用于帶有 Firmware 12.01T1 的 Cisco 1200 Series AP。如圖 2 中的屏幕快照所示,您:
圖 2. 為 WAP 配置 NAS
實際上,在這里您還可以配置 EAP Authentication,使 FreeRADIUS 可用于驗證無線 LAN 的一般用戶。
記帳:工作中的 RADIUS
現在所有配置都已經完成,FreeRADIUS 服務器可以開始記錄 NAS 發送的所有信息,將該信息存儲在 /var/log/radius/radius.log 文件中,就像這樣:
|
詳細的記帳信息被存放在 /var/log/radius/radacct 目錄中。清單 11 表明,David 在 2005 年 3 月 4 日 19:40 到 19:51 這段時間里從 192.168.0.94 登錄到了路由器 192.168.0.1。這么詳細的信息對于正在調查安全事故以及試圖維護易于審計的記錄的管理員來說無疑是一大幫助。
清單 11. RADIUS 提供的記帳細節示例
|
結束語
通過遵循本文中列出的簡單步驟,您可以建立一個 Remote Authentication Dial-In User Service 服務器,該服務器使用一個外部的 LDAP 服務器來處理為網絡安全問題而進行的驗證、授權和記帳。本文提供了以下內容來幫助您完成此任務:
這些指示可以快速確保受保護的數據只能由 Linux 系統上已授權的實體訪問。
原文轉自:http://www.anti-gravitydesign.com