Linux上構建一個RADIUS服務器詳解

發表于:2007-05-26來源:作者:點擊數: 標簽:
作為一名網絡管理員,您需要為您所需管理的每個網絡設備存放用于管理的用戶信息。但是網絡設備通常只支持有限的用戶管理功能。學習如何使用Linux上的一個外部RADIUS 服務器 來驗證用戶,具體來說是通過一個LDAP服務器 進行驗證,可以集中放置存儲在LDAP服務
作為一名網絡管理員,您需要為您所需管理的每個網絡設備存放用于管理的用戶信息。但是網絡設備通常只支持有限的用戶管理功能。學習如何使用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服務器通常是在UNIXWindows 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服務器將返回一個Aclearcase/" target="_blank" >ccess-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上的命令的記帳信息。

這樣就好了?,F在讓我們看看為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系統上已授權的實體訪問。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97