使用审核来跟踪对文件的读写操作

在本文中,将介绍如何在 AIX® 中使用审核(AIX 安全方面的一个重要特性)来跟踪多个事件,并了解如何使用审核来跟踪对文件的读写操作。另外,还将研究一些相关的命令,如 ls 或者 istat,以检查文件的时间戳。

Ashish Nainwal (nainwal@in.ibm.com), 系统管理员, IBM

Ashish Nainwal 是 IBM India Systems and Technology Lab 的一名 AIX 安全支持专家。在从事 AIX 工作的两年中,他一直是 AIX 安全方面的焦点人物之一。Ashish 还参与各种 System p™ 管理活动,对客户有丰富的工作经验。您可以通过 anainwal@in.ibm.com 与他联系。



2007 年 10 月 22 日

引言

AIX® 提供了一些简单的方式以跟踪最近对文件的访问。ls 命令就是一个示例。但是,有时您还希望了解是谁、或者哪个进程对该文件进行了访问。您可能需要这样的信息,以便进行调试或者对重要的文件进行跟踪。在审核 的帮助之下,您可以跟踪对文件的读写操作的相关信息。

在 AIX 中,审核系统用于记录与安全相关的信息,并向管理员发出有关安全问题的警告。您可以自定义配置和目标文件,审核子系统将使用它们来跟踪任何需要跟踪的文件。您还可以使用审核的实时监视特性,以跟踪某些进程和文件(由未标识的进程随意地进行修改)。

跟踪

跟踪文件没有什么特殊的要求;您所需要的是具有 root 访问权限的一个普通的 AIX 系统。audit 命令为 root 用户和 audit 组的成员授予执行访问权限。对于非 root 用户,如果要在系统中执行审核,那么就应该是 audit 组的成员。

跟踪文件的概要步骤如下:

  1. 配置审核子系统
  2. 监视输出

配置审核子系统

配置审核子系统需要在目标和配置文件(审核子系统将其用于生成结果)中建立特定的条目。

在这个场景中,您将要跟踪 /home/test.txt 文件。为配置审核子系统,请尝试下面的操作:

  1. 在 /etc/security/audit/objects 文件中,为 /home/test.txt 建立相应的条目。请使用下面的格式:
    /home/test.txt:
    	r = "S_NOTAUTH_READ"
    	w = "S_NOTAUTH_WRITE"

    S_NOTAUTH_READS_NOTAUTH_WRITE 分别是用于跟踪读操作和写操作的关键字。可以使用任何关键字来替换这两个关键字,这取决于您的具体需求。

    通过在 /etc/security/audit/objects 文件中采用相同的格式为每个想要跟踪的文件建立单独的条目,您还可以使用相同的关键字跟踪多个文件。

  2. 在 /etc/security/audit/config 文件中,在 classes 部分中建立如下所示的条目:
    classes:
    	abusers = S_NOTAUTH_READ, S_NOTAUTH_WRITE
  3. 在 /etc/security/audit/config 文件中,为所有的用户添加相应的条目,如下所示:
    users:
    	root = general, abusers
    	user1=abusers
    	user2=abusers
    	.
    	.
    	.
    	userN=abusers

    这组条目可以确保审核将报告所有用户(在这个列表中的任何用户)对 /home/test.txt 文件所执行的读写操作。如果用户的条目已经存在,那么您可以为不正常的使用者追加相应的条目,使用逗号将其与前面的条目隔开。

  4. 审核提供了两种数据监视模式:
    • BIN 模式:将审核事件记录到两个交换使用的临时 BIN 文件中,然后将它们追加到一个审核跟踪文件中。
    • STREAM 模式:将审核记录写入到循环缓冲区(该缓冲区可以通过 /dev/audit 设备文件进行读取)。

    在这个场景中,除了所提供的输出格式不同之外,这两者之间并没有什么重大的区别。您可以打开任何一种模式或者同时打开两种模式以收集数据。可以通过在 etc/security/audit/config 文件中建立合适的条目来打开或者关闭它们。下面的示例打开了 STREAM 模式。

    start:
            bin mode = off
            stream mode = on

