使用憑證驗證來設定 IPsec - FSx for OnTAP

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用憑證驗證來設定 IPsec

下列主題提供在 ONTAP 檔案系統的 FSx 和執行利伯斯旺 IPsec 的用戶端上,使用憑證驗證來設定 IPsec 加密的指示。此解決方案使 AWS Private Certificate Authority 用 AWS Certificate Manager 和建立私有憑證授權單位以及產生憑證。

針對 ONTAP 檔案系統和連線的用戶端,使用 FSx 上的憑證驗證來設定 IPsec 加密的高階步驟如下:

  1. 擁有憑證授權單位來發行憑證。

  2. 產生並匯出檔案系統和用戶端的 CA 憑證。

  3. 在用戶端執行個體上安裝憑證並設定 IPsec。

  4. 在您的檔案系統上安裝憑證並設定 IPsec。

  5. 定義安全性原則資料庫 (SPD)。

  6. 為多個用戶端存取設定 IPsec。

建立和安裝 CA 憑證

對於憑證驗證,您需要從 FSx for ONTAP 檔案系統上的憑證授權單位以及將存取檔案系統上資料的用戶端產生並安裝憑證。下列範例會用 AWS Private Certificate Authority 來設定私有憑證授權單位,並產生要安裝在檔案系統和用戶端上的憑證。您可以使用 AWS Private Certificate Authority,建立完全 AWS 託管的根憑證授權單位和從屬憑證授權單位 (CA) 階層,供組織內部使用。這個過程有五個步驟:

  1. 使用建立私有憑證授權單位 (CA) AWS Private CA

  2. 在私有 CA 上發行並安裝根憑證

  3. 要求您的檔案系統和 AWS Certificate Manager 用戶端的私人憑證

  4. 匯出檔案系統和用戶端的憑證。

如需詳細資訊,請參閱《 AWS Private Certificate Authority 使用指南》中的私人 CA 管理

若要建立根私有 CA
  1. 建立 CA 時,您必須在提供的檔案中指定 CA 組態。以下命令使用 Nano 文本編輯器創建文ca_config.txt件,該文件指定了以下信息:

    • 演算法的名稱

    • CA 用來簽署的簽署演算法

    • X.500 主旨資訊

    $ > nano ca_config.txt

    文字編輯器隨即出現。

  2. 使用 CA 的規格編輯檔案。

    { "KeyAlgorithm":"RSA_2048", "SigningAlgorithm":"SHA256WITHRSA", "Subject":{ "Country":"US", "Organization":"Example Corp", "OrganizationalUnit":"Sales", "State":"WA", "Locality":"Seattle", "CommonName":"*.ec2.internal" } }
  3. 儲存並關閉檔案,結束文字編輯器。如需詳細資訊,請參閱《使用指南》中的〈建立 CA 的程序 AWS Private Certificate Authority 〉。

  4. 使用 create-certificate-authority AWS Private CA CLI 命令建立私有 CA。

    ~/home > aws acm-pca create-certificate-authority \ --certificate-authority-configuration file://ca_config.txt \ --certificate-authority-type "ROOT" \ --idempotency-token 01234567 --region aws-region

    如果成功,此命令會輸出 CA 的 Amazon 資源名稱 (ARN)。

    { "CertificateAuthorityArn": "arn:aws:acm-pca:aws-region:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012" }
建立並安裝私有根 CA 的憑證 (AWS CLI)
  1. 使用 get-certificate-authority-csr AWS CLI 命令產生憑證簽署要求 (CSR)。

    $ aws acm-pca get-certificate-authority-csr \ --certificate-authority-arn arn:aws:acm-pca:aws-region:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \ --output text \ --endpoint https://acm-pca.aws-region.amazonaws.com \ --region eu-west-1 > ca.csr

    產生的檔案 ca.csr (以 base64 格式編碼的 PEM 檔案) 具有下列外觀。

    -----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6 b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ 21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4 nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE= -----END CERTIFICATE-----

    如需詳細資訊,請參閱 AWS Private Certificate Authority 使用指南中的安裝根 CA 憑證

  2. 使用此issue-certificate AWS CLI 命令在您的私有 CA 上發行並安裝根憑證。

    $ aws acm-pca issue-certificate \ --certificate-authority-arn arn:aws:acm-pca:aws-region:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \ --csr file://ca.csr \ --signing-algorithm SHA256WITHRSA \ --template-arn arn:aws:acm-pca:::template/RootCACertificate/V1 \ --validity Value=3650,Type=DAYS --region aws-region
  3. 使用get-certificate AWS CLI 指令下載根憑證。

    $ aws acm-pca get-certificate \ --certificate-authority-arn arn:aws:acm-pca:aws-region:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \ --certificate-arn arn:aws:acm-pca:aws-region:486768734100:certificate-authority/12345678-1234-1234-1234-123456789012/certificate/abcdef0123456789abcdef0123456789 \ --output text --region aws-region > rootCA.pem
  4. 使用import-certificate-authority-certificate AWS CLI 指令在私有 CA 上安裝根憑證。

    $ aws acm-pca import-certificate-authority-certificate \ --certificate-authority-arn arn:aws:acm-pca:aws-region:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \ --certificate file://rootCA.pem --region aws-region
