⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 securing-freebsd.html

📁 FreeBSD安装说明概述 FreeBSD 提供了一个以文字为主
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy, see www.w3.org" /><title>确保FreeBSD的安全</title><meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.7" /><link rel="HOME" title="FreeBSD 使用手册" href="index.html" /><link rel="UP" title="安全" href="security.html" /><link rel="PREVIOUS" title="介绍" href="security-intro.html" /><link rel="NEXT" title="DES, MD5, and Crypt" href="crypt.html" /><link rel="STYLESHEET" type="text/css" href="docbook.css" /><meta http-equiv="Content-Type" content="text/html; charset=GB2312" /></head><body class="SECT1" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#840084"alink="#0000FF"><div class="NAVHEADER"><table summary="Header navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><th colspan="3" align="center">FreeBSD 使用手册</th></tr><tr><td width="10%" align="left" valign="bottom"><a href="security-intro.html"accesskey="P">Prev</a></td><td width="80%" align="center" valign="bottom">Chapter 10. 安全</td><td width="10%" align="right" valign="bottom"><a href="crypt.html"accesskey="N">Next</a></td></tr></table><hr align="LEFT" width="100%" /></div><div class="SECT1"><h1 class="SECT1"><a id="SECURING-FREEBSD" name="SECURING-FREEBSD">10.3.确保FreeBSD的安全</a></h1><div class="NOTE"><blockquote class="NOTE"><p><b>命令与协议:</b> 在这份文档中,我们使用 <b class="APPLICATION">粗体</b>来表示命令或应用程序。这一约定被用于 类似 ssh这样的概念,因为它既可以表示命令,又可以表示协议。</p></blockquote></div><p>下面几节中的内容将包括 <a href="security-intro.html">前一节</a> 中提到的那些加强FreeBSD 安 全性的方法。</p><div class="SECT2"><h2 class="SECT2"><a id="SECURING-ROOT-AND-STAFF" name="SECURING-ROOT-AND-STAFF">10.3.1.确保 <tt class="USERNAME">root</tt> 和维护人员帐户的安全</a></h2><p>首先,如果你没有确保 <tt class="USERNAME">root</tt> 帐户的安全,就没必要先劳神确保用户帐户的安全了。绝大多数系统都会指派一个口令给 <ttclass="USERNAME">root</tt> 帐户。 我们的第一个假定是,口令 <span class="emphasis"><iclass="EMPHASIS">总是</i></span> 不安全的。这并不意味着你要把口令删掉。口令通常对访问机器的控制台来说是必须的。也就是说,你不应当让它用到控制台以外的口令,即使是使用<span class="CITEREFENTRY"><span class="REFENTRYTITLE">su</span>(1)</span> 命令。例如,确信你的pty终端在 <tt class="FILENAME">/etc/ttys</tt> 文件中被指定为 insecure(不安全),这将使直接通 过 <tt class="COMMAND">telnet</tt> 或 <ttclass="COMMAND">rlogin</tt> 登陆 <tt class="USERNAME">root</tt> 会不被接受。 如果使用如<b class="APPLICATION">sshd</b>这样的其他登陆服务,确认直接登陆root也被关闭了。你可以通过 编辑 <ttclass="FILENAME">/etc/ssh/sshd_config</tt> 文件来做到这一点,确信 <varclass="LITERAL">PermitRootLogin</var> 被设置成 <var class="LITERAL">NO</var>。考虑到每一种访问方法 - 如FTP这样的服务,以免因为它们而导致安全性的损失。直接登陆 <ttclass="USERNAME">root</tt> 只有通过系统控制台 才被允许。</p><p>当然,作为一个系统管理员,你应当获得 <tt class="USERNAME">root</tt>身份,因此,我们开了一些后门来允许自己进入。但这些后门只有在经过了额外的口令确认之后才能够进入。 一种让 <ttclass="USERNAME">root</tt> 可访问的方法是增加适当的用户帐户到 <ttclass="GROUPNAME">wheel</tt> 组 (在 <tt class="FILENAME">/etc/group</tt> 中)。<ttclass="GROUPNAME">wheel</tt> 组中的用户成员可以使用 <tt class="COMMAND">su</tt>命令来成为 <tt class="USERNAME">root</tt>。绝对不应该通过在口令项中进行设置来赋予维护人员天然的 <tt class="GROUPNAME">wheel</tt>组成员身份。维护人员应被放置在 <tt class="GROUPNAME">staff</tt> 组中,然后通过 <ttclass="GROUPNAME">wheel</tt> 文件加入到 <tt class="FILENAME">/etc/group</tt>组。事实上,那些需要以 <tt class="USERNAME">root</tt> 身份进行操作的用户应被放到 <ttclass="GROUPNAME">wheel</tt> 组中。当然,也可以通过 某种其它的验证手段,例如Kerberos,可以通过 <tt class="USERNAME">root</tt> 帐户中的 <ttclass="FILENAME">.k5login</tt> 文件来允许执行 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">ksu</span>(1)</span> 成为 <tt class="USERNAME">root</tt>,而不必把它们放进 <tt class="GROUPNAME">wheel</tt> 组。 这可能是一种更好的解决方案,因为<tt class="GROUPNAME">wheel</tt> 机制仍然可能导致入侵者获得 <ttclass="USERNAME">root</tt> ,如果他拿到了口令文件,并能够进入职员的帐户。 尽管有 <ttclass="GROUPNAME">wheel</tt> 比什么都没有要强一些,但它并不是一种绝对安全的办法。</p><p>一种间接地提高员工帐号,以及 <tt class="USERNAME">root</tt>访问的方法,使采用其他的登录访问方式,并使用 ``星号'' 替代员工加密的口令。使用 <spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">vipw</span>(8)</span>命令,可以把每一个加密的口令 替换成一个 ``<var class="LITERAL">*</var>'' 符。 这将更新<tt class="FILENAME">/etc/master.passwd</tt> 文件,以及用户名/口令数据库,以禁用口令登录。</p><p>如下面的员工帐号</p><pre class="PROGRAMLISTING">foobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh</pre><p>应被改为:</p><pre class="PROGRAMLISTING">foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh</pre><p>这一更改将阻止一般的登录,因为加密的口令永远不会与 ``<var class="LITERAL">*</var>''匹配。一旦这么做之后, 任何员工都必须使用其他的方式来完成登录,例如,使用 <spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">kerberos</span>(1)</span> 或者通过 <spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">ssh</span>(1)</span> 利用 公钥/密钥对的方式 来完成登录。当使用 Kerberos 这样的工具时,通常必须加强运行 Kerberos的服务器,以及桌面工作站的安全性。当使用 公钥/密钥对 以 ssh 登录时,通常必须加固用户<span class="emphasis"><i class="EMPHASIS">开始</i></span> 登录的那台机器的安全(通常这是他们的工作站)。在这之上还可以增加 一层安全性,即在使用 <spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">ssh-keygen</span>(1)</span>生成它的时候,使用口令 来保护它们。如果能够用 ``星号'' 替换掉所有员工的口令,那么,这也就保证了他们只能通过你设置的安全的方法来登录。这将迫使所有的员工使用安全的、经过加密的连接来完成他们的会话,而这将使得入侵者通过监听网络通讯,从某些不相关的、不太安全的机器上窃取口令 成为不可能。</p><p>另一钟间接的安全机制则是,从严格受限的机器向限制更宽松的机器上登录。例如,如果你的服务器运行了所有的服务,那么,工作站应该什么都不运行。为了让工作站尽可能地安全,应该避免运行任何没有必要的服务,甚至不运行任何服务。另外,也应该考虑使用带口令保护功能的屏幕保护程序。毋庸置疑,如果攻击者能够物理地接触你的工作站,那么他就有能力破坏任何安全设施,这确实是我们需要考虑的一个问题,但同样地,真正能够物理接触你的工作站或服务器并实施攻击的人在现实生活中并不常见,绝大多数攻击来自于网络,而攻击者往往无法物理地接触服务器或工作站。</p><p>使用类似 Kerberos 这样的工具,也为我们提供了使用一个工具来禁用某个用户,或修改他们口令并在所有机器上立即生效的方法。如果员工的帐号被窃取,能够在所有的其他机器上生效的口令变更将很有意义。如果口令分散地保存在多个机器上,一次修改 N 台机器上的口令很可能是一件痛苦的事 情。此外, Kerberos还能够提供更多的限制,除了 Kerberos 令牌有很好的过期机制之外,它还能够强制用户在某个特定的期限内修改口令(比如说,每 月一次).</p></div><div class="SECT2"><h2 class="SECT2"><a id="AEN10687" name="AEN10687">10.3.2.确保以root用户权限运行的服务器和suid/sgid可执行程序的安全</a></h2><p>谨慎的管理员只运行它们需要的服务,不多,不少。要当心第三方的服务程序很可能有更多的问题。例如,运行旧版的 <b class="APPLICATION">imapd</b> 或者 <bclass="APPLICATION">popper</b> 无异于将 <tt class="USERNAME">root</tt>令牌拱手送给整个世界上的攻击者。永远不要运行那些你没有仔细检查过的服务程序,许多服务程序并不需要以 <ttclass="USERNAME">root</tt> 身份运行。例如,<b class="APPLICATION">ntalk</b>, <bclass="APPLICATION">comsat</b>,以及 <b class="APPLICATION">finger</b>服务程序都能够以一种称作 <i class="FIRSTTERM">沙盒</i>的特殊用户身份运行。除非你解决了大量的麻烦,否则沙盒远不是一个完美的策略,但洋葱规则仍然成立,如果某个人设法攻破了在沙盒中运行的程序,那么他们还必须冲出沙盒才能够做的更多。攻击者需要冲破的层次越多,他成功的机会就越小。root漏洞曾经在几乎所有 的以<ttclass="USERNAME">root</tt>身份运行的程序中存在,包括基本的系统服 务。另外,如果你只通过<b class="APPLICATION">sshd</b> 登录,而不打算使用 <b class="APPLICATION">telnetd</b> 或<b class="APPLICATION">rshd</b> 或 <bclass="APPLICATION">rlogind</b>,那么,毫不犹豫地关闭这些服务!</p><p>FreeBSD 现在默认在沙盒中运行 <b class="APPLICATION">ntalkd</b>, <bclass="APPLICATION">comsat</b>, 以及 <b class="APPLICATION">finger</b>。此外, <spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">named</span>(8)</span> 也可以这样运行。<tt class="FILENAME">/etc/defaults/rc.conf</tt> 中包括了如何如此运行 <bclass="APPLICATION">named</b> 的方法,只是这些内容被注释掉了。如何升级或安装系统将决定这些沙盒所使用的特殊用户是否被自动安装。谨慎的系统管理员将根据需要研究并实现沙盒。</p><p>此外,还有一些服务通常并不在沙盒中运行: <b class="APPLICATION">sendmail</b>, <bclass="APPLICATION">popper</b>, <b class="APPLICATION">imapd</b>, <bclass="APPLICATION">ftpd</b>,以及一些其他的服务。当然,它们有一些替代品,但安装那些服务可能需要做更多额外的工作。可能必须以 <tt class="USERNAME">root</tt> 身份运行这些程序,并通过其他机制来检测入侵。</p><p>系统中另一个比较大的 <tt class="USERNAME">root</tt> 漏洞 是安装在其中的 suid-root 和sgid 的可执行文件。绝大多数这类程序, 例如 <b class="APPLICATION">rlogin</b>, 被存放于

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -