zoukankan      html  css  js  c++  java
  • 关于Apache HTTPD 2.2.15的部分漏洞修复建议

    关于Apache HTTPD 2.2.15的部分漏洞修复建议


    修复Apache HTTP Server畸形Range和Range-Request选项处理远程拒绝服务漏洞

    该漏洞有如下几种修补方法

    方式1:

    升级Apache httpd至2.2.21及以上版本

    方式2:

    可以从官网下载补丁包,重新打包编译Apache。

    方式3:

    修改httpd.conf文件(一般位于/usr/local/apache2/conf/httpd.conf,具体视安装Apache时的配置而定),相关配置参考Apache官方关于该漏洞的修复建议,(绿盟也有对官方建议的中文翻译 ,不过翻译并不准确,不建议参考),这里使用官方建议的修复方式2

    Step1. 引入mod_rewrite和mod_headers模块,这里去掉两个模块的默认的注释即可

    引入mod_rewrite和mod_headers模块

    Step2. 在正文部分引入如下配置(配置说明:Range:标头中超过5个范围时即拒绝请求,并且总是丢弃Request-Range,因为是旧版的)

    <IfModule rewrite_module>
    <IfModule mod_headers>
        # Reject request when more than 5 ranges in the Range: header.
        # CVE-2011-3192
        #
        RewriteEngine on
        RewriteCond %{HTTP:range} !(^bytes=[^,]+(,[^,]+){0,4}$|^$) [NC]
        RewriteRule .* - [F]
    
        # We always drop Request-Range; as this is a legacy
        # dating back to MSIE3 and Netscape 2 and 3.
        #
        RequestHeader unset Request-Range
    </IfModule>
    </IfModule>

    Step3: 重启Apache httpd

    修复目录遍历漏洞

    通过修改conf目录下的httpd.conf文件来禁止使用目录索引。(参考自知乎专栏《目录遍历漏洞》

    Step1: 打开httpd.conf文件(一般位于/usr/local/apache2/conf/httpd.conf,具体视安装Apache时的配置而定)

    Step2:Options Indexes FollowSymLinks中的Indexes删除更改为Options FollowSymLinks,这样web目录下的所有目录都不再生成索引。

    Step3: 重启Apache httpd

    修复HTTP慢连接拒绝服务攻击漏洞

    建议使用mod_reqtimeout和mod_qos两个模块相互配合来防护。这部分通过修改httpd.conf完成(一般位于/usr/local/apache2/conf/httpd.conf,具体视安装Apache时的配置而定)。参考自《缓慢的http拒绝服务攻击》

    Step1: mod_reqtimeout用于控制每个连接上请求发送的速率。配置如下:

    Step1.1 首先去掉引入默认注释的mod_reqtimeout

    引入mod_reqtimeout模块

    Step1.2 在代码正文开始或者结束部分加入如下代码。(代码说明:请求头部分,设置超时时间初始为20秒,并在收到客户端发送的数据后,每接收到500字节数据就将超时时间延长1秒,但最长不超过40秒。可以防护slowloris型的慢速攻击。请求正文部分,设置超时时间初始为10秒,并在收到客户端发送的数据后,每接收到500字节数据就将超时时间延长1秒,但最长不超过40秒。可以防护slow message body型的慢速攻击。需注意,对于HTTPS站点,需要把初始超时时间上调,比如调整到20秒。)

    <IfModule reqtimeout_module>
        RequestReadTimeout header=20-40,MinRate=500
        RequestReadTimeout body=10-40,minrate=500
    </IfModule>

    Step2: mod_qos用于控制并发连接数。配置如下:

    Step2.1 首先检查modules目录下,是否有mod_qos.so文件,如果有,则去掉httpd.conf中对LoadModule qos_module modules/mod_qos.so行的注释,引入该模块,并且跳过Step2.2进入Step2.3。

    Step2.2 如果modules目录下没有mod_qos.so文件,则需要手动引入,指令如下(Linux环境下),参考《Apache mod_qos模块安装与配置》

    # 1.下载qos模块(该指令中模块版本为文档撰写时的最新版本,实际操作可以稍作修改)
    wget http://jaist.dl.sourceforge.net/project/mod-qos/mod_qos-11.45.tar.gz
    # 2.解压
    tar -zxvf mod_qos-11.45.tar.gz 
    # 3.安装
    cd mod_qos-11.45
    cd apache2/
    /usr/local/apache2/bin/apxs -i -c mod_qos.c #编译指令,将.c文件编译成.so文件,具体文件路径请按照系统实际路径修改
    # 4.检查/usr/local/apache2/modules目录下面是否多了mod-qos.so文件
    # 5.回到apache2/conf修改httpd.conf,头文件中增加如下一行
    LoadModule qos_module   modules/mod_qos.so
    引入qos_module模块。
    

    Step2.3 在httpd.conf正文中添加一行,引入qos配置文件。

    Include conf/extra/qos.conf

    Step2.4 进入apache2/conf/extra,新建qos.conf文件,输入以下配置信息。

    
    # maximum number of active TCP connections is limited to 896 (limited
    # by the available memory, adjust the settings according to the used
    # hardware):
    MaxClients               400
    
    # idle timeout:
    Timeout                  20
    
    # keep alive (for up to 85% of all connections):
    KeepAlive                on
    MaxKeepAliveRequests     60
    KeepAliveTimeout         3
    QS_SrvMaxConnClose       85%
    
    # name of the HTTP response header which marks preferred clients (this
    # may be used to let the application decide which clients are "good" and
    # have higher privileges, e.g. authenticated users. you may also use
    # the QS_VipUser directive when using an Apache authentication module such
    # as mod_auth_basic or mod_auth_oid):
    QS_VipIPHeaderName       mod-qos-login
    
    # enables the known client prefer mode (server allows new TCP connections
    # from known/good clients only when is has more than 716 open TCP connections):
    QS_ClientPrefer          80
    
    # minimum request/response speed (deny slow clients blocking the server, 
    # e.g. defending slowloris) if the server has 500 or more open connections:
    QS_SrvMinDataRate        120 1500 500
    
    # and limit request line, header and body:
    LimitRequestLine         7168
    LimitRequestFields       30
    QS_LimitRequestBody      102400
    
    # don't allow more than 30 TCP connections per client source address if
    # 500 connections are open to the server:
    QS_SrvMaxConnPerIP       30 500
    
    # block clients violating some basic rules frequently (don't allows more than 20
    # violations within 5 minutes):
    QS_ClientEventBlockCount 20 300
    QS_SetEnvIfStatus        400               QS_Block
    QS_SetEnvIfStatus        401               QS_Block
    QS_SetEnvIfStatus        403               QS_Block
    QS_SetEnvIfStatus        404               QS_Block
    QS_SetEnvIfStatus        405               QS_Block
    QS_SetEnvIfStatus        406               QS_Block
    QS_SetEnvIfStatus        408               QS_Block
    QS_SetEnvIfStatus        411               QS_Block
    QS_SetEnvIfStatus        413               QS_Block
    QS_SetEnvIfStatus        414               QS_Block
    QS_SetEnvIfStatus        417               QS_Block
    QS_SetEnvIfStatus        500               QS_Block
    QS_SetEnvIfStatus        503               QS_Block
    QS_SetEnvIfStatus        505               QS_Block
    #QS_SetEnvIfStatus        QS_SrvMinDataRate QS_Block
    QS_SetEnvIfStatus        NullConnection    QS_Block
    

    Step3: 重启Apache httpd

  • 相关阅读:
    Spring:@ConfigurationProperties配置绑定
    Linux:性能诊断
    【第二章】:深浅拷贝剖析
    【第二章】:模块和运算符
    python 扩展注册功能装饰器举例
    python 函数 之 用户注册register()
    python 之 函数 基础
    python 函数
    python 文件操作
    python 的 数据类型
  • 原文地址:https://www.cnblogs.com/iors/p/9804319.html
Copyright © 2011-2022 走看看