ZBN SOAR

ZBN SOAR介绍

ZBN SOAR是什么?

ZBN SOAR是安全编排的自动化响应平台,将安全产品以及安全流程链接整合起来,通过预定义的工作流(Workflow)和剧本(Playbook)来标准化事故的调查处置流程,提升威胁响应的自动化程度和执行效率。


ZBN SOAR的价值

  • 缩短应急处置安全事故的时间
  • 减少和优化传统SOC中不必要和冗余的工作
  • 安全产品整合的API加速了自动化
  • 丰富的安全数据服务:威胁情报平台TIP
  • 提高告警分析的质量和侦测发现能力
  • 提高工作精准度,安全运维流程的文档化以及证据的管理
  • 减少培训新安全运维分析人员的代价
  • 整体提高衡量和管理安全运维的能力

环境说明

本文只介绍 Python 的安装,其他服务请自行百度
● Python 3.7.7 (必须使用此版本)
● Redis 5.0
● Mysql 5.7

安装步骤

1、环境准备
关闭防火墙
关闭selinux
安装epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2、安装python
2.1 安装依赖包
yum install -y gcc gcc-c++ automake autoconf libtool openssl-devel bzip2-devel libffi-devel 
2.2 下载python包
wget https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tgz 
2.3 解压python包
tar -zxvf Python-3.7.7.tgz && cd Python-3.7.7/
2.4检测编译环境
./configure prefix=/usr/local/python3 --enable-optimizations --with-openssl=/usr/include/openssl
2.5编译安装
make && make install
2.6设置软链接
删除已经存在的软链接
rm -rf /usr/bin/python3
rm -rf /usr/bin/pip3
rm -rf /usr/bin/gunicorn3
rm -rf /usr/bin/supervisord3
rm -rf /usr/bin/supervisorctl3
rm -rf /usr/bin/echo_supervisord_conf3
创建新的软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
ln -s /usr/local/python3/bin/gunicorn /usr/bin/gunicorn3
ln -s /usr/local/python3/bin/supervisord /usr/bin/supervisord3
ln -s /usr/local/python3/bin/supervisorctl /usr/bin/supervisorctl3
ln -s /usr/local/python3/bin/echo_supervisord_conf /usr/bin/echo_supervisord_conf3
安装成功验证
[root@VM-0-8-centos ~]# python3 -V && pip3 -V

Python 3.7.7

pip 19.2.3 from /usr/local/python3/lib/python3.7/site-packages/pip (python 3.7)

[root@VM-0-8-centos ~]#
3、配置redis服务
3.1 安装 Redis
yum install -y redis
3.2 配置Redis
[root@w5-soar apps]# vim /etc/redis.conf  #新增如下配置
# If the master is password protected (using the "requirepass" configuration
requirepass  JKFAvCYAy75qojnw   设置redis连接密码
3.3 启动 Redis
systemctl start redis
systemctl enable redis
3.4 安装成功验证
[root@VM-0-8-centos ~]# redis-cli 
127.0.0.1:6379> AUTH JKFAvCYAy75qojnw
OK
127.0.0.1:6379> set test 1
OK
127.0.0.1:6379> get test
"1"
127.0.0.1:6379> quit
4、配置MySQL服务
4.1 安装MySQL源
vim /etc/yum.repos.d/mysql.repo
    
[mysql-5.7-community]
name=MySQL 5.7 Community Server
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql
4.2  安装MySQL
yum -y install mysql
4.2 启动服务
systemctl start mysql
systemctl enable mysqld
4.3 创建数据库
4.4 导入SQL
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
--  Table structure for `zbn_logs`
-- ----------------------------
DROP TABLE IF EXISTS `zbn_logs`;
CREATE TABLE `zbn_logs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `uuid` varchar(100) NOT NULL COMMENT '剧本ID',
  `app_uuid` varchar(100) NOT NULL COMMENT 'App UUID',
  `app_name` varchar(20) NOT NULL DEFAULT '' COMMENT 'APP 名字',
  `result` text NOT NULL COMMENT '执行结果',
  `create_time` datetime COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ----------------------------
--  Table structure for `zbn_type`
-- ----------------------------
DROP TABLE IF EXISTS `zbn_type`;
CREATE TABLE `zbn_type` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` int(2) NOT NULL DEFAULT '1' COMMENT '分类  1 剧本分类 2变量分类',
  `name` varchar(20) NOT NULL DEFAULT '' COMMENT '分类名称',
  `update_time` datetime COMMENT '更新时间',
  `create_time` datetime COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
--  Records of `zbn_type`
-- ----------------------------
BEGIN;
INSERT INTO `zbn_type` VALUES ('1', '1', '默认剧本', '2020-11-06 13:14:25', '2020-11-06 13:14:27');
COMMIT;

-- ----------------------------
--  Table structure for `zbn_user`
-- ----------------------------
DROP TABLE IF EXISTS `zbn_user`;
CREATE TABLE `zbn_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `account` varchar(20) NOT NULL DEFAULT '' COMMENT '账号',
  `passwd` varchar(32) NOT NULL DEFAULT '' COMMENT '密码',
  `nick_name` varchar(20) NOT NULL DEFAULT '' COMMENT '用户昵称',
  `email` varchar(50) NOT NULL DEFAULT '' COMMENT '用户邮箱',
  `token` varchar(32) NOT NULL DEFAULT '' COMMENT 'Token 用户唯一标识',
  `update_time` datetime COMMENT '更新时间',
  `create_time` datetime COMMENT '创建时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `index_account` (`account`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
--  Records of `zbn_user`
-- ----------------------------
BEGIN;
INSERT INTO `zbn_user` VALUES ('1', 'admin', '3C830D97FC5AE3E9F9D1F491735C7AEA', '织布鸟', 'admin@zbn.io', '', '2020-11-06 10:51:30', '2020-10-22 17:58:32');
COMMIT;

-- ----------------------------
--  Table structure for `zbn_variablen`
-- ----------------------------
DROP TABLE IF EXISTS `zbn_variablen`;
CREATE TABLE `zbn_variablen` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type_id` int(11) NOT NULL DEFAULT '0' COMMENT '分类ID',
  `key` varchar(20) NOT NULL DEFAULT '' COMMENT '变量 KEY',
  `value` varchar(255) NOT NULL DEFAULT '' COMMENT '变量 值',
  `update_time` datetime COMMENT '更新时间',
  `create_time` datetime COMMENT '创建时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `index.key` (`key`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- ----------------------------
--  Table structure for `zbn_workflow`
-- ----------------------------
DROP TABLE IF EXISTS `zbn_workflow`;
CREATE TABLE `zbn_workflow` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `uuid` varchar(100) NOT NULL DEFAULT '' COMMENT 'UUID',
  `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '创建人',
  `type_id` int(11) NOT NULL DEFAULT '0' COMMENT '剧本分类',
  `name` varchar(50) NOT NULL DEFAULT '' COMMENT '剧本名称',
  `start_app` varchar(100) NOT NULL DEFAULT '' COMMENT '开始APP UUID',
  `end_app` varchar(100) NOT NULL DEFAULT '' COMMENT '结束APP UUID',
  `flow_json` text NOT NULL COMMENT '流程图画布数据',
  `flow_data` text NOT NULL COMMENT '流程图 APP 数据',
  `update_time` datetime COMMENT '更新时间',
  `create_time` datetime COMMENT '创建时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `index_uuid` (`uuid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

SET FOREIGN_KEY_CHECKS = 1;
报错 only_full_group_by
this is incompatible with sql_mode=only_full_group_by
解决办法:
修改 Mysql 配置文件 默认为 my.ini 
sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
开启 GROUP BY 支持
查询初始root密码
grep 'temporary password' /var/log/mysqld.log
修改root密码
mysql -uroot -p初始密码


ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
允许远程访问
# 设置后方便远程管理数据库
mysql> use mysql;
mysql> update user set host='%' where user='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.11 sec)

mysql> 
5、安装ZBN
拉取代码
[GITHUB]git clone https://github.com/zbnio/zbn.git
[GITEE] git clone https://gitee.com/zbnio/zbn.git
安装 Python 依赖库
pip3 install -r requirements.txt

或者

# 使用国内源:
pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
mysqlclient 报错解决
yum install mysql-devel -y
修改配置文件
执行 vi config.ini , redis 没有密码无需填写
[mysql]
host = 数据库地址
port = 数据库端口
database = 数据库DB名字
user = 数据库账号
password = 数据库密码


[redis]
host = redis 地址
port = redis 端口
database = 0
password =
运行项目
run.py 不建议生产环境使用,推荐开发测试中使用
[root@localhost zbn]# python3 run.py 
/usr/local/python3/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: compiletime version 3.8 of module 'app.core.__init__' does not match runtime version 3.7
  return f(*args, **kwds)
  ____  ____  __ _    ____   __    __   ____ 
 (__  )(  _ \(  ( \  / ___) /  \  / _\ (  _ \
  / _/  ) _ (/    /  \___ \(  O )/    \ )   /
 (____)(____/\_)__)  (____/ \__/ \_/\_/(__\_) v0.2

* Welcome to ZBN SOAR service
===========================
* Web : https://zbn.io
* Github : https://github.com/zbnio/zbn
===========================
* Running on http://0.0.0.0:8888/ (Press CTRL+C to quit)
访问 ZBN SOAR
默认为:ip:8888 , 访问不了请检查服务器防火墙 ( IP 配置为 0.0.0.0 可直接访问)
修改默认端口,请修改 run.py, 8888 改成 你想要的端口号
默认账号密码为:
账号:admin
密码:12345678
(登录后请及时修改密码)
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容