天天看點

Tacacs+認證詳細調研1 、TACACS+概述2、 TACACS+協定介紹3、TACACS+伺服器環境配置

1 、TACACS+概述

1.1   什麼是TACACS+

TACACS+(Terminal Access Controller Access Control System,終端通路控制器控制系統協定)是在TACACS協定的基礎上進行了功能增強的安全協定。該協定與RADIUS協定的功能類似,采用用戶端/伺服器模式實作NAS與TACACS+伺服器之間的通信。

1.2  TACACS+的用途

TACACS+協定主要用于PPP和VPDN(Virtual Private Dial-up Network,虛拟私有撥号網絡)接入使用者及終端使用者的AAA。AAA是Authentication、Authorization、Accounting(認證、授權、計費)的簡稱,是網絡安全的一種管理機制,提供了認證、授權、計費三種安全功能。

認證:确認通路網絡的遠端使用者的身份,判斷通路者是否為合法的網絡使用者。

授權:對不同使用者賦予不同的權限,限制使用者可以使用的服務。例如使用者成功登入伺服器後,管理者可以授權使用者對伺服器中的檔案進行通路和列印操作。

計費:記錄使用者使用網絡服務中的所有操作,包括使用的服務類型、起始時間、資料流量等,它不僅是一種計費手段,也對網絡安全起到了監視作用。

2、 TACACS+協定介紹

2.1 TACACS+基本消息互動流程

下圖是TACACS+協定的基本資訊互動流程:

Tacacs+認證詳細調研1 、TACACS+概述2、 TACACS+協定介紹3、TACACS+伺服器環境配置

以Telnet使用者認證過程為例,基本消息互動流程如下:

(1) Telnet使用者請求登入裝置。

(2) TACACS+用戶端收到請求之後,向TACACS+伺服器發送認證開始封包。

(3) TACACS+伺服器發送認證回應封包,請求使用者名。

(4) TACACS+用戶端收到回應封包後,向使用者詢問使用者名。

(5) 使用者輸入使用者名。

(6) TACACS+用戶端收到使用者名後,向TACACS+伺服器發送認證持續封包,其中包括了使用者名。

(7) TACACS+伺服器發送認證回應封包,請求登入密碼。

(8) TACACS+用戶端收到回應封包,向使用者詢問登入密碼。

(9) 使用者輸入密碼。

(10) TACACS+用戶端收到登入密碼後,向TACACS+伺服器發送認證持續封包,其中包括了登入密碼。

(11) TACACS+伺服器發送認證回應封包,訓示使用者通過認證。

(12) TACACS+用戶端向TACACS+伺服器發送授權請求封包。

(13) TACACS+伺服器發送授權回應封包,訓示使用者通過授權。

(14) TACACS+用戶端收到授權回應成功封包,向使用者輸出裝置的配置界面。

(15) TACACS+用戶端向TACACS+伺服器發送計費開始封包。

(16) TACACS+伺服器發送計費回應封包,訓示計費開始封包已經收到。

(17) 使用者請求斷開連接配接。

(18) TACACS+用戶端向TACACS+伺服器發送計費結束封包。

(19) TACACS+伺服器發送計費結束封包,訓示計費結束封包已經收到。

2.2 TACACS+消息類型

由2.1可知TACACS+共有7種類型的消息:

1、Authentication_START

2、Authentication_CONTIUNE

3、Authentication_REPLY

4、Authorization_REQUEST

5、Authorization_RESPONSE

6、Accounting_REQUEST

7、Accounting_REPLY

由于我們隻關心認證流程是以隻涉及到以上的1、2、3類型封包及TACACS+封包頭,共計四中類型的封包,以下分别對其封包結構加以說明。

2.3  TACACS+封包結構

2.3.1  TACACS+封包頭

所有的TACACS+資料包都使用12位元組長的標頭,結構如下:

Tacacs+認證詳細調研1 、TACACS+概述2、 TACACS+協定介紹3、TACACS+伺服器環境配置

下面對各個字段分别進行說明:

1)  Major:TACACS+主版本号,取值為0x0C

2)  Minor:TACACS+次版本号,用于向後相容擴充,一般為0。

3)  Packet Type:定義包的類型,取值:

#define TAC_PLUS_AUTHEN         1     // authentication表示認證

#define TAC_PLUS_AUTHOR         2     // authorization表示授權