產生並匯出檔案系統與用戶端憑證
  1. 使用指request-certificate AWS CLI 令要求 AWS Certificate Manager 憑證以在檔案系統和用戶端上使用。

    $ aws acm request-certificate \ --domain-name *.ec2.internal \ --idempotency-token 12345 \ --region aws-region \ --certificate-authority-arn arn:aws:acm-pca:aws-region:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012

    如果要求成功,則會傳回已發行憑證的 ARN。

  2. 為了安全起見,您必須在匯出私密金鑰時指定私密金鑰的密碼片語。創建一個密碼並將其存儲在名為的文件中 passphrase.txt

  3. 使用指export-certificate AWS CLI 令匯出先前發行的私人憑證。匯出的檔案包含憑證、憑證鏈結以及與憑證中內嵌之公開金鑰相關聯的加密私密 2048 位元 RSA 金鑰。為了安全起見,您必須在匯出私密金鑰時指定私密金鑰的密碼片語。下列範例適用於 Linux EC2 執行個體。

    $ aws acm export-certificate \ --certificate-arn arn:aws:acm:aws-region:111122223333:certificate/12345678-1234-1234-1234-123456789012 \ --passphrase $(cat passphrase.txt | base64)) --region aws-region > exported_cert.json
  4. 使用下列jq命令從 JSON 回應中擷取私密金鑰和憑證。

    $ cat exported_cert.json | jq -r .PrivateKey > prv.key cat exported_cert.json | jq -r .Certificate > cert.pem openssl rsa -in prv.key -passin pass:$passphrase -out decrypted.key
  5. 使用下列openssl命令解密 JSON 回應中的私密金鑰。輸入指令後,系統會提示您輸入密碼。

    $ openssl rsa -in prv.key -passin pass:$passphrase -out decrypted.key

在 Amazon Linux 2 客戶端上安裝和配置利布斯旺 IPsec

以下各節提供在執行 Amazon Linux 2 的 Amazon EC2 執行個體上安裝和設定利伯斯旺 IPSec 的說明。

若要安裝和設定利用軟體
  1. 使用安全殼層 Connect 至您的 EC2 執行個體。有關如何執行此操作的特定指示,請參閱 Amazon 彈性運算雲端使用者指南中的 Linux 執行個體使用者指南中的使用安全殼層用戶端 Connect 到 Linux 執行個體。

  2. 執行下列命令來安裝libreswan

    $ sudo yum install libreswan
  3. (選擇性) 在稍後的步驟中驗證 IPsec 時,可能會在沒有這些設定的情況下標記這些內容。我們建議您先在沒有這些設定的情況下測試設定。如果您的連線發生問題,請返回此步驟並進行下列變更。

    安裝完成後,請使用您偏好的文字編輯器,將下列項目新增至/etc/sysctl.conf檔案。

    net.ipv4.ip_forward=1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.secure_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.lo.send_redirects = 0 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.eth0.rp_filter = 0

    儲存變更並結束文字編輯器。

  4. 套用變更。

    $ sudo sysctl -p
  5. 驗證 IPsec 組態。

    $ sudo ipsec verify

    確認Libreswan您安裝的版本正在執行中。

  6. 初始化 IPSec NSS 資料庫。

    $ sudo ipsec checknss
在用戶端上安裝憑證
  1. 您為用戶端產生的憑證複製到 EC2 執行個體上的工作目錄。您

  2. 將先前產生的憑證匯出為與相容的格式libreswan

    $ openssl pkcs12 -export -in cert.pem -inkey decrypted.key \ -certfile rootCA.pem -out certkey.p12 -name fsx
  3. 匯入重新格式化的金鑰,並在出現提示時提供複雜密碼。

    $ sudo ipsec import certkey.p12
  4. 使用偏好的文字編輯器建立 IPsec 組態檔案。

    $ sudo cat /etc/ipsec.d/nfs.conf

    將下列項目新增至組態檔:

    conn fsxn authby=rsasig left=172.31.77.6 right=198.19.254.13 auto=start type=transport ikev2=insist keyexchange=ike ike=aes256-sha2_384;dh20 esp=aes_gcm_c256 leftcert=fsx leftrsasigkey=%cert leftid=%fromcert rightid=%fromcert rightrsasigkey=%cert

