Next Previous Contents

13. 如果你的 PPP 伺服器使用 PAP 認證(Password Authentication Protocol)

如果你連接的伺服器需要 PAP 或 CHAP 認證,你需要多一點的工作.

在上面的選項檔案中,加上下面幾行


#
# 告訴 pppd 使用你的 ISP 名稱做為認證過程中的"主機名稱"
name <your ISP user name>    # 你需要改變這一行
#
# 如果你執行 PPP *伺服器* 並且需要使用 PAP 或 CHAP 認證,適當除去下面的
# 註解.不要在你做為客戶端連上伺服器時使用此選項(即使它使用 PAP 或 CHAP)
# 因為這是告訴伺服器必須為它自己在你的機器上提供認證(這幾乎是不可能的,
# 所以連結會失敗).
#+chap
#+pap
#
# 如果你使用在 /etc/ppp/pap-secrets 檔案中經編碼的密碼,除去下面一行的註解.
# 注意: 這和 Windows NT 上的遠端存取服務裡的微軟編碼密碼是不同的.
#+papcrypt

13.1 使用 MSCHAP

微軟的 Windows NT 遠端存取服務(RAS)可以被設定為使用一種 CHAP(Challenge/Handshake Authentication Protocol) 的變種. 在你的 PPP 原始程式碼中,你可以找到一個叫 README.MSCHAP80 的檔案討論這件事.

你可以開啟 pppd 的偵錯功能判斷伺服器是否要求使用此認證協定. 如果伺服器使用 MS CHAP 認證,你會看到這樣的一行


rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <auth chap 80> <magic 0x46a3>]

關鍵的訊息是 auth chap 80

為了使用 MS CHAP,你必須重新編譯 pppd 以支援此協定. 請參見 PPP 原始程式碼中的 README.MSCHAP80 說明如何編譯以使用此變種協定.

你還要注意這裡的程式碼只是讓 Linux PPP 做為客戶端連接上 MS Windows NT 伺服器用的. 它並不支援將 Linux 設立為讓客戶端使用 MSCHAP80 認證 PPP 伺服器.

13.2 PAP/CHAP 密碼檔案

如果你使用 PAP 或 CHAP 認證,你必須建立這些密碼檔案.它們是:


/etc/ppp/pap-secrets
/etc/ppp/chap-secrets

這些檔案擁有者必須為 root,群組為 root,同時為了安全檔案權限應為 740.

關於 PAP 與 CHAP 第一點要指出的是它們是設計用來認證電腦系統而不是使用者的.

"嗯? 有什麼不同呢?" 我聽到你在問.

哦,一旦你的電腦建立與伺服器建立 PPP 連線,你系統上的任何使用者都可以使用此連線 - 不只是你而已. 這也是為何你可以使用 PPP 將兩個區域網路(LAN)連接起來建立一廣域網路(WAN)的原因.

PAP (還有 CHAP 也是)需要雙向認證 - 也就是每一電腦需要一個合法的名稱與密碼在另一電腦上. 然而,這並不是大部份提供撥接式 PAP 認證連接的 PPP 伺服器運作的方式.

也就是說,你的 ISP 可能會給你一個使用者名稱與密碼以允許你連接到他們的系統進而連接到網際網路上. 你的 ISP 對於你電腦的名稱一點也不感興趣,因此你可能必須使用你在 ISP 上的使用者名稱做為你電腦的名稱.

這點要使用 pppd 選項的 name user name 來達成. 因此,如果你使用你 ISP 給你的使用者名稱,加上這一行


name your_user name_at_your_ISP

到你的 /etc/ppp/options 檔案中.

從技術上來說,PAP 其實應該要使用 user our_user name_at_your_ISP 這個選項,但是如果使用到 PAP 的話那麼 pppd 聰明的足以把 name 解譯為 user. 使用 name 這個選項的好處是這對於 CHAP 也是有效的.

