[email protected] · linkedin.com/in/desi-ramirez · github.com/dram64 · (323) 423-6495

Desi Ramirez.

01 / 05 About
Profile
Location Moreno Valley, CA
Education B.S. Software EngineeringCal Poly San Luis Obispo · 2022
02 / 05 Projects

Live systems,
deployed and running.

14-DAY RUN Security

SOC Detection Lab

Hybrid edge-to-cloud SSH honeypot pipeline. A Cowrie honeypot at the network edge captured real-world attacks over a 14-day run, shipped logs through a serverless AWS pipeline, and rendered attack telemetry in a React dashboard. The AWS pipeline and dashboard remain live; the edge sensor has been decommissioned after its collection run.

Architecture

SOC Detection Lab architecture diagram EDGE VPS · INGRESS AWS PIPELINE VIEWER attacker SSH probe Raspberry Pi 5 k3s worker cowrie pod fluent-bit SSH honeypot HAProxy DigitalOcean public :22 autossh reverse tunnel Pi-initiated fluent-bit · haproxy.log S3 put S3 Ingest λ timestamp corr. + GeoLite2 DynamoDB single-table Aggregator λ rollups API λ HTTP API Cloudflare edge WAF (ADR-007) CloudFront React SPA dashboard.dram-soc.org
Three tiers, real deployment: Raspberry Pi 5 running Cowrie as a k3s pod (edge) → HAProxy on a DigitalOcean droplet with an autossh reverse tunnel (VPS ingress) → fluent-bit → S3 → Lambda pipeline (ingest with timestamp-window correlation + MaxMind GeoLite2 → DynamoDB → aggregator → API Gateway HTTP API) → CloudFront React dashboard fronted by Cloudflare proxied DNS.

Highlights

  • Reverse-tunnel edge architecture: the Pi 5 never has a port forwarded from a residential ISP — autossh holds a persistent reverse SSH tunnel to a DigitalOcean droplet running HAProxy as the public ingress. Home IP stays private; attackers hit the droplet.
  • Bidirectional timestamp-window correlation: Cowrie sees every attacker as 127.0.0.1 because of the reverse tunnel. The ingest Lambda joins each Cowrie session to the corresponding HAProxy log line on a 500ms window (empirically widened from a 200ms baseline after measuring real-traffic handshake latency — see ADR-010), recovering the real source IP. Enriched with MaxMind GeoLite2 Country + ASN.
  • Serverless AWS pipeline: fluent-bit on both edges → S3 (per-prefix scoped IAM) → 3 Python 3.13 Lambdas (ingest / aggregator / api) → single-table DynamoDB (ADR-003) → API Gateway HTTP API → CloudFront + ACM → React 18 + Vite + TS + TanStack Query SPA. Cloudflare proxied DNS as edge WAF (ADR-007). All Terraform.
  • Detection engineering: 5 Sigma rules covering MITRE ATT&CK Initial Access (T1110), Lateral Movement (T1021), and Command & Control (T1071), syntax-validated in CI via sigma-validate.yml. Real-attacker-fixture corpus with sanitization enforced by ADR-005 (password strip, RFC 5737 doc-IP swap for the maintainer’s home IP).
  • Security engineering: GitHub Actions OIDC → scoped deploy role with the ADR-011 permission boundary (CI role explicitly cannot mint AWS access keys — human-managed credentials live in separate Terraform state). 262 pytest gates + ruff + tflint + tfsec + gitleaks + Sigma validation, all required before merge.
  • Observability: CloudWatch metric filters + alarms on the ingest Lambda’s log group, SNS-backed alerting on cowrie-heartbeat-missing and haproxy-heartbeat-missing (15-min window, treat_missing_data: breaching). 9 ADRs documenting the design trade-offs.

Collection summary — 14-day run · May 6–21, 2026

Events captured
231,930
Attack sessions
36,440
SSH login attempts
36,405
Unique attacker IPs
1,322
Source countries
84
Commands executed
16,180
Malware-download attempts
1,592
Distinct commands
70
Captured live botnet activity — Mirai credential markers (345gs5662d34), SSH-key implant persistence, crypto-mining reconnaissance, and automated Go / libssh scanners. Top origins: Netherlands, Uzbekistan, United States (374 IPs), Hong Kong, Germany. Raw events archived to S3; correlated + GeoIP-enriched in DynamoDB.

Stack

Cowrie HAProxy autossh fluent-bit k3s AWS Lambda DynamoDB API Gateway HTTP S3 CloudFront EventBridge CloudWatch + SNS MaxMind GeoLite2 Sigma Cloudflare Terraform GitHub Actions OIDC Python 3.13 React 18 + Vite + TS TanStack Query pytest (262)
LIVE Design · Cloud · Case study

