aboutsummaryrefslogtreecommitdiff
path: root/zh_CN.GB2312/books/handbook/security/chapter.xml
diff options
context:
space:
mode:
Diffstat (limited to 'zh_CN.GB2312/books/handbook/security/chapter.xml')
-rw-r--r--zh_CN.GB2312/books/handbook/security/chapter.xml621
1 files changed, 274 insertions, 347 deletions
diff --git a/zh_CN.GB2312/books/handbook/security/chapter.xml b/zh_CN.GB2312/books/handbook/security/chapter.xml
index 2775406861..442af760fd 100644
--- a/zh_CN.GB2312/books/handbook/security/chapter.xml
+++ b/zh_CN.GB2312/books/handbook/security/chapter.xml
@@ -6,22 +6,17 @@
Original Revision: 1.340
$FreeBSD$
-->
-
-<chapter id="security">
- <chapterinfo>
+<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="security">
+ <info><title>安全</title>
<authorgroup>
- <author>
- <firstname>Matthew</firstname>
- <surname>Dillon</surname>
- <contrib>这一章的许多内容来自 security(7) 联机手册,其作者是 </contrib>
- </author>
+ <author><personname><firstname>Matthew</firstname><surname>Dillon</surname></personname><contrib>这一章的许多内容来自 security(7) 联机手册,其作者是 </contrib></author>
</authorgroup>
- </chapterinfo>
+ </info>
- <title>安全</title>
+
<indexterm><primary>security</primary></indexterm>
- <sect1 id="security-synopsis">
+ <sect1 xml:id="security-synopsis">
<title>概述</title>
<para>这一章将对系统安全的基本概念进行介绍, 除此之外, 还将介绍一些好的习惯, 以及
@@ -97,12 +92,10 @@
</itemizedlist>
<para>其他安全方面的话题, 则贯穿本书的始终。
- 例如, 强制性访问控制 (MAC) 在 <xref
- linkend="mac"/> 中进行了介绍, 而 Internet 防火墙则在 <xref
- linkend="firewalls"/> 中进行了讨论。</para>
+ 例如, 强制性访问控制 (MAC) 在 <xref linkend="mac"/> 中进行了介绍, 而 Internet 防火墙则在 <xref linkend="firewalls"/> 中进行了讨论。</para>
</sect1>
- <sect1 id="security-intro">
+ <sect1 xml:id="security-intro">
<title>介绍</title>
<para>安全是系统管理员自始至终的基本要求。 由于所有的 BSD &unix;
@@ -120,7 +113,7 @@
<para>系统的安全也应能够应付各种形式的攻击, 这也包括那些使系统崩溃,
或阻止其正常运转, 并不仅限于试图窃取
- <username>root</username> 帐号 (<quote>破译 root</quote>)
+ <systemitem class="username">root</systemitem> 帐号 (<quote>破译 root</quote>)
的攻击形式。 安全问题大体可分为以下几类:</para>
<orderedlist>
@@ -183,11 +176,11 @@
<para>通常必须假定,如果一个入侵者已经访问到了一个用户的帐户,
- 那么它就可能使自己成为 <username>root</username>。 然而,
+ 那么它就可能使自己成为 <systemitem class="username">root</systemitem>。 然而,
事实是在一个安全和维护做得很好的系统中,
- 访问用户的帐户不一定会让入侵者成为 <username>root</username>。
+ 访问用户的帐户不一定会让入侵者成为 <systemitem class="username">root</systemitem>。
这个差别是很重要的,因为没有成为
- <username>root</username> 则入侵者通常是无法隐藏它的轨迹的, 而且,
+ <systemitem class="username">root</systemitem> 则入侵者通常是无法隐藏它的轨迹的, 而且,
如果走运的话, 除了让用户的文件乱掉和系统崩溃之外,
它不能做什么别的事情。 窃取用户帐户是很普遍的事情,
因为用户往往不会对系统管理员的警告采取措施。</para>
@@ -198,18 +191,18 @@
</indexterm>
<para>系统管理员必须牢牢记住,可能有许多潜在的方法会使他们机器上的
- <username>root</username> 用户受到威胁。入侵者可能知道
- <username>root</username> 的口令,而如果在以
- <username>root</username> 权限运行的服务器上找到一个缺陷 (bug),
+ <systemitem class="username">root</systemitem> 用户受到威胁。入侵者可能知道
+ <systemitem class="username">root</systemitem> 的口令,而如果在以
+ <systemitem class="username">root</systemitem> 权限运行的服务器上找到一个缺陷 (bug),
就可以通过网络连接到那台服务器上达到目的;另外,
一旦入侵者已经侵入了一个用户的帐户,
可以在自己的机器上运行一个 suid-root 程序来发现服务器的漏洞,
- 从而让他侵入到服务器并获取 <username>root</username>。
- 攻击者找到了入侵一台机器上 <username>root</username> 的途径之后,
- 他们就不再需要安装后门了。许多 <username>root</username>
+ 从而让他侵入到服务器并获取 <systemitem class="username">root</systemitem>。
+ 攻击者找到了入侵一台机器上 <systemitem class="username">root</systemitem> 的途径之后,
+ 他们就不再需要安装后门了。许多 <systemitem class="username">root</systemitem>
漏洞被发现并修正之后, 入侵者会想尽办法去删除日志来消除自己的访问痕迹,
所以他们会安装后门。
- 后门能给入侵者提供一个简单的方法来重新获取访问系统的 <username>root</username>
+ 后门能给入侵者提供一个简单的方法来重新获取访问系统的 <systemitem class="username">root</systemitem>
权限, 但它也会给聪明的系统管理员一个检测入侵的简便方法。
让入侵者无法安装后门事实上对您的系统安全是有害的,
因为这样并不会修复那些侵入系统的入侵者所发现的新漏洞。</para>
@@ -220,11 +213,11 @@
<orderedlist>
<listitem>
- <para>确保 <username>root</username> 和维护人员帐户的安全。</para>
+ <para>确保 <systemitem class="username">root</systemitem> 和维护人员帐户的安全。</para>
</listitem>
<listitem>
- <para>确保 <username>root</username> &ndash; 以root用户权限运行的服务器和suid/sgid可执行程序的安全。</para>
+ <para>确保 <systemitem class="username">root</systemitem> &ndash; 以root用户权限运行的服务器和suid/sgid可执行程序的安全。</para>
</listitem>
<listitem>
@@ -251,7 +244,7 @@
<para>这一章的下一节将比较深入地讲述上面提到的每一个条目。</para>
</sect1>
- <sect1 id="securing-freebsd">
+ <sect1 xml:id="securing-freebsd">
<title>确保 &os; 的安全</title>
<indexterm>
<primary>security</primary>
@@ -267,19 +260,18 @@
因为它既可以表示命令,又可以表示协议。</para>
</note>
- <para>接下来的几节中, 将介绍在这一章中 <link
- linkend="security-intro">前一节</link> 中所介绍的那些加强
+ <para>接下来的几节中, 将介绍在这一章中 <link linkend="security-intro">前一节</link> 中所介绍的那些加强
&os; 系统安全性的手段。</para>
- <sect2 id="securing-root-and-staff">
- <title>确保 <username>root</username> 和维护人员帐户的安全 </title>
+ <sect2 xml:id="securing-root-and-staff">
+ <title>确保 <systemitem class="username">root</systemitem> 和维护人员帐户的安全 </title>
<indexterm>
<primary><command>su</command></primary>
</indexterm>
- <para>首先,如果您没有确保 <username>root</username> 帐户的安全,
+ <para>首先,如果您没有确保 <systemitem class="username">root</systemitem> 帐户的安全,
就没必要先劳神确保用户帐户的安全了。绝大多数系统都会指派一个口令给
- <username>root</username> 帐户。 我们的第一个假定是,口令
+ <systemitem class="username">root</systemitem> 帐户。 我们的第一个假定是,口令
<emphasis>总是</emphasis> 不安全的。 这并不意味着您要把口令删掉。
口令通常对访问机器的控制台来说是必须的。 也就是说,
您应该避免允许在控制台以外的地方使用口令,
@@ -287,45 +279,45 @@
例如,确信您的 pty 终端在 <filename>/etc/ttys</filename>
文件中被指定为 insecure (不安全),这将使直接通过
<command>telnet</command> 或 <command>rlogin</command> 登录
- <username>root</username> 会不被接受。 如果使用如
+ <systemitem class="username">root</systemitem> 会不被接受。 如果使用如
<application>sshd</application> 这样的其他登录服务,
也要确认直接登录 root 是关闭的。您可以通过编辑
<filename>/etc/ssh/sshd_config</filename> 文件来做到这一点,确信
<literal>PermitRootLogin</literal> 被设置成 <literal>no</literal>。
考虑到每一种访问方法 &mdash; 如FTP这样的服务,
以免因为它们而导致安全性的损失。
- 直接登录 <username>root</username> 只有通过系统控制台才被允许。</para>
+ 直接登录 <systemitem class="username">root</systemitem> 只有通过系统控制台才被允许。</para>
<indexterm>
- <primary><groupname>wheel</groupname></primary>
+ <primary><systemitem class="groupname">wheel</systemitem></primary>
</indexterm>
<para>当然, 作为一个系统管理员, 您应当获得
- <username>root</username>身份, 因此, 我们开了一些后门来允许自己进入。
+ <systemitem class="username">root</systemitem>身份, 因此, 我们开了一些后门来允许自己进入。
但这些后门只有在经过了额外的口令确认之后才能使用。
- 一种让 <username>root</username>
+ 一种让 <systemitem class="username">root</systemitem>
可访问的方法是增加适当的用户帐户到
- <groupname>wheel</groupname> 组 (在
- <filename>/etc/group</filename> 中)。<groupname>wheel</groupname>
+ <systemitem class="groupname">wheel</systemitem> 组 (在
+ <filename>/etc/group</filename> 中)。<systemitem class="groupname">wheel</systemitem>
组中的用户成员可以使用 <command>su</command>
- 命令来成为 <username>root</username>。
+ 命令来成为 <systemitem class="username">root</systemitem>。
绝对不应该通过在口令项中进行设置来赋予维护人员天然的
- <groupname>wheel</groupname> 组成员身份。 维护人员应被放置在
- <groupname>staff</groupname> 组中,然后通过
- <filename>/etc/group</filename> 文件加入到 <groupname>wheel</groupname>
- 组。事实上,只有那些需要以 <username>root</username> 身份进行操作的用户才需要放进
- <groupname>wheel</groupname> 组中。 当然,也可以通过
- 某种其它的验证手段,例如 Kerberos,可以通过 <username>root</username>
+ <systemitem class="groupname">wheel</systemitem> 组成员身份。 维护人员应被放置在
+ <systemitem class="groupname">staff</systemitem> 组中,然后通过
+ <filename>/etc/group</filename> 文件加入到 <systemitem class="groupname">wheel</systemitem>
+ 组。事实上,只有那些需要以 <systemitem class="username">root</systemitem> 身份进行操作的用户才需要放进
+ <systemitem class="groupname">wheel</systemitem> 组中。 当然,也可以通过
+ 某种其它的验证手段,例如 Kerberos,可以通过 <systemitem class="username">root</systemitem>
帐户中的 <filename>.k5login</filename> 文件来允许执行
- &man.ksu.1; 成为 <username>root</username> ,而不必把它们放进
- <groupname>wheel</groupname> 组。 这可能是一种更好的解决方案,
- 因为 <groupname>wheel</groupname> 机制仍然可能导致入侵者获得
- <username>root</username> ,如果他拿到了口令文件,并能够进入职员的帐户。
- 尽管有 <groupname>wheel</groupname> 比什么都没有要强一些,
+ &man.ksu.1; 成为 <systemitem class="username">root</systemitem> ,而不必把它们放进
+ <systemitem class="groupname">wheel</systemitem> 组。 这可能是一种更好的解决方案,
+ 因为 <systemitem class="groupname">wheel</systemitem> 机制仍然可能导致入侵者获得
+ <systemitem class="username">root</systemitem> ,如果他拿到了口令文件,并能够进入职员的帐户。
+ 尽管有 <systemitem class="groupname">wheel</systemitem> 比什么都没有要强一些,
但它并不是一种绝对安全的办法。</para>
<para>可以使用 &man.pw.8; 命令来完全禁止某一个帐号:</para>
- <screen>&prompt.root;<userinput>pw lock <replaceable>staff</replaceable></userinput></screen>
+ <screen>&prompt.root;<userinput>pw lock staff</userinput></screen>
<para>这将阻止用户使用任何方法登录,包括 &man.ssh.1;。</para>
@@ -340,7 +332,7 @@
<programlisting>foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh</programlisting>
- <para>这会阻止用户 <username>foobar</username> 使用传统的方式登录。
+ <para>这会阻止用户 <systemitem class="username">foobar</systemitem> 使用传统的方式登录。
但是对于使用了 <application>Kerberos</application>
或者配置了 &man.ssh.1; 公钥/密钥对的情况下,用户依然可以访问。</para>
@@ -394,9 +386,9 @@
要当心第三方的服务程序很可能有更多的问题。 例如, 运行旧版的
<application>imapd</application> 或
<application>popper</application> 无异于将
- <username>root</username> 令牌拱手送给全世界的攻击者。
+ <systemitem class="username">root</systemitem> 令牌拱手送给全世界的攻击者。
永远不要运行那些您没有仔细检查过的服务程序, 另外也要知道,
- 许多服务程序并不需要以 <username>root</username> 的身份运行。
+ 许多服务程序并不需要以 <systemitem class="username">root</systemitem> 的身份运行。
例如, <application>ntalk</application>、
<application>comsat</application>, 以及
<application>finger</application> 这些服务,
@@ -405,7 +397,7 @@
但洋葱式安全规则仍然成立: 如果有人设法攻破了在沙盒中运行的程序,
那么在做更多坏事之前, 他们还必须想办法攻破沙盒本身的限制。
攻击者需要攻破的层次越多, 他们成功的可能性就越小。
- 过去, 破解 root 的漏洞几乎在所有以 <username>root</username>
+ 过去, 破解 root 的漏洞几乎在所有以 <systemitem class="username">root</systemitem>
身份运行的服务上都发现过, 包括那些基本的系统服务。
如果您的机器只打算向外界提供
<application>sshd</application> 登录, 而用户不会使用
@@ -431,20 +423,17 @@
<application>popper</application>,
<application>imapd</application>, <application>ftpd</application>,
以及一些其他的服务。当然,它们有一些替代品,但安装那些服务可能需要做更多额外的工作。
- 可能必须以 <username>root</username> 身份运行这些程序,
+ 可能必须以 <systemitem class="username">root</systemitem> 身份运行这些程序,
并通过其他机制来检测入侵。</para>
- <para>系统中另一个比较大的 <username>root</username> 漏洞
+ <para>系统中另一个比较大的 <systemitem class="username">root</systemitem> 漏洞
是安装在其中的 suid-root 和 sgid 的可执行文件。 绝大多数这类程序,
例如 <application>rlogin</application>
- 会放在 <filename class="directory">/bin</filename>、 <filename
- class="directory">/sbin</filename>、 <filename
- class="directory">/usr/bin</filename>, 或 <filename
- class="directory">/usr/sbin</filename> 目录中。
+ 会放在 <filename>/bin</filename>、 <filename>/sbin</filename>、 <filename>/usr/bin</filename>, 或 <filename>/usr/sbin</filename> 目录中。
尽管并没有 100% 的安全保证,但系统默认的 suid 和 sgid 可执行文件通常是相对安全的。
当然,偶尔也会发现一些存在于这些可执行文件中的
- <username>root</username> 漏洞。1998年,<literal>Xlib</literal>
- 中发现了一处 <username>root</username> 漏洞,这使得
+ <systemitem class="username">root</systemitem> 漏洞。1998年,<literal>Xlib</literal>
+ 中发现了一处 <systemitem class="username">root</systemitem> 漏洞,这使得
<application>xterm</application> (通常是做了suid的) 变得可以入侵。
做得安全些, 总比出现问题再后悔要强。
因此,谨慎的管理员通常会限制 suid 可执行文件,
@@ -456,12 +445,12 @@
<filename>/dev/kmem</filename> 并进而读取经过加密的口令文件,
从而窃取任何包含口令的帐号。另外,攻破了 <literal>kmem</literal>
的入侵者能够监视通过 pty 传送的按键序列,即使用户使用的是安全的登录方式。
- 攻破了 <groupname>tty</groupname> 组的用户则能够向几乎所有用户的
+ 攻破了 <systemitem class="groupname">tty</systemitem> 组的用户则能够向几乎所有用户的
tty 写入数据。如果用户正在运行一个终端程序,或包含了键盘模拟功能的终端仿真程序,
那么,入侵者能够以那个用户的身份执行任何命令。</para>
</sect2>
- <sect2 id="secure-users">
+ <sect2 xml:id="secure-users">
<title>确保用户帐户的安全</title>
<para>用户帐号的安全通常是最难保证的。虽然您可以为您的员工设置严苛的登录限制,
@@ -478,42 +467,41 @@
<para>能够确保起作用的唯一一种方法, 是将口令文件中尽可能多的口令用星号代替,
并通过 ssh 或 Kerberos 来使用这些账号。 即使只有
- <username>root</username> 用户能够读取加密过的口令文件 (<filename>/etc/spwd.db</filename>),
+ <systemitem class="username">root</systemitem> 用户能够读取加密过的口令文件 (<filename>/etc/spwd.db</filename>),
入侵者仍然可能设法读到它的内容,
即使他暂时还无法写入这个文件。</para>
- <para>您的安全脚本应该经常检查并报告口令文件的异动 (参见后面的 <link
- linkend="security-integrity">检查文件完整性</link> 一节)。</para>
+ <para>您的安全脚本应该经常检查并报告口令文件的异动 (参见后面的 <link linkend="security-integrity">检查文件完整性</link> 一节)。</para>
</sect2>
<sect2>
<title>确保内核中内核设备、直接访问设备和文件系统的安全</title>
- <para>如果攻击者已经拿到了 <username>root</username> 那么他就有能力作任何事情,
+ <para>如果攻击者已经拿到了 <systemitem class="username">root</systemitem> 那么他就有能力作任何事情,
当然, 有一些事情是他们比较喜欢干的。
例如, 绝大多数现代的内核都包括一个内建的听包设备。
在 &os; 中,这个设备被称作
- <devicename>bpf</devicename> 。攻击者通常会尝试在攻克的系统上运行它。
- 如果您不需要 <devicename>bpf</devicename> 设备提供的功能,那么,就不要把它编入内核。</para>
+ <filename>bpf</filename> 。攻击者通常会尝试在攻克的系统上运行它。
+ 如果您不需要 <filename>bpf</filename> 设备提供的功能,那么,就不要把它编入内核。</para>
<indexterm>
<primary><command>sysctl</command></primary>
</indexterm>
- <para>但是, 即使您关闭了 <devicename>bpf</devicename>
+ <para>但是, 即使您关闭了 <filename>bpf</filename>
设备, 仍需要关注
<filename>/dev/mem</filename> 和
<filename>/dev/kmem</filename>。 就事论事地说,
入侵者仍然能通过直接访问的方式写入磁盘设备。 另外,
还有一个称作模块加载器的内核机制, &man.kldload.8;。
有进取心的入侵者, 可以经由这一机制,
- 在正在运行的内核中通过 KLD 模块来安装自己的 <devicename>bpf</devicename>,
+ 在正在运行的内核中通过 KLD 模块来安装自己的 <filename>bpf</filename>,
或其它听包设备。 为了避免这些问题, 您必须将内核的安全级别提高到至少 1。</para>
<para>内核的安全级别可以通过多种方式来设置。 最简单的设置正在运行的内核安全级的方法,
是使用 <command>sysctl</command> 来设置内核变量
<varname>kern.securelevel</varname>:</para>
- <screen>&prompt.root; <userinput>sysctl kern.securelevel=<replaceable>1</replaceable></userinput></screen>
+ <screen>&prompt.root; <userinput>sysctl kern.securelevel=1</userinput></screen>
<para>默认情况下, &os; 内核启动时的安全级别是 -1。
除非管理员或 &man.init.8; 由于启动脚本加以改变, 安全级别会继续保持为 -1。
@@ -535,7 +523,7 @@
<note>
<para>将安全级别调整到 1 或更高可能会导致 X11
(访问 <filename>/dev/io</filename> 会被阻止), 或从源代码联编 &os;
- (这一过程中的 <maketarget>installworld</maketarget>
+ (这一过程中的 <buildtarget>installworld</buildtarget>
部分需要临时取消一些文件上的只允许追加和不可修改标记) 出现一些问题,
并导致一些其他小问题。 有些时候, 例如 X11 的情况,
可以通过在引导过程中较早的阶段启动 &man.xdm.1;
@@ -552,18 +540,17 @@
然而, 这样做也可能有些过火, 而由于系统运行于较高的安全级别,
升级系统也会变得困难的多。 作为妥协, 可以让系统以较高的安全级别运行,
但并不将所有的启动文件都配置 <literal>schg</literal> 标记。
- 另一种方法是将 <filename class="directory">/</filename> 和 <filename
- class="directory">/usr</filename> 以只读模式挂载。
+ 另一种方法是将 <filename>/</filename> 和 <filename>/usr</filename> 以只读模式挂载。
请注意, 过分严苛的安全配置很可能限制您检测入侵的能力。</para>
</sect2>
- <sect2 id="security-integrity">
+ <sect2 xml:id="security-integrity">
<title>检查文件完整性: 可执行文件,配置文件和其他文件</title>
<para>当实施严格的限制时,往往会在使用的方便性上付出代价。例如,使用
<command>chflags</command> 来把 <literal>schg</literal> 标记
- 应用到 <filename class="directory">/</filename> 和
- <filename class="directory">/usr</filename> 中的绝大多数文件上可能会起到反作用,
+ 应用到 <filename>/</filename> 和
+ <filename>/usr</filename> 中的绝大多数文件上可能会起到反作用,
因为尽管它能够保护那些文件, 但同时也使入侵检测无法进行。
层次化安全的最后一层可能也是最重要的 &mdash; 检测。
如果无法检测出潜在的入侵行为,
@@ -587,11 +574,11 @@
就应该为实际的监控撰写脚本。以 NFS 挂接为例,可以用类似 &man.find.1;
和 &man.md5.1; 这样的命令为基础来完成我们所需的工作。
最好能够每天对被控机的所有执行文件计算一遍 md5,同时,还应以更高的频率测试那些
- <filename class="directory">/etc</filename> 和
- <filename class="directory">/usr/local/etc</filename>
+ <filename>/etc</filename> 和
+ <filename>/usr/local/etc</filename>
中的控制文件。一旦发现了不匹配的情形,监控机应立即通知系统管理员。
好的安全脚本也应该检查在系统分区,如 <filename>/</filename> 和
- <filename class="directory">/usr</filename>
+ <filename>/usr</filename>
中是否有新增或删除的可执行文件,以及不适宜的 suid 。</para>
<para>如果打算使用 ssh 来代替 NFS,那么撰写安全脚本将变得困难许多。
@@ -699,7 +686,7 @@
<para>此外, 将内部服务保护起来, 阻止来自其他主机的访问也十分重要,
这些工作可以通过设置边界路由器来完成。
主要的想法, 是阻止来自您的 LAN 以外的访问, 这有助于避免
- <username>root</username> 受到攻击。
+ <systemitem class="username">root</systemitem> 受到攻击。
尽可能配置排他式的防火墙, 例如,
<quote>用防火墙阻止所有的网络流量 <emphasis>除了</emphasis> 端口 A、B、
C、D,以及 M-Z</quote>。 通过采用这种方法, 您可以很容易地将低端口的访问阻止在外,
@@ -793,7 +780,7 @@
而您连到了一台不安全的机器上, 则您的密钥可能被别人获得。
尽管实际的密钥并没有被泄漏, 但由于 ssh 会在您登录的过程中启用一个转发端口,
如果攻击者拿到那台不安全的机器上的
- <username>root</username> 那么他将能够利用那个端口来使用您的密钥,
+ <systemitem class="username">root</systemitem> 那么他将能够利用那个端口来使用您的密钥,
从而访问您能够访问的那些机器。</para>
<para>我们建议您在使用 ssh 时配合
@@ -807,19 +794,15 @@
</sect2>
</sect1>
- <sect1 id="crypt">
- <sect1info>
+ <sect1 xml:id="crypt">
+ <info><title>DES、 Blowfish、 MD5, 以及 Crypt</title>
<authorgroup>
- <author>
- <firstname>Bill</firstname>
- <surname>Swingle</surname>
- <contrib>部分重写、更新来自 </contrib>
- </author>
+ <author><personname><firstname>Bill</firstname><surname>Swingle</surname></personname><contrib>部分重写、更新来自 </contrib></author>
</authorgroup>
- <!-- 21 Mar 2000 -->
- </sect1info>
+
+ </info>
- <title>DES、 Blowfish、 MD5, 以及 Crypt</title>
+
<indexterm>
<primary>安全</primary>
<secondary>密码</secondary>
@@ -877,7 +860,7 @@
</sect2>
</sect1>
- <sect1 id="one-time-passwords">
+ <sect1 xml:id="one-time-passwords">
<title>一次性口令</title>
<indexterm><primary>一次性口令</primary></indexterm>
<indexterm>
@@ -1098,18 +1081,14 @@ Enter secret pass phrase: <userinput>&lt;secret password&gt;</userinput>
</sect2>
</sect1>
- <sect1 id="tcpwrappers">
- <sect1info>
+ <sect1 xml:id="tcpwrappers">
+ <info><title>TCP Wrappers</title>
<authorgroup>
- <author>
- <firstname>Tom</firstname>
- <surname>Rhodes</surname>
- <contrib>作者</contrib>
- </author>
+ <author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><contrib>作者</contrib></author>
</authorgroup>
- </sect1info>
+ </info>
- <title>TCP Wrappers</title>
+
<indexterm><primary>TCP Wrappers</primary></indexterm>
@@ -1189,7 +1168,7 @@ Enter secret pass phrase: <userinput>&lt;secret password&gt;</userinput>
<para>另外也有许多其他选项, 这些将在后面介绍。
简单的配置行从上面这些描述之中可以很容易得出。
例如, 允许 <acronym>POP</acronym>3 连接通过
- <filename role="package">mail/qpopper</filename> 服务,
+ <package>mail/qpopper</package> 服务,
应把下面的行添加到
<filename>hosts.allow</filename>:</para>
@@ -1259,7 +1238,7 @@ ALL : .example.com \
: deny</programlisting>
<para>这将拒绝来自
- <hostid role="fqdn">*.example.com</hostid> 域的所有连接;
+ <systemitem class="fqdomainname">*.example.com</systemitem> 域的所有连接;
同时还将记录主机名, <acronym>IP</acronym>
地址, 以及对方所尝试连接的服务名字到
<filename>/var/log/connections.log</filename> 文件中。</para>
@@ -1307,25 +1286,17 @@ sendmail : PARANOID : deny</programlisting>
</sect2>
</sect1>
- <sect1 id="kerberos5">
- <sect1info>
+ <sect1 xml:id="kerberos5">
+ <info><title><application>Kerberos5</application></title>
<authorgroup>
- <author>
- <firstname>Tillman</firstname>
- <surname>Hodgson</surname>
- <contrib>撰写者 </contrib>
- </author>
+ <author><personname><firstname>Tillman</firstname><surname>Hodgson</surname></personname><contrib>撰写者 </contrib></author>
</authorgroup>
<authorgroup>
- <author>
- <firstname>Mark</firstname>
- <surname>Murray</surname>
- <contrib>原文来自 </contrib>
- </author>
+ <author><personname><firstname>Mark</firstname><surname>Murray</surname></personname><contrib>原文来自 </contrib></author>
</authorgroup>
- </sect1info>
+ </info>
- <title><application>Kerberos5</application></title>
+
<para><application>Kerberos</application> 是一组附加的网络系统/协议,
用以让用户通过一台安全服务器提供的服务来验证身份。
@@ -1396,7 +1367,7 @@ sendmail : PARANOID : deny</programlisting>
软件包。 在 <acronym>US</acronym> 它被作为一种加密产品使用,
因而历史上曾经受到 <acronym>US</acronym> 出口管制。
<acronym>MIT</acronym> <application>Kerberos</application>
- 可以通过 port (<filename role="package">security/krb5</filename>)
+ 可以通过 port (<package>security/krb5</package>)
来安装和使用。 Heimdal
<application>Kerberos</application> 是另一种第 5 版实现,
并且明确地在
@@ -1404,7 +1375,7 @@ sendmail : PARANOID : deny</programlisting>
(因此在许多非商业的类 &unix; 系统中非常常用。
Heimdal <application>Kerberos</application> 软件包可以通过
port
- (<filename role="package">security/heimdal</filename>) 安装,
+ (<package>security/heimdal</package>) 安装,
最新的 &os; 的最小安装也会包含它。</para>
<para>为使尽可能多的读者从中受益, 这份说明以 &os; 附带的
@@ -1452,7 +1423,7 @@ kadmind5_server_enable="YES"</programlisting>
<para>请注意这个 <filename>/etc/krb5.conf</filename> 文件假定您的
<acronym>KDC</acronym> 有一个完整的主机名,
- 即 <hostid role="fqdn">kerberos.example.org</hostid>。
+ 即 <systemitem class="fqdomainname">kerberos.example.org</systemitem>。
如果您的 <acronym>KDC</acronym> 主机名与它不同,
则应添加一条 CNAME (别名) 项到 zone 中去。</para>
@@ -1465,7 +1436,7 @@ kadmind5_server_enable="YES"</programlisting>
default_realm = EXAMPLE.ORG</programlisting>
<para>将下面的内容加入到
- <hostid role="fqdn">example.org</hostid> zone 数据文件中:</para>
+ <systemitem class="fqdomainname">example.org</systemitem> zone 数据文件中:</para>
<programlisting>_kerberos._udp IN SRV 01 00 88 kerberos.example.org.
_kerberos._tcp IN SRV 01 00 88 kerberos.example.org.
@@ -1509,9 +1480,9 @@ Master key: <userinput>xxxxxxxx</userinput>
Verifying password - Master key: <userinput>xxxxxxxx</userinput>
&prompt.root; <userinput>kadmin -l</userinput>
-kadmin> <userinput>init EXAMPLE.ORG</userinput>
+kadmin&gt; <userinput>init EXAMPLE.ORG</userinput>
Realm max ticket life [unlimited]:
-kadmin> <userinput>add tillman</userinput>
+kadmin&gt; <userinput>add tillman</userinput>
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
@@ -1526,7 +1497,7 @@ Verifying password - Password: <userinput>xxxxxxxx</userinput></screen>
<acronym>KDC</acronym> 确实在正常工作, 使用
<acronym>KDC</acronym> 本身的功能:</para>
- <screen>&prompt.user; <userinput>kinit <replaceable>tillman</replaceable></userinput>
+ <screen>&prompt.user; <userinput>kinit tillman</userinput>
tillman@EXAMPLE.ORG's Password:
&prompt.user; <userinput>klist</userinput>
@@ -1590,12 +1561,12 @@ Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORG</screen>
keytab 中。 例如:</para>
<screen>&prompt.root; <userinput>kadmin</userinput>
-kadmin><userinput> add --random-key host/myserver.example.org</userinput>
+kadmin&gt;<userinput> add --random-key host/myserver.example.org</userinput>
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
-kadmin><userinput> ext host/myserver.example.org</userinput>
-kadmin><userinput> exit</userinput></screen>
+kadmin&gt;<userinput> ext host/myserver.example.org</userinput>
+kadmin&gt;<userinput> exit</userinput></screen>
<para>注意 <command>ext</command> 命令 (这是
<quote>extract</quote> 的简写) 默认会把导出的密钥放到
@@ -1605,13 +1576,13 @@ kadmin><userinput> exit</userinput></screen>
<command>kadmind</command> (例如基于安全理由) 因而无法远程地使用
<command>kadmin</command> 您可以直接在 <acronym>KDC</acronym>
上添加主机 principal
- (<username>host/myserver.EXAMPLE.ORG</username>) 随后将其导出到一个临时文件中
+ (<systemitem class="username">host/myserver.EXAMPLE.ORG</systemitem>) 随后将其导出到一个临时文件中
(以免覆盖 <acronym>KDC</acronym> 上的 <filename>/etc/krb5.keytab</filename>),
方法是使用下面的命令:</para>
<screen>&prompt.root; <userinput>kadmin</userinput>
-kadmin><userinput> ext --keytab=/tmp/example.keytab host/myserver.example.org</userinput>
-kadmin><userinput> exit</userinput></screen>
+kadmin&gt;<userinput> ext --keytab=/tmp/example.keytab host/myserver.example.org</userinput>
+kadmin&gt;<userinput> exit</userinput></screen>
<para>随后需要把 keytab 复制到服务器上
(例如使用 <command>scp</command> 或软盘)。
@@ -1693,15 +1664,15 @@ kadmin><userinput> exit</userinput></screen>
<para>在某个领域中的用户往往都有自己的
<application>Kerberos</application> principal (例如
- <username>tillman@EXAMPLE.ORG</username>) 并映射到本机用户帐户
- (例如本机上名为 <username>tillman</username> 的帐户)。
+ <systemitem class="username">tillman@EXAMPLE.ORG</systemitem>) 并映射到本机用户帐户
+ (例如本机上名为 <systemitem class="username">tillman</systemitem> 的帐户)。
客户端应用程序, 如
<command>telnet</command> 通常并不需要用户名或 principal。</para>
<para>不过, 有时您可能会需要赋予某些没有匹配 <application>Kerberos</application> principal
的人使用本地用户帐户的权限。 例如
- <username>tillman@EXAMPLE.ORG</username> 可能需要访问本地的
- <username>webdevelopers</username> 用户帐号。 其它
+ <systemitem class="username">tillman@EXAMPLE.ORG</systemitem> 可能需要访问本地的
+ <systemitem class="username">webdevelopers</systemitem> 用户帐号。 其它
principal 可能也会需要访问这个本地帐号。</para>
<para>用户 home 目录中的 <filename>.k5login</filename> 和
@@ -1714,7 +1685,7 @@ kadmin><userinput> exit</userinput></screen>
jdoe@example.org</screen>
<para>并放到了本地用户
- <username>webdevelopers</username> 的 home 目录中, 则列出的两个 principals
+ <systemitem class="username">webdevelopers</systemitem> 的 home 目录中, 则列出的两个 principals
都可以使用那个帐号, 而无须共享口令。</para>
<para>建议您在开始实施之前首先阅读这些命令的联机帮助。
@@ -1753,9 +1724,9 @@ jdoe@example.org</screen>
<listitem>
<para>如果您改变了主机名, 您还需要修改您的
- <username>host/</username> principal 并更新 keytab。
- 这一规律也适用于类似 Apache 的 <filename role="package">www/mod_auth_kerb</filename>
- 所使用的 <username>www/</username> principal 这样的特殊
+ <systemitem class="username">host/</systemitem> principal 并更新 keytab。
+ 这一规律也适用于类似 Apache 的 <package>www/mod_auth_kerb</package>
+ 所使用的 <systemitem class="username">www/</systemitem> principal 这样的特殊
keytab 项。</para>
</listitem>
@@ -1773,7 +1744,7 @@ jdoe@example.org</screen>
<listitem>
<para>某些作为客户使用您的 <acronym>KDC</acronym> 的操作系统可能没有将
<command>ksu</command> 设置为 setuid
- <username>root</username> 的权限。 这意味着
+ <systemitem class="username">root</systemitem> 的权限。 这意味着
<command>ksu</command> 将不能够正常工作,
从安全角度说这是一个不错的主意,
但可能令人烦恼。
@@ -1786,7 +1757,7 @@ jdoe@example.org</screen>
<application>Kerberos</application> 时, 如果希望允许一个
principal 拥有超过默认的十小时有效期的 ticket 则必须使用
<command>kadmin</command> 中的 <command>modify_principal</command>
- 来修改 principal 本身以及 <username>krbtgt</username>
+ 来修改 principal 本身以及 <systemitem class="username">krbtgt</systemitem>
的 maxlife(最大有效期)。
此后, principal 可以使用 <command>kinit</command> 的
<literal>-l</literal> 参数来请求一个有更长有效期的 ticket。</para>
@@ -1858,16 +1829,16 @@ jdoe@example.org</screen>
<para>完成同样工作的命令可能会有些许的不同。 推荐按照
<acronym>MIT</acronym>
<application>Kerberos</application> 的网站
- (<ulink url="http://web.mit.edu/Kerberos/www/"></ulink>)
+ (<uri xlink:href="http://web.mit.edu/Kerberos/www/">http://web.mit.edu/Kerberos/www/</uri>)
上的说明来操作。 请小心关于路径的问题,
<acronym>MIT</acronym> port 会默认安装到
- <filename class="directory">/usr/local/</filename>, 您因此可能会执行
+ <filename>/usr/local/</filename>, 您因此可能会执行
<quote>普通的</quote> 系统应用程序而非
<acronym>MIT</acronym>, 如果您的 <envar>PATH</envar> 环境变量把
把系统目录放在前面的话。</para>
<note><para>如果使用 &os; 提供的 <acronym>MIT</acronym>
- <filename role="package">security/krb5</filename> port,
+ <package>security/krb5</package> port,
一定要仔细阅读 port 所安装的
<filename>/usr/local/share/doc/krb5/README.FreeBSD</filename>,
如果您想知道为什么通过
@@ -1886,7 +1857,7 @@ kadmind5_server_enable="YES"</programlisting>
<para>这样做的原因是,
<acronym>MIT</acronym> kerberos 会将可执行文件装到
- <filename class="directory">/usr/local</filename>
+ <filename>/usr/local</filename>
之下。</para>
</sect2>
@@ -1918,8 +1889,7 @@ kadmind5_server_enable="YES"</programlisting>
<para>在多用户环境中
<application>Kerberos</application> 的安全性会被削弱。
- 这是因为它把 ticket 保存到 <filename
- class="directory">/tmp</filename> 目录中, 而这个目录可以被任何用户读取。
+ 这是因为它把 ticket 保存到 <filename>/tmp</filename> 目录中, 而这个目录可以被任何用户读取。
如果有用户与其它人同时共享一台计算机 (也就是 multi-user),
则这个用户的 ticket 就可能被其它用户窃取 (复制)。</para>
@@ -1966,7 +1936,7 @@ kadmind5_server_enable="YES"</programlisting>
这意味着种过木马的程序,例如
<command>kinit</command> 有可能记录用户所有的用户名和密码。
尽管如此, 可以用类似
- <filename role="package">security/tripwire</filename>
+ <package>security/tripwire</package>
这样的文件系统完整性检查工具来避免此类情况的发生。</para>
</sect3>
@@ -1982,47 +1952,42 @@ kadmind5_server_enable="YES"</programlisting>
<itemizedlist>
<listitem>
- <para><ulink
- url="http://www.faqs.org/faqs/Kerberos-faq/general/preamble.html">
- The <application>Kerberos</application> FAQ</ulink></para>
+ <para><link xlink:href="http://www.faqs.org/faqs/Kerberos-faq/general/preamble.html">
+ The <application>Kerberos</application> FAQ</link></para>
</listitem>
<listitem>
- <para><ulink url="http://web.mit.edu/Kerberos/www/dialogue.html">Designing
- an Authentication System: a Dialog in Four Scenes</ulink></para>
+ <para><link xlink:href="http://web.mit.edu/Kerberos/www/dialogue.html">Designing
+ an Authentication System: a Dialog in Four Scenes</link></para>
</listitem>
<listitem>
- <para><ulink url="http://www.ietf.org/rfc/rfc1510.txt?number=1510">RFC 1510,
+ <para><link xlink:href="http://www.ietf.org/rfc/rfc1510.txt?number=1510">RFC 1510,
The <application>Kerberos</application> Network Authentication Service
- (V5)</ulink></para>
+ (V5)</link></para>
</listitem>
<listitem>
- <para><ulink url="http://web.mit.edu/Kerberos/www/"><acronym>MIT</acronym>
- <application>Kerberos</application> home page</ulink></para>
+ <para><link xlink:href="http://web.mit.edu/Kerberos/www/"><acronym>MIT</acronym>
+ <application>Kerberos</application> home page</link></para>
</listitem>
<listitem>
- <para><ulink url="http://www.pdc.kth.se/heimdal/">Heimdal
- <application>Kerberos</application> home page</ulink></para>
+ <para><link xlink:href="http://www.pdc.kth.se/heimdal/">Heimdal
+ <application>Kerberos</application> home page</link></para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
- <sect1 id="openssl">
- <sect1info>
+ <sect1 xml:id="openssl">
+ <info><title>OpenSSL</title>
<authorgroup>
- <author>
- <firstname>Tom</firstname>
- <surname>Rhodes</surname>
- <contrib>作者 </contrib>
- </author>
+ <author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><contrib>作者 </contrib></author>
</authorgroup>
- </sect1info>
- <title>OpenSSL</title>
+ </info>
+
<indexterm>
<primary>安全</primary>
<secondary>OpenSSL</secondary>
@@ -2035,15 +2000,15 @@ kadmind5_server_enable="YES"</programlisting>
<para>对 <application>OpenSSL</application> 的一些常见用法包括加密邮件客户的身份验证过程,
基于 Web 的交易如信用卡等等。 许多 ports 如
- <filename role="package">www/apache13-ssl</filename>, 以及
- <filename role="package">mail/claws-mail</filename>
+ <package>www/apache13-ssl</package>, 以及
+ <package>mail/claws-mail</package>
等等都提供了编译进
<application>OpenSSL</application> 支持的方法。</para>
<note>
<para>绝大多数情况下 Ports Collection 会试图使用
- <filename role="package">security/openssl</filename>
- 除非明确地将 <makevar>WITH_OPENSSL_BASE</makevar> make
+ <package>security/openssl</package>
+ 除非明确地将 <varname>WITH_OPENSSL_BASE</varname> make
变量设置为 <quote>yes</quote>。</para>
</note>
@@ -2057,7 +2022,7 @@ kadmind5_server_enable="YES"</programlisting>
它在默认情况下是不编译的。 如果想使用它,
请查阅相应的授权, 如果认为授权可以接受, 则可以在
<filename>make.conf</filename> 中设置
- <makevar>MAKE_IDEA</makevar>。</para>
+ <varname>MAKE_IDEA</varname>。</para>
</note>
<para>为应用软件提供证书是
@@ -2066,7 +2031,7 @@ kadmind5_server_enable="YES"</programlisting>
如果证书没有被众多 <quote>权威发证机构</quote>,
或 <acronym>CA</acronym> 中的某一个确认,
则会产生一个警告。 权威发证机构通常是一家公司,
- 例如 <ulink url="http://www.verisign.com">VeriSign</ulink>,
+ 例如 <link xlink:href="http://www.verisign.com">VeriSign</link>,
它能够通过签署来证明个人或公司证书的有效性。
这个过程是需要付费的, 当然, 这不是使用证书的必要条件;
然而, 这样做会让那些比较偏执的用户感到轻松。</para>
@@ -2094,18 +2059,18 @@ There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
-Country Name (2 letter code) [AU]:<userinput><replaceable>US</replaceable></userinput>
-State or Province Name (full name) [Some-State]:<userinput><replaceable>PA</replaceable></userinput>
-Locality Name (eg, city) []:<userinput><replaceable>Pittsburgh</replaceable></userinput>
-Organization Name (eg, company) [Internet Widgits Pty Ltd]:<userinput><replaceable>My Company</replaceable></userinput>
-Organizational Unit Name (eg, section) []:<userinput><replaceable>Systems Administrator</replaceable></userinput>
-Common Name (eg, YOUR name) []:<userinput><replaceable>localhost.example.org</replaceable></userinput>
-Email Address []:<userinput><replaceable>trhodes@FreeBSD.org</replaceable></userinput>
+Country Name (2 letter code) [AU]:<userinput>US</userinput>
+State or Province Name (full name) [Some-State]:<userinput>PA</userinput>
+Locality Name (eg, city) []:<userinput>Pittsburgh</userinput>
+Organization Name (eg, company) [Internet Widgits Pty Ltd]:<userinput>My Company</userinput>
+Organizational Unit Name (eg, section) []:<userinput>Systems Administrator</userinput>
+Common Name (eg, YOUR name) []:<userinput>localhost.example.org</userinput>
+Email Address []:<userinput>trhodes@FreeBSD.org</userinput>
Please enter the following 'extra' attributes
to be sent with your certificate request
-A challenge password []:<userinput><replaceable>SOME PASSWORD</replaceable></userinput>
-An optional company name []:<userinput><replaceable>Another Name</replaceable></userinput></screen>
+A challenge password []:<userinput>SOME PASSWORD</userinput>
+An optional company name []:<userinput>Another Name</userinput></screen>
<para>请注意, 在
<quote>Common Name</quote> 提示后面我们输入的是一个域名。
@@ -2129,22 +2094,22 @@ An optional company name []:<userinput><replaceable>Another Name</replaceable></
也可以创建自行签名的证书。 首先,
需要生成 <acronym>RSA</acronym> 密钥:</para>
- <screen>&prompt.root; <userinput>openssl dsaparam -rand -genkey -out <filename>myRSA.key</filename> 1024</userinput></screen>
+ <screen>&prompt.root; <userinput>openssl dsaparam -rand -genkey -out myRSA.key 1024</userinput></screen>
<para>接下来, 生成 <acronym>CA</acronym> 密钥:</para>
- <screen>&prompt.root; <userinput>openssl gendsa -des3 -out <filename>myca.key</filename> <filename>myRSA.key</filename></userinput></screen>
+ <screen>&prompt.root; <userinput>openssl gendsa -des3 -out myca.key myRSA.key</userinput></screen>
<para>然后用这个密钥来创建证书:</para>
- <screen>&prompt.root; <userinput>openssl req -new -x509 -days 365 -key <filename>myca.key</filename> -out <filename>new.crt</filename></userinput></screen>
+ <screen>&prompt.root; <userinput>openssl req -new -x509 -days 365 -key myca.key -out new.crt</userinput></screen>
<para>上述步骤将在当前目录中生成两个新文件:
一个是权威发证机构的签名文件, <filename>myca.key</filename>;
另一个是证书本身, <filename>new.crt</filename>。
这些文件应该放到同一个目录中, 一般而言, 推荐放到
- <filename class="directory">/etc</filename>,
- 并且只允许 <username>root</username> 读取。
+ <filename>/etc</filename>,
+ 并且只允许 <systemitem class="username">root</systemitem> 读取。
建议把权限设置为 0700, 这可以通过 <command>chmod</command>
工具来完成。</para>
</sect2>
@@ -2173,14 +2138,14 @@ define(`confSERVER_CERT',`/etc/certs/new.crt')dnl
define(`confSERVER_KEY',`/etc/certs/myca.key')dnl
define(`confTLS_SRV_OPTIONS', `V')dnl</programlisting>
- <para>这里, <filename class="directory">/etc/certs/</filename>
+ <para>这里, <filename>/etc/certs/</filename>
是准备用来在本地保存证书和密钥的位置。 最后,
需要重新生成本地的 <filename>.cf</filename> 文件。
这一工作可以简单地通过在
目录中执行 <command>make</command>
- <maketarget>install</maketarget> 来完成。
+ <buildtarget>install</buildtarget> 来完成。
接下来, 可以使用 <command>make</command>
- <maketarget>restart</maketarget> 来重新启动
+ <buildtarget>restart</buildtarget> 来重新启动
<application>Sendmail</application> 服务程序。</para>
<para>如果一切正常的话, 在
@@ -2189,12 +2154,12 @@ define(`confTLS_SRV_OPTIONS', `V')dnl</programlisting>
<para>做一个简单的测试, 使用 &man.telnet.1; 来连接邮件服务器:</para>
- <screen>&prompt.root; <userinput>telnet <replaceable>example.com</replaceable> 25</userinput>
+ <screen>&prompt.root; <userinput>telnet example.com 25</userinput>
Trying 192.0.34.166...
-Connected to <hostid role="fqdn">example.com</hostid>.
+Connected to <systemitem class="fqdomainname">example.com</systemitem>.
Escape character is '^]'.
-220 <hostid role="fqdn">example.com</hostid> ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
-<userinput>ehlo <replaceable>example.com</replaceable></userinput>
+220 <systemitem class="fqdomainname">example.com</systemitem> ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
+<userinput>ehlo example.com</userinput>
250-example.com Hello example.com [192.0.34.166], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
@@ -2207,28 +2172,23 @@ Escape character is '^]'.
250-DELIVERBY
250 HELP
<userinput>quit</userinput>
-221 2.0.0 <hostid role="fqdn">example.com</hostid> closing connection
+221 2.0.0 <systemitem class="fqdomainname">example.com</systemitem> closing connection
Connection closed by foreign host.</screen>
<para>如果输出中出现了 <quote>STARTTLS</quote> 则说明一切正常。</para>
</sect2>
</sect1>
- <sect1 id="ipsec">
- <sect1info>
+ <sect1 xml:id="ipsec">
+ <info><title>IPsec 上的 VPN</title>
<authorgroup>
- <author>
- <firstname>Nik</firstname>
- <surname>Clayton</surname>
- <affiliation>
+ <author><personname><firstname>Nik</firstname><surname>Clayton</surname></personname><affiliation>
<address><email>nik@FreeBSD.org</email></address>
- </affiliation>
- <contrib>撰写者 </contrib>
- </author>
+ </affiliation><contrib>撰写者 </contrib></author>
</authorgroup>
- </sect1info>
+ </info>
- <title>IPsec 上的 VPN</title>
+
<indexterm>
<primary>IPsec</primary>
@@ -2237,20 +2197,15 @@ Connection closed by foreign host.</screen>
<para>使用 FreeBSD 网关在两个被 Internet 分开的网络之间架设 VPN。</para>
<sect2>
- <sect2info>
+ <info><title>理解 IPsec</title>
<authorgroup>
- <author>
- <firstname>Hiten M.</firstname>
- <surname>Pandya</surname>
- <affiliation>
+ <author><personname><firstname>Hiten M.</firstname><surname>Pandya</surname></personname><affiliation>
<address><email>hmp@FreeBSD.org</email></address>
- </affiliation>
- <contrib>撰写者 </contrib>
- </author>
+ </affiliation><contrib>撰写者 </contrib></author>
</authorgroup>
- </sect2info>
+ </info>
- <title>理解 IPsec</title>
+
<para>这一节将指导您完成架设 IPsec。为了配置
IPsec, 您应当熟悉如何编译一个定制的内核的一些概念
@@ -2261,7 +2216,7 @@ Connection closed by foreign host.</screen>
协议 (IP) 层之上的协议。 它能够让两个或更多主机以安全的方式来通讯
(并因此而得名)。
FreeBSD IPsec <quote>网络协议栈</quote> 基于
- <ulink url="http://www.kame.net/">KAME</ulink> 的实现,
+ <link xlink:href="http://www.kame.net/">KAME</link> 的实现,
它支持两种协议族, IPv4 和 IPv6。</para>
<indexterm>
@@ -2372,53 +2327,48 @@ options IPSEC_DEBUG #debug for IP security
<listitem>
<para>网络的内部地址可以是公网或私有的 IP 地址,
这并不是问题。它们并不冲突,比如它们不同时使用
- <hostid role="ipaddr">192.168.1.x</hostid>
+ <systemitem class="ipaddress">192.168.1.x</systemitem>
这样的地址。</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
- <sect2info>
+ <info><title>在 &os; 上配置 IPsec</title>
<authorgroup>
- <author>
- <firstname>Tom</firstname>
- <surname>Rhodes</surname>
- <affiliation>
+ <author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><affiliation>
<address><email>trhodes@FreeBSD.org</email></address>
- </affiliation>
- <contrib>作者</contrib>
- </author>
+ </affiliation><contrib>作者</contrib></author>
</authorgroup>
- </sect2info>
+ </info>
- <title>在 &os; 上配置 IPsec</title>
+
<para>开始需先从 Ports Collection 安装
- <filename role="package">security/ipsec-tools</filename>。
+ <package>security/ipsec-tools</package>。
这个第三方软件提供了一些能够帮助配置的应用程序。</para>
<para>下一步是创建两个 &man.gif.4;
伪设备用来在两个网络间传输数据包的 <quote>隧道</quote>。
- 使用 <username>root</username> 身份运行以下命令,
+ 使用 <systemitem class="username">root</systemitem> 身份运行以下命令,
并用真实的内部外部网关替换命令中的
<replaceable>internal</replaceable> 和
<replaceable>external</replaceable> 项:</para>
<screen>&prompt.root; <userinput>ifconfig gif0 create</userinput></screen>
- <screen>&prompt.root; <userinput>ifconfig gif0 <replaceable>internal1 internal2</replaceable></userinput></screen>
- <screen>&prompt.root; <userinput>ifconfig gif0 tunnel <replaceable>external1 external2</replaceable></userinput></screen>
+ <screen>&prompt.root; <userinput>ifconfig gif0 internal1 internal2</userinput></screen>
+ <screen>&prompt.root; <userinput>ifconfig gif0 tunnel external1 external2</userinput></screen>
<para>比如,公司 <acronym>LAN</acronym> 对外的
<acronym>IP</acronym> 地址是
- <hostid role="ipaddr">172.16.5.4</hostid>,
+ <systemitem class="ipaddress">172.16.5.4</systemitem>,
内部的 <acronym>IP</acronym> 地址为
- <hostid role="ipaddr">10.246.38.1</hostid>。
+ <systemitem class="ipaddress">10.246.38.1</systemitem>。
家庭 <acronym>LAN</acronym> 对外的
<acronym>IP</acronym> 地址是
- <hostid role="ipaddr">192.168.1.12</hostid>,
+ <systemitem class="ipaddress">192.168.1.12</systemitem>,
内部的 <acronym>IP</acronym> 地址为
- <hostid role="ipaddr">10.0.0.5</hostid>。</para>
+ <systemitem class="ipaddress">10.0.0.5</systemitem>。</para>
<para>这看起来可能有些混乱,所以我们通过
&man.ifconfig.8; 命令输出再回顾一下:</para>
@@ -2466,11 +2416,11 @@ round-trip min/avg/max/stddev = 28.106/94.594/154.524/49.814 ms</programlisting>
两个网关都必须配置路由规则以正确传输两边的网络流量。
下面的命令可以实现这个:</para>
- <screen>&prompt.root; <userinput>corp-net# route add <replaceable>10.0.0.0 10.0.0.5 255.255.255.0</replaceable></userinput></screen>
- <screen>&prompt.root; <userinput>corp-net# route add net <replaceable>10.0.0.0: gateway 10.0.0.5</replaceable></userinput></screen>
+ <screen>&prompt.root; <userinput>corp-net# route add 10.0.0.0 10.0.0.5 255.255.255.0</userinput></screen>
+ <screen>&prompt.root; <userinput>corp-net# route add net 10.0.0.0: gateway 10.0.0.5</userinput></screen>
- <screen>&prompt.root; <userinput>priv-net# route add <replaceable>10.246.38.0 10.246.38.1 255.255.255.0</replaceable></userinput></screen>
- <screen>&prompt.root; <userinput>priv-net# route add host <replaceable>10.246.38.0: gateway 10.246.38.1</replaceable></userinput></screen>
+ <screen>&prompt.root; <userinput>priv-net# route add 10.246.38.0 10.246.38.1 255.255.255.0</userinput></screen>
+ <screen>&prompt.root; <userinput>priv-net# route add host 10.246.38.0: gateway 10.246.38.1</userinput></screen>
<para>此刻,不论从网关还是网关后的机器都能访问内部的网络。
这很容易通过以下的例子确认:</para>
@@ -2608,7 +2558,7 @@ Foreground mode.
命令查看网络流量。根据需要替换掉下面的
<literal>em0</literal> 网卡界面。</para>
- <screen>&prompt.root; <userinput>tcpdump -i em0 host <replaceable>172.16.5.4 and dst 192.168.1.12</replaceable></userinput></screen>
+ <screen>&prompt.root; <userinput>tcpdump -i em0 host 172.16.5.4 and dst 192.168.1.12</userinput></screen>
<para>控制台上能看到如下类似的输出。如果不是这样的话,
可能就有些问题了,调试的话需要用到返回的数据。</para>
@@ -2657,19 +2607,15 @@ racoon_enable="yes"</programlisting>
</sect2>
</sect1>
- <sect1 id="openssh">
- <sect1info>
+ <sect1 xml:id="openssh">
+ <info><title>OpenSSH</title>
<authorgroup>
- <author>
- <firstname>Chern</firstname>
- <surname>Lee</surname>
- <contrib>原著 </contrib>
- </author>
+ <author><personname><firstname>Chern</firstname><surname>Lee</surname></personname><contrib>原著 </contrib></author>
<!-- 21 April 2001 -->
</authorgroup>
- </sect1info>
+ </info>
- <title>OpenSSH</title>
+
<indexterm><primary>OpenSSH</primary></indexterm>
<indexterm>
<primary>安全</primary>
@@ -2728,7 +2674,7 @@ racoon_enable="yes"</programlisting>
<para>&man.ssh.1; 的工作方式和
&man.rlogin.1; 非常类似。</para>
- <screen>&prompt.root; <userinput>ssh <replaceable>user@example.com</replaceable></userinput>
+ <screen>&prompt.root; <userinput>ssh user@example.com</userinput>
Host key not found from the list of known hosts.
Are you sure you want to continue connecting (yes/no)? <userinput>yes</userinput>
Host 'example.com' added to the list of known hosts.
@@ -2765,7 +2711,7 @@ user@example.com's password: <userinput>*******</userinput></screen>
&man.rcp.1;; 的用法类似, 它用于将文件复制到远程的机器上, 或复制过来,
区别是它是安全的。</para>
- <screen>&prompt.root; <userinput> scp <replaceable>user@example.com:/COPYRIGHT COPYRIGHT</replaceable></userinput>
+ <screen>&prompt.root; <userinput> scp user@example.com:/COPYRIGHT COPYRIGHT</userinput>
user@example.com's password: <userinput>*******</userinput>
COPYRIGHT 100% |*****************************| 4735
00:00
@@ -2789,7 +2735,7 @@ COPYRIGHT 100% |*****************************| 4735
</indexterm>
<para>针对 <application>OpenSSH</application> 服务程序和客户端的系统级配置文件在
- <filename class="directory">/etc/ssh</filename>
+ <filename>/etc/ssh</filename>
目录中。</para>
<para><filename>ssh_config</filename> 用于配置客户端的设定,
@@ -2801,13 +2747,13 @@ COPYRIGHT 100% |*****************************| 4735
选项提供了更多的配置选择。</para>
</sect2>
- <sect2 id="security-ssh-keygen">
+ <sect2 xml:id="security-ssh-keygen">
<title>ssh-keygen</title>
<para>用于取代口令的一种方法是使用 &man.ssh-keygen.1; 来生成
DSA 或 RSA 密钥对用于验证用户的身份:</para>
- <screen>&prompt.user; <userinput>ssh-keygen -t <replaceable>dsa</replaceable></userinput>
+ <screen>&prompt.user; <userinput>ssh-keygen -t dsa</userinput>
Generating public/private dsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_dsa):
Created directory '/home/user/.ssh'.
@@ -2854,7 +2800,7 @@ bb:48:db:f2:93:57:80:b6:aa:bc:f5:d5:ba:8f:79:17 user@host.example.com
你需要参阅 &man.ssh-keygen.1; 联机手册。</para></warning>
</sect2>
- <sect2 id="security-ssh-agent">
+ <sect2 xml:id="security-ssh-agent">
<title>ssh-agent 和 ssh-add</title>
<para>&man.ssh-agent.1; 和 &man.ssh-add.1; 这两个工具,
@@ -2891,7 +2837,7 @@ Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa)
随后您就可以运行 &man.ssh-add.1; 来加载全部 SSH 密钥了。</para>
</sect2>
- <sect2 id="security-ssh-tunneling">
+ <sect2 xml:id="security-ssh-tunneling">
<title>SSH 隧道</title>
<indexterm>
<primary>OpenSSH</primary>
@@ -2902,7 +2848,7 @@ Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa)
<para>下面的命令告诉 &man.ssh.1; 为 <application>telnet</application> 创建一个隧道:</para>
- <screen>&prompt.user; <userinput>ssh -2 -N -f -L <replaceable>5023:localhost:23 user@foo.example.com</replaceable></userinput>
+ <screen>&prompt.user; <userinput>ssh -2 -N -f -L 5023:localhost:23 user@foo.example.com</userinput>
&prompt.user;</screen>
<para>上述 <command>ssh</command> 命令使用了下面这些选项:</para>
@@ -2955,11 +2901,11 @@ Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa)
<para>SSH 隧道通过监听
- <hostid>localhost</hostid> 上面指定端口来完成工作。
+ <systemitem>localhost</systemitem> 上面指定端口来完成工作。
它将把本机主机/端口上接收到的连接通过 SSH 连接转发到远程主机/端口。</para>
- <para>本例中, 位于 <hostid>localhost</hostid> 的 <replaceable>5023</replaceable> 端口
- 被用于转发 <hostid>localhost</hostid> 的连接到远程主机的
+ <para>本例中, 位于 <systemitem>localhost</systemitem> 的 <replaceable>5023</replaceable> 端口
+ 被用于转发 <systemitem>localhost</systemitem> 的连接到远程主机的
<replaceable>23</replaceable> 端口。
由于 <replaceable>23</replaceable> 是 <application>telnet</application> 使用的,
因此它将通过 SSH 隧道完成 <application>telnet</application> 会话。</para>
@@ -2970,7 +2916,7 @@ Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa)
<example>
<title>使用 SSH 为 SMTP 创建安全隧道</title>
- <screen>&prompt.user; <userinput>ssh -2 -N -f -L <replaceable>5025:localhost:25 user@mailserver.example.com</replaceable></userinput>
+ <screen>&prompt.user; <userinput>ssh -2 -N -f -L 5025:localhost:25 user@mailserver.example.com</userinput>
user@mailserver.example.com's password: <userinput>*****</userinput>
&prompt.user; <userinput>telnet localhost 5025</userinput>
Trying 127.0.0.1...
@@ -2997,13 +2943,13 @@ Escape character is '^]'.
解决方法是创建一个到办公室 SSH 服务器的连接,
并通过这个连接来访问 POP3 服务:</para>
- <screen>&prompt.user; <userinput>ssh -2 -N -f -L <replaceable>2110:mail.example.com:110 user@ssh-server.example.com</replaceable></userinput>
+ <screen>&prompt.user; <userinput>ssh -2 -N -f -L 2110:mail.example.com:110 user@ssh-server.example.com</userinput>
user@ssh-server.example.com's password: <userinput>******</userinput></screen>
<para>当这个通道连上时, 您可以把 POP3 请求发到
- <hostid>localhost</hostid> 端口 2110。
+ <systemitem>localhost</systemitem> 端口 2110。
这个连接将通过通道安全地转发到
- <hostid>mail.example.com</hostid>。</para>
+ <systemitem>mail.example.com</systemitem>。</para>
</sect4>
<sect4>
@@ -3022,12 +2968,12 @@ user@ssh-server.example.com's password: <userinput>******</userinput></screen>
<para>解决方法是建立一个到您的网络的防火墙之外的网络上的 SSH
服务器, 并通过它提供的通道连接到 Ogg Vorbis 服务器上。</para>
- <screen>&prompt.user; <userinput>ssh -2 -N -f -L <replaceable>8888:music.example.com:8000 user@unfirewalled-system.example.org</replaceable></userinput>
+ <screen>&prompt.user; <userinput>ssh -2 -N -f -L 8888:music.example.com:8000 user@unfirewalled-system.example.org</userinput>
user@unfirewalled-system.example.org's password: <userinput>*******</userinput></screen>
<para>现在您可以把客户程序指定到
- <hostid>localhost</hostid> 的 8888 端口, 它将把请求转发给
- <hostid>music.example.com</hostid> 的 8000
+ <systemitem>localhost</systemitem> 的 8888 端口, 它将把请求转发给
+ <systemitem>music.example.com</systemitem> 的 8000
端口, 从而绕过防火墙。</para>
</sect4>
</sect3>
@@ -3038,13 +2984,13 @@ user@unfirewalled-system.example.org's password: <userinput>*******</userinput><
<para>通常限制哪些用户能够登录, 以及从何处登录会是好主意。
采用 <literal>AllowUsers</literal> 选项能够方便地达到这一目的。
- 例如, 想要只允许 <username>root</username> 用户从
- <hostid role="ipaddr">192.168.1.32</hostid> 登录, 就可以在
+ 例如, 想要只允许 <systemitem class="username">root</systemitem> 用户从
+ <systemitem class="ipaddress">192.168.1.32</systemitem> 登录, 就可以在
<filename>/etc/ssh/sshd_config</filename> 文件中加入下述设置:</para>
<programlisting>AllowUsers root@192.168.1.32</programlisting>
- <para>要允许用户 <username>admin</username> 从任何地方登录,
+ <para>要允许用户 <systemitem class="username">admin</systemitem> 从任何地方登录,
则只需列出用户名:</para>
<programlisting>AllowUsers admin</programlisting>
@@ -3066,25 +3012,21 @@ user@unfirewalled-system.example.org's password: <userinput>*******</userinput><
<sect2>
<title>进一步的资料</title>
- <para><ulink url="http://www.openssh.com/">OpenSSH</ulink></para>
+ <para><link xlink:href="http://www.openssh.com/">OpenSSH</link></para>
<para>&man.ssh.1; &man.scp.1; &man.ssh-keygen.1;
&man.ssh-agent.1; &man.ssh-add.1; &man.ssh.config.5;</para>
<para>&man.sshd.8; &man.sftp-server.8; &man.sshd.config.5;</para>
</sect2>
</sect1>
- <sect1 id="fs-acl">
- <sect1info>
+ <sect1 xml:id="fs-acl">
+ <info><title>文件系统访问控制表</title>
<authorgroup>
- <author>
- <firstname>Tom</firstname>
- <surname>Rhodes</surname>
- <contrib>作者 </contrib>
- </author>
+ <author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><contrib>作者 </contrib></author>
</authorgroup>
- </sect1info>
+ </info>
- <title>文件系统访问控制表</title>
+
<indexterm>
<primary>ACL</primary>
@@ -3158,10 +3100,7 @@ drwxrwx---+ 2 robert robert 512 Dec 22 10:20 directory2
drwxrwx---+ 2 robert robert 512 Dec 27 11:57 directory3
drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html</programlisting>
- <para>这里我们看到了 <filename
- class="directory">directory1</filename>、 <filename
- class="directory">directory2</filename>, 以及 <filename
- class="directory">directory3</filename>
+ <para>这里我们看到了 <filename>directory1</filename>、 <filename>directory2</filename>, 以及 <filename>directory3</filename>
目录使用了 <acronym>ACL</acronym>。 而
<filename>public_html</filename> 则没有。</para>
@@ -3172,7 +3111,7 @@ drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html</programlisting>
&man.getfacl.1; 工具来查看。 例如, 如果想查看 <filename>test</filename> 的
<acronym>ACL</acronym> 设置, 所用的命令是:</para>
- <screen>&prompt.user; <userinput>getfacl <filename>test</filename></userinput>
+ <screen>&prompt.user; <userinput>getfacl test</userinput>
#file:
#owner:1001
#group:1001
@@ -3183,36 +3122,32 @@ drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html</programlisting>
<para>要修改这个文件上的 <acronym>ACL</acronym> 设置,
则需要使用 &man.setfacl.1; 工具。 例如:</para>
- <screen>&prompt.user; <userinput>setfacl -k <filename>test</filename></userinput></screen>
+ <screen>&prompt.user; <userinput>setfacl -k test</userinput></screen>
<para><option>-k</option> 参数将把所有当前定义的
<acronym>ACL</acronym> 从文件或文件系统中删除。
一般来说应该使用 <option>-b</option> 因为它会保持让
<acronym>ACL</acronym> 正常工作的那些项不变。</para>
- <screen>&prompt.user; <userinput>setfacl -m u:trhodes:rwx,group:web:r--,o::--- <filename>test</filename></userinput></screen>
+ <screen>&prompt.user; <userinput>setfacl -m u:trhodes:rwx,group:web:r--,o::--- test</userinput></screen>
<para>在前面的命令中, <literal>-m</literal>
选项被用来修改默认的 <acronym>ACL</acronym> 项。由于已经被先前的命令
删除,因此没有预先定义的项,于是默认的选项被恢复,并附加上指定的选项。
请小心地检查,如果您加入了一个不存在的用户或组,那么将会在
- <devicename>stdout</devicename> 得到一条 <errorname>Invalid argument</errorname>
+ <filename>stdout</filename> 得到一条 <errorname>Invalid argument</errorname>
的错误提示。</para>
</sect2>
</sect1>
- <sect1 id="security-portaudit">
- <sect1info>
+ <sect1 xml:id="security-portaudit">
+ <info><title>监视第三方安全问题</title>
<authorgroup>
- <author>
- <firstname>Tom</firstname>
- <surname>Rhodes</surname>
- <contrib>Contributed by </contrib>
- </author>
+ <author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><contrib>Contributed by </contrib></author>
</authorgroup>
- </sect1info>
+ </info>
- <title>监视第三方安全问题</title>
+
<indexterm>
<primary>Portaudit</primary>
@@ -3229,7 +3164,7 @@ drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html</programlisting>
并警告管理员存在已知的安全问题的方法也就应运而生。 名为
<application>Portaudit</application> 的 &os; 附加工具能够帮助您达成这一目的。</para>
- <para><filename role="package">ports-mgmt/portaudit</filename> port
+ <para><package>ports-mgmt/portaudit</package> port
会下载一个数据库, 这一数据库是由 &os; Security
Team 和 ports 开发人员维护的, 其中包含了已知的安全问题。</para>
@@ -3241,7 +3176,7 @@ drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html</programlisting>
<para>在安装过程中,
&man.periodic.8; 的配置文件将被修改, 以便让
<application>Portaudit</application> 能够在每天的安全审计过程中运行。
- 一定要保证发到 <username>root</username> 帐号的每日安全审计邮件确实有人在读。
+ 一定要保证发到 <systemitem class="username">root</systemitem> 帐号的每日安全审计邮件确实有人在读。
除此之外不需要进行更多的配置了。</para>
<para>安装完成之后, 管理员可以通过下面的命令来更新数据库,
@@ -3282,18 +3217,14 @@ You are advised to update or deinstall the affected package(s) immediately.</pro
来非常有效地工作。</para>
</sect1>
- <sect1 id="security-advisories">
- <sect1info>
+ <sect1 xml:id="security-advisories">
+ <info><title>&os; 安全公告</title>
<authorgroup>
- <author>
- <firstname>Tom</firstname>
- <surname>Rhodes</surname>
- <contrib>作者 </contrib>
- </author>
+ <author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><contrib>作者 </contrib></author>
</authorgroup>
- </sect1info>
+ </info>
- <title>&os; 安全公告</title>
+
<indexterm>
<primary>FreeBSD 安全公告</primary>
@@ -3314,13 +3245,13 @@ You are advised to update or deinstall the affected package(s) immediately.</pro
FreeBSD-SA-XX:XX.UTIL Security Advisory
The FreeBSD Project
-Topic: denial of service due to some problem<co id="co-topic"/>
+Topic: denial of service due to some problem<co xml:id="co-topic"/>
-Category: core<co id="co-category"/>
-Module: sys<co id="co-module"/>
-Announced: 2003-09-23<co id="co-announce"/>
-Credits: Person<co id="co-credit"/>
-Affects: All releases of &os;<co id="co-affects"/>
+Category: core<co xml:id="co-category"/>
+Module: sys<co xml:id="co-module"/>
+Announced: 2003-09-23<co xml:id="co-announce"/>
+Credits: Person<co xml:id="co-credit"/>
+Affects: All releases of &os;<co xml:id="co-affects"/>
&os; 4-STABLE prior to the correction date
Corrected: 2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE)
2003-09-23 20:08:42 UTC (RELENG_5_1, 5.1-RELEASE-p6)
@@ -3330,33 +3261,33 @@ Corrected: 2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE)
2003-09-23 16:49:46 UTC (RELENG_4_6, 4.6-RELEASE-p21)
2003-09-23 16:51:24 UTC (RELENG_4_5, 4.5-RELEASE-p33)
2003-09-23 16:52:45 UTC (RELENG_4_4, 4.4-RELEASE-p43)
- 2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39)<co id="co-corrected"/>
-<acronym>CVE</acronym> Name: CVE-XXXX-XXXX<co id="co-cve"/>
+ 2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39)<co xml:id="co-corrected"/>
+<acronym>CVE</acronym> Name: CVE-XXXX-XXXX<co xml:id="co-cve"/>
For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit
http://www.FreeBSD.org/security/.
-I. Background<co id="co-backround"/>
+I. Background<co xml:id="co-backround"/>
-II. Problem Description<co id="co-descript"/>
+II. Problem Description<co xml:id="co-descript"/>
-III. Impact<co id="co-impact"/>
+III. Impact<co xml:id="co-impact"/>
-IV. Workaround<co id="co-workaround"/>
+IV. Workaround<co xml:id="co-workaround"/>
-V. Solution<co id="co-solution"/>
+V. Solution<co xml:id="co-solution"/>
-VI. Correction details<co id="co-details"/>
+VI. Correction details<co xml:id="co-details"/>
-VII. References<co id="co-ref"/></programlisting>
+VII. References<co xml:id="co-ref"/></programlisting>
<calloutlist>
@@ -3397,7 +3328,7 @@ VII. References<co id="co-ref"/></programlisting>
<callout arearefs="co-affects">
<para>The <literal>Affects</literal>(影响范围) 一栏给出了 &os; 的哪些版本存在这个漏洞。
对于内核来说, 检视受影响的文件上执行的 <command>ident</command> 输出可以帮助确认文件版本。
- 对于 ports, 版本号在 <filename class="directory">/var/db/pkg</filename>
+ 对于 ports, 版本号在 <filename>/var/db/pkg</filename>
里面的 port 的名字后面列出。
如果系统没有与 &os; <acronym>CVS</acronym> 代码库同步并每日构建,
它很可能是有问题的。</para>
@@ -3454,18 +3385,14 @@ VII. References<co id="co-ref"/></programlisting>
</sect2>
</sect1>
- <sect1 id="security-accounting">
- <sect1info>
+ <sect1 xml:id="security-accounting">
+ <info><title>进程记帐</title>
<authorgroup>
- <author>
- <firstname>Tom</firstname>
- <surname>Rhodes</surname>
- <contrib>Contributed by </contrib>
- </author>
+ <author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><contrib>Contributed by </contrib></author>
</authorgroup>
- </sect1info>
+ </info>
- <title>进程记帐</title>
+
<indexterm>
<primary>进程记帐</primary>
@@ -3486,11 +3413,11 @@ VII. References<co id="co-ref"/></programlisting>
<para>在使用进程记帐之前, 必须先启用它。
要完成这项工作, 需要运行下面的命令:</para>
- <screen>&prompt.root; <userinput>touch <filename>/var/account/acct</filename></userinput>
+ <screen>&prompt.root; <userinput>touch /var/account/acct</userinput>
-&prompt.root; <userinput>accton <filename>/var/account/acct</filename></userinput>
+&prompt.root; <userinput>accton /var/account/acct</userinput>
-&prompt.root; <userinput>echo 'accounting_enable="YES"' &gt;&gt; <filename>/etc/rc.conf</filename></userinput></screen>
+&prompt.root; <userinput>echo 'accounting_enable="YES"' &gt;&gt; /etc/rc.conf</userinput></screen>
<para>一旦启用之后, 记帐就会开始跟踪
<acronym>CPU</acronym> 统计数据、 命令, 等等。
@@ -3506,9 +3433,9 @@ VII. References<co id="co-ref"/></programlisting>
上的用户信息, 例如:</para>
<screen>&prompt.root; <userinput>lastcomm ls
- <username>trhodes</username> ttyp1</userinput></screen>
+ trhodes ttyp1</userinput></screen>
- <para>将会显示出所有已知的 <username>trhodes</username>
+ <para>将会显示出所有已知的 <systemitem class="username">trhodes</systemitem>
在 <literal>ttyp1</literal> 终端上执行 <command>ls</command> 的情况。</para>
<para>更多的可用选项在联机手册