ECE student at Vanderbilt University building production-grade security, networking, and local AI automation systems. I operate a segmented Proxmox homelab with GPU-hosted specialist models, a deterministic local voice pipeline, and a public AI-enriched threat intelligence feed publishing STIX 2.1/TAXII 2.1 indicators from live SSH honeypot attacks.
Electrical and Computer Engineering at Vanderbilt University, Class of 2027. I design, deploy, and operate production security infrastructure that processes live internet threats around the clock.
Seeking internships in security engineering, infrastructure, and networking. Currently studying for CompTIA Network+, CCNA, and Security+.
A two-node Proxmox lab running core security, network, storage, and local AI services with SR-IOV networking, native IPv6, multi-VLAN segmentation, GPU specialist models, and a full security stack - processing live internet attacks 24/7.
The difference between installing software and building systems. These are components I designed, wrote, and debugged from scratch.
Custom alert enrichment workflow: Wazuh fires on level 10+ events → N8N enriches with GeoIP → CrowdSec bans for 24h → OPNsense pf table blocks at the firewall. Dual-blocking with automatic expiry sync.
GPU-hosted Cowrie specialist model generates realistic shell responses for unknown commands. Attackers see fake DB credentials, bash history, and system info instead of "command not found," keeping sessions alive long enough to capture better TTPs.
Replaced the old HA 2B specialist path with a tiny deterministic CNN router that renders structured Home Assistant actions, blocks ambiguous aliases, logs live corrections, and only escalates edge cases to a guarded 27B local fallback.
Hand-written rules for Cowrie (100050-100061), Authentik SSO (100100-100108), and Caddy access logs (100200-100204). Static field mapping, JSON decoder integration, evaluation ordering.
Automated 8AM briefing via N8N cron: queries Wazuh API for alert counts, top attacker IPs, firewall state table, and CrowdSec ban summary. Posts to Discord with severity-colored embeds.
Native AT&T IPv6 delegated across LAN, workstation, IoT, guest, and DMZ networks. OPNsense pf rules mirror the IPv4 default-deny posture and enforce Technitium DNS. DoT (853 TCP), DoQ (8853 UDP), and DoH to known providers are blocked except explicit allowlisted resolvers.
Fully local, offline voice pipeline across ESPHome ESP32-S3 mic satellites: M18 GPU Parakeet STT, CT103 TinyHA deterministic intent routing, direct Home Assistant API calls, silent/chime response path, and Qwen 27B fallback for rare ambiguous commands. All inference stays on-premises.
AI-enriched threat intelligence API (v1.5.1) publishing 39K+ indicators from 154K+ live honeypot sessions. Attack data is classified by a local specialist model with rule guardrails, mapped to MITRE ATT&CK, and served as JSON, CSV, streaming STIX 2.1, or TAXII 2.1 with cursor pagination. No API key required.
Custom systemd service monitoring Docker container exits. Posts Discord embeds on non-zero exit codes with 10-minute per-container cooldown to prevent alert storms. Ignores graceful stops (SIGTERM).
Scheduled Greenbone/OpenVAS scans run MWF at 3AM via cron. Auto-starts the CT, runs full network scans across all VLANs, and shuts down after completion to conserve resources. Results feed into Wazuh for correlation with real-time alerts.
On-premises specialist models for smart-home control, honeypot deception, threat classification, documentation search, and guarded fallback reasoning. The design favors deterministic fast paths first, with larger LLMs reserved for ambiguous cases.
Home Assistant voice commands are routed through a tiny deterministic model instead of a general-purpose chat model. The fast path produces validated JSON/action calls; uncertain requests fall back to the larger local model instead of guessing.
tinyha-cnn-small-v4 with 57 current HA entities and 269 TinyHA entity aliases indexedSpecialist services are served locally using OpenAI-compatible endpoints so automation code can swap models without changing callers.
Converts classified utterances into stable Home Assistant service calls rather than free-form prose. This keeps the common path fast, auditable, and safe to execute.
Voice transcripts, correction logs, entity aliases, and threat-review exports feed future dataset rebuilds. The training workflow can improve models without depending on one-off manual prompt tuning.
The largest local model is reserved for complex or ambiguous requests, while deterministic specialists handle routine control and classification. This preserves latency without removing a reasoning escape hatch.
Wiki.js pages and upgrade runbooks are synced into a local RAG workspace for documentation-grounded troubleshooting, including the staged BlueField networking upgrade pack.
A fully automated SOAR pipeline that detects attacks on the honeypot, enriches alerts with threat intelligence, and blocks malicious IPs at the firewall - all within 30 seconds, with no human intervention required.
A medium-interaction SSH honeypot in an isolated DMZ (VLAN 99) with public SSH (WAN port 22) redirected via OPNsense NAT. Captures credential stuffing, shell commands, and malware drops from real attackers.
SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2 - looks like a vulnerable Debian 7 server26 custom rules across 3 rule files process JSON logs from Cowrie, Authentik SSO, and Caddy reverse proxy. The native JSON decoder extracts fields; rules use static field tags and ordered evaluation for precise matching.
Three custom N8N workflows process Wazuh alerts in real time, enrich them with threat intelligence, and execute automated response actions.
Attack data from the SOAR pipeline is published as a free, public threat intelligence API. Sessions are classified by a local specialist model with rule guardrails and mapped to MITRE ATT&CK techniques.
added_after incremental sync, X-TAXII-Date-Added-Last header
CrowdSec and OPNsense pf tables enforce bans at the network perimeter. Host-level blocking (iptables, fail2ban) only protects one service - a firewall rule blocks the attacker from reaching anything, including services that don't have their own IPS.
CrowdSec bans expire automatically (24h TTL). OPNsense alias config persists across reboots but pf tables don't auto-populate from aliases. The 2-hour sync cron reconciles both - live pf table for immediate blocking, alias config for reboot persistence.
Standard Cowrie returns "command not found" for ~80% of attacker commands, which is a dead giveaway. The local specialist model generates plausible Ubuntu server output (fake DB credentials, bash history, crontabs), keeping attackers engaged longer and capturing more TTPs without API costs or data exfiltration.
Default Wazuh rules don't understand Cowrie's JSON schema or Authentik's structured logs. Custom rules with decoded_as: json and field-level matching extract attacker IPs, usernames, and commands directly from the JSON, enabling precise alerting and correlation that generic syslog rules can't achieve.
A layered security stack with 7 Wazuh agents across 4 VLANs, automated threat response, and continuous vulnerability assessment.
Stateful firewall with Suricata IPS (ET-Pro rules, netmap mode on WAN), multi-VLAN routing, NAT, and DNS interception. Acts as the network's root of trust.
Centralized SIEM with 7 active agents on Proxmox, Docker, Caddy, OPNsense, Cowrie, Zenbook, and workstation. 26 custom rules, FIM, and VirusTotal integration.
SSH honeypot in DMZ VLAN 99 with AI-generated responses via local llama.cpp LLM. Captures credentials, commands, and malware from real attackers daily.
Collaborative behavioral IPS. Receives ban decisions from N8N SOAR pipeline and enforces at the OPNsense firewall. 24h TTL with automatic expiry.
OpenVAS in a Kali LXC with RAM-constrained sequential scanning (max_hosts=1, max_checks=3). Automated 3x/week via cron - Monday (core infra), Wednesday (Docker), Friday (all LXCs). Results posted to Discord. CT auto-starts for scan, stops after.
Domain-level forward auth across 23 services. Cloudflare Access gates external apps with Google MFA; Authentik provides OIDC SSO for all internal services via Caddy.
Multi-layer identity and access management with zero-trust principles. No inbound firewall ports - all external access via Cloudflare Tunnels.
Enterprise-grade networking with SR-IOV, multi-VLAN segmentation, IPv6 dual-stack, hardened DNS, and zero-exposure external access.
16 Virtual Functions on a ConnectX-5 dual-port 25GbE NIC, each assigned directly to VMs and containers for near-native network I/O with hardware-level traffic isolation.
Full native IPv6 deployment using AT&T delegated prefixes across internal networks, with DNS enforcement and default-deny firewalling that mirrors the IPv4 posture.
rdr inet6 intercepts IPv6 port 53 traffic on every VLAN → Technitium DNSProduction (default), IoT (VLAN 30), Guest (VLAN 40), DMZ (VLAN 99). Inter-VLAN routing only through OPNsense with explicit per-service allow rules. Default-deny between all zones.
Self-hosted recursive DNS with Cloudflare and Quad9 DoH upstreams. OPNsense intercepts ALL DNS (port 53) on both IPv4 and IPv6 via pf rdr rules - clients cannot bypass it. DoT (853), DoQ (8853), and DoH to 33 known providers explicitly blocked. mDNS reflected across VLANs via avahi for AirPlay and HomeKit discovery.
Outbound-only tunnels replace port forwarding. Caddy reverse proxy with ZeroSSL wildcard cert (*.101904.xyz) routes to all internal services. Zero inbound firewall exposure.
Site-to-site and remote-access VPN terminated directly on OPNsense. Firewall rules enforce the same VLAN segmentation and default-deny posture for VPN clients as local traffic - no split-tunnel bypass.
Managed access points with SSID-to-VLAN mapping, client isolation, and centralized controller for configuration and monitoring.
Infrastructure-as-code, workflow orchestration, automated monitoring, and Git-backed configuration management.
Configuration management playbooks for LXC containers and host-level settings. Package installation, service configuration, and security baselines - all version-controlled.
3 active SOAR workflows: Alert Enrichment + Auto-Block, CrowdSec Dual-Block, and Daily Security Digest. Webhook-triggered by Wazuh integratord for real-time response.
Migrated routine OpenClaw/Sentinel automation workloads off paid cloud models onto local Qwen, preserving escalation paths for complex work. The workstation runs a 27B fallback model plus Open WebUI/RAG for homelab documentation, runbooks, and upgrade planning.
Time-series monitoring with Prometheus scraping node-exporter (host metrics) and Exportarr (Sonarr/Radarr/Prowlarr). Grafana dashboards for resource utilization and service health.
Service endpoint monitoring with HTTP/HTTPS checks, TCP port probes, DNS resolution tests, and alerting. Recovered from SQLite corruption and added a daily database integrity timer so monitoring fails visibly instead of silently rotting.
Private GitHub repo backing up all critical configs: Caddyfile, Wazuh rules/decoders, OPNsense config.xml, compose files, Cowrie plugins. Weekly automated push via cron.
PostgreSQL (Authentik, Wiki.js), MariaDB (media apps), Redis (caching), SQLite (N8N, Uptime Kuma). Each workload uses the appropriate data store.
Two-node Proxmox VE lab with PCIe passthrough, SR-IOV networking, GPU acceleration, ordered boot sequencing, and backup coverage for critical workloads.
Intel i9-13900KF primary host plus M18 GPU node running QEMU/KVM VMs and LXC containers with UEFI boot, PCIe passthrough, SR-IOV networking, and deterministic startup ordering.
onboot: 1 - full lab recovers unattended after power lossNetwork-attached storage VM with parity-protected array. NFS/SMB exports mounted into Docker LXC for media and compute workloads. SATA controller passed through via PCIe.
Privileged LXC with 16 cores, 24GB RAM, GPU passthrough, and Unraid NFS mounts. Runs ~40 containers including media, monitoring, SSO, threat intelligence, automation, and agent-support stacks.
Staged LAN-offload upgrade plan for replacing the current ConnectX-5 LAN/workstation side with BlueField OVS/ASAP2 offload while keeping OPNsense on the existing WAN NIC. Includes day-of runbook, rollback plan, and RAG-ingested documentation pack.
Dual-port 25GbE NIC with 16 SR-IOV Virtual Functions. Each VF assigned to a VM/LXC for line-rate networking without software bridge overhead.
Smart home automation with a fully local AI voice pipeline: ESPHome ESP32-S3 satellites → M18 GPU Parakeet STT → TinyHA deterministic router → direct HA API actions, with Qwen 27B guarded fallback and a custom AWS Lambda skill for hybrid Alexa control.
IT Tools, CyberChef, Stirling PDF, Wiki.js, Adminer, Notifiarr - operational tools for day-to-day administration and incident investigation.