Tokyo Zero — showcase.

Portfolio + design case study for Tokyo Zero. Astro static frontend, palette + typography writeup at /process. Underneath: a multi-region serverless AWS stack — CloudFront with origin-group failover, hourly Puppeteer canary, nightly digest Lambda writing live JSON to /status and /insights. All Terraform, one apply.

// case study · cloud

Architecture.

      user
       │
       ▼
   ┌────────────┐        ┌────────────────┐
   │  cloudflare │        │  acm (us-east-1) │
   │     dns     │        │  wildcard cert   │
   └──────┬──────┘        └───────┬────────┘
          │                        │
          ▼                        ▼
   ┌───────────────────────────────────────┐
   │           cloudfront (us-west-2)         │
   │  · origin group (failover on 5xx/403)    │
   │  · viewer-request rewrite fn             │
   │  · security-headers policy               │
   └────┬─────────────────────────┬───────┘
        │                             │
GET *   │                             │  POST /contact
        ▼                             ▼
 ┌──────────────┐             ┌────────────────┐
 │  s3 primary  │             │   http api v2  │
 │  us-west-2   │             │   api gateway  │
 └──────┬───────┘             └───────┬───────┘
        │ crr (async)                  │
        ▼                              ▼
 ┌──────────────┐             ┌────────────────┐
 │  s3 dr       │             │  lambda        │
 │  us-east-1   │             │  (node 20)     │
 └──────────────┘             └──┬────────┬────┘
                                 │        │
                                 ▼        ▼
                          ┌────────┐ ┌────────────┐
                          │  ses   │ │ dynamodb   │
                          │  send  │ │  audit     │
                          └────────┘ └────────────┘

  observability plane
  ────────────────────
  synthetics canary ─ 3 endpoints, hourly, us-west-2 ─▶ cloudwatch alarms
  x-ray tracing     ─ lambda + api gw + digest lambda ─▶ trace map
  eventbridge sched ─ nightly 03:00 utc               ─▶ digest lambda
     digest lambda  ─ synthetics + athena
                     ─▶ json → s3 (primary + dr) → /status /insights

Cloudflare DNS → CloudFront (OAC, security headers, viewer-request URL rewrite) → S3 primary in us-west-2, cross-region replicated to a DR bucket in us-east-1. Origin group flips to DR on 5xx/timeout — no DNS change. Contact form: API GW HTTP v2 → Node 20 Lambda → DynamoDB audit + SES send. Observability: hourly Synthetics canary + nightly EventBridge → digest Lambda → Athena over CloudFront logs → status.json + insights.json.

// services · purpose

Services.

ServicePurposeWhy
s3Origin bucket + DR replica + logs + Athena results.Private, OAC-only reads. Cross-region replication to us-east-1 for a passive DR.
cloudfrontHTTPS-terminating CDN + edge cache.Origin group failover, security-headers policy, JS URL rewrite at the edge.
acmTLS cert in us-east-1 for CloudFront.DNS-01 validated via a Cloudflare CNAME.
api gateway v2Public POST /contact endpoint.Lighter than REST. CORS enforced at the gateway so Lambda never sees preflights.
lambdaContact handler + nightly digest job.Node 20 with X-Ray active tracing. IAM scoped tight per function.
sesSends contact submissions to the owner.Policy condition on ses:FromAddress blocks impersonation.
dynamodbContact audit table + Terraform state lock.Pay-per-request + PITR + encryption at rest.
athena + glueAnalytics over CloudFront access logs.Workgroup capped at 1 GB scanned per query. Saved queries in Terraform.
syntheticsPuppeteer canary hitting 3 pages hourly.Screenshots + timing + alarm on SuccessPercent < 100.
eventbridge schedNightly cron for the digest Lambda.Cleaner IAM model than legacy CloudWatch Events.
x-rayDistributed tracing across Lambda + API GW.Request path shows up in the trace map when something breaks.
cloudwatch logsLambda + HTTP API access logs.30-day retention on every group so nothing quietly creeps up.

// stack

Stack.

Astro TypeScript Terraform AWS Lambda API Gateway HTTP v2 DynamoDB SES CloudFront S3 (multi-region) ACM Synthetics EventBridge Athena · Glue X-Ray SNS · Budgets GitHub Actions OIDC Cloudflare
03 / 05 Homelab

Personal
homelab.

Self-hosted homelab environment, services platform, and continuous-deployment target — used to deepen hands-on networking, security, and infrastructure skills beyond what cloud-only environments offer.

Network Topology

