配置 DNSSEC

配置 DNSSEC 涉及在 Citrix ADC 设备上启用 DNSSEC,为区域创建区域签名密钥和密钥签名密钥,将两个密钥添加到区域,然后使用密钥对区域进行签名。

Citrix ADC 设备不充当 DNSSEC 解析器。仅在以下部署方案中支持 ADC 上的 DNSSEC:

  1. ADN-Citrix ADC 是 ADNS,并自行生成签名。
  2. 代理 - Citrix ADC 充当 DNSSEC 代理。假定 Citrix ADC 以受信任模式放置在 ADNS/LDNS 服务器前面。ADC 仅充当代理缓存实体,不验证任何签名。

启用和禁用 DNSSEC

必须在 Citrix ADC 上启用 DNSSEC,以便 ADC 响应 DNSSEC 感知的客户端。默认情况下,DNSSEC 处于启用状态。

如果您不希望 Citrix ADC 使用特定于 DNSSEC 的信息响应客户端,则可以禁用 DNSSEC 功能。

使用 CLI 启用或禁用 DNSSEC

在命令提示符下,键入以下命令以启用或禁用 DNSSEC 并验证配置:

-  set dns parameter -dnssec ( ENABLED | DISABLED )
-  show dns parameter  

示例:

> set dns parameter -dnssec ENABLED
 Done
> show dns parameter
        DNS parameters:
        DNS retries: 5
         .
         .
         .
         DNSEC Extension: ENABLED
        Max DNS Pipeline Requests: 255
 Done

通过使用 GUI 启用或禁用 DNSSEC

  1. 导航到流量管理 > DNS。
  2. 在详细信息窗格中,单击更改 DNS 设置。
  3. 在“配置 DNS 参数”对话框中,选中或清除“启用 DNSSEC 扩展”复选框。

为区域创建 DNS 密钥

对于要签名的每个 DNS 区域,必须创建两对非对称密钥。一对称为区域签名密钥,用于对区域中的所有资源记录集进行签名。第二对称为密钥签名密钥,用于仅签名该区域中的 DNSKEY 资源记录。

创建区域签名密钥和密钥签名密钥后,后缀 .key 会自动追加到密钥的公共组件的名称中,后缀 .private 会自动追加到其专用组件的名称中。

此外,Citrix ADC 还创建委派签名者 (DS) 记录,并将后缀 .ds 追加到记录的名称。如果父区域是签名区域,则必须在父区域中发布 DS 记录以建立信任链。

创建密钥时,密钥存储在 /nsconfig/dns/ 目录中,但不会自动在区域中发布。使用 create dns 密钥命令创建密钥后,必须使用 add dns 密钥命令在区域中显式发布密钥。生成密钥的过程已与在区域中发布密钥的过程分开,以便您能够使用替代方法生成密钥。例如,您可以使用安全文件传输协议 (SFTP) 导入由其他密钥生成程序(如绑定 keygen)生成的密钥,然后在区域中发布密钥。有关在区域中发布密钥的更多信息,请参阅在区域中发布 DNS 密钥

执行本主题中描述的步骤以创建区域签名密钥,然后重复这些步骤以创建密钥签名密钥。遵循命令语法的示例首先为区域 example.com 创建区域签名密钥对。然后,示例使用命令为区域创建密钥签名密钥对。

使用 CLI 创建 DNS 密钥

在 Citrix ADC 命令提示符处,键入以下命令以创建 DNS 密钥:

create dns key -zoneName <string> -keyType <keyType> -algorithm RSASHA1 -keySize <positive_integer> -fileNamePrefix <string>

示例:

> create dns key -zoneName example.com -keyType zsk -algorithm RSASHA1 -keySize 1024 -fileNamePrefix example.com.zsk.rsasha1.1024
File Name: /nsconfig/dns/example.com.zsk.rsasha1.1024.key (public); /nsconfig/dns/example.com.zsk.rsasha1.1024.private (private); /nsconfig/dns/example.com.zsk.rsasha1.1024.ds (ds)
This operation may take some time, Please wait...
 Done
> create dns key -zoneName example.com -keyType ksk -algorithm RSASHA1 -keySize 4096 -fileNamePrefix example.com.ksk.rsasha1.4096
File Name: /nsconfig/dns/example.com.ksk.rsasha1.4096.key (public); /nsconfig/dns/example.com.ksk.rsasha1.4096.private (private); /nsconfig/dns/example.com.ksk.rsasha1.4096.ds (ds)
This operation may take some time, Please wait...
 Done

