~/Rev_
← projects

#CyberDen

Segmented enterprise-style cyber range: pfSense edge, VyOS core, 3 Proxmox nodes, SOC/CTI, DevSecOps, vulnerable apps, GPU AI node.

2025-08-24 → 2026-09-18

A segmented, enterprise-style cyber range that one engineer can build, attack, observe, break and rebuild.

CyberDen started in August 2025 as one mini PC running pfSense and a victim VM. Today it's three Proxmox nodes behind a pfSense edge and a VyOS core router, carved into trust zones the way a real enterprise would be: management, SOC, directory services, DevSecOps, vulnerable applications, AI, storage, and attacker infrastructure.

Its design rule: compromise in one domain must not imply compromise of every other domain.

What it's for

CyberDen is where claims on this site become checkable. It's used for:

  • Offensive security: attack paths, pivoting, AD attacks, vulnerable-app and CVE reproduction
  • Defensive engineering: SOC tooling, telemetry, detection validation, DFIR
  • Threat intelligence: MISP and OpenCTI fed with real feeds
  • Infrastructure and networking: routing, VLANs, firewalling, DNS, storage, observability
  • DevSecOps and product security: k3s, CI/CD, security gates
  • AI infrastructure and AI security: a GPU inference node and agent/MCP experiments

Hardware

NodeHardwareRole
T320Dell PowerEdge T320 · Xeon E5-2470 v2 (10c/20t) · 96 GB ECC DDR3 · 2 TB SSD + 240/120 GB SSDs on PERC · 8 TB WD Red · GTX 1070 8 GBCore server: heavy VMs, storage, SOC/CTI, k3s, AI
pve1GMKtec M5 Plus · Ryzen 7 5825U · 32 GB · 1 TB NVMe · dual 2.5 GbEInfrastructure and control: pfSense, VyOS, Pi-hole
pve2Beelink · Ryzen 5 5500U · 32 GB · 500 GB NVMeVictims and intentionally insecure systems, kept away from core services
CTI boxDell OptiPlexMISP
NASi3-4170 custom build · TrueNASLog and evidence retention (intermittent)
SwitchZyxel GS1200-8HP managed PoE+802.1Q trunks to every node
Admin workstationASUS ROG Zephyrus G15 · Ryzen 9 · RTX 3070 · 40 GB · FedoraAdmin, attack platform, local AI
Remote consoleThinkPad L14 · FedoraPortable admin console

Network fabric

Internet ── pfSense (edge firewall, NAT, north–south policy)
               │  transit /30
            VyOS (core router, inter-segment routing, east–west policy)
               │  802.1Q trunk
        Managed switch ── VLAN-aware Proxmox bridges ── workloads
  • pfSense owns the edge: WAN, NAT, outbound policy.
  • VyOS owns everything inside: one trunked interface with a sub-interface per segment (router-on-a-stick).
  • Proxmox hosts stay on management. VMs get tagged virtual NICs, so the hypervisor never joins a workload segment.
  • The admin workstation routes the lab via VyOS, so management traffic never hairpins through the edge firewall. That fix is documented in the W01–W03 series.

Read more: W01–W03 Hunting the 60-second SSH drop · W04 Locked out of my own lab · W05 VyOS answered everyone except me

Segments

Segments are grouped the way an enterprise groups them, not by "lab number":

Infrastructure: management · transit · DNS · storage · monitoring/observability
Defense: SOC · threat intelligence · DFIR
Identity: Active Directory / corporate · IAM
Engineering: DevSecOps / Kubernetes · product security · dev
Offense: attacker infrastructure · vulnerable apps · victim systems
Research verticals (planned): AI/ML · cloud · ICS/SCADA · telecom · automotive · medical · finance

Red-team segments deliberately keep flexible DNS and egress so rogue-DNS, DoH and tunneling tests stay possible. Infrastructure segments are locked down.

Read more: D02 Designing a 30-segment range on two mini PCs

SOC & threat intelligence

  • Security Onion for network security monitoring, sized to fit alongside everything else on a mini-PC node, later rebalanced
  • MISP on a dedicated box with curated feeds
  • OpenCTI in a container host on the T320
  • Designed next: TheHive + Cortex, and Timesketch/Plaso for DFIR