Homelab network topology INTERNET Palo Alto PA-440 NGFW · zone policies Cisco Catalyst C1000-8T VLANs · mgmt / servers / lab vlan 10 · mgmt vlan 20 · servers vlan 30 · lab Ubiquiti UniFi U6+ managed wireless · PoE Wi-Fi 6 (802.11ax) multi-SSID / VLAN tag UniFi Network controller Proxmox VE HA cluster 3 nodes · ZFS · live migration OptiPlex Micro node A · vPro/AMT ZFS mirror OptiPlex Micro node B · vPro/AMT ZFS mirror HPE ProLiant MicroServer Gen10 Plus v2 node C · iLO out-of-band · ZFS AD / DC · k3s VMs · SIEM · self-hosted services Raspberry Pi 5 k3s worker · lab VLAN edge k3s worker Argo CD deploy target cowrie pod (retired collection run) APC UPS · NUT graceful-shutdown automation
Internet → PA-440 (NGFW zone policies) → Catalyst C1000-8T (VLAN segmentation, mgmt / servers / lab) → UniFi U6+ wireless / Proxmox HA cluster (2× OptiPlex Micro + HPE MicroServer Gen10 Plus v2, ZFS replication, live migration, HPE iLO + Intel vPro/AMT out-of-band) / Raspberry Pi 5 k3s worker. APC UPS with NUT graceful-shutdown on the whole rack.

Hardware

Hypervisor cluster
2× Dell OptiPlex Micro + HPE ProLiant MicroServer Gen10 Plus v2
L2 switching
Cisco Catalyst C1000-8T (VLAN-segmented)
Firewall
Palo Alto PA-440 NGFW
Wireless
Ubiquiti UniFi U6+ (managed, PoE)
Edge / worker
Raspberry Pi 5 (k3s worker)
Storage
ZFS mirror across cluster nodes
Out-of-band mgmt
HPE iLO + Intel vPro / AMT
Power
APC UPS + NUT (graceful shutdown)

What it does

  • Windows Server Active Directory domain — users, groups, OUs, GPO, DNS, DHCP; hybrid-joined to Entra ID with Intune device policies applied.
  • Multi-node k3s across Proxmox VMs + the Pi 5 — GitOps deploys via Argo CD; self-hosted services (DNS filtering, internal Git, password manager) monitored with Prometheus/Grafana.
  • Three-node Proxmox HA cluster — ZFS replication, live migration between nodes, out-of-band management over HPE iLO (MicroServer) and Intel vPro / AMT (OptiPlex Micros).
  • Segmented network — VLANs and trunking on the Catalyst C1000-8T, inter-zone security policies on the PA-440, UniFi U6+ for managed wireless.
  • Detection stack: Wazuh SIEM with agents across the Windows domain and Linux VMs (Sysmon telemetry, detections tested with Atomic Red Team). Suricata IDS on a SPAN port off the Catalyst monitoring the lab VLAN. Elastic Stack ingesting the archived honeypot dataset (S3 replay via Filebeat/Logstash) with the project’s 5 Sigma rules deployed against it in Kibana.
  • Operations routine: Ansible-driven patching, scheduled backups, UPS-backed graceful shutdown via NUT, monitoring and log review.
04 / 05 Skills

Stack & capabilities.

Cloud 13

AWS Lambda DynamoDB API Gateway CloudFront S3 IAM ACM CloudWatch EventBridge Bedrock VPC Cloudflare

Security 10

Wazuh SIEM Elastic Stack (ELK) Suricata IDS/IPS Sigma rules / MITRE ATT&CK Honeypot & attacker telemetry analysis Log analysis Packet capture Network security Firewall policy TLS/SSL

DevOps 11

GitHub Actions CI/CD pipelines GitOps Argo CD Ansible Kubernetes k3s Multi-node clusters Container orchestration IaC Terraform

Networking 6

VLANs ACLs Cisco Catalyst C1000 Palo Alto NGFW Ubiquiti UniFi Routing

Infrastructure 7

Dell OptiPlex + HPE ProLiant HPE iLO + Intel vPro/AMT (out-of-band) Proxmox VE (HA clustering) ZFS (replication, mirror) Windows Server AD + Entra ID / Intune UPS-backed power (APC + NUT) Self-hosted services

Backend & Data 8

Python Lambda pytest Serverless event-driven Single-table design REST WebSocket APIs Real-time fanout

Frontend 7

React TypeScript Vite TanStack Query Tailwind CSS Recharts Responsive SPA

Methodology 5

Agile/Scrum Git ADRs Code review Technical writing
Certifications
AWS Certified Solutions Architect — Associate
SAA-C03 · Amazon Web Services
CompTIA Security+
SY0-701 · CompTIA
In Progress
Cisco Certified Network Associate
CCNA · Cisco
05 / 05 Find me