通过使用 GUI 创建 DNS 密钥

  1. 导航到流量管理 > DNS。
  2. 在详细信息区域中,单击 创建 DNS 密钥 并创建 DNS 密钥。

    注意:对于“文件名前缀”,如果要修改现有密钥的文件名前缀,请单击“浏览”按钮旁边的箭头,单击“本地”或“设备”(取决于现有密钥是存储在本地计算机上还是存储在设备上的 /nsconfig/dns/ 目录中),浏览到位置,然后双击该键。“文件名前缀”框只填充现有密钥的前缀。相应地修改前缀。

在区域中发布 DNS 密钥

通过将密钥添加到 Citrix ADC,在区域中发布密钥(区域签名密钥或密钥签名密钥)。在签署区域之前,必须在区域中发布密钥。

在区域中发布密钥之前,密钥必须在 /nsconfig/dns/ 目录中可用。因此,如果您使用其他方法生成密钥(在 Citrix ADC 上创建 dns 键盘命令以外的意思(例如,通过在另一台计算机上使用绑定 keygen 程序),请确保在将密钥发布到 /ns/ 目录中之前将密钥添加到 /nsconfig/dns/ 目录中。

如果密钥是由其他程序生成的,则可以将密钥导入本地计算机,并使用 Citrix ADC 配置实用程序将密钥添加到 /nsconfig/dns/ 目录。或者,您可以使用其他方法将密钥导入到目录,例如安全文件传输协议 (SFTP)。

您必须对要在给定区域中发布的每个公私密钥对使用 add dns 密钥命令。如果您为区域创建了区域签名密钥对和密钥签名密钥对,请使用 add dns 键盘命令首先发布区域中的一个密钥对,然后重复该命令以发布另一个密钥对。对于您在区域中发布的每个密钥,将在区域中创建 DNSKEY 资源记录。

遵循命令语法的示例首先在区域中发布区域签名密钥对(为 example.com 区域创建的)。然后,示例使用命令在区域中发布密钥签名密钥对。

使用 CLI 在区域中发布密钥

在命令提示符下,键入以下命令以在区域中发布密钥并验证配置:

-  add dns key <keyName> <publickey> <privatekey> [-expires <positive_integer> [<units>]] [-notificationPeriod <positive_integer> [<units>]] [-TTL <secs>]
-  show dns zone [<zoneName> | -type <type>]

示例:

> add dns key example.com.zsk example.com.zsk.rsasha1.1024.key example.com.zsk.rsasha1.1024.private
 Done
> add dns key example.com.ksk example.com.ksk.rsasha1.4096.key example.com.ksk.rsasha1.4096.private
 Done
> show dns zone example.com
         Zone Name : example.com
         Proxy Mode : NO
         Domain Name : example.com
                 Record Types : NS SOA DNSKEY
         Domain Name : ns1.example.com
                 Record Types : A
         Domain Name : ns2.example.com
                 Record Types : A
 Done

使用 GUI 在 DNS 区域中发布密钥

导航到流量管理 > DNS > 密钥。

注意: 对于公钥和私钥,要添加存储在本地计算机上的密钥,请单击“浏览”按钮旁边的箭头,单击“本地”,浏览到该密钥的位置,然后双击该密钥。

配置 DNS 密钥

您可以配置已在区域中发布的密钥的参数。您可以修改密钥的到期时间、通知期和生存时间 (TTL) 参数。如果更改密钥的到期时间段,Citrix ADC 会自动使用该密钥重新签名区域中的所有资源记录,前提是该区域当前已使用特定密钥签名。

使用 CLI 配置密钥

在命令提示符处,键入以下命令以配置密钥并验证配置:

-  set dns key <keyName> [-expires <positive_integer> [<units>]] [-notificationPeriod <positive_integer> [<units>]] [-TTL <secs>]
-  show dns key [<keyName>]

示例:

> set dns key example.com.ksk -expires 30 DAYS -notificationPeriod 3 DAYS -TTL 3600
 Done
> show dns key example.com.ksk
1)      Key Name: example.com.ksk
        Expires: 30 DAYS        Notification: 3 DAYS    TTL: 3600
        Public Key File: example.com.ksk.rsasha1.4096.key
        Private Key File: example.com.ksk.rsasha1.4096.private
 Done

使用 GUI 配置密钥

  1. 导航到流量管理 > DNS > 密钥。

  2. 在详细信息窗格中,单击要配置的项,然后单击打开。

  3. 在“配置 DNS 密钥”对话框中,修改以下参数的值,如下所示:

    • 过期-过期
    • 通知期 — notificationPeriod
    • TTL
  4. 单击确定。

对 DNS 区域进行签名和取消签名