上面的步骤确保 /home/test.txt 文件处于审核子系统的观察之下。

监视输出

要对输出进行监视,首先使用下面的命令启动审核子系统:

# audit start

采用 STREAM 模式的数据收集

因为在 STREAM 模式中启用了数据收集,所以您可以通过运行下面的命令来开始数据收集工作:

# cat /etc/security/audit/streamcmds

这个命令将提供下面的信息:

/usr/sbin/auditstream | auditpr > /audit/stream.out &

将审核结果写入 /audit/stream.out 文件中,可以实时地对该文件进行监视,以跟踪读写操作。

典型的输出应该与下面的清单 1 所示类似。

清单 1. 输出文件——采用 STREAM 模式的数据收集
# tail -f /audit/stream.out

event           	login    status       time                         command
--------------- 	-------- -------- 	   --------- 	            ---------
S_NOTAUTH_READ  	root     OK          Thu May 24 14:07:05 2007 	cat
S_NOTAUTH_READ  	root     OK          Thu May 24 14:07:05 2007 	cat
FILE_Unlink    	root     OK          Thu May 24 14:07:09 2007		vi
S_NOTAUTH_READ  	root     OK          Thu May 24 14:07:09 2007 	vi
S_NOTAUTH_READ  	root     OK          Thu May 24 14:07:09 2007 	vi
S_NOTAUTH_READ  	root     OK          Thu May 24 14:07:09 2007 	vi
S_NOTAUTH_WRITE 	root     OK          Thu May 24 14:07:13 2007 	vi
FILE_Unlink     	root     OK          Thu May 24 14:07:13 2007 	vi
FILE_Unlink    	root     OK          Thu May 24 14:07:20 2007 	vi
S_NOTAUTH_READ  	ash      OK          Thu May 24 14:09:39 2007 	cat
S_NOTAUTH_READ  	ash      OK          Thu May 24 14:09:39 2007 	cat

要解释该输出文件是非常简单的。例如,下面的一行内容:

S_NOTAUTH_WRITE 	root     OK          Thu May 24 14:07:13 2007 	vi

显示了在 5 月 24 日(星期四)的 14:07:13,由 root 用户对该文件执行了一次写入操作。

采用 BIN 模式的数据收集

如果在 BIN 模式中启用了数据收集,那么您可以通过执行下面的命令来启动数据收集:

# /usr/sbin/auditpr -v < /audit/trail > /audit.out

这个命令会将审核结果写入到 /audit.out 文件中,同样可以对该文件进行实时监视。

典型的输出应该与下面的清单 2 所示类似。

清单 2. 输出文件——采用 BIN 模式的数据收集
# vi /audit.out
"/audit.out" 30 lines, 2012 characters
event           login    status        time                        command
--------       -------- -----------   -------------              --------------
S_NOTAUTH_READ   root      OK          Thu May 24 15:07:27 2007   cat
        <tail format undefined>
S_NOTAUTH_READ   root      OK          Thu May 24 15:07:27 2007   cat
        <tail format undefined>
FILE_Unlink      root      OK          Thu May 24 15:07:32 2007    vi
        filename /var/tmp/Ex21778
S_NOTAUTH_READ  root      OK          Thu May 24 15:07:32 2007	    vi
        <tail format undefined>
S_NOTAUTH_READ   root     OK          Thu May 24 15:07:32 2007	    vi
        <tail format undefined>
S_NOTAUTH_READ  root     OK           Thu May 24 15:07:32 2007     vi
        <tail format undefined>
S_NOTAUTH_WRITE root     OK           Thu May 24 15:07:37 2007     vi
        <ail format undefined>
FILE_Unlink     root     OK           Thu May 24 15:07:37 2007	    vi

您可以监视这些输出文件,以便跟踪对您的文件所进行的读写操作。

参考资料

学习

获得产品和技术

  • IBM 试用软件:从 developerWorks 可直接下载这些试用软件,您可以利用它们开发您的下一个项目。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=263659
ArticleTitle=使用审核来跟踪对文件的读写操作
publish-date=10222007