建立 IPsec 原則

您可以使用自訂 IPsec 政策來定義在協商階段 2 中使用的安全性參數。 在此階段中,VPN 及對等裝置會使用在「階段 1」期間建立的安全關聯,來協議要傳送哪些資料流量,以及如何鑑別及加密該資料流量。

為了確保一致的演算法選擇,請在 IBM Cloud VPN 閘道和對等閘道上匹配精確的 IKE 和 IPsec 演算法及其優先順序。 如需更多關於哪些因素會影響演算法選擇的資訊,請參閱 如何為站點對站點 VPN 連線中的 IKE 和 IPsec 選擇加密演算法?

在主控台中建立 IPsec 政策

若要在主控台中建立 IPsec 政策,請遵循下列步驟:

  1. 從 VPC 的 VPN 清單頁面,選擇 Site-to-site gateways > IPsec 政策

  2. 按下「建立」,並指定以下資訊:

    • 位置- 選取此 IPsec 政策的區域。
    • 名稱- 輸入 IPsec 原則的名稱。
    • 資源群組-選取此 IPsec 原則的資源群組。
    • 加密- 選擇第二階段要使用的加密算法。 預設情況下,系統會選擇強度最低的演算法。 您可以為每個欄位選擇多個值,並依優先順序重新排序。 VPN 閘道會與對等閘道協商,以選擇最佳的相互支援演算法。
    • 驗證- 選擇第二階段要使用的驗證演算法。 預設情況下,系統會選擇強度最低的演算法。 您可以選擇多種驗證演算法,並依優先順序重新排序。
    • Perfect Forward Secrecy- 啟用此選項可在每個 Phase 2 重新鑰匙期間執行新的 Diffie-Hellman 交換,因此如果金鑰遭到洩露,先前加密的通訊仍會安全。
    • Diffie-Hellman 群組 (如果啟用 PFS)- 選擇要用於 Phase 2 金鑰交換的 DH 群組。 預設選取最低的 DH 群組。 您可以選擇多個 DH 群組,並依優先順序重新排序。
    • 金鑰使用期限- 選擇 Phase 2 通道的使用期限 (以秒為單位)。
  3. 按一下建立

  4. VPN 連線詳細資料 頁面中,設定 IPsec 原則 欄位以使用想要的 IPsec 原則。

    為了確保 IKE/IPsec 談判成功,請設定兩個對等端在每個類別 (驗證、加密和 PF 群組) 中至少有一個匹配演算法。 在對等端之間對齊這些設定有助於避免連線失敗。

從 CLI 建立 IPsec 原則

開始之前,請 設定 CLI 環境

若要從 CLI 建立 IPsec 原則,請輸入下列指令:

ibmcloud is ipsec-policy-create IPSEC_POLICY_NAME AUTHENTICATION_ALGORITHMS ENCRYPTION_ALGORITHMS PFSGS [--key-lifetime KEY_LIFETIME] [--resource-group-id RESOURCE_GROUP_ID | --resource-group-name RESOURCE_GROUP_NAME] [--output JSON] [-q, --quiet]

其中:

  • IPSEC_POLICY_NAME- IPsec 政策的名稱。
  • AUTHENTICATION_ALGORITHMS- 驗證演算法。 只有當 ENCRYPTION_ALGORITHMS 包含合併模式演算法 (aes128gcm16, aes192gcm16, aes256gcm16) 時,才必須停用。其中之一:disabled, sha256, sha384, sha512,或以逗號分隔的驗證演算法清單 (sha384,sha256,sha512)。演算法的順序決定它們在協商過程中的優先順序。
  • ENCRYPTION_ALGORITHMS- 加密演算法。 之一:aes128, aes128gcm16, aes192, aes192gcm16, aes256, aes256gcm16,或以逗號分隔的加密演算法清單 (aes128,aes192,aes256)。演算法的順序決定它們在協商過程中的優先順序。
  • PFSGS — 完美前向保密群組。 之一:disabled, group_14, group_15, group_16, group_17, group_18, group_19, group_20, group_21, group_22, group_23, group_24, group_31,或以逗號分隔的 PFS 群組清單 (group_14,group_15,group_16)。群組的順序決定它們在協商過程中的優先順序。
  • --key-lifetime 值 —— 金鑰有效期(以秒為單位)。 最大值:86400,最小值:1800。 預設值為 3600
  • --resource-group-id 值 —— 資源群組的 ID。 此選項與 --resource-group-name 互斥。
  • --resource-group-name 值- 資源群組的名稱。 此選項與 --resource-group-id 互斥。
  • -- output value-以 JSON 格式指定輸出。
    • q, --quiet- 隱藏詳盡的輸出。