在檔案系統上設定 IPsec 之後,您將會在用戶端上啟動 IPsec。

在您的檔案系統上設定 IPsec

本節提供在適用於 ONTAP 檔案系統的 FSx 上安裝憑證,以及設定 IPsec 的指示。

在您的檔案系統上安裝憑證
  1. 將根憑證 (rootCA.pem)、用戶端憑證 (cert.pem) 和解密的金鑰 (decrypted.key) 檔案複製到您的檔案系統。您將需要知道憑證的複雜密碼。

  2. 若要存取 NetApp ONTAP CLI,請執行下列命令,在適用於 NetApp ONTAP 檔案系統的 Amazon FSx 管理連接埠上建立安全殼層工作階段。取代management_endpoint_ip為檔案系統管理連接埠的 IP 位址。

    [~]$ ssh fsxadmin@management_endpoint_ip

    如需詳細資訊,請參閱 使用 ONTAP CLI 管理檔案系統

  3. cat在用戶端 (不在您的檔案系統上) 上使用來列出rootCA.pemcert.pem和檔decrypted.key案的內容,以便您可以複製每個檔案的輸出,並在下列步驟提示時貼上檔案。

    $ > cat cert.pem

    複製憑證內容。

  4. 除非已經安裝,否則您必須將相互驗證期間使用的所有 CA 憑證 (包括 OnTAP 端和用戶端 CA) 安裝至ONTAP憑證管理 (如 ONTAP 自我簽署 Root-CA 的情況)。

    使用 security certificate install NetApp CLI 命令,如下所示安裝用戶端憑證:

    FSxID123:: > security certificate install -vserver dr -type client -cert-name ipsec-client-cert
    Please enter Certificate: Press <Enter> when done

    貼上您先前複製的cert.pem檔案內容,然後按 Enter 鍵。

    Please enter Private Key: Press <Enter> when done

    粘貼到decrypted.key文件的內容中,然後按 Enter 鍵。

    Do you want to continue entering root and/or intermediate certificates {y|n}:

    輸入n以完成輸入用戶端憑證。

  5. 建立並安裝 SVM 使用的憑證。此憑證的發行者 CA 必須已安裝ONTAP並新增至 IPsec。

    使用下列指令來安裝根憑證。

    FSxID123:: > security certificate install -vserver dr -type server-ca -cert-name ipsec-ca-cert
    Please enter Certificate: Press <Enter> when done

    粘貼到rootCA.pem文件的內容中,然後按 Enter 鍵。

  6. 若要確保安裝的 CA 在驗證期間位於 IPsec CA 搜尋路徑內,請使用「安全性 IPsec CA-ONTAP 憑證新增」命令,將憑證管理 CA 新增至 IPsec 模組。

    輸入下列指令以新增根憑證。

    FSxID123:: > security ipsec ca-certificate add -vserver dr -ca-certs ipsec-ca-cert
  7. 輸入下列命令,在安全性原則資料庫 (SPD) 中建立必要的 IPsec 原則。

    security ipsec policy create -vserver dr -name policy-name -local-ip-subnets 198.19.254.13/32 -remote-ip-subnets 172.31.0.0/16 -auth-method PKI -action ESP_TRA -cipher-suite SUITEB_GCM256 -cert-name ipsec-client-cert -local-identity "CN=*.ec2.internal" -remote-identity "CN=*.ec2.internal"
  8. 使用下列命令來顯示要確認之檔案系統的 IPsec 原則。

    FSxID123:: > security ipsec policy show -vserver dr -instance Vserver: dr Policy Name: promise Local IP Subnets: 198.19.254.13/32 Remote IP Subnets: 172.31.0.0/16 Local Ports: 0-0 Remote Ports: 0-0 Protocols: any Action: ESP_TRA Cipher Suite: SUITEB_GCM256 IKE Security Association Lifetime: 86400 IPsec Security Association Lifetime: 28800 IPsec Security Association Lifetime (bytes): 0 Is Policy Enabled: true Local Identity: CN=*.ec2.internal Remote Identity: CN=*.ec2.internal Authentication Method: PKI Certificate for Local Identity: ipsec-client-cert

在用戶端上啟動 IPsec