Read more: W15 Placing Security Onion in a small lab · W09 OpenCTI restart loop

DNS

Pi-hole is the single DNS authority for infrastructure: pfSense, both hypervisors, and the server VMs resolve through it. Offensive segments are exempt by design.

Read more: W06 One DNS authority for a segmented lab

Storage & logging

  • ZFS pool tank on the T320 for datasets: backups, exports, logs, MISP data, packet captures
  • TrueNAS on the NAS PC for retention
  • Design rule: ingest nodes may write to storage, never read or control it
  • Planned pipeline: rsyslog/journald → Fluent Bit → TrueNAS, with lifecycle cleanup so test-scoped logs don't live forever

Read more: D01 A log-offload pipeline for a homelab · W12 T320 storage notes

DevSecOps

devops-k3s-01: a single-node k3s cluster with Traefik, local-path storage, Helm, Gitea (PostgreSQL + Valkey) and Jenkins, with Jenkins state persisted on the T320's ZFS pool.
Next: Harbor + Trivy, then one end-to-end pipeline with security gates (SAST/SCA/container scan) from commit to deploy.

Read more: W07 Jenkins on k3s that survives a reboot

Vulnerable-app lab

  • VulnHub VMs (OVA/VMDK) imported onto the victim node
  • **vuln-apps-01**: a deliberately small Debian container host (2 GB / 40 GB to start) for Vulhub and VWAD targets
  • Every CVE becomes one writeup: reproduce → exploit/validate → detect → remediate

Read more: W11 Getting VulnHub OVAs into Proxmox

AI

  • **ai-core-01** on the T320: GTX 1070 passed through via VFIO, running local models
  • Workstation AI lab: RTX 3070, Docker on an external SSD, Ollama + Open WebUI. Tested Qwen3 8B and DeepSeek-R1 14B (~10 tok/s with partial CPU offload)
  • Next: a gateway (LiteLLM), RAG, MCP servers and agent frameworks, plus AI-security experiments against them

Read more: W08 GPU passthrough on a PowerEdge T320 · W17 Docker on an NTFS SSD with a GPU

How I run it

  1. Freeze the management plane. Never migrate management and workloads in the same change window.
  2. One truth per layer. Switch, hypervisor, router and firewall must agree on what each segment is.
  3. Test the hypothesis before buying hardware.
  4. Prove it with packets. tcpdump and traceroute beat guessing.
  5. Not everything runs 24/7. The lab is interconnected like a real datacenter, so it gets powered up by role.
  6. Write it down. If it isn't documented, it didn't happen.
Entries44
Lanes fed6
Writeups20

Skills it built

Networks & distributed Computer Science
17 · 0m
Linux & systems Computer Science
10 · 0m
Research & tooling Security Engineering
7 · 0m
Hardware & circuits Beyond Computer Science
5 · 0m
Offensive Security Engineering
4 · 0m
AI / ML engineering Artificial Intelligence / Machine Learning
1 · 0m

Writeups

