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

Desi Ramirez.

01 / 06 About
Profile
Location Riverside, CA
Education B.S. Software EngineeringCal Poly San Luis Obispo · 2022
02 / 06 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, as deployed for the May 6–21, 2026 run: Raspberry Pi 5 running Cowrie as a k3s pod (edge) → HAProxy on a DigitalOcean droplet with an autossh reverse tunnel (VPS ingress); both edge hosts since decommissioned → 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 had a port forwarded from a residential ISP — autossh held a persistent reverse SSH tunnel to a DigitalOcean droplet running HAProxy as the public ingress. Home IP stayed private; attackers hit the droplet.
  • Bidirectional timestamp-window correlation: Cowrie saw 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: 8 Sigma rules deployed as Kibana detection rules against the replayed dataset (4,905 alerts across the 14-day run), covering MITRE ATT&CK Credential Access (T1110), Persistence (T1098.004), and Command & Control (T1090); 3 further rules requiring Zeek/Suricata/MISP telemetry are parked with their data-source dependency documented. 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). Required status checks on every merge: 262 backend pytest tests, the Phase 2 detection-tooling lint + test suite, gitleaks secret scanning, and Sigma rule validation + conversion; ruff, tflint and YAML/shell linting also run on every pull request, and tfsec scans Terraform changes pushed to main.
  • 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
83
Commands executed
16,180
Uploaded payloads
16
Distinct commands
70
Captured live botnet activity — SSH-key implant persistence (authorized_keys + mdrfckr), the 345gs5662d34 marker login as a step of that same campaign, crypto-mining reconnaissance, and automated Go / libssh scanners. Top origins: Netherlands, Uzbekistan, United States (374 IPs), Hong Kong, Germany. Raw events 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 / 06 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 ISP router / gateway stock ISP equipment Cisco Catalyst C1000-8T VLANs · mgmt / servers vlan 10 · mgmt vlan 20 · servers 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 APC UPS · NUT graceful-shutdown automation
Internet → ISP router / gateway → Catalyst C1000-8T (VLAN segmentation, mgmt / servers) → 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). 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)
Wireless
Ubiquiti UniFi U6+ (managed, PoE)
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 — 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 with inter-VLAN routing, subnetting, DHCP scopes, DNS and ACLs; UniFi U6+ for managed wireless.
  • Detection stack: Wazuh SIEM with agents across the Windows domain and Linux VMs (Sysmon telemetry). Elastic Stack ingesting the archived honeypot dataset via a Python ingest loader (local replay, not Filebeat/Logstash), with 8 Sigma-derived detection rules deployed in Kibana and 3 parked for lack of a Zeek/Suricata/MISP source.
  • Microsoft 365 and cloud identity — MFA, SSO, conditional access and least-privilege; Windows, macOS and mobile devices enrolled in Intune (MDM).
  • Remote support for the team — connectivity troubleshooting (ping, ipconfig, nslookup, traceroute), plus diagnosing and replacing failed hardware (drives, memory, power supplies).
  • Operations routine: Ansible-driven patching, scheduled backups, UPS-backed graceful shutdown via NUT, monitoring and log review.
04 / 06 Experience

Professional
experience.

Graphic Specialist — Soboba Casino Resort — Feb 2025 – Mar 2026

  • Produced time-sensitive print and digital design for teams across the property through a deadline-driven Asana ticket queue — intake, prioritization and delivery — and maintained the resort’s public website.

Frontend Developer — Puldy Resiliency Partners — Sep 2021 – Jun 2022

  • Built the frontend and cross-platform app (React, Vue, TypeScript) integrated with backend REST APIs, on a three-person team working Agile/Scrum with Jira-tracked sprints and code reviews.
  • Tested and debugged features across the front end and API integration, validating fixes with QA before release.
05 / 06 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) Sigma rules / MITRE ATT&CK Least-privilege IAM 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 12

TCP/IP DNS DHCP Subnetting VLANs Inter-VLAN routing NAT VPN ACLs Cisco Catalyst C1000 Ubiquiti UniFi Routing

Infrastructure 9

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 Microsoft 365 Group Policy UPS-backed power (APC + NUT) Self-hosted services

Support & Endpoints 7

Remote support Ticketing systems Microsoft Defender Windows / macOS / Linux support Device provisioning Hardware troubleshooting KB documentation

Languages & Tools 8

SQL Bash PowerShell C++ C# Vue Node.js Docker

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 200-301 · Cisco
06 / 06 Find me