#define TAC_PLUS_ACCT           3     // accounting表示計費

4)  Sequence No:目前會話中的資料包序列号。會話中的第一個TACACS+資料包序列号必須為1,其後的每個資料包序列号逐次加1。是以客戶機隻發送奇序列号資料包,而TACACS+ Daemon隻發送偶序列号資料包。當序列号達到255時, 會話會重新開機并置回序列号為1。

5)  Flags:用來示一些特殊條件,比如不加密(0x01),支援單連接配接多會話(0x04)等

6)  Session_id:為TACACS+會話的ID,是個随機數。

7) Length:為TACACS+封包除頭部之外的長度

2.3.2  Authentication 消息

TACACS+認證有三種類型資料包:開始(START)、繼續(CONTINUE)和回複(REPLY)。用戶端(client)發送START和CONTINUE資料包,服務端(daemon)發送REPLY資料包。

    認證開始時,用戶端發送一個START消息到服務端,該消息描述了要執行的身份驗證類型,可能還包括使用者名和一些認證資料。起始資料包僅作為TACACS+舍話開始或者會話重置後緊接着的第一個消息(會話重置可能是由服務端的回複包發起的)。起始資料包的序列号總是等于1。服務端發送一個REPLY包以響應START包。回複包表明認證是否結束或者繼續。如果認證繼續,則回複包将指明所需要的新的認證資訊。用戶端取出相關資訊并以CONTINUE包的形式進行傳回。服務端以REPLY包來回複START包或者CONTINUE包,直到用戶端在CONTINUE包訓示要中止,此時會話将立即中止。

2.3.2.1 認證START封包格式:

Tacacs+認證詳細調研1 、TACACS+概述2、 TACACS+協定介紹3、TACACS+伺服器環境配置

1) Action:認證操作,合法值為:

TAC_PLUS_AUTHEN_LOGIN  =  Ox01 (甏錄)

TAC PLUS ALTTHEN CHPASS=Ox02(修改密碼)

TAC PLUS AUTHEN SENDPASS=Ox03(發送密碼,已廢棄)

TAC PLUS AUTHEN SENDAUTH=Ox04(發送認證)

2) Priv lVl:認證權限級别,值域為0-15,可以在NAS用戶端中設定,預設值為:

TAC PLUS PRIV LVL MAX=OxOf(最進階别)

TAC_PLUS_PRIV_LVL_ROOT=OxOf (ROOT使用者級别)

TAC PLUS PRIV LVL USER=Ox01(普通使用者級别)

TAC PLUS PRIV LVL MIN=Ox00(最低級别)

3) Authen_type:認證類型,合法值為:

TAC_PLUS_AUTHEN_TYPE_ASCII  =  Ox01 (ASCII值)

TAC_PLUS_AUTHEN_TYPE_PAP  =  Ox02 (PAP傷iX)

TAC_PLUS_AUTHEN_TYPE_CHAP  =  Ox03 (CHAP協iX)

TAC_PLUS_AUTHEN_TYPE_ARAP  =   Ox04 (ARAP協定)

TAC PLUS AUTHEN TYPE MSCHAP=Ox05(微軟CHAP協定)

4) Service:認證服務,合法值為:

TAC_PLUS_AUTHEN_SVC_NONE  =  Ox00 c無服務 )

TAC_PLUS_AUTHEN_SVC_LOGIN  =  Ox01(登入)

TAC_PLUS_AUTHEN_SVC_ENABLE = Ox02 (enable服務)

TAC_PLUS_AUTHEN_SVC_PPP  =  Ox03 (PPP協定)

TAC_PLUS_AUTHEN_SVC_ARAP  =  Ox04 (ARAP協 iX)

TAC PLUS AUTHEN SVC PT=Ox05(負載類型)

TAC PLUS AUTHEN SVC RCMD=Ox06(遠端指令)

TAC_PLUS_AUTHEN_SVC_X25 = Ox07 (x. 25協iX)

TAC_PLUS_AUTHEN_SVC_NASI  =  Ox08 (NASI服務)

TAC_PLUS_AUTHEN _SVC_FWPROXY=Ox09(防火牆代理)

其中ENABLE服務是指獲得管理特權,類似于Linux系統中的“su”指令。NONE服務是在沒有任何其它服務的情況下填寫的。

5) User:使用者名,可選值。

6) Port:用戶端認證所使用的端口,由用戶端指定。