2026-09-13The Fix That Didn't Migrate: The SSH Drops Came Back After Windows → FedoraEight months after W03, sessions to every routed segment started dying again. The fix was the same one-line route. It had lived only on the old Windows install and never made the move to Fedora.2026-08-30Importing VulnHub OVAs and VMDKs into ProxmoxThe import workflow for pre-built vulnerable machines: extract, import the disk, match the virtual hardware to the guest's era, isolate on the attack segment.2026-08-10Jenkins on k3s With Persistent StateHelm said deployed, the pod said Init:CrashLoopBackOff. Reading the init container's logs found a volume-ownership issue; Jenkins now survives reboots.2026-08-02PowerEdge T320 Storage: PERC-Backed Bays and SMART TriageWhy AHCI doesn't expose the T320's front bays, how CyberDen's storage is laid out, and a checklist for triaging a SMART alert on a hypervisor SSD.2026-05-03GTX 1070 Passthrough on a PowerEdge T320: A GPU Node for Local AIChoosing a card a tower server can power, validating it on the host, then binding it to VFIO and handing it to a dedicated inference VM.2026-04-28NO-CARRIER on a Good Cable: Fixing Link AutonegotiationReading interface flags before touching config: a NIC and switch that couldn't agree on speed, and the ethtool fix.2026-03-14Design: A Homelab Log-Offload Pipeline With Write-Never-Read StorageFluent Bit to TrueNAS with per-source datasets and retention, enforced so a compromised VM can add logs but never erase them.2026-03-02One DNS Authority for a Segmented Lab, With Room Left for Red-Team TestingPi-hole as the resolver for every infrastructure segment, rolled out top-down, with three gotchas solved and offensive segments deliberately exempt.2026-02-03OpenCTI Restart Loop: The Admin Token Must Be a UUIDA fresh Docker Compose deploy that kept restarting, solved by one log line and a uuidgen.2026-01-20"This Switch Only Does 8 VLANs": The Myth That Cost Me a NetgearA UI limit mistaken for a forwarding limit, a switch bought and returned within a week, and why measuring beats buying.2026-01-18The 60-Second SSH Drop, Part 3: Asymmetric Routing Through a Stateful FirewallRoot cause: pfSense saw only half of every management session. One route on the admin workstation fixed it at Layer 3, and the bastion VLAN came out.2026-01-18Design: Routed Management vs a Bastion HostWhy routed management through the core router beat a dedicated bastion VLAN in a single-admin lab, and when a bastion comes back.2026-01-15The 60-Second SSH Drop, Part 2: Ruling Out the Client, the Native VLAN and the SwitchA test matrix that eliminated three SSH clients, keepalives, native-VLAN leakage, a bastion VLAN and two switch vendors, and pointed at the one path that never dropped.2026-01-12Running Security Onion in a Small LabSizing a full NSM stack on a 32 GB mini PC, the installer gotchas, and why placing it in the right segment fixed reachability.2026-01-06ARP Flux on a Dual-NIC VyOS VM: Diagnosis and FixThe core router was healthy but unreachable on management. The cause was a second virtual NIC on another bridge; one NIC, one bridge fixed it.2025-12-12Management-Plane Migrations: Why Mine Failed and the Change Rules I Use NowA VLAN migration that cut every console at once, why a factory reset was the right recovery, and the five change rules that came out of the rebuild.2025-11-30The 60-Second SSH Drop, Part 1: An Unmanaged Switch Bridging Two NetworksDead VLANs and sub-minute SSH sessions traced with one tcpdump to a home network leaking into the lab, fixed by isolating the lab and moving to a managed switch.2025-11-28Design: A 30-Segment Enterprise-Style Range on Two Mini PCsGrouping ~30 segments into enterprise trust zones, a readable addressing scheme, and the rules that keep hypervisors out of workload segments.2025-11-20A Reusable 5-Node CCNA Topology in EVE-NGOne small topology covering VLANs, trunks, router-on-a-stick, static routing, NAT and management, the same pattern CyberDen runs for real.2025-11-19Recovering EVE-NG: Diagnose the Stack Before Repairing ItFrom 403 to 502 to a missing PHP-FPM socket, and the discovery that EVE-NG runs on Apache, which made a clean reinstall the right fix.

Timeline

