tripwire

    技术2024-05-28  115

    开源Tripwire®是一个文件完整性检查程序包,已经存在了很多年,尽管我在Linux®发行版中使用了很多次,但直到最近我才开始在AIX®上使用它。 这主要是由于以下原因:

    使用gcc AIX版本进行编译很麻烦。 我更喜欢使用AIX内置审计服务。

    但是,由于现在有用于AIX的Tripwire rpm,因此我将其用于某些AIX机器。 Tripwire并未提供基于文件更改的入侵者检测的完整解决方案,但结合运行AIX审核,它提供了牢固的安全策略。 Tripwire通过在主策略文件中提供的对象来监视系统中文件和目录的更改。 这些更改可能是但不限于:

    索引节点 时间戳记 文件大小 文件权限和所有权属性 散列值 文件类型

    它报告与Tripwire先前运行相比的更改,您可以在其中比较先前运行的报告。 如果文件已被更改,删除或添加,则需要系统管理员进行进一步调查,以确定它是有效的更改还是某些应用程序或用户的强制更改。

    与其他入侵者检测系统(IDS)相比,Tripwire确实有其不足之处。 但是,由于它是开源的,因此这些缺点很快就被忘记了。 有一个商用的Tripwire产品,但是在本演示中,我将只关注开源版本。 我还将AIX 7.1与Tripwire 2.4.1版一起使用。 请参阅“ 相关主题”部分,以了解在何处下载Tripwire rpm。 下载后,请确保已安装以下必备的rpm:

    libgcc-4.6.1-1.aix7.1.ppc.rpm libstdc++-4.6.1-1.aix7.1.ppc.rpm (openssl-1.0.0d-1.aix5.1.ppc.rpm)

    Tripwire还需要openssl; 大多数AIX机器都应该已经安装了该工具。 如果使用的是SSH,请确保至少具有0.9.8版。 使用以下方法检查您的版本:

    # openssl OpenSSL> version OpenSSL 0.9.8m 25 Feb 2010 OpenSSL> quit

    接下来,安装Tripwire:

    # rpm -ivh tripwire-2.4.2-1-1.aix5.1.ppc.rpm tripwire ##################################################

    安装后,Tripwire二进制文件位于/opt/freeware/sbin 。

    tripwire-check atcadmin tripwire tripwire-setup-keyfiles reprint

    策略文件位于/etc/tripwire 。 twcfg.txt文件定义了Tripwire使用的变量(例如,tripwire报告文件的位置,邮件,报告级别)。 twpol.txt策略文件告诉Tripwire要监视哪些文件。

    第一步是根据要监视的文件量身定制策略文件。 Tripwire附带的twpol.txt文件适用于Linux发行版,您需要确保它涵盖了要监视的文件。 如果您忘记了定制此策略文件,则会报告不存在的文件的错误。 生成自己的策略文件(特定于自己的安全标准策略)可以更快。 本文演示了如何生成初始基准策略。 我不会讨论Tripwire的所有功能,例如严重性级别和电子邮件条件,而是讨论如何使用自行生成的策略文件来满足您的需要并报告违反文件的行为,并使用Tripwire进行运行。

    配置Tripwire

    twcfg.txt的内容如下所示。 由于Tripwire抱怨目录权限可能不适用于您的AIX机器,因此该文档建议(我同意)更改:

    LOOSEDIRECTORYCHECKING = false

    LOOSEDIRECTORYCHECKING = true

    您可能还想更改DBFILE和REPORTFILE的位置以适合您的位置标准:

    ROOT =/opt/freeware/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/$(HOSTNAME)-local.key EDITOR =/usr/bin/vi LATEPROMPTING =false LOOSEDIRECTORYCHECKING =false MAILNOVIOLATIONS =true EMAILREPORTLEVEL =3 REPORTLEVEL =3 MAILMETHOD =SENDMAIL SYSLOGREPORTING =false MAILPROGRAM =/usr/sbin/sendmail -oi -t

    如果您的主机名不可解析,则必须将本地主机名通知Tripwire。 编辑twpol.txt文件; 在第64行附近有一个条目:

    HOSTNAME=;

    在“ =”之后附加您的主机名。 例如,我的AIX框的主机名是rs6000,因此更改为:

    HOSTNAME=rs6000;

    保存并退出文件。

    生成密钥

    下一个任务是使用密码为Tripwire生成站点和本地密钥。 这有助于保护Tripwire免受未经授权的访问。 本地密钥用于数据库文件,站点密钥用于配置文件和策略文件。 您需要记住您提供的密码,因为在更新策略文件或数据库时会提示您输入密码。 以下命令生成两个密钥。 在此演示中,我将展示我在本文中使用的密码短语:

    # /opt/freeware/sbin/tripwire-setup-keyfiles ---------------------------------------------- Creating key files... Enter the site keyfile passphrase:rs6000 Verify the site keyfile passphrase:rs6000 Generating key (this may take several minutes)...Key generation complete. (When selecting a passphrase, keep in mind that good passphrases typically have upper and lower case letters, digits and punctuation marks, and are at least 8 characters in length.) Enter the local keyfile passphrase:master Verify the local keyfile passphrase:master Generating key (this may take several minutes)...Key generation complete. ---------------------------------------------- Signing configuration file... Please enter your site passphrase: Wrote configuration file: /etc/tripwire/tw.cfg A clear-text version of the Tripwire configuration file: /etc/tripwire/twcfg.txt has been preserved for your inspection. It is recommended that you move this file to a secure location and/or encrypt it in place (using a tool such as GPG, for example) after you have examined it. Signing policy file... Please enter your site passphrase:rs6000 Wrote policy file: /etc/tripwire/tw.pol.

    密钥生成完成后, /etc/tripwire中将存在以下文件:

    rs6000-local.key tw.cfg twcfg.txt site.key tw.pol twpol.txt

    查看上面的清单,我们现在有其他文件:

    rs6000-local.key(您的加密本地密钥文件); site.key(您的加密站点密钥文件); tw.cfg(您的加密配置变量文件); 和 tw.pol(您的加密策略文件)。

    此时,无需将twcfg.txt和twpol.txt文件保留在其当前位置。 您可以通过提供Tripphr实用工具访问密码来解密文件的加密版本。 本文对此进行了演示。

    初始扫描

    现在我们已经生成了密钥并提供了密码短语,我们可以进行初始扫描了。 使用加密的tw.pol策略文件中的策略。 如前所述,Tripwire随附的策略文件适用于Linux系统检查哪些文件。 需要为您的AIX系统量身定制策略文件。 您很快就会看到如何执行此操作。 但是,现在,运行扫描,在那儿Tripwire生成校验和并记录文件的扫描属性。 数据库也会被创建和更新。 在运行中会遇到很多错误,但是本练习使您对使用Tripwire有什么期望。

    运行初始化时,系统会提示您输入密码短语(由于报告的错误数量,我也严重截断了输出):

    # /opt/freeware/sbin/tripwire --init Please enter your local passphrase:master Parsing policy file: /etc/tripwire/tw.pol Generating the database... *** Processing Unix File System *** ### Warning: File system error. ### Filename: /proc/ksyms ### A file or directory in the path name does not exist. ### Continuing... ### Warning: File system error. ### Filename: /dev/initctl ### A file or directory in the path name does not exist. ### Continuing... … ... Wrote database file: /var/lib/tripwire/rs6000.twd The database was successfully generated. #

    要正确运行,Tripwire数据库必须始终存在; 确保定期备份。 重新初始化数据库很容易。

    初始化完成后,Tripwire会报告已创建数据库(请注意,当前主机名是/var/lib/tripwire/rs6000.twd).数据库文件名的一部分/var/lib/tripwire/rs6000.twd).

    政策文件

    要根据需要自定义策略文件,请使用Tripwire检查模式检查系统的完整性。 这还会打印出错误,指出系统中文件不存在但策略文件中存在的位置。 期望上市时间长; 将输出重定向到日志文件以供进一步检查可能是有利的:

    # /opt/freeware/sbin/tripwire --check | grep -w "Filename:"

    上述命令的部分典型输出可能是:

    Filename: /bin/ypdomainname A file or directory in the path name does not exist. Filename: /bin/tcsh A file or directory in the path name does not exist. Filename: /usr/sbin/fixrmtab A file or directory in the path name does not exist. … …

    要针对要监视的文件量身定制Tripwire策略,您有两种选择:

    浏览策略文件,并删除为不存在的文件打印的文件名。 从头开始并添加您自己的条目。

    我喜欢最后的选择。 这样,我只监视我想要的。 在创建这些条目之前,需要说明策略文件的基本格式。

    该策略文件包含非常丰富的命令指令和对象,因此请务必阅读twpolicy上的手册页。 在本演示中,我仅介绍和实现其中一些命令对象。 Tripwire能够监视清单1中包含的文件属性。

    清单1.文件属性
    a Access timestamp b Number of blocks allocated c Inode timestamp (create/modify) d ID of device on which inode resides g File owner's group ID i Inode number l File is increasing in size (a "growing file") m Modification timestamp n Number of links (inode reference count) p Permissions and file mode bits r ID of device pointed to by inode (valid only for device objects) s File size t File type u File owner's user ID C CRC-32 hash value H Haval hash value M MD5 hash value S SHA hash value

    也可以将其他掩码添加到属性:

    + do compare attribute -ignore attribute

    内建物件

    如果浏览了附带的twpol文件,您会发现对象已经定义。 这些如清单2所示。 使用清单1中描述的属性来创建属性掩码。

    清单2.面具
    Variable Mask Device = +pugsdr-intlbamcCMSH ; # devices file Dynamic = +pinugtd-srlbamcCMSH ; # directories that change Growing = +pinugtdl-srbamcCMSH ; # file that grow in size IgnoreAll = -pinugtsdrlbamcCMSH ; # check nothing IgnoreNone = +pinugtsdrbamcCMSH-l ; # check everything except growing attribute ReadOnly = +pinugtsdbmCM-rlacSH ; # read only Temporary = +pugt # temp files that might be removed

    查看清单2中包含的属性mask Temporary ,我们可以看到该临时监视器:

    权限(并比较权限) 文件所有权 文件组所有权 文件类型

    Tripwire使用包含变量的这些属性掩码,可以更轻松地指定要监视任何给定文件的属性。 但是,您可以定义自己的对象,在本演示中,这就是我所讨论的。 为了帮助跨平台共享,可以创建一个对象来匹配某些条件。 简而言之,这意味着您可以指定要监视不同文件类型的文件属性。

    对象的格式为:

    object_name = [ mask ];

    其中object_name是要监视的文件类型的有意义的名称,而mask表示清单1中所示的属性。

    定义对象

    如果我想监视系统二进制文件,例如reducevg或chfs,则需要了解以下有关与这些文件有关的更改:

    权限 符号链接 群组拥有者 档案拥有者 文件大小 修改图章 MD5哈希签名

    因此,使用上述更改,我可以使用清单1中包含的属性信息生成一个名为SYSBIN(用于系统二进制文件)的对象。

    SYSBIN = +pngu+sm;

    请注意,在此掩码中,我已经用加号(+)表示应该从以前的Tripwire运行或快照中比较文件权限和文件大小。

    要监视的每个文件或目录的格式为:

    <directory/file-name> - > $(object_name)

    使用对象SYSBIN来监视二进制/usr/local/bin/pwgen的策略文件中的条目可能是:

    /usr/local/bin/pwgen -> $(SYSBIN);

    如果我想使用对象SYSBIN监视/ usr / bin目录,则可以执行以下操作:

    /usr/bin -> $(SYSBIN);

    上面目录中的所有修改,例如其他新文件,都删除了该目录中创建的文件,并标记为违规。

    对于动态文件,通常这些都是日志,我们不必如此严格,因为文件大小总是在变化。 例如,我可以使用以下对象:

    SYSLOGS +p-lum

    在此对象中,我指定仅监视以下内容:

    权限 忽略文件大小增长(-l) 档案拥有者 MD5哈希签名

    对于/var/adm/messages日志文件的策略文件中的条目,我可以具有:

    /var/adm/messages - > $(SYSLOGS)

    对于某些应用程序配置脚本,我希望至少监视以下属性:

    访问时间戳 权限 修改时间戳 文件大小 文件所有者 MD5哈希签名

    我可以使用以下对象,将其称为APPCONF:

    APPCONF a+pm+suM;

    应用程序配置文件/opt/dstage/Server/DSEngine/dsenv可能是:

    /opt/dstage/Server/DSEngine/dsenv - > $(APPCONF);

    您不能扫描已经从基本挂载点挂载了另一个文件系统的文件系统(非NFS交叉挂载),除非将其专门放置在策略文件中。

    例如,假设您要监视/opt ,但是该文件系统还挂载了另一个文件系统/opt/myapp ,其挂载方式如下:

    /opt /opt/myapp

    Tripwire会投诉并报告:

    The object: "/opt/myapp" is on a different file system...ignoring.

    因此,请确保您具有要扫描的文件系统的所有条目。

    使用非变量对象

    您不必总是使用对象变量,尽管在策略文件中执行重复命令时会更容易。 您可以指定属性来代替对象,通常称为属性掩码。 例如,要监视/etc/security目录,并从该目录中进行递归扫描,请在以下位置查找更改:

    允许 档案拥有者 群组拥有者

    您可以使用:

    /etc/security -> +pug (recurse=-1);

    其中-1表示进行递归扫描; 0表示仅扫描目录的inode。

    当指定要扫描的目录并添加,删除或更改为该目录的新文件时,Tripwire会将其标记为违规。

    让Tripwire忽略文件

    要忽略目录或文件(我的意思是Tripwire不要扫描它们),格式为:

    ! <object_name>;

    其中object_name可以是预定义变量,文件名或目录。 例如,要通知Tripwire不要扫描/opt/dump和文件/opt/freeware/goodies/myjob ,您可能需要:

    !/opt/dump; !/opt/freeware/goodies/myjob;

    以前,有一个扫描/etc/security的示例。 但是,在该目录中,lastlog文件保存了最近的登录时间。 如果您不希望扫描该文件,则可以将以下条目放在!/etc/security/lastlog; 。

    现在Tripwire扫描/ etc / security,但是将忽略lastlog文件。

    解密策略文件

    当您需要编辑策略文件时,不要养成将现有策略备份文件复制回去使用的习惯。 始终使用当前版本。 这意味着您需要首先从Tripwire对其进行解密。

    要生成先前创建的当前加密策略文件的文本版本,请使用:

    # /opt/freeware/sbin/twadmin --print-polfile > /etc/tripwire/twpol.txt

    解密后的策略文件现在称为twpol.txt 。

    创建新的策略文件

    在此演示中,我决定创建一个新的twpol文件,因此只需创建一个名为/etc/tripwire/twpol.txt的新文件。

    将以下内容放入该文件:

    # this is a comment # aix twpol.txt file # system binaries SYSBIN = +pngu+sm; /usr/local/bin/pwgen -> $(SYSBIN); /usr/bin -> $(SYSBIN); /usr/sbin -> $(SYSBIN); /etc/security -> +pug (recurse=-1); # ignore last log !/etc/security/lastlog; # logs SYSLOGS = +p-lum; /var/adm/messages -> $(SYSLOGS); /opt -> $(SYSBIN); # ignore these do not scan !/opt/dump; !/opt/freeware;

    加密策略文件

    要使Tripwire生成新的策略文件(或更新现有策略),请使用twadmin命令; 系统将提示您输入网站密码:

    # /opt/freeware/sbin/twadmin --create-polfile -S site.key /etc/tripwire/twpol.txt Please enter your site passphrase:rs6000 Wrote policy file: /etc/tripwire/tw.pol

    显示加密的策略文件

    要确认Tripwire已拉入新更新的策略文件,请使用以下atcadmin命令显示策略的内容:

    # /opt/freeware/sbin/twadmin --print-polfile # this is a comment # aix twpol.txt file # system binaries SYSBIN = +pngu+sm; /usr/local/bin/pwgen -> $(SYSBIN); /usr/bin -> $(SYSBIN); /usr/sbin -> $(SYSBIN); /etc/security -> +pug (recurse=-1); # ignore last log !/etc/security/lastlog; # logs SYSLOGS = +p-lum; /var/adm/messages -> $(SYSLOGS); /opt -> $(SYSBIN); # ignore these do not scan !/opt/dump; !/opt/freeware;

    如果在运行tripwire --init之前退出Tripwire数据库,则最好先删除原始数据库。 这样可以确保您获得干净的数据库版本。 在此演示中,我的数据库位于/var/lib/tripwire/rs6000.twd中。

    扫描以建立数据库

    接下来,使Tripwire进行初始完整性扫描并生成新数据库:

    # /opt/freeware/sbin/tripwire --init Please enter your local passphrase:master Parsing policy file: /etc/tripwire/tw.pol Generating the database... *** Processing Unix File System *** Wrote database file: /var/lib/tripwire/rs6000.twd The database was successfully generated.

    现在,在系统上运行Tripwire完整性检查(我的意思是Tripwire扫描)。 输出包含在清单3中。Tripwire完整性检查显示使用新策略的报告输出:

    清单3. Tripwire完整性检查
    # /opt/freeware/sbin/tripwire –check Parsing policy file: /etc/tripwire/tw.pol *** Processing Unix File System *** Performing integrity check... Wrote report file: /var/lib/tripwire/report/rs6000-20110817-173602.twr Open Source Tripwire(R) 2.4.1 Integrity Check Report Report generated by: root Report created on: Wed Aug 17 17:36:02 BST 2011 Database last updated on: Never =============================================================================== Report Summary: =============================================================================== Host name: rs6000 Host IP address: 192.168.4.8 Host ID: None Policy file used: /etc/tripwire/tw.pol Configuration file used: /etc/tripwire/tw.cfg Database file used: /var/lib/tripwire/rs6000.twd Command line used: /opt/freeware/sbin/tripwire –check Rule Summary: =============================================================================== ------------------------------------------------------------------------------- Section: Unix File System ------------------------------------------------------------------------------- Rule Name Severity Level Added Removed Modified --------- -------------- ----- ------- -------- pwgen 0 0 0 0 (/usr/local/bin/pwgen) bin 0 0 0 0 (/usr/bin) sbin 0 0 0 0 (/usr/sbin) security 0 0 0 0 (/etc/security) messages 0 0 0 0 (/var/adm/messages) opt 0 0 0 0 (/opt) Total objects scanned: 3739 Total violations found: 0 # Section: Unix File System ------------------------------------------------------------------------------- No violations. =============================================================================== Error Report: =============================================================================== No Errors ------------------------------------------------------------------------------- *** End of report ***

    检查和修复违规

    使用我们的稀疏策略文件,在系统上一切正常。 现在,我将更改要扫描的文件之一的文件许可权属性( /usr/local/bin/pwgen )。

    # cd /usr/local/bin # ls -l pwgen -rwxrwxr-x 1 root system 198697 Mar 26 15:15 pwgen # chmod 755 pwgen # ls -l pwgen -rwxr-xr-x 1 root system 198697 Mar 26 15:15 pwgen

    现在运行Tripwire再次扫描。 它获取对文件pwgen的更改。 清单4显示了扫描的截断输出。

    清单4.违规检查
    # /opt/freeware/sbin/tripwire --check Parsing policy file: /etc/tripwire/tw.pol *** Processing Unix File System *** Performing integrity check... Wrote report file: /var/lib/tripwire/report/rs6000-20110817-173839.twr Open Source Tripwire(R) 2.4.1 Integrity Check Report Report generated by: root Report created on: Wed Aug 17 17:38:39 BST 2011 Database last updated on: Never =============================================================================== Report Summary: =============================================================================== Host name: rs6000 Host IP address: 192.168.4.8 Host ID: None Policy file used: /etc/tripwire/tw.pol Configuration file used: /etc/tripwire/tw.cfg Database file used: /var/lib/tripwire/rs6000.twd =============================================================================== Rule Summary: =============================================================================== ------------------------------------------------------------------------------- Section: Unix File System ------------------------------------------------------------------------------- Rule Name Severity Level Added Removed Modified --------- -------------- ----- ------- -------- * pwgen 0 0 0 1 (/usr/local/bin/pwgen) bin 0 0 0 0 (/usr/bin) sbin 0 0 0 0 # Section: Unix File System ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Rule Name: pwgen (/usr/local/bin/pwgen) Severity Level: 0 ------------------------------------------------------------------------------- Modified: "/usr/local/bin/pwgen" … … *** End of report ***

    重新初始化或更新策略

    在清单4中 ,您可以看到Tripwire已正确检测到更改。 如果文件pwgen的此更改是有效更改,则我们确实不希望Tripwire继续报告它。 因此,在这里,我们有两种选择,关于如何从报告此违规行为中删除Tripwire。

    我们可以再次使用init选项运行Tripwire,以在下一次运行时对要比较的内容进行基本级别的扫描,如下所示:

    # /opt/freeware/sbin/tripwire --init

    或更新Tripwire数据库,并通知其忽略或接受此更改。

    在/var/lib/tripwire/report目录中,Tripwire生成的所有报告文件都以hostname <date_stamp> .twr的形式驻留在此处。 通过按日期顺序列出文件,只需选择通过Tripwire扫描生成的报告。 拥有正确的文件后,以下命令可让您更新数据库:

    tripwire - - update - - twrfile </var/lib/tripwire/report/<hostname_date_stamp>.twr

    执行命令后,您将被置于编辑器中。 搜索报告的文件名。 所有违例或更新的文件名前均带有[x]。 在本演示中寻找的模式是:

    [x] "/usr/local/bin/pwgen"

    像这样:

    Rule Name: pwgen (/usr/local/bin/pwgen) Severity Level: 0 ------------------------------------------------------------------------------- Remove the "x" from the adjacent box to prevent updating the database with the new values for this object. Modified: [x] "/usr/local/bin/pwgen"

    如果您希望接受这些更改是有效的,只需保存并退出文件。 Tripwire不再报告该文件。 如果要将此文件排除在添加到数据库之外,请删除“ x”。

    当您保存并退出编辑器并进行数据库更新时,系统将提示您输入密码短语以完成该过程。 如果不进行任何更新,则Tripwire会通知您,并且不需要密码。 在此演示中,将提示以下内容,因为将更新数据库:

    Please enter your local passphrase: master Wrote database file: /var/lib/tripwire/rs6000.twd

    策略文件的初始填充

    用要监视的文件填充新的策略文件可能很耗时。 如前所述,实现策略文件快速填充的另一种方法是只指定目录/文件系统。 但是,另一种选择是在系统二进制目录(例如/ usr / bin)上运行find命令,然后将输出重定向到策略文件。 下面的清单5包含一个简单的脚本,该脚本查找普通类型的文件并打印对象名称(如前所述,如SYSBIN)。 然后可以将其重定向到策略文件。

    清单5. pop_twpol
    #!/bin/sh # pop_twpol dir_list="/usr/bin /usr/sbin /usr/local/bin" for loop in $dir_list do list=$(find ${loop} -type f -exec ls {} \;) for loop2 in $list do echo "${loop2} -> \$(SYSBIN);" done done

    上述脚本的示例输出可能是:

    /usr/bin/xmtopasagg -> $(SYSBIN); /usr/bin/xmtrend -> $(SYSBIN); /usr/bin/xmwlm -> $(SYSBIN); /usr/bin/xpstat -> $(SYSBIN); /usr/bin/xsend -> $(SYSBIN); /usr/bin/yes -> $(SYSBIN); /usr/bin/ypcat -> $(SYSBIN); /usr/bin/ypmatch -> $(SYSBIN); /usr/bin/yppasswd -> $(SYSBIN); /usr/bin/ypservers -> $(SYSBIN); /usr/bin/ypwhich -> $(SYSBIN);

    但是,首先,如我们之前所做的那样,从Tripwire获取策略文件的纯文本版本:

    # /opt/freeware/sbin/twadmin --print-polfile > /etc/tripwire/twpol.txt

    接下来,运行清单5中包含的脚本,根据您的需要修改目录列表,然后重定向到twpol.txt文件,如下所示:

    #./pop_twpoll >> /etc/tripwire/twpol.txt

    切记要删除先前可能已在策略文件中插入的所有重复条目,或者只是从新开始使用新的策略文件。

    接下来,将新的策略文件拖入Tripwire:

    # /opt/freeware/sbin/twadmin --create-polfile -S site.key /etc/tripwire/twpol.txt

    对于其他临时文件和日志文件,可以手动添加这些文件或执行与上述类似的过程。

    通过打印策略文件内容,确认现在包含我们的单个文件的策略文件已加密并可以使用:

    # /opt/freeware/sbin/twadmin –print-polfile # this is a comment # aix twpol.txt file # system binaries SYSBIN = +pngu+sm; # logs SYSLOGS = +p-lum; /var/adm/messages -> $(SYSLOGS); /etc/security -> +pug (recurse=-1); # ignore last log !/etc/security/lastlog; /opt -> $(SYSBIN); # ignore these do not scan !/opt/dump; !/opt/freeware/goodies/myjob; /usr/bin/Mail -> $(SYSBIN); /usr/bin/ManGetURL.class -> $(SYSBIN); /usr/bin/Rsh -> $(SYSBIN); /usr/bin/SpmiArmd -> $(SYSBIN); … …

    接下来,运行Tripwire初始扫描以重新生成数据库:

    # /opt/freeware/sbin/tripwire --init

    接下来,使用新创建的策略文件运行Tripwire检查:

    # /opt/freeware/sbin/tripwire –-check

    监视和报告大量文件有时可能确实过多。 因此,请仔细选择要监视的文件。 此过程是一个反复的过程,可能需要花费几周的时间,直到您对Tripwire实际需要监视的内容感到满意为止。

    对于系统二进制文件,我更喜欢仅按目录名称进行扫描。 对于所有其他文件,例如配置脚本和安全文件,我通常手动输入。

    报告中

    如前所述,每次Tripwire运行检查时,都会生成报告。 这些报告将转至标准输出,并另存为报告文件。 报告位于/var/lib/tripwire/report 。

    像这样:

    # pwd /var/lib/tripwire/report bash-3.2# ls rs6000-20110811-174421.twr rs6000-20110812-092023.twr rs6000-20110811-175332.twr rs6000-20110812-093053.twr rs6000-20110811-192716.twr rs6000-20110812-093410.twr

    要查看报告,请使用reprint命令。 格式为:

    pwprint -m r –twrfile <reportfile.twr>

    要查看报告文件rs6000-20110812-093643.twr ,可以使用:

    # /opt/freeware/sbin/twprint \ -m r --twrfile /var/lib/tripwire/report/rs6000-20110812-093643.twr Report is not encrypted. Open Source Tripwire(R) 2.4.1 Integrity Check Report Report generated by: root Report created on: Fri Aug 12 09:36:43 BST 2011 Database last updated on: Never =============================================================================== Report Summary: =============================================================================== Host name: rs6000 Host IP address: 192.168.4.8 Host ID: None Policy file used: /etc/tripwire/tw.pol Configuration file used: /etc/tripwire/tw.cfg …. ….

    您还可以打印有关数据库中保存的特定文件的信息。 要提取/usr/local/bin/pwgen上的文件信息,可以使用:

    # /opt/freeware/sbin/twprint -m d --print-dbfile /usr/local/bin/pwgen Object name: /usr/local/bin/pwgen Property: Value: ------------- ----------- Object Type Regular File Mode -rwxr-xr-x Num Links 1 UID root (0) GID system (0) Size 198697 Modify Time Sat Mar 26 15:15:25 GMT 2011

    要从Tripwire数据库中提取所有信息,请使用以下命令:

    # /opt/freeware/sbin/twprint -m d –print-dbfile |more

    运行Tripwire

    为使Tripwire有效,应定期运行。 这可以通过您喜欢的调度程序运行Tripwire来完成。 以下cron条目每天早上06:30运行Tripwire,将报告重定向到/opt/dump/logs/triplog<date_stamp> ,如下所示:

    30 06 * * * /opt/freeware/sbin/tripwire \ - - check > /opt/dump/logs/triplog'date +"%d-%m-%y"'

    当然,不要忘了您仍然可以在/ var / lib / tripwire / report中保留报告文件,以便在需要时进行查看。 或者,您可以将报告通过电子邮件发送给您。 以下cron条目通过电子邮件将Tripwire报告发送给syadmin电子邮件组:

    30 06 * * * /opt/freeware/sbin/tripwire - - check | mail sysadmin -s "tripwire report for 'hostname'"

    结论

    建议您使用备份应用程序备份AIX盒,其中一些应用程序可能会更改其备份过程中已备份文件的最后访问属性。

    如果您正在通过Tripwire监视此属性,则会将该属性标记为违规。 因此,您可能需要调整策略设置或在备份后运行Tripwire初始化以获取新的快照。 检查上次访问时间的一种方法是使用istat实用程序。 例如:

    istat <filename>

    Tripwire具有非常丰富的功能; 在本文中,我仅介绍了一些较常见的功能。 确保查看本文未涵盖的其他功能的twpol联机帮助页。 不要阻止根据您系统上的特定要求定制策略文件。 当与其他审核工具结合使用时,Tripwire是一个很好的工具。


    翻译自: https://www.ibm.com/developerworks/aix/library/au-usingtripwire/index.html

    相关资源:tripwire-2.4.2.2-src.tar.bz2
    Processed: 0.010, SQL: 9