Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

用于 Junos OS 的 Veriexec 文件签名和验证

了解 Veriexec 文件签名和验证、优势以及如何使用它。

Verified Exec(也称为 veriexec)是一种文件签名和验证方案,用于保护 Junos 操作系统 (OS) 免受可能损害设备完整性的未经授权的软件和活动的侵害。veriexec 最初是为 NetBSD OS 开发的,后来适应了 Junos OS,并且默认启用。

授权文件(即 Junos OS 随附的某些文件)具有关联的指纹,veriexec 会对其进行检查,以确定文件是否可以使用(执行甚至打开)。任何缺少有效指纹的文件都无法被需要经过验证输入的应用程序执行或读取。

/bin/sh 文件不需要经过验证的输入。您可以使用此文件运行任意脚本。从风险角度来看,这些脚本与交互式命令相同,通过用户身份验证和权限进行控制。但是,如果经过验证的 shell 脚本包含运行任意脚本的指令,即清单中没有签名的文件,则阻止执行该文件。

Veriexec 的工作原理

Veriexec 为内核提供了一个数字签名清单,该清单由所有可执行文件和其他必须保持不变的文件的一组指纹组成。只有当清单的关联数字签名已成功验证时,veriexec 加载程序才会将清单的内容提供给内核。然后,内核可以验证文件是否与其指纹匹配。如果强制执行 veriexec,则只有具有经过验证的指纹的可执行文件才会运行。无法写入、修改或更改受保护的文件。

每个安装映像都包含一个清单,该清单是一个只读文件。它包含如下条目:

日志消息的格式如下:

如果文件已修改,并且生成的指纹与清单中的指纹不同,则会看到一条日志消息,如以下示例所示:

指纹不匹配表示文件已被修改。不要尝试运行此类文件,因为它可能包含损坏的代码。请联系 JTAC 获取指导。

Veriexec 的优势

  • 安全系统 — 保护瞻博网络路由器、交换机和防火墙免受安全漏洞影响。

  • 防止未经授权的访问 — 阻止威胁行为者获得持续的未经授权的访问或导致系统故障。

  • 防止恶意软件执行 — 通过防止未签名的二进制执行来阻止未经授权的修改和恶意软件。

  • 支持授权代码 — 使用 JET SDK 将已签名的授权代码添加到 Junos OS,并实施 veriexec。有关 SDK 解决方案的更多信息,请参阅 瞻博网络扩展工具包开发人员指南

如何验证 Veriexec 是否有效 — 选项 1

某些 Junos OS 平台提供禁用 veriexec 实施的可选版本的 Junos OS。有关详细信息,请参阅 Junos 增强型自动化

管理员可以通过从 Junos OS CLI shell 运行以下命令来检查是否强制执行 veriexec:

  1. 启动 shell。

  2. sysctl security.mac.veriexec.state Junos OS 15.1 及更高版本使用命令

    如果强制执行 veriexec,则输出为 security.mac.veriexec.state: loaded active enforce。如果未强制执行 veriexec,则输出为 security.mac.veriexec.state: loaded active

如何验证 Veriexec 是否有效 — 选项 2

您可以通过将授权文件(例如 /usr/bin/id)复制到新位置来确认 veriexec 是否正常工作,如下所示。Veriexec 阻止该操作,因为即使文件相同,也仅存在 /usr/bin/id 的有效指纹,而不存在 /tmp/id 的有效指纹。为了验证文件完整性,veriexec 评估文件的底层 Linux 属性。将文件复制到其他位置后,这些属性(而不是文件本身)将发生更改。

  1. 启动 shell。

  2. 更改目录,然后将授权文件(例如 /usr/bin/id)复制到新位置。

结果

如果强制执行 veriexec,则会生成身份验证错误消息。如果未生成错误消息,则文件将正常运行。

强制执行 veriexec 时生成的输出,显示文件被阻止:

未强制执行 veriexec 时生成的输出,显示文件已复制

安装 Veriexec Loader

veriexec 加载程序可验证从简单文件传输协议 (TFTP) 服务器或 USB 存储设备安装的 Junos OS 映像。

  • 要从 TFTP 服务器安装 Junos OS 映像,请使用以下命令:

  • 使用以下命令从 USB 存储设备安装 Junos OS 映像。

支持 veriexec 的加载程序可验证 Junos OS 映像。加载程序仅启动带有指纹的新 Junos OS 映像,不会启动没有指纹或内核的现有映像。您可以使用该 nextboot功能检查当前启动设备。

Bootupgrade 是 Junos OS 软件包中提供的一款工具,用于支持 BIOS 固件升级。您可以使用命令 bootupgrade 进行升级、检查 U-Boot、手动加载和安装支持 veriexec 的加载程序。该 bootupgrade -c loader 命令打印当前加载程序的版本字符串。

在将支持 veriexec 的加载程序安装到 Junos OS 映像之前,会在两个双根分区中执行 Junos OS 指纹识别。只有当两个双根分区都具有带指纹的 Junos OS 时,才能安装支持 veriexec 的加载程序。

从 Junos OS CLI shell 安装支持 veriexec 的加载程序:

  1. 启动 shell。

  2. 使用命令 bootupgrade -l /boot/veloader 安装支持 veriexec 的加载程序。

  3. 您可以在这里看到不同的场景:

    • 使用 request system software add /var/tmp/xxx.tgz no-copy no-validate 命令安装带有指纹的 Junos OS。

    • 如果支持 veriexec 的加载程序不支持以前版本的目标 Junos OS 映像,您可以降级到与该版本兼容的加载程序的早期版本。使用该 request system software add /var/tmp/xxx.tgz no-copy no-validate 命令自动降级到加载程序的早期版本。
    • 使用此 request system software add /var/tmp/xxx 命令检查 Junos OS 软件包是否兼容使用 veriexec 加载程序进行安装。

      在此示例中,您会看到安装已终止,因为 20.3R1 之前的 Junos OS 版本不支持 veriexec 加载程序。