PPoE 與PPP 協議分析

PPP的鏈接控制協議(LCP)、認證協議(CHAP、PAP)、IP控制協議I(PCP)算法

分析一(PPPoE)安全

1.IP接入的功能包括動態IP地址分配、AAA和ISP動態選擇服務器

2.PPPoE主 要分爲兩個階段即Discovery(地址發現)階段和PPP會話階段,當某個主機但願發起一個PPPoE會話時,它必須首先執行Discovery來確 定對方的以太網MAC地址並創建起一個PP-PoE會話標識符SSION_ID,雖然PPP定義的是端到端的對等關係,Discovery倒是天生的一種 客戶端-服務器關係,在Discovery的過程當中,主機(做爲客戶端)發現某個訪問集中器(Access Concentrator,做爲服務器),根據網絡的拓撲結構,主機可以與不僅一個的訪問集中器通訊.Discovery階段容許主機發現全部的訪問集中 器並從中選擇一個。當Discovery階段成功完成後,主機和訪問集中器兩者都具有了用於在以太網上創建點到點鏈接所需的全部信息。網絡

3.PPPoE的幀格式和種類測試

Discovery階段:以太網幀的ETHER_TYPE域都設置爲0x8863。加密

PPPoE Active Discovery Initiation (PADI)設計

PPPoE Active Discovery Offer(PADO)blog

PPPoE Active Discovery Request (PADR)接口

PPPoE Active Discovery Sessionconfirmation (PADS)事件

PPPoE Active Discovery Terminate(PADT)。

PPP會話階段: 以太網幀的ETHER_TYPE域都設置爲0x8864。

PPPoE的payload部分包含O個或多個TAG。一個TAG是一個TLV(type-length-value)結構,TAG_TYPE域爲16位值(網絡字節序),

clip_image001

4. PPPoE的工做流程

Discovery搜索階段

●主機發送PADl分組,其目的地址爲廣播地址,會話IAD爲0(未分配);  
●任一接入服務器收到PADI並任提供所需的服務時,就回送PADO分組,會話IAD爲O;

●主機可能收到多個PADO,根據服務及其提供的服務選定一個服務器,而後向該服務器發送PADR分組,其目的地址爲該服務器的單播地址。會話ID爲0(未分配);

●該服務器收到PADR後生成一個惟一的會話ID,向主機回送PADS分組,準備啓動PPP。

Session會話階段,PPPoE的Host主機從接入服務器AC獲取一個Session ID。進入PPP會話階段

分析二(PPP)

1. PPP協議組成

a) 鏈路控制協議(LCP-Link Control Protocol),完成線路的啓動、測試、任選參數的協商和最終線路斷開功能

b) 認證協議,最經常使用的包括口令驗證協議PAP(Password Authentication Protocol)和挑戰握手驗證協議CHAP(Challenge-Handshake Authentication Protocol)

c) 用戶認證,主要經過LCP協商採用何種認證協議,但認證協議自己不是PPP協議的範圍

d) IP控制協議IPCP(網絡控制協議(NCP)),最經常使用的NCP協議爲。它的一個重要功能就是動態分配IP地址;

2. 認證方式

1. 口令驗證協議(PAP)  
PAP 是一種簡單的明文驗證方式。NAS(網絡接入服務器,Network Access Server)要求用戶提供用戶名和口令,PAP以明文方式返回用戶信息。很明顯,這種驗證方式的安全性較差,第三方能夠很容易的獲取被傳送的用戶名和口 令,並利用這些信息與NAS創建鏈接獲取NAS提供的全部資源。因此,一旦用戶密碼被第三方竊取,PAP沒法提供避免受到第三方攻擊的保障措施。

2. 挑戰-握手驗證協議(CHAP)  
CHAP 是一種加密的驗證方式,可以避免創建鏈接時傳送用戶的真實密碼。NAS向遠程用戶發送一個挑戰口令(challenge),其中包括會話ID和一個任意生 成的挑戰字串(arbitrary challengestring)。遠程客戶必須使用MD5單向哈希算法(one-way hashing algorithm)返回用戶名和加密的挑戰口令,會話ID以及用戶口令,其中用戶名以非哈希方式發送。    
CHAP對PAP進行了改進,不 再直接經過鏈路發送明文口令,而是使用挑戰口令以哈希算法對口令進行加密。由於服務器端存有客戶的明文口令,因此服務器能夠重複客戶端進行的操做,並將結 果與用戶返回的口令進行對照。CHAP爲每一次驗證任意生成一個挑戰字串來防止受到再現攻擊(replay attack)。在整個鏈接過程當中,CHAP將不定時的向客戶端重複發送挑戰口令,從而避免第3方冒充遠程客戶(remote client impersonation)進行攻擊。

3. PPP工做流程

a) LCP協商(之下物理層,之上網絡接口層)建立鏈路

Open事件發送到PPP的LCP子層,當LCP啓動後,即請求創建物理鏈路,開始以上的PPPoE協商,當PPPoE協商成功後,就向LCP層發送Up事件。

b) 認證

LCP向對端發送協商請求,雙方肯定鏈路的配置參數後,LCP向認證層發送Up事件。

c) NCP協商 調用鏈路層建立階段選定的網絡控制層協議

認證成功後,在向NCP層發Up事件。如不須要認證,則可直接向NCP層發送up事件,NCP協議收到Up事件後開始NCP處理。

d) PPP正常終結過程

NCP分別終結,而後LCP終結,最後物理層終結

說明:每層可向相鄰的子層發送「Up」或「Down」事件。「Up」表示該層已激活,「Down」表示該層已終結.

4.PPP幀格式

clip_image003

a) 發送的順序是從左到右Protocol

clip_image005

分析二(實現)

clip_image007

1. PPP和PPPoE數據包收發處理流程

PPPoE層主要實現PPPoE撥號過程和對上層PPP的數據包進行PPPoE封裝及處理,主要處理幀類型爲0x8863,則爲PPPoE Dis-covery包,如爲0x8864,則爲PPPoE Session階段的包經拆封處理後送到PPP層處理

PPP層軟件主要實現LCP鏈路創建、PPP認證、IPCP協商IP地址和對IP數據包的PPP封裝等功能。

2. 數據包流向

clip_image009

4. PPP和PPPoE軟件模塊設計

整個PPPoE、PPP軟件可分爲一下模塊設計,

clip_image010

1)PPP模塊主要實現LCP、IPCP和認讓協議(chap、pap)等,PPP還實現一個虛擬的ifnet接口,實現對上層IP報的封裝和分發處理。   2)PPP Adpater模塊主要實現PPP和PPPoE模塊之間的接口適配。    3)PPPoE Discoverv模塊實現PPPoE的Discov-ely階段的處理。    4)PPPoE Session模塊實現PPPoE的Session階段的處理,主要是PPPoE封裝和解包處理。    5)PPPoE Timer模塊主要實現PPPoE模塊的定時處理功能,用於PPPoE Discovery階段的狀態機切換處理。    6)PPPoE Adapater模塊主要實現PPPoE的包的收發處理。    7)PPPoE Config模塊主要實現PPP和PPPoE的相關配置功能。如配置用戶名密碼等。

相關文章
相關標籤/搜索