使用Docker 部署 SRCMS

0x01 SRCMS 介绍

SRCMS 是一款安全应急响应与缺陷管理软件,致力于为大、中、小企业和组织提供“最敏捷、安全和美观的安全应急响应中心的建站解决方案,帮助企业建立属于自己的安全应急响应中心和体系”。有了SRCMS,您就可以像使用Discuz!搭建论坛一样容易,为您的企业建立安全应急响应中心平台。

官网:

https://www.plusecurity.cn/srcms.html

github地址:

https://github.com/martinzhou2015/SRCMS

0x02 构建 lamp Dcokerfile

首先,我们需要有构建一个lamp 运行环境。

Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 基础镜像为ubuntu:14.04
FROM ubuntu:14.04

# 作者为liusec
MAINTAINER liusec <75065472@qq.com>

# 替换apt源: 将/etc/apt/sources.list文件中的archive.ubuntu.com替换为mirrors.aliyun.com
RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list

# 设置环境变量: 将env环境变量中的TZ设置为Asia/Shanghai
ENV TZ=Asia/Shanghai

# (1)设置本地时间:强制为/usr/share/zoneinfo/Asia/Shanghai文件创建符号链接(软链接)为/etc/localtime,-f为force
# (2)设置时区:向文件/etc/timezone中写入字符串‘Asia/Shanghai’,更改时区为上海
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 更新源
RUN apt-get update -y

# 安装apache、vim、bash-completion、unzip
RUN apt-get install -y apache2 vim bash-completion unzip
# 创建文件夹/var/lock/apache2 、/var/run/apache2
RUN mkdir -p /var/lock/apache2 /var/run/apache2

# 安装mysql-client、 mysql-server; 启动mysql服务; 设置mysql密码
RUN apt-get install -y mysql-client mysql-server \
&& /etc/init.d/mysql start \
&& mysqladmin -u root password "root"

# 安装php
RUN apt-get install -y php5 php5-mysql php5-dev php5-gd php5-memcache php5-pspell php5-snmp snmp php5-xmlrpc libapache2-mod-php5 php5-cli
# RUN yum install -y php php-mysql php-devel php-gd php-pecl-memcache php-pspell php-snmp php-xmlrpc php-xml


# 拷贝phpinfo.php 到docker镜像的/var/www/html/下
COPY src/phpinfo.php /var/www/html/
# 拷贝启动脚本start.sh 到docker镜像的根目录下
COPY src/start.sh /start.sh
# 增加启动脚本start.sh 所有用户和组的执行权限
RUN chmod a+x /start.sh

# 只开放了80 443端口的映射访问权限
EXPOSE 80 443
# 运行后默认执行start.sh启动脚本
CMD ["/start.sh"]

src/start.sh

1
2
3
4
#!/bin/bash
/etc/init.d/mysql start
/etc/init.d/apache2 restart
/usr/bin/tail -f /dev/null

src/phpinfo.php

1
2
3
<?php
phpinfo();
?>

0x03 生成镜像,启动容器

3.1 在daocloud云端构建和启动容器

将上述文件push到github项目中,lamp项目地址:

https://github.com/liusec/lamp

1
2
3
4
5
6
7
├── Dcokerfile
├── README.md
└── src
├── phpinfo.php
└── start.sh

1 directory, 4 files

使用daocloud 关联github,自动构建lamp镜像,使用构建好的镜像启动容器进行测试。

daocloud 云端测试截图:

phpinfo.png

3.2 本地启动lamp容器测试

构建好的docker镜像已设置公开访问,希望在本地测试的小伙伴可以使用下面方法。

  1. 拉取镜像到本地

    1
    $ docker pull daocloud.io/liusheng/lamp:master-98827dc
  2. 启动环境

    1
    $ docker run -d -p 8000:80 daocloud.io/liusheng/srcms_docker:latest

    -p 8000:80 前面的 8000 代表物理机的端口,可随意指定。

  3. 访问测试

    http://127.0.0.1:8000/phpinfo.php

0x04 创建srcms docker image

在上一步lamp镜像的基础上,创建srcms的Dockerfile

Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 基础镜像为daocloud.io/liusheng/lamp
FROM daocloud.io/liusheng/lamp:master-98827dc

# 作者为liusec
MAINTAINER liusec <75065472@qq.com>

ARG SRCMS_URL=https://github.com/martinzhou2015/SRCMS/archive/master.zip

# 解压srcms.zip 到 /var/www/html/下
RUN set -x \
&& apt-get update \
&& apt-get install -y --force-yes wget \
&& wget -qO /tmp/srcms.zip $SRCMS_URL \
&& unzip -q /tmp/srcms.zip -d /tmp/ \
&& mv /tmp/SRCMS-master/* /var/www/html/ \
&& rm -rf /tmp/SRCMS-master

# 创建数据库srcms ,导入sql
# 修改接收邮件的邮箱
RUN set -x \
&& chown -R www-data:www-data /var/www/html/ \
&& /etc/init.d/mysql start \
&& mysql -e "CREATE DATABASE srcms DEFAULT CHARACTER SET utf8;" -uroot -proot \
&& mysql -e "use srcms;source /var/www/html/DB/srcms.sql;" -uroot -proot \
&& rm -f /var/www/html/DB/srcms.sql \
&& sed -i 's/1009465756@qq.com/75065472@qq.com/g' /var/www/html/Application/User/Controller/PostController.class.php

COPY src/start.sh /start.sh
RUN chmod a+x /start.sh

EXPOSE 80

src/start.sh

1
2
3
4
#!/bin/bash
/etc/init.d/mysql restart
/etc/init.d/apache2 restart
/usr/bin/tail -f /dev/null

0x05 生成镜像,启动运行

5.1 在云端启动docker容器

将上面所述文件push到github项目,srcms_docker项目地址:

https://github.com/liusec/srcms_docker

1
2
3
4
5
6
├── Dockerfile
├── README.md
└── src
└── start.sh

1 directory, 3 files

使用daocloud 自动构建,启动服务

srcms_index.png

5.2 在本地启动docker容器

希望在本地部署的小伙伴可以将docker镜像拉取到本地启动,方法如下

  1. 拉取镜像到本地

    1
    $ docker pull daocloud.io/liusheng/srcms_docker:latest
  2. 启动环境

    1
    $ docker run -d -p 8000:80 daocloud.io/liusheng/srcms_docker:latest

    -p 8000:80 前面的 8000 代表物理机的端口,可随意指定。

  3. 访问SRCMS

    http://127.0.0.1:8000/index.php

    srcms_index.png