020-29133788
    资 讯
    您的位置:首页 >> 资 讯 >> 操作系统 >> 系统维护 >> 正文
    如何使用 Tripwire?

    点击:   发布日期:2013-01-04

    本文来自 www.020fix.com

    对于可疑行为您可以设定防火墙、监控网络连接埠及观察系统日志档。但是,就算您尽了全力,入侵者仍有可能成功闯入 OpenLinux 系统,留下后门并设下陷阱,这样就会使您的系统在消除入侵者闯入的原始漏洞后很久仍然不安全。可以使用 Tripwire 来保护系统免受隐藏安全漏洞的损害。

    Tripwire 是一个由 Tripwire Security Systems, Inc. (http://www.tripwire.com) 维护的安全软体套装程式。该公司还支援在 OpenLinux 和其他 Linux 系统上执行的 Tripwire 的开放源代码版本(可从 http://www.tripwire.org 上获取)。

    Tripwire 的工作是在系统处于安全状态时拍摄一张系统快照(最好在作业系统刚安装好后),检查关键系统指令、配置档案和装置,并各自被指定一个唯一的总和检查值。每次执行 Tripwire 检查系统时,均会为每个档案生成新总和检查值并与旧总和检查值进行比较。如果程式已被取代或配置档案已被修改,则 Tripwire 会就此变更发出报警。如果变更来自入侵者,则可删除受损档案并用乾淨的副本取代之。

    您对 Tripwire 的主要配置工作是修改 Tripwire 策略档案(位于 /etc/tripwire/twpol.txt 中)。该档案包含一个清单,其中列出 OpenLinux 中重要的二进位档案、配置档案和日志档,这些档案在执行 Tripwire 时被划分为不同的类别。该类别确定档案的重要程度和检查档案的方式。

    若要设定 Tripwire 来保护 OpenLinux,需要进行以下操作:

    编辑 Tripwire 策略档案 (/etc/tripwire/twpol.txt),使其包含需检查档案的完整清单。有关的详细资讯,请参阅「建立策略档案」部份。
    如果需要修改与基本 Tripwire 配置档案相关的任何资讯(如 Tripwire 档案的位置和影响 Tripwire 运作方式的选项),请编辑 Tripwire 配置档案 (/etc/tripwire/twcfg.txt)。有关的详细资讯,请参阅「编辑 Tripwire 配置档案」部份。
    执行 Tripwire 安装指令档 (/etc/tripwire/twinstall.sh) 以完成安装。有关的详细资讯,请参阅「执行 twinstall.sh 指令」部份。
    安装 Tripwire 之后,可以用几种不同的模式执行 Tripwire 指令来配置和检查 OpenLinux 系统的完整性。可用的模式包括:

    资料库起始化模式 -- 透过建立 Tripwire 监视的所有目录和档案的总和检查值,起始化 Tripwire 资料库。
    资料库完整性模式 -- 对比 Tripwire 资料库(假设该资料库是在系统处于安全状态时起始化的)检查目前系统的完整性。
    使用 Tripwire 一段时间后,您可能想变更配置档案,而且肯定要变更策略档案。使用 twadmin 指令可以对配置和策略档案解密/解除标记,进行所需变更后再加密/重新标记,使其保持安全。

    建立策略档案
    Tripwire 策略档案的内容是定义在 OpenLinux 系统上需要检查哪些档案的完整性以及某个档案被变更时其报警的严重程度。若要确保系统已获得适当的保护,则需要非常谨慎地彻底设定该档案。

    Tripwire 随附一个在开始时使用的示例策略档案。该档案位于:

    /etc/tripwire/twpol.txt

    若要变更该档案,请在任何文字编辑器中以 root 使用者身份开启之。该档案会将其内容分为不同类别。参考档案中的注释有助于对该档案进行配置。还有一个 Tripwire 策略指南档案 (/usr/doc/tripwire/policyguide.txt) 可作为策略档案中使用的语法参考指南。

    预设情况下,twpol.txt 档案包含与完整安装 OpenLinux 相关的所有档案。因此,如果执行 Tripwire 以起始化使用未变更的策略档案的 Tripwire 资料库,可能会接收到找不到档案的讯息。若要减少对错误讯息的假警报数量,请用注释取消 (#) 所有检查电脑上不存在档案的行。稍后会说明此过程。

    瞭解策略档案检查定义
    由 Tripwire 基于策略档案规则检查的那些档案由属性定义分组到 twpol.txt 中。根据使用档案的方法及变更可能带来的安全威胁,这些属性定义允许按不同方法检查档案。以下是 twpol.txt 中的属性定义:

    关键 (SEC_CRIT) -- 包含不能变更的关键系统档案。/bin 和 /sbin 目录中的许多系统管理、网络和使用者指令都属于该类别。
    设定 UID (SEC_SUID) -- 包含在特殊使用者许可下执行的指令,即使该指令没由这位使用者执行。这也被称作「设定 UID」程式。(由于「设定 UID」程式会增加安全风险,所以 OpenLinux 系统上的这种程式应该很少。)
    ReadOnly (SEC_BIN) -- 包含仅供管理员阅读的二进位和配置档案。
    配置档案 (SEC_CONFIG) -- 包含极少作出变更的配置档案。然而,这些档案一般是存取频繁的档案。这些档案包含在启动时或登入会话开始时执行的配置档案。
    日志档 (SEC_LOG) -- 包含持续不断地接收和储存新日志讯息的档案。虽然该档案大小可不断增长,但所有权权限不应变更。
    目录 (SEC_INVARIANT) -- 包含永远不能变更所有权和存取权限的目录。
    Tripwire 执行时,如果档案以不应有的方式作出了变更,那么报警输出会分为三种类别显示在「Tripwire 完整性报告」中。这些类别包括:

    低重要性 (SIG_LOW ) -- 因为该档案不关键,所以对安全的影响很小。对 /tmp 目录的变更就是例子。
    中等重要性 (SIG_MED) -- 属于本类别中的大多数项目都是内容可能发生很多变更的目录,但所有权并没有变更。这些目录中包括 /home 和 /etc 目录。
    高度重要性 (SIG_HI) -- 因为任何已受损的可执行档案在执行时都潜在地可能导致损坏,所以大多数由 Tripwire 检查的管理和使用者指令均属于本类别。
    开始编辑 twpol.txt 建立 Tripwire 策略之前,应先瞭解一些该档案中使用的语法。

    瞭解策略档案语法
    大多数策略档案中的规则说明的是要检查的档案或目录,以及要执行的检查类型。这些规则按 Tripwire 对检查到违犯的回应方式(HI、MED 或 LOW)进一步分组。以下是一条规则的常见范例:

    /sbin/fsck -> $(SEC_CRIT) ;

    该行显示 /sbin/fsck 指令是作为关键档案(SEC_CRIT 属性群组)检查的。twpol.txt 中的大多数行都是采用这种形式。每个群组的属性在 twpol.txt 档案的开头部份定义。以下是 SEC_CRIT 的设定方式:

    SEC_CRIT = $(IgnoreNone) -SHa ; # Critical files that cannot change

    IgnoreNone 值表示应检查此档案的所有属性。相当于键入 +pinusgamctdbCMSH。所有那些字母都是可由 Tripwire 检查的特定属性。

    您可以定义自己的属性,用于指定到群组定义中或变更现有的属性。或者,如果有个别档案或目录要检查,可将其属性直接新增到规则行中。以下列出 Tripwire 可以检查的属性(这些属性亦在 policyguide.txt 中列出):

    表格 13. 策略档案 (twpol.txt) 可用的属性 属性 描述
    +a 存取时间戳记
    +b 区块号码
    +c 档案索引时间戳记(建立/修改)
    +d 档案索引储存磁盘装置号码
    +g 档案所有者的群组 ID
    +i 档案索引号码
    +m 修改时间戳记
    +n 档案索引参考计数
    +p 权限和档案模式位元
    +r 装置号码
    +s 档案大小 /etc/passwd
    +t 档案类型
    +u 档案所有者的使用者 ID
    +l 大小增加的档案
    +C CRC-32 杂乱资讯值
    +M MD5 杂乱资讯值
    +S SHA 杂乱资讯值
    +H Haval 记号值

    设定 SEC_INVARIANT 群组的范例提供了对几个属性进行检查的例子:

    SEC_INVARIANT = +tpug ;

    该群组用于检查与目录(如根目录 (/)、/home 和 /etc)相关的属性是不是变更项。该范例显示检查每个目录的档案类型 (t)、权限和档案模式位元 (p)、档案所有者使用者 ID (u) 和档案所有者群组 ID。

    若要将特定档案排除在 Tripwire 检查之外,可以使用惊叹号 (!)。以下两行指令可以避免检查 /boot/System.map 和 /boot/module-info 档案。

    !/boot/System.map ;

    !/boot/module-info ;

    可以使用惊叹号排除系统重新启动时进出的档案。

    瞭解策略档案类别
    为了更加便于追踪 Tripwire 所检查的档案和目录类型,这些项目被分组为几种类别。这些类别更加便于 Tripwire 向档案群组指定 HI、MED 和 LOW 优先级。以下提供 twpol.txt 中类别的清单:

    档案系统和磁盘管理 -- 包括管理档案和磁盘的公用程式,如 mkfs、restore、mount、rm、chmod、cp 和许多其他指令。
    核心管理程式 -- 包括管理核心功能和模组的指令,如 adjtimex、insmod 和 modinfo。
    网络程式 -- 包括关键的网络管理程式,如 ipchains、getty、iptunnel、portmap 和 route。
    系统管理程式 -- 包括很多基本的系统管理程式,如 shutdown、init 和 syslogd。
    硬体和装置控制程式 -- 包括管理硬体装置的程式,如 cardmgr 和 hwclock。
    系统资讯程式 -- 包括显示系统资讯的程式,如 kernelversion 和 runlevel 指令。
    应用程式资讯程式 -- 包括几个检查符号连结和生成符号版本资讯的外部指令。
    OS 公用程式 -- 包括很多来自 /bin 的最终使用者指令,如 cat、date、echo、hostname、ls 和 sort。
    关键公用程式符号连结 -- 包括重要的系统公用程式,这些公用程式实际是到其他指令的符号连结。
    临时目录 -- 包括经常变更的临时档案的目录,如 /tmp 和 /var/tmp。
    本机档案 - 包括的目录如 /sbin /usr/bin 和 /usr/sbin,本机系统的二进位程式储存在这些目录中。还可以包括本机外壳、安全档案、启动指令档、登入指令档和本机库。
    关键系统启动档案 - 包括启动档案,如 /boot 和 /sbin/lilo,以及系统每次启动时均会变更的装置和其他档案。
    关键配置档案 - 包括专用于系统配置的配置档案(这种档案大多位于 /etc 目录或其子目录中)。
    关键装置 - 包括来自 /dev 和 /proc 的关键装置档案。
    编辑策略档案
    因为 twpol.txt 中包含完整安装 OpenLinux 的所有档案,所以如果要安装较少的套装程式,很可能需要从清单中删除一些档案。然而,如果要新增不属于 OpenLinux 发行版部份的软体套装程式,就应该考虑检查这些档案。任何可能被入侵者删改了的可执行档案,都可能将执行该程式的人的身份传递给入侵者。

    编辑 Tripwire 配置档案
    Tripwire 配置档案 (/etc/tripwire/twcfg.txt) 包含多个 Tripwire 选项。以下是一个 twcfg.txt 档案的范例:

    ROOT =/usr/sbin

    POLFILE =/etc/tripwire/tw.pol

    DBFILE =/var/lib/tripwire/$(HOSTNAME).twd

    REPORTFILE =/var/lib/tripwire/report/$(HOSTNAME)-

    $(DATE).twr

    SITEKEYFILE =/etc/tripwire/site.key

    LOCALKEYFILE =/etc/tripwire/ducks.handsonhistory.com-

    local.key

    EDITOR =/bin/vi

    LATEPROMPTING =false

    LOOSEDIRECTORYCHECKING =false

    MAILNOVIOLATIONS =true

    EMAILREPORTLEVEL =3

    REPORTLEVEL =3

    MAILMETHOD =SENDMAIL

    SYSLOGREPORTING =false

    MAILPROGRAM =/usr/lib/sendmail -oi -t

    您能够以 root 使用者身份,使用任何文字编辑器变更该档案中的任何资讯。不过您可能并不想变更档案中的太多资讯,因为该档案可用于提醒您 Tripwire 档案和目录放在何处,选项的设定有何不同。

    该档案包括策略档案 (POLFILE)、资料库档案 (DBFILE)、报告档案 (REPORTFILE)、站台金钥 (SITEKEYFILE) 和本机金钥档案 (LOCALKEYFILE) 的位置。您可以变更 Tripwire 的一些运作方式,如 LATEPROMPTING(如果设定为真,密码片语提示将会尽可能推迟到最后时刻,从而不将密码片语存入记忆体)和 LOOSEDIRECTORYCHECKING(如果设定为真,会防止报告仅仅因变更该目录内的档案而产生的目录变更)。

    还有数个可变更的值与电子邮件和错误日志报告有关。MAILNOVIOLATIONS 即使在没发现危害的情况下也会给管理员发送电子邮件。EMAILREPORTLEVEL 和 REPORTLEVEL 设定错误讯息级别(从 1 到 4),该错误资讯级别会分别透过电子邮件传送给管理员并输出到「Tripwire 完整性检查」报告中。MAILMETHOD 和 MAILPROGRAM 分别将 SENDMAIL 设施和 sendmail 程式定义为邮寄方式。SYSLOGREPORTING 设定为真时,会将表示 Tripwire 何时执行的讯息传送到系统日志装置中进行记录。

    执行 twinstall.sh 指令
    最初建立加密的 Tripwire 配置档案时,需要执行 /etc/tripwire/twinstall.sh 指令档。在此过程中,twinstall.sh 会要求您建立本机和站台密码片语。这些密码片语以后将用于建立、检查和升级 Tripwire 资料库。以下是一个 twinstall.sh 会话的过程:

    以 root 使用者身份键入以下指令:
    /etc/tripwire/twinstall.sh

    输出结果会告诉您 twinstall.sh 正在建立金钥档案并要求按以下方式输入站台金钥档案密码片语:

    Enter the site keyfile passphrase: **********

    Verify the site keyfile passphrase:**********

    按提示键入站台金钥档案密码片语以保护 Tripwire 档案,然后按要求再键入一次。金钥生成完成后,会按以下方式要求您输入本机金钥档案密码片语:
    Enter the local keyfile passphrase:**********

    Verify the local keyfile passphrase:**********

    按提示键入本机金钥档案密码片语以保护 Tripwire 档案,然后按要求再键入一次。此时已建立 /etc/tripwire/tw.cfg。随后会按以下方式要求您输入站台密码片语:
    Please enter your site passphrase:

    按提示键入站台密码片语。 建立了 /etc/tripwire/tw.pol 档案。
    现在建立 Tripwire 资料库的准备已就绪。

    建立 Tripwire 资料库
    若要为 OpenLinux 系统建立 Tripwire 资料库,需要使用带 --init 选项的 Tripwire 指令。Tripwire 资料库提供了一个用于与将来系统检查进行比较的基准。将来以检查模式 (--check) 执行 Tripwire 时,会看到一个所侦测到的差异清单。那些档案应作为非法进入可能造成的潜在危害来检查。

    从外壳上以 root 使用者身份键入以下指令来建立 Tripwire 资料库:

    tripwire --init

    所有在策略档案中建立的档案都将受到检查。然后建立总和检查值来唯一地办识每个档案所处的状态。包含这些总和检查值的资料库被复制到 /var/lib/tripwire/host.domain 档案中,此处 host.domain 应被所用主机的完整网域名称取代。

    第一次建立资料库后检查档案时,可能会看到一些错误。这些错误是由未安装到系统上的档案产生的。此时需要从策略档案中删除不存在档案的输入项。有关变更和更新策略和配置档案过程的资讯,请参阅「更新策略或配置档案」。

    采用 Tripwire 检查系统
    任何时候,只要建立了与系统相符的策略档案并建立了工作的 Tripwire 资料库后,就可以执行带 --check 选项的 Tripwire 来检查系统。该检查结果就是「Tripwire 完整性检查报告」。若要执行该报告,请以 root 使用者身份,从外壳上键入以下指令:

    tripwire --check

    所有列在策略档案中的档案都将基于为每个档案定义的属性进行检查。例如,Tripwire 所检查的属性有:每个档案是否存在、是否未变更所有权、权限位元是否相同以及修改日期是否未变更。

    瞭解「完整性检查报告」
    该报告显示于萤幕上,也是以唯一的名称放置在目录 /var/lib/tripwire/report 下的加密档案中。该名称包含完整的主机名称和一组代表目前日期和时间的数字。报告分为四个主要部份:

    报告总结 -- 本部份包含主机名称、主机 ID 和电脑的 IP 位址。还列出策略档案、配置档案和资料库档案的位置,以及执行产生该报告的指令行。以下是一个「报告总结」的范例:
    使用的策略档案:/etc/tripwire/tw.pol

    使用的配置档案:/etc/tripwire/tw.cfg

    ============= 报告总结:=================

    主机名称:d.xyzcorp.com

    主机 IP 位址: 198.162.0.51

    主机 ID:无

    使用的资料库档案:/var/lib/tripwire/d.xyzcorp.com.twd

    使用的指令行:tripwire --check

    规则总结 - 本部份包含一张图表,显示在每个类别中已新增、删除或修改的档案的总数。该总结显示变更档案数的总和。
    物件总结 - 本部份显示已变更哪些单个档案。应检查每个档案以确保该档案未被篡改。
    错误报告 - 本部份显示所遇错误的清单。特别是可以看到一个档案清单,这些是策略档案中从最初的资料库起始化直到现在都没有发现的档案。
    列印「完整性检查报告」
    如果要在以后检视该报告,可使用以下 twprint 指令显示该报告:

    twprint --print-report -r /var/lib/tripwire/report/rpt

    在本范例中,「rpt」由要列印报告的名称取代。因为报告名称中会使用日期/时间戳记,所以最后的报告显示的是最新情况。

    更新策略或配置档案
    从系统中修改、新增或删除档案时,需要更新策略档案 (twpol.txt)。可能还要变更配置档案 (twcfg.txt) 中的某些设定。更新该档案就不会重复看到相同的错误讯息了(许多这些错误并不是真正的错误)。若要建立新的策略和配置档案,请执行以下步骤:

    以 root 使用者身份,对加密的策略和配置档案解密,然后执行以下两个指令,将结果输出为纯文字档案:
    twadmin --print-polfile > /etc/twpol.txt

    twadmin --print-cfgfile > /etc/twcfg.txt

    以 root 使用者身份使用文字编辑器开启 /etc/twpol.txt 和 /etc/twcfg.txt 档案。作出任何需要的变更以反映系统上需检查的档案 (twpol.txt),或变更配置选项 (twcfg.txt)。
    执行以下 twadmin 指令以更新加密的策略和配置档案:
    twadmin --create-polfile -S /etc/tripwire/site.key /etc/tripwire/twpol.txt

    twadmin --create-cfgfile -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt

    得到提示后输入密码片语。如果该指令成功,它会告知已成功写入一个新策略档案。
    透过键入以下指令重新起始化 Tripwire 资料库:
    tripwire --init

    新资料库现在应该已经设定完成,可以准备执行下一个检查了。

    总结
    Tripwire 套装程式让您获得可作为系统安全基准使用的 OpenLinux 系统快照。可依据该基准定期对目前系统执行检查,以瞭解是否有人篡改了关键的系统程式和配置档案。