设为首页 收藏本站
查看: 950|回复: 0

[经验分享] 彻底移除 IIS Response Header 版本信息

[复制链接]
YunVN网友  发表于 2018-12-8 08:10:24 |阅读模式

  •   转自:http://blog.darkthread.net/post-2018-01-30-remove-iis-response-server-header.aspx

  •   从 IIS Reponse Header 移除 Server、X-AspNet-Version、X-Powered-By 等版本信息,可降低因曝露信息被锁定***的机率,被视为提高资安防护的手段(效果高低见仁见智, 但有些资安扫瞄将此列为弱点,不做也得做)。 这已算是老话题,网络上有不少讨论与参考文章:
  •   mrkt 的程序学习笔记- ASP.NET MVC - 移除特定的 Response Headers 内容
  •   Troy Hunt: Shhh... don’t let your response headers talk too loudly
  •   KingKong Bruce记事: 提升ASP.NET MVC项目安全性与效能小技巧
  综观常见的几种做法,不管是用 IHttpModule 或 Global.asax.cs 在 PreSendRequestHeader() 将 Server Header 移除,都只对 ASP.NET WebForm 或 ASP.NET MVC 有效,***者只要改下载 HTML/JS/CSS/JPG/PNG 等静态档案,甚至随便想个不存在的 html,HTTP 404 Reponse 冒出 Server: Microsoft-IIS/10.0 当场破功,白忙半天。
DSC0000.gif

  这是因为静态内容由 IIS 直接处理,不会经过我们设计的机制(延伸阅读:system.web 与 system.webServer )。
  有个笨方法,设定  将所有静态档案也导入 ASP.NET Pipeline,虽然管用,但原本由 IIS 轻巧做掉的工作通通被导进为复杂情境设计的笨重程序,对效能很伤。
  Server Header 是当中最棘手的项目,IIS Manager HTTP Response Headers 或 URL Rewrite Module 可以改写或清空 Server Header,但无法移除,而 UrlScan 可以清除 Server Header 只支持到 IIS 7。
  最后我找到一个不错的解决方案 - StripHeaders。 一个 C++ 开发的开源模块,使用 WIN32 API 在 IIS 核心执行,能涵盖静态内容,核心模块的 Overhead 低,加上原生程序执行效能远比 .NET 程序快,较不用担心效能问题。
  IIS 原生模块的安装程序蛮多,不过 StripHeaders 提供MSI 安装档,大大简化安装步骤。 目前最新版 iis_stripheaders_module_1.0.5.msi 于 2016-11-19 推出,支持 Server 2016。
  安装程序在背后做了一堆事:

  •   Installs stripheaders.dll
  •   Registers the Native-Code module with IIS using the appcmd.exe command
  •   Extends the IIS configuration schema to allow setting of headers to remove
  •   Adds default settings to the IIS configuration to remove the common "Server", "X-Powered-By" and "X-Aspnet-Version" respon se headers
  •   Adds a registry setting to remove the "Server: Microsoft-HTTPAPI/2.0" response header.
  理论上重开机后就会生效,如果你不想重开机,可以使用net stop http 重启底层 HTTP 服务再手动启动 IIS 及其他相依服务。 不过我实测时停用 HTTP 失败(处于停用中的状态,一直关不掉),最后只能重开机。 但我遇的状况是重开完也没生效,最后参考 Github 的安装程序原始码(Open Source 万岁!),手动注册 StripHeadersModule 才解决问题:
  appcmd install module /name:StripHeadersModule /image:%windir%\system32\inetsrv\stripheaders.dll /add:true /lock:true
DSC0001.gif

  安装妥当后,如下图应该要在 IIS 模块列表看到 StripHeadersModule:
DSC0002.gif

  StripHeaders 默认会移除 Server、X-Powered-By、X-AspNet-Version 等 Response Header,不需修改 web.config 就会生效。 如需移除额外 Header,则可在 web.config system.webServer/stripHeaders 中设定。
  以 css 实测,未启用 StripHeaders 前:
DSC0003.gif

  启用后,Server、X-Powered-By 消失,成功!
DSC0004.gif



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-644468-1-1.html 上篇帖子: PHPWAMP、IIs、Nginx、Apache三大主流web服务器伪静态的详细设置过程 下篇帖子: SCOM的管理包以及指定监控服务IIS网页服务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表