aboutsummaryrefslogtreecommitdiff
path: root/zh_CN.GB2312/books/handbook/audit/chapter.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'zh_CN.GB2312/books/handbook/audit/chapter.sgml')
-rw-r--r--zh_CN.GB2312/books/handbook/audit/chapter.sgml161
1 files changed, 94 insertions, 67 deletions
diff --git a/zh_CN.GB2312/books/handbook/audit/chapter.sgml b/zh_CN.GB2312/books/handbook/audit/chapter.sgml
index af283e8a07..1ae18d490e 100644
--- a/zh_CN.GB2312/books/handbook/audit/chapter.sgml
+++ b/zh_CN.GB2312/books/handbook/audit/chapter.sgml
@@ -2,19 +2,11 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
- Original Revision: 1.5
+ Original Revision: 1.13
$FreeBSD$
-->
-<!--
-This version of the document assumes that the Audit system needs to be
-installed as part of the trustedbsd/audit project. When/if audit becomes
-part of FreeBSD proper, then these sections should be removed, or at least
-reworded. The sections in question are marked with 'PROTOTYPE' labels in
-commentary.
--->
-
-<!-- Need more documenation on praudit, audtreduce, etc. Plus more info
+<!-- Need more documentation on praudit, auditreduce, etc. Plus more info
on the triggers from the kernel (log rotation, out of space, etc).
And the /dev/audit special file if we choose to support that. Could use
some coverage of integrating MAC with Event auditing and perhaps discussion
@@ -32,21 +24,28 @@ requirements. -->
</authorgroup>
</chapterinfo>
- <title>内核事件审计</title>
+ <title>安全事件审计</title>
<sect1 id="audit-synopsis">
<title>概述</title>
<indexterm><primary>AUDIT</primary></indexterm>
<indexterm>
- <primary>内核事件审计</primary>
+ <primary>安全事件审计</primary>
<see>MAC</see>
</indexterm>
- <para>在 &os;&nbsp;6.0 操作系统的发行版本中, 包含了基于 &posix;.1e 草案,
- 以及 &sun; <acronym>BSM</acronym> 实现的事件审计机制。
- 事件审计功能使得选择性地记录与安全有关的系统事件成为可能,
- 而这些日志可以帮助人们完成系统分析、 监视, 以及安全评估等工作。</para>
+ <para>在 &os;&nbsp;7-CURRENT 开发分支上包含了对于基于 &posix;.1e 草案,
+ Sun 所发布的 <acronym>BSM</acronym> API 及文件格式的时间审计支持。
+ 事件审计功能, 使得选择性地对涉及安全的系统事件进行记录成为可能,
+ 这可进一步为出现问题之后的验尸式分析、 系统监控, 以及入侵检测所用。
+ 经过在 &os;&nbsp;7-CURRENT 中一段时间的沉淀之后,
+ 这一支持将被合并到 &os;&nbsp;6-STABLE 并出现在之后的发行版中。</para>
+
+ <warning>
+ <para>FreeBSD 中的审计机制目前还是试验性的, 只有在仔细考量部署风险之后,
+ 才应在生产系统上部署这一试验性的软件。</para>
+ </warning>
<para>这一章将主要关注与安装和配置事件审计机制。
同时, 为了方便读者, 也介绍了审计策略,
@@ -90,7 +89,7 @@ requirements. -->
<para>在 &os; 中的事件审计机制, 与 &sun; 的基本安全模块,
即 <acronym>BSM</acronym> 库类似。 因此, 这些配置与 &solaris;
- 和 Darwin 操作系统之间可以完全互换。</para>
+ 和 Mac OS X/Darwin 操作系统之间可以完全互换。</para>
</sect1>
<sect1 id="audit-inline-glossary">
@@ -101,21 +100,40 @@ requirements. -->
<itemizedlist>
<listitem>
- <para><emphasis>类</emphasis>(class): 类用于区分系统中不同的动作类型。
- 例如, 使用 &man.login.1; 这一行为就可以放在一个类里。</para>
+ <para><emphasis>事件 (event)</emphasis>:
+ 可审计事件是指能够被审计子系统记录的事件。
+ 管理员可以配置审计哪些事件。 举例说来, 与安全有关的事件包括创建文件、
+ 建立网络连接, 以及以某一用户身份登录, 等等。
+ 任何事件必属于 <quote>有主 (attributable)</quote>,
+ 即可以最终归于某一用户身份, 或 <quote>无主(non-attributable)</quote>
+ 二者之一。 举例而言, 无主事件可以是任何发生在登录过程成功之前的事件,
+ 例如失败的登录尝试, 等等。</para>
</listitem>
<listitem>
- <para><emphasis>事件</emphasis>(event): 可以把事件理解为发生在系统中的动作。
- 例如, 创建文件就是一个事件。</para>
+ <para><emphasis>类 (class)</emphasis>: 事件可以指定为一个或多个类,
+ 通常这是基于事件的一般类别来进行的, 例如 <quote>创建文件</quote>、
+ <quote>访问文件</quote>, 或 <quote>网络</quote>。 登录和注销事件,
+ 则指定为 <literal>lo</literal> 类。 通过使用类,
+ 管理员能够指定更高层次的审计规则,
+ 而无需一一指定每个需要进行记录的可审计操作。</para>
</listitem>
<listitem>
- <para><emphasis>记录</emphasis>(record): 记录是关于某一特定动作的日志内容。</para>
+ <para><emphasis>记录 (record)</emphasis>: 记录是描述安全事件的一个日志项。
+ 典型的记录包括记录事件类型、 与事件有关的主体 (用户) 信息、
+ 时间信息、 相关的任何对象信息, 以及事件所关联的操作是否成功的信息。</para>
</listitem>
<listitem>
- <para><emphasis>前缀</emphasis>(prefix): 前缀指用于切换成功和失败审计事件的配置单元。</para>
+ <para><emphasis>账目 (trail)</emphasis>: 审计账目, 或日志文件,
+ 包含了一系列描述安全事件的审计记录。 典型情况下,
+ 审计账目基本上是以事件发生的时间顺序记录的。 只有获得授权的进程,
+ 才能够向审计账目中提交记录。</para>
+
+ <listitem>
+ <para><emphasis>前缀 (prefix)</emphasis>:
+ 前缀是指被用来开关对成功和失败事件审计的配置元素。</para>
</listitem>
</itemizedlist>
</sect1>
@@ -147,8 +165,8 @@ requirements. -->
<sect1 id="audit-config">
<title>对审计进行配置</title>
- <para>默认情况下, 所有配置都可以通过
- <filename role="directory">/etc/security</filename> 下的文件来完成。
+ <para>所有用于安全审计的配置文件, 都可以在
+ <filename role="directory">/etc/security</filename> 找到。
要启动审计服务, 下面这些文件必须存在:</para>
<itemizedlist>
@@ -168,20 +186,16 @@ requirements. -->
<listitem>
<para><filename>audit_user</filename> - 针对特定用户进行的事件审计。
- 用户名在这里并不必须出现。</para>
+ 没有在此处指定的用户, 则按控制配置文件中的默认配置处理。</para>
</listitem>
<listitem>
- <para><filename>audit_warn</filename> - 用于 auditd 生成警告信息的
- shell 脚本。</para>
+ <para><filename>audit_warn</filename> - 由 auditd 调用,
+ 用于在意外情况, 如用于记录审计事件的空间过低时发出警告的 shell
+ 脚本。</para>
</listitem>
</itemizedlist>
- <para>如果由于某些原因这些文件并不存在,
- 则可以很容易地用下列命令来安装:</para>
-
- <screen>&prompt.root; <userinput>cd /usr/src/contrib/bsm/etc &amp;&amp; make install</userinput></screen>
-
<sect2>
<title>审计文件的语法</title>
@@ -259,8 +273,8 @@ requirements. -->
</listitem>
<listitem>
- <para><option>ip</option> - <literal>ipc</literal> - 审计
- System V <acronym>IPC</acronym> 操作。</para>
+ <para><option>ip</option> - <literal>ipc</literal> - 审计各种形式的进程间通信 (IPC),
+ 包括 POSIX 管道和 System V <acronym>IPC</acronym> 操作。</para>
</listitem>
<listitem>
@@ -294,11 +308,6 @@ requirements. -->
审计进程操作, 例如 &man.exec.3; 和
&man.exit.3;。</para>
</listitem>
-
- <listitem>
- <para><option>tf</option> - <literal>tfm</literal> -
- I HAVE NO CLUE!</para>
- </listitem>
</itemizedlist>
<para>下面是全部支持的审计前缀:</para>
@@ -343,10 +352,10 @@ requirements. -->
<sect2>
<title>配置文件</title>
- <para>配置是在两个文件中进行设置的。 第一个文件是
- <filename>audit_control</filename> 而第二个是
- <filename>audit_user</filename>。 第一个文件是系统级的,
- 用于控制系统中的所有事件统计。 而后一个则可以实现细粒度的用户级审计。</para>
+ <para>多数情况下, 在配置审计系统时,
+ 管理员只需修改两个文件: <filename>audit_control</filename>
+ 和 <filename>audit_user</filename>。 第一个文件控制系统级的审计参数,
+ 以及所有有主或无主事件的默认参数。 第二个文件用于调整针对具体用户的审计级别和性质。</para>
<sect3 id="audit-auditcontrol">
<title>传说中的 <filename>audit_control</filename> 文件</title>
@@ -356,14 +365,19 @@ requirements. -->
察看这个文件的内容, 我们会发现:</para>
<programlisting>dir:/var/audit
-flags:lo,ad,-all,^-fa,^-fc,^-cl
+flags:lo
minfree:20
naflags:lo</programlisting>
- <para>这里的 <option>dir</option> 表示默认存放审计日志的目录。</para>
+ <para>这里的 <option>dir</option> 用于设置审计日志的默认存放目录。
+ 审计通常都会配置为保存在一个专用的文件系统之下,
+ 以避免审计系统与其它子系统在文件系统满的时候所产生的冲突。
+ </para>
- <para><option>flags</option> 则用来设置系统级的默认。
- 目前的设置, 即
+ <para><option>flags</option> 选项则用来设置系统级的默认。
+ 目前的设置, 即 <option>lo</option>
+ 配置审计所有的 &man.login.1; 和 &man.logout.1;
+ 动作。 而更为复杂的例子,
<option>lo,ad,-all,^-fa,^-fc,^-cl</option> 表示审计所有的系统
&man.login.1; 和 &man.logout.1; 动作、 所有管理动作,
以及所有系统中失败的动作, 但最后禁用对 <option>fa</option>、
@@ -382,16 +396,15 @@ naflags:lo</programlisting>
<filename role="directory">/var</filename> 文件系统有八成
(80) 空间被填满时将会给出警告消息。</para>
- <para><option>naflags</option> 参数用于指定不可归类的审计标志;
- 比如说, 无法归类于系统上某一特定用户的事件类。 这可以通过在
- <filename>audit_user</filename> 配置文件中的设置来改变。</para>
+ <para><option>naflags</option> 参数用于指定无主事件 &mdash;
+ 也就是那些并不与特定用户关联的事件的审计。
+ </para>
</sect3>
<sect3 id="audit-audituser">
<title><filename>audit_user</filename> 文件</title>
- <para><filename>audit_user</filename> 允许管理员将某些事件直接映射到特定用户。
- 这提供了针对所有系统用户的精细控制机制。</para>
+ <para><filename>audit_user</filename> 文件允许管理员决定哪些系统用户所产生的哪些类的事件应被记录在案。</para>
<para>下面是 <filename>audit_user</filename> 文件中的一些默认值:</para>
@@ -414,15 +427,16 @@ audit:fc:no</programlisting>
<sect1 id="audit-administration">
<title>管理事件审计</title>
- <para>来自 <command>auditd</command> 服务的数据,
- 并不能以普通的文本形式进行修改或阅读。 数据以类似 &man.ktrace.1;
- 和 &man.kdump.1 的形式存储, 也就是说, 只能通过
- <command>praudit</command> 或 <command>auditreduce</command>
- 工具来查看它们。</para>
+ <para>由内核审计子系统写出的事件, 并不能以普通文本的形式加以修改或阅读。
+ 这些数据以类似 &man.ktrace.1; 和 &man.kdump.1; 那样的方式来存储和访问,
+ 也就是说, 只能通过使用
+ <command>praudit</command> 命令执行转存操作才能察看它们;
+ 审计账目可以通过 <command>auditreduce</command> 命令来减少,
+ 它能够根据您感兴趣的属性, 例如用户、 事件发生的时间,
+ 以及操作类型来选择查询记录。</para>
- <para>所提供的两个工具是为了不同的用途而准备的。
- 例如, <command>praudit</command> 将转存整个事件日志的内容,
- 并保存成普通的文本文件。 要将整个审计日志转存, 可使用:</para>
+ <para>例如, <command>praudit</command> 能够将选定审计日志的完整内容,
+ 转存为普通的文本文件。 要将整个审计日志转存, 可使用:</para>
<screen>&prompt.root; <userinput>praudit /var/audit/AUDITFILE</userinput></screen>
@@ -432,7 +446,7 @@ audit:fc:no</programlisting>
要达到这个目的, 可以使用下面的命令,
这里我们选择的用户是 <username>trhodes</username>:</para>
- <screen>&prompt.root; <userinput>auditreduce -e trhodes /var/audit/AUDITFILE</userinput></screen>
+ <screen>&prompt.root; <userinput>auditreduce -e trhodes /var/audit/AUDITFILE | praudit</userinput></screen>
<para>这将选择保存在 <replaceable>AUDITFILE</replaceable> 中的所有由
<username>trhodes</username> 产生的审计日志。</para>
@@ -443,11 +457,13 @@ audit:fc:no</programlisting>
<sect2>
<title>审计日志文件的轮转</title>
- <para>手工轮转日志文件将给系统造成混乱。 因此, 在
- &man.newsyslog.conf.5; 中加入一行配置是不起作用的。
- 那么如何让日志轮转呢? 这可以通过给
- <command>audit</command> 适当的参数来关闭事件审计,
- 并安全地完成轮转操作。 下面的命令将为管理员完成全部所需的操作:</para>
+ <para>由于日志可靠性的要求, 审计计账只由内核写入, 且只能由
+ <command>auditd</command> 管理。 管理员不应尝试使用 &man.newsyslog.conf.5;
+ 或其它工具来完成审计日志的轮转工作。 您应使用 <command>audit</command>
+ 管理工具来关闭审计、 重新配置审计系统, 并完成日志轮转。
+ 下面的命令将让审计服务创建新的审计日志,
+ 并发信号给内核要求其使用新的日志。 旧日志将终止并被改名,
+ 此时, 管理员就可以操作它了。</para>
<screen>&prompt.root; <userinput>audit -n</userinput></screen>
@@ -463,5 +479,16 @@ audit:fc:no</programlisting>
<para>这些修改会在您保存 <filename>/etc/crontab</filename> 后生效。</para>
</sect2>
+
+ <sect2>
+ <title>为其它用户指派审计复审权限</title>
+
+ <para>默认情况下, 只有 root 用户拥有读取系统审计日志的权限。
+ 但您也可以将这种权限通过
+ <literal>audit</literal> 组的成员身份来指定给其它用户,
+ 因为审计目录和记账文件都是属于这个组的, 而且是同组可读的。
+ 由于阅读审计日志的内容会提供关于用户和进程的大量行为信息,
+ 强烈建议在指派这一权限时谨慎行事。</para>
+ </sect2>
</sect1>
</chapter>