7) Rem addr:遠端位址,可選值,由用戶端指定。

8) Data:負載資料。

2.3.2.2 認證REPLY封包格式:

Tacacs+認證詳細調研1 、TACACS+概述2、 TACACS+協定介紹3、TACACS+伺服器環境配置

1) Status:認證目前狀态,合法值為:

TAC_PLUS_AUTHEN_STATUS_PASS  =  Ox01(通過)

TAC_PLUS_AUTHEN_STATUS_FAIL  =  Ox02 (失敗)

TAC PLUS AUTHEN STATUS GETDATA=Ox03(擷取資料)

TAC PLUS AUTHEN STATUS GETUSER=Ox04(擷取使用者名)

TAC PLUS AUTHEN STATUS GETPASS=Ox05(擷取密碼)

TAC PLUS AUTHEN STATUS RESTART=Ox06(重新開機會話)

TAC_PLUS_AUTHEN_STATUS_ERROR = Ox07(錯誤)

TAC_PLUS_AUTHEN_STATUS_FOLLOW   =   Ox21 (使用備用  deamon)

2) Flags:該字段包括各種位圖格式的标志,定義值:

TAC PLUS REPLY FLAG NOECHO = Ox01應)

3) Server_msg:伺服器傳回給使用者的提示資訊,可選的。

4) Data:負載資料。

2.3.2.3 認證CONTINUE封包格式

Tacacs+認證詳細調研1 、TACACS+概述2、 TACACS+協定介紹3、TACACS+伺服器環境配置

1) Flags:該字段包括各種位圖格式的标志,定義值:

TAC PLUS CONTINUE FLAG ABORT = Ox01c中止)

2) User_msg:使用者輸入資訊,用于答複Server_msg。

3) Data:負載資料。

2.4各類認證類型詳解

    Tacacs+認證協定支援ASCII值、PAP、CHAP、 ARAP協定、MS-CHAP等五種認證類型,現分别對其進行分析。

2.4.1 ASII值認證類型

         ASII認證類型在認證流程中共包含START封包、REPLY封包和CONTINUE封包,其中START封包中可以攜帶使用者名資訊也可以不攜帶(在continue中攜帶),具體流程如下:

Tacacs+認證詳細調研1 、TACACS+概述2、 TACACS+協定介紹3、TACACS+伺服器環境配置

圖2-4-1-1 start封包不含使用者資訊認證流程

Tacacs+認證詳細調研1 、TACACS+概述2、 TACACS+協定介紹3、TACACS+伺服器環境配置

圖2-4-1-2 start封包包含使用者資訊認證流程

2.4.2 PAP協定認證類型

    PAP認證類型隻包含一個START封包和一個REPLY封包,START封包必須包含使用者名資訊和密碼資訊,其中使用者名資訊存儲在START封包的user字段,密碼存儲在START封包的data字段,資料資訊不需加密,認證流程如下:

Tacacs+認證詳細調研1 、TACACS+概述2、 TACACS+協定介紹3、TACACS+伺服器環境配置

圖2-4-2-1 PAP協定類型認證流程

2.4.3 CHAP協定認證類型

CHAP認證類型隻包含一個START封包和一個REPLY封包,START封包必須包含使用者名資訊和資料資訊,其中使用者名資訊存儲在START封包的user字段,資料存儲在START封包的data字段,資料資訊必須包含session_id、challenge和authentication。

    session_id必須占用1個位元組,authentication必須用16個位元組,challenge長度等與data總長度減去session_id長度和認證資訊長度,authentication是由session_id、使用者密碼和challenge通過MD5加密生成。具體認證流程如下:

Tacacs+認證詳細調研1 、TACACS+概述2、 TACACS+協定介紹3、TACACS+伺服器環境配置

圖2-4-3-1 CHAP協定類型認證流程

session_id challenge authentication
1 byte 16 bytes,auth=MD5(se_id,usr_pwd,challenge)

圖2-4-3-2 START封包data字段資料結構

2.4.4 MS-CHAP協定認證類型

MS-CHAP認證類型隻包含一個START封包和一個REPLY封包,START封包必須包含使用者名資訊和資料資訊,其中使用者名資訊存儲在START封包的user字段,資料存儲在START封包的data字段,資料資訊必須包含session_id、MS-challenge和MS-authentication。

    session_id必須占用1個位元組,authentication必須用49個位元組,challenge長度等與data總長度減去session_id長度和authentication長度,認證資訊是由使用者密碼、challenge等通過MD4和DES加密生成。具體認證流程如下:

