我要投稿
  • 您当前的位置:57365.com -> 技术教程 -> 服务器网络 -> 服务器教程 -> Web服务器教程 -> 教程内容
  • [ 收藏本页教程 ]
  • 正确配置和维护Apache WEB Server 安全性Web服务器教程

    教程作者:佚名    教程来源:不详   教程栏目:Web服务器教程    收藏本页
                  摘要:正确配置和维护Apache WEB Server 安全性 
    前言:在目前的Internet时代,主页已成为树立公司形象和展示自我天地的一个重要手段,配置一台强大且安全的Web Server就显得尤其重要。在众多的Web Server产品中,Apache是应用最为广泛的一个产品,同时也是一个设计上非常安全的程序。但是,同其它应用程序一样,Apache也存在安全缺陷。本文将详细介绍如何正确配置和维护Apache WEB Server的安全性问题等。 
    一,Apache服务器的介绍 

    Apache服务器它是Internet网上应用最为广泛的Web服务器软件之一。Apache服务器源自美国国家超级技术计算应用中心(NCSA)的Web服务器项目中。目前已在互联网中占据了领导地位。Apache服务器得经过精心配置之后,才能使它适应高负荷,大吞吐量的互联网工作。快速、可靠、通过简单的API扩展,Perl/Python解释器可被编译到服务器中,且完全免费,完全源代码开放。如果你需要创建一个每天有数百万人访问的Web服务器,Apache可能是最佳选择。 

    二,Apache服务器的主要安全缺陷 

    正如我们前言所说尽管Apache服务器应用最为广泛,设计上非常安全的程序。但是同其它应用程序一样,Apache也存在安全缺陷。毕竟它是完全源代码,Apache服务器的安全缺陷主要是使用HTTP协议进行的拒绝服务攻击(denial of service)、缓冲区溢出攻击以及被攻击者获得root权限三缺陷和最新的恶意的攻击者进行“拒绝服务”(DoS)攻击。合理的网络配置能够保护Apache服务器免遭多种攻击。我们来介绍一下主要的安全缺陷: 

    (1)使用HTTP协议进行的拒绝服务攻击(denial of service)的安全缺陷 

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

    (2)缓冲区溢出的安全缺陷 

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

    (3)被攻击者获得root权限的安全缺陷 

    该安全缺陷主要是因为Apache服务器一般以root权限运行(父进程),攻击者会通过它获得root权限,进而控制整个Apache系统。 

    (4)恶意的攻击者进行“拒绝服务”(DoS)攻击的安全缺陷 
    这个最新在6月17日发现的漏洞,它主要是存在于Apache的chunk encoding中,这是一个HTTP协议定义的用于接受web用户所提交数据的功能。 利用黑客程序可以对于运行在FreeBSD 4.5, OpenBSD 3.0 / 3.1, NetBSD 1.5.2平台上的Apache服务器均可进行有效的攻击. 

    所有说使用最高和最新安全版本对于加强Apache Web服务器的安全是至关重要的。请广大Apache服务器管理员去http://www.apache.org/dist/httpd/下载补丁程序以确保其WEB服务器安全! 

    三, 正确维护和配置Apache服务器 

    虽然Apache服务器的开发者非常注重安全性,由于Apache服务器其庞大的项目,难免会存在安全隐患。正确维护和配置Apache WEB服务器就很重要了。我们应注意的一些问题: 

    (1)Apache服务器配置文件 
    Apache Web服务器主要有三个配置文件,位于/usr/local/apache/conf目录下。这三个文件是: 
    httpd.con----->主配置文件 
    srm.conf------>填加资源文件 
    access.conf--->设置文件的访问权限 
    注:具体配置可以参考:http://httpd.apache.org/docs/mod/core.html ;

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

    (3)Apache服务器的目录安全认证 
    在Apache Server中是允许使用 .htaccess做目录安全保护的,欲读取这保护的目录需要先键入正确用户帐号与密码。这样可做为专门管理网页存放的目录或做为会员区等。 
    在保护的目录放置一个档案,档名为.htaccss 
    AuthName "会员专区" 
    AuthType "Basic" 
    AuthUserFile "/var/tmp/xxx.pw" ----->把password放在网站外 
    require valid-user 

    到apache/bin目录,建password档 

    % ./htpasswd -c /var/tmp/xxx.pw username1 ----->第一次建档要用参数"-c" 

    % ./htpasswd /var/tmp/xxx.pw username2 
    这样就可以保护目录内的内容,进入要用合法的用户. 
    注:采用了Apache内附的模组。也可以采用在httpd.conf中加入:  
    options indexes followsymlinks  
    allowoverride authconfig  
    order allow,deny  
    allow from all  

    (4)Apache服务器访问控制 
    我们就要看三个配置文件中的第三个文件了,即access.conf文件,它包含一些指令控制允许什么用户访问Apache目录。应该把deny from all设为初始化指令,再使用allow from指令打开访问权限。 
    <directory /usr/local/http/docs/private> 
    <limit> 
    order deny,allow 
    deny from all 
    allow from safechina.net 
    </limit> 
    </directory> 
    设置允许来自某个域、IP地址或者IP段的访问。 

    (5)Apache服务器的密码保护问题 
    我们再使用.htaccess文件把某个目录的访问权限赋予某个用户。系统管理员需要在httpd.conf或者srm.conf文件中使用AccessFileName指令打开目录的访问控制。如: 
    AuthName PrivateFiles 
    AuthType Basic 
    AuthUserFile /path/to/httpd/users 
    require Phoenix 

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

    四,设置Apache服务器的WEB和文件服务器 

    我们在Apache服务器上存放WEB服务器的文件,供用户访问,并设置/home/ftp/pub目录为文件存放区域,用http://download.your.com/pub/来访问。在防火墙上设置apache反向代理技术,由防火墙代理访问。  
      
    (1)Apache服务器的设置  
      apache服务器采用默认配置。主目录为/home/httpd/html,主机域名为Phoenix.your.com,且别名到www.your.com中, 并且设置srm.conf加一行别名定义如下:  
    Alias /pub /home/ftp/pub/  

    更改默认应用程序类型定义如下:  
    DefaultType application/octet-stream  

    最后在/etc/httpd/conf/access.conf中增加一项定义  

    Options Indexes  
    AllowOverride AuthConfig  
    order allow,deny  
    allow from all  

    注:Options Indexes允许在找不到index.html文件的情况下允许列出目录/文件列表。AllowOverride AuthConfig允许做基本的用户名和口令验证。这样的话,需要在/home/ftp/pub目录下放入.htaccess,内容如下:  

    [root@shopu pub]# more .htaccess  
    AuthName Branch Office Public Software Download Area  
    AuthType Basic  
    AuthUserFile /etc/.usrpasswd  
    require valid-user  

    用# htpasswd -c /etc/.usrpasswd user1  分别创建不同的允许访问/pub下文件服务的外部用户名和口令。  

    (2)在防火墙上配置反向代理技术.  
      在/etc/httpd/conf/httpd.conf  中加入 NameVirtualHost xxx.xxx.xxx.xxx  
    # xxx.xxx.xxx.xxx ----->是防火墙外部在互联网上永久IP地址  
    servername www.your.com  
    errorlog /var/log/httpd/error_log  
    transferlog /var/log/httpd/access_log  
    rewriteengine on  
    proxyrequests off  
    usecanonicalname off  
    rewriterule ^/(.*)$ http://xxx.xxx.xx.x/$1 Apache服务器的IP地址。 


    servername http://download.your.com/pub/ ;
    errorlog /var/log/httpd/download/error_log  
    transferlog /var/log/httpd/download/access_log  
    rewriteengine on  
    proxyrequests off  
    usecanonicalname off  
    rewriterule ^/(.*)$ http://xxx.xxx.xx.x/$1 同上Apache服务器的IP地址。 

    设置防火墙上的DNS,让download.your.com和www.your.com都指向防火墙的外部网地址xxx.xxx.xxx.xxx。用http://www.your.com访问主页,用http://dow
    我要投稿   -   广告合作   -   关于本站   -   友情连接   -   网站地图   -   联系我们   -   版权声明   -   设为首页   -   加入收藏   -   网站留言
    Copyright © 2009 - 20012 www.www.hxswjs.com All Rights Reserved.57365.com 版权所有