Skip to content

Lab Architecture


Executive Summary

I built this lab architecture with VMware Workstation, a pfSense firewall VM, and a small number of virtual machines.

My goal was to create a practical environment that is segmented, repeatable, and realistic enough for hands-on cybersecurity practice without becoming too complex to maintain.

Lab Objective

I wanted the architecture to support:

  • Safe attack simulation.
  • Windows endpoint investigation.
  • Network traffic analysis.
  • Web application testing.
  • Password security practice.
  • Firewall rule testing.
  • Evidence collection and documentation.

Physical Setup

I kept the physical setup simple.

Component How I Use It
Laptop 1 Main lab host running VMware Workstation and the core VMs
Laptop 2 Secondary device for notes, research, screenshots, and management access
VMware Workstation Virtualization platform for the lab
pfSense VM Virtual firewall and router
Home network Provides internet access when I allow it

High-Level Design

The lab sits behind a pfSense VM.

Home Network / Internet
        |
   VMware NAT / Bridged
        |
    pfSense VM
        |
        +-- Attack Network
        |     +-- Kali VM
        |
        +-- Lab LAN
        |     +-- Windows Client VM
        |     +-- Linux Server VM
        |     +-- Web App VM
        |
        +-- Logging Network
              +-- Analysis / Logging VM

Why I Chose This Design

I originally considered a larger design with more networks, but I simplified it to make the lab easier to build and troubleshoot.

This three-network layout gives me the separation I need:

Network Why I Use It
Attack Network Keeps Kali and testing activity separated from the targets
Lab LAN Holds the systems I investigate or test against
Logging Network Gives me a dedicated place for analysis, captures, and logs

This design is small enough to run at home but still lets me practice realistic segmentation and firewalling.

Network Plan

Network Subnet Purpose
Attack Network 10.10.20.0/24 Kali and controlled testing tools
Lab LAN 10.10.30.0/24 Windows, Linux, and web target systems
Logging Network 10.10.50.0/24 Analysis tools, logs, and packet captures

pfSense VM

I run pfSense as a virtual machine inside VMware Workstation.

pfSense acts as the central router and firewall for the lab. All traffic between the lab networks has to pass through pfSense, which gives me a practical place to control and observe traffic.

pfSense Interface Plan

pfSense Interface Connected To Example IP
WAN VMware NAT or Bridged DHCP from VMware or home router
LAN Attack Network 10.10.20.1/24
OPT1 Lab LAN 10.10.30.1/24
OPT2 Logging Network 10.10.50.1/24

For the first version of the lab, I prefer using VMware NAT for the WAN side because it is simpler and safer than exposing pfSense directly to the home network.

VMware Network Mapping

I map each internal lab network to a separate VMware virtual network.

VMware Network Connected Systems
VMnet20 pfSense LAN and Kali VM
VMnet30 pfSense OPT1, Windows Client, Linux Server, Web App VM
VMnet50 pfSense OPT2 and Analysis / Logging VM

This makes the network boundaries clear and easy to reason about.

Virtual Machine Placement

VM Network Example IP
Kali VM Attack Network 10.10.20.10
Windows Client VM Lab LAN 10.10.30.10
Linux Server VM Lab LAN 10.10.30.20
Web App VM Lab LAN 10.10.30.30
Analysis / Logging VM Logging Network 10.10.50.10

Hostname Plan

I use simple hostnames so the lab is easier to document.

Hostname System
kali.lab.local Kali VM
win-client.lab.local Windows Client VM
linux-server.lab.local Linux Server VM
webapp.lab.local Web App VM
analysis.lab.local Analysis / Logging VM
pfsense.lab.local pfSense VM

DHCP and DNS

I use pfSense for DHCP and DNS inside the lab.

This lets me centrally manage addressing and name resolution for the lab networks.

Network DHCP Range
Attack Network 10.10.20.100 - 10.10.20.199
Lab LAN 10.10.30.100 - 10.10.30.199
Logging Network 10.10.50.100 - 10.10.50.199

