使用Linux(Centos7)和CTFd_V2.0搭建CTF平台可域名访问

0x00前言

在之前我写过一篇关于CTF平台搭建的文章,使用CTFd_V1.2.0版本搭建的CTF平台[点击查看V1.0版本搭建方法],只能通过IP+端口号的方式访问,很不方便。而且官方更新版本到V2.0,以前的V1.2.0版本很难找到,因此又萌发了使用V2.0版本搭建新平台,作为一点突破,想办法使IP+端口号访问的方式变为域名访问,实现这一点依靠Apache的反向代理。话不多说进入正题!

0x01搭建平台注意事项

序号 注意事项 解决方法
1 V2.0版本需要使用高于10.2版本的Mariadb数据库,因此需要升级数据库。 点击查看解决方法
2 本次搭建平台使用的是Centos7.4的虚机,Apache2.4.6,10.2.22-MariaDB,Python2.7,使用远程工具xshell 点击进入Xshell官网
3 教程中提到的域名访问,需要个人拥有以备案能够公网的域名。  

0x02平台搭建过程

#关闭selinux

setenforce 0
关闭SELINXU

#升级/安装Mariadb数据库

升级数据库参考链接:点击查看

#重启数据库
systemctl restart mariadb

#安装Python插件

以下展示的图片多为结果图,执行命令后见到图内结果即为正常安装或升级插件。

yum -y install epel-release

yum install -y python-pip

#升级插件pip
sudo pip install --upgrade pip

#安装flask插件
pip install flask

#获取CTFd源代码

#切换目录
cd /var/www/html
#下载源代码
wget https://github.com/CTFd/CTFd/archive/master.zip

#安装CTFd

#解压源代码包
unzip master.zip
#修改源代码文件夹权限
chmod -R 777 CTFd-master/
#切换目录
cd CTFd-master/
执行脚本(执行速度取决于设备性能和网络状况)
sudo ./prepare.sh 

#创建数据库

#连接Mariadb数据库
mysql -u 数据库用户名 -p密码
例:mysql -u root -proot
#创建数据库
CREATE DATABASE CTFd;
#退出数据库 exit;

#修改CTFd配置环境

#编辑config.py配置文件
vim /var/www/html/CTFd-master/CTFd/config.py

 

原代码:
    DATABASE_URL = os.getenv('DATABASE_URL') or 'sqlite:///{}/ctfd.db'.format(os.path.dirname(os.path.abspath(__file__)))(大约在配置文件66行)
修改为:
    DATABASE_URL = os.getenv('DATABASE_URL') or'mysql+pysql://数据库用户名:用户密码@localhost/数据库名?charset=字符编码'.format(os.path.dirname(os.path.abspath(__file__))) (大约在配置文件66行)
举例:
    DATABASE_URL = os.getenv('DATABASE_URL') or 'mysql+pymysql://root:root@localhost/CTFd?charset=utf8'.format(os.path.dirname(os.path.abspath(__file__))) (大约在配置文件66行)

#运行启动CTFd平台

#运行serve.py脚本
sudo python serve.py

#测试平台启动情况

新打开一个Xshell窗口,连接到服务器!一定要新开一个!

#使用curl访问测试
curl 127.0.0.1:4000

见到类似于下图的内容即代表可以CTFd启动正常,下面就可以做代理,用域名访问了。

#配置Apache反向代理(这一步决定着能否使用域名访问)

 

#安装各种插件(httpd-devel插件)
yum install -y httpd-devel

#安装各种插件(python-devl插件)
sudo yum install -y python-devel

#安装各种插件(libeventt-devl插件)
sudo yum install -y libevent-devel

#安装第三方库
easy_install gevent

#安装开发工具包
yum -y groupinstall Development tools

#安装apache的mod_wsgi插件
yum install -y mod_wsgi

#安装Python的mod_wsgi插件
yum install -y mod_wsgi

#修改Apache的主配置文件

#修改httpd.conf文件
vim /etc/httpd/conf/httpd.conf

在配置文件第56行后面添加如下信息:

#模块配置:(不包含此行)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so

在配置文件第359行(倒数第2行)后添加如下信息:

#虚拟主机配置:(不包含此行)
NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin test@test.com
    ServerName ctf.2020oz.com
    ErrorLog logs/ctf.2020oz.example.com-error_log
    CustomLog logs/ctf.2020oz.example.com-access_log common
    ProxyRequests Off
    <Proxy />
        Order deny,allow  
        Allow from all  
    </Proxy>
    ProxyPass / http://127.0.0.1:4000/
    ProxyPassReverse / http://127.0.0.1:4000/
</VirtualHost>

 

#配置文档注释
NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin test@test.com #管理员邮箱
    ServerName ctf.2020oz.com #想要使用的域名
    ErrorLog logs/ctf.2020oz.example.com-error_log #错误日志保存位置
    CustomLog logs/ctf.2020oz.example.com-access_log common #日志保存位置
    ProxyRequests Off #代理
    <Proxy />
        Order deny,allow  
        Allow from all  
    </Proxy>
    ProxyPass / http://127.0.0.1:4000/ #代理映射URL空间
    ProxyPassReverse / http://127.0.0.1:4000/ #代理映射URL空间
</VirtualHost>

 

#保存配置文件
英文状态下,按“esc”键,然后输入“:”【冒号】和“wq”,(所有命令不包含“”双引号)然后回车。
例:
:wq(回车)

#重启服务

#重启Apache服务
systemctl restart httpd

#重启Mariadb数据库
systemctl restart mariadb

 

#添加DNS解析记录**(已备案域名)

#访问站点进行注册安装

#教程结束

#汉化平台

如果想要汉化CTF平台点击后方连接查看[CTF平台汉化方法]。

#上传题目

平台上传题目的方法我已写成文档上传到QQ群(210475444)内,如有需要请添加 QQ群自行下载。

以上为教程全部内容,如有疑问可以通过以下方留言,邮箱:540616029@qq.com、QQ:540616029、微博:深度极客、交流QQ群:210475444(深度极客)。如需转载请注明来源。

为您推荐

发表评论

4条评论