由于后面要做漏洞管理平台类的课题,今天把开源项目“洞察”搭建起来了,希望能为我后续的课题开展带来启发和参考。在此,把搭建过程整理出来,留下今天的工作轨迹。
『洞察』是宜信安全部开发,集成应用系统资产管理、漏洞全生命周期管理、安全知识库管理三位一体的管理平台。
-
应用系统资产管理:对公司应用系统资产进行管理,包括系统名称、域名、重要级别、部门、负责人等。
-
漏洞生命周期管理:对公司应用系统产生的安全漏洞进行线上提交、通告、知悉、复测、分类、风险计算、修复期限计算、邮件提醒、漏洞数据分析统计等。
-
安全知识库管理:对安全知识、管理制度进行集中存放、线上学习、安全培训、知识传承等。
洞察使用了Python语言进行开发,利用Flask框架+MySQL+Docker部署实现。
本机原始环境:scientificLinux(我觉得对应centos 7 )
第一步:安装docker
# 如果有旧版本docker的话,下面code帮你移除。
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
然后,安装依赖包:
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
再然后,设置docker安装源,这里给出stable repository:
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
再接下来就是安装docker CE(社区版):
$ sudo yum install docker-ce
最后启动docker,并测试:
$ sudo systemctl start docker
$ sudo docker run hello-world
如果出现下面的提示,就证明安装成功了:
hello_world
第二步:部署mysql
首先,拉去mysql镜像:
# 我这里用的mysql版本是5.7.13
docker pull mysql:5.7.13
然后,创建容器:
# 容器名字:open_source_mysqldb
# 连接mysql数据库的密码:root
docker run -d -p 127.0.0.1:6606:3306 \
--name open_source_mysqldb \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7.13
再接下来,我们要考虑安装一个mysql的客户端。因为上面的操作是在docker中进行的,也就是说mysql的服务是在docker中的(我觉得)。所以操作如下:(后续的操作会有用)
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
rpm -Uvh mysql80-community-release-el7-1.noarch.rpm
yum install mysql-community-client
接下来在docker中创建数据库:
# 其实这里可以告诉你为什么上一步我要安装mysql客户端,如果不安装的话,下面的mysql命令是识别不了的。会出现下面图 1 的情况。
$ mysql -h 127.0.0.1 -P 6606 -u root -p
Enter password:root
mysql> CREATE DATABASE IF NOT EXISTS vuldb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
mysql> grant all on vuldb.* to vuluser@'%' identified by 'vulpassword';
mysql> flush privileges;
mysql> quit
图 1
数据库创建好后,你就可以查看了,但是vuldb中是没有任何表的呢。如下:
null_tables
第三步:部署和启动app
首先,下载源码:
$ git clone https://github.com/creditease-sec/insight.git
然后,修改srcpm/config.py 配置文件、mail_sender.py配置文件以及邮箱设置:这里参考:注册使用QQ邮箱转发邮件,已正常配置。
接下来,在项目根目录(也就是insight/)部署和启动app:
#拉取镜像Image
docker pull daocloud.io/liusheng/vulpm_docker:latest
# 在项目目录下启动容器,确保当前目录下存在srcpm文件夹,MAIL_PASSOWRD替换为自己邮箱服务器的密码。
$ docker run -d -p 0.0.0.0:80:5000 \
--link open_source_mysqldb:db \
--name open_source_srcpm \
-v $PWD/srcpm:/opt/webapp/srcpm \
-e DEV_DATABASE_URL='mysql://vuluser:vulpassword@db/vuldb' \
-e SrcPM_CONFIG=development \
-e MAIL_PASSWORD='xxxxxx' \
daocloud.io/liusheng/vulpm_docker:latest \
sh -c 'supervisord -c srcpm/supervisor.conf && supervisorctl -c srcpm/supervisor.conf start all && tail -f srcpm/log/gunicorn.err && tail -f srcpm/log/mail_sender.err'
再然后,我们初始化数据库,这里我们直接导入“洞察”的初始化sql(注意当前路径是在 insight/):
mysql -h127.0.0.1 -P6606 -uroot -p vuldb < srcpm/vuldb_init.sql
Enter password:root
最后就是访问洞察:
http://ip:port/srcpm/
放上我访问洞察的部分初始界面吧:
初始界面
别人眼中的你解决问题似乎毫不费力,其实他们不明白背后的你付出了偌大的努力!
good night!!!
网友评论