快捷搜索:

了解 AIX V6 中的可信执行环境

小序

在系统安然性方面,内部要挟被觉得比外部要挟具有更高的严重度。系统中存在必要 root 权限才能履行的系统敕令、内核扩展模块和文件。所有这些内容节制着系统的总体安然模型。这些文件是系统关键型文件,它们掉去完备性会要挟到总系一切安然性。

掉去完备性可能导致您在履行 ls 敕令时,不是列出该目录的内容,而是删除了目录中存在的所有文件。还有更糟糕的环境,当您运行完备性受到破坏的 telnet 敕令时,该敕令打开到远程谋略机的 telnet 会话,然则在同时,该敕令存储了您的凭证(用户名和密码),并将它们发送到第三方。

这些场景前进了对安然操作系统的要求,此中只有可托的二进制文件(或 libraries/scripts/shells)才容许运行。AIX V6.1 供给了这样一个安然功能,即可托履行(Trusted Execution,TE)情况。

什么是可托履行情况?

可以将可托履行视为一组监督系统完备性的功能聚拢。可托履行情况掩护一个可托数据库,此中存储有系统关键型文件的相信值。除了这个数据库以外,TE 还实现了安然策略,从而增加了另一个级其余系统安然性。本文稍后的各个部分将具体先容这些功能。

可托履行情况与可托谋略根基之对照

可托谋略根基(Trusted Computing Base,TCB)是 4.1 版今后的 IBM AIX 版本供给的安然功能。可托谋略根基涉及到按期反省系统的完备性(这是应用 cron 功课机制来实现的),以便在特定的光阴距离之后反省系统的完备性。

在运行时反省文件的完备性是异常关键的;是以,建议应用可托履行。运行时可托履行在每次履行敕令时反省敕令的各个紧张属性。

可托履行情况是 IBM AIX V6.1 的高档安然功能,相对付 TCB 供给了以下优点:

可托谋略根基只是一个安装时选项,并且若要在现有的 AIX 谋略机上启用 TCB,您必要从新安装全部 AIX 操作系统。然而,TE 容许在任何时刻启用或禁用完备性反省功能。

可托履行支持在每当履行任何敕令的时刻执交运行时完备性反省,而 TCB 主要履行按期的系统完备性反省。

总而言之,与 TCB 供给的功能比拟,TE 具有更多的功能。

若何启用可托履行情况

可托履行情况功能要求将 AIX V6.1 作为操作系统。它是基础操作系统文件集 bos.rte.security 的一部分。此外,还要确保在该操作系统上安装 CryptoLite for C Library (CLiC) 及其关联的内核扩展。TE 必要这些文件集才能事情。应用以下 lslpp 敕令来反省 CLiC 及其内核扩展是否已安装:bash-2.05b# lslpp -l "clic*"

Fileset           Level State   Description

---------------------------------------------------------------------

Path: /usr/lib/objrepos

clic.rte.includes     4.3.0.0 COMMITTED CryptoLite for C Library

Include File

clic.rte.kernext      4.3.0.0 COMMITTED CryptoLite for C Kernel

clic.rte.lib        4.3.0.0 COMMITTED CryptoLite for C Library

clic.rte.pkcs11      4.3.0.0 COMMITTED PKCS11 Software Token Support

Path: /etc/objrepos

clic.rte.kernext      4.3.0.0 COMMITTED CryptoLite for C Kernel

假如未安装,则应用 smitty 敕令来安装它们。您可以从 AIX Expansion Pack CD 得到这些文件集,或者经由过程 AIX Web Download Pack 计划(请参阅参考资料以得到链接)进行下载。在系统上安装这些文件集今后,应用以下敕令将它们加载到内核中:bash-2.05b# /usr/lib/methods/loadkclic

完成此义务之后,运行以下敕令来启用可托履行。bash-2.05b# trustchk -p te=on

可托履行情况的功能

可托署名数据库 (TSD)

此数据库存储了有关系统关键型文件的所有需要信息,这些文件包括内核履行模块或必要 root 权限才能履行的文件。此数据库缺省位于 /etc/security/tsd/tsd.dat。

在 TSD 中存在其条款的实体 (command / binary / library / script / shell) 称为可托实体,对付这样的可托实体,同时还存储了一个独一的加密散列和数字署名。加密散列是应用 SHA-256 算法来谋略的,数字署名是应用 RSA 算法来天生的。

