作為一名網(wǎng)絡(luò)管理員,您需要為您所需管理的每個(gè)網(wǎng)絡(luò)設(shè)備存放用于管理的用戶信息。但是網(wǎng)絡(luò)設(shè)備通常只支持有限的用戶管理功能。學(xué)習(xí)如何使用Linux上的一個(gè)外部RADIUS服務(wù)器來驗(yàn)證用戶,具體來說是通過一個(gè)LDAP服務(wù)器進(jìn)行驗(yàn)證,可以集中放置存儲(chǔ)在LDAP服務(wù)器上并且由RADIUS服務(wù)器進(jìn)行驗(yàn)證的用戶信息,從而既可以減少用戶管理上的管理開銷,又可以使遠(yuǎn)程登錄過程更加安全。
數(shù)據(jù)安全作為現(xiàn)代系統(tǒng)中網(wǎng)絡(luò)安全的一部分,與系統(tǒng)安全一樣的重要,所以保護(hù)數(shù)據(jù)--確保提供機(jī)密性、完整性和可用性--對(duì)管理員來說至關(guān)重要。
在本文中,我將談到數(shù)據(jù)安全性的機(jī)密性方面:確保受保護(hù)的數(shù)據(jù)只能被授權(quán)用戶或系統(tǒng)訪問。您將學(xué)習(xí)如何在Linux系統(tǒng)上建立和配置一個(gè)Remote Authentication Dial-In User Service 服務(wù)器(RADIUS),以執(zhí)行對(duì)用戶的驗(yàn)證、授權(quán)和記帳(AAA)。
各組成元素介紹
首先讓我們談一談RADIUS協(xié)議、AAA組件以及它們?nèi)绾喂ぷ?,另外還有LDAP協(xié)議。
Remote Authentication Dial-In User Service 協(xié)議是在IET的RFC 2865中定義的(請(qǐng)參閱參考資料獲得相關(guān)鏈接)。它允許網(wǎng)絡(luò)訪問服務(wù)器(NAS)執(zhí)行對(duì)用戶的驗(yàn)證、授權(quán)和記帳。RADIUS是基于UDP的一種客戶機(jī)/服務(wù)器協(xié)議。RADIUS客戶機(jī)是網(wǎng)絡(luò)訪問服務(wù)器,它通常是一個(gè)路由器、交換機(jī)或無線訪問點(diǎn)(訪問點(diǎn)是網(wǎng)絡(luò)上專門配置的節(jié)點(diǎn);WAP是無線版本)。RADIUS服務(wù)器通常是在UNIX或Windows 2000服務(wù)器上運(yùn)行的一個(gè)監(jiān)護(hù)程序。
RADIUS和AAA
如果NAS收到用戶連接請(qǐng)求,它會(huì)將它們傳遞到指定的RADIUS服務(wù)器,后者對(duì)用戶進(jìn)行驗(yàn)證,并將用戶的配置信息返回給NAS。然后,NAS接受或拒絕連接請(qǐng)求。
功能完整的RADIUS服務(wù)器可以支持很多不同的用戶驗(yàn)證機(jī)制,除了LDAP以外,還包括:
PAP(Password Authentication Protocol,密碼驗(yàn)證協(xié)議,與PPP一起使用,在此機(jī)制下,密碼以明文形式被發(fā)送到客戶機(jī)進(jìn)行比較);
CHAP(Challenge Handshake Authentication Protocol,挑戰(zhàn)握手驗(yàn)證協(xié)議,比PAP更安全,它同時(shí)使用用戶名和密碼);
本地UNIX/Linux系統(tǒng)密碼數(shù)據(jù)庫(/etc/passwd);
其他本地?cái)?shù)據(jù)庫。
在RADIUS中,驗(yàn)證和授權(quán)是組合在一起的。如果發(fā)現(xiàn)了用戶名,并且密碼正確,那么RADIUS服務(wù)器將返回一個(gè)Access-Accept響應(yīng),其中包括一些參數(shù)(屬性-值對(duì)),以保證對(duì)該用戶的訪問。這些參數(shù)是在RADIUS中配置的,包括訪問類型、協(xié)議類型、用戶指定該用戶的IP地址以及一個(gè)訪問控制列表(ACL)或要在NAS上應(yīng)用的靜態(tài)路由,另外還有其他一些值。
RADIUS記帳特性(在RFC 2866中定義;請(qǐng)參閱參考資料獲得相關(guān)鏈接)允許在連接會(huì)話的開始和結(jié)束發(fā)送數(shù)據(jù),表明在會(huì)話期間使用的可能用于安全或開單(billing)需要的大量資源--例如時(shí)間、包和字節(jié)。
輕量級(jí)目錄訪問協(xié)議
輕量級(jí)目錄訪問協(xié)議(Lightweight Directory Access Protocol,LDAP)是一種開放標(biāo)準(zhǔn),它定義了用于訪問和更新類X.500 目錄中信息的一種方法。LDAP可用于將用戶信息保存在一個(gè)中央場(chǎng)所,從而不必將相同的信息存儲(chǔ)在每個(gè)系統(tǒng)上。它還可以用于以一種一致的、可控制的方式維護(hù)和訪問信息。
LDAP在一個(gè)集中的目錄中管理用戶,從而簡化了用戶管理工作。除了存儲(chǔ)用戶信息外,在LDAP中定義用戶還可以使一些可選特性得到啟用,例如限制登錄的數(shù)量。在本文中,您將學(xué)習(xí)如何配置RADIUS服務(wù)器,以便基于LDAP驗(yàn)證用戶--由于本文的重點(diǎn)在于RADIUS,我不會(huì)描述關(guān)于LDAP服務(wù)器的安裝和配置的細(xì)節(jié)。
OpenLDAP是LDAP的一種開放源碼實(shí)現(xiàn)。在OpenLDAP.org上可以找到關(guān)于它的詳細(xì)信息(請(qǐng)參閱參考資料獲得相關(guān)鏈接)。
場(chǎng)景
想像以下場(chǎng)景:
用戶在家里可以通過撥號(hào)驗(yàn)證訪問他公司的內(nèi)部網(wǎng)。
帶無線支持的筆記本電腦可以通過無線驗(yàn)證連接到一個(gè)校園網(wǎng)。
管理員使用他們的工作站通過管理用戶驗(yàn)證以telnet或HTTP登錄到網(wǎng)絡(luò)設(shè)備。
所有這些驗(yàn)證任務(wù)都可以通過一個(gè)RADIUS服務(wù)器基于一個(gè)中央LDAP服務(wù)器來完成(見圖 1)。
圖1 通過RADIUS和LDAP進(jìn)行驗(yàn)證
在本文中,我將重點(diǎn)描述對(duì)最后一種選項(xiàng)的實(shí)現(xiàn),作為對(duì)該解決方案的一個(gè)介紹。首先安裝RADIUS服務(wù)器。
安裝 RADIUS
RADIUS服務(wù)器軟件可以從多個(gè)地方獲得。在本文中,我將使用FreeRADIUS(請(qǐng)參閱參考資料獲得相關(guān)鏈接),但Cisco Secure Access Control Server (ACS)是一種集中式用戶訪問控制框架,可用于跨UNIX和Windows上多個(gè)Cisco設(shè)備的用戶管理,并支持Cisco 特有的協(xié)議TACACS+(據(jù)說在支持TACACS+的設(shè)備上可擁有更多的特性)。
FreeRADIUS是來自開放源碼社區(qū)的一種強(qiáng)大的Linux上的RADIUS服務(wù)器,可用于如今的分布式和異構(gòu)計(jì)算環(huán)境。FreeRADIUS 1.0.2 支持LDAP、MySQL、PostgreSQL和Oracle數(shù)據(jù)庫,并與諸如EAP和Cisco LEAP之類的網(wǎng)絡(luò)協(xié)議兼容。FreeRADIUS目前被部署在很多大型生產(chǎn)網(wǎng)絡(luò)系統(tǒng)中。
下面的步驟演示如何在Red Hat Enterprise Linux Advanced Server 3.0上安裝和測(cè)試FreeRADIUS 1.0.2:
清單1 安裝和測(cè)試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收到一個(gè)響應(yīng),則表明FreeRADIUS服務(wù)器工作正常。
同時(shí)我還推薦另一種免費(fèi)工具,那就是NTRadPing,它可用于測(cè)試來自Windows客戶機(jī)的驗(yàn)證和授權(quán)請(qǐng)求。它可以顯示從RADIUS服務(wù)器發(fā)回的詳細(xì)的響應(yīng),例如屬性值。
現(xiàn)在讓我們來配置FreeRADIUS。
配置FreeRADIUS
RADIUS服務(wù)器的配置包括對(duì)服務(wù)器、客戶機(jī)和用戶的配置(都是用于驗(yàn)證和授權(quán))。出于不同的需要,對(duì)RADIUS服務(wù)器可以有不同的配置。幸運(yùn)的是,大多數(shù)配置都是類似的。
* 配置服務(wù)器
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
} |
參數(shù)被設(shè)為使用 IBM BluePages,這是LDAP服務(wù)的一個(gè)實(shí)例。對(duì)于其他LDAP服務(wù)器,參數(shù)可能有所不同。
* 配置客戶機(jī)
客戶機(jī)是在/etc/raddb/clients.conf 文件中配置的。有兩種方式可用于配置RADIUS客戶機(jī)。您可以按IP subnet將NAS分組(清單 3),或者可以按主機(jī)名或 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 按主機(jī)名或 IP 地址列出 NAS
client 192.168.0.1 {
secret = mysecret1
shortname = myserver
nastype = other
} |
* 為驗(yàn)證而配置用戶
文件 /etc/raddb/user 包含每個(gè)用戶的驗(yàn)證和配置信息。
清單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 |
* 為授權(quán)而配置用戶
下面的驗(yàn)證服務(wù)器屬性-值對(duì)(AV)應(yīng)該為用戶授權(quán)而進(jìn)行配置。在驗(yàn)證被接受后,這個(gè)屬性-值對(duì)被返回給NAS,作為對(duì)管理員登錄請(qǐng)求的響應(yīng)。
對(duì)于Cisco路由器,有不同的權(quán)限級(jí)別:
級(jí)別1是無特權(quán)(non-privileged)。提示符是 router>,這是用于登錄的默認(rèn)級(jí)別。
級(jí)別15是特權(quán)(privileged)。 提示符是 router#,這是進(jìn)入 enable 模式后的級(jí)別。
級(jí)別2到14 在默認(rèn)配置中不使用。
下面的命令可以使一個(gè)用戶從網(wǎng)絡(luò)訪問服務(wù)器登錄,并獲得對(duì)EXEC命令的立即訪問:
cisco-avpair ="shell:priv-lvl=15"
下面的代碼處理相同的任務(wù),這一次是對(duì)于Cisco無線訪問點(diǎn):
Cisco:Avpair= "aironet:admin-capability=write+snmp+ident+firmware+admin"
任何功能組合都和這個(gè)屬性一起返回:
Cisco:Avpair = "aironet:admin-capability=ident+admin"
Cisco:Avpair = "aironet:admin-capability=admin"
請(qǐng)與 Cisco 聯(lián)系,以獲得關(guān)于這些命令的更多信息。
配置網(wǎng)絡(luò)訪問服務(wù)器
接下來我們將配置NAS,首先是配置一個(gè)Cisco路由器,然后輪到一個(gè)Cisco WAP。
對(duì)于Cisco IOS 12.1路由器,我們將啟用AAA,然后配置驗(yàn)證、授權(quán)和記帳。
清單6 啟用AAA
aaa new-model
radius-server host 192.168.0.100
radius-server key mysecret1 |
AAA 在路由器上應(yīng)該被啟用。然后,指定能為 NAS 提供 AAA 服務(wù)的 RADIUS 服務(wù)器的列表。加密密鑰用于加密 NAS 和 RADIUS 服務(wù)器之間的數(shù)據(jù)傳輸。它必須與 FreeRADIUS 上配置的一樣。
清單7 配置驗(yàn)證
aaa authentication login default group radius local
line vty 0 4
login authentication default |
在這個(gè)例子中,網(wǎng)絡(luò)管理員使用 RADIUS 驗(yàn)證。如果 RADIUS 服務(wù)器不可用,則使用 NAS 的本地用戶數(shù)據(jù)庫密碼。
清單8 配置授權(quán)
aaa authorization exec default group radius if-authenticated |
允許用戶在登錄到 NAS 中時(shí)運(yùn)行 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 |
必須對(duì)路由器進(jìn)行特別的配置,以使之發(fā)送記帳記錄到RADIUS服務(wù)器。使用清單9中的命令記錄關(guān)于NAS系統(tǒng)事件、網(wǎng)絡(luò)連接、輸出連接、EXEC操作以及級(jí)別1和級(jí)別15上的命令的記帳信息。
這樣就好了?,F(xiàn)在讓我們看看為Cisco無線訪問點(diǎn)而進(jìn)行的配置。下面的配置適用于帶有Firmware 12.01T1的Cisco 1200 Series AP。如圖2中的屏幕快照所示,您:
* 輸入服務(wù)器名或 IP 地址和共享的秘密。
* 選擇“Radius”作為類型,并選中“User Authentication”。
圖2 為WAP配置NAS
實(shí)際上,在這里您還可以配置EAP Authentication,使FreeRADIUS可用于驗(yàn)證無線LAN的一般用戶。 記帳:工作中的RADIUS
現(xiàn)在所有配置都已經(jīng)完成,FreeRADIUS服務(wù)器可以開始記錄NAS發(fā)送的所有信息,將該信息存儲(chǔ)在/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) |
詳細(xì)的記帳信息被存放在/var/log/radius/radacct目錄中。清單11表明,David在2005年3月4日19:40到19:51這段時(shí)間里從 192.168.0.94登錄到了路由器192.168.0.1。這么詳細(xì)的信息對(duì)于正在調(diào)查安全事故以及試圖維護(hù)易于審計(jì)的記錄的管理員來說無疑是一大幫助。
清單11 RADIUS 提供的記帳細(xì)節(jié)示例
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 |
結(jié)束語
通過遵循本文中列出的簡單步驟,您可以建立一個(gè)Remote Authentication Dial-In User Service服務(wù)器,該服務(wù)器使用一個(gè)外部的LDAP服務(wù)器來處理為網(wǎng)絡(luò)安全問題而進(jìn)行的驗(yàn)證、授權(quán)和記帳。本文提供了以下內(nèi)容來幫助您完成此任務(wù):
* 對(duì)RADIUS和LDAP服務(wù)器以及AAA概念的介紹。
* 一個(gè)融入了安裝和配置任務(wù)的場(chǎng)景。
* 關(guān)于安裝和配置RADIUS服務(wù)器的說明。
* 關(guān)于配置網(wǎng)絡(luò)訪問服務(wù)器的細(xì)節(jié)。
* RADIUS將提供和管理的詳細(xì)信息的一個(gè)示例。
|