可以使用一種主機對主機的連線來設定 IPsec 以連線一部桌上型系統或工作站到另一部。 這種類型的連線使用主機所連接的網路來建立彼此間的安全穿隧。 對每一部主機上的 IPsec 設定來說,主機對主機連線的設定需求是很小的,主機只需要一個連線到載波網路(如網際網路) 的既有連線,以及 Red Hat Enterprise Linux 以建立 IPsec 連線。
建立連線的第一步驟是從每一部工作站收集系統與網路資訊,對於主機與主機的連線,您需要下列的資訊:
每一部主機的 IP 位址
用來辨識 IPsec 連線以及與其他裝置或連線分別的一個獨特的名稱(例如 ipsec0)
一個固定的加密金鑰或使用 racoon 自動產生一個
使用來初始連線與在連線階段中交換加密金鑰的一個事先共享的認證金鑰
舉例來說,假設工作站 A 與工作站 B 想要透過 IPsec 穿隧進行彼此連線,他們想要使用含有 foobarbaz 數值的預先共享金鑰來進行連線,而且使用者 同意讓 racoon 自動產生並且在每一部主機間分享一個認證金鑰。 兩邊 主機的使用者都決定命名他們的連線為 ipsec0。
以下為工作站 A 連到工作站 B(主機對主機)IPsec 連線的 ifcfg 檔案(在這個例子中用來辨識此連線的獨特名稱為 ipsec0,所以所產生的檔 案稱為 /etc/sysconfig/network-scripts/ifcfg-ipsec0):
DST=X.X.X.X TYPE=IPSEC ONBOOT=yes IKE_METHOD=PSK |
工作站 A 必須以工作站 B 的 IP 位址取代 X.X.X.X,而工作站 B 也以工作站 A 的 IP 位址取代 X.X.X.X。 而且這個連線也被 設定為開機時啟動(ONBOOT=yes),並且使用預先共享金鑰 的認證方法(IKE_METHOD=PSK)。
以下為兩部工作站使用來彼此認證的預先共享金鑰檔案(稱為 /etc/sysconfig/network-scripts/keys-ipsec0),在這兩部工作站的這個檔案內容必須是相同的,而且只有 root 使用者才能讀取或寫入這個檔案。
IKE_PSK=foobarbaz |
![]() | 重要 | |
|---|---|---|
如要變更 keys-ipsec0 檔案的權限設定使得只有 root 使用者才能讀取 與編輯這個檔案,請在建立好檔案後執行下列指令:
|
如要在任何時候變更認證金鑰,請編輯位於兩部工作站上的 keys-ipsec0 檔案,兩個金鑰必須是相同的才能使連線順利。
底下的例子說明了連接到遠端主機的第一階段。這檔案稱為X.X.X.X.conf(請以遠端 IPSec 路由器的 IP 位址取代 X.X.X.X)。請注意,當 IPSec 穿隧啟動時,會自動產生這檔案,請不要直接編輯這檔案。
;
remote X.X.X.X
{
exchange_mode aggressive, main;
my_identifier address;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2 ;
}
} |
依照 Red Hat Enterprise Linux 實作 IPSec的方式,當 IPSec 連線初始化時,會產生預設的第一階段設定檔,其中包括以下敘述:
指定設定檔接下來的部份,只能用於 X.X.X.X IP 位址所指明的遠端節點。
Red Hat Enterprise Linux 的 IPSec 所使用的預設設定,採用了積極主動的認證模式,可以降低同時與多台主機間 IPSec 連線設定時的負荷。
定義與節點進行認證時,所採用的辨識方法。Red Hat Enterprise Linux 會以 IP 位址來辨識節點。
定義認證過程中使用的加密方式。預設上會使用 Triple Data Encryption Standard(3DES)。
指定節點間在第一階段所使用的雜湊演算法。預設上會使用 Secure Hash Algorithm 第一版。
定義節點間所採行的認證方式。Red Hat Enterprise Linux 預設上會使用事先共享的金鑰,當作認證方式。
指定建立動態產生的階段金鑰時,所用的 Diffie-Hellman 金鑰長度。預設值為 1024 位元。
除了 include "/etc/racoon/X.X.X.X.conf" 敘述外, /etc/racoon/racoon.conf 檔案必須完全相同。這個聲明(以及它所參考的檔案)是 IPsec 穿隧啟動時所產生的。在工作站 A 上,include 敘述的 X.X.X.X 必須是工作站 B,反之亦然。下列顯示出當啟動 IPsec 連線時的典型 racoon.conf 檔案。
# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.
path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
sainfo anonymous
{
pfs_group 2;
lifetime time 1 hour ;
encryption_algorithm 3des, blowfish 448, rijndael ;
authentication_algorithm hmac_sha1, hmac_md5 ;
compression_algorithm deflate ;
}
include "/etc/racoon/X.X.X.X.conf" |
預設的 racoon.conf 包括 IPSec 設定的已定義路徑、預先分享的金鑰檔案、以及認證。sainfo anonymous 中的欄位描述了 IPSec 節點間,第二階段的 SA — IPSec 連線的基本資料(包括支援、並使用的加密法則)與交換金鑰的方式。第二階段的欄位定義如下:
表示 SA 可以用匿名方式,跟任何 IPSec 認證資訊相符的群組,做初始化動作。
定義 Diffie-Hellman 金鑰交換的通訊協定,以決定 IPSec 節點間,為 IPSec 第二階段鋪路的暫時金鑰為何。預設上,Red Hat Enterprise Linux 的 IPSec 使用了Diffie-Hellman 加密交換組的 group 2 (或modp1024)。 Group 2 使用的是 1,024 位元的 modular exponentiation 運算法,即使私密金鑰被攻破,也可以防止駭客解開先前的 IPSec 通訊。
這參數指定了 SA 的生命週期,您可以用時間或資料長度來決定。Red Hat Enterprise Linux IPSec 所使用的生命週期為一個小時。
定義第二階段所支援的加密方式。Red Hat Enterprise Linux 支援 3DES、448 位元 Blowfish、以及 Rijndael(先進加密標準(AES,Advanced Encryption Standard)所使用的加密方式)。
列出認證過程所支援的雜湊演算法。支援的模式包括 sha1 與 md5 兩種雜湊訊息認證碼(HMAC,hashed message authentication codes)。
定義 IP Payload Compression(IPCOMP)的 Deflate 壓縮演算法則。這法則可以在使用慢速網路時,加快 IP 封包的傳遞速度。
如要啟動這個連線,請以 root 身份在每一部主機上重新啟動工作站或執行下列指令:
/sbin/ifup ipsec0 |
如要測試 IPsec 連線,請執行 tcpdump 工具程式以檢視在主機(或網路) 間傳輸的網路封包,並且檢驗它們已經透過 IPsec 所加密了。 這些封包應該含有一個 AH 表頭, 並且應該顯示為 ESP 封包。(ESP 表示該封包已經經過加密。)例如:
17:13:20.617872 pinky.example.com > ijin.example.com: \ AH(spi=0x0aaa749f,seq=0x335): ESP(spi=0x0ec0441e,seq=0x335) (DF) |