金蝶云星空 配置站点安全配置与参数
目标:收集常用站点安全配置方案,帮助客户现场快速配置和通过第三方安全扫描工具认证。( 7.X:支持;)
1、拦截XSS攻击配置(IISRESET):
<urlBlockRules> <!-- 这里的所有value必须符合正向搜索正则表达式,表达式内容必须经过base64编码--> <!--\<(\s){0,}(\/){0,}(\s){0,}script\>--> <add key="Script_In_Bracket" value="XDwoXHMpezAsfShcLyl7MCx9KFxzKXswLH1zY3JpcHQoXHMpezAsfShcLyl7MCx9KFxzKXswLH1cPg==" /> <!--[\<\>] 最严格规则,如有特例可以屏蔽这个规则 --> <add key="Point_Bracket" value="W1w8XD5d" /> <!--(\<[^\<^\>]{0,}\>)--> <add key="Point_Bracket_Pair" value="KFw8W15cPF5cPl17MCx9XD4p"/> <add key="document_cookie" value="ZG9jdW1lbnRcLmNvb2tpZVtcLlw7XHNcK1wpXXswLDF9" /> <!--\\u\S{4,4}\\u--> <add key="unicode" value="XFx1XFN7NCw0fVxcdQ==" /> <!--\<\s{0,}iframe--> <add key="iframe" value="XDxcc3swLH1pZnJhbWU=" /> <!-- 以下为选用规则,不是星空默认出厂配置 --> <!--(/\.\.){1,}/ 拦截改变相对路径资源的请求--> <add key="Double_Point_InRBar" value="KCUyZlwuXC4pezEsfSUyZg==" /> <!--(\/\.\.){2,}\/ 拦截改变相对路径资源的请求--> <add key="Double_Point_InRBarCT" value="KFwvXC5cLil7Mix9XC8=" /> <!--\?{1,}[^\/,^\(]{1,}\s{0,}\([^\)]{0,}\)[\s\S]{0,}&user-agent= 拦截url函数注入--> <add key="URL_INJ_Func" value="XD97MSx9W15cLyxeXChdezEsfVxzezAsfVwoW15cKV17MCx9XClbXHNcU117MCx9JnVzZXItYWdlbnQ9" /> <!--解决父级路径访问注入 accessParentPath: ../--> <add key="accessParentPath" value="XC5cLlwv" /> </urlBlockRules>
1.2、在website/app_data/Common.config中的<appSettings>节点下增加并启用输入数据拦截规则参数 <add key="IsInputBlock" value="True"/>参数,同时确保启用了数据压缩【1.1.4】;
<!-- 实现对明文ap参数的waf 拦截 --> <textBlockRules> <!-- 启用拦截规则参数由Appsettings.IsInputBlock控制,输入数据拦截,拦截点:1、所有服务端输入参数;2、HTML客户端文本录入;--> <!-- 这里的所有value必须符合正向搜索正则表达式,表达式内容必须经过base64编码;--> <!--\<(\s){0,}(\/){0,}(\s){0,}script\>--> <add key="Script_In_Bracket" value="XDwoXHMpezAsfShcLyl7MCx9KFxzKXswLH1zY3JpcHQoXHMpezAsfShcLyl7MCx9KFxzKXswLH1cPg==" /> <add key="document_cookie" value="ZG9jdW1lbnRcLmNvb2tpZVtcLlw7XHNcK1wpXXswLDF9"/> <!--\<\s{0,}iframe--> <add key="iframe" value="XDxcc3swLH1pZnJhbWU="/> <!--\<[^(\?xml)][^\>^\<]+\=[^\>^\<]+[^\?]\>--> <add key="caller_in_Point_Bracket" value="XDxbXihcP3htbCldW15cPl5cPF0rXD1bXlw+Xlw8XStbXlw/XVw+"/> <add key="caller_in_less_Point_Bracket" value="XDxbXihcP3htbCldW15cPl5cPF0rXD1bXlw+Xlw8XStbXlw/XStbXChcKVw+XCdcIl1bXlw/XQ=="/> </textBlockRules>
<!--启用HTTP请求压缩--> <add key="SL_Http_Compressed" value="true"/>
1.5、如果二开自定义请求参数存在类注入脚本格式数据或xml数据,请在传入前用base64进行编码,使用时再进行解码,避免木马注入。
1.6、添加强制转义特殊字符配置,解决url扩展威胁,在app_data/common.config的appsettings中增加自定义转义如下。
<!-- PT-146926 [8.0.0.20220922] 发布时间:2022/9/22 构建号:8.0.361.9, 强制转义 [`'\(\)\s\<\>\&\=] 为下划线 --> <add key="__DirPathXssCharsPattern__" value="[`'\(\)\s\<\>\"\&\=]" />
或者升级到最新版本,该参数在 【PT-151005 [8.2.0.20231109] 发布时间:2023/11/9 构建号:8.2.775.7 】已经作为出厂配置,升级该补丁即可。
2、保护Cookie的安全设置:
<httpCookies httpOnlyCookies="true" requireSSL="true" />
<!-- PT141347[7.3.1391.1] 2019/9/20--> <add key="IsSecureCookie" value="True"/> <!-- PT141347[7.3.1391.1] 2019/9/20--> <add key="IsAspNetSecureCookie" value="True"/>
3、防止网站被别的站点iframe嵌套:
<!-- 增加HTTP协议参数 --> <httpProtocol> <customHeaders> <!-- 避免了点击劫持 (clickjacking) 的攻击。Value:DENY,SAMEORIGIN,ALLOW-FROM --> <add name="X-Frame-Options" value=" SAMEORIGIN " /> </customHeaders> </httpProtocol>
<!-- 增加HTTP协议参数 --> <httpProtocol> <customHeaders> <!-- 指定iframe所在页面的站点地址嵌套本网站页面 例如云之家 https://www.yunzhijia.com--> <add name="X-Frame-Options" value=" ALLOW-FROM https://www.yunzhijia.com/" /> </customHeaders> </httpProtocol>
4、隐藏堆栈信息:
5、Sql注入拦截
<!--Sql关键字--> <add key="SqlKeys" value="select|insert|delete|from|drop|update|count|chr|char|mid|truncate|exec|net user|or|and|xp_cmdshell"/> <!--脚本关键字--> <add key="ScriptKeys" value="& amp;|& quot;|& gt;|& lt;"/>(这里要做html转码,论坛原因需要去掉&后的空格使用)
6、防止上传目录文件泄露
7、上传文件白名单设置
<add key="UploadWhiteList" value="txt,pdf,doc,docx,xls,xlsx,ppt,pptx,rft,jpg,png,bmp,gif,jpeg,rar,zip,dat,key,msg,cad,btw,avi,rmvb,wps,et,dps,vsd" /> <add key="DocSuffix" value="doc|docx|xls|xlsx|pdf|ppt|pptx|txt|wps|rtf|et|dps|vsd" /> <add key="ImageSuffix" value="jpeg|jpg|png|gif|bmp|cur" /> <add key="VideoSuffix" value="wmv|avi|swf|wav|mpeg|aif|mdi|mpg|rmvb|flv|mkv" /> <add key="PackageSuffix" value="kdpkg" />
8、反向代理实现HTTPS->http映射
9、IIS版本号在请求响应头中泄漏(使用微软rewrite模块)
http://www.cnblogs.com/dudu/p/iis-remove-response-readers.html
》》归纳总结如下:
9.2、删除服务器版本
9.2.1、安装微软 IIS URL Rewrite 模块
》微软官方说明 https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/using-the-url-rewrite-module
》微软官方下载地址:https://www.iis.net/downloads/microsoft/url-rewrite
》简体中文版下载地址是:上面下载地址下方有各种语言的下载链接。
》安装过程中出现2503错误估计是C:\windows\temp权限不够目录权限不足,可设置为完全控制解决,并用管理员角色进行安装。
》安装后出现503错误,可能是操作系统没有更新微软安全补丁,更新到最新补丁可以解决。
》安装报版本过低,参考本文疑问23。
》2012R2的操作系统没有更新系统补丁的情况下出现该问题,更新补丁后问题解决。
.
9.2.2、配置web.config重写规则
<rewrite> <outboundRules> <rule name="REMOVE_RESPONSE_SERVER"> <match serverVariable="RESPONSE_SERVER" pattern=".*" /> <action type="Rewrite" /> </rule> </outboundRules> </rewrite>
9.3、移除X-AspNet-Version
9.4 移除etag标识:
》》配置 web.config配置rewrite的重写规则的出站outboundRules规则如下:
<rule name="Remove ETag"> <match serverVariable="RESPONSE_ETag" pattern=".+" /> <action type="Rewrite" value="" /> </rule>
9.5 IIS的一些其他Header设置可参考外部资料,mozila官方网站说明 (注意浏览器品牌版本兼容性)
【http标头】https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Accept
9.6 针对IIS根节点的版本问题,例如对响应的头服务器版本号修改的需求,如何配置?
》针对IIS根节点的请求,需要修改响应头变量时,需要把rewrite规则从星空website目录移动到iis的根目录下。iis根目录一般默认是安装在C:\inetpub\wwwroot下,例如对响应的头服务器版本号修改的需求,可以把关于服务器版本号的rewrite规则迁移到iis根节点目录的C:\inetpub\wwwroot\web.config中(website/web.config要相应移除对应的rewrite配置,避免与上级节点重复引起iis错误)。
9.7 配置完成后,需要重启IIS,同时清理测试客户端的浏览器本地缓存文件,再进行相关测试操作。
10、 IIS关闭谓词Trace、OPTIONS方法
解决方案:
10.1、方法1:web.config 在<configuration>节点下添加如下代码,只允许开启GET、POST和HEAD方法:
<system.webServer> <security> <requestFiltering> <verbs allowUnlisted="false"> <add verb="GET" allowed="true"/> <add verb="POST" allowed="true"/> <add verb="HEAD" allowed="true"/> </verbs> </requestFiltering> </security> </system.webServer>
10.2、方法2:IIS 里面有个请求筛选,选择根节点或者具体网站,然后在右侧的功能中选择【请求筛选】-->【HTTP谓词】-->右键添加【拒绝谓词】-->输入【OPTIONS】,然后确定即可。
11、关于Silverlight的跨域访问配置问题 clientaccesspolicy.xml
解决方案参考:
【https://vip.kingdee.com/article/10182】
12、如果严格某种请求的谓语动词
只允许Web服务器响应GET和POST请求(金蝶云要求HEAD,GET,POST),其他则拒绝的方法,需要在iis管理器中的处理程序映射功能中设置。如下图:
13、如何启用安全验证码功能
13.3,设置菜单中选系统参数,勾选启用验证码即可;
14、如何屏蔽html5的调试模式?
<!--强制不允许终端启用调试模式,目前主要用于HTML5端--> <add key="AllowDebugMode" value="False" />
15、HTML5的JQuery如何自己进行升级替换?
》》如何下载jquery组件,例如下面图片(只是例子,有最新版本要下最新版本)
16、用户账号在登录页可枚举?
17、如何配置cookie的samesite参数?
https://vip.kingdee.com/article/136841261830379264 并把cookieSameSite改为None ):
<rewrite> <outboundRules> <rule name="AddSameSiteCookieFlag"> <match serverVariable="RESPONSE_Set-Cookie" pattern="^(.*)(kdservice\-sessionid|ASP\.NET_SessionId|JSESSIONID)(=.*)$" /> <action type="Rewrite" value="{R:0};SameSite=None" /> </rule> </outboundRules> </rewrite>
方案三、重症治疗-混合使用
18、如何配置响应头HSTS(Strict-Transport-Security)?
<rewrite> <rules> <rule name="Redirect HTTP to HTTPS" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="off" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/k3cloud/{R:1}" redirectType="Permanent" /> </rule> </rules> <outboundRules> <rule name="REMOVE_RESPONSE_SERVER"> <match serverVariable="RESPONSE_SERVER" pattern=".*" /> <action type="Rewrite" /> </rule> <rule name="Add the STS header in HTTPS responses"> <match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" /> <conditions> <add input="{HTTPS}" pattern="on" /> </conditions> <action type="Rewrite" value="max-age=31536000" /> </rule> </outboundRules> </rewrite>
19、如何配置HTML5请求参数为密文,避免给waf误拦截?
<!--HTML5端默认编码了apx参数,采用GZIP+URLEncode编码,=false则恢复为明文参数模式 ( PT-146884 [7.7.0.202108] 构建号7.7.2256.5 2021.08.06 )--> <add key="compressedapx" value="false"/>
20、Web server lacks Content Security Policy (CSP) header (头参数缺少CSP设置)
<system.webServer> <httpProtocol> <customHeaders> <!-- 下面的192.168.19.190只是一个ip的例子,请修改为实际星空部署的域名或ip,例如: *.ik3cloud.com 52.81.116.170 ,各项白名单策略用 英文空格隔开 --> <add name="Content-Security-Policy" value="default-src 192.168.19.190 k3cloud: *.ik3cloud.com *.open.kingdee.com localhost:* 'unsafe-eval' data: 'unsafe-inline' localhost 127.0.0.1 ws://127.0.0.1:9268 *.piaozone.com *.yunzhijia.com *.kingdee.com 'self'; " /> </customHeaders> </httpProtocol> </system.webServer>
21、Web page content type incorrectly stated (kdsvc contenttype 类型疑问)
答:星空与服务端交互数据为自定义数据格式,实现混合数据模式可明文也可数据压缩编码,云星空的客户端和前端脚本会对接收数据自动进行判断并解析处理,不存在数据风险。
22、 js css files Content Type Charset Check, (js 和 css 类型的contenttype要求加入utf-8编码说明)
答:修改IIS的mime类型配置即可,在mime类型值后加入【;charset=utf-8】即可,具体操作参考互联网文章 https://www.hangge.com/blog/cache/detail_386.html
23、安装rewrite模块,有时报不能安装,提示iis版本低,但实际iis版本已经是10了
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp] "MajorVersion"=dword:00000009
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp] "MajorVersion"=dword:0000000a
5.配置web.config重写规则
24、配置IIS安全加固后,如何测试配置生效?如果不生效,后续如何操作?
如果配置不生效,说明有步骤没有做对,请参照上述的加固点指引或微软官方文档指引重新进行对照配置,一直到生效为止。
25、修改配置的一般规范步骤是什么?
26、IIS短文件名漏洞修复
3、修改IIS根节点的请求筛选-拒绝序列-URL,增加拒绝的url为~的请求,设置参考下图:
27、如何修改云星空动态请求返回数据类型,避免浏览器直接访问执行内容?
28、CSRF攻击
》》CSRF说明参考https://segmentfault.com/a/1190000021114673
29、Content Sniffing not disabled , ( X-Content-Type-Options: nosniff )
答:方法1、配置iis的http响应头即可,如下新增响应参数,然后重启iis即可。
方法2、手工配置website站点下的web.config文件,找到【system.webServer/httpProtocol/customHeaders】路径增加如下节点,保存后重启iis即可。
30、如何移除响应头的etag标识:
答:操作步骤1,参考【9.2.1、安装微软 IIS URL Rewrite 模块】安装模块。
步骤2,修改website站点下的web.config配置rewrite的重写规则的出站outboundRules规则如下:
<rule name="Remove ETag"> <match serverVariable="RESPONSE_ETag" pattern=".+" /> <action type="Rewrite" value="" /> </rule>
31、星空配置404指定页面(httpErrors设置)。
答:website/web.config文件配置404映射文件即可实现。
32、 加固云星空服务器的数据通讯安全(3 - KingdeeXml)相关二开指引
答:【加固云星空服务器的数据通讯安全(3 - KingdeeXml)】参考 https://vip.kingdee.com/article/390545756555520256?productLineId=1&isKnowledge=2 , 另外建议升级到最新补丁 PT-156001 [8.2.0.20240229]。二开规范webapi参考 【二开案例.WebApi.从零开发自定义WebApi接口】
https://vip.kingdee.com/article/97030089581136896?productLineId=1&isKnowledge=2
xx、(占位)
* 关于论坛文章中拷贝代码导致配置文件报错问题
ps: 【重点】关于论坛文章中拷贝代码导致配置文件报错问题
答:参考: https://vip.kingdee.com/article/158166130920311808
金蝶云星空 配置站点安全配置与参数
本文2024-09-23 03:47:05发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-161082.html