Systeemvereisten
| Component | Minimaal | Aanbevolen |
|---|---|---|
| CPU | 4 cores | 8+ cores |
| RAM | 8 GB | 16 GB |
| Schijfruimte | 30 GB | 80 GB SSD |
| OS | Ubuntu 22.04 LTS / Debian 12 / RHEL 9 | |
| Docker Engine | 24.0+ met Docker Compose V2 | |
# Docker installeren op Ubuntu curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER newgrp docker # Versie controleren docker --version # Docker version 24.x.x of hoger docker compose version # Docker Compose version v2.x.x
Lokale installatie (intern netwerk)
Standaardinstallatie zonder publiek domein of HTTPS.
Repository klonen
git clone https://github.com/dvesters/pentest-portal.git /opt/pentest cd /opt/pentest mkdir -p results wordlists chmod 777 results # container heeft schrijfrechten nodig
Omgevingsvariabelen instellen
cp .env.example .env nano .env # wijzig minimaal alle wachtwoorden
Stack starten
# Eerste start duurt 5–15 minuten (image build)
make up
# Controleer of alle containers actief zijn
docker compose ps
# Test de API
curl http://localhost:8000/health
# Verwacht: {"status":"ok","version":"1.0.0"}
Installatie met Traefik (HTTPS)
Voor installaties met een publiek domein en automatische TLS via Let's Encrypt.
Vereist een actieve Traefik-instantie met het externe netwerk traefik-public.
De docker-compose.yml bevat al de juiste Traefik-labels. Vervang alle
voorkomens van het voorbeelddomein door uw eigen domein:
# Vervang het voorbeelddomein door uw eigen domein sed -i 's/pentest\.uw-domein\.nl/pentest.joudomein.nl/g' docker-compose.yml # Pas ook de n8n en BloodHound domeinen aan: sed -i 's/n8n\.uw-domein\.nl/n8n.joudomein.nl/g' docker-compose.yml sed -i 's/bloodhound\.uw-domein\.nl/bloodhound.joudomein.nl/g' docker-compose.yml
wss://-URL
als PORTAL_URL: wss://pentest.joudomein.nl
Omgevingsvariabelen
| Variabele | Beschrijving | Verplicht |
|---|---|---|
PENTEST_API_PORT | Luisterpoort voor de portal (standaard: 8000) | Nee |
N8N_PORT | n8n poort (standaard: 5678) | Nee |
N8N_USER | n8n admin-gebruikersnaam | Ja |
N8N_PASSWORD | n8n admin-wachtwoord | Ja |
N8N_ENCRYPTION_KEY | 32-tekens random sleutel voor n8n credentials | Ja |
BLOODHOUND_PORT | BloodHound CE poort (standaard: 8080) | Nee |
BLOODHOUND_INITIAL_PASSWORD | Initieel BloodHound admin-wachtwoord | Ja |
BLOODHOUND_URL | Interne URL voor automatische import (optioneel) | Nee |
BLOODHOUND_API_KEY | BloodHound API key voor automatische import (optioneel) | Nee |
N8N_WEBHOOK_BASE | Webhook-base URL voor n8n-notificaties (optioneel) | Nee |
.env vóór de eerste start.
Tip: openssl rand -base64 32 genereert een sterk wachtwoord.
BloodHound CE initialiseren
BloodHound CE vereist een eenmalige configuratiestap na de eerste start.
Eerste login
Open http://localhost:8080 en log in met admin /
de waarde van BLOODHOUND_INITIAL_PASSWORD. Stel een nieuw wachtwoord
in wanneer gevraagd.
API key genereren voor automatische import (optioneel)
# In BloodHound CE: # rechterbovenhoek → gebruikersnaam → API Keys → Generate API Key # Voeg toe aan docker-compose.yml onder pentest-api environment: # - BLOODHOUND_URL=http://bloodhound:8080 # - BLOODHOUND_API_KEY=<jouw-api-sleutel> # Herstart de portal: docker compose restart pentest-api
n8n Notificaties instellen
Importeer de meegeleverde workflows en activeer notificaties voor scan-events.
# Workflows importeren (n8n moet actief zijn) make import-workflows # Activeer n8n-webhook notificaties: # Voeg toe aan pentest-api environment in docker-compose.yml: # - N8N_WEBHOOK_BASE=http://n8n:5678/webhook/pentest docker compose restart pentest-api
Open n8n op http://localhost:5678 en configureer de notificatiekanalen
(Slack, Teams, e-mail of elk ander kanaal dat n8n ondersteunt) in de geïmporteerde workflows.
Wordlists toevoegen
Hash-cracking (Kerberoasting, AS-REP Roasting, NTLMv2) vereist een wordlist in
./wordlists/. De hashcat-module verwacht standaard rockyou.txt.
# rockyou.txt downloaden (2,4 GB ongecomprimeerd) cd /opt/pentest/wordlists wget https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt # Of kopiëren vanuit een bestaande Kali-installatie: cp /usr/share/wordlists/rockyou.txt wordlists/
Veiligheidsoverwegingen
- Stel sterke, unieke wachtwoorden in voor alle services in
.env - Beperk netwerktoegang tot de portal-poorten via firewall
- De container draait met
NET_ADMINenNET_RAWcapabilities (vereist voor packet-capture tools) - Scan-resultaten inclusief gevonden hashes worden opgeslagen in
./results/pentest.db— beveilig deze map:chmod 700 results/ - Agent-tokens geven volledige scan-uitvoeringsrechten — verwijder agents die niet meer in gebruik zijn
Backup & Restore
# Stop de stack voor consistente backup make down # Backup resultaten en BloodHound-data tar -czf backup-$(date +%Y%m%d).tar.gz results/ bloodhound/pg_data/ # n8n data (Docker volume) docker run --rm -v pentest_n8n_data:/data -v $(pwd):/backup \ alpine tar czf /backup/n8n-$(date +%Y%m%d).tar.gz /data make up
# Restore make down tar -xzf backup-20260101.tar.gz make up