md5 和 認證演算法、和 DH 群組,以及 加密演算法已於 2022 年 9 月 20 日廢棄,主控台不再支援。sha1 group_2 group_5 triple_des

AUTHENTICATION_ALGORITHMS 必須等於 disabled,且僅當 ENCRYPTION_ALGORITHMS 等於 aes128gcm16aes192gcm16aes256gcm16 時才成立。

從 CLI 更新 IPsec 政策

開始之前,請 設定 CLI 環境

若要從 CLI 更新 IPsec 政策,請輸入下列指令:

ibmcloud is ipsec-policy-update IPSEC_POLICY [--name NEW_NAME] [--authentication-algorithms AUTHENTICATION_ALGORITHMS] [--pfsgs PFSGS] [--encryption-algorithms ENCRYPTION_ALGORITHMS] [--authentication-algorithm AUTHENTICATION_ALGORITHM] [--pfs disabled | group_14 | group_15 | group_16 | group_17 | group_18 | group_19 | group_20 | group_21 | group_22 | group_23 | group_24 | group_31] [--encryption-algorithm aes128 | aes128gcm16 | aes192 | aes192gcm16 | aes256 | aes256gcm16] [--key-lifetime KEY_LIFETIME] [--output JSON] [-q, --quiet]

其中:

  • --name- IPsec 政策的名稱。

  • --authentication-algorithms(驗證演算法)--以逗號分隔的驗證演算法清單(建議使用)。 演算法的順序決定了它們在協商過程中的優先級。

  • --authentication-algorithm- 驗證演算法(已廢棄)。 僅當 --encryption_algorithm 的值為 aes128gcm16aes192gcm16aes256gcm16 時,才必須停用此功能。 之一:disabled, sha256, sha384sha512

  • --encryption-algorithms- 以逗號分隔的加密演算法清單 (建議使用)。 演算法的順序決定了它們在協商過程中的優先級。

  • --encryption-algorithm- 加密演算法(已廢棄)。 下列其中一項: aes128aes128gcm16aes192aes192gcm16aes256aes256gcm16

  • -pfsgs- 以逗號分隔的 Perfect Forward Secrecy 群組清單。 群組的順序決定它們在協商過程中的優先順序。

  • --pfs- 完美前向保密群組 (已棄用)。 其中之一:殘障人士,group_14, group_15, group_16, group_17, group_18, group_19, group_20, group_21, group_22, group_23, group_24, group_31

    請勿在單一指令中混用相同演算法類別的單數和陣列型屬性。

指令範例

