Название: "Платформа для размещения практических CTF-задач в рамках образовательного курса для школьников по основам ИБ."
В основу данного проекта лёг фреймворк CTFd, данный проект является форком исходного продукта. С информацией о фреймворке вы можете ознакомиться ниже:
- Репозиторий: https://github.com/CTFd/CTFd
- Полный README CTFd: https://github.com/CTFd/CTFd/blob/master/README.md
- Документация (Gitbook): https://docs.ctfd.io/
- Docs: Getting Started
- Docs: Deployment options
Обеспечить школьникам в рамках образовательного курса по информационной безопасности в Экономико-математической школе при ЭФ МГУ (ЭМШ) доступ к платформе, которая способна улучшить образовательный процесс за счёт учёта выполнения домашних/самостоятельных/контрольных работ с дополнительными функциями.
-
Доменное имя с зарегистрированным SSL-сертификатом на этот домен (возможен доступ к ресурсу по HTTPS).
-
Возможность деплоя в публичную Сеть посредством размещения сервиса на выделенном приватном сервере на DIgitalOcean.
-
Фреймворк: Python + Flask + mariaDB/mySQL + redis + jinja2 + werkzeug.
-
Docker для сборки и автоматического деплоя по 80 порту инстанса веб-приложения с возможностью логирования активности на сервисе.
-
Веб-сервер NGINX (обёрнут под Docker) — работает в качестве reverse proxy, перенаправляя весь HTTP-трафик на HTTPS за счёт HTTP-редиректа на порт 443.
-
Система аутентификации и авторизации пользователей (login/register-форма).
-
Почтовый сервер на Mailgun для подтверждения регистрации пользователей с relay-узлом на сервере, где хостится приложение (прописан в конфигах фреймворка).
-
Возможность добавлять на сервис задания, их описание, исходные файлы, количество баллов, подсказки к решению (за штраф к баллам при их использовании).
-
Система уведомлений для всех пользователей.
-
Разграничение пользователей на пользователей и администраторов.
-
Учёт статистики по пользователям и решённым задачкам.
-
Рейтинговая таблица.
-
Возможность отсматривать успешные или неуспешные попытки сдать задание, а также их точное время.
-
Возможность автоматической санитизации HTML-страниц на сервере.
-
Возможность создавать резервные копии содержимого БД и пользовательского контента на сайте.
-
Возможность выбора режима - для соревнований (регистрация по командам) или индивидуального решения (в рамках проекта используется по умолчанию последнее).
-
Размещённые тестовые задания.
(HTTPS) git clone --depth=1 https://github.com/dDanissimo/emsch-CTFd
(SSH) git clone --depth=1 [email protected]:dDanissimo/emsch-CTFd.git
- Установите необходимые зависимости в Python:
python3 -m pip install -r requirements.txt
или
pip3 install -r requirements.txt
(если pip записан в переменной PATH)
- Если вы запускаете проект нативным образом через Python, обновите https://github.com/ddanissimo/emsch-CTFd/blob/master/CTFd/config.ini под ваши нужды.
NB! Значение SECRET_KEY, согласно документации, должно быть пустой строкой.
В случае отсутствия заданного параметра SECRET_KEY, CTFd создаёт файл .ctfd_secret_key,
занесённый в .gitignore, который содержит значение SECRET_KEY. Из документации к фреймворку:
# The secret value used to create sessions and sign strings. This should be set to a random string. In the
# interest of ease, CTFd will automatically create a secret key file for you. If you wish to add this secret key
# to your instance you should hard code this value to a random static value.
- Сделать pull пре-собранного образа CTFd с Docker Hub:
docker run -p 8000:8000 -it ctfd/ctfd
- Собрать Docker-image из склонированного репозитория (выполнить в корневой директории проекта):
docker-compose up
(для v1 branch docker/compose)
docker compose up
(для v2 branch docker/compose)
- Logo by Laura Barbera
- Theme by Christopher Thompson
- Notification Sound by Terrence Martin