专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »web服务器 » apache的作用:apache的维护 »正文

apache的作用:apache的维护

来源: 发布时间:星期四, 2009年1月15日 浏览:34次 评论:0
  综述

  本文将讨论UNIX平台下Apache WEB服务器安装和配置安全问题我们假定阅读本文系统管理员已经针对自己站点情况选择了相关模块并且能够进行配置、创建和排除故障本文主要目是帮助你简历个安全Apache歪脖(web :P)服务器

  在众多Web服务器产品中Apache是应用最为广泛个产品同时也是个设计上非常安全但是同其它应用Apache也存在安全缺陷本文主要针对 3个安全缺陷进行讨论包括:使用HTTP协议进行拒绝服务攻击(denial of service)、3缓冲区溢出攻击以及被攻击者获得root权限注意:合理配置能够保护Apache免遭多种攻击但是在网络层上拒绝服务攻击则不是调整Apache配置所能够防止本文所涉及是使用HTTP(应用层)协议进行拒绝服务攻击

  Apache主要缺陷

  • HTTP拒绝服务

  攻击者通过某些手段使服务器拒绝对HTTP应答这会使Apache对系统资源(CPU时间和内存)需求剧增最终造成系统变慢甚至完全瘫痪

  • 缓冲区溢出

  攻击者利用编写些缺陷使偏离正常流程使用静态分配内存保存请求数据攻击者就可以发送个超长请求使缓冲区溢出比如些Perl编写处理用户请求网关脚本旦缓冲区溢出攻击者可以执行其恶意指令或者使系统宕机

  • 被攻击者获得root权限

  Apache般以root权限运行(父进程)攻击者通过它获得root权限进而控制整个系统

  获得最新Apache

  使用最安全版本对于加强Apache Web服务器安全是至关重要

  你可以从Apache官方网站WebSitehttp://www.apache.org获得Apache最新版本

  配置文件保护

  Apache Web服务器有 3个主要配置文件它们般位于/usr/local/apache/conf目录这 3个文件是:httpd.con、srm.conf和access.conf这些文件是整个Apache控制中心因此需要对 3个配置文件有所了解httpd.conf文件是主配置文件;srm.conf允许你填加资源文件;access.conf设置文件访问权限这些文件配置可以参考http://httpd.apache.org/docs/mod/core.html

  服务器访问控制

  access.conf文件包含些指令控制允许什么用户访问Apache目录应该把deny from all作为化指令然后使用allow from指令打开访问权限你可以允许来自某个域、IP地址或者IP段访问例如:

  order deny,allow

  deny from all

  allow from sans.org

  密码保护

  使用.htaccess文件可以把某个目录访问权限赋予某个用户系统管理员需要在httpd.conf或者srm.conf文件中使用AccessFileName指令打开目录访问控制以下是个.htaccess举例文件:

  AuthName PrivateFiles

  AuthType Basic

  AuthUserFile /path/to/httpd/users

  require foo <---个有效用户名

  然后使用如下命令填加个用户:

  # htpasswd -c /path/to/httpd/users foo

  Apache日志文件

  系统管理员可以使用日志格式指令来控制日志文件信息使用LogFormat "%a %l"指令可以把发出HTTP请求浏览器IP地址和主机名记录到日志文件出于安全考虑你至少应该那些验证失败WEB用户在http.conf文件中加入LogFormat "%401u"指令可以实现这个目这个指令还有其它许多参数用户可以参考Apache文档另外Apache日志文件对于系统管理员来说也是非常重要日志文件中包括服务器启动、停止以及CGI执行失败等信息

  安全相关指令

  在Apache配置文件中些安全相关指令可以使用这些指令详细使用方法可以参考http://httpd.apache.org/docs/mod/directives.html

  使用以下指令可以帮助你减小拒绝服务威胁:

  LimitRequestbody: 数字参数控制HTTP请求大小

  LimitRequestFields: 数字参数控制请求头数目

  KeepAlive: 设置连接生存期

  KeepAliveTimeout: 限制等待请求时间

  使用以下指令可以帮助你叫嚣缓冲区溢出危险:

  LimitRequestFieldSize: 限制每个请求头大小

  LimitRequestLine: 限制每个请求行大小

  CGI(ommon Gateway Interface,通用网关接口)安全威胁

  CGI安全性非常重要攻击者可以利用CGI缺陷获得系统信息、执行系统命令、占用系统资源如果个CGI使用静态分配内存就可能为缓冲区溢出攻击提供机会为了减少这种风险员应该在CGI代码中使用动态分配内存除了CGI编写人员应该注意外系统管理员可以采取对CGI进行封装(例如:suEXEC或者CGI Wrap)办法加强CGI安全性通过这种方式可以使CGI以某个独立用户权限运行即使发生缓冲区溢出也只影响那个用户目录/文件

  perl是种功能非常强大脚本语言主要用于文本处理员还可以通过perl脚本使用系统如果编写不好就会为攻击者闯入服务器大开方便的门因此使用perl脚本定要小心以免出现此类漏洞在perl脚本中处理请求数据的前最好能够专门检查例程对输入合法性进行检查除此的外还要确保Apache不是以root权限运行Perl脚本被限制在某个特定目录下运行

  SSI(Server-Side Includes)安全



  使用SSI员可以建立些常用例程在需要时把这些例程包含进他们代码中SSI还允许有条件地执行外部攻击者可能利用这个条件让服务器执行他们恶意在access.conf文件中使用IncludesNoEXEC指令可以关闭执行SSI文件功能不过这条指令会造成服务器不执行CGI脚本或者

  其它安全工具

  使用TCP Wrappers和Tripwire可以为你系统提供额外保护你可以使用TCP Wrappers来控制Telnet或者FTP访问权限Tripwire是个数据完整性检测工具可以帮助系统管理员监视系统是否被改动过你可以在Tripwire配置文件中编制特定策略监视Web服务器配置文件、数据和CGI文件是否被修改

  整理总结

  Apache是个优秀歪脖服务器虽然Apache开发者非常注重其安全性但是由于Apache非常庞大难免会存在安全隐患Apache安装维护中需要注意以下问题:

   检查文件和目录权限是否恰当

   httpd.conf、srm.conf和access.conf设置是否适当

   使服务器日志文件能够记录尽可能详细信息

  对某些需要特别保护目录使用密码保护(.htaccess)

   对CGI脚本或者进行封装

  如果CGI使用Perl编写要详细检查其安全性

   检查SSI指令

  使用TCP Wrappers和Tripwire



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: