一、目的
本告主要是针对smartbi系统提供安全配置建议,提升smartbi系统的安全性。本文主要是针对smartbi系统提供安全配置建议,提升smartbi系统的安全性。
二、V11的安全加固建议
1.安全加固类型
根据实际需求选择安全加固优先级
需求分类 | 风险特征 | 风险事件 |
数据权限加固 | 用于不同用户访问数据的范围是不一样的,如客户信息、核心业务数据,各个区域负责人只能看自己区域 | 数据越权访问、内部人员滥用权限、数据篡改或窃取 |
资源权限加固 | 如基于财务数据创建的报表,只有财务人员和领导层可看,主要控制基于系统创建的报表、数据模型等资源的查看/编辑权限,敏感报表建议设置用户访问权限 | 用户访问超出权限的目录 |
操作权限加固 | 敏感功能限制,如自定义计划任务、自助ETL、原生SQL等给用户很大灵活空间的功能同样会带来操作风险 | 功能包含敏感信息或开放风险较高 |
系统攻击防御 | 安全漏洞、界面暴力破解、IP地址伪造 | 已存在的安全漏洞没有更新安全补丁、登录界面或配置界面被暴力破解 |
...
场景分类 | 场景示例 | 风险 | 需求分类 | 必须加固措施 | 建议增强措施 |
外网暴露环境 |
|
| ★系统攻击防御 |
|
|
组件安全推荐配置 |
|
| |||
操作权限/资源权限/数据权限 |
|
| |||
外网仅浏览权限场景 |
|
| ★系统攻击防御 |
|
|
组件安全推荐配置 |
|
| |||
操作权限/资源权限/数据权限 |
|
| |||
内网场景 |
|
| / |
|
|
锚 数据权限加固 数据权限加固
数据权限加固 | |
数据权限加固 |
2.数据权限加固
锚 数据权限设置 数据权限设置
数据权限设置 | |
数据权限设置 |
【按需加固】数据权限设置
数据权限设置:数据权限
【建议加固】系统水印添加
水印设置:系统选项-水印设置
【建议加固】
锚 关闭DDL/DML语句执行权限 关闭DDL/DML语句执行权限
关闭DDL/DML语句执行权限 | |
关闭DDL/DML语句执行权限 |
- 关闭DDL/DML语句执行权限
在系统选项-高级设置中,添加 SQLDDLDMLAUTHORITY_CONTROL_SWITCH=true
配置项,关闭在SQL 查询中执行 DDL/DML 语句的权限。
锚 过滤 [其它类型] 参数中的特殊字符 过滤 [其它类型] 参数中的特殊字符
过滤 [其它类型] 参数中的特殊字符 | |
过滤 [其它类型] 参数中的特殊字符 |
- 过滤 [其它类型] 参数中的特殊字符
[其他类型]是一种特殊的参数类型,区别于常规的数据库数据类型,主要用于将参数值动态拼接到SQL语句中。例如,它可以将参数值拼接为SQL查询的SELECT子句部分。
...
代码块 | ||||
---|---|---|---|---|
| ||||
# sql 非法字符,value值就是想要限制的特殊字符,多个使用 | 来分割 SQL_ILLEGAL_CHARTS='| and | or |--|updatexml|extractvalue # 设置发现存在非法字符时报错的提示内容,如果不设置则默认内容为“使用了禁用的特殊关键字,如有特殊需要,请联系管理员。” SQL_ILLEGAL_CHARTS_TIP=存在注入攻击的可能,如有特殊需要,请联系管理员 |
【可选加固】数据安全
强制启用导出规则控制数据导出,在系统选项-安全设置中配置。具体配置请参考文档:系统选项-安全设置
3.资源权限加固
锚 限制config/chooser.jsp文件访问路径 限制config/chooser.jsp文件访问路径
限制config/chooser.jsp文件访问路径 | |
限制config/chooser.jsp文件访问路径 |
【按需加固】资源权限设置
资源权限设置:资源权限管理
【建议加固】限制config/chooser.jsp文件访问路径
在 运维设置>常用功能>系统选项>高级设置 中,设置JSP_CHOOSER_ROOT_PATH设置项可限制config/chooser.jsp页面文件访问路径,值为限制用户可选的最大可选择根目录。
参考wiki文档配置:限制config/chooser.jsp文件访问路径
4.操作权限加固
【按需加固】操作权限分配
操作权限设置:操作权限管理
【必须加固】敏感功能的权限控制
功能 | 建议加固级别 | 权限建议 |
安全设置->定制任务 | 必须加固 | 只开放给管理用户 |
安全设置->系统监控 | 必须加固 | 只开放给管理用户 |
安全设置->错误详情 | 建议加固 | 只开放给管理用户 |
安全设置->系统日志 | 建议加固 | 只开放给管理用户 |
数据准备->数据集->数据模型->脚本查询 | 建议加固 | 只开放给管理用户 |
数据准备->数据集->数据模型->SQL查询 | 建议加固 | 只开放给管理用户 |
数据准备->数据集->数据模型->JAVA查询 | 建议加固 | 只开放给管理用户 |
数据准备->数据集->数据模型->存储过程查询 | 建议加固 | 只开放给管理用户 |
数据准备->自助 ETL->Python 脚本 | 建议加固 | 只开放给管理用户 |
数据挖掘->实验管理->Python 脚本 | 建议加固 | 只开放给管理用户 |
系统选项->高级设置->不允许调用没有用权限的服务接口(越权访问) | 建议加固 | 手工修改为 true |
【外网-必须加固】数据挖掘安全配置
配置为只允许内部服务器的 IP 访问数据挖掘相关的服务,不开放外网访问。
2024-02-07 之后的版本,可以通过系统功能【绑定引擎】来配置,参考 wiki 文档:绑定引擎
2024-02-07 之前的版本,可以通过配置访问白名单来控制,参考 wiki 文档配置:访问ip限制
【外网-必须加固】导出引擎配置白名单
配置为只允许内部服务器的 IP 访问Smartbi导出引擎相关的服务,不开放外网访问。参考wiki文档配置:导出引擎白名单设置
5.系统攻击防御
【必须加固】各个部署组件弱密码检测
弱密码检测checklist:安装部署_安全维度Checklist
【必须加固】及时更新系统安全补丁
关注smartbi官方的安全补丁通知,及时做好相关安全漏洞补丁更新。
官网安全补丁地址下载:https://www.smartbi.com.cn/patchinfo
【必须加固】限制 IP地址访问config、monitor、defender页面
通过smartbi.properties 文件新增配置项来限定ip访问,建议只对服务所在机器开放。,具体可参考wiki文档进行配置:授权IP地址访问config、monitor、defender页面
...
登录config.jsp页面内的知识库的【密码】项要勾选【加密保存】
【建议加固】防止 index 登录界面暴力破解
通过安装登录验证码扩展包+登录错误多次锁定用户扩展包+增强用户复杂密码 来防止暴力破解
配置方式:
...
效果验证:
当用户设置密码的时候,就会校验密码复杂度。对于之前已设置密码的,需要单独进行修改,登录界面不会进行密码复杂度设置校验。
更多详情请查看:用户密码复杂度设置参考
【外网-必须加固】通过安全卫士设置内外网访问请求黑名单限制
如项目必须要开放外网访问smartbi系统的权限,为提升系统访问安全性,建议开启黑名单访问限制。对于功能权限以及接口权限进行外网限制调用,从而降低外网系统被攻击后所带来的系统风险。
...
更多详情请查看:内外网隔离最小化
(wiki 文档还没更新新功能的说明)
【建议加固】防止会话固定攻击/会话劫持
【内部】会话劫持漏洞-可使用该url进行jsessionid用户直接登录后台
修复会话固定漏洞扩展包SessionFixationHandler【内部】
6.各组件安全推荐配置
中间件层面
以下以tomcat为例进行相关安全配置推荐说明。
【建议加固】数据加密传输
通过在tomcat或nginx开启https功能,注意涉及到的CA证书需要和CA厂商获取。
...
nginx配置方式:https://www.jianshu.com/p/602a70c1b04e
未启用cookie的secure属性
通过tomcat中进行配置启用或nginx代理启用
...
代码块 | ||
---|---|---|
| ||
location / { proxy_cookie_path ~^/(.+)$ "/$1; HttpOnly; secure; SameSite=none"; } |
目标主机可能存在缓慢的HTTP拒绝服务攻击
通过配置中间件或nginx的连接超时时间
tomcat配置方式:
...
这里的ip要根据需要进行替换 192.168.137.1 10.11.27.46 、 192.168.137.1|10.11.27.46
SSL弱密码支持
通过配置中间件或代理来排除不安全的加密方式。
注:前提条件是tomcat或代理开启了https。
...
代码块 | ||||
---|---|---|---|---|
| ||||
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!3DES:!ADH:!RC4:!DH:!DHE; |
Tomcat暴露异常堆栈信息
通过tomcat配置,隐藏版本号与相关堆栈信息。
配置方式:
...
代码块 | ||||
---|---|---|---|---|
| ||||
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" /> |
启用了没必要的 http 请求类型
通过配置中间件或代理来禁用相关http方法。
tomcat配置方式:
...
代码块 | ||
---|---|---|
| ||
if ($request_method ~ ^(PUT|DELETE|OPTIONS|HEAD)$) { return 403; } |
【必须加固】防止IP地址伪造
信息 |
---|
下面两种方式只能二选一,不能同时配置!!! |
第一种方式:通过配置nginx来防止。
...
# 是否开启防止IP伪造,如果有前置代理的情况下不能开启。
HAS_ENABLED_IP_PORGERY=true
【建议加固】删除tomcat/webapps目录下的多余应用
Tomcat自带很多应用,非项目需要情况下,建议可考虑移除相关文件夹,避免因这类多余应用造成安全问题。
7.其他组件
其他组件比如 mysql、redis、smartbimpp、跨库、proxy 的推荐配置。
...