使用DLV查看某企业安全态势
本文档介绍某企业安全态势监控大屏的创建过程,为云上企业的安全事件处置提供可视化的决策依据。
特点如下:
- 使用实时业务态势,可以实时检测,有效防范每一起安全事件。
- 使用地理化访问轨迹,通过2D、3D地图组件使安全威胁来源一目了然。
- 使用表格组件的条件样式,对风险等级做出明显区分,可以快速捕获高风险攻击源。
方案设计
列举展示内容:根据内容选择组件,该项目需要展示企业网站的访问情况与网站受攻击情况。内容主要包括两大类:访问信息与攻击信息。
访问状态下的访问信息与使用的组件类型如下表所示:
访问信息 |
组件类型 |
---|---|
访问区域排行 |
区域排行 |
网站访问区域 |
中国地图 |
访问趋势 |
线状图 |
实时攻击信息 |
轮播表格 |
攻击状态下的攻击信息与使用的组件类型如下表所示:
攻击信息 |
组件类型 |
---|---|
攻击区域排行 |
区域排行 |
攻击类型排行 |
轮播表格 |
攻击趋势 |
线状图 |
攻击源 |
地球 |
准备工作
- 已开通关系型数据库RDS,并创建“数据库引擎”为“MySQL”的实例“rds-secure0”。
- 已购买云数据迁移CDM,新建集群“cdm-secure”。
新建CDM集群“cdm-secure”时,在“购买云数据迁移集群”页面中的“虚拟私有云”、“子网”、“内网安全组”信息配置需要和RDS实例“rds-secure0”一致。
数据准备
从https://dlv-public-image.obs.cn-north-1.myhuaweicloud.com/demo1.zip路径下载数据至本地。
选择创建好的RDS实例“rds-secure0”,输入用户名和密码登录到云上数据库MySQL,在“rds-secure0”根目录创建数据库“dlv”,选择 将下载的sql数据导入到数据库中。
- 登录DLV控制台。
- 选择 。
- 在“新建数据连接”页面,选择建立“云数据库MySQL”的连接。
- 设置云数据库MySQL名称为“mysql_secure”,配置“mysql_secure”的域名、端口、用户名、密码、连接代理集群。点击“获取数据库”,选择数据库“dlv”,单击“确定”,数据源“mysql_secure”创建成功。如图1所示。
创建大屏项目
- 登录DLV控制台。
- 单击 ,
- 选择空白模板,新建一个大屏名称为“secure”的大屏。
图2 新建大屏
添加标题组件
- 在组件列表下的“文本”组件库中选择“标题”组件。
图3 插入标题组件
- 单击“标题”组件的“数据”面板,设置value值为“某企业安全态势感知”。
图4 某企业安全态势感知
- 单击“样式”面板,配置标题的文本样式。如图5所示。
添加地球组件
- 在组件列表下的“地图”组件库中选择“地球”组件。
图6 插入地球组件
- 在“样式”面板中配置飞线颜色样式。如图7所示。
- 单击“数据”面板,在字段映射处配置“from”映射为“attack_source”,“to”映射为“attack_dest”。在“数据源类型”的下拉选项中选择“数据库”,“选择已有数据连接”的下拉选项中选择“mysql_secure”,通过sql语句查询攻击数据,单击“查看数据响应结果”。执行不同的sql语句,数据响应的结果不同,您可以根据不同的攻击类型输入不同的sql语句。
- 查询攻击类型XSS的sql语句:SELECT CONCAT(t.src_lng , ',', t.src_lat) as attack_source, CONCAT(t.target_lng, ',', t.target_lat) as attack_dest, COUNT(1) AS attack_num FROM dlv.ods_attack_log t where t.attack_type="XSS" GROUP BY t.src_lng , t.src_lat , t.target_lng , t.target_lat
- 查询攻击类型CSRF的sql语句:SELECT CONCAT(t.src_lng , ',', t.src_lat) as attack_source, CONCAT(t.target_lng, ',', t.target_lat) as attack_dest, COUNT(1) AS attack_num FROM dlv.ods_attack_log t where t.attack_type="CSRF" GROUP BY t.src_lng , t.src_lat , t.target_lng , t.target_lat
- 查询攻击类型sensitive_file的sql语句:SELECT CONCAT(t.src_lng , ',', t.src_lat) as attack_source, CONCAT(t.target_lng, ',', t.target_lat) as attack_dest, COUNT(1) AS attack_num FROM dlv.ods_attack_log t where t.attack_type="sensitive_file" GROUP BY t.src_lng , t.src_lat , t.target_lng , t.target_lat
图8 XSS的数据响应结果
- 在地球“样式”面板单击“添加子组件”,下拉列表中选择“地球飞线”。如图9所示。
- 单击“地球飞线”,进入“地球飞线”配置面板。在“样式”面板中配置飞线颜色样式。如图10所示。
- 重复3在“数据”面板中配置地球飞线数据,输入查询CSRF攻击类型的sql语句,单击“查看数据响应结果”。
- 重复4,5,6配置另外一组地球飞线样式和数据,输入查询sensitive_file攻击类型的sql语句,单击“查看数据响应结果”。
添加区域排行组件
- 在组件列表下的“常用图表”组件库中选择“区域排行”组件。
- 在组件右侧的“样式”中配置组件样式,“数据”面板中字段映射处配置“area”映射为“area_name”,“num”映射为“pv_num”,“数据源类型”的下拉选项中选择“数据库”,“选择已有数据连接”的下拉选项中选择“mysql_secure”,通过sql语句“select area_name,pv_num,percent from dw_pv_country order by 2 desc”查询访问区域排行,单击“查看数据响应结果”。
图11 访问区域排行
- 在左侧组件库中拖动一个“标题”组件至“区域排行”组件的上方,并给标题组件命名为“访问区域排行”。
- 右键单击“区域排行”,选择“拷贝”,复制一份新的区域排行组件。
图12 拷贝区域排行组件
- 重复2配置组件样式,“数据”面板中字段映射处配置“area”映射为“area_key”,“num”映射为“attack_num”,执行sql语句“select area_key,attack_num from dw_attack_province order by 2 desc limit 5” 访问攻击区域排行。
- 在“新的区域排行”组件上方配置一个名称为“攻击区域排行”的“标题”组件。
图13 添加区域排行组件
添加其他组件
- 添加“基础平面地图”和“标题”组件,标题组件命名为“网站访问区域”,配置“基础平面地图”的组件“样式”与“数据”。
基础平面地图在“数据”面板中配置字段映射后,执行sql语句:select area_key as name,pv_num as value from dw_pv_province;
- 添加“线状图”和“标题”组件,标题组件命名为“访问趋势”,配置“线状图”组件的“样式”与“数据”。
访问趋势的线状图在“数据”面板中配置字段映射后,执行sql语句:select date_hour,pv_num from (select date_hour,pv_num from dw_pv_hour order by 1 desc limit 10) pv_hour order by 1;
- 复制2中的线状图和标题组件,生成一份新的线状图和标题组件。新的标题组件命名为“攻击趋势”。配置新的线状图组件的“样式”与“数据”。
攻击趋势的线状图在“数据”面板中配置字段映射后,执行sql语句:select date_hour,attack_num from (select date_hour,attack_num from dw_attack_hour order by 1 desc limit 10) attack_hour order by 1;
图14 添加基础平面地图、线状图组件
- 添加两个“表格轮播”组件分别展示攻击详细信息和攻击类型排行。
在“数据”面板中配置字段映射后,执行攻击详细信息的sql语句:
SELECT FROM_UNIXTIME(FLOOR(ROUND(date_time / 1000)), '%Y-%m-%d %H:%i:%S') as date_time, province_key, CONCAT('***', SUBSTRING(url, 20, 30), '***') url, t1.type_name_cn,(case risk_level when '8' then '高危' when '7' then '紧急' when '6' then '紧急' when '5' then '一般' when '4' then '一般' else '一般' end) as risk_level FROM ods_attack_log t, dim_attack_type t1 WHERE t.attack_type = t1.type_code AND province_key IS NOT NULL ORDER BY 1 DESC LIMIT 10;
在“数据”面板中配置字段映射后,执行攻击类型排行的sql语句:
select attack_type_name, (case risk_level when '8' then '高危' when '7' then '紧急' when '6' then '紧急' when '5' then '一般' when '4' then '一般' else '一般' end) as risk_level,attack_num from dw_attack_type order by 3 desc;
- 为了表示不同风险级别,在“数据”面板的“风险系数”参数下的“条件样式”页签中,设置红色为高危级别。
图15 表格轮播
- 最后添加背景图片、边框、时间器等素材。安全态势感知大屏最终展示效果如下图所示。
图16 安全态势感知大屏