对付这样的可托实体,对应的散列值和署名是作为其 AIX 可安装文件的一部分进行谋略和分发的,并存储在目标系统上的 TSD 中。

下面让我们看看此中一个可托文件的节:bash-2.05b# /usr/sbin/trustchk -q /usr/bin/chown

/usr/bin/chown:

owner = root

group = bin

mode = 555

type = FILE

hardlinks =

symlinks =

size = 9598

cert_tag = 00af4b62b878aa47f7

signature = 4f5c5a0438148947b716a8fb744f50913f89c1fb38246e8cdcd017533a103aec

7ecc43b31c210b69b7915f961b440bc94124d198bfc6ef1594c62b0cdeedb8917cc08969a460

f686c8abda4cab15ccaf29a2740e5c42c862320a8a88e5073143466738affecbb3129a1689a0

d91cd1da98582425f23512dffa7590113cbca753

hash_value = 2c4e3308996ea6846e67847c47009e0d5d0516b4fed37a0e673c4b835f58958

cd91cd1da98582425f23512dffa7590113cbca753

minslabel =

maxslabel =

intlabel =

accessauths = aix.fs.object.owner

innateprivs = PV_DAC_O,PV_DAC_X,PV_FS_CHOWN

inheritprivs =

authprivs =

secflags = FSF_EPS

t_innateprivs = PV_MAC_R,PV_MAC_W,PV_MIC

因为可托文件的所有上述信息都存储在 TSD 中,是以保护 TSD 至关紧张。为了 TSD 的安然性,可以应用以下敕令来锁定该数据库:bash-2.05b# /usr/sbin/trustchk -p tsd_lock=on

除了缺省的 TSD 文件 (/etc/security/tsd/tsd.dat) 以外,还可以参考一个替代数据库来反省可托文件完备性(在上面的敕令中应用 -F 选项),该数据库可以保存在某个安然的位置。

审核 TSD 的完备性(系统完备性反省)

为了履行系统完备性反省,可以应用 /usr/sbin/trustchk 敕令将实际文件属性值(例如署名、散列等等)与该数据库中的值进行匹配,从而反省所有可托文件的完备性。/usr/sbin/trustchk [-l] [-r] {-n | -t | -y}

{filename...| ALL}

–n

在这种审核模式下,对付指定的单个可托文件或所有文件,将申报而不是修复实际值与 TSD 中存储的值之间的所有差异。

–t

在这种审核模式下,对付指定的单个可托文件或所有文件,将申报所有差异并提示是否要修复差错。

–y

在这种审核模式下,对付指定的单个可托文件或所有文件,将修复并申报差异。只有一些常见差异才能修复,并非所有差异都能修复。例如,假如散列值不匹配,则这种模式将不修复该差异;相反,它将使该文件弗成造访。这种模式应该慎用,由于假如发明任何严重差异,它可能使文件弗成造访。

对付所有这些选项,可以应用关键字 ALL 来反省 TSD 中的所有条款。

此功能基础上便是系统审核,可以由系统治理员按期履行。

鄙人面的示例中,我们将反省 /usr/bin/hostname 敕令的完备性,这是一个系统敕令,其条款已经在 TSD 中。-bash-2.05b# ls -l /usr/bin/hostname

-r-xr-xr-x  1 bin   bin      4288 Oct 05 2007 /usr/bin/hostname

-bash-2.05b# trustchk -y /usr/bin/hostname

-bash-2.05b#

请留意,trustchk -y 在上述履行历程中没有给出任何消息,这意味着该敕令的完备性获得了保护。

下面将 /usr/bin/hostname 敕令调换为 /usr/bin/cd 敕令,然后考试测验反省完备性:-bash-2.05b# cp /usr/bin/hostname /usr/bin/hostname.orig

-bash-2.05b# cp /usr/bin/cd /usr/bin/hostname

-bash-2.05b# /usr/sbin/trustchk -y /usr/bin/hostname

Verification of attributes failed: size

Verification of attributes failed: hash

Verification of attributes failed: signature

Verification of stanza failed: /usr/bin/hostname

-bash-2.05b#

上面的消息注解,敕令 /usr/bin/hostname 已经被破坏。

还要务必留意的是,/usr/bin/hostname 敕令的模式已经变动,并且已经变得弗成造访。发生这种环境是由于应用了“-y”标志。独一的办理法子是删除坏的敕令二进制并复制新的二进制。-bash-2.05b# ls -l /usr/bin/hostname

