nginx修复漏洞

Posted 一夜暴富--gogogo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx修复漏洞相关的知识,希望对你有一定的参考价值。

一、 X-Frame-Options头配置错误

修复建议:
1. 配置 X-Frame-Options 
2. 对于配置了已废弃的 ALLOW-FROM ,原则上不推荐使用 
3. 删除重复配置的X-Frame-Options

修复方法:
1.nginx服务器:配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 ‘http’, ‘server’ 或者 ‘location’ 的配置中:add_header X-Frame-Options SAMEORIGIN;

2.apache服务器:配置文件中添加一行信息即可。Header always append X-Frame-Options SAMEORIGIN配置修改之后需要重启apache服务才可以生效。
重启的时候有可能报错,Header识别不了,这表明安装的apache没有加载headers模块。加载该模块后再重启服务即可。LoadModule                                                                 headers_module modules/mod_headers.so

二、X-Content-Type-Options头配置错误

HTTP X-Content-Type-Options 可以对 script 和 styleSheet 在执行是通过MIME 类型来过滤掉不安全的文件。)

修复建议:
1. 响应头或者响应体的mete属性中配置X-Content-Type-Options信息头为nosniff 
2. 去除重复的X-Content-Type-Options

修复方法:1.nginx服务器:

                    location / 
                     ...
                                add_header X-Content-Type-Options nosniff;
                     ...
                    

三、发现可高速缓存的页面

(缺省情况下,大部分Web浏览器都配置成会在使用期间高速缓存用户的页面, 因此也可能会缓存SSL页面)

修复建议:在所有 SSL页面及含有敏感数据的所有页面上,禁用高速缓存,可以通过在响应头中或者响应体的meta中配置(二选一) 
1. "Cache-Control: no-store" 
2. "Pragma: no-cache""Cache-Control: no-cache"

修复方法:1.nginx服务器:

nginx在服务器块下的nginx.conf中添加以下参数
server 
      listen       443;
      server_name  ds.v.com;  # 驾驶安全

      location / 
        ...
        add_header Cache-Control no-cache;
        ...
      
    

#参数解释:

Cache-Control: private:此伪指令可向代理指示某个页面中包含私有信息,因此不能由共享高速缓存进行高速缓存。但是,它不会指示浏览器阻止高速缓存此页面。
Cache-Control:no-cache: 此伪指令也可向代理指示某个页面中包含私有信息,因此不能高速缓存。它还会指示浏览器重新验证服务器以检查是否有新的版本可用。这意味着浏览器可能会存储敏感页面或要在重新验证中使用的信息。某些浏览器不一定会跟踪 RFC,因此可能会将 no-cache 视为 no-store。
Cache-Control:no-store:这是最安全的伪指令。它同时指示代理和浏览器不要高速缓存此页面或将其存储为它们的高速缓存文件夹
Pragma: no-cache:对于不支持高速缓存控制标题的较旧浏览器,该伪指令是必需的。

四、服务端支持弱TLS算法

修复建议:调整服务器支持的密码套件

修复方法:1.nginx服务器:在项目中需要设置nginx 的加密方式、使用的椭圆曲线

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:!MD;
ssl_prefer_server_ciphers on;
ssl_ecdh_curve X25519;

ssl_certificate /usr/local/nginx/cert/server_root.crt;
ssl_certificate_key /usr/local/nginx/cert/server_private.key;

五、Strict-Transport-Security 请求头配置错误

(HTTP 严格传输安全 (HSTS) 是防止安全的 (HTTPS) 网站降级为不安全的 HTTP 网站的一种机制。该机制可让Web 服务器指导其客户机(Web浏览器或其他用户代理程序)在与该服务器交互时使用安全的 HTTPS连接, 禁止使用不安全的 HTTP 协议)

修复建议:
1. 通过将 Strict-Transport-Security 响应头添加到 Web 应用程序响应来实施 HTTP严格传输安全策略
2. max-age 值不宜过小,推荐 10000 以上
3. 禁止重复添加

修复方法:1.nginx服务器:

location / 
...
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
...

六、Content-Security-Policy头配置错误

(响应头缺少或者配置了不安全Content-Security-Policy属性)

修复建议:
1. 配置 Content-Security-Policy
2. 禁止配置 * 修正响应 policy
3. 对于配置 'unsafe-inline'/'unsafe-eval的policy,原则上不推荐使用

修复方法:启用 CSP方法:一种是通过 HTTP头信息的Content-Security-Policy的字段,另一种是通过网页的meta标签。

第一种:修改 nginx 配置文件:
在nginx.conf 配置文件中,增加如下配置内容:
add_header Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval' blob: data: ;";

第二种:通过网页的meta标签:
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval' 'unsafe-inline'">

七、加密会话(SSL)Cookie中缺少secure属性

(Web应用程序设置了缺少secure属性的会话cookie)
修复建议:https请求中建议为cookie设置“secure”属性, 才能防止以未加密的方式发送 cookie

-----参考链接:https://blog.csdn.net/qq_39797713/article/details/116785577

八、会话cookie中缺少httpOnly属性

(会话cookie缺少HttpOnly属性)

修复建议:为cookie设置“HttpOnly”属性, 防止会话cookie被脚本访问

------参考链接:https://www.cnblogs.com/qingmuchuanqi48/articles/15756321.html

九、X-XSS-Protection头配置错误

(响应头缺少或者配置了不安全X-XSS-Protection属性,可能会削弱防御跨站点脚本编制的能力)
修复建议: 
1.配置响应头“X-XSS-Protection”, 且将值设为1。 
2.不要重复多次配置“X-XSS-Protection”响应头
修复方法:
1.nginx服务器:

nginx配置设置
... ...
server 
... ...
add_header X-XSS-Protection 1;
... ...

2.HTML前端解决方法:<meta http-equiv="X-XSS-Protection" content="1; mode=block" />
server 
      listen       10443 ssl;
      listen       10080;
        server_name xxxxxx.com.cn;
        access_log  /data/logs/nginx/web_access.log  main;
        error_log /data/logs/nginx/web_error.log;
        ssl_certificate /etc/nginx/ssl/xxxx.com.cn.pem;
        ssl_certificate_key /etc/nginx/ssl/xxxx.com.cn.key;
 
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:!MD;
        ssl_prefer_server_ciphers on;
        #ssl_ecdh_curve X25519:P-256:P-384:P-224:P-521;
 
 
        client_max_body_size 4096M;
        proxy_ignore_client_abort on;
        port_in_redirect on;
 
 
        add_header X-Frame-Options SAMEORIGIN;
        add_header X-XSS-Protection 1;
        add_header Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval' blob: data: ;";
 
 
        location / 
            include /etc/nginx/proxy_params;
            root /data/ota_soft/front/dist/;
            add_header X-Content-Type-Options nosniff;
            add_header Cache-Control no-cache;
            add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
        

以上是关于nginx修复漏洞的主要内容,如果未能解决你的问题,请参考以下文章

Nginx 漏洞 (CVE-2018-16843,CVE-2018-16844)

重新编译Nginx指导手册修复静态编译Openssl的Nginx漏洞 (转)

Nginx敏感信息泄露漏洞(CVE-2017-7529)

Nginx 漏洞扫描及修复方案

Nginx 漏洞扫描及修复方案

Nginx 漏洞扫描及修复方案