証明書認証IPsecを使用した の設定 - ONTAP に関する FSx

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

証明書認証IPsecを使用した の設定

以下のトピックでは、ONTAPファイルシステムFSx用の と Libreswan を実行するクライアントで証明書認証を使用してIPsec暗号化を設定する手順について説明しますIPsec。このソリューションでは、 AWS Certificate Manager と AWS Private Certificate Authority を使用してプライベート認証機関を作成し、 を使用して証明書を生成します。

ONTAP ファイルシステムおよび接続されたクライアントの で証明書認証を使用してIPsec暗号化を設定するFSx手順の概要は次のとおりです。

  1. 証明書を発行するための認証機関を用意します。

  2. ファイルシステムとクライアントの CA 証明書を生成してエクスポートします。

  3. 証明書をインストールし、クライアントインスタンスIPsecに を設定します。

  4. 証明書をインストールし、IPsecファイルシステムに を設定します。

  5. セキュリティポリシーデータベース () を定義しますSPD。

  6. 複数のクライアントアクセスIPsec用に を設定します。

CA 証明書の作成とインストール

証明書認証では、ファイルシステムFSx用の の認証機関と、ONTAPファイルシステム上のデータにアクセスするクライアントから証明書を生成してインストールする必要があります。次の例では AWS Private Certificate Authority 、 を使用してプライベート認証機関を設定し、ファイルシステムとクライアントにインストールする証明書を生成します。を使用すると AWS Private Certificate Authority、組織による内部使用のために、ルート認証機関と下位認証機関 (CAs) の完全に AWS ホストされた階層を作成できます。このプロセスは、次の 5 つのステップから成ります。

  1. を使用してプライベート認証機関 (CA) を作成する AWS Private CA

  2. ルート証明書を発行してプライベート CA にインストールします。

  3. ファイルシステムおよびクライアント AWS Certificate Manager 用に からプライベート証明書をリクエストする

  4. ファイルシステムとクライアントの証明書をエクスポートします。

詳細については、「 ユーザーガイド」の「プライベート CA の管理 AWS Private Certificate Authority 」を参照してください。

ルートプライベート 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

    base64 形式でエンコードされたPEM結果ca.csrのファイル には、次の外観があります。

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

    詳細については、「 ユーザーガイド」の「ルート CA 証明書のインストール」を参照してください。 AWS Private Certificate Authority

  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 コマンドを使用して、以前に発行されたプライベート証明書をエクスポートします。エクスポートされたファイルには、証明書、証明書チェーン、および証明書に埋め込まれているパブリックRSAキーに関連付けられた暗号化されたプライベート 2048 ビットキーが含まれます。セキュリティ上の理由から、プライベートキーをエクスポートするときはパスフレーズを割り当てる必要があります。次の例は 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での Libreswan のインストールと設定

以下のセクションでは、Amazon Linux 2 を実行している Amazon EC2インスタンスIPsecに Libreswan をインストールして設定する手順について説明します。

Libreswan をインストールして設定するには
  1. を使用してEC2インスタンスに接続しますSSH。これを行う具体的な手順については、Linux インスタンス用 Amazon Elastic Compute Cloud ユーザーガイドの「 SSHクライアントを使用して 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 ONTAPCLI、次のコマンドを実行して、Amazon FSx for NetApp ONTAP ファイルシステムの管理ポートで SSH セッションを確立します。management_endpoint_ip をファイルシステムの管理ポートの IP アドレスに置き換えます。

    [~]$ ssh fsxadmin@management_endpoint_ip

    詳細については、「CLI ONTAP を使用したファイルシステムの管理」を参照してください。

  3. 各ファイルの出力をコピーし、次のステップで画面に指示が出たときに貼り付けられるよう、(ファイルシステムではなく) クライアントで cat を使用して rootCA.pemcert.pemdecrypted.key ファイルの内容を一覧表示します。

    $ > cat cert.pem

    証明書の内容をコピーします。

  4. 相互認証中に使用されるすべての CA 証明書は、(ONTAP自己署名ルート CA の場合と同様に) 既にインストールされていない限りCAs、 ONTAP側とクライアント側の両方の を含めて、ONTAP証明書管理にインストールする必要があります。

    クライアント証明書をインストールするには、次のように 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 検索パス内にあることを確認するには、「security ipsec ca-certificate add」コマンドを使用してONTAP証明書管理をIPsecモジュールに追加CAsします。

    以下のコマンドを入力し、ルート証明書を追加します。

    FSxID123:: > security ipsec ca-certificate add -vserver dr -ca-certs ipsec-ca-cert
  7. 次のコマンドを入力して、セキュリティIPsecポリシーデータベース () に必要なポリシーを作成しますSPD。

    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、FSxONTAPファイルシステムとクライアントの両方に が設定され、クライアントIPsecで開始できます。

  1. を使用してクライアントシステムに接続しますSSH。

  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、クライアントごとに 1 つのSPDエントリを使用するだけで十分です。ただし、数百または数千のクライアントが を活用する必要がある場合はIPsec、IPsec複数のクライアント設定を使用することをお勧めします。

FSx の ONTAP は、複数のネットワークにまたがる複数のクライアントを、 IPsec が有効になっている単一の SVM IP アドレスに接続することをサポートします。これは、subnet 構成または Allow all clients 構成のいずれかを使用することで達成できます。その方法については、以下の手順で説明します。

サブネット設定を使用して複数のクライアントIPsecに対して を設定するには

特定のサブネット (192.168.134.0/24 など) のすべてのクライアントが 1 つのSPDポリシーエントリを使用して 1 つの SVM IP アドレスに接続できるようにするには、remote-ip-subnetsサブネット形式で を指定する必要があります。さらに、正しいクライアント側 ID を使って remote-identity を指定する必要があります。

重要

証明書の認証を使用すると、各クライアントは、独自の証明書か共有証明書を使用して、認証を行うことができます。FSx の は、ローカル信頼ストアにCAsインストールされている に基づいて証明書の有効性ONTAPIPsecをチェックします。FSx の は、証明書失効リスト (CRL) チェックONTAPもサポートしています。

  1. にアクセスするには NetApp ONTAPCLI、次のコマンドを実行して、Amazon FSx for NetApp ONTAP ファイルシステムの管理ポートで SSH セッションを確立します。management_endpoint_ip をファイルシステムの管理ポートの IP アドレスに置き換えます。

    [~]$ ssh fsxadmin@management_endpoint_ip

    詳細については、「CLI ONTAP を使用したファイルシステムの管理」を参照してください。

  2. コマンドをsecurity ipsec policy createNetApp ONTAPCLI次のように使用して、sample 特定の値を持つ 値。

    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 アドレスに接続できるようにするには、 remote-ip-subnetsフィールドを指定するときに0.0.0.0/0ワイルドカードを使用します。

さらに、正しいクライアント側 ID を使って remote-identity を指定する必要があります。証明書の認証には、ANYTHING と入力します。

また、0.0.0.0/0 のワイルドカードを使用する場合は、使用する特定のローカルまたはリモートのポート番号を設定する必要があります。例えば、NFSポート 2049 です。

  1. にアクセスするには NetApp ONTAPCLI、次のコマンドを実行して、Amazon FSx for NetApp ONTAP ファイルシステムの管理ポートで SSH セッションを確立します。management_endpoint_ip をファイルシステムの管理ポートの IP アドレスに置き換えます。

    [~]$ ssh fsxadmin@management_endpoint_ip

    詳細については、「CLI ONTAP を使用したファイルシステムの管理」を参照してください。

  2. コマンドをsecurity ipsec policy createNetApp ONTAPCLI次のように使用して、sample 特定の値を持つ 値。

    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