點對點協定通常用於兩個網路節點的直接連接,例如兩台電腦透過電話線的網路進行連接。除了可以網路直接的連接外,點對點協定也提供連線認證、傳輸加密、錯誤偵測以及資料壓縮等功能,本文將要介紹點對點協定的認證機制。
CHAP認證協定比PAP認證協定安全許多,因為雙方都會計算出特定的Hash值加以比對,而且並不會把密碼直接用明文的方式來傳送。不僅如此,CHAP認證協定對於Playback的攻擊方式有相對應的保護措施。此外,Challenge值是很難被預測出是怎樣的值,因為Challenge值是亂數產生的,所以這同時代表著所計算出來的Hash值也是亂數產生的。此外,Challenge封包會一直發送,這種做法也可以避免受到攻擊,因為每次發送的Challenge值都不一樣。
點對點協定認證的設定方式
現在對於PPP協定應該已經有一定程度的了解,接下來介紹比較實作的部分,也就是PPP協定認證的設定方式。
設定PPP協定的封裝
一開始,先在Cisco路由器上面設定PPP協定的封裝,其指令如下:
Router(config-if)#encapsulation
ppp
這個指令必須在Interface模式下執行,這個指令相當於啟動PPP協定的使用,是設定PPP協定的第一步驟。可以透過非同步Serial介面、同步Serial介面、高速Serial介面(HSSI)、整合服務數位網路(ISDN)這些實體介面來連接設定。
如果是在非同步的Serial介面上設定Cisco路由器在PPP協定上的設定,則需要額外的步驟來啟動PPP協定的使用。不過,由於篇幅有限,難度較高,這裡就不說明非同步Serial介面的設定方式,只是要稍微注意一下。
設定路由器主機名稱
在設定PPP協定的認證之前,當前的介面必須已經設定過PPP協定的封裝(Encapsulation),也就是已經透過上一個步驟啟動了PPP協定的使用。
接下來,必須確保每一個使用PPP協定的Cisco路由器都有設定「主機名稱」。如何判定Cisco路由器是否已經設定主機名稱呢?方法很簡單,因為如果有設定好主機名稱,其設定好的主機名稱會出現在命令列提示符號之前。
如果沒有設定主機名稱,必須先執行下列指令來做設定,其中KC406是主機名稱的設定範例,指令關鍵字是hostname:
(config)#hostname KC406
一般而言,設定主機名稱主要是為了方便管理,而這個名稱一旦設定之後,此名稱就會顯示在提示符號之前,以便管理員辨識目前是在哪一台設備的CLI內。但是對於PPP協定的認證而言,這個主機名稱已經不再是方便管理這樣的簡單,而是會被拿來當作認證的帳號名稱,也就是username。請注意,這裡所設定的主機名稱,大小寫視為相異。
設定遠端路由器的主機名稱與密碼
接著,要設定遠端Cisco路由器的認證帳號名稱與密碼,利用下面這個指令來完成,這個指令範例是設定遠端的路由器,其主機名稱為LOLO,而密碼是1120:
KC406(config)#username LOLO
password 1120
對於Cisco路由器而言,這個密碼對於雙方路由器而言,必須是相同的。而在Cisco IOS版本11.2以前,這個密碼是加密過的,但是從Cisco IOS版本11.2開始,這個密碼就不再經過加密,而是用明文的方式。
如果想把密碼加密,必須執行以下這個指令:
KC406(config)#service password-
encryption
設定認證機制種類
接下來,當然就是要設定PPP協定認證的種類,有PAP和CHAP兩種認證協定可以選擇,其設定的指令如下所示:
KC406(config-if)#ppp authentication
chap
上面的指令範例是採用CHAP認證協定,指令的關鍵字是ppp authentication,若要採用PAP認證協定,只要將chap改成pap即可,指令如下:
KC406(config-if)#ppp authentication
pap
當然,無論是設定成PAP認證協定,還是設定成CHAP認證協定,都代表所有透過這個介面進來的PPP連線要求,都會使用所設定的認證協定來要求認證。
這裡要注意的是,一旦某一台Cisco路由器設定成某一種認證協定,假設使用CHAP認證協定,那所有其他想要與這台路由器建立PPP連線的Cisco路由器都必須使用CHAP認證協定才行,否則將無法通過認證動作。
如果覺得這種強迫一定要使用同一種認證協定的做法太沒有彈性的話,那其實也是可以一次指定兩種認證協定,例如:
KC406(config-if)#ppp authentication
pap chap
上面這個指令範例就會先試試看採用PAP認證,如果連進來的PPP連線並不是使用PAP認證協定,就會再試試CHAP認證協定。
檢視PPP協定的設定值
由於PPP協定的設定值,是設定在「介面」之上,所以PPP協定的設定值也在介面上,因此檢視PPP協定的設定值指令為:
KC406(config-if)#show interface
Serial0
指令關鍵字為Show interface,執行結果範例如下所示:
KC406(config-if)#show interface
Serial0
Serial0 is up, line protocol is up
Hardware is HD64570
Internet address is 10.1.152.43/24
MTU 1500 bytes, BW 1544 Kbit. DLY
20000 usec, rely 255 255, load 1/255
Encapsulation PPP, loopback not set,
keeplive set(10 sec)
LCP Open
Open: IPCP, CDPCP
Last input 00:00:05, output 00:00:05,
output hang never
Last clearing of “show interface”
counters never
Queueing strategy: fifo
Output queue 0/40, drops; input
queue 0/75, 0 drops 5 minute input
rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec,
0 packets/sec
……
以上就是查看使用PPP協定的部分介面資料,大部分的資訊都過於複雜,這裡針對一些重點的部分做解釋。由於PPP協定是網路第二層的協定,所以在第一行看到「line protocol is up」就代表PPP協定已經是運作的狀態。另外,可以看到下面這一行:
Encapsulation PPP, loopback not
set, keeplive set(10 sec)
由於使用HDLC協定和PPP協定,其介面資料可能都很相似,因此可以透過以上這一行來辨識目前所使用的是哪一個廣域網路協定,這邊顯示「Encapsulation PPP」,所以很明顯地就是正在使用PPP協定。
結語
這篇文章主要介紹點對點協定的知識,包含點對點協定的架構、點對點協定的連線建立過程、最重要的認證機制以及在Cisco路由器上的認證機制設定指令等等。對網路管理人員來說,如何將公司內部網路連線到廣域網路也是個相當重要的課題。連線到廣域網路的方式有很多種,而網路管理人員要考慮很多因素,以便於規劃使用哪一種方式來設定,例如服務供應商的網路種類、公司的連線需求等等。
<本文作者:胡凱智,目前在Solera Holdings Inc.擔任亞太區首席技術長,曾於美商Mozilla擔任全球技術專案總監,並在趨勢科技任職七年多,有兩年美國矽谷工作經驗,在美國專利局擁有軟體專利。讀者交流建議:https://www.facebook.com/khu.page>