Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Veriexec 概述

已验证执行(也称为 veriexec)是一种文件签名和验证方案,可保护 Junos 操作系统 (OS) 免受可能危及设备完整性的未经授权软件和活动的侵害。veriexec 最初是为 NetBSD OS 开发的,后来针对 Junos OS 进行了调整,并从 Junos OS 7.5 版开始默认启用。

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

请注意,/ bin/sh 不需要经过验证的输入。它可用于运行任意脚本,因为从风险的角度来看,它们与交互式命令相同,后者已经通过用户身份验证和权限进行控制。但是,如果经过验证的 shell 脚本包含运行任意脚本(即清单中没有签名的文件)的指令,则将阻止执行该文件。

Veriexec 的工作原理

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

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

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

日志消息采用以下格式:

指纹不匹配表示文件已被修改。不要尝试运行该文件。它可能包含损坏的代码。联系 JTAC。

Veriexec 的重要性

Veriexec 是一种有效且重要的工具,可防止那些试图破坏瞻博网络路由器、交换机和防火墙系统安全的人。它可以阻止可能想要在系统上站稳脚跟、获得持续未经授权的访问或以其他方式将系统转换为故障状态的威胁参与者。如果此类参与者可以运行任意未签名的二进制文件,则他们可以进行未经授权的修改并运行违反安全策略的恶意软件或其他代码。

客户可以使用 JET SDK 将强制执行 veriexec 的签名和授权代码添加到 Junos OS。有关 SDK 解决方案的更多信息,请参阅《瞻博网络扩展工具包开发人员指南》中的开发设备上 JET 应用程序

如何验证是否在运行 Junos OS 的设备上强制执行 Veriexec

以下小节提供了有关如何检查是否强制执行 veriexec 的过程。

某些 Junos OS 平台提供禁用 veriexec 强制的 Junos OS 可选版本(称为 Junos 增强自动化或 Junos Flex)。有关 Junos 增强型自动化的详细信息,请参阅运行具有增强自动化功能的 Junos OS 的设备上的 Junos 自动化增强功能概述

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

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

  1. 启动外壳程序。

  2. 使用 sysctl security.mac.veriexec.state 命令。

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

注意:

security.mac.veriexec.state 命令仅在 Junos OS 15.1 版及更高版本中有效。

检查Veriexec是否正常工作的另一种方法

您可以通过将授权文件(此处为 / usr/bin/id)复制到新位置来确认 veriexec 是否正常工作,如下所示。Veriexec 阻止该操作,因为尽管 / usr/bin/id 存在有效的指纹,但即使文件相同,也没有 / tmp/id 的指纹。正在发生的事情是,veriexec 评估文件的底层 Linux 属性,这些属性在复制后并不相同,而不是文件本身。

  1. 启动外壳程序。

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

结果

如果正在强制执行 veriexec,则会显示身份验证错误。否则,文件将正常运行。

强制执行 veriexec 时的输出(文件被阻止):

未强制执行 veriexec 时的输出(复制文件):

适用于 SRX 系列设备的支持 Veriexec 的加载程序

支持 veriexec 的加载程序使用 TFTP 服务器或 USB 存储设备中的命令安装 install Junos OS 映像。

  • 使用 install 命令从 install tftp://[host]/ tftp 服务器安装 Junos OS 映像。

  • 使用安装命令从 install file:/// USB 存储设备安装 Junos OS 映像。

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

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

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

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

  1. 启动外壳程序。

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

  3. 您可以在此处看到不同的方案:

    • 对于 Junos OS 20.3R1 版及更高版本,请使用命令正常 request system software add /var/tmp/xxx.tgz no-copy no-validate 安装带指纹的 Junos OS。

    • 对于 20.3R1 之前的 Junos OS 版本,如果正在使用支持 veriexec 的加载程序,并且支持 veriexec 的加载程序不支持以前版本的目标 Junos OS 映像,请使用命令 request system software add /var/tmp/xxx.tgz no-copy no-validate 从支持 veriexec 的加载程序自动降级到旧加载程序。

    • 使用命令检查 request system software add /var/tmp/xxx Junos OS 软件包是否与安装兼容。

      安装将终止,因为 20.3R1 之前的 Junos OS 版本不支持支持 veriexec 的加载程序。