本页面罗列了常见的安全漏洞相关处理方案,指导用户通过系统化配置、环境优化及最佳实践,提升Smartbi系统的整体安全性,降低安全风险。
适用场景:新环境部署、版本升级、安全审计前的加固操作。
序号 | 漏洞详情 | 解决方案 |
1 | 环境配置加固 | 1、操作系统层: |
2 | 外网环境安全加固 | 因smartbi的系统功能众多,建议做好内外网隔离,实施最小权限原则,为用户分配仅满足业务需求的访问权限,避免在密码泄露的情况下,被非法访问并进行接口非法调用,内外网隔离设置可参考wiki文档:内外网隔离最小化 该扩展包支持V8-V11,jdk 要1.7及以上,所有发包版本的war包需要在2023年9月22号以后的才生效、V87在2023年11月9号以后 |
3 | index.jsp登录爆破 | 对于登录爆破,建议是部署登录验证码功能扩展包或者账号锁定解决,用户可配置相关扩展包解决。 V11版本:登录页添加验证码,账号锁定扩展包下载地址: https://my.Smartbi.com.cn/addons/leescore/goods/details.html?gid=142 V10版本:登录页添加验证码 ,账号锁定扩展包下载地址: https://my.Smartbi.com.cn/addons/leescore/goods/details.html?gid=142 V9版本:登录也添加验证码下载地址,密码验证扩展包VerificationCode ,如需账号锁定扩展包前联系官方支持进一步获取方案。 V6到V8版本:登录也添加验证码下载地址,PC端登录界面增加验证码 ,如需账号锁定扩展包前联系Smartbi官方支持进一步获取方案。 |
4 | config.jsp/monitor/defender 登录爆破 | 通过smartbi.properties 文件新增配置项来限定ip访问,建议只对服务所在机器开放 1、进入到smartbi部署目录找到 smartbi.properties 文件,在文件中新增如下配置项目 设置config.jsp可以使用英文逗号分隔设置多个IP属性,例如 smartbi.allowedConfigIps=10.21.31.71,127.0.0.1 设置monitor.jsp可以使用英文逗号分隔设置多个IP属性,例如 smartbi.allowedMonitorIps=10.10.23.11,10.10.201.1-10.10.201.254,10.10.202.0/24 设置defender.jsp可以使用英文逗号分隔设置多个IP属性,例如 smartbi.allowedDefenderConfigIps=10.10.23.11,10.10.201.1-10.10.201.254,10.10.202.0/24 具体可参考wiki文档:安全补丁 中的【说明事项】章节 |
5 | 限制config/chooser.jsp文件访问路径 | 前提:产品的补丁工具包和安全补丁文件为最新版本(2020-10-14及之后的日期)。 在 系统运维>系统选项>高级设置 中,设置JSP_CHOOSER_ROOT_PATH设置项可限制config/chooser.jsp页面文件访问路径,值为限制用户可选的最大可选择根目录。 具体可参考wiki文档: V9及以上版本:安全补丁 中的【说明事项】章节 V6到V8版本: https://history.wiki.smartbi.com.cn/pages/viewpage.action?pageId=51939741 中的【说明事项】章节 |
6 | 弱口令 | 用户配置密码过于简单,可以通过配置正在表达式限制用户输入密码过于简单,具体可参考Wiki文档:https://wiki.smartbi.com.cn/pages/viewpage.action?pageId=76679302 |
7 | 查看smartbi版本信息 | 版本信息开放主要是用于日常问题分析,因为我们前端js是存在会话缓存,若无法确认版本信息,会导致问题分析比较难。再者我们过于经过第三方安全机构检测,相关检测报告也未对此类做安全漏洞判断。用户可以删除相关的txt文件,对产品功能使用不影响。【 war包路径:\smartbi\vision\packageinfo.txt 】 |
8 | 目录遍历 | 于2020-10-14已发布相关安全补丁,该问题可通过安装安全补丁后,配置限制config页面文件访问路径解决: V9及以上版本:安全补丁 中的【说明事项】章节中的【限制config页面文件访问路径】 V6到V8版本: https://history.wiki.smartbi.com.cn/pages/viewpage.action?pageId=51939741 中的【说明事项】章节中的【限制config页面文件访问路径】 |
9 | 信息泄露 | 为了监控用的页面,超级管理员才有的权限。建议用户配置IP限制,限制非允许IP访问。具体设置如下: 通过smartbi.properties 文件新增配置项来限定ip访问,建议只对服务所在机器开放 进入到smartbi部署目录找到 smartbi.properties 文件,在文件中新增设置monitor.jsp限制IP访问,可以使用英文逗号分隔设置多个IP属性, 例如 smartbi.allowedMonitorIps=10.10.23.11,10.10.201.1-10.10.201.254,10.10.202.0/24 具体可参考wiki文档:安全补丁 中的【说明事项】章节 |
10 | 接口泄露(直接访问wsdl无需401) | 相关接口信息可参考Wiki文档进行屏蔽:https://wiki.smartbi.com.cn/pages/viewpage.action?pageId=89033146 ,产品未直接限制主要是做成产品,很有项目需要调用相关接口进行二开,因此我们保留相关访问。 |
11 | session劫持+重置用户密码(无需原密码) | session劫持的前提是访问到,https://127.0.0.1/vision/monitor/listsessions.jsp。 通过2.3的解决方案,可限制IP访问,非白名单IP无法访问到相关页面,https://wiki.smartbi.com.cn/pages/viewpage.action?pageId=50692623 |
12 | heapdump缓存抓取密码 | 如session劫持,另外于2022-06-17对于相关密码已采取asc加密。 |
13 | Tomcat存在登陆页面 | 非必要保留Tomcat自带的目录的情况下,建议删除webapps下Tomcat自带的docs、examples、ROOT目录 |
14 | 会话超时 | 配置会话超时扩展包,产品默认实现不超时功能,若项目安全性要求高,建议配置会话超时,当用户对系统长时间未操作自动超时 V11版本:用户管理-会话管理 V11以下版本,具体可参考Wiki文档:smartbi会话超时机制 |
15 | 不安全的http协议 | 配置https可参考:Tomcat配置HTTPS访问 |
16 | 缺少X-Frame-Options标头属性 | 可以部署webSecurityExt.ext扩展包进行设置请求头 安全加固扩展包webSecurityExt |
17 | config.jsp页面内的密码项要勾选【加密保存】 | 保障密码安全,为进一步提升安全也可以更换为国密算法: V9及以上版本:https://my.smartbi.com.cn/addons/leescore/goods/details.html?gid=167 其他版本可联系官方技术支持进一步获取方案。 |
18 | 同一个账号在不同的地方登录使用 | 锁定账号扩展包LoginLock,不允许同一个账号在不同的地方登录使用,如果存在同时使用同一账号的情况,之前登录的账号在访问下一个请求的自动跳转到登录界面。 V11版本:用户管理-用户登录管理(双因素验证、登录锁定) V11以下版本可联系官方支持进一步沟通获取方案。 |
19 | 报错页面泄漏信息 | V97 及以上版本的角色里有设置错误信息的操作权限 ,如V11的操作权限设置可查看: 操作权限列表 V95 及以下版本的报错信息权限控制使用扩展包SuccinctErrorMessage.ext,需联系官方支持获取。 |
20 | 会话固定 | 用户登录前与登录后的JSESSIONID是一样的,需要用修复会话固定漏洞扩展包SessionFixationHandler,防止会话固定攻击扩展包SessionFixationHandler |
21 | Cookie的HttpOnly、secure 安全属性未启用 | 到Tomcat根目录下的conf/web.xml中添加如下配置 <session-config> <session-timeout>30</session-timeout> <cookie-config> <http-only>true</http-only> <secure>true</secure> </cookie-config> </session-config> 注意:设置secure需要开启https |
22 | ip伪造、host头攻击、缺少X-Frame-Options响应头、cookie缺少httponly,secure,samesite问题 | 配置nginx,如: upstream smartbi_tomcat{ ip_hash; server 10.253.88.111:8080 weight=1; } server { listen 80; server_name 10.253.88.111; if ($host !~* ^10.253.88.111|127.0.0.1$){ return 403; } # 将http请求转发到https #if ($scheme = http) { # return 301 https://$host$request_uri; #} # https 证书配置 #ssl_certificate <证书所在路径>/<证书名称>.crt; #ssl_certificate_key <证书所在路径>/<证书名称>.key; location / { # 注意,这里不要使用集群,直接转发到 Tomcat 服务即可 proxy_pass http://10.253.88.111:8080; add_header 'Access-Control-Allow-Credentials' 'true'; add_header X-Frame-Options SAMEORIGIN; proxy_set_header Cookie $http_cookie; proxy_redirect off; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; # 需要https 的支持 #proxy_cookie_path ~^/(.+)$ "/$1; HttpOnly; secure; SameSite=none"; client_max_body_size 100m; client_body_buffer_size 1024k; proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } } |
23 | Tomcat服务器版本号泄露 | 进入tomcat的配置目录下(%tomcatHome%\conf) 在 server.xml文件中的Host节点添加如下配置
|
24 | HSTS开启 | hsts开启的前提条件是开启了https,(准备好域名、https证书) add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; Tomcat配置(需要 8.0.23 版本及之后的版本才支持): 1、保证Tomcat的配置已强制http转https,可参考 https://smartbi.feishu.cn/docx/A3vadSTbUo5NdgxPmUNcGsd7nzg#H0GCdu8Mgo46Kqx6W7PcL4kkn7g 2、进入tomcat的配置目录下(%tomcatHome%\conf)修改web.xml文件中添加以下配置。 <filter> <filter-name>httpHeaderSecurity</filter-name> <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>hstsEnabled</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>hstsMaxAgeSeconds</param-name> <!--这里设置的是有效期,生产环境测试时建议不要设置太大,测试没问题后再逐步提高这个值。如:1分钟、5分钟、10分钟、30分钟、60分钟、3个钟、6个钟、12个钟、18个钟、24个钟、半年、一年--> <!--单位是秒--> <!--一年是 31536000 --> <param-value>60</param-value> </init-param> <init-param> <param-name>hstsIncludeSubDomains</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>httpHeaderSecurity</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping> |
25 | IP伪造 | 需要到 系统运维/系统选项/高级设置 中新增如下配置 # 是否开启防止IP伪造,如果有前置代理的情况下不能开启。 |
26 | 跨站脚本攻击、csrf跨站请求伪造 | 通过加载安全扩展包来配置相关配置项防止 或者配置nginx: valid_referers none blocked 172.16.20.216 localhost; if ($invalid_referer) { return 403; } |
27 | 存在缓慢的HTTP拒绝服务攻击 | 通过配置中间件或nginx的连接超时时间 tomcat配置方式: connectionTimeout="8000" 第二种方式: nginx配置方式: http { |
28 | 启用了没必要的 http 请求类型 | 通过配置中间件或代理来禁用相关http方法。 <security-constraint>
nginx配置方式: if ($request_method ~ ^(PUT|DELETE|OPTIONS|HEAD)$) { return 403; } |
责任声明
- 本手册提供通用安全加固建议,最终实施效果需结合客户具体环境;
- 对于第三方组件、定制开发模块的安全问题,建议客户与Smartbi技术支持团队联合验证。