页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

一、目的

本告主要是针对smartbi系统提供安全配置建议,提升smartbi系统的安全性。本文主要是针对smartbi系统提供安全配置建议,提升smartbi系统的安全性。

二、V11的安全加固建议

1.安全加固类型

根据实际需求选择安全加固优先级

需求分类

风险特征

风险事件

数据权限加固

用于不同用户访问数据的范围是不一样的,如处理财务数据、客户信息、核心业务数据,用于不同用户访问数据的范围是不一样的,如客户信息、核心业务数据,各个区域负责人只能看自己区域

数据越权访问、内部人员滥用权限、数据篡改或窃取

资源权限加固

如基于财务数据创建的报表,只有财务人员和领导层可看,主要控制基于系统创建的报表、数据模型等资源的查看/编辑权限,敏感报表建议设置用户访问权限

用户访问超出权限的目录

操作权限加固

敏感功能限制,如自定义计划任务、自助ETL、原生SQL等给用户很大灵活空间的功能同样会带来操作风险

功能包含敏感信息或开放风险较高

系统攻击防御

安全漏洞、界面暴力破解、安全漏洞、界面暴力破解、IP地址伪造IP地址伪造

已存在的安全漏洞没有更新安全补丁、登录界面或配置界面被暴力破解

按场景进行区分攻击防御的手段

考核认证服务器(需要开放报表开发功能的系统,例如数据分析师认证考核系统、技能比赛系统)限制IP地址访问config、monitor、defender页面
  • 限制前端获取系统选项中的敏感信息

  • 通过安全卫士设置内外网访问请求黑名单限制

  • 防止IP地址伪造

  • 防止 index 登录界面暴力破解

  • 数据加密传输

  • 删除tomcat/webapps目录下的多余应用对外展示型系统(如企业官网、产品手册)用户只能查看数据,无写入/导出权限
  • 限制config/chooser.jsp文件访问路径

  • 数据挖掘安全配置

  • 导出引擎配置白名单

  • 限制前端获取系统选项中的敏感信息

  • 防止IP地址伪造

  • 关闭DDL/DML语句执行权限

  • 敏感功能的权限控制

  • 场景分类

    场景示例

    风险

    需求分类

    必须加固措施

    建议增强措施

    外网暴露环境

    • 外网仅具备浏览报表权限,但因未实施内外网权限分离,且全国众多子公司均有访问需求,难以有效进行分离。
    • 系统已集成至第三方平台,集成程度较深,如:支持创建资源等操作。
    • 数据来源在云环境平台,只能打通外网。
    • 攻击导致服务不可用

    • 暴力破解获取管理员账号

    ★系统攻击防御

    • 各个部署组件弱密码检测

    • 及时更新系统安全补丁
    • 限制 IP地址访问config、monitor、defender页面

    • 通过安全卫士设置内外网访问请求黑名单限制


    • 防止 index 登录界面暴力破解

    组件安全推荐配置

    • 防止IP地址伪造
    • 数据加密传输
    • 删除tomcat/webapps目录下的多余应用

    操作权限/资源权限/数据权限

    • 关闭DDL/DML语句执行权限
    • 过滤 [其它类型] 参数中的特殊字符
    • 敏感功能的权限控制

    • 数据挖掘安全配置

    • 导出引擎配置白名单

    • 限制config/chooser.jsp文件访问路径

    外网仅浏览权限场景

    • 集成移动端驾驶舱。

    • 实现钉钉、企业微信、飞书与报表的集成。

    • 目录遍历攻击

    • 获取系统敏感信息

    ★系统攻击防御
    • 各个部署组件弱密码检测
    • 及时更新系统安全补丁
    • 限制 IP地址访问config、monitor、defender页面
    • 通过安全卫士设置内外网访问请求黑名单限制
    • 防止 index 登录界面暴力破解
    组件安全推荐配置
    • 防止IP地址伪造
    • 数据加密传输
    • 删除tomcat/webapps目录下的多余应用
    操作权限/资源权限/数据权限
    • 数据挖掘安全配置
    • 导出引擎配置白名单
    • 关闭DDL/DML语句执行权限
    • 敏感功能的权限控制

    内网场景

    • 仅限内部员工访问,无外网入口

    • 内部越权操作

    • 员工导出敏感数据

    /
    • 限制config/chooser.jsp文件访问路径
    • 防止IP地址伪造
    • 防止 index 登录界面暴力破解
    • 系统水印添加

    数据权限加固
    数据权限加固

    2.数据权限加固

    数据权限设置
    数据权限设置

    【按需加固】数据权限设置

    数据权限设置:数据权限

    【建议加固】系统水印添加

    水印设置:系统选项-水印设置

    【建议加固】

    关闭DDL/DML语句执行权限
    关闭DDL/DML语句执行权限

    • 关闭DDL/DML语句执行权限

    在系统选项-高级设置中,添加 SQLDDLDMLAUTHORITY_CONTROL_SWITCH=true 配置项,关闭在SQL 查询中执行 DDL/DML 语句的权限。

    过滤 [其它类型] 参数中的特殊字符
    过滤 [其它类型] 参数中的特殊字符

    • 过滤 [其它类型] 参数中的特殊字符

    [其他类型]是一种特殊的参数类型,区别于常规的数据库数据类型,主要用于将参数值动态拼接到SQL语句中。例如,它可以将参数值拼接为SQL查询的SELECT子句部分

    我们可以通过在 [系统选项-高级设置] 添加 SQL_ILLEGAL_CHARTS 设置项来自定义一些需要过滤的特殊字符,预防SQL注入。

    代码块
    languagec#
    linenumberstrue
    # sql 非法字符,value值就是想要限制的特殊字符,多个使用 | 来分割
    SQL_ILLEGAL_CHARTS='| and | or |--|updatexml|extractvalue
    
    # 设置发现存在非法字符时报错的提示内容,如果不设置则默认内容为“使用了禁用的特殊关键字,如有特殊需要,请联系管理员。”
    SQL_ILLEGAL_CHARTS_TIP=存在注入攻击的可能,如有特殊需要,请联系管理员

    ...

    【可选加固】数据安全

    强制启用导出规则控制数据导出,在系统选项-安全设置中配置安全设置中配置。具体配置请参考文档:系统选项-安全设置

    3.资源权限加固

    限制config/chooser.jsp文件访问路径
    限制config/chooser.jsp文件访问路径

    【按需加固】资源权限设置

    资源权限设置:资源权限管理

    【建议加固】限制config/chooser.jsp文件访问路径

    在 运维设置>常用功能>系统选项>高级设置 中,设置JSP_CHOOSER_ROOT_PATH设置项可限制config/chooser.jsp页面文件访问路径,值为限制用户可选的最大可选择根目录。Windows环境部署smartbi应用,注意路径斜杠的区别:

    Image Removed

    Linux环境部署smartbi应用,注意路径的反斜杠的区别:
    Image Removed
    注意: 展示的“文件位置”以高级系统选项中配置的目录为准,不允许用户选择超出的目录,或者弹出提示超出配置的目录的范围
    Image Removed
    Image Removed

    参考wiki文档配置:限制config/chooser.jsp文件访问路径

    4.操作权限加固

    【按需加固】操作权限分配

    操作权限设置:操作权限管理

    【必须加固】敏感功能的权限控制

    功能

    建议加固级别

    权限建议

    安全设置->定制任务

    必须加固

    只开放给管理用户

    安全设置->系统监控

    必须加固

    只开放给管理用户

    安全设置->错误详情

    建议加固

    只开放给管理用户

    安全设置->系统日志

    建议加固

    只开放给管理用户

    数据准备->数据集->数据模型->脚本查询

    建议加固

    只开放给管理用户

    数据准备->数据集->数据模型->SQL查询

    建议加固

    只开放给管理用户

    数据准备->数据集->数据模型->JAVA查询

    建议加固

    只开放给管理用户

    数据准备->数据集->数据模型->存储过程查询

    建议加固

    只开放给管理用户

    数据准备->自助 ETL->Python 脚本

    建议加固

    只开放给管理用户

    数据挖掘->实验管理->Python 脚本

    建议加固

    只开放给管理用户

    系统选项->高级设置->不允许调用没有用权限的服务接口(越权访问)

    建议加固

    手工修改为 true

    ...

    • 2024-02-07 之后的版本,可以通过系统功能【绑定引擎】来配置,参考 wiki 文档:绑定引擎

    • 2024-02-07 之前的版本,可以通过配置访问白名单来控制,参考 wiki 文档配置:访问ip限制

    【外网-必须加固】导出引擎配置白名单

    Smartbi导出引擎3003端口存在 SSRF 漏洞,建议配置白名单来预防此漏洞

    配置为只允许内部服务器的 IP 访问Smartbi导出引擎相关的服务,不开放外网访问。参考wiki文档配置:导出引擎白名单设置

    5.系统攻击防御

    【必须加固】各个部署组件弱密码检测

    弱密码检测checklist:安装部署_安全维度Checklist

    【必须加固】及时更新系统安全补丁

    关注smartbi官方的安全补丁通知,及时做好相关安全漏洞补丁更新。

    ...

    【必须加固】限制 IP地址访问config、monitor、defender页面

    通过smartbi.properties

    ...

    配置方法:

    1. 进入到实际应用服务器环境的bin目录找到 smartbi.properties 文件,以tomcat服务器为例子,如下图:

    Image Removed

    在文件中新增如下配置项目

    配置方式如下:
    设置config.jsp可以使用英文逗号分隔设置多个IP属性,例如smartbi.allowedConfigIps=10.10.23.11,10.10.201.1-10.10.201.254,10.10.202.0/24
    设置monitor可以使用英文逗号分隔设置多个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

    每个属性的配置如下:

    ...

    类别

    ...

    方法

    ...

    示例

    ...

    允许所有IP

    ...

    *号代表全部IP。

    注:这里不支持10.10.202.*

    ...

    smartbi.allowedConfigIps=*

    ...

    精确指定某个ip

    ...

    直接设置对应的ip地址即可。

    ...

    smartbi.allowedConfigIps=10.10.101.11

    ...

    指定多个ip地址

    ...

    各个ip地址以英文逗号分隔。

    ...

    smartbi.allowedConfigIps=10.10.101.11,10.10.101.21,

    10.10.101.31

    ...

    指定某个ip段地址

    ...

    指定ip段地址区间,中间用减号(-)连接。

    ...

    smartbi.allowedConfigIps=10.10.101.0-10.10.101.255

    ...

    指定ip支持标准的掩码

    ...

    使用 标准CIDR 格式。计算方法可参考:计算方法

    ...

    smartbi.allowedConfigIps=10.10.23.0/24

    Image Removed

    • 验证是否配置成功

    使用非开放ip的电脑访问config界面,提示没有权限,联系管理员则表示配置成功,反之则不成功。

    下图表示是配置成功的提示内容

    Image Removed

    如果使用未配置IP访问,则显示如下截图:

    Image Removed

    详细说明可查看当前Wiki文档的【说明事项】章节:

    安全补丁

    文件新增配置项来限定ip访问,建议只对服务所在机器开放。,具体可参考wiki文档进行配置:授权IP地址访问config、monitor、defender页面

    其他注意事项:

    登录config.jsp页面内的知识库的【密码】项要勾选【加密保存】

    ...

    在系统选项-高级配置中新增如下配置。

    代码块
    linenumberstrue
    OPEN_SYSTEM_CONFIG_SENSITIVE_FILTER=true

    【建议加固】防止 index 登录界面暴力破解

    通过安装登录验证码扩展包+登录错误多次锁定用户扩展包+增强用户复杂密码 来防止暴力破解
    配置方式:

    ...

    代码块
    languagejava
    if ($request_method ~ ^(PUT|DELETE|OPTIONS|HEAD)$) {
    return 403;
    }

    【必须加固】防止IP地址伪造


    信息

    ...

    下面两种方式只能二选一,不能同时配置!!!


    第一种方式:通过配置nginx来防止。

    配置方式:

    1、进入到nginx目录下的conf/nginx.conf文件中的server location 中加入以下配置。

    代码块
    languagejava
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;


    提示

    注意

    $proxy_add_x_forwarded_for会将和Nginx直接连接的客户端IP追加在请求原有X-Forwarded-For值的右边。所以依然可以伪造 IP。检查 nginx 是否有proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;这个配置项,如果有要删除。


    第二种方式:系统选项高级设置配置

    如果无法配置前置代理,可以通过运维设置>常用功能>系统选项>高级设置进行配置:

    ...

    其他组件比如 mysql、redis、smartbimpp、跨库、proxy 的推荐配置。

    http://10.10.109.93:8090/pages/viewpage.action?smt_poid=43&pageId=146441245

    ...

    View file
    name各组件安全配置推荐.docx
    height250