记一次服务器排查漏洞

记一次服务器排查漏洞

最近需要在客户现场部署app后端项目,需要将服务器并过去,但客户扫描后发现我们服务器还有一些信息级别的漏洞,要求我们清空了才能并过去,本来是安排运维来干的,但不知啥原因,leader扔我头上了,还pua我说技术啥都需要知道,所以记录一下几个简单漏洞的解决方案

HTTP横幅

HTTP 横幅是指在 HTTP 响应头中包含的服务器信息,包括服务器软件名称、版本号和操作系统等信息。攻击者可以利用这些信息来针对已知的漏洞进行攻击。

以下是几种解决 HTTP 横幅问题的方法:

  • 禁用 HTTP 横幅:大多数 Web 服务器都允许管理员禁用 HTTP 横幅。在 Apache Web 服务器中,可以编辑 httpd.conf 文件并添加或修改以下行

    ServerTokens Prod
    ServerSignature Off
    

    这将禁用服务器的详细版本信息,并从响应中删除服务器签名。

  • 使用安全 HTTP 头:安全 HTTP 头可以提高 Web 应用程序的安全性,并防止一些攻击。例如,在响应头中使用“X-Content-Type-Options”和“X-XSS-Protection”头可以帮助防止跨站点脚本攻击(XSS)。

  • 更新 Web 服务器版本:更新 Web 服务器版本可以修复已知的漏洞,并避免攻击者利用已知的漏洞。在更新之前,请确保备份 Web 服务器配置文件和密钥文件,以便在必要时进行恢复。

  • 使用网络安全设备:可以使用网络安全设备,如防火墙和入侵检测系统(IDS),来监控和检测 HTTP 横幅和其他安全漏洞。这些设备可以在攻击发生时发送警报,并阻止恶意流量。

由于我们服务器采用的Nginx 服务器,所以具体解决方案如下几种:

  1. 配置 server_tokens:默认情况下,Nginx 在响应头中包含版本信息。可以通过在 Nginx 配置文件中添加以下行来禁用它:

    server_tokens off;
    
                        add_header X-Frame-Options SAMEORIGIN;# 只允许本站用 frame 来嵌套
                        add_header X-Content-Type-Options nosniff; # 禁止嗅探文件类型
                        add_header X-XSS-Protection "1; mode=block"; # # XSS 保护
    
  2. 配置 server_name_in_redirect:如果启用了此选项,则 Nginx 将在重定向响应中包含服务器名称和端口号。可以通过在 Nginx 配置文件中添加以下行来禁用它:

    server_name_in_redirect off;
    
  3. 使用安全 HTTP 头:Nginx 可以使用 add_header 指令添加安全 HTTP 头。例如,可以添加以下行来防止浏览器嗅探 MIME 类型:

    add_header X-Content-Type-Options nosniff;
    
  4. 使用网络安全设备:可以使用网络安全设备,如防火墙和入侵检测系统(IDS),来监控和检测 HTTP 横幅和其他安全漏洞。这些设备可以在攻击发生时发送警报,并阻止恶意流量。

Http头Hostname攻击

解决方案:

nginx解决的

         server {
                listen 8091 default;
                server_name _;
                location / {
                        return 403;
                        }
                }

并将具体监听的server_name改为真实ip

弱CORS策略

                        set $allow_cors 0;
                        # 判断不为空
                        if ($http_origin) {
                                set $allow_cors 1;
                         }
                        # 判断不在白名单内
                        if ($http_origin !~* "(ip)" ) {
                                set $allow_cors "${allow_cors}1";
                        }
                        # 判断不为空 且 不在白名单内,返回403
                        if ($allow_cors = "11") {
                                return 403;
                        }
                        add_header Access-Control-Allow-Origin 'http://ip:端口' always;
                        add_header 'Access-Control-Allow-Credentials' 'false'  always;

代码级别:

response.setHeader("Access-Control-Allow-Origin", "http://127.0.0.1");
response.setHeader("Access-Control-Allow-Methods",
						"POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers",
						"x-requested-with");
       if($request_method !~ ^(GET|HEAD|POST)$) {
                     return 404;
        }
        
        autoindex off;

Web服务器目录列表信息泄露

在监听目录上配置:

autoindex off;

web漏洞-缺少X-Frame-Options标头

配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 http, server 或者 location 的配置中:

add_header X-Frame-Options SAMEORIGIN always;

缺少“Content-Security-Policy”头

add_header Content-Security-Policy "default-src *;style-src 'self' 'unsafe-inline';script-src 'self' 'unsafe-inline' 'unsafe-eval';img-src * data:;worker-src * blob:;font-src 'self' data:;";

HTTP X-Permitted-Cross-Domain-Policies 缺失

系统响应头缺少X-Permitted-Cross-Domain-Policies,将会导致浏览器的安全特性失效

add_header X-Permitted-Cross-Domain-Policies 'none';

HTTP X-Download-Options 缺失

web浏览器在响应头中缺少 X-Download-Options,这将导致浏览器提供的安全特性失效,更容易遭受 Web 前端黑客攻击的影响。

add_header X-Download-Options "noopen";

Referrer-Policy响应头缺失

用来监管哪些访问来源信息——会在 Referer 中发送——应该被包含在生成的请求当中,增加隐私保护。

当我们点击一个连接时,会产生一个http请求去获取新页面的内容,在该请求的header中会有一个referrer用以说明该请求是从哪个页面跳转过来的。如果缺少该字段会导致浏览器的安全特性消失,使我们的系统更容易受到攻击。

add_header Referrer-Policy "no-referrer";

Nginx移除版本信息

server_tokens off;

Git元数据目录信息泄露

   location ~ /\.git {
        deny all;
    }

参考链接:https://blog.csdn.net/liwan09/article/details/130248003

posted @ 2023-06-25 09:29  小学程序员  阅读(104)  评论(0编辑  收藏  举报