Skip to content

d1temnd/ctf_easy_per_deploy

Repository files navigation

🛠 easy_per_deploy

Проект предназначен для простого развертывания задач CTF, где участники могут потенциально нанести урон основному контейнеру и помешать решать задачи другим участникам.

🎯 Для кого этот проект

Проект подойдет:

  • Организационно-технической группе CTF
  • DevOps-специалистам
  • Участникам, желающим провести свои тренировки

⚙️ Описание функционала

  • Развертывание отдельного контейнера для каждого участника
  • Перезагрузка контейнера при возникновении ошибок у участника
  • Полная остановка контейнера
  • Автоматическая остановка и удаление контейнера через определенное время
  • Возможность участника продлить "жизнь" контейнера

🏗 Установка и настройка

✅ Требования

  • Сервер на базе Linux
  • Установленные Docker и Docker Compose
  • Сервер должен выдерживать запуск n/2 контейнеров с вашей задачей, где n — количество участников мероприятия

🚀 Установка

git clone https://github.com/d1temnd/ctf_easy_per_deploy.git 
cd ctf_easy_per_deploy
docker compose up --build -d 

🔹 Web-интерфейс для участников будет доступен на порту 6664.

🛠 Пример настроек

🔹 Подготовка задачи

В вашей задаче обязательно должен быть Dockerfile.

  1. Зарегистрируйтесь на hub.docker.com
  2. В папке с задачей выполните команду:
    docker login
    Введите учетные данные.
  3. Соберите проект:
    docker build -t <userName>/<container_name>:<version> .
  4. Отправьте образ на Docker Hub:
    docker image push <userName>/<container_name>:<version>

🔹 Конфигурация

Пример конфигурационного файла:

environment:
    - LEAVE_TIME=1800  # Время жизни контейнера (сек)
    - ADD_TIME=600  # Время продления жизни контейнера (сек)
    - IMAGES_NAME=<userName>/<container_name>:<version>  # Образ контейнера на Docker Hub
    - PORT_IN_CONTAINER=80  # Порт, на котором развернуто приложение внутри контейнера
    - START_RANGE=9000  # Начало диапазона свободных портов
    - STOP_RANGE=10000  # Конец диапазона свободных портов

🏗 Инфраструктура

  • В проекте реализовано API для управления контейнерами, что позволяет интегрировать его в систему жюри.
  • Для отслеживания состояния контейнеров используется база данных, в которой хранятся:
    • Идентификатор пользователя
    • ID контейнера
    • Время запуска контейнера (в формате Unix Timestamp)
    • Время завершения контейнера

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published