Данный репозиторий содержит автоматизацию для разворачивания серверов для self-hosted attack-defense CTF
/setup/- автоматизация для разворачивания сети, ВМ, сервисов и жюрейной системыproxmox/- скрипты для автоматизации proxmoxinterfaces.sh- создание интерфейсов для всех ВМ
ansible/- конфигурации ansible, которые позволяют установить на ВМ всё необходимое для игрыinventory/- содержит инфраструктурные конфигурации для подключения ко всем игровым ВМgroup_vars/- содержит прикладные конфигурации для сервисов, их развёртывания и т.п.playbooks/- плейбуки для всех ВМ
/services/<название_сервиса>/service- сервисы для игры/checkers/<название_сервиса>/- чекеры для игры. Должны быть формата, который соответствует ForcAD/sploits/<название_сервиса>/sploitN.py- сплойты. Могут быть запущены для тестов через DestructiveFarm. N - номер сплойта (В РАЗРАБОТКЕ)
-
Помещаем сервисы в директорию
services, чекеры - вcheckersсогласно структуре репозитория выше -
Запускаем скрипт для создания интерфейсов на proxmox intefaces.sh. Созданные интерфейсы должны выглядеть следующим образом:
Также в нашем случае есть интерфейс vmbr0, который является локальной сетью организации, где хостим CTF -
Устанавливаем OpenWRT, коннектим к ней все интерфейсы. Настраиваем OpenWRT согласно гайду
-
Задаём статические IP адреса через привязку их к MAC адресу в файле macs.conf. MAC адреса задаём формата BC:24:11:XX:XX:XX, где XX - случайное шестнадцатеричное число.
-
Подготавливаем шаблоны виртуальных машин для жюрейки и вулнбоксов.
Сервисы на вулнбоксы можно поставить следующей командой:
cd setup
chmod +x ./cli.sh
./cli.sh teams services- Запускаем скрипт vm.sh в proxmox:
chmod +x ./vm.sh
./vm.sh clone <template_id> <jury_template_id>где:
- template_id - идентификатор шаблона вулнбокса
- jury_template_id - идентификатор шаблона жюри *При необходимости поменять переменную MAC_CONFIG в скрипте
- Изменяем в inventory.yml
- Имя пользователя и пароль от хостов. При необходимости можно проставить у каждого хоста свои данные. При запуске ansible все пароли от хостов teams, jury будут изменены и вновь записаны в inventory.
- Адреса организаторов. Они будут иметь доступ к ssh жюрейки, остальные адреса будут отклоняться.
-
В конфиге форкада меняем все пароли на рандомные, изменяем start_time. Добавляем все команды и сервисы.
-
Выполняем:
cd setup
chmod +x ./cli.sh
./cli.sh ping # Проверяем доступность хостов
./cli.shДеплой был протестирован на Ubuntu 24.04
Во время соревнования объём трафика можно мониторить через:
bmon -p br-*Складывать трафик в файлы по 500 мегабайт:
tcpdump -i any -s 0 -w ./dump.pcap -C 500 -W 10