Nginx 常见漏洞解决方式
Nginx安全配置
- 基于配置的解决方式
- Nginx 隐藏版本信息
- Nginx禁用不相关的请求方式
- Nginx 中的Host header attack
- Nginx + Tomcat 架构下配置通用错误页面
基于配置的解决方式
Nginx 隐藏版本信息
在一般的应用场景中我们需要隐藏掉Nginx的版本信息,因为攻击者可能会根据版本信息中的版本去找到相关版本的漏洞,然后利用这个漏洞对服务器进行攻击。
http {#不显示版本号server_tokens off;
}
配置前效果展示
添加配置的效果如下:
ps:如果想要将响应头中的server中的nginx修改成其它的值,需要修改源文件。
vi src/http/ngx_http_header_filter_module.c # 49-50行
// 内容:
static u_char ngx_http_server_string[] = "Server: nginx" CRLF;
static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;
static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF;// 更改为:
static char ngx_http_server_string[] = "Server: unknow" CRLF;
static char ngx_http_server_full_string[] = "Server: unknow" CRLF;
static u_char ngx_http_server_build_string[] = "Server: unknow" CRLF;
重新编译后效果如下图:
Nginx禁用不相关的请求方式
我们知道http的请求方式有如下几种:
序号 | 方法 | 描述 |
---|---|---|
1 | GET | 请求指定的页面信息,并返回实体主体 |
2 | HADE | 类似GET求情,返回的的响应中没有具体内容,只用来获取报头 |
3 | POST | 向指定资源提交数据进行处理请求,如:表单请求或者上传文件;数据呗包含在请求体重。POST请求可能会导致新的资源的建立或者旧资源的修改。 |
4 | PUT | 从客户端向服务器传送的数据取代文档指定的内容 |
5 | DELETE | 请求服务器删除指定的页面 |
6 | CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 |
7 | OPTIONS | 返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
nginx的server中添加配置禁用除GET|POST|PUT|DELETE之外的请求方法。
if ($request_method !~* GET|POST|PUT|DELETE) {return 403;}
一般来说nginx中配置了多个反向代理,如果配置在nginx中可能会多多个项目造成影响。如果是nginx + tomcat 的部署方式,我想只针对一个项目做配置的话,我们可以直接配置在项目的web.xml中。具体配置如下:
<security-constraint> <web-resource-collection> <url-pattern>/*</url-pattern> <http-method>HEAD</http-method> <http-method>PUT</http-method> <http-method>DELETE</http-method> <http-method>OPTIONS</http-method> <http-method>TRACE</http-method></web-resource-collection> <auth-constraint> </auth-constraint>
</security-constraint>
Nginx 中的Host header attack
在server模块配置:
if ($host !~* xxx.xxx.xxx|xxx.ddd.ddd.ddd) {return 403;
}
或者
if ($http_Host !~* xxx.xxx.xxx:port|xxx.ddd.ddd.ddd:port) {return 403;
}
xxx.xxx.xxx:代表域名
xxx.ddd.ddd.ddd:代表IP
根据需求,可以只写一个或多个条件。
$host不对端口进行判断,$http_Host则对端口进行判断,根据需求选用。
Nginx + Tomcat 架构下配置通用错误页面
如果是单独的nginx架构,只需要通过如下配置就能配置400类错误信息的通用页面
error_page 404 /404.html
但是如果是通过nginx反向代理tomcat时,上述配置就将失效,需要通过手动开启proxy_intercept_errors配置来实现。具体配置如下。
proxy_intercept_errors on;
error_page 400 401 404 /40x.html;
location = /40x.html {root html;
}
具体原因是400类错误是由tomcat报错来的,而且proxy_intercept_errors 参数默认是关闭的。
nginx中proxy_intercept_errors 参数含义:
当上游服务器响应头回来后,可以根据响应状态码的值进行拦截错误处理,与error_page 指令相互结合。用在访问上游服务器出现错误的情况下。
Nginx 常见漏洞解决方式相关推荐
- Linux下启动程序常见问题,linux系统启动流程及常见故障解决方式
Linux系统中启动的流程: 1.加载bios的硬件信息以及进行自我检测 并根据设置取得第一个启动的设备 2.若以硬盘方式引导 读取并执行引导扇区 MBR 3.加载grub(引导程序)启动菜单(/ ...
- linux常用命令 和 常见错误解决方式
目录 1.常用命令 1):cd命令集 2):ls查看目录和文件 3):目录操作 4):vim创建/查看/编辑文件 5):删除文件 6):复制和移动文件 7):浏览文件 8):打包解压命令 9):gre ...
- 哈希冲突的常见解决方式
哈希 Hash,一般翻译做散列.杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是,散列值的空间 ...
- Java(web)项目安全漏洞及解决方式【面试+工作】
Java(web)项目安全漏洞及解决方式[面试+工作] 一.安全性问题层次关系 大家经常会听到看到很多很多有关安全性方面的信息,可以说形形色色,对于在网络安全方面不太专业的同志来说,有点眼花缭乱,理不 ...
- nginx 上传文件漏洞_浅谈文件上传漏洞(其他方式绕过总结)
前言 上一篇文章简单的介绍了绕过客户端检测,现在总结一下其他方式绕过. 正文 1.1 服务端MIME类型检测绕过 检测原理:用户上传文件时,服务器会获取这个文件的MIME值,与事先设置好的进行比对,如 ...
- Web开发常见的几个漏洞解决方法
平时工作,多数是开发Web项目,由于一般是开发内部使用的业务系统,所以对于安全性一般不是看的很重,基本上由于是内网系统,一般也很少会受到攻击,但有时候一些系统平台,需要外网也要使用,这种情况下,各方面 ...
- 一些常见的问题错误及解决方式
一.数据库: 报错码: 1.error10013 就是端口被占用,换个端口就OK. 2.error10061 就是数据库没打开. 3.error10053的问题是与socket有关,但是不记得怎么解决 ...
- Nginx常见的错误及解决方法
1.Nginx 常见启动错误 有的时候初次安装nginx的时候会报这样的错误 sbin/nginx -c conf/nginx.conf 报错内容:sbin/nginx: error while lo ...
- 常见浏览器兼容性问题与解决方式
所谓的浏览器兼容性问题,是指由于不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,不管用户用什么浏览器来查看我们的站点或者登陆我们的系统,都应该是统一的 ...
最新文章
- 谈Linux的安全设置
- 一个 NAND flash写函数
- 数据结构-简单选择排序(C语言)
- android edittext seterror,EditText之setError方法一二
- ad20中怎么多选操作改层_在操作系统中CPU是怎么调度的
- 使用boost模板函数实现读写锁
- Android开发笔记(一百五十九)Android7.0的分屏模式
- Vue属性绑定~非常详细
- php之sprintf的用法,PHP之sprintf函数用法详解
- pano2vr保存的html打不开,pano2VR输出文件打不开
- 图像分类经典卷积神经网络—SENet论文翻译(纯中文版)—Squeeze-and-Excitation Networks(挤压和激励网络)
- mongoose视频教程
- 相同分数排相同名次C语言,实验六 按成绩输出名次
- Baltimore System of Classifications of Viruses
- 10 个 Flutter 优秀组件
- pytest官方文档 6.2 中文翻译版(第十章):警告捕捉
- FZU2132 - LQX的作业(概率论)
- unity3d实现像素游戏的精确碰撞判定
- fastapi获取访客真实ip
- 推荐一款不错的TP5开源是CMS
热门文章
- 基于python的贝叶斯分类器_Python实现朴素贝叶斯分类器的方法详解
- 数字孪生技术:WebGL vs. 游戏引擎
- 软件测试方法——等价类划分法详解
- 艾迪康通过上市聆讯:曾靠疫情检测两年赚20亿 凯雷为大股东
- 一篇充满碎碎念的短期自我总结(三)【tencent产品笔试+游戏群面总结】
- int argc,char* argv[] 详解
- linux udev
- NextInt()和NextLine()
- 【活动公告】Hackathon —— 腾讯云AI API接入迷你赛
- 使用OAuth 2.0访问谷歌的API