JNCTF平台搭建指南
说明
JNCTF平台及docker仓库搭建,平台只用于江南大学网络空间安全俱乐部内部训练、举办比赛使用,不做其他用途。本文仅供俱乐部内部人员参考,不可外传。
CTF平台搭建
说明
Python2停用,原有的平台代码依赖问题无法解决,无法直接部署,此处给出构建已经构建好的docker镜像并进行部署。
准备工作
- 连入内网,下载源码
1
git clone git@202.195.145.17:Don/JNCTF-platformbuild.git
- 将文件上传至服务器
1
scp -r JNCTF-platformbuild root@服务器IP:/root/JNCTF-platformbuild
- 将JNCTF-platformbuild/JNCTF内的Dockerfile和docker-compose.yml中的ip替换为docker仓库的IP
1
2sed -i "s/34.97.157.26/docker_host/g" Dockerfile
sed -i "s/34.97.157.26/docker_host/g" docker-compose.yml
仓库tls配置
ssh 登录服务器
1 | cd /etc/docker/ |
build.sh内容如下,其中的IP地址更换为仓库服务器IP即可
1 | openssl genrsa -aes256 -out ca-key.pem 4096 |
为build.sh增加x权限并执行
1 | chmod a+x build.sh |
Common Name (e.g. server FQDN or YOUR name)输入服务器IP地址
其他的需要输密码都是随便输同一个加密密码就好,其他的不用输
创建/etc/docker/daemon.json文件,里面的IP换成仓库的IP
1 |
|
修改/lib/systemd/system/docker.service
1 | ExecStart=/usr/bin/dockerd -H=0.0.0.0:2376 -H=unix:///var/run/docker.sock --containerd=/run/containerd/containerd.sock |
重载配置文件并重启docker
1 | sudo systemctl daemon-reload |
至此,tls认证配置完成
CTF平台启动
载入docker镜像
切换至JNCTF-platformbuild目录下
1 | docker load -i ctfd2020 |
等待docker镜像导入完成
1 | docker images |
确定一下是否有以下镜像,有则继续,没有则检查问题所在
1 | REPOSITORY TAG IMAGE ID CREATED SIZE |
启动平台
切换至JNCTF-platformbuild/JNCTF目录下,先检查一下docker-compose.yml和Dockerfile中的IP是否为docker仓库IP,若不是请替换为仓库IP
1 | docker-compose up -d |
平台应该是瞬间启动,若非瞬间启动,则前面步骤存在问题,立刻中断程序并检查
1 | docker ps |
应该可以看类似的以下容器
1 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
进行容器
1 | docker exec -it 容器id bash |
启动CTFD服务
1 | gunicorn 'CTFd:create_app()' --bind '0.0.0.0:8000' --workers 4 --worker-class 'gevent' --access-logfile "${LOG_FOLDER:-/opt/CTFd/CTFd/logs}/access.log" --error-logfile "${LOG_FOLDER:-opt/CTFd/CTFd/logs}/error.log" --timeout 60 |
退出容器,千万不要ctrl+c中断
访问IP,应该可以看到平台已成功启动,注册管理员账号并登录平台
替换JNCTF中的keys(物理机)
用/etc/docker/keys文件夹替换掉JNCTF-platformbuild/JNCTF中的keys
1 | cd JNCTF-platformbuild/JNCTF |
替换容器中的keys(容器内)
1 | docker exec -it 容器id bash |
至此,keys替换完成
docker-swarm开启
1 | docker swarm init --advertise-addr IP |
题目测试
进入容器
1 | docker exec -it 容器id bash |
创建比赛,确定homework2019中题目仓库的IP地址为docker仓库地址
1 | python import2chal.py homework2019/data.yml |
等待镜像构建及推送仓库,此时登录CTF平台可以看到创建的homework2019比赛,
可开启Pwn题并尝试nc连接,若连接无误,则平台搭建完成。
本文链接: https://yd0ng.github.io/2020/08/10/JNCTF%E5%B9%B3%E5%8F%B0%E6%90%AD%E5%BB%BA%E6%8C%87%E5%8D%97/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!