记一次服务器排查漏洞
最近需要在客户现场部署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 服务器,所以具体解决方案如下几种:
-
配置 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 保护
-
配置 server_name_in_redirect:如果启用了此选项,则 Nginx 将在重定向响应中包含服务器名称和端口号。可以通过在 Nginx 配置文件中添加以下行来禁用它:
server_name_in_redirect off;
-
使用安全 HTTP 头:Nginx 可以使用 add_header 指令添加安全 HTTP 头。例如,可以添加以下行来防止浏览器嗅探 MIME 类型:
add_header X-Content-Type-Options nosniff;
-
使用网络安全设备:可以使用网络安全设备,如防火墙和入侵检测系统(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
标签:HTTP,header,server,排查,漏洞,add,服务器,Options From: https://www.cnblogs.com/java5wanping/p/17502145.html