authentication algorithms, pfsgs,和 encryption algorithms,從 CLI 建立 IPsec 策略的單數值已被廢棄。 改用多個逗號分隔值。

  • 使用以逗號分隔的驗證演算法 (SHA 512 和 SHA 256)、加密演算法 (AES 256、AES 192 和 AES 128) 和完美前向保密群組 ( group_14 和 group_15 ) 建立 IPsec 政策:

    ibmcloud is ipsec-policy-create my-ipsec-policy sha512,sha256 aes256,aes192,aes128 group_14,group_15
    
  • 使用單一驗證演算法 (SHA 256)、單一加密演算法 (AES 128) 及 DH Group 14 建立 IPsec 政策:

    ibmcloud is ipsec-policy-create my-ipsec-policy sha256 aes128 group_14
    
  • 建立具有相同參數及 3600 秒生命期限的 IPsec 原則:

    ibmcloud is ipsec-policy-create my-ipsec-policy sha256 aes128 group_14 --key-lifetime 3600
    
  • 建立具有相同參數及資源群組 ID 的 IPsec 原則:

    ibmcloud is ipsec-policy-create my-ipsec-policy sha256 aes128 group_14 --resource-group-id fee82deba12e4c0fb69c3b09d1f12345 --output JSON
    
  • 更新 IPsec 政策,將名稱、驗證演算法變更為 SHA 512 和 SHA 256、加密演算法變更為 AES 256 和 AES 192,以及完美前向保密群組變更為 group_15 和。group_16:

    ibmcloud is ipsec-policy-update my-ipsec-policy --name new-ipsec-policy --authentication-algorithms sha512,sha256 --encryption-algorithms aes256,aes192 --pfsgs group_15,group_16 --output JSON
    
  • 使用 GCM 加密更新 IPsec 政策(關閉驗證):

    ibmcloud is ipsec-policy-update $ipsec_policy \
       --authentication-algorithms disabled \
       --encryption-algorithms aes128gcm16,aes256gcm16
    

    authentication_algorithms 必須設定為 disabled,當且僅當 encryption_algorithms 清單包含任何基於 GCM 的演算法 (aes128gcm16, aes192gcm16, 或 aes256gcm16)。 GCM 演算法同時提供加密和內建的資料完整性 (驗證) 作為單一作業的一部分,因此不必指定單獨的驗證演算法 (例如 sha256sha512)。

使用 API 建立 IPsec 原則

用於 IPsec 協商的奇異屬性 authentication_algorithm, dh_group, encryption_algorithm,和 pfs 已經廢棄。 使用基於陣列的屬性建立 IPsec 政策。 要瞭解使用 API 時 IPsec 策略的單一和陣列型演算法屬性的更多資訊,請參閱 更新為多重 IKE 和 IPsec 演算法

若要使用陣列式屬性 (建議) 建立具有多種演算法的 IPsec 政策,請遵循下列步驟:

  1. 使用正確的變數來設定 API 環境

  2. 儲存要在 API 指令中使用的任何其他變數,例如:

ResourceGroupId-使用 get resource groups 指令尋找資源群組 ID,然後移入變數:

 export ResourceGroupId=<your_resourcegroup_id>
  1. 建立 IPsec 政策:

       curl -X POST "$vpc_api_endpoint/v1/ipsec_policies?version=$api_version&generation=2" \
         -H "Authorization: Bearer $iam_token" \
         -d '{
            "name": "my-new-ipsec-policy",
            "authentication_algorithms": ["sha256", "sha512"],
            "encryption_algorithms": ["aes128", "aes256"],
            "pfs_groups": ["group_14", "group_15", "group_16", "group_17", "group_18"],
            "resource_group": {
              "id": "'$ResourceGroupId'"
            }
          }'
    

建立 IPsec 政策,將 encryption_algorithms 設定為 GCM-based 演算法,將 authentication_algorithms 設定為 disabled

   curl -X POST "$vpc_api_endpoint/v1/ipsec_policies?version=$api_version&generation=2" \
   -H "Authorization: Bearer $iam_token" \
   -d '{
      "name": "gcm-ipsec-policy",
      "encryption_algorithms": ["aes128gcm16","aes192gcm16","aes256gcm16"],
      "authentication_algorithms": ["disabled"],
      "pfs_groups": ["group_14","group_15","group_16","group_17","group_18"],
      "resource_group": {
        "id": "'$ResourceGroupId'"
      }
    }'

authentication_algorithms 屬性必須設定為 disabled,當且僅當 encryption_algorithms 清單包含任何基於 GCM 的演算法 (aes128gcm16, aes192gcm16, 或 aes256gcm16)。 GCM 演算法同時提供加密和內建的資料完整性 (驗證) 作為單一作業的一部分,因此不必指定單獨的驗證演算法 (例如 sha256sha512)。

若要透過 API 使用單一的屬性(已停用)建立 IPsec 政策,請遵循下列步驟:

  1. 使用正確的變數來設定 API 環境

  2. 儲存要在 API 指令中使用的任何其他變數,例如:

ResourceGroupId-使用 get resource groups 指令尋找資源群組 ID,然後移入變數:

 export ResourceGroupId=<your_resourcegroup_id>
  1. 建立 IPsec 政策:
   curl -X POST "$vpc_api_endpoint/v1/ipsec_policies?version=$api_version&generation=2" \
     -H "Authorization: Bearer $iam_token" \
     -d '{
        "name": "my-new-ipsec-policy",
        "authentication_algorithm": "sha256",
        "encryption_algorithm": "aes128",
        "pfs": "group_14",
        "resource_group": {
          "id": "'$ResourceGroupId'"
        }
      }'

使用 API 更新 IPsec 政策

若要使用陣列式內容 (建議) 以 API 更新 IPsec 政策,請遵循下列步驟:

  1. 使用正確的變數來設定 API 環境

  2. 儲存要在 API 指令中使用的任何其他變數,例如:

ResourceGroupId-使用 get resource groups 指令尋找資源群組 ID,然後移入變數:

export ResourceGroupId=<your_resourcegroup_id>
  1. 更新 IPsec 政策:
   curl -X PATCH "$vpc_api_endpoint/v1/ipsec_policies/$ipsec_policy_id?version=$api_version&generation=2" \
     -H "Authorization: Bearer $iam_token" \
     -d '{
         "name": "my-updated-ipsec-policy",
         "authentication_algorithms": ["sha512", "sha384", "sha256"],
         "encryption_algorithms": ["aes256", "aes128"],
         "pfs_groups": ["group_18", "group_17", "group_16", "group_15", "group_14"],
      }'

若要使用 API 更新 IPsec 策略,請遵循下列步驟:使用單元屬性(已停用):

您可以使用已被廢棄的單元內容或以陣列為基礎的內容來更新 IPsec 政策。 這兩種形式都可以接受,但您不可以在單一請求中混用同一演算法類別的單一和陣列型屬性。

  1. 使用正確的變數來設定 API 環境

  2. 儲存要在 API 指令中使用的任何其他變數,例如:

ResourceGroupId-使用 get resource groups 指令尋找資源群組 ID,然後移入變數:

export ResourceGroupId=<your_resourcegroup_id>
  1. 更新 IPsec 政策:
   curl -X PATCH "$vpc_api_endpoint/v1/ipsec_policies/$ipsec_policy_id?version=$api_version&generation=2" \
     -H "Authorization: Bearer $iam_token" \
     -d '{
         "name": "my-updated-ipsec-policy",
         "authentication_algorithm": "sha512",
         "encryption_algorithm": "aes256",
           "pfs": "group_18",
      }'

若要檢視站點對站點 VPN 閘道的完整 API 集,請參閱 VPC API 參考資料

使用 Terraform 建立 IPsec 政策

在以下範例中,您可以使用 Terraform 建立一個 IPsec 政策:

   resource "ibm_is_ipsec_policy" "is_ipsec_policy" {
     name                     = "my-ipsec-policy"
     authentication_algorithm = "sha256"
     encryption_algorithm     = "aes128"
     pfs                      = "group_14"
   }
  1. 在以下範例中,您可以使用 Terraform 建立一個具有陣列型屬性的 IPsec 政策(建議採用):
   resource "ibm_is_ipsec_policy" "is_ipsec_policy" {
     name                     = "my-ipsec-policy"
     authentication_algorithms = ["sha512", "sha384"]
     encryption_algorithms     = ["aes128", "aes192"]
     pfs_groups                = ["group_14", "group_15"]
   }
  1. 在以下範例中,您可以使用 Terraform 建立具有單一屬性的 IPsec 政策(已廢棄):
   resource "ibm_is_ipsec_policy" "is_ipsec_policy" {
     name                     = "my-ipsec-policy"
     authentication_algorithm = "sha256"
     encryption_algorithm     = "aes128"
     pfs                      = "group_14"
   }

請勿在單一請求中,將同一演算法類別的單一屬性與基於陣列的屬性混用。

如需更多資訊,請參閱 Terraform 註冊表

下一步

建立 IPsec 政策後,請視需要完成下列工作:

相關鏈結