因為 PAP/CHAP 是用來驗認電腦的,在技術上你也需要指定遠端電腦的名稱. 然而,大部分的人只接一家 ISP 所以你可以在密碼檔裡的遠端主機名稱使用通用字元(*) .

許多 ISP 有多個數據機撥接中心連接到不同的終端機伺服器 - 每個終端機伺服器都有不同的名稱,但都從單一的(自動轉線)號碼撥接. 在某些情形下可能因此而很不容易預先知道遠端電腦的名稱!

13.3 PAP 密碼檔

/etc/ppp/pap-secrets 這個檔案看起來像


# Secrets for authentication using PAP
# client        server       secret     acceptable_local_IP_addresses

這四個欄位是以空白分界而且最後一項可以是空白(如果你使用動態 IP 或由你的 ISP 所提供的靜態 IP).

假定你的 ISP 給你的使用者名稱是 fred 而密碼是 flintstone 的話那麼你應該在 /etc/ppp/options[.ttySx] 裡設定 name fred 這個選項並且把你的 /etc/ppp/pap-secrets 檔案設成下面這樣


# Secrets for authentication using PAP
# client        server  secret          acceptable local IP addresses
fred            *       flintstone

這是說對於 fred 這個本地機器名稱(我們已經告訴過 pppd 使用這個名稱,即使這不是我們本地機器的名稱也一樣)以及任何的伺服器,都使用 flintstone 這個密碼(暗碼).

注意到我們並不需要指定本地的 IP 位址,除非有要求要我們使用一個特定的,固定的 IP 位址. 即使你試著用一固定的 IP,這也不大可能行得通因為對於大部份的 PPP 伺服器(為了安全的理由)不允許遠端系統自行指定 IP 號碼.

13.4 CHAP 密碼檔

目前的 pppd 版本要求你要有互相驗認的方法 - 這是說你必須能夠讓從你的機器到遠端伺服器以及從遠端伺服器到你的機器這兩種驗認都能進行.

所以,如果你的機器是 fred 而遠端是 barney 的話,則在它們個別的 /etc/ppp/options.ttySx 裡你的設為 name fred remotename barney 而遠端機器應設為 name barney remotename fred

fred 這台機器的 /etc/ppp/chap-secrets 檔案看起來會像


# Secrets for authentication using CHAP
# client        server  secret            acceptable local IP addresses
fred            barney  flintstone
barney          fred    wilma

而 barney 的是


# Secrets for authentication using CHAP
# client        server  secret            acceptable local IP addresses
barney          fred    flintstone
fred            barney  wilma

特別要注意的是雙方機器都必須具有雙向認證的項目.這允許本地的機器向遠端機器認證它自己並且讓遠地機器向本地機器認證它自己.

13.5 處理多重 PAP 認證連接

一些使用者擁有多於一部使用 PAP 的伺服器可連線. 如果你的使用者名稱在每部你想連接的機器上都不同,這並不是問題.

然而,許多使用者在兩個系統(或者甚至是全部)上具有相同的使用者名稱. 這在從 /etc/ppp/pap-secrets 中正確地選擇適當一行時會有問題.

如你所料地,PPP 提供一種機制以克服此因難. PPP 允許你使用 remotename 選項為遠端伺服器設定一個"假想名稱".

假設你連接到兩部 PPP 伺服器都使用名稱 fred.你以此方式建立 /etc/ppp/pap-secrets 檔案


fred    pppserver1      barney
fred    pppserver2      wilma

如此,在與 pppserver1 連線時你在 pppd 選項中使用 name fred remotename pppserver1 並在連線 pppserver2 時使用 name fred remotename pppserver2

因為你可以使用在 pppd 使用 file filename 以指定 ppp 選項,你可以建立一指令稿以連接到每部 PPP 伺服器,正確地取用選項檔案並且選擇正確的 remotename 選項.


Next Previous Contents