Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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_PASSWORD a POSTGRES_PASSWORD na 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 XorKey na silný náhodný řetězec, který bude použit pro šifrování a dešifrování dat.
  • PublicEntry je 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 EmailConfig s 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 v PublicEntry).
  • 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_PASSWORD v docker-compose.yaml.
  • 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.