前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx这个信息暴露,无异于向攻击者明牌

Nginx这个信息暴露,无异于向攻击者明牌

作者头像
SRE运维手记
发布2024-08-30 17:15:24
980
发布2024-08-30 17:15:24
举报
文章被收录于专栏:SRE运维手记

在网络安全领域,服务器信息的暴露常常被视为一种潜在的风险。具体来说,Nginx服务器的版本号暴露无异于向攻击者明牌,增加了被针对性攻击的风险。本文将介绍如何减少服务器信息的泄露,并进一步增强服务器的隐蔽性。本文将介绍一种比关闭server_tokens更灵活、更隐蔽的方法 。

01、暴露版本号的危害

有时候我们可能会质疑,泄露nginx的版本号有什么大不了?但实际上主要通过恶意构造的请求就能产生致命的威胁,如 1.15.6 和 1.14.1 版本之前的 nginx 在 HTTP/2 实现中存在漏洞,构造之后的请求就可能导致nginx内存消耗过大,严重者出现拒绝服务(Dos)。

02、大型网站的做法

大型的网站基本会隐藏版本号,更有甚者会自定义web引擎的名称,我们先看下天猫和京东的做法。

天猫:

京东:

从上面的截图,我们可以看出,没有一家是显示web引擎的版本号的。

03、实用方法介绍

在上面文章中,我们已经介绍了nginx的编译方法,其中就包含了headers-more-nginx-module模块,其中有个指令more_set_headers可以实现灵活隐藏web引擎版本号,倘若公司的安全防护等级降低,甚至可以自定义名称,下面是实现的方法:

代码语言:javascript
复制
# 在http块中添加,全局生效
http {
    more_set_headers 'Server: SRE';
}

# 在server块中添加,局部生效,更加灵活
server {
    more_set_headers 'Server: SRE';
}

通过上面的配置后,站点反馈的response headers的server头将返回值为SRE,黑客的攻击成本将大大提高。

当然,headers-more-nginx-module模块还有其他实用的指令,都看一下吧:

1. more_clear_headers:用于删除指定的HTTP头。

代码语言:javascript
复制
location / {
    more_clear_headers 'Server';
}

这将删除响应头中的Server字段。

2. more_set_input_headers:用于修改传入请求的HTTP头。

代码语言:javascript
复制
location / {
    more_set_input_headers 'X-Forwarded-Proto: https';
}

这将为所有传入请求添加或修改X-Forwarded-Proto头。

3. more_clear_input_headers:用于删除传入请求的指定HTTP头。

代码语言:javascript
复制
location / {
    more_clear_input_headers 'User-Agent';
}

这将删除传入请求中的User-Agent头。

04、结 语

通过合理配置Nginx的server_tokens指令和使用more_set_headers模块,我们可以有效隐藏Nginx版本号,并进一步伪装服务器信息。这不仅提升了服务器的隐蔽性,也增加了攻击者识别和攻击的难度,从而提高了整体安全性。此外,我们往往可能认为nginx的安装很简单,但要构建一套能抗能打的nginx还是需要有实用的插件加持,欢迎阅读上一篇文章,下期将继续为大家分享nginx的实用模块的具体实战。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SRE运维手记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档