PPP協定與HDLC協定都是屬於廣域網路的協定,這篇文章將介紹這兩個常見的廣域網路協定並相互做比較。一開始先介紹什麼是廣域網路,接著說明PPP協定與相關的認證協定和設定方式,最後講解HDLC協定與設定方式。雖然兩者都是廣域網路的協定,但由於其不同的設計與不同的支援,讓IT人員在使用的時候多了些選擇。
PPP協定的認證協定
接下來介紹PPP協定的認證(Authentication)方式,如同前面所提到的,PPP協定所使用的認證協定有PAP協定和CHAP協定,但是PAP協定和CHAP協定有什麼不同的地方呢?哪一種協定會比較好呢?這裡分別就這兩種認證協定加以介紹。
PAP認證協定
PAP認證協定是一種雙向握手(Two way handshake)協定,透過雙向握手的流程讓遠端的電腦或網路設備進行辨識(Identity)認證的工作。剛剛提到,一旦網路連線建立,而且認證協定被決定之後,就代表連線雙方的連線可進入認證確認的階段。
因此,認證的發生時間,是在PPP協定連線建立之後就進行的。進行時,遠端的電腦或網路設備會不斷地發送帳號和密碼到Cisco路由器,這樣的發送過程會一直持續,直到這個認證被接受或是這個PPP連線被中斷為止。
PAP認證協定的隱憂
雖然PPP協定使用著PAP認證協定,但事實上,PAP認證協定本身並不是一個很嚴謹的認證協定,因為PAP認證協定會把密碼用純文字的方式,也就是Clear Text來傳送,這也就代表傳送過程中,密碼是不會被加密的,因此一旦有人攔截到這樣的網路封包,就可以直接看到密碼的內容。
除了Token Ring網路架構之外,這樣的運作模式在大部分的網路環境中,是相當不安全的。不僅如此,PAP協定針對Playback和Trial-and-error的攻擊方式也沒有任何的保護措施。
CHAP認證協定
另外一種PPP連線的認證協定是CHAP認證協定,CHAP認證協定採用的運作流程是3-way Handshake,如果使用CHAP認證協定,則當PPP連線建立階段完成之後,Cisco路由器設備(本地端)就會發送所謂的Challenge封包給遠端的網路設備。
接下來,遠端的網路設備會透過One way hash的方式,針對傳送過來的Challenge值和密碼,計算出一個特定的值,然後將這個特定的值傳回給原本發送的Cisco路由器設備,這裡所使用的One way hash方式一般而言都是使用MD5(Message Digest 5)演算法。
接著,本地端的Cisco路由器設備會根據已知的計算方式再次計算出hash值,然後比對自己所計算的hash值和收到的hash值是否相同。如果兩個計算出來的hash值相同,則代表這個認證已經通過,否則就會立刻中斷目前這個PPP連線。
CHAP認證協定比較安全的地方
看得出來,CHAP認證協定比PAP認證協定安全許多,因為雙方都會計算出特定的hash值加以比對,而且不會把密碼直接用明文的方式來傳送。不僅如此,CHAP認證協定對於Playback的攻擊方式有相對應的保護措施。
剛剛所提到的Challenge值很難被預測出是怎樣的值,因為Challenge值是亂數產生的,所以這也同時代表著計算出來的hash值也是亂數產生的。此外,剛剛提到Challenge封包會一直發送,這種作法也可以避免受到攻擊,因為每次發送的Challenge值都不一樣。
PPP協定認證的設定方式
現在大家對於PPP協定應該已經有一定程度的瞭解,接下來介紹比較實作的部分,也就是PPP協定認證的設定方式。
設定PPP協定的封裝
一開始,先在Cisco路由器上設定PPP協定的封裝,其指令如下:
這個指令必須在Interface模式下執行,該指令相當於啟動PPP協定的使用,是設定PPP協定的第一步驟。前面提過,可以透過非同步Serial介面、同步Serial介面、高速Serial介面、整合服務數位網路等實體介面來連接設定。
如果是在非同步的Serial介面上,設定Cisco路由器在PPP協定中的設定,則需要額外的步驟來啟動PPP協定的使用。不過,由於篇幅有限且難度較高,這裡就不說明非同步Serial介面的設定方式,只是大家要稍微注意一下。
設定路由器主機名稱
在設定PPP協定的認證之前,當前的介面必須已經設定過PPP協定的封裝(Encapsulation),也就是已經透過上一個步驟啟動了PPP協定的使用。
接下來,必須確保每一個使用PPP協定的Cisco路由器都有設定「主機名稱」。如何判定Cisco路由器是否已經設定了主機名稱呢?
方法很簡單,因為如果有設定好主機名稱,其設定好的主機名稱會出現在命令列提示符號之前。如果沒有設定主機名稱,則需先執行下列指令來設定主機名稱:
KC406是主機名稱的設定範例,指令關鍵字是hostname,一般而言,設定主機名稱主要是為了方便管理,而這個名稱一旦設定之後,此名稱就會顯示在提示符號之前,以便管理員辨識目前是在哪一台設備的CLI中。
但是對於PPP協定的認證而言,這個主機名稱已經不再是方便管理這樣的簡單,而是會被拿來當作認證的帳號名稱,也就是username。請注意,這裡將所設定的主機名稱,大小寫視為相異。
設定遠端路由器的主機名稱與密碼
接著設定遠端Cisco路由器的認證帳號名稱與密碼,用下面這個指令來完成:
以上這個指令範例是設定遠端的路由器,其主機名稱為LOLO,而密碼是1120,對於Cisco路由器而言,這個密碼對於雙方路由器而言,必須是相同的。
而在Cisco IOS版本11.2以前,這個密碼是加密過的,但是從Cisco IOS版本11.2開始,這個密碼就不再加密,而是用明文的方式,如果想把密碼加密,必須執行下面這個指令:
設定認證協定種類
接下來要設定PPP協定認證的種類,如同大家所知的,有PAP協定和CHAP協定兩種認證協定可以選擇,其設定的指令如下所示:
以上的指令範例代表採用CHAP認證協定,指令的關鍵字是ppp authentication,若要採用PAP認證協定,則只要將chap改成pap即可,指令內容如下:
當然,無論是設定成PAP認證協定,還是設定成CHAP認證協定,都代表所有透過這個介面進來的PPP連線要求,都會使用所設定的認證協定來要求認證。