热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Apache服务器的保护

一.综述本文将讨论UNIX平台下,ApacheWEB服务器安装和配置的安全问题。我们假定阅读本文的系统管理员已经针对自己站点的情况选择了相关的模块,并且能够进行配置、创建和排除故障。本文的主要目的是帮助你简历一个安全的Apache歪脖(web:P)服务器。在众多的Web服务
EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Apache服务器的保护
时间:2006-02-27 00:00 来源:网管之家bitsCN.com 字体:[ ] 评论:
标签:Apache
一. 综述

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

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

二. Apache的主要缺陷

  · HTTP拒绝服务

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

  · 缓冲区溢出

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

  · 被攻击者获得root权限

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

三. 获得最新的Apache

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

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

  配置文件的保护

  Apache Web服务器有三个主要的配置文件,它们一般位于/usr/local/apache/conf目录。这三个文件是:httpd.con、srm.conf和access.conf。这些文件是整个Apache的控制中心,因此需要对三个配置文件有所了解。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。


推荐阅读
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]

author-avatar
lydia芸小窝的天使
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有