IPsec使用证书身份验证进行配置 - FSx for ONTAP

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

IPsec使用证书身份验证进行配置

以下主题提供了在ONTAP文件系统和运行 Libres IPsec wan FSx 的客户端上使用证书身份验证配置IPsec加密的说明。此解决方案使用 AWS Certificate Manager 和 AWS Private Certificate Authority 来创建私有证书颁发机构并生成证书。

使用证书身份验证为ONTAP文件系统和连接FSx的客户端配置IPsec加密的高级步骤如下:

  1. 设立证书颁发机构来颁发证书。

  2. 为文件系统和客户端生成和导出 CA 证书。

  3. 在客户端实例IPsec上安装证书并进行配置。

  4. 在您的文件系统IPsec上安装证书并进行配置。

  5. 定义安全策略数据库 (SPD)。

  6. 配置IPsec多客户端访问权限。

创建和安装 CA 证书

要进行证书身份验证,您需要在您的FSxONTAP文件系统上生成并安装来自证书颁发机构的证书,以及将访问文件系统数据的客户端的证书。以下示例 AWS Private Certificate Authority 用于设置私有证书颁发机构,并生成要安装在文件系统和客户端上的证书。使用 AWS Private Certificate Authority,您可以创建由根证书颁发机构和从属证书颁发机构 (CAs) 组成的完全 AWS 托管的层次结构,供组织内部使用。此过程分为五个步骤:

  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. 保存并关闭文件,退出文本编辑器。有关更多信息,请参阅《 AWS Private Certificate Authority 用户指南》中的创建 CA 的步骤

  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

    生成的PEM文件ca.csr是以 base64 格式编码的文件,其外观如下。

    -----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 命令导出先前颁发的私有证书。导出的文件包含证书、证书链以及与证书中嵌入的公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

在亚马逊 Linux 2 客户端IPsec上安装和配置 Libreswan

以下各节提供了在运行亚马逊 Linux 2 的亚马逊EC2实例IPsec上安装和配置 Libreswan 的说明。

安装和配置 Libreswan
  1. 使用连接到您的EC2实例SSH。有关如何执行此操作的具体说明,请参阅《适用于 Linux 实例的亚马逊弹性计算云用户指南》中的使用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. 初始化IPsecNSS数据库。

    $ 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在您的文件系统上进行配置

本节提供有关在您的FSxONTAP文件系统上安装证书和配置的说明IPsec。

在文件系统上安装证书
  1. 将根证书(rootCA.pem))、客户端证书(cert.pem)和解密的密钥(decrypted.key)文件复制到您的文件系统。您需要知道证书的密码。

  2. 要访问 NetApp ONTAPCLI,请运行以下命令在 Amazon NetApp ONTAP 文件FSx系统的管理端口上建立SSH会话。将 management_endpoint_ip 替换为文件系统管理端口的 IP 地址。

    [~]$ ssh fsxadmin@management_endpoint_ip

    有关更多信息,请参阅 使用 ONTAP CLI 管理文件系统

  3. 在客户端(而不是在您的文件系统)上使用 cat 列出 rootCA.pemcert.pemdecrypted.key 文件的内容,以便复制每个文件的输出并在系统提示时粘贴到以下步骤中。

    $ > cat cert.pem

    复制证书内容。

  4. 除非已经安装(例如ONTAP自签名 root ONTAP-CA),否则您必须将双向身份验证期间使用的所有 CA ONTAP 证书(包括端和客户端CAs)安装到证书管理中。

    使用如下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证书管理CAs添加到IPsec模块中。

    输入以下命令来添加根证书。

    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,在ONTAP文件系统和客户FSx机上都配置好了,你可以在客户端IPsec上启动。

  1. 使用 Connect 连接到您的客户端系统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. 通过显示 for ONTAP 文件系统上的加密连接来FSx验证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多个客户端配置。

FSxfo ONTAP r 支持在IPsec启用后将跨多个网络的多个客户端连接到单个 SVM IP 地址。您可以使用 subnet 配置或 Allow all clients 配置来完成此操作,详细过程如下:

使用子网配置IPsec为多台客户机进行配置

要允许特定子网(例如 192.168.134.0/24)上的所有客户端使用单个SPD策略条目连接到单个 SVM IP 地址,必须以子网形式指定。remote-ip-subnets此外,您必须使用正确的客户端标识来指定 remote-identity 字段。

重要

使用证书身份验证时,每个客户端都可以使用其唯一证书或共享证书进行身份验证。FSxfor 根据其本地信任存储区上CAs安装的证书来ONTAPIPsec检查证书的有效性。FSxfo ONTAP r 还支持证书吊销列表 (CRL) 检查。

  1. 要访问 NetApp ONTAPCLI,请运行以下命令在 Amazon NetApp ONTAP 文件FSx系统的管理端口上建立SSH会话。将 management_endpoint_ip 替换为文件系统管理端口的 IP 地址。

    [~]$ ssh fsxadmin@management_endpoint_ip

    有关更多信息,请参阅 使用 ONTAP CLI 管理文件系统

  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 地址如何)连接到SVMIPsec启用的 IP 地址,请在指定remote-ip-subnets字段时使用通0.0.0.0/0配符。

此外,您必须使用正确的客户端标识来指定 remote-identity 字段。对于证书身份验证,您可以输入 ANYTHING

此外,使用 0.0.0.0/0 通配符时,必须配置要使用的特定本地或远程端口号。例如,NFS端口 2049。

  1. 要访问 NetApp ONTAPCLI,请运行以下命令在 Amazon NetApp ONTAP 文件FSx系统的管理端口上建立SSH会话。将 management_endpoint_ip 替换为文件系统管理端口的 IP 地址。

    [~]$ ssh fsxadmin@management_endpoint_ip

    有关更多信息,请参阅 使用 ONTAP CLI 管理文件系统

  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