安全的全自动部署
要查看哪些平台支持安全全自动部署 (SZTP),请转至 功能浏览器。在“功能浏览器”页的“ 探索功能 ”部分中,选择 “所有功能”。在按 功能系列分组的功能 框中,选择安全 ZTP。您还可以在 搜索要素 编辑框中键入要素的名称。有关 ZTP 支持如何扩展的更多详细信息,请参阅本主题末尾的发行历史记录表。
概述
家庭电话客户端 (PHC) 进程支持安全全自动部署 (SZTP)。
您可以使用基于 RFC-8572 的 SZTP 引导处于出厂默认状态的远程网络设备。在配置远程网络设备之前,SZTP 可以在自举服务器和网络设备之间实现相互身份验证。
要启用相互身份验证,您需要唯一的数字凭证和 DevID(数字设备 ID 或加密数字身份)编程网络设备。DevID 嵌入在网络设备上的可信平台模块 (TPM) 2.0 芯片内。瞻博网络会为每台符合条件的网络设备向客户发放一张数字优惠券。
我们在管理和 WAN 接口上支持 SZTP。
禁用基于 DHCP 的旧版 ZTP。在支持 SZTP 的硬件上,我们不支持基于 DHCP 的旧式 ZTP。
SZTP 符合 RFC 8572,并且需要以下基础架构来确保网络设备的身份和真实性:
受信任的平台模块 (TPM) 2.0
数字设备 ID (DevID)
DevID 证书
X.509 固定域证书 (PDC)
所有者证书
DevID 信任锚点
考试券
有关如何生成凭证的信息,请参阅 生成凭证证书。
要使用安全 ZTP 将瞻博网络设备载入,请参阅 安全 ZTP 快速入门指南。
优势
无需手册干预,即可配置远程网络设备。
您可以从中央位置安全地配置网络设备,从而防止未经授权的实体控制您的网络设备。
重定向和引导服务器根据网络设备的 TPM 中编程的 DevID 验证网络设备的真实性。
网络设备会根据设备的凭证验证重定向服务器和自举服务器的真实性,以及自举信息。
用例
对于出厂时出厂的网络设备,您无需手动接触网络设备,即可安全地远程运行网络设备。网络设备需要能够使用动态主机配置协议 (DHCP) 来获取网络连接信息并连接到远程自举服务器。
SZTP 要求
要在网络中部署 SZTP,您需要执行以下任务:
部署 DHCP 和 DNS 服务器。
在 DHCP 服务器上配置 DHCP V4 option 143 或 DHCP V6 option 136,以便 DHCP 服务器可以通告重定向和自举服务器的名称。
部署重定向和引导服务器。
从瞻博网络获取 DevID 信任锚点。
为一台网络设备或一组网络设备生成所有者证书。
为每个网域生成固定域证书 (PDC)。
从瞻博网络获取考试券。
为每个网络设备生成重定向和自举信息。
使用重定向和自举服务器提供的重定向和自举信息来配置网络设备。
在网络中部署 SZTP 后,部署新的网络设备后,网络设备会自动引导。
SZTP 基础架构组件
受信任的平台模块 (TPM) 2.0
TPM 是一种提供安全相关功能的微芯片。在制造过程中,瞻博网络使用数字设备 ID (DevID) 和非对称密钥对(公钥和私钥)对 TPM 进行编程。TPM 将非对称对的私钥锁定在防篡改位置。
DevID
DevID 与私钥对应并保护私钥。需要签名或加密的应用程序使用 DevID 私钥。
在网络设备上运行的应用程序使用网络设备 TPM 中的 DevID 私钥向远程验证程序证明网络设备的标识。
DevID 证书
瞻博网络为公钥生成与私钥的 DevID 对应的 DevID 证书(X.509 证书)。DevID 证书包含为其创建 DevID 的网络设备的序列号。生成符合 IEEE 802.1AR 标准的 DevID 证书。
X.509 固定域证书 (PDC)
为每个网域创建 X.509 固定域证书 (PDC)。PDC 可以是根 证书颁发机构证书,也可以是中间 证书颁发机构证书。将 PDC 从区分编码规则 (DER) 转换为以 64 为基数的编码。确保 PDC 是证书颁发机构 (证书颁发机构) 并符合 X.509。
所有者证书
所有者证书用于验证购买或拥有网络设备的供应商。为每个网络设备或网络设备组生成一个非对称密钥对(公钥和私钥)。密钥对需要使用 Rivest-Shamir-Adleman (RSA) 或椭圆曲线加密 (ECC)。将私钥保存在安全位置。固定域证书 (PDC) 应是所有者证书的证书颁发机构。
DevID 信任锚点
瞻博网络提供 DevID 信任锚点。在重定向和自举服务器中安装 DevID 信任锚点,以验证设备或客户端在建立 TLS 会话时提供的 DevID 证书。
优惠券证书
要接收优惠券证书,请在瞻博网络敏捷许可 (JAL) 门户中输入 PDC 和网络设备的序列号。收到凭证证书后,将其包含在自举服务器上的自举信息中。自举服务器向网络设备提供凭证证书。然后,网络设备使用自举信息来验证重定向服务器提供的信任锚点。
有关如何接收凭证的分步说明,请参阅 生成凭证证书。
DevID 工作流程
当应用程序需要使用 DevID 进行签名或加密时,应用程序会请求与自举服务器进行 TLS 会话。
- 自举服务器向网络设备发送 TLS 响应,要求网络设备执行以下操作:
- 提供其 DevID 证书
- 证明自己有私钥
网络设备使用私钥的 DevID 对会话数据进行签名。
网络设备将数字签名和 DevID 证书发送至自举服务器。
- 自举服务器使用 DevID 证书来验证数字签名。
自举服务器使用瞻博网络提供的 DevID 信任锚点来验证 DevID 证书。
上线信息
为了让网络设备自行启动并与其他系统建立安全连接,您需要提供上线信息。入网信息是网络设备用来自行引导并与其他系统连接的数据。当网络设备发送这些数据时,需要以符合 RFC 8572 的格式对数据进行编码。
启动映像信息
启动映像信息包括操作系统的名称和操作系统版本。建议将“Junos”指定为操作系统版本。请确保指定正确的操作系统版本,以防止网络设备持续下载和安装软件。
下载 URI
下载 URI 提供启动映像的位置。
图像验证
映像验证字段包括用于为软件映像生成安全散列的散列算法,以及软件映像的摘要值。SZTP 支持 SHA256。将摘要值编码为十六进制字符串。
配置处理
SZTP 可以合并或替换配置。使用 XML 创建配置,并将配置编码为 Base 64 格式。配置需要采用 Base 64 格式,以便自举服务器可以将其包含在其自举信息中。
预配置脚本
SZTP 支持 Bourne shell 脚本和 Python 脚本。Bourne shell 脚本解释器路径为 #!/bin/sh,Python 解释器路径为 #!/usr/bin/python。
如果脚本是 Bourne 脚本,SZTP 会检查脚本的结束值。如果脚本退出时值为非零,则 SZTP 进程将重新启动。如果脚本是 Python 脚本,则 SZTP 不会检查脚本的结束值。即使脚本成功运行,脚本的输出也可能出现错误。
下面是 XML 中的载入信息示例:
=============================
<onboarding-information>
<boot-image>
<os-name>Junos</os-name>
<os-version>22.2R1</os-version>
<download-uri>https://example.com/path/to/image/file,https://example-1.com/path/to/image/file</download-uri>
<image-verification>
<hash-algorithm> </hash-algorithm>
<hash-value>ba:ec:cf:a5:67:82:b4:10:77:c6:67:a6:22:ab:7d:50:04:a7:8b:8f:0e:db:02:8b:f4:75:55:fb:c1:13:b2:33</hash-value>
</image-verification>
</boot-image>
<configuration-handling>merge</configuration-handling>
<pre-upgrade-script>base64encodedvalue</pre-upgrade-script>
<configuration>base64encodedvalue</configuration>
<post-configuration-script>base64encodedvalue</post-configuration-script>
</onboarding-information>
=========================================
配置后脚本
预配置脚本要求也适用于配置后脚本。如果任何配置后脚本失败,设备将回滚到执行预配置脚本之前运行的配置。SZTP 进程将重新启动。
DHCP V4 Option 143
请先在 DHCP 服务器上配置 DHCP V4 选项 143,然后才能向 DHCP 客户端提供任何 IP 地址。
如果将 MX 系列设备用作 DHCP 服务器,请启用 DHCP V4 Option 143。
下面是一个配置示例:
access {
address-assignment {
pool p1 {
family inet {
network 192.168.2.0/24;
range r1 {
low 192.168.2.2;
high 192.168.2.254;
}
dhcp-attributes {
maximum-lease-time 2419200;
server-identifier 192.168.2.1;
router {
192.168.2.1;
}
}
option 143 hex-string 001368747470733a2f2f6578616d706c652e636f6d;
}
}
}
DHCP V6 Option 136
下面是一个配置示例:
access {
address-assignment {
neighbor-discovery-router-advertisement p2;
pool p2 {
family inet6 {
prefix 2001:db8:::/64;
range r1 {
low 2001:db8:::200/128;
high 2001:db8:::299/128;
}
dhcp-attributes {
dns-server {
2001:db8:::8888;
}
}
option 136 hex-string 001a68747470733a2f2f6d782d7068732d736572766572362e6e6574;
}
}
}
将十六进制格式转换为 ASCII 文本格式
例如,DHCP V6 Option 136 中的此十六进制文本字符串等于 ASCII 文本格式的 26 个字节。在十六进制格式中,26 表示为 001a。每个十六进制数字等于一个字节,每个字节等于 ASCII 字符的组合。
要将001a68747470733a2f2f6d782d7068732d736572766572362e6e6574十六进制字符串转换为 ASCII 字符,您需要将十六进制字母和数字映射到 ASCII 字母、数字和符号。
在此示例中,我们将映射用于 DHCP Option 136 的 URL。您可以对 DHCP Option 143 中使用的 URL 使用相同的过程。
下面是一个示例 URL,显示十六进制格式和 ASCII 格式之间的映射。您可以看到,每个十六进制数字都映射到ASCII格式的字母和符号:
68(h) 74(t) 74(t) 70(p) 73(s) 3A(:) 2F(/) 2F(/) 61(a) 62(b) 2D(-) 63(c) 64(d) 65(e) 2D(-) 73(s) 65(e) 72(r) 76(v) 65(e) 72(r) 36(.) 2E (n)6E 65(e) 74(t)
最终 URL 是 https://ab-cde-server.net.
使用十六进制到 ASCII 转换器,反之亦然,以确保您的结果正确。
SZTP 工作流程
如果您的设备尚未处于出厂默认状态,请发出以下命令之一,使设备进入出厂默认状态。
在运行 Junos OS 的网络设备上,发出命令
request vmhost zeroize。对于运行 Junos OS Evolved 的网络设备,请发出命令
request system zeroize。
当设备以出厂默认状态启动时,会发生以下事件。
DHCP 客户端向 DHCP 服务器发送请求,以获取自举服务器或客户重定向服务器的名称、IP 地址或主机名。
为 V4 配置 DHCP 选项 143 或为 V6 配置 DHCP 选项 136。DHCP 客户端会请求每个自举或重定向服务器的 IP 地址,直到设备完成自举。
DHCP 服务器将自举服务器或客户重定向服务器的服务器主机名发送到 DHCP 客户端。
设备上的家庭电话客户端 (PHC) 会向从 DHCP 选项获知的服务器发送引导请求。如果在 DHCP 选项中提供了多个服务器,设备将尝试按顺序与每台服务器一起引导。
设备会尝试使用 PHC 通过 DHCP 选项获知的任何引导、客户重定向或 DNS 服务器进行引导。设备会尝试以轮询方式引导到服务器,直到设备成功引导。
自举服务器响应已签名的载入信息以及所有者证书和所有权凭证。
- 基层医疗中心使用业主证书和业权凭证中的信息来验证已签署的入职信息。
PHC 提取图像和配置信息。
如果设备运行的是不同的映像,设备将下载该映像,使用新映像进行升级,然后使用新映像重新启动。
重新启动后,将重复整个 SZTP 序列,只是设备不会重新启动,因为它已具有所需的映像。
PHC 提交配置。
(选答)PHC 运行配置后脚本。
PHC 向 PHS 发送自举完成消息。
设备将清理与 PHC 相关的配置和资源。
PHC 终止。
脚本类型 |
解释器路径 |
平台支持 |
|---|---|---|
Shell 脚本 |
|
所有网络设备 |
Python 脚本 |
|
运行具有增强自动化功能的 Junos OS 的网络设备 运行 Junos OS Evolved 的网络设备 |
适用于具有双路由引擎的网络设备的 SZTP
在运行 Junos OS 软件的网络设备上升级备份路由引擎上的软件之前,请在主路由引擎上的层次结构中[edit system]启用secure-ztp provision-backup-re该语句
在运行 Junos OS 软件的网络设备上,在主路由引擎的层次结构中[edit system]启用该provision-backup-re语句,以便它可以引导备份路由引擎。
在运行 Junos OS 演化版软件的网络设备上,在层次结构中[edit system]启用该auto-sw-sync语句,以便主路由引擎通过升级或降级确保备份路由引擎上具有相同的映像版本。
在具有双路由引擎的基于 Junos OS 的系统上,即使主路由引擎已运行所需的映像版本,主路由引擎也会下载映像。设备将下载映像,以便主路由引擎准备好在需要时升级备份路由引擎。
在基于 Junos OS 演化版的系统上,主路由引擎始终保留其正在运行的映像的副本。
如果尚未在 synchronize 主路由引擎上的层次结构或平滑重启引擎切换 (GRES) 启用 [edit system] 语句,则主路由引擎不会将配置和状态同步到备份路由引擎。在这种情况下,主路由引擎在将任何数据与备份路由引擎同步之前,会验证备份路由引擎的真实性。
在主路由引擎调配备份路由引擎之前,主路由引擎会验证备份路由引擎的真实性。主路由引擎检查备份路由引擎的 DevID,确保备份路由引擎是瞻博网络授权的路由引擎。
主路由引擎不会检查备份路由引擎是否有权从主路由引擎接收信息。此外,备份路由引擎不会验证主路由引擎的真实性或授权。
在以下情况下,主路由引擎会调配备份路由引擎:
当主路由引擎已使用 SZTP 启动时。
当主路由引擎在 SZTP 过程中引导或插入时,当备用路由引擎存在时。
当备份路由引擎重新启动或更换时。
一旦主路由引擎验证备份路由引擎的真实性并满足调配要求,主路由引擎就会检查备份路由引擎上运行的软件版本。如果备份路由引擎的软件版本与主路由引擎的软件版本不同,则主路由引擎会将备份路由引擎升级到主路由引擎正在运行的同一软件版本。
当两个路由引擎运行相同的软件时,主路由引擎会将其配置与备用路由引擎同步。