Jeopardy CTF na vlastním serveru
- Tento manuál popisuje, jak nastavit a nasadit GZ::CTF server pro účely jeopardy CTF soutěží.
- Toto nastavení je primárně pro menší soutěže, které nevyžadují komplexní infrastrukturu.
- Následují instrukce jsou určeny pro administrátory, informace pro účastníky jsou zde.
Požadavky
Před zahájením konfigurace se ujistěte, že máte následující požadavky splněny:
- Server s operačním systémem Linux, který bude sloužit jako hostitel pro GZ::CTF server.
- Nainstalovaný Docker, Docker compose a máte k nim práva.
- Přístup k internetu pro stažení potřebných závislostí.
- Popř. nginx/wireguard pro přístup k serveru z internetu(nepopsáno v tomto manuálu).
Konfigurace serveru
- Většina informací je přebrána z dokumentace GZ::CTF
- Konfigurace serveru je velice jednoduchá - je potřeba jen upravit 2 soubory:
- docker-compose.yaml
- appsettings.json
docker-compose.yaml
- Tento soubor obsahuje konfiguraci pro spuštění GZ::CTF serveru pomocí Docker Compose.
- Pro bližší informace o jednotlivých nastaveních se podívejte na dokumentaci GZ::CTF.
- Upravte hodnoty
GZCTF_ADMIN_PASSWORDaPOSTGRES_PASSWORDna silná hesla, aby byl server bezpečný.
services:
gzctf:
image: gztime/gzctf:latest
restart: always
environment:
- "GZCTF_ADMIN_PASSWORD=TBD"
- "LC_ALL=en_US.UTF-8"
ports:
- "80:8080"
volumes:
- "./data/files:/app/files"
- "./appsettings.json:/app/appsettings.json:ro"
- "/var/run/docker.sock:/var/run/docker.sock"
depends_on:
- db
db:
image: postgres:alpine
restart: always
environment:
- "POSTGRES_PASSWORD=TBD"
volumes:
- "./data/db:/var/lib/postgresql"
appsettings.json
- Tento soubor obsahuje konfiguraci pro GZ::CTF server, včetně nastavení pro databázi, služby a další.
- Pro bližší informace o jednotlivých nastaveních se podívejte na quick start GZ::CTF.
- Upravte hodnotu Password v databáze na stejné heslo jako v docker-compose.yaml, aby se server mohl připojit k databázi.
- Dále je potřeba upravit
XorKeyna silný náhodný řetězec, který bude použit pro šifrování a dešifrování dat. PublicEntryje adresa, na které bude server přístupný z internetu. Upravte ji na veřejnou IP adresu nebo doménové jméno vašeho serveru, aby účastníci mohli přistupovat k serveru z internetu.- Pokud chcete mailový server na ověřování účtů, reset hesla nebo pro jiné účely, je potřeba upravit
EmailConfigs informacemi o vašem SMTP serveru a přihlašovacími údaji.
{
"AllowedHosts": "*",
"ConnectionStrings": {
"Database": "Host=db:5432;Database=gzctf;Username=postgres;Password=TBD"
},
"EmailConfig": {
"SenderAddress": "",
"SenderName": "",
"UserName": "",
"Password": "",
"Smtp": {
"Host": "localhost",
"Port": 587
}
},
"XorKey": "TBD",
"ContainerProvider": {
"Type": "Docker",
"PortMappingType": "Default",
"EnableTrafficCapture": false,
"PublicEntry": "TBD",
"DockerConfig": {
"Uri": "unix:///var/run/docker.sock"
}
},
"CaptchaConfig": {
"Provider": "None",
"SiteKey": "",
"SecretKey": ""
},
"ForwardedOptions": {
"ForwardedHeaders": 7,
"ForwardLimit": 1,
"KnownIPNetworks": ["192.168.12.0/24"]
}
}
Spuštění serveru
- Po úpravě konfigurace můžete spustit server pomocí následujícího příkazu v terminálu:
docker-compose up -d
- Tento příkaz spustí GZ::CTF server a databázi v oddělených kontejnerech. Server bude přístupný na adrese
http://localhost(nebo na adrese, kterou jste nastavili vPublicEntry). - Pro přístup do administrátorského rozhraní použijte následující přihlašovací údaje:
- Uživatelské jméno:
admin - Heslo: Hodnota, kterou jste nastavili v
GZCTF_ADMIN_PASSWORDv docker-compose.yaml.
- Uživatelské jméno:
- Po přihlášení do administrátorského rozhraní můžete začít přidávat služby, týmy a další konfigurace pro vaši CTF soutěž.
- Případně můžete importovat i celou CTF hru odsud.