A self-built Zero Trust security homelab — segmentation, identity, detection, and response on a single workstation.
Project O.R.C.A. (Operational Response & Cyber Analytics) est un homelab de sécurité que je construis seul pour maîtriser de bout en bout une infrastructure d'entreprise sécurisée selon le modèle Zero Trust. L'idée n'est pas d'empiler des outils, mais de raisonner comme un administrateur cybersécurité : segmenter le réseau, centraliser l'identité, chiffrer les flux, détecter les menaces et savoir y répondre.
Tout tourne sur une seule station de travail virtualisée (KVM/libvirt), ce qui m'oblige à faire des choix d'architecture réalistes : quoi isoler, quoi superviser, comment arbitrer les ressources. Je documente ma démarche au fur et à mesure — c'est autant un projet technique qu'un journal d'apprentissage.
Ce que ce projet démontre :
- Conception d'une architecture réseau segmentée (VLANs, pare-feu Deny by Default)
- Gestion centralisée de l'identité (annuaire, RBAC, authentification forte)
- Inspection du trafic chiffré et posture Zero Trust (proxy, MITM contrôlé, PKI interne)
- Supervision et détection (métriques, SIEM, télémétrie endpoint)
- Infrastructure as Code (Terraform) et conteneurs rootless (Podman)
- Une boucle purple team : auditer sa propre infra, corriger, recommencer
Project O.R.C.A. (Operational Response & Cyber Analytics) is a security homelab I build on my own to learn how a secure enterprise infrastructure works end to end, following a Zero Trust model. The goal isn't to stack tools — it's to think like a security administrator: segment the network, centralize identity, encrypt traffic, detect threats, and know how to respond.
Everything runs on a single virtualized workstation (KVM/libvirt), which forces realistic architecture decisions: what to isolate, what to monitor, how to budget resources. I document the process as I go — it's as much a technical project as a learning log.
What this project demonstrates:
- Designing a segmented network (VLANs, Deny by Default firewall)
- Centralized identity management (directory, RBAC, strong auth)
- Encrypted-traffic inspection and Zero Trust posture (proxy, controlled MITM, internal PKI)
- Monitoring and detection (metrics, SIEM, endpoint telemetry)
- Infrastructure as Code (Terraform) and rootless containers (Podman)
- A purple team loop: audit my own infra, fix, repeat
flowchart TB
WAN([Internet]) --> FW[pfSense - Firewall / Router / IDS - Deny by Default]
FW --> V10[VLAN 10 - Management]
FW --> V20[VLAN 20 - Servers]
FW --> V30[VLAN 30 - Workstations]
FW --> V40[VLAN 40 - DMZ]
FW --> V50[VLAN 50 - Sensitive Data]
FW --> V99[VLAN 99 - Isolated]
V20 --> AD[Directory - Identity / RBAC / DNS]
V20 --> SOC[SOC - SIEM / Metrics]
V50 --> NAS[Storage - ZFS / Encrypted SMB]
V30 --> WS[Endpoints - Domain-joined]
FW -. TLS inspection .-> PROXY[Proxy - SSL Bump / Internal CA]
classDef fw fill:#cc0000,stroke:#fff,color:#fff
classDef core fill:#1a1a2e,stroke:#39FF14,color:#39FF14
class FW fw
class AD,SOC,NAS,WS,PROXY core
🇫🇷 Diagramme volontairement simplifié — l'adressage réel et la configuration détaillée restent privés (principe Zero Trust appliqué au dépôt lui-même). 🇺🇸 Intentionally simplified diagram — real addressing and detailed config stay private (Zero Trust applied to the repo itself).
| Domaine / Domain | Technologies |
|---|---|
| Hyperviseur / Hypervisor | KVM, libvirt, QEMU |
| Pare-feu / Firewall | pfSense (VLANs, IDS/IPS) |
| Identité / Identity | Directory services, Kerberos, RBAC, GPO |
| Stockage / Storage | ZFS, encrypted SMB |
| Zero Trust | Squid SSL Bump, internal PKI, forced proxy |
| Détection / Detection | SIEM, endpoint telemetry, metrics + dashboards |
| IaC | Terraform (local state) |
| Conteneurs / Containers | Podman (rootless, user namespaces) |
| OS | Linux (Fedora, RHEL-family), Windows Server, Windows 11 |
🇫🇷
- Deny by Default : aucun flux n'est autorisé sans règle explicite et journalisée.
- Segmentation stricte : 6 VLANs, dont un segment totalement isolé (air-gap).
- Inspection TLS maîtrisée : déchiffrement contrôlé via une PKI interne, documenté côté politique de sécurité.
- Moindre privilège : RBAC par groupes, conteneurs rootless, accès d'administration via bastion + double authentification.
- Aucun secret en clair : clés et identifiants hors du dépôt (coffre / variables d'environnement).
🇺🇸
- Deny by Default: no traffic allowed without an explicit, logged rule.
- Strict segmentation: 6 VLANs, including a fully isolated (air-gapped) segment.
- Controlled TLS inspection: managed decryption via an internal PKI, documented at the policy level.
- Least privilege: group-based RBAC, rootless containers, admin access through a bastion with MFA.
- No plaintext secrets: keys and credentials kept out of the repo (vault / environment variables).
🇫🇷 Projet construit par phases, mis à jour au fil de l'avancement. 🇺🇸 Built in phases, updated as it progresses.
| Phase | 🇫🇷 | 🇺🇸 | Status |
|---|---|---|---|
| 1 | Socle réseau (pare-feu, VLANs) | Network core (firewall, VLANs) | 🔜 |
| 2 | Identité centralisée | Centralized identity | 🔜 |
| 3 | Postes clients | Client endpoints | 🔜 |
| 4 | Stockage sécurisé | Secure storage | 🔜 |
| 5 | Zero Trust & inspection TLS | Zero Trust & TLS inspection | 🔜 |
| 6 | Supervision & détection | Monitoring & detection | 🔜 |
| 7 | Services & accès durci | Services & hardened access | 🔜 |
| 8 | Audit & boucle purple team | Audit & purple-team loop | 🔜 |
Project-ORCA/
├── README.md
├── docs/
│ └── architecture/ # schémas sanitisés / sanitized diagrams
├── infra/
│ ├── terraform/ # IaC (état local) / IaC (local state)
│ └── scripts/ # automatisation / automation
├── .gitignore
└── LICENSE
🇫🇷 Ce homelab est mon terrain d'expérimentation pour passer d'une logique « faire marcher » à une logique « faire marcher de façon sûre, supervisée et reproductible ». Chaque phase m'apprend autant sur l'outil que sur les arbitrages réels d'un environnement contraint.
🇺🇸 This homelab is where I move from "make it work" to "make it work securely, monitored, and reproducibly." Each phase teaches me as much about the trade-offs of a constrained environment as about the tools themselves.
🇫🇷 Projet personnel en développement actif — retours bienvenus. 🇺🇸 Personal project in active development — feedback welcome.