> 文章列表 > 等保检测风险处理方案

等保检测风险处理方案

等保检测风险处理方案

文章目录

  • 等保检测风险处理方案
    • 1. Apache HTTP Server "httpOnly" Cookie信息泄露漏洞(CVE-2012-0053))
    • 2. 检测到目标web应用表单存在口令猜测攻击
    • 3. X-Content-Type-Options响应头缺失
    • 4. X-XSS-Protection响应头缺失
    • 5. Content-Security-Policy响应头缺失
    • 6. Referrer-Policy响应头缺失
    • 7. X-Permitted-Cross-Domain-Policies响应头缺失
    • 8. X-Download-Options响应头缺失
    • 9. X-Frame-Options未配置
    • 10. Strict-Transport-Security响应头缺失
    • 11. 会话cookie中缺少HttpOnly属性
    • 12. 服务器版本信息泄露
    • 13. 备份文件或敏感目录泄露

等保检测风险处理方案

  • 该方案仅针对 PHP 相关业务,其他服务端语言未实践,可作为参考。
  • 关于请求头漏洞风险相关的配置,都写在 index.php 入口文件中(由于写在 nginx 配置文件中无作用),后续有新增漏洞风险会持续补充。
  • 请求头相关配置如下(目录1-11)
    header("X-Content-Type-Options: nosniff");
    header("X-XSS-Protection: 1");
    header("Content-Security-Policy: script-src '*', unsafe-inline, unsafe-eval");
    header("Referrer-Policy: origin");
    header("X-Permitted-Cross-Domain-Policies: none");
    header("X-Download-Options: noopen");
    header("X-Frame-Options: SAMEORIGIN");
    header("Strict-Transport-Security: max-age=15552000");
    header("Set-Cookie: Path=/, HttpOnly, Secure");

1. Apache HTTP Server “httpOnly” Cookie信息泄露漏洞(CVE-2012-0053))

  • 风险等级:中危
  • 漏洞建议:目前厂商已发布升级补丁以修复漏洞,详情请关注厂商主页:http://svn.apache.org/viewvc?view=revision&revision=1235454
  • 处理方案:升级apache/卸载apache
  • 说 明:升级服务器上安装的apache版本到最新版本后,依然有此问题,怀疑检测机制有问题,直接卸载了apache(未用到该服务),对方依然表示能检测到该问题,无解,遂告知他们已卸载,协商后,检测机构通过了该风险检测。

2. 检测到目标web应用表单存在口令猜测攻击

  • 风险等级:低危
  • 漏洞建议:在登录界面添加验证码防止口令猜测,或添加ip锁定
  • 处理方案:登录页面新增图形验证码或其他验证码验证方式(目的是增加密码猜测复杂度)
  • 说 明:无

3. X-Content-Type-Options响应头缺失

  • 风险等级:低危
  • 漏洞建议:将您的服务器配置为在所有传出请求上发送值为“nosniff”的“X-Content-Type-Options”头。对于 Apache,请参阅: http://httpd.apache.org/docs/2.2/mod/mod_headers.html 对于 IIS,请参阅: https://technet.microsoft.com/pl-pl/library/cc753133%28v=ws.10%29.aspx 对于 nginx,请参阅: http://nginx.org/en/docs/http/ngx_http_headers_module.html\\r\\n
  • 处理方案:header(“X-Content-Type-Options: nosniff”);
  • 说 明:无

4. X-XSS-Protection响应头缺失

  • 风险等级:低危
  • 漏洞建议:将您的服务器配置为在所有传出请求上发送值为“1”(例如已启用)的“X-XSS-Protection”头。对于 Apache,请参阅: http://httpd.apache.org/docs/2.2/mod/mod_headers.html 对于 IIS,请参阅: https://technet.microsoft.com/pl-pl/library/cc753133%28v=ws.10%29.aspx 对于 nginx,请参阅: http://nginx.org/en/docs/http/ngx_http_headers_module.html\\r\\n
  • 处理方案:header(“X-XSS-Protection: 1”);
  • 说 明:无

5. Content-Security-Policy响应头缺失

  • 风险等级:低危
  • 漏洞建议:将您的服务器配置为发送“Content-Security-Policy”头。对于 Apache,请参阅: http://httpd.apache.org/docs/2.2/mod/mod_headers.html 对于 IIS,请参阅: https://technet.microsoft.com/pl-pl/library/cc753133%28v=ws.10%29.aspx 对于 nginx,请参阅: http://nginx.org/en/docs/http/ngx_http_headers_module.html\\r\\n
  • 处理方案:header(“Content-Security-Policy: script-src ‘*’, unsafe-inline, unsafe-eval”);
  • 说 明:无

