← projects

// project · Transport · Network · Application · in progress

The NetState Lab Network

Services on the internet get scanned all day. I once took my own remote access off the internet and hid it behind a port knock. This lab rebuilds that design, puts it next to what replaced it, and lets the captures show the difference.

What this is

A complete little network you run on your own PC: a firewall between a LAN and a DMZ, two client machines and a server, all in Docker. You build it, attack it, fix it, and measure it, with one firewall at the centre of everything.

It’s built for two readers. An employer can see how I design, secure and explain a network, end to end. Anyone learning can run the very same lab and follow along, because it’s all here: the machines, the firewall rules, the written guide, and the commands to copy.

   LAN 10.10.10.0/24                                  DMZ 10.10.20.0/24

   client-a  .11   authorized user  ──┐          ┌──  server  .10
                                      ├── fw ────┤    web · ssh
   client-b  .12   outsider        ──┘  .1   .1  └──  telnet · rdp

   Every packet between the LAN and the DMZ crosses fw. Nothing reaches the internet.

Everything that crosses the firewall is logged and captured, so every lesson ends in the packets, not in a claim.

What to expect

The lab is built in five phases. Each one takes a single real problem, shows it on the wire, then changes something and shows the result the same way. A phase is a set of short pages: what to do, the exact commands to copy, what you should see, and what it means.

You need a Windows 10 or 11 PC with Docker Desktop and 8 GB of memory. No networking gear, no cloud account. One command brings the whole lab up, and Phase 1, step 0 sets up Docker from scratch.

One honest note up front: the port knock built in Phase 2 is one layer on a deny-all firewall, not a lock on its own. The lab shows plainly where it falls short and what replaced it. Nothing here is presented as more than it is.

Open a phase below to see its steps, or start at Phase 1.

The phases

Phase 1: firewall and protocols on the wire guide ready: 11 steps · view steps →

Stand the network up and watch it in the open: read logins off the wire, lock the firewall down rule by rule, then find the one way around it.

Phase 2: Legacy Port Knocking Test in progress: steps 0 to 8 · view steps →

Hide SSH and RDP behind a port knock so they vanish from the network, send the secret to open them, then see why a knock anyone can copy eventually breaks.

Phase 3: fix the leaks guide ready: 8 steps · view steps →

Close every weakness from Phase 1 by hand: drop Telnet, move the web login to HTTPS, switch SSH to keys, then prove each leak is shut.

Phase 4: modern remote access guide ready: 5 steps · view steps →

Put the knock next to Single Packet Authorization under the same replay test, and watch the modern one hold where the knock gave way. WireGuard is covered as a read.

Phase 5: traffic shaping guide ready: 4 steps · view steps →

Shape the link on the firewall and measure what the clients feel: cap the bandwidth, add delay and jitter, then drop packets on purpose.

The pieces

Each project is laid out in the same order: the problem that started it, the documents that plan it, what was built, and the proof that it works. Open any card to read it.

story · 1 · diagnose Hiding my services behind a port knock planned How I took RDP and SSH off the internet and hid them behind a knock of invalid TCP flags, and used it as my real remote access. read → document · 2 · document & propose The NetState Lab Network: design and runbook planned The lab's topology, firewall policy, knock design and how to run every exercise, with the elevated permissions it needs and why. read → container · 3 · build The NetState Lab Network (Docker Compose) planned The whole lab in one Compose file: the network (a firewall, two clients and a server) by default, and the AI agents from agent-lab and agent-workflow when you ask for them. read → script · 3 · build: exercises The NetState Lab Network: routing check Five pass/fail checks that prove traffic between the LAN and the DMZ crosses the firewall, and only the firewall. read →
evidence · 4 · verify Phase 1 results: the open network not captured yet Which logins can be read off the wire, and what changes when the firewall locks down.
evidence · 4 · verify Phase 2 results: the legacy port knock not captured yet The knock working, then broken by a replayed capture.
evidence · 4 · verify Phase 3 results: fixing the leaks not captured yet The Phase 1 attacks, rerun and failing.
evidence · 4 · verify Phase 4 results: modern remote access not captured yet The legacy port knock and Single Packet Authorization under the same replay test; WireGuard described.
evidence · 4 · verify Phase 5 results: traffic shaping not captured yet Before and after measurements from the clients.

How it connects

The projects build on each other, in order. Each one starts from what the one before it produced.

Download Resume Email me