A free, step-by-step roadmap built by someone actively on this journey. No fluff. No paywalls. Just the exact labs, tools, and steps you need to go from zero hands-on experience to SOC and cybersecurity analyst roles.
Before touching a single lab — get these sorted. This is your foundation.
8 tracks. 26 phases. Updated after reviewing current SOC L1, SOC L2, and Cybersecurity Analyst job requirements plus practitioner feedback: build the lab first, then prove high-volume alert triage, ticket writing, Splunk/SPL, EDR, cloud, IR, automation, and portfolio-ready documentation.
Phase 5 is built around analyst-style queue work: a scripted VMware attack loop generates repeated activity, Elastic/Wazuh collect the alerts, and each session is used to review evidence, tune noise, write case notes, and decide what needs escalation.
A quick scan of the SOC and cybersecurity analyst capabilities this lab is building, mapped to real job duties instead of just tool names.
This roadmap is designed to show hands-on readiness for high-volume alert triage, SIEM searching, endpoint and network telemetry review, identity investigations, ticket documentation, cloud security monitoring, vulnerability prioritization, and analyst-style reporting.
Focus on these. In this order. Don't get distracted by expensive or irrelevant certs.
Organized by cost. Most of what you need is free.
Real updates from my lab. Every day I work on this roadmap I post what I did, what worked, and what broke.
192.168.56.101systemctl and curl0.0.0.0 for browser access from Windows hosthttp://192.168.56.101:5601jq for JSON parsingsuricata-updateenp0s8 (NAT) and enp0s3 (Host-Only)/tmp/local.rulessuricata -Ttcpdumpfast.log and eve.jsonSOC LAB ICMP TEST ALERTHost-Only and NAT adaptersMicrosoft-Windows-Sysmon/OperationalMicrosoft-Windows-Sysmon/Operationalwinlog.winlog datasetPublic, blocking ICMP. Switched the Host-Only interface to Private and added an inbound ICMP firewall rule.kibana.yml, restarted Kibana.NAT IP (10.0.3.15) instead of the stable Host-Only IP. Updated the managed Fleet Elasticsearch output to https://192.168.56.101:9200, restarted Kibana, restarted the Windows agent, and winlog.winlog data streams started flowing.https://192.168.56.105whoami, ipconfig, net user, and net localgroup administratorsT1136, T1098, and T1078C:\Users\Public and confirmed file deletion detection<syscheck> XML and added C:\Users\Public as a realtime monitored directory.logs-* data view to review Windows, Sysmon, DNS, and network eventsgrep, tail, and journalctlnet.exe / net1.exe activity/var/log/auth.logjournalctlfast.log and eve.jsonwinlog.event_data.CommandLine, Image, and ParentImage instead of relying only on normalized fields.I'm following this same roadmap. Here's my timeline — so you can see it's achievable.