6. Referrer-Policy响应头缺失

  • 风险等级:低危
  • 漏洞建议:1)修改服务端程序,给 HTTP 响应头加上 Referrer-Policy 如果是 java 服务端,可以使用如下方式添加 HTTP 响应头 response.setHeader(“Referrer-Policy”, “value”) 如果是 php 服务端,可以使用如下方式添加 HTTP 响应头 header(“Referrer-Policy: value”) 如果是 asp 服务端,可以使用如下方式添加 HTTP 响应头 Response.AddHeader “Referrer-Policy”, “value” 如果是 python django 服务端,可以使用如下方式添加 HTTP 响应头 response = HttpResponse() response[“Referrer-Policy”] = “value” 如果是 python flask 服务端,可以使用如下方式添加 HTTP 响应头 response = make_response() response.headers[“Referrer-Policy”] = “value”; 2)修改负载均衡或反向代理服务器,给 HTTP 响应头加上 Referrer-Policy 如果使用 Nginx、Tengine、Openresty 等作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: add_header Referrer-Policy value; 如果使用 Apache 作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: Header add Referrer-Policy “value”。\\r\\n
  • 处理方案:header(“Referrer-Policy: origin”);
  • 说明:无

7. X-Permitted-Cross-Domain-Policies响应头缺失

  • 风险等级:低危
  • 漏洞建议:1)修改服务端程序,给 HTTP 响应头加上 X-Permitted-Cross-Domain-Policies 如果是 java 服务端,可以使用如下方式添加 HTTP 响应头 response.setHeader(“X-Permitted-Cross-Domain-Policies”, “value”) 如果是 php 服务端,可以使用如下方式添加 HTTP 响应头 header(“X-Permitted-Cross-Domain-Policies: value”) 如果是 asp 服务端,可以使用如下方式添加 HTTP 响应头 Response.AddHeader “X-Permitted-Cross-Domain-Policies”, “value” 如果是 python django 服务端,可以使用如下方式添加 HTTP 响应头 response = HttpResponse() response[“X-Permitted-Cross-Domain-Policies”] = “value” 如果是 python flask 服务端,可以使用如下方式添加 HTTP 响应头 response = make_response() response.headers[“X-Permitted-Cross-Domain-Policies”] = “value”; 2)修改负载均衡或反向代理服务器,给 HTTP 响应头加上 X-Permitted-Cross-Domain-Policies 如果使用 Nginx、Tengine、Openresty 等作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: add_header X-Permitted-Cross-Domain-Policies value; 如果使用 Apache 作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: Header add X-Permitted-Cross-Domain-Policies “value”。\\r\\n
  • 处理方案:header(“X-Permitted-Cross-Domain-Policies: none”);
  • 说 明:无

8. X-Download-Options响应头缺失

  • 风险等级:低危
  • 漏洞建议:1)修改服务端程序,给 HTTP 响应头加上 X-Download-Options 如果是 java 服务端,可以使用如下方式添加 HTTP 响应头 response.setHeader(““X-Download-Options””, ““value””) 如果是 php 服务端,可以使用如下方式添加 HTTP 响应头 header(““X-Download-Options: value””) 如果是 asp 服务端,可以使用如下方式添加 HTTP 响应头 Response.AddHeader ““X-Download-Options””, ““value”” 如果是 python django 服务端,可以使用如下方式添加 HTTP 响应头 response = HttpResponse() response[““X-Download-Options””] = ““value”” 如果是 python flask 服务端,可以使用如下方式添加 HTTP 响应头 response = make_response() response.headers[““X-Download-Options””] = ““value””;\\n2)修改负载均衡或反向代理服务器,给 HTTP 响应头加上 X-Download-Options 如果使用 Nginx、Tengine、Openresty 等作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: add_header X-Download-Options value; 如果使用 Apache 作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: Header add X-Download-Options ““value””。
  • 处理方案:header(“X-Download-Options: noopen”);
  • 说 明:无

