Intro


This is my homelab side project that I’ve been working on for the past 3 years. It went through being just an old laptop with a virtualized network to a small server rack that has been helping me put my skills into practice in a small, scalable environment.

Architecture


I put emphasis on secure-by-design architecture, making the network segmented through VLANs to prevent inter-domain ARP spoofing, forcing all inter-domain communications to come through the firewall instead. The network features centralized authentication at multiple points, including 802.1X RADIUS authentication for wireless and VPN clients using Active Directory Domain Controller as an Identity Provider, hardened per CIS guidelines. The network has two Certificate Authorities - one air-gapped and being the root CA for local domain and an intermediate CA on the Domain Controller to issue certificates to Windows hosts and secure RDP connections. All data is encrypted at rest and in transit at all points of the network flow.

The network features a micro-scale SOC solution built on top of Stamus Networks Clear NDR (Formerly SELKS) based on ELK Stack and Suricata, which analyzes all intra- and inter-domain traffic through a SPAN port on the upstream switch for full network visibility and logging of all packets for further analysis and threat hunting activities. All hosts on the network have appropriate audit information collected and shipped to Elasticsearch for enrichment and logging purposes. This had been set up so that I could practice scalable on-prem SOC deployment, connecting the endpoints as well as configuring them for proper telemetry logging, and threat hunting and analysis activities on the deployed solution. This also provides me with holistic visibility of the whole network and helps with troubleshooting and security assessments. This was originally built on a manual ELK Stack deployment with Suricata, Beats and syslog collectors, but has been since rebuilt using Clear NDR as a more streamlined solution.

The inter-domain and VPN traffic is routed through pfSense firewall with a tight least-privilege ACL ruleset. Whenever possible, I’ve avoided using Docker for architecture and software stack deployments and opted for manual configuration instead so that I could learn more.

The network is segmented into the following VLANs:

Management


I prefer to use SSH for most tasks (I tended to use RDP with the DC, but since I’ve set up Powershell Core over SSH, this has become redundant), but for physical host reboots (all drives are LUKS-encrypted), firmware changes and network connectivity troubleshooting I have a 4-host KVM with keyboard and mouse, and a small display at hand with all cabling coupled in a tunnel next to the rack. The rack has air cooling connected to a 12V thermostat. The Cisco switches utilised are 2960-X 48-port PoE+ models with 10G SFP ports and had horrendously loud cooling, so I replaced it with small quiet Noctua fans i wired myself that are placed in 3D-printed cases.