2026-09-18Offensive
vuln-apps-01 ready for Vulhub / VWAD containers
2026-09-13Networks & distributed
Root cause re-found: the W03 route never migrated. Restored as a persistent NetworkManager route
notes
Writeups: W19, W03
2026-09-11Linux & systems
Lab SSH moved to Tabby; keepalives tuned
2026-09-06Networks & distributed
SSH drops back after the Windows → Fedora move; asymmetric path spotted and set aside
notes
Writeup: W19
2026-08-29Offensive
VulnHub VMs set up on pve2; attack VMs moved to bridged lab networking
2026-08-09Linux & systems
Jenkins on k3s healthy, with state persisted on the T320's ZFS pool
notes
Writeup: W07
2026-08-08Linux & systems
Gitea + PostgreSQL + Valkey deployed on k3s with persistent volumes
2026-08-02Linux & systems
devops-k3s-01 stood up: single-node k3s with Traefik and local-path storage
2026-08-02Hardware & circuits
Triaged a SMART ATA-error alert on the T320's 240 GB SSD
notes
Writeup: W12
2026-05-03AI / ML engineering
GPU passed through to ai-core-01; first local models on the GPU#AI Lab
notes
Writeup: W08
2026-04-29Hardware & circuits
GTX 1070 installed in the T320 and bound to vfio-pci#AI Lab
notes
Writeup: W08
2026-04-28Networks & distributed
ThinkPad wired into the lab; NO-CARRIER fixed by forcing the link speed
notes
Writeup: W10
2026-04-24Linux & systems
CTI moved to a container host on the T320 (ctr-cti-01)
2026-04-12Hardware & circuits
T320 upgraded to a 10-core / 20-thread Xeon E5-2470 v2
2026-04-10Linux & systems
Pi-hole rebuilt on the T320 during the VM migration
2026-04-05Hardware & circuits
Dell PowerEdge T320 joined CyberDen as a Proxmox node (named T320)
2026-03-23Hardware & circuits
NAS PC drives SMART-tested and put into service
2026-03-14Linux & systems
Log-offload pipeline to TrueNAS designed (Fluent Bit, write-never-read storage)
notes
Writeup: D01
2026-03-02Networks & distributed
Pi-hole became the DNS authority for the infrastructure VLANs
notes
Writeup: W06
2026-02-03Research & tooling
OpenCTI running after fixing the admin-token UUID
notes
Writeup: W09
2026-01-31Research & tooling
MISP threat-intel feeds enabled
2026-01-25Offensive
VulnHub OVA/VMDK images imported onto the victim node
notes
Writeup: W11
2026-01-18Research & tooling
MISP rebuilt on Debian on the dedicated CTI box
2026-01-18Networks & distributed
Solved the 30–60 s SSH/RDP drops (asymmetric routing through pfSense); removed the bastion VLAN
notes
Writeups: W03, D03
2026-01-15Networks & distributed
Tried a Netgear switch for the VLAN load, then rolled back to the Zyxel
notes
Writeup: W18
2026-01-12Research & tooling
MISP VM built on its segment
2026-01-11Research & tooling
Security Onion placed in its SOC segment; resolver config cleaned up
notes
Writeup: W15
2026-01-05Networks & distributed
VyOS management reachability fixed by removing its extra NIC (ARP flux)
notes
Writeup: W05
2025-12-09Networks & distributed
Locked myself out mid-migration; factory reset and rebuilt with pfSense edge + VyOS core
notes
Writeup: W04
2025-12-04Networks & distributed
Domain controller and Security Onion moved onto their VLANs
2025-11-30Networks & distributed
Zyxel managed switch added; trunks and PVIDs configured
2025-11-28Networks & distributed
Root cause found: an unmanaged switch was bridging the home and lab networks
notes
Writeup: W01
2025-11-20Networks & distributed
Wrote the VLAN / subnet / OS-stack plan (~30 segments)
notes
Writeup: D02
2025-11-20Networks & distributed
Reusable 5-node CCNA topology built in EVE-NG
notes
Writeup: L04
2025-11-19Networks & distributed
EVE-NG recovered: I was fixing the wrong web server, then did a clean reinstall
notes
Writeup: W16
2025-11-10Linux & systems
Windows Server 2019 domain controller built
2025-11-09Research & tooling
SIFT and REMnux analysis VMs imported
2025-11-08Offensive
Fixed ParrotOS stalling mid-scan; rebuilt BlackArch on top of Arch
2025-11-07Research & tooling
Security Onion installed on Proxmox and sized alongside the rest of the node
2025-11-04Networks & distributed
Cisco CML set up for network research
2025-09-12Networks & distributed
Admin workstation moved onto the lab network behind pfSense
2025-09-08Linux & systems
Added an Alpine victim VM to the lab
2025-08-28Linux & systems
RHEL VM on Proxmox for RHCSA practice on the lab network
2025-08-24Networks & distributed
Built the first lab: Proxmox on a dual-NIC mini PC, pfSense VM as the gateway, a lab switch