9. X-Frame-Options未配置

  • 风险等级:低危
  • 漏洞建议:" 修改web服务器配置,添加X-Frame-Options响应头。赋值有如下三种:\\n1、DENY:不能被嵌入到任何iframe或者frame中。\\n2、SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。\\n3、ALLOW-FROM uri:只能被嵌入到指定域名的框架中。\\n例如:\\napache可配置http.conf如下:\\n\\n Header always append X-Frame-Options ““DENY””\\n\\n\\nIIS可配置相关网站的Web.config如下:\\n<system.webServer>\\n …\\n\\n \\n \\n <add name=““X-Frame-Options”” value=““deny”” />\\n \\n \\n\\n …\\n</system.webServer>"\\r\\n
  • 处理方案:header(“X-Frame-Options: SAMEORIGIN”);
  • 说 明:无

10. Strict-Transport-Security响应头缺失

  • 风险等级:低危
  • 漏洞建议:“1)修改服务端程序,给 HTTP 响应头加上 Strict-Transport-Security 如果是 java 服务端,可以使用如下方式添加 HTTP 响应头 response.setHeader(”“Strict-Transport-Security”“, ““value””) 如果是 php 服务端,可以使用如下方式添加 HTTP 响应头 header(”“Strict-Transport-Security: value”“) 如果是 asp 服务端,可以使用如下方式添加 HTTP 响应头 Response.AddHeader ““Strict-Transport-Security””, ““value”” 如果是 python django 服务端,可以使用如下方式添加 HTTP 响应头 response = HttpResponse() response[”“Strict-Transport-Security”“] = ““value”” 如果是 python flask 服务端,可以使用如下方式添加 HTTP 响应头 response = make_response() response.headers[”“Strict-Transport-Security”“] = ““value””;\\n2)修改负载均衡或反向代理服务器,给 HTTP 响应头加上 Strict-Transport-Security 如果使用 Nginx、Tengine、Openresty 等作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: add_header Strict-Transport-Security value; 如果使用 Apache 作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: Header add Strict-Transport-Security ““value””。”\\r\\n
  • 处理方案:header(“Strict-Transport-Security: max-age=15552000”);
  • 说 明:无

11. 会话cookie中缺少HttpOnly属性

  • 风险等级:低危
  • 漏洞建议:向所有会话cookie中添加“HttpOnly”属性。 Java示例: HttpServletResponse response2 = (HttpServletResponse)response; response2.setHeader( “Set-Cookie”, “name=value; HttpOnly”); C#示例: HttpCookie myCookie = new HttpCookie(“myCookie”); myCookie.HttpOnly = true; Response.AppendCookie(myCookie); VB.NET示例: Dim myCookie As HttpCookie = new HttpCookie(“myCookie”) myCookie.HttpOnly = True Response.AppendCookie(myCookie)\\r\\n
  • 处理方案:header(“Set-Cookie: Path=/, HttpOnly, Secure”);
  • 说 明:无

12. 服务器版本信息泄露

  • 风险等级:低危
  • 漏洞建议:1.隐藏响应的server版本信息\\n2.隐藏响应的X-Powered-By版本信息
  • 处理方案:
    1. 服务端语言为PHP时,隐藏 PHP 版本
      编辑PHP配置文件php.ini,找到 expose_php On 改成 expose_php Off,保存并退出,重启php-fpm。
    2. Web服务器为NGINX时,隐藏NGINX版本
      编辑NGINX配置文件nginx.conf,加入以下一行配置
      server_tokens off;
      

      保存并退出,重启nginx服务。

    3. Web服务器为apache时,隐藏apache版本
      编辑apache配置文件httpd.conf或apache2.conf,加入以下两行配置:
      ServerTokens Prod
      ServerSignature Off
      

      保存并退出,重启apache服务。

  • 说 明:无

13. 备份文件或敏感目录泄露

  • 风险等级:低危
  • 漏洞建议:1、禁止在网站目录下存放网站备份文件或包含敏感信息的文件。\\n2、如需存放该类文件,对文件名、目录进行鉴权处理。
  • 处理方案:针对域名对应的nginx配置文件,在server{}内加入如下内容(根据检测出的文件名称进行配置,不一定是composer.json和LICENSE):
    #composer.json文件
    location ^~ /composer.json {return 404;
    }
    #LICENSE文件
    location ^~ /vendor/composer/LICENSE {return 404;
    }
    
  • 说 明:无

*******************************只要思想不滑坡,办法总比困难多*******************************