常见web扫描漏洞修复即网站服务器加固项

名称:X-Frame-Options Header未配置

漏洞描述:X-Frame-Options HTTP响应头可以指示浏览器是否允许当前网页在“frame”或“iframe”标签中显示,以此使网站内容不被其他站点引用和免于点击劫持攻击.
修复方法:设置X-Frame-Options头,三个可选值:1、DENY:无论如何不在框架中显示;2、SAMEORIGIN:仅在同源域名下的框架中显示;3、ALLOW-FROM uri:仅在指定域名下的框架中显示
具体操作方法:

//X-Frame-Options 设置
    Apache :
    引入mod_header模块,配置 Header always append X-Frame-Options SAMEORIGIN
    
    Nginx  :
    add_header X-Frame-Options SAMEORIGIN;

名称:Apache http server 版本信息泄露

漏洞描述:可以获取远程apache http服务器的版本号
修复方法:隐藏Apache版本号以及重新编译Apache
具体操作方法:

//server版本信息泄露
    Apache:
    1)、隐藏版本号:
    ServerTokens Prod    
    ServerSignature off  
    隐藏版本号的缺点是在http的响应头中还是可以看到server头里显示的web服务的类型。
    2)、在apache源码包中的include/ap_release.h中找到如下信息,将BaseProduct中的名称改变,若将洗面的version号改变,则可以不在配置文件中设置隐藏版本,起到迷惑作用。
    #define AP_SERVER_BASEVENDOR "Apache Software Foundation"  
    #define AP_SERVER_BASEPROJECT "Apache HTTP Server"  
    #define AP_SERVER_BASEPRODUCT "Apache"  
  
    #define AP_SERVER_MAJORVERSION_NUMBER 2  
    #define AP_SERVER_MINORVERSION_NUMBER 4  
    #define AP_SERVER_PATCHLEVEL_NUMBER   32  
    #define AP_SERVER_DEVBUILD_BOOLEAN    0 
    
   Nginx:
   隐藏版本信息:
   nginx.conf http段中加入 server_tokens off;
   重新编译:
    1、修改源文件 src/http/ngx_http_header_filter_module.c 
       static u_char ngx_http_server_string[] = "Server: nginx" CRLF;  
       static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;    
    2、修改源文件:src/core/nginx.h 
       #define nginx_version      1013003  
       #define NGINX_VERSION      "1.13.3"  
       #define NGINX_VER          "nginx/" NGINX_VERSION  
  
       #ifdef NGX_BUILD  
       #define NGINX_VER_BUILD    NGINX_VER " (" NGX_BUILD ")"  
       #else  
       #define NGINX_VER_BUILD    NGINX_VER  
       #endif  
          
       #define NGINX_VAR          "NGINX"      
       重新编译安装

名称:http响应头未使用x-xss-protection进行XSS过滤

参考链接:https://www.freebuf.com/articles/web/138769.html
漏洞描述:如果浏览器检测到了含有恶意代码的输入被呈现在HTML文档中,那么这段呈现的恶意代码要么被删除,要么被转义,恶意代码不会被正常的渲染出来,当然了,浏览器是否要拦截这段恶意代码取决于浏览器的XSS防护设置。
至于怎么设置浏览器的XSS防护机制,其实很简单,只要在HTTP响应报文的头部增加一个X-XSS-Protection 字段,明确地告诉浏览器XSS filter/auditor该如何工作。 X-XSS-Protection 的字段有三个可选配置值:
0:表示关闭浏览器的XSS防护机制
1:删除检测到的恶意代码, 如果响应报文中没有看到X-XSS-Protection 字段,那么浏览器就认为X-XSS-Protection配置为1,这是浏览器的默认设置
1; mode=block:如果检测到恶意代码,在不渲染恶意代码
注意:设置为1是默认选项,此选项默认设置扩大了攻击面, 比如攻击者可以利用这个默认设置选择性的删除页面中某些脚本,且会引入新的漏洞,容易被绕过
设置为1;mode=block 也会导致产生新的漏洞,但相对较小,一般建议设置此项
修复方法:通过web服务器,指定响应头中设置X-XSS-protection:1;mode=block;来告诉浏览器该如何进行防护XSS攻击

—具体操作方法:

Apache:Header set X-XSS-Protection "1; mode=block"
Nginx: add_header X-XSS-Protection '1; mode=block';

名称:http响应头x-content-options

漏洞描述:未设置此响应头,可以导致不符合MIME类型的文件类型的响应
修复方法:通过设置"X-Content-Type-Options: nosniff"响应标头,对 script 和 styleSheet 在执行是通过MIME 类型来过滤掉不安全的文件,需要写的页面指定的MIME类型必须正确且符合规范,例如:text/javascript
具体操作方法:

Apache:Header set X-Content-Type-Options nosniff
Nginx: add_header X-Content-Type-Options 'nosniff'; 

名称:未禁用不安全的HTTP方法

漏洞描述:
修复方法:禁用不安全的http方法,如:option、trace、delete
具体操作方法:

//禁用不安全的HTTP请求方法
Apache:
通用方法:
1)、使用limit禁止,或者使用limitExcept允许可以被使用的方法
        <LimitExcept GET POST HEAD>
            Allow from all
        </Limit>
        ...
        ...
2)、使用rewrite重写规则
        LoadModule  rewrite_module  ***/modules/mod_rewrite.so
        RewriteEngine On
        RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
        RewriteRule .* - [F]
        版本大于2.3以上的可以使用如下方法放行允许的http请求方法:
        启用mod_allowmethods模块
        <Location "/">
        AllowMethods GET POST HEAD
        </Location>
Nginx禁用办法:
        server段中加入如下判断,即可禁用除get、post、head以外的方法:
        if ($request_method !~* GET|POST|HEAD) {
            return 403;
        }
Tomcat 禁用方式:修改web.xml
        <security-constraint>
           <web-resource-collection>
              <web-resource-name>fortune</web-resource-name>
              <url-pattern>/*
              PUT
              DELETE
              HEAD
              OPTIONS
              TRACE
           
           
        
        
           BASIC
            

你可能感兴趣的:(web服务那些事)