edris-hub/homelab-infrastructure

GitHub: edris-hub/homelab-infrastructure

Stars: 0 | Forks: 0

# Homelab — Zero Trust Enterprise Lab Personal infrastructure lab built on a single Debian 13 laptop using KVM/QEMU. Simulates a segmented enterprise network with OPNsense, Active Directory, SSO, monitoring, and automation. **Status: Active — Week 2/13** ## Architecture Overview [ Internet ] │ [ OPNsense ] (Firewall/Router) ┌────────┼────────┐ │ │ │ VLAN 10 VLAN 20 VLAN 30 MGMT CORP DMZ 192.168.10.0 192.168.20.0 192.168.30.0 /24 /24 /24 ## Physical Host | | | |---|---| | **Machine** | Laptop — Intel i7-12700H, 32GB RAM, RTX 3070 Ti | | **Hypervisor** | KVM/QEMU + virt-manager on Debian 13 (Trixie) | | **Virtual switch** | `vmbr0` — Linux bridge with 802.1Q VLAN filtering | ## 🖥️ VM Inventory | Hostname | VLAN | IP | Role | |---|---|---|---| | opnsense | WAN + trunk | 192.168.20.1 / .10.1 / .30.1 | Firewall / Router / DHCP | | win-srv-01 | CORP 20 | 192.168.20.10 | Active Directory / DNS / DHCP / GPO | | win-srv-02 | CORP 20 | 192.168.20.11 | File Server / Samba | | win-client-01 | CORP 20 | 192.168.20.12 | Windows 11 Workstation | | linux-client-01 | CORP 20 | 192.168.20.13 | Debian Workstation (Admin) | | linux-srv-01 | DMZ 30 | 192.168.30.10 | Nginx / Nextcloud / Keycloak SSO | | linux-srv-02 | MGMT 10 | 192.168.10.10 | Zabbix + Grafana / Wazuh | | linux-srv-03 | MGMT 10 | 192.168.10.11 | Ansible / GLPI / Bastion / rsyslog | ## 🔒 Firewall Policy — Default Deny Inter-VLAN traffic follows a Zero Trust default-deny model. No implicit trust between segments. ### CORP (VLAN 20) Rules | Source | Destination | Port | Action | Description | |---|---|---|---|---| | CORP | OPNsense | 53 | ✅ Allow | DNS | | Admin WS | OPNsense WebGUI | 443 | ✅ Allow | Admin access only | | CORP | Internet | 80/443 | ✅ Allow | Web browsing | | CORP | win-srv-01 | AD ports | ✅ Allow | AD/DNS | | CORP | win-srv-02 | SMB | ✅ Allow | File server | | CORP | DMZ web | 80/443 | ✅ Allow | Nextcloud/Keycloak | | Admin WS | Bastion | 22 | ✅ Allow | SSH to bastion only | | CORP | RFC1918 | * | ❌ Deny | Inter-VLAN block (logged) | ### DMZ (VLAN 30) Rules | Source | Destination | Port | Action | Description | |---|---|---|---|---| | DMZ | win-srv-01 | 389/636 | ✅ Allow | Keycloak → AD LDAP/LDAPS | | DMZ | Internet | 80/443 | ✅ Allow | Updates/packages | | DMZ | RFC1918 | * | ❌ Deny | No lateral movement (logged) | ### MGMT (VLAN 10) Rules | Source | Destination | Port | Action | Description | |---|---|---|---|---| | Bastion | All VLANs | 22 | ✅ Allow | SSH management plane | | MGMT | All VLANs | ICMP | ✅ Allow | Monitoring reachability | | Monitoring | All VLANs | SNMP | ✅ Allow | Zabbix polling | | MGMT | Internet | 80/443 | ✅ Allow | Updates/packages | | MGMT | * | * | ❌ Deny | Default deny | ## 🧱 Architecture Decisions ### Why Linux Bridges over isolated KVM networks? ### Why Default-Deny inter-VLAN policy? - Follows Zero Trust model — no implicit trust between segments - Matches enterprise DSI standards - Minimises lateral movement risk if a segment is compromised - Forces explicit documentation of every allowed traffic flow ## 📁 Repository Structure homelab-infrastructure/ ├── README.md ├── docs/ │ ├── architecture-choices.md │ └── ip-addressing-table.md └── screenshots/ ├── CORP-firewall-rules.png ├── DMZ-firewall-rules.png └── MGMT-firewall-rules.png ## 🛠️ Stack **Networking:** OPNsense · VLANs 802.1Q · Default-Deny · DMZ · Bastion Host **Identity:** Active Directory · Keycloak SSO · LDAPS · GPO **Monitoring:** Zabbix · Grafana · Wazuh · SNMP · rsyslog **Automation:** Ansible · PowerShell · Bash **Services:** Nextcloud · GLPI · Nginx · Samba ## 👤 Author **Edris Ahmad Dost** — Technicien Supérieur Systèmes et Réseaux 🌐 [protechcorp.net](https://protechcorp.net) · 💼 [LinkedIn](https://linkedin.com/in/edrisahmaddost)