美文网首页
CTFd搭建笔记

CTFd搭建笔记

作者: Qymua | 来源:发表于2019-04-23 23:16 被阅读0次

    概述

    CTFd是一款基于Apache2.0的协议的开源CTF平台,最新版本目前为1.20。该平台功能强大,基本上能够满足目前的CTF竞赛需求,同时,该平台提供了强大的插件功能,可以自己进行插件开发实现自己的功能。

    注意事项

    本次平台的搭建是在本地虚拟机ubuntu 14.04 LTS下完成的,请保证系统环境正常。如果需要部署在云服务器上,请准备好ssh工具(推荐xshell)道理大体相同,做只是最后为了让访问更流畅需要做下优化,nginx+gunicorn 文章末尾会做说明!

    部署平台

    0.网络和系统环境

    虚拟机的话最好使用桥接,提前排除这个出错的可能性,云服务器可以忽略这一点
    安利一波系统下载地址,推荐使用国内镜像站下载:

    清华大学开源软件镜像站

    1.安装git

        sudo apt install git
    

    2.安装pip

        sudo apt install python-pip
    

    3.安装Flask

        sudo pip install Flask
    

    至此如果就已经出现许多依赖问题,最好耐心解决掉,通常全新安装的系统出现的问题会比较多

    4.下载CTFd

        sudo git clone https://github.com/isislab/CTFd.git
        chmod -R 777 CTFd/
    

    下载后,你可能需要对config.py文件进行修改,通常我们在服务器上部署平台会先配置数据库,当然这个一直会出现很迷的问题,如果你只是在本地部署可以忽略这一条!数据库如何部署请自行百度
    数据库部署后请修改CTFd目录下的config.py文件:

    vim使用科普-->命令模式下输入/后可以实现类似Ctrl+F的功能搜索文本内容,按n查找下一条,当然你也可以在本地git clone下载CTFd文件先修改后上传

        原代码:
            SQLALCHEMY_DATABASE_URI = os.environ.get('sqlite:///{}/ctfd.db?charset=utf8') or 'sqlite:///{}/ctfd.db'.format(os.path.dirname(os.path.abspath(__file__)))
        修改为:
            SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or 'mysql+pysql://数据库用户名:用户密码@localhost/数据库名?charset=字符编码'.format(os.path.dirname(os.path.abspath(__file__)))
        举例:
            SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or 'mysql+pysql://ctfd:123456@localhost/CTFd?charset=utf8'.format(os.path.dirname(os.path.abspath(__file__)))
    

    以上是常规安装平台才需要做的步骤,安装方式下面会介绍

    5.安装CTFd

    在CTF维基https://github.com/CTFd/CTFd/wiki/Getting-Started 中写了详细的安装步骤。

    常规方式

    # 克隆库
    git clone https://github.com/CTFd/CTFd.git
    cd CTFd/
    # 安装操作系统需要安装的包
    ./prepare.sh
    # 安装python需要的包
    pip install -r requirements.txt
    # 运行CTFd
    python serve.py
    

    接下去会下载很多东西,也就是跑下脚本一键部署平台所需要的环境,如果出现红字报错或者各种依赖问题,可以尝试update或者solo下,每个人情况不一,此类问题自行解决

    完成以上步骤只是在本地搭起服务器,要是想在公网(物理机)访问,还需要安装gunicorn

            pip install gunicorn
            sudo (gunicorn --bind 0.0.0.0:8000 -w 4 "CTFd:create_app()"&)
            // 这里加了()还有&是为了那能够后台运行  [0.0.0.0]不用修改
            //gunicorn的命令一定要进CTFd目录输入
            //访问虚拟机(服务器)公网IP即可看见平台
    

    如果你是在虚拟机部署,请切换为NAT连接,在VM虚拟网路编辑器上,将虚拟机的8000端口映射到本机上,即可实现物理机访问,桥接模式即可直接在局域网内共享平台

    docker

    git clone https://github.com/CTFd/CTFd.git
    cd CTFd/
    docker-compose up
    

    然后访问链接 http://localhost:8000 即可

    可以修改docker配置文件更改映射端口,我也准备去恶补下docker神器的使用了

    ✔推荐使用docker部署平台,无需苦恼环境问题,直接pull官方提供的依赖环境,搭建后的访问速度明显提升~

    PS:在云服务器搭建,请先在安全组里开放8000端口

    DIY

    刚搭建好,肯定想着修改平台,你可以在CTFd/CTFd主题目录下慢慢修改,建议copy到本地使用编辑器Ctrl+F修改页面,这里就不多做介绍了,展示一下我自己的就好了,因为不喜欢花里胡哨,所以比较简陋,官方也有提供wiki https://github.com/CTFd 主题、插件都有~

    image

    整站镜像下载

    如果你最终无法成功部署,只是想在本地局域网内使用,可以尝试下载博主搭建好的虚拟机镜像玩一玩,使用前注意重启虚拟机,因为快照是开机状态,NAT地址段可能不一样,需要重新获取
    压缩包密码:qymua.com(平台未进行任何配置和优化)
    压缩包大小:3.01G
    解压后大小:13G
    压缩包MD5:ef601c06af91f4c7532cbeaac7b324f0

    下载地址

    密码:da8m

    思考

    我们都知道不管是部署网站还是部署平台,配置环境都挺麻烦的,遇到问题也是常有的事情,那么利用BT面板一键部署环境以后,再按部就班部署平台是更顺利呢?还是遇到更多不可预测的问题?如果可以,那么后期维护会很方便,建议在本地模拟一遍再尝试在服务器上部署!

    相关文章

      网友评论

          本文标题:CTFd搭建笔记

          本文链接:https://www.haomeiwen.com/subject/tdfdiqtx.html