diff options
author | Xin LI <delphij@FreeBSD.org> | 2009-02-24 20:00:44 +0000 |
---|---|---|
committer | Xin LI <delphij@FreeBSD.org> | 2009-02-24 20:00:44 +0000 |
commit | cd9e51b0196fe04568417a7c678df62909ec3162 (patch) | |
tree | f625bdcd32673958991375b10f688cebc55234b5 /zh_CN.GB2312/books/handbook/security/chapter.sgml | |
parent | b227896c2086858857f74cc7ff9bf8fb0f6025ca (diff) |
Notes
Diffstat (limited to 'zh_CN.GB2312/books/handbook/security/chapter.sgml')
-rw-r--r-- | zh_CN.GB2312/books/handbook/security/chapter.sgml | 76 |
1 files changed, 56 insertions, 20 deletions
diff --git a/zh_CN.GB2312/books/handbook/security/chapter.sgml b/zh_CN.GB2312/books/handbook/security/chapter.sgml index 597be3468e..eb7e781336 100644 --- a/zh_CN.GB2312/books/handbook/security/chapter.sgml +++ b/zh_CN.GB2312/books/handbook/security/chapter.sgml @@ -2,7 +2,7 @@ The FreeBSD Documentation Project The FreeBSD Simplified Chinese Project - Original Revision: 1.332 + Original Revision: 1.334 $FreeBSD$ --> @@ -502,25 +502,61 @@ <indexterm> <primary><command>sysctl</command></primary> </indexterm> - <para>但即使已经关掉了 <devicename>bpf</devicename> - 设备,您仍然需要担心 - <filename>/dev/mem</filename> 和 <filename>/dev/kmem</filename> 。 - 就事论事地说,攻击者仍然能够通过直接访问的方式写入磁盘设备。同样地, - 还有一个被称作模块加载器, &man.kldload.8; 的机制,也会包含潜在的危险。 - 尝试入侵企业网络的入侵者会尝试在正在运行的内核上安装他自己的 - <devicename>bpf</devicename> 设备,或其他听包设备。为了防止这些问题, - 需要抬高内核安全级, 至少调整到 1。 可以通过对 <varname>kern.securelevel</varname> - 执行 <command>sysctl</command> 来完成这个任务。 一旦把安全级调整到1, - 对于直接访问设备的写入操作将被拒绝, 而特殊的 <command>chflags</command> - 标记, 如 <literal>schg</literal>, 也将强制执行。 一定要在重要的启动执行文件、 - 目录和脚本文件上设置 <literal>schg</literal> 标记 — - 不要漏过在安全级生效之前将被运行的任何文件。 这可能做得有些过火, - 并将导致在较高安全级上运行时升级系统变得困难。 您也可以略微做些妥协, - 即以较高的安全级运行, 但并不将系统文件和目录配置为 <literal>schg</literal>。 - 另一种可行的方法是把 - <filename>/</filename> 和 <filename>/usr</filename> 以只读方式挂接。 - 请注意, 如果保护措施做的过分的严苛, 则可能导致入侵检测无法进行, - 而这种检测是安全中十分重要的一环。</para> + <para>但是, 即使您关闭了 <devicename>bpf</devicename> + 设备, 仍需要关注 + <filename>/dev/mem</filename> 和 + <filename>/dev/kmem</filename>。 就事论事地说, + 入侵者仍然能通过直接访问的方式写入磁盘设备。 另外, + 还有一个称作模块加载器的内核机制, &man.kldload.8;。 + 有进取心的入侵者, 可以经由这一机制, + 在正在运行的内核中通过 KLD 模块来安装自己的 <devicename>bpf</devicename>, + 或其它听包设备。 为了避免这些问题, 您必须将内核的安全级别提高到至少 1。</para> + + <para>内核的安全级别可以通过多种方式来设置。 最简单的设置正在运行的内核安全级的方法, + 是使用 <command>sysctl</command> 来设置内核变量 + <varname>kern.securelevel</varname>:</para> + + <screen>&prompt.root; <userinput>sysctl kern.securelevel=<replaceable>1</replaceable></userinput></screen> + + <para>默认情况下, &os; 内核启动时的安全级别是 -1。 + 除非管理员或 &man.init.8; 由于启动脚本加以改变, 安全级别会继续保持为 -1。 + 在系统启动过程中, 可以在 <filename>/etc/rc.conf</filename> 文件中, + 将变量 <varname>kern_securelevel_enable</varname> 变量设置为 + <literal>YES</literal> 并将 <varname>kern_securelevel</varname> + 变量设置为希望的安全级别来提高它。</para> + + <para>默认情况下, 在启动脚本执行完之后, &os; 的安全级别设置是 -1。 + 这称作 <quote>不安全模式</quote>, 因为文件的不可修改标记 (immutable flag) + 可以改为关闭, 而且全部设备可以直接进行读写, 等等。</para> + + <para>一旦将安全级别设置为 1 或更高, 则只允许追加 (append-only) + 和不可修改标记会被执行, 而且不可以关闭。 直接访问裸设备则会被拒绝。 + 更高的安全级别会施加进一步的访问限制。 关于安全级别的完整介绍, + 请参阅联机手册 &man.security.7; (对于 &os; 7.0 之前的版本, + 则是联机手册 &man.init.8;)。</para> + + <note> + <para>将安全级别调整到 1 或更高可能会导致 X11 + (访问 <filename>/dev/io</filename> 会被阻止), 或从源代码联编 &os; + (这一过程中的 <maketarget>installworld</maketarget> + 部分需要临时取消一些文件上的只允许追加和不可修改标记) 出现一些问题, + 并导致一些其他小问题。 有些时候, 例如 X11 的情况, + 可以通过在引导过程中较早的阶段启动 &man.xdm.1; + 来绕过, 因为这时安全级别还很低。 类似这样的方法, + 对于某些安全级别或限制有可能不可用。 提前做好计划可能会是个好主意。 + 理解不同的安全级别所施加的限制非常重要, + 因为一些限制可能让系统变得很难使用。 另外, + 了解它们也有助于理性地配置默认设定。</para> + </note> + + <para>如果内核的安全级别设为 1 或更高, + 在重要的启动程序、 目录和脚本文件上设置 <literal>schg</literal> 标记 + (也就是在系统启动到设置安全级别之前运行的程序和它们的配置) 就有意义了。 + 然而, 这样做也可能有些过火, 而由于系统运行于较高的安全级别, + 升级系统也会变得困难的多。 作为妥协, 可以让系统以较高的安全级别运行, + 但并不将所有的启动文件都配置 <literal>schg</literal> 标记。 + 另一种方法是将 <filename>/</filename> 和 <filename>/usr</filename> 以只读模式挂载。 + 请注意, 过分严苛的安全配置很可能限制您检测入侵的能力。</para> </sect2> <sect2 id="security-integrity"> |