我想為多個遠端使用者設定 IKEv2 VPN 閘道來存取專用網路。
我有一個測試設置,其中響應者使用自簽名證書對自身進行身份驗證。發起者使用使用者名稱和密碼進行身份驗證。
有幾個問題:
- 證書過於複雜。我不會設定適當的 PKI,因此必須分發給每個用戶端並配置為可信任的自簽名憑證相當於預先共用金鑰 (PSK),但產生和管理要困難得多。
- 發起者已通過身份驗證僅有的透過使用者名稱和密碼,因此外部攻擊者可以輕鬆嘗試猜測弱密碼或受損密碼。
如果沒有部署適當的 PKI,我寧願執行相互的透過 PSK 對發起方和回應方主機進行身份驗證。該密鑰將安全地分發給所有用戶。外部攻擊者不會擁有 PSK,因此弱密碼或洩漏的密碼不足以進行存取。使用者名稱和密碼身份驗證允許根據現有目錄系統對特定使用者進行識別和授權,而無需為每個使用者產生和分發唯一的金鑰。
IKEv2 可能實現這樣的事情嗎?據我所知,這是可以透過 IKEv1 中的 Xauth 實現的。但對於 IKEv2 我不太確定:粗略地讀了一下RFC 5996,第 2.16 節,看來情況可能並非如此。使用者名稱和密碼身份驗證將透過某種 EAP 方法進行,並且:
發起者透過省略 IKE_AUTH 交換中第一條訊息中的 AUTH 有效負載來表示希望使用 EAP。 (請注意,非 EAP 驗證需要 AUTH 有效負載,因此在本文檔的其餘部分中未將其標記為可選。)
這似乎表明發起者只能使用 EAP(使用者名稱和密碼)或 PSK 之一。
雖然問題是關於 IKEv2 協議,但我打算用 Strongswan 實現響應端,因此任何額外的專業知識將不勝感激。
答案1
IKEV2 中的用戶端和伺服器驗證不相關。因此理論上,您可以使用 PSK 對伺服器進行身份驗證,並使用 EAP 對用戶端進行身份驗證。但是,那RFC 規定如下關於EAP認證:
除了使用公鑰簽署和共用金鑰進行身份驗證之外,IKE 還支援使用 RFC 3748 [EAP] 中定義的方法進行身份驗證。通常,這些方法是不對稱的(設計用於向伺服器進行身份驗證的使用者),並且它們可能不是相互的。因此,這些協定通常用於向回應方驗證發起方的身份並且必須與回應者對發起者的基於公鑰簽名的身份驗證結合使用。
因此,將 PSK 伺服器身份驗證與 EAP 用戶端身份驗證相結合不符合 RFC。但是,可以使用strongSwan對其進行配置。但請注意,大多數客戶端不允許這種組合。
許多 roadwarrior 用戶端實際上根本不支援 PSK 身份驗證,因為如果多個客戶端使用相同的 PSK,在這種情況下會存在潛在的安全風險,因為理論上所有知道 PSK 的客戶端都能夠冒充伺服器。
我有一個測試設置,其中響應者使用自簽名證書對自身進行身份驗證。
為什麼不使用讓我們加密?
發起者僅透過使用者名稱和密碼進行身份驗證,因此外部攻擊者可以輕鬆嘗試猜測弱密碼或受損密碼。
使用 PSK 來驗證伺服器不會改變這一點。您需要在客戶端身份驗證中新增第二個因素才能執行此操作(即首先使用憑證或 PSK,然後執行 EAP)。然而,這需要支持RFC 4739,這是許多客戶端所缺乏的(不過,strongSwan 支持它)。