遠端用戶撥入驗證服務

遠端用戶撥入驗證服務RADIUS, Remote Authentication Dial In User Service)是一個AAA協定,意思就是同時兼顧驗證(authentication)、授權(authorization)及計費(accounting)三種服務的一種網路傳輸協定(protocol),通常用於網路存取、或流動IP服務,適用於區域網路漫遊服務。

基本介紹

  • 中文名:遠端用戶撥入驗證服務
  • 外文名:Remote Authentication Dial In User Service
  • 性質:一個協定
  • 領域:計算機
客戶端-伺服器結構,RADIUS客戶端的實例,協定的概要,AAA,共有鍵,代理,IEEE 802.1X,軟體,

客戶端-伺服器結構

RADIUS協定是一種基於主從式架構的協定。RADIUS協定中的客戶端是對用戶(人或者計算機)提供網路連線服務的器材,對伺服器提出驗證和計費要求。伺服器針對客戶端的通過進行驗證和計費給予應答。伺服器只有針對客戶端的請求進行應答,而無法反方向地對用戶進行服務停止等的請求。

RADIUS客戶端的實例

網際網路連線服務中,撥號呼叫裝置和寬頻接入伺服器(BAS、Broadband Access Server)等接收裝置(NAS、Network Access Server)即為RADIUS客戶端。(雖然名字含有“伺服器”,但從RADIUS協定的角度來看是客戶端)。無線LAN環境中的無線接取器和VLAN中的VLAN開關等都是。在內容提供的服務中,Web 伺服器起到RADIUS客戶端的作用。

協定的概要

客戶端對伺服器提出“RADIUS請求包”,伺服器對客戶端傳送“RADIUS應答包”。雙方通信均由IP的UDP包進行。
雙方的數據包,頭部分由20個8位元和“屬性”組成。頭部分包括類別碼(Code)1個8位元、識別碼(Identifier)1個8位元、數據包整體長度2個8位元、驗證碼(Authenticator)16個8位元。識別碼根據客戶端決定的需求而設定,伺服器直接照抄到應答包里,因為客戶端需要在收到的應答包與過去曾接收到的請求包對照。實際客戶端一般只是進行累計數值編號,但沒有規定必須是序列號。驗證碼是為了證明無傳送者偽裝和篡改。屬性部分是將屬性値對 (Attribute Value Pair)任意次重複。屬性値對由屬性編號1個8位元、長度1個8位元、屬性値組成。對於値可以賦予4個8位元的整數値、4個8位元的IP位址、1 - 253個8位元的文字串等等。
對於每個屬性編號,每個屬性値對里值的含義在RFC檔案里均有規定,還可以通過給屬性編號賦予新的定義來增加使用目的,RADIUS協定的靈活性所在也是其最大的特徵。但是一般不推薦各個機器產商為各自目的獨自給屬性標號賦值。產商特有功能應做為屬性編號26號(Vendor Specific)的值與產商編號一起加到數據里。屬性編號 26 號的屬性値對一般稱為 VSA (Vendor Specific Attribute) 。廠家編號由IANA進行管理和賦予。
協定通過屬性値對里含有各種個樣信息進行驗證和計費。為實現驗證,用戶名和密碼各有屬性編號。撥接使用PPP時針對 PPP 用的驗證協定PAPCHAP、EAP均備有各自的屬性編號。為實現計費,備有使用秒數、收發數據量等的屬性編號。由此根據屬性編號可以判斷、驗證和計費兩功能是只有一種才能使用還是二者可同時使用。
RADIUS分組的最大長度,在RADIUS驗證協定中是4096個8位元、RADIUS計費協定中是4095個8位元,這個差異據說並沒有特殊含義,而是 RFC 當初的錯字將錯就錯地沿用下來的緣故。

AAA

RADIUS協定是一種基於AAA的協定,但由於RADIUS協定本身創建於 AAA 模式之前,因此,RADIUS協定中並沒有區分“驗證”和“授權”,而是合為“驗證”處理, 因此RADIUS客戶端在實際操作中無法知道被拒絕的原因是由於密碼錯誤還是因為沒有許可權。

共有鍵

UDP與TCP不同,無法識別偽裝送信者和數據篡改。因此僅靠通信對方的IP位址是不足以信任通信內容的。為了防止偽裝和篡改,RADIUS客戶端和伺服器之間共享一個叫“共享密碼” (Shared secret)的密鑰字元串,將數據包的內容和共享密碼得到的摘要信息配給驗證符號和屬性值。應該為每對 RADIUS客戶端和伺服器準備一個共享密碼。針對一個RADIUS伺服器只用一個密碼而與所有RADIUS客戶端都共用會造成安全上的重大隱患。另外,從安全的角度來說,共享密碼的內容若被第三方泄露也是一大問題。

代理

自身作為RADIUS伺服器,而把實際的驗證和計費處理委託其他RADIUS伺服器的情況即為“RADIUS代理伺服器”。也就是說本身既是RADIUS伺服器也是RADIUS客戶端,將需求“轉送”。
可以通過判斷用戶名的字元串改變轉送地址。比如用戶名做成含有電子郵件地址“@”符號和域名的字元串,根據不同的域名部分字元串轉送到其他RADIUS伺服器上。這種技術廣泛被利用於ISP(網際網路服務提供商)之間的漫遊服務等。上述例子中用於判斷轉送目的類似域名的部分通常被稱為 Realm。

IEEE 802.1X

IEEE 802.1X是乙太網中一個控制可否使用區域網路的一個協定。通過使用IEEE 802.1X和RADIUS協定,可以對僅通過RADIUS伺服器驗證的用戶允許區域網路服務。當然,為此需要配備IEEE 802.1X以及RADIUS協定雙方能使用的無線接入點或VLAN開關。另外“802.1x”中的 X 一般為大寫,這是因為小寫x易被人誤解其像數學中{\displaystyle x}一樣可代表任意參數。
IEEE802.1X和RADIUS協定均沒有規定實際的驗證步驟。實際的驗證中通常使用EAP-TLS、PEAP、EAP-TTLS等 EAP上的驗證步驟進行。為實現 EAP 驗證的數據交換,用戶終端和接入點或開關之間的乙太網使用 IEEE 802.1X,接入點或開關與RADIUS伺服器之間使用RADIUS協定進行中継。
EAP-TLS 對於基於TLS數字證書進行相互驗證(為防止偽裝服務提供者)這一點雖然很重要,但數字證書的管理和運用對於一般機構是一個很大的負擔。PEAP 和 EAP-TTLS 的驗證步驟是在創建以 TLS加密的通訊線路後再進行密碼信息的交換 。EAP-TLS 與 PEAP・EAP-TTLS 的對比可以參照比較是通過網頁瀏覽器TLS中利用數字證書進行相互驗證還是 SSL 上的密碼驗證。

軟體

RADIUS協定的開發者Livingston Enterprises 公司(後被 Lucent Technologies 公司收購)進行的RADIUS伺服器的搭載以及之後派生出來的使用逐漸增多。近年出現里更多的開源軟體、商用軟體。

相關詞條

熱門詞條

聯絡我們