要保护 DNS 区域的安全,您必须使用已在区域中发布的密钥对区域进行签名。对区域进行签名时,Citrix ADC 会为每个所有者名称创建下一个安全 (NSEC) 资源记录。然后,它使用密钥签名密钥对 DNSKEY 资源记录集进行签名。最后,它使用区域签名密钥对区域中的所有资源记录集进行签名,包括 DNSKEY 资源记录集和 NSEC 资源记录集。每个符号操作都会为区域中的资源记录集生成一个签名。签名在名为 RRSIG 资源记录的新资源记录中捕获。

签署区域后,您必须保存配置。

使用 CLI 对区域进行签名

在命令提示符下,键入以下命令对区域进行签名并验证配置:

-  sign dns zone <zoneName> [-keyName <string> ...]
-  show dns zone [<zoneName> | -type (ADNS | PROXY | ALL)]
-  save config

示例:

> sign dns zone example.com -keyName example.com.zsk example.com.ksk
 Done
> show dns zone example.com
         Zone Name : example.com
         Proxy Mode : NO
         Domain Name : example.com
                 Record Types : NS SOA DNSKEY RRSIG NSEC
         Domain Name : ns1.example.com
                 Record Types : A RRSIG NSEC
         Domain Name : ns2.example.com
                 Record Types : A RRSIG
         Domain Name : ns2.example.com
                 Record Types : RRSIG NSEC
Done
> save config
 Done

使用 CLI 取消对区域的签名

在命令提示符下,键入以下命令以取消对区域的签名并验证配置:

-  unsign dns zone <zoneName> [-keyName <string> ...]
-  show dns zone [<zoneName> | -type (ADNS | PROXY | ALL)]

示例:

> unsign dns zone example.com -keyName example.com.zsk example.com.ksk
 Done
> show dns zone example.com
         Zone Name : example.com
         Proxy Mode : NO
         Domain Name : example.com
                 Record Types : NS SOA DNSKEY
         Domain Name : ns1.example.com
                 Record Types : A
         Domain Name : ns2.example.com
                 Record Types : A
 Done

使用 GUI 对区域进行签名或取消签名

  1. 导航到流量管理 > DNS > 区域。
  2. 在详细信息窗格中,单击要签名的区域,然后单击签名/取消签名。
  3. 在“登录/取消签名 DNS 区域”对话框中,执行以下操作之一:
    • 要对区域进行签名,请选中要用来签名区域的密钥(区域签名密钥和密钥签名密钥)的复选框。

      您可以使用多个区域签名密钥或密钥签名密钥对对对区域进行签名。

    • 要取消区域签名,请清除要取消区域签名的密钥(区域签名密钥和密钥签名密钥)的复选框。

      您可以使用多个区域签名密钥或密钥签名密钥对取消区域签名。

  4. 单击确定。

查看区域中给定记录的 NSC 记录

您可以查看 Citrix ADC 为区域中的每个所有者名称自动创建的 NSEC 记录。

使用 CLI 查看区域中给定记录的 NSEC 记录

在命令提示符下,键入以下命令以查看区域中给定记录的 NSEC 记录:

show dns nsecRec [<hostName> | -type (ADNS | PROXY | ALL)]

示例:

> show dns nsecRec example.com
1)      Domain Name : example.com
        Next Nsec Name: ns1.example.com
        Record Types : NS SOA DNSKEY RRSIG NSEC
 Done

通过使用 GUI 查看区域中给定记录的 NSC 记录

  1. 导航到流量管理 > DNS > 记录 > 下一个安全记录。
  2. 在详细信息窗格中,单击要查看其 NSEC 记录的记录的名称。您选择的记录的 NSC 记录将显示在“详细信息”区域中。

删除 DNS 密钥

当密钥过期或密钥已被泄露时,您可以从发布密钥的区域中删除密钥。从区域中删除密钥时,该区域将自动取消与该密钥签名。使用此命令删除密钥不会删除 /nsconfig/dns/ 目录中存在的密钥文件。如果不再需要密钥文件,则必须从目录中显式删除它们。

使用 CLI 从 Citrix ADC 中删除密钥

在命令提示符下,键入以下命令以删除密钥并验证配置:

-  rm dns key <keyName>
-  show dns key <keyName>

示例:

> rm dns key example.com.zsk
 Done
> show dns key example.com.zsk
ERROR: No such resource [keyName, example.com.zsk]

使用 GUI 从 Citrix ADC 中删除密钥

  1. 导航到 流量管理 > DNS > 密钥
  2. 在详细信息窗格中,单击要从 ADC 中删除的密钥的名称,然后单击删除。