---------T  1 bin   bin      1457 May 29 08:09 /usr/bin/hostname

-bash-2.05b#

经由过程设置设置设备摆设摆设安然策略来执交运行时完备性反省

可托履行的至关紧张功能之一是在运行时反省可托文件的完备性。启用运行时完备性反省今后,在履行敕令时将完成以下步骤。

在二进制加载时代,系统加载法度榜样调用 TE 子系统,并应用 SHA-256 散列算法来谋略散列值。

现在对付这同一个二进制,将提取 TSD 中存储的散列值并与运行时谋略的散列值进行匹配。

假如两个值匹配,则容许该二进制履行。

假如两个值不匹配,则意味着该文件已被窜改或变动。在这种环境下,将根据所设置设置设备摆设摆设的策略来采取行动。

运行时完备性反省是应用 trustchk 敕令的 -p 选项来设置设置设备摆设摆设的。请参考以下语法:trustchk -p {

[ TE [= ON | OFF ] ]

[ CHKEXEC [=ON | OFF ] ]

[ CHKSHLIB [ =ON | OFF ] ]

[ CHKSCRIPT [ =ON | OFF ] ]

[ CHKKERNEXT [ = ON | OFF ] ]

[ STOP_UNTRUSTD [ = ON | OFF ] ]

[ STOP_ON_CHKFAIL [ = ON | OFF ] ]

[ TEP [ = ON | OFF | PathList ] ]

[ TLP [ = ON | OFF | PathList ] ]

[ TSD_FILES_LOCK [ = ON | OFF ] ]

[ TSD_LOCK [ = ON | OFF ] ] }

IBM AIX V6.1 供给了某些可设置设置设备摆设摆设用于运行时完备性反省的策略。当 binaries/libraries/scripts 和内核扩展的完备性反省已掉败时,这些策略将抉择其命运。

可以设置设置设备摆设摆设以下策略:

TE 这是启用或禁用可托履行功能的主策略。只有启用此策略之后,才能实现其他策略。

要激活 TE 策略,可以履行以下敕令:bash-2.05b# /usr/sbin/trustchk -p te=on

CHKEXEC 此策略确保在加载时反省可托二进制文件的完备性。 CHKSHLIB 在将可托共享库加载到内存中履行之前反省它们的完备性。 CHKSCRIPT 在将可托 Shell 脚本加载到内存中之前反省它们的完备性。 CHKKERNEXt 在将内核扩展加载到内存中之前反省它们的完备性。 STOP_UNTRUSTED 此策略阻拦对不在 TSD 中的实体(可所以 executable/libraries/scripts 或内核扩展)进行加载。是以,此策略与 CHK* 策略协同事情。例如,假如 CHKSCRIPT=ON 并且 STOP_UNTRUSTED=ON,则不属于 TSD 的脚本将不会履行。 STOP_ON_CHKFAIL 此策略在可托文件(与上面的实体相同)的完备性反省掉败时竣事那些文件的加载。此策略与 CHK* 策略协同事情。例如,假如 CHKEXEC=ON 并且 STOP_ON_CHKFAIL=ON,则不会加载任何完备性反省掉败的可履行文件。 TSD_LOCK 此策略将锁定 TSD,然后将无法经由过程 /usr/sbin/trustchk 敕令来操作 TSD。 TSD_FILES_LOCK 锁定所有的可托文件,一旦实现了此策略,则不能对那些文件做出任何变动。 TEP 应用此策略,我们可以设置 TE 路径的值,启用该值,或者禁用该值。TE 路径是冒号分隔的目录路径列表。一旦设置设置设备摆设摆设了此策略,则只有属于设定的路径的可履行文件才容许履行。 TLP 与 TEP 一样,可以应用此策略来设置可托库路径的值,以及启用或禁用该值。TLP 是冒号分隔的目录路径。一旦启用此策略,则只有属于 TLP 的库才会加载到内存中。

TEP 和 TLP 是 TE 策略;它们与下一部分将要先容的“可托履行路径”和“可托库路径”功能不合。为了应用这些策略,您必要启用主 TE 策略。

