Security Onion Hands-on Labs¶
Choose the route that fits your available time and computing resources. Use the Interactive Lab for a short guided investigation, or the Full Lab to build and operate a complete Security Onion workflow in a virtual machine.
Hands-on proof of concept
Build it. Correlate it. Explain it.
Start with one Security Onion Standalone VM, load the built-in test data, trace a Suricata alert into related Zeek evidence, and preserve a defensible finding in a case. Add live endpoints and network sources only after the core route works.
Security Onion Full Lab
How this differs from the guided journeys
This is not a screenshot-by-screenshot transcript. It gives you outcomes, checkpoints, and evidence requirements while leaving room to investigate. Your version, alert names, field names, timestamps, and results may differ from the original proof of concept.
Use an isolated, authorised environment
Import only test data you are authorised to handle. Treat packet captures as untrusted evidence: do not extract or execute payloads. Take a snapshot before adding live endpoints, rules, accounts, or network sources.
Before you begin
You need: an x86-64 computer with virtualisation enabled, administrator access, enough capacity to allocate at least 24 GB RAM and 200 GB disk to the Security Onion VM, and temporary internet access for authorised downloads.
How to use this lab
Complete one session at a time. Stop when a checkpoint fails; fix that boundary before importing more data or adding an endpoint, sniffing interface, or rule.
Recommended
Beginner Core Lab¶
Use one Security Onion Standalone VM and the built-in test-data workflow. Complete all three activities before adding a live source.
Expected time: 5–8 hours across three sessions.
Optional extension
Complete PoC¶
After the core checkpoints pass, add Windows and Elastic Agent, Sysmon, a monitored network, a firewall VM, or custom detection content.
Expected time: one or more additional sessions.
- Session 1Build and snapshot3–4 hours
- Session 2Load and correlate1–2 hours
- Session 3Investigate and preserve1–2 hours
Objective¶
You are a junior SOC analyst validating a small Security Onion deployment. Build the platform, load a controlled dataset, identify a network alert, connect it to related evidence, and create a case that another analyst can reproduce.
The Beginner Core Lab consists of:
- one Security Onion Standalone deployment;
- built-in Security Onion test data or an authorised PCAP imported through Grid;
- one Suricata alert with a shared flow identifier; and
- related Zeek evidence preserved with the analyst conclusion in a case.
Use the Complete PoC only after this single-VM workflow works reliably.
01
Activity 1: Build the environment¶
Download checklist¶
Record the filename, version, architecture, checksum, licence condition, and download date for every item.
Required for the Beginner Core Lab¶
| Item | Purpose | Authoritative source |
|---|---|---|
| VMware Workstation Pro, demonstrated | Hypervisor used for the screenshots; another x86-64 hypervisor is suitable if it supports isolated networking and snapshots | Broadcom installation and download guidance |
| Security Onion ISO | Standalone manager and sensor platform | Security Onion download and verification instructions |
Verify the Security Onion ISO
Compare the downloaded ISO against its published checksum before attaching it to the VM. Do not continue when verification fails.
Create the virtual machine and network¶
| VM | Suggested lab allocation | Interface | Demonstrated address |
|---|---|---|---|
| so-standalone | 4+ vCPU, 24 GB minimum RAM, 200 GB local disk | Isolated management network | 10.0.0.100 |
- Enable hardware virtualisation and install VMware Workstation or an equivalent x86-64 hypervisor with isolated networking and snapshot support.
- Create an isolated management network. Provide NAT only while the VM needs authorised installation, update, or download access.
- Create the Standalone VM, allocate the required resources, attach the verified Security Onion ISO, and install the operating system.
- Configure the hostname, address, DNS, and time synchronisation. Adapt the address plan consistently if required.
- Confirm the analyst workstation can reach only the required management and update services.
- Take a clean
base-ossnapshot before platform configuration.
Optional Complete PoC machines and downloads
Add these only after the Beginner Core Lab works:
| Optional item | Purpose |
|---|---|
| Windows Server evaluation ISO | Disposable endpoint for Elastic Agent |
| Sysmon | Additional Windows process telemetry |
| FortiGate or pfSense | Authorised firewall and monitored-network traffic |
| Separate endpoint or traffic source | Live data for the sniffing interface |
A live monitored network requires a separate, addressless sniffing interface and traffic-delivery method supported by the hypervisor. Keep management and monitored traffic separate.
Expected result The Standalone VM starts with a recorded address, synchronised clock, isolated management connectivity, and a recoverable base-os snapshot.
02
Activity 2: Load and correlate¶
Follow the checkpoints in order. Keep this page open and return after each linked journey.
- SOC is availableInstall Security Onion, sign in to SOC, and record the platform version.
- Grid is healthyOpen Grid and confirm the node and required services are healthy; compare the result with
so-status. - The baseline is recoverableTake a
working-securityonion-coresnapshot before importing test data. - Controlled data is loadedUse the Grid test-data workflow or upload an authorised PCAP, then record the import time and source.
- A suitable alert is foundSelect one Suricata alert that includes a Community ID or equivalent shared flow identifier.
Open Grid, select the Standalone node, and use the test data control described in Analyst Tools. Confirm the import and allow several minutes for processing. Record:
- the time you started the import;
- whether you used built-in test data or an authorised PCAP;
- the node that processed it; and
- any warnings or differences from the guide.
Open Alerts, use a narrow time range around the import, and begin with
alerts generated by suricata. Select one medium- or high-severity network
alert that exposes network.community_id or another correlation value. Record
the actual alert name rather than trying to match a screenshot.
Expand the event and capture these fields where available:
- timestamp and rule name;
- severity and event module;
- source and destination IP addresses and ports;
- observer or sensor name; and
- Community ID or equivalent flow identifier.
Extend the working core with a live source
Choose only one extension at a time:
- enrol a disposable Windows endpoint using Endpoint agents;
- add Sysmon after the basic endpoint events are searchable;
- connect an addressless sniffing interface to an authorised monitored segment;
- add a FortiGate or pfSense VM as a controlled network source; or
- import a separately authorised PCAP through the Grid upload control.
Repeat the source → sensor or agent → dataset → Alerts or Hunt checkpoint before adding another integration.
Expected result SOC and Grid are healthy, a recoverable core snapshot exists, controlled test data is searchable, and one Suricata alert has the fields required for correlation.
03
Activity 3: Investigate and preserve¶
Confirm SOC opens, Grid remains healthy, and the selected alert is still searchable. Continue only when the known event can be reopened.
Investigation scenario¶
You are the junior analyst reviewing suspicious outbound network activity from a controlled dataset. Determine what the network evidence supports, what it does not prove, and what the next analyst should verify.
- Open the alert selected in Activity 2 and confirm the raw fields.
- Select its Community ID or equivalent value and choose Correlate.
- In Hunt, identify at least one related Zeek connection, DNS, HTTP, SSL/TLS, or file record from the same flow or time window.
- Open PCAP only when it is available and relevant; do not extract or execute transferred content.
- Record any field-name substitutions or missing evidence.
Answer these questions:
- What happened, and when did it happen?
- Which source and destination were involved?
- Which Suricata fields support the alert?
- Which Zeek or PCAP evidence adds context?
- Does the evidence show network communication, endpoint execution, or both?
- What remains unknown about the process, user, intent, or wider scope?
- Is the activity malicious, suspicious, or benign in this controlled context?
Record the reasoning before deciding:
| Hypothesis | Supporting evidence | What remains unknown | Disposition |
|---|---|---|---|
| The selected host made suspicious outbound network contact | Add the alert, flow, DNS, connection, and PCAP fields you observed | Note missing endpoint, process, user, payload-execution, or wider-scope evidence | Record the classification supported by the available evidence |
Preserve the finding¶
Create or update a Security Onion case. Include:
- a concise title naming the affected source and activity;
- the alert and correlated records;
- source, destination, domain, hash, or other relevant observables;
- the Hunt query or correlation value;
- the evidence-based disposition and confidence;
- important limitations and unknowns; and
- one practical next action for the receiving analyst.
Ask another learner, or review the case as if you were the next analyst. Confirm that the saved query or correlation value reopens the same evidence without depending on your memory or the original screenshots.
Improve and validate a detection
After the core case workflow works, choose one optional improvement:
- create a narrowly scoped Sigma, Suricata, or YARA rule;
- tune a rule or suppress a demonstrated false positive;
- improve a Hunt query or dashboard that makes the pattern easier to recognise;
- add case guidance that makes the alert more actionable; or
- add a detection mapping or description supported by the observed evidence.
Record the owner, rationale, expected data source, syntax validation, and rollback. Repeat a controlled positive test and a comparable benign test. Document both results, telemetry gaps, false-positive assumptions, and any performance impact. Disable the object afterward or retain it with an owner and review date.
Write the analyst handoff¶
Keep the note short enough to scan. Include:
- Who and where: source, destination, sensor, and account if known;
- What happened: the alert and connected network activity;
- Evidence: Suricata, Zeek, PCAP, timestamps, and saved query;
- Decision: disposition, confidence, and why it fits the evidence;
- Unknowns: endpoint execution, user intent, payload, or wider scope; and
- Next action: the most useful collection or verification step.
Expected result You can connect a Suricata alert to related evidence, avoid claiming more than the records prove, and preserve a reproducible analyst finding in a case.
Full Lab evidence checklist¶
This checklist applies to the self-hosted Full Lab. If you completed the Interactive Lab, retain its downloaded evidence summary instead.
Do not aim to match every screenshot or complete every optional integration. Collect evidence that proves your selected route works:
Clean up¶
Stop test activity and remove temporary live sources, accounts, firewall rules,
or custom detections. If you used only imported test data, restore the
working-securityonion-core snapshot when you want a clean platform state.
Confirm SOC opens, Grid is healthy, and normal ingestion matches the recorded
baseline. Retain only sanitised queries, screenshots, case notes, and conclusions.