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

📄 security_tips.html

📁 这个是我在web培训时老师提供的手册
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta name="keywords" content="Apache, 中文, 手册, 中文版, 中文手册, 中文版手册, 参考手册, 中文参考手册, 金步国" />
<meta name="description" content="Apache 2.2 中文版参考手册" />
<meta name="author" content="金步国" />
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<title>安全方面的提示 - Apache 2.2 中文版参考手册</title>
</head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">模块索引</a> | <a href="../mod/directives.html">指令索引</a> | <a href="../faq/index.html">常见问题</a> | <a href="../glossary.html">词汇表</a> | <a href="../sitemap.html">站点导航</a></p><p class="apache">Apache HTTP Server 版本2.2</p><img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path"><a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">文档</a> &gt; <a href="../index.html">版本2.2</a> &gt; <a href="./index.html">杂项文档</a></div>

<div id="translation-info">   <a href="../translator_announcement.html#thanks">致谢</a> | <a href="../translator_announcement.html#announcement">译者声明</a> | 本篇译者:<a href="mailto:&#099;sfr&#0097;nk&#0064;&#099;itiz&#046;n&#0101;t">金步国</a> | 本篇译稿最后更新:2006年1月10日 | <a href="../translator_announcement.html#last_new">获取最新版本</a></div>
<div id="page-content"><div id="preamble"><h1>安全方面的提示</h1>


    <p>本文中的提示和技巧有些是针对网络服务器的建立的,有些是综合性的,其余的则是针对Apache的。</p>
  </div>
	<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="uptodate" id="uptodate">保持不断更新和升级</a></h2>

    <p>Apache HTTP服务器有一个很好的安全记录和一个高度关注安全问题的开发社团。但是这仍然不能避免在发行版中存在或大或小的问题。所以知道这个软件的版本更新和升级补丁是至关重要的。如果你是直接从Apache组织得到Apache HTTP服务器的,我们强烈建议你订阅<a href="http://httpd.apache.org/lists.html#http-announce">Apache HTTP服务器通告邮件列表</a>以保证能够在第一时间得知软件的版本更新和升级补丁。许多第三方Apache软件发行版也有类似的服务。</p>

    <p>当然,Web服务器出现的问题在绝大多数时候不是由Apache源代码引起的,而是由附加的代码、CGI脚本、底层操作系统引起的。因此你必须保持机器上所有软件的及时更新。</p>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="serverroot" id="serverroot">ServerRoot目录的权限</a></h2>
  
    
    
    <p>通常,Apache由root用户启动,在提供服务时切换为由<code class="directive"><a href="../mod/mpm_common.html#user">User</a></code>指令所指定的用户。正如root所执行的任何命令那样,你必须保证<code class="directive">ServerRoot</code>下的文件是受保护的,不允许非root用户对它修改。不仅文件本身,而且目录及其父目录都必须只能由root来改写。例如,如果将<code class="directive">ServerRoot</code>指定为<code>/usr/local/apache</code> ,则推荐以root身份来建立此目录,如:</p>
    
    <div class="example"><p><code>
      mkdir /usr/local/apache <br />
      cd /usr/local/apache <br />
      mkdir bin conf logs <br />
      chown 0 . bin conf logs <br />
      chgrp 0 . bin conf logs <br />
      chmod 755 . bin conf logs
    </code></p></div>
    
    <p>这里已经假定了"/"、"/usr"、"/usr/local"只能由root来改写。在安装<code class="program"><a href="../programs/httpd.html">httpd</a></code>可执行文件时,应该确保它也受到了同样的保护:</p>
    
    <div class="example"><p><code>
      cp httpd /usr/local/apache/bin <br />
      chown 0 /usr/local/apache/bin/httpd <br />
      chgrp 0 /usr/local/apache/bin/httpd <br />
      chmod 511 /usr/local/apache/bin/httpd
    </code></p></div>
    
    <p>你可以在其中建立htdocs子目录,该子目录可以允许其他用户改写 -- root不会执行其中任何文件,也不应该在其中建立文件。</p>
    
    <p>如果允许非root用户对由root执行或读写的文件有写权限,则会危及系统。比如,别人有可能会覆盖<code class="program"><a href="../programs/httpd.html">httpd</a></code>可执行文件,那么下一次启动时,就会执行恶意代码。如果日志目录(对非root用户)是可写的,别人就有可能用一个指向其他敏感文件的连接来覆盖日志文件,使那个文件被改写为杂乱的数据。如果日志文件本身(对非root用户)是可写的,别人就可能伪造日志。</p>
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="ssi" id="ssi">服务器端包含</a></h2>
    
    <p>服务器端包含(SSI)会带来一些潜在的安全隐患。</p>
    
    <p>首先是增加了服务器的负载。Apache必须解析所有允许SSI的文件,而无论其中是否包含SSI指令。虽然增加的负载较小,但是在共享服务器环境中会变得很显著。</p>
    
    <p>SSI文件与CGI脚本一样存在风险。使用"exe ccmd"元素,允许SSI的文件可以执行任何CGI脚本,以及由httpd.conf设置的执行Apache的用户或组所允许执行的任何程序。</p>
    
    <p>有若干方法可以在得到SSI好处的同时提高SSI文件的安全性。</p>
    
    <p>服务器管理员可以使用<a href="#cgi">关于CGI</a>中所描述的<a href="../suexec.html">suexec</a> ,以隔离野蛮SSI文件所造成的破坏。</p>
    
    <p>对.html或.htm后缀的文件允许SSI是危险的,尤其是在一个共享的或者高流量的服务器环境中。被允许SSI的文件应该有一个单独的后缀,比如常规的.shtml ,使服务器的负载保持在最低水平,并使风险管理更容易。</p>
    
    <p>另一个方案是,关闭SSI页面执行脚本和程序的功能,即在用<code class="directive"><a href="../mod/core.html#options">Options</a></code>指令中,用<code>IncludesNOEXEC</code>替换<code>Includes</code> 。注意,用户仍然可以使用 &lt;--#include virtual="..." --&gt;来执行位于<code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>指令指定的目录中的CGI脚本。</p>
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="cgi" id="cgi">关于CGI</a></h2>
  
    
    
    <p>首先,你不得不信任CGI程序的作者以及你自己发现CGI中潜在安全漏洞的能力,无论这些漏洞是有预谋的或者仅仅是意外。CGI脚本可以执行web服务器用户所允许执行的任意系统命令,如果没有经过仔细的检查,这可能是极其危险的。</p>
    
    <p>由于所有CGI脚本都以相同的身份执行,所以可能会和其他脚本(有意或无意地)冲突。比如,用户A憎恨用户B,因此他就可能写一个脚本去破坏用户B的数据库。<a href="../suexec.html">suEXEC</a>是一个允许脚本以不同的身份运行的程序,它包含在Apache1.2以后的版本中,并被Apache服务器代码中特殊的挂钩所调用。还有一种常用的方法是使用<a href="http://cgiwrap.unixtools.org/">CGIWrap</a> 。</p>
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="nsaliasedcgi" id="nsaliasedcgi">未指定为脚本的CGI</a></h2>
  
    
    
    <p>仅在下列情况下,可以考虑允许用户执行位于任意目录中的CGI脚本:</p>
    
    <ul>
      <li>你绝对信任用户不会写一些有意无意会使系统遭受攻击的脚本。</li>
      <li>你认为安全因素与其他因素相比显得不那么重要,存在一两个潜在漏洞也无关紧要。</li>
      <li>你没有用户,而且没人会来访问你的服务器。</li>
    </ul>
    
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="saliasedcgi" id="saliasedcgi">指定为脚本的CGI</a></h2>
  
    
    
    <p>把CGI集中在特定的目录中,并由管理员决定其中的内容。这样绝对比使用不作为脚本的CGI来得安全,除非对这些目录有写权限的用户被信任,或者管理员希望对每个CGI脚本/程序进行潜在安全漏洞测试。</p>
    

⌨️ 快捷键说明

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