About
By day I work as a cybersecurity professional in Identity and Access Management (IAM), focusing on the controls that decide who can access what, and why. Away from the day job I run a small, self-hosted ecosystem providing services to friends and family, built to the standards I'd expect at work, at a scale where I own every layer myself.
This isn't just a portfolio piece or a set of credentials; it's a production environment that real people depend on. Alongside it I keep a lab, a place to experiment with enterprise patterns at a small scale and test ideas and product features. This is how I stay hands-on and keep my knowledge up-to-date in a way that only reading about them doesn't. This site is where I share the parts worth sharing.
My Ecosystem
Overview
The LandisFam ecosystem runs on a popular cloud provider, where I self-host applications and services for friends and family. These include a password manager, file sync and sharing, a discussion forum, a documentation wiki, and a few Python Flask applications I wrote myself to support household management and tabletop gaming.
Behind those sits a security-focused back-end stack: a Web Application Firewall, an internal Certificate Authority, an Identity Provider with Single Sign-On configured across all my services, a lightweight SIEM-style service I built to centralize logs and automate analysis and alerting, and a secrets vault that stores API keys and handles dynamic credential rotation.
The intent is to apply what I've learned across my cybersecurity career, using leading practices to secure the environment and provide a high level of privacy for myself and the people who depend on it.
Architecture
Security and Privacy Principles
The LandisFam ecosystem is built on four principles. Expand any one for detail.
The infrastructure implements a defense-in-depth strategy designed so that no single control is solely responsible for protecting any critical asset. Each layer provides an independent security boundary that reduces the impact of misconfigurations, software vulnerabilities, or credential compromise, so that in the event one control fails multiple safeguards remain in place to protect confidentiality, integrity, and availability.
Key layers include:
Network Layer
- Segmented public, service-plane, and control-plane networks
- A web application firewall providing incoming traffic inspection
- Cloud firewall policies applied at the perimeter
- Host-level firewalls defining east–west communication boundaries
- SSH ingress is allowed only within the private network
Identity & Access Layer
- Centralized authentication through the identity provider
- MFA enforced for administrative access
- Limited number of privileged accounts; admin and service accounts are vaulted
Application Layer
- Each service runs on dedicated hosts or isolated containers
- Reverse proxies enforce TLS, origin checking, and client validation
- Mutual TLS established between internal components
Data Layer
- Encrypted transmission (HTTPS, mTLS, key-based SSH)
- Encryption at rest and in transit
- Encrypted object-storage backups, with an encrypted offline copy kept outside the environment
The infrastructure follows a Zero Trust architecture model appropriate for a small, highly controlled environment. Zero Trust minimizes implicit trust between components and mitigates the risk of compromise of one host from cascading to the rest of the environment.
Zero Trust is implemented with the following principles:
Never Trust, Always Verify
- No internal traffic is implicitly trusted, even when originating from known hosts
- All authentication flows (user and service) require validation at each request
- Internal services are reachable only behind the web application firewall unless explicitly intended for public access
Service Isolation
- Workloads reside on separate hosts with restricted east–west access
- Application-to-application communication is permitted only through explicit firewall rules
- Critical services like the identity provider, password manager, and file storage are placed on their own servers and protected with stricter access controls than non-critical systems, and separated from user-facing application workloads
Verification Before Access
- TLS termination and certificate validation performed at the web application firewall
- Mutual TLS required for trusted internal connections
- SSH access is key-based and allowed only through the private network via the control-plane jump host
- VPN access to the private network requires a valid key pair from a device preconfigured as an authorized peer
Contextual Risk-Based Decisions
- Web application firewall anomaly detection and learning-mode tuning continuously reassess suspicious patterns and blocks potential threats automatically
- Brute-force protection guards authentication attempts on every host
- Alerts are configured based on automated log examination to provide oversight
The least privilege principle is applied so that accounts, services, and systems have only the access necessary to perform their required functions and nothing more. Least privilege reduces the attack surface and risk of privilege escalation.
Least Privilege is applied to the following access types:
User Access
- Administrative access restricted to specific authorized administrators who have been granted a VPN peer key and restricted sudo access on the hosts
- No shared admin credentials
- Application-specific permissions are defined individually and minimally scoped
Host Access
- Root login disabled over SSH
- SSH key authentication required; no password logins permitted
- Each host’s firewall allows SSH only from the private network
Service Access
- Each containerized service operates with minimal privileges and isolated volumes
- Service accounts in the identity provider have scoped roles and minimum privileges to perform application logins or API actions
- Internally issued certificates follow strict usage (server auth or client auth)
- Dynamic, short-lived credentials issued from the secrets vault are preferred over long-lived static secrets where supported
All data in the ecosystem is encrypted both at rest and in transit. Only the minimum data required for a service to operate is stored, and no data is intentionally shared with any external party. Logs and backups receive the same protections as primary data.
Writeups
Two kinds of writing: deep dives into how something in the environment actually works, and perspectives, where the hands-on work turns into a point of view.
Single Sign-On for Small Ecosystems
One identity provider, every service, and the token-mapping details that don't show up in the setup guides.
Read Deep dive
WAF for Small Ecosystems
One hardened front door every request must cross and how to run it without a security team.
Read Deep dive
Mutual TLS with a private CA
Running an internal certificate authority to support mTLS and zero trust.
Read Deep dive
Homebrew SIEM
How to build meaningful security monitoring without a SIEM product, and how to reason about what to watch.
Read Perspective
Privacy and Security Runbook
A plain-English guide to basic device and personal information safety.
Read Perspective
Use it or Lose it - AI and the Atrophy of Skill
If we automate away the work that builds expertise, where does the next generation of experts come from?
Read