Tacacs+認證詳細調研1 、TACACS+概述2、 TACACS+協定介紹3、TACACS+伺服器環境配置

圖2-4-4-1 MS-CHAP協定類型認證流程

session_id challenge authentication
1 byte 49bytes

圖2-4-4-2 START封包data字段資料結構

MS-CHAPv1協定authentication組成
NTHASH=MD4(user_pwd)
ChallengeResponse=DES(NTHASH[0-7]、challenge)||DES(NTHASH[7-14]、challenge)||DES(NTHASH[14-21]、challenge);challenge一般為8位元組
ChallengeResponse封裝在authentication的[24-47]位元組中,并且authentication最後一個位元組(49位元組)值為1

圖2-4-4-3 MS-CHAPv1authentication組成

MS-CHAPv2協定authentication組成
NTHASH=DES(toupper(user_pwd),MS-KEY([email protected]#$%))
ChallengeResponse=DES(NTHASH[0-7]、challenge)||DES(NTHASH[7-14]、challenge)||DES(NTHASH[14-21]、challenge);challenge一般為16位元組
ChallengeResponse封裝在authentication的[0-23]位元組中,并且authentication最後一個位元組(49位元組)值為0

圖2-4-4-4 MS-CHAPv2 authentication組成

2.4.5  ARAP協定認證類型

ARAP認證類型隻包含一個START封包和一個REPLY封包,START封包必須包含使用者名資訊和資料資訊,其中使用者名資訊存儲在START封包的user字段,資料存儲在START封包的data字段,資料資訊必須包含ServerChallenge、ClientChallenge和authentication。

    ServerChallenge、ClientChallenge和authentication都隻占用8個位元組,authentication是由使用者密碼作為DES_KEY對ServerChallenge和ClientChallenge進行DES加密生成。具體認證流程如下:

圖2-4-5-1 ARAP協定認證流程

ServerChallenge ClientChallenge authentication
8byte 8位元組 8bytes

圖2-4-5-2 START封包data字段資料結構

ARAP協定authentication組成
KEY=pwd各個位元組分别左移一位
ChallengeResponse=DES(ServerChallenge,KEY);challenge一般為8位元組

圖2-4-5-3 ARAP authentication組成

2.5  TACACS+資料包的加密

TACACS+支援除標頭之外所有資訊的加密,加密方法如下:

1) 将session_id、secret key, 版本号和sequence number一起進行MD5運算(其中secret key 為TACACS用戶端和伺服器之間的共享秘密),計算結果為MD5_1。

2) 後續的MD5運算将上次MD5運算的結果也納入運算範圍,如下:

MD5_1 = MD5{session_id, key, version, seq_no}

MD5_2 = MD5{session_id, key, version, seq_no, MD5_1}

....

MD5_n = MD5{session_id, key, version, seq_no, MD5_n-1}

3) 将所有的運算結果連接配接起來,直到總長度大于需要加密的資料的長度,然後截斷到實際資料的長度,得到pseudo_pad:

pseudo_pad = {MD5_1 [,MD5_2 [ ... ,MD5_n]]} truncated to len(data)

4) 随後将需要加密的資料和上面的pseudo_pad進行XOR運算,得到密文:

ENCRYPTED {data} == data ^ pseudo_pad

由于TACACS+對整個資料包進行加密,私密性要好于RADIUS,竊聽者無法根據封包的内容來猜測網絡的配置和使用者的身份。

3、TACACS+伺服器環境配置

1.  硬軟體要求

硬體:Pentium IV 處理器, 1.8 GHz 或者更高 

作業系統:Windows 2000 Server 、Windows Server 2003, Enterprise Edition or Standard 

Edition (Service Pack 1) 

記憶體:最小1GB 

虛拟記憶體:最小1GB 

硬碟空間:最小1GB可用空間,實際大小根據日志檔案的增長,複制和備份的需求而定。 

2. 軟體要求

浏覽器:Microsoft Internet Explorer 6 或者更高版本

 JAVA運作環境:Sun JRE 1.4.2_04 或更高版本

TACACS+伺服器:安裝cisco ACS

轉載于:https://www.cnblogs.com/wangliangblog/p/5198535.html