現在 IPsec 已在 ONTAP 檔案系統和用戶端的 FSx 上設定,您可以在用戶端上啟動 IPsec。

  1. 使用 SSH Connect 到您的用戶端系統。

  2. 啟動 IPsec。

    $ sudo ipsec start
  3. 檢查 IPsec 的狀態。

    $ sudo ipsec status
  4. 在檔案系統上掛載磁碟區。

    $ sudo mount -t nfs 198.19.254.13:/benchmark /home/ec2-user/acm/dr
  5. 在您的 FSx 上顯示 ONTAP 檔案系統的加密連線,以確認 IPsec 設定。

    FSxID123:: > security ipsec show-ikesa -node FsxId123 FsxId08ac16c7ec2781a58::> security ipsec show-ikesa -node FsxId08ac16c7ec2781a58-01 Policy Local Remote Vserver Name Address Address Initator-SPI State ----------- ------ --------------- --------------- ---------------- ----------- dr policy-name 198.19.254.13 172.31.77.6 551c55de57fe8976 ESTABLISHED fsx policy-name 198.19.254.38 172.31.65.193 4fd3f22c993e60c5 ESTABLISHED 2 entries were displayed.

為多個用戶端設定 IPsec

當少數用戶端需要利用 IPsec 時,針對每個用戶端使用單一 SPD 項目就足夠了。不過,當數百或甚至數千個用戶端需要利用 IPsec 時,我們建議您使用 IPsec 多重用戶端設定。

FSx for ONTAP 支援在啟用 IPsec 的情況下,將多個網路中的多個用戶端連線到單一 SVM IP 位址。您可以使用subnet組態或組態來完成此操作,這些Allow all clients設定將在下列程序中說明:

使用子網路組態為多個用戶端設定 IPsec

若要允許特定子網路上的所有用戶端 (例如 192.168.134.0/24) 使用單一 SPD 原則項目連線到單一 SVM IP 位址,您必須指定在子網路中的格式。remote-ip-subnets此外,您必須指定具有正確客戶端身份的remote-identity字段。

重要

使用憑證驗證時,每個用戶端都可以使用自己的唯一憑證或共用憑證進行驗證。適用於 ONTAP IPsec 的 FSx 會根據其本機信任存放區上安裝的 CA 來檢查憑證的有效性。適用於 ONTAP 的 FSx 也支援憑證撤銷清單 (CRL) 檢查。

  1. 若要存取 NetApp ONTAP CLI,請執行下列命令,在適用於 NetApp ONTAP 檔案系統的 Amazon FSx 管理連接埠上建立安全殼層工作階段。取代management_endpoint_ip為檔案系統管理連接埠的 IP 位址。

    [~]$ ssh fsxadmin@management_endpoint_ip

    如需詳細資訊,請參閱 使用 ONTAP CLI 管理檔案系統

  2. 如下所示使用 security ipsec policy create NetApp ONTAP CLI 指令,將範例值取代為您的特定值。

    FsxId123456::> security ipsec policy create -vserver svm_name -name policy_name \ -local-ip-subnets 192.168.134.34/32 -remote-ip-subnets 192.168.134.0/24 \ -local-ports 2049 -protocols tcp -auth-method PSK \ -cert-name my_nfs_server_cert -local-identity ontap_side_identity \ -remote-identity client_side_identity
使用允許所有用戶端組態為多個用戶端設定 IPsec

若要允許任何用戶端 (不論其來源 IP 位址為何) 連線至啟用 SVM IPsec 的 IP 位址,請在指定欄位時使用0.0.0.0/0萬用字元。remote-ip-subnets

此外,您必須指定具有正確客戶端身份的remote-identity字段。對於憑證驗證,您可以輸入ANYTHING

此外,使用 0.0.0.0/0 萬用字元時,您必須設定要使用的特定本機或遠端連接埠號碼。例如,NFS 連接埠 2049。

  1. 若要存取 NetApp ONTAP CLI,請執行下列命令,在適用於 NetApp ONTAP 檔案系統的 Amazon FSx 管理連接埠上建立安全殼層工作階段。取代management_endpoint_ip為檔案系統管理連接埠的 IP 位址。

    [~]$ ssh fsxadmin@management_endpoint_ip

    如需詳細資訊,請參閱 使用 ONTAP CLI 管理檔案系統

  2. 如下所示使用 security ipsec policy create NetApp ONTAP CLI 指令,將範例值取代為您的特定值。

    FsxId123456::> security ipsec policy create -vserver svm_name -name policy_name \ -local-ip-subnets 192.168.134.34/32 -remote-ip-subnets 0.0.0.0/0 \ -local-ports 2049 -protocols tcp -auth-method PSK \ -cert-name my_nfs_server_cert -local-identity ontap_side_identity \ -local-ports 2049 -remote-identity client_side_identity