下面看一个关于若何经由过程设置设置设备摆设摆设策略 TE、CHKEXEC 和 STOP_ON_CHKFAIL 来启用运行时完备性反省的示例。首先,我们将反省策略确当前状态,然后启用这些策略。-bash-2.05b# /usr/sbin/trustchk -p TE CHKEXEC STOP_ON_CHKFAIL

TE=OFF

CHKEXEC=OFF

STOP_ON_CHKFAIL=OFF

-bash-2.05b# /usr/sbin/trustchk -p TE=ON CHKEXEC=ON STOP_ON_CHKFAIL=ON

-bash-2.05b# /usr/sbin/trustchk -p TE CHKEXEC STOP_ON_CHKFAIL

TE=ON

CHKEXEC=ON

STOP_ON_CHKFAIL=ON

-bash-2.05b#

下面,我们将运行 /usr/bin/ls 敕令(其条款已经在 TSD 中),目的只是为了确保容许履行该敕令。-bash-2.05b# /usr/bin/ls

.bash_history   bin        mnt        tftpboot

.profile     dev        opt        tmp

.rnd       etc        proc       u

.sh_history    home       sbin       unix

.vi_history    lib        smit.log     usr

admin       lost+found    smit.script    var

audit       lpp        smit.transaction

-bash-2.05b#

将 /usr/bin/ls 二进制文件调换为 /usr/bin/chmod 二进制文件。考试测验运行 /usr/bin/ls 敕令。这一次,履行应该会掉败。请拜见下面的序列:-bash-2.05b# cp /usr/bin/ls /usr/bin/ls.orig

-bash-2.05b# cp /usr/bin/chmod /usr/bin/ls

-bash-2.05b# /usr/bin/ls

-bash: /usr/bin/ls: Cannot run the specified program in a trusted environment.

-bash-2.05b#

是以,运行时完备性反省在该系统上有效。假如任何特洛伊木马或其他病毒变动了任何二进制文件,则该二进制文件的履行将被回绝。

可托履行路径和可托库路径

除了可托敕令以外,TE 情况还支持可托履行路径和可托库路径。此外,与在可托谋略根基中一样,TE 情况还支持可托 Shell 和安然留意键(Secure Attention Key,SAK)的观点。

可托履行路径(Trusted Execution Path,TEP)指定可托目录路径的列表。只有属于这些路径的可履行文件才容许履行。

要反省当前的可托路径列表和 TEP 的状态,可以运行以下敕令:bash-2.05b# /usr/sbin/trustchk -p tep

TEP=OFF

TEP=/usr/bin:/usr/sbin:/etc:/bin:/sbin:/sbin/helpers/jfs2:/usr/lib/instl:/usr/ccs/bin

要启用 TEP,可以履行以下敕令:bash-2.05b# /usr/sbin/trustchk -p tep=on

一旦启用了 TEP,则应该显示类似如下的内容:bash-2.05b# /usr/sbin/trustchk -p tep

TEP=ON

TEP=/usr/bin:/usr/sbin:/etc:/bin:/sbin:/sbin/helpers/jfs2:/usr/lib/instl:/usr/ccs/bin

可托库路径(Trusted Library Path,TLP)指定可托目录路径的列表。只有在 TLP 中的库才加载到内存顶用于履行。可以应用如下敕令反省 TLP 的状态:bash-2.05b# /usr/sbin/trustchk -p tlp

TLP=OFF

TLP=/usr/lib:/usr/ccs/lib:/lib:/var/lib

要启用 TLP,可以履行以下敕令:bash-2.05b# /usr/sbin/trustchk -p tep=on

启用 TLP 今后,应该显示类似如下的状态:bash-2.05b# /usr/sbin/trustchk -p tlp

TLP=ON

TLP=/usr/lib:/usr/ccs/lib:/lib:/var/lib

可托履行是若何事情的?

图 1. 可托敕令的实时可托履行概述

可以在可托敕令的实时履行情况中运用可托履行。每当在敕令提示符下输入(或由某个脚本调用)某个可托敕令,首先将由操作系统谋略散列值(请拜见图中的 2),并从 TSD 中提取可托敕令的实际散列值 (3)。仅当两个散列值匹配时,才容许履行该敕令。

停止语

可托履行情况是 IBM AIX V6.1 中供给的等候已久的安然功能。本文先容了该功能的基础要素,涵盖基础的功能和示例。该功能使 AIX 系统治理员可以练习他们的安然技能以进一步使用该功能。

您可能还会对下面的文章感兴趣: