前言:关于OpenCTI的简介就不相信说明了,本篇重点在搭建环节。之前调研过OpenCTI平台一段时间,但是建立在官网的demo体验之上,最近抽出一些时间自己搭建了OpenCTI平台,整个搭建过程没有花费太多时间,搭建步骤及遇到的问题及解决办法总结如下,希望能对大家的入门提供一些力所能及的帮助。
一、四种部署方式
官网提供了四种部署方式,详情请参考官方文档。
- 虚拟机
- docker部署(对容器进行了很好的管理,部署更方便,强烈推荐此方式)
- 云部署
- 手动部署(不推荐,坑太多)
二、部署环境
- Linux系统:CentOS Linux release 7.2.1511 (Core)
- 1 核CPU(Linux命令:cat /proc/cpuinfo| grep “cpu cores”| uniq)
- 16个物理CPU (Linux命令:cat /proc/cpuinfo| grep “physical id”| sort| uniq| wc -l)
- 32G内存(Linux命令:cat /proc/meminfo)
- 536G硬盘(Linux命令:fdisk -l | grep Disk)
- docker版本:Docker version 17.12.0-ce, build c97c6d6
- docker-compose版本:Docker Compose version v2.1.1
三、部署步骤
- 安装需要的包
yum install -y yum-utils device-mapper-persistent-data lvm2 git
- 安装docker
- 下载docker
curl -sSL https://get.daocloud.io/docker | sh
- 启动docker
sudo systemctl daemon-reload
sudo systemctl restart docker
- 验证docker是否安装成功
docker -v
- 安装docker-compose
- 下载docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.1.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
- 修改docker-compose文件夹权限
chmod +x /usr/local/bin/docker-compose
- 建立链接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
- 验证docker-compose是否安装成功
docker-compose -v
- 下载OpenCTI
- 创建一个openCTI文件夹如/home/open_cti/
- 进入/home/open_cti/,然后下载OpenCTI
cd /home/open_cti/
git clone https://github.com/OpenCTI-Platform/docker.git
- 配置环境变量参数
- 通过jq工具配置环境变量,下载jq
yum install -y jq
- 出现的问题及解决方式
出现的问题:无法下载jq,Error: Nothing to do
解决的方法:
(1)下载epel-release:yum install epel-release
(2)修改/etc/yum.repos.d/epel.repo,将enabled =0修改为enabled=1
- 批量写入待修改的数据
(cat <<EOF
OPENCTI_ADMIN_EMAIL=admin@opencti.io
OPENCTI_ADMIN_PASSWORD=PLEASECHANGEME
OPENCTI_ADMIN_TOKEN=$(cat /proc/sys/kernel/random/uuid)
MINIO_ROOT_USER=$(cat /proc/sys/kernel/random/uuid)
MINIO_ROOT_PASSWORD=$(cat /proc/sys/kernel/random/uuid)
RABBITMQ_DEFAULT_USER=guest
RABBITMQ_DEFAULT_PASS=guest
CONNECTOR_HISTORY_ID=$(cat /proc/sys/kernel/random/uuid)
CONNECTOR_EXPORT_FILE_STIX_ID=$(cat /proc/sys/kernel/random/uuid)
CONNECTOR_EXPORT_FILE_CSV_ID=$(cat /proc/sys/kernel/random/uuid)
CONNECTOR_IMPORT_FILE_STIX_ID=$(cat /proc/sys/kernel/random/uuid)
CONNECTOR_IMPORT_REPORT_ID=$(cat /proc/sys/kernel/random/uuid)
EOF
) > .env
注意:修改以下两个参数
OPENCTI_ADMIN_EMAIL=登录账户邮箱
OPENCTI_ADMIN_PASSWORD=登录账户密码
- 使配置生效
source .env
- 由于ES对内存要求较高,因此需要调整机器内存参数
echo "vm.max_map_count=1048575" >> /etc/sysctl.conf
- docker-compse拉取镜像
docker-compose pull
注意:
在拉取镜像的过程中可能会存在问题:Error response from daemon: Get https://docker.elastic.co/v2/: x509: certificate signed by unknown authority
解决方式:
(1)获取证书信息
openssl s_client -connect docker.elastic.co:443 -showcerts
(2)拷贝证书内容,注:从-----BEGIN CERTIFICATE----- 到 -----END CERTIFICATE-----的全部内容,cert中包含两个-----BEGIN CERTIFICATE----- 和两个-----END CERTIFICATE-----,这两部分内容都要拷贝(也即以下内容全部拷贝)。
-----BEGIN CERTIFICATE-----
something…
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
something…
-----END CERTIFICATE-----
(3)在/etc/pki/ca-trust/source/anchors/目录下创建一个文件:cert.crt,将(2)中拷贝的证书信息复制到该文件中。
(4)更新证书信任
update-ca-trust
(5)重启docker【重要】
systemctl restart docker.service
如果拉取过程中没有报错就可以继续执行下一步了。
- docker-compose启动。
docker-compose up -d
- 如果没有报错则可以访问到oencti登录页http://IP:8080。
- 登录账号:.env中的OPENCTI_ADMIN_EMAIL对应的值(admin@opencti.io)
- 登录密码:env中的OPENCTI_ADMIN_PASSWORD对应的值(如admin)
- 目前没有显示数据,通过添加一些外部连接器,可以接入外部数据。以
AlienVault连接器为例。
- 登录AlienVault,获取AlienVault分配给用户的API KEY。
- 获取CONNECTOR_ID,通过在线方式生成UUID。
- 修改docker-compose.yml文件,添加以下内容。
注:拉取更新时间参数:ALIENVAULT_INTERVAL_SEC可以根据实际情况自定义。
connector-alienvault:
image: opencti/connector-alienvault:5.2.1
environment:
- OPENCTI_URL=http://opencti:8080
- OPENCTI_TOKEN=${OPENCTI_ADMIN_TOKEN}
- CONNECTOR_ID=自动生成的UUID
- CONNECTOR_TYPE=EXTERNAL_IMPORT
- CONNECTOR_NAME=AlienVault
- CONNECTOR_SCOPE=alienvault
- CONNECTOR_CONFIDENCE_LEVEL=15 # From 0 (Unknown) to 100 (Fully trusted)
- CONNECTOR_UPDATE_EXISTING_DATA=false
- CONNECTOR_LOG_LEVEL=info
- ALIENVAULT_BASE_URL=https://otx.alienvault.com
- ALIENVAULT_API_KEY=注册alienvault之后生成的API的KEY
- ALIENVAULT_CREATE_OBSERVABLES=true
- ALIENVAULT_CREATE_INDICATORS=true
- ALIENVAULT_PULSE_START_TIMESTAMP=2020-05-01T00:00:00 # BEWARE! Could be a lot of pulses!
- ALIENVAULT_REPORT_TYPE=threat-report
- ALIENVAULT_REPORT_STATUS=New
- ALIENVAULT_GUESS_MALWARE=false # Use tags to guess malware.
- ALIENVAULT_GUESS_CVE=false # Use tags to guess CVE.
- ALIENVAULT_EXCLUDED_PULSE_INDICATOR_TYPES=FileHash-MD5,FileHash-SHA1 # Excluded Pulse indicator types.
- ALIENVAULT_ENABLE_RELATIONSHIPS=true # Enable/Disable relationship creation between SDOs.
- ALIENVAULT_ENABLE_ATTACK_PATTERNS_INDICATES=true # Enable/Disable "indicates" relationships between indicators and attack patterns
- ALIENVAULT_INTERVAL_SEC=3600
restart: always
- 重新进行镜像更新和拉取。
docker-compose up -d
- 数据接入成功。
参考链接
[1] https://www.opencti.io/en/
[2] https://luatix.notion.site/OpenCTI-Public-Knowledge-Base-d411e5e477734c59887dad3649f20518
[3] https://mp.weixin.qq.com/s/O5g314Nc_fO_NsO3NX_ZJg
[4] https://www.uuidgenerator.net/