For important systems, I use either static IPs or static DHCP mappings so the addresses stay consistent across lab sessions.

Firewall Approach

I use pfSense firewall rules to make traffic intentional.

My approach is:

  • Allow Kali to reach lab targets only when I am testing.
  • Allow Lab LAN systems to send logs or traffic to the Logging Network.
  • Allow the Analysis VM to reach selected lab systems for investigation.
  • Block lab systems from reaching personal home devices.
  • Allow internet access only when needed for updates or tool installation.

Initial Firewall Policy

Source Destination Action Why
Attack Network Lab LAN Allow limited Controlled testing
Lab LAN Logging Network Allow Log forwarding and analysis
Logging Network Lab LAN Allow limited Investigation and management
Lab Networks Internet Allow optional Updates only
Lab Networks Home LAN Block Protect personal devices
Unknown traffic Any Block Default deny mindset

Logging and Visibility

I designed the lab so I can observe activity from both the endpoint and the network.

Source What I Can Review
pfSense firewall logs Allowed and blocked connections
pfSense DNS logs Name resolution activity
Windows Event Logs Authentication, services, PowerShell, scheduled tasks
Linux logs SSH, sudo, service, and system activity
Web server logs Requests, paths, status codes, and User-Agents
Packet captures Full traffic for selected tests

Traffic Capture Points

I can capture traffic from several locations depending on the scenario.

Capture Point Why I Use It
Kali VM To see traffic generated by the testing system
pfSense interface To observe traffic crossing network boundaries
Windows Client VM To capture endpoint-specific traffic
Linux or Web App VM To capture service-side activity
Analysis VM To store and review packet captures

VM Resource Plan

I kept the VM sizes practical so the lab can run on a normal laptop.

VM CPU RAM Disk
pfSense 1-2 cores 1-2 GB 20 GB
Kali 2 cores 4 GB 40-80 GB
Windows Client 2 cores 4-6 GB 60-100 GB
Linux Server 1-2 cores 2 GB 20-40 GB
Web App VM 1-2 cores 2-4 GB 20-40 GB
Analysis VM 2 cores 4-8 GB 60-100 GB

Snapshot Strategy

I use snapshots to make the lab repeatable.

Snapshot When I Take It
Clean Install After installing the operating system
Tools Installed After updates and tool setup
Baseline State Before simulating activity
Pre-Investigation Before collecting evidence
Post-Lab After completing a scenario

Snapshots let me repeat the same scenario, reset broken systems, and compare before-and-after behavior.

Build Process

I built the lab in this order:

Step Action
1 Installed VMware Workstation
2 Created the VMware virtual networks
3 Deployed the pfSense VM
4 Added WAN, LAN, OPT1, and OPT2 adapters to pfSense
5 Configured pfSense interfaces
6 Enabled DHCP and DNS for the lab networks
7 Created initial firewall rules
8 Deployed Kali
9 Deployed the Windows Client
10 Deployed Linux and web target systems
11 Deployed the Analysis / Logging VM
12 Took baseline snapshots
13 Validated routing and firewall behavior

Validation

Before running lab scenarios, I validated that:

  • pfSense WAN had internet access.
  • pfSense internal interfaces had the correct IP addresses.
  • Kali received an Attack Network address.
  • Windows received a Lab LAN address.
  • The Analysis VM received a Logging Network address.
  • Kali could reach permitted lab targets.
  • Lab systems could not reach personal home devices.
  • DNS worked where intended.
  • pfSense firewall logs showed allowed and blocked traffic.
  • Snapshots existed for the main VMs.

Skills Demonstrated

This architecture demonstrates:

  • VMware virtual networking.
  • pfSense firewall deployment.
  • Network segmentation.
  • DHCP and DNS configuration.
  • Firewall rule planning.
  • Safe lab isolation.
  • Traffic visibility planning.
  • Practical home lab design.