Suricata is a high-performance, open-source network threat detection engine developed by the Open Information Security Foundation (OISF). It operates as an Intrusion Detection System (IDS), Intrusion Prevention System (IPS), or Network Security Monitoring (NSM) platform.
It inspects network traffic in real time — parsing dozens of application-layer protocols, matching signatures, running Lua scripts, and writing rich EVE JSON logs — all without dropping packets at multi-gigabit speeds using multi-threaded workers.
--af-packet or pcap input.NFQUEUE or a network bridge..pcap file for post-incident analysis. Suricata parses it and generates the same EVE JSON output as live capture.any matches all three.!$HOME_NET.alert.severity.filestore or flowbits to log/extract without alerting.content match case-insensitively.offset: start searching at byte N. depth: only search within first N bytes from start.distance: skip N bytes after last match. within: must match within N bytes.established, to_client, to_server, not_established.| Threat | Protocol | Detection Approach |
|---|---|---|
| C2 Beaconing | HTTP/TLS | Match known bad User-Agents, JA3 hashes, or SNI domains. Use threshold to catch periodic beacons. |
| DNS Tunneling | DNS | Long subdomain queries, high query frequency, non-standard record types (TXT/NULL) carrying data. |
| SQLi / XSS | HTTP | Match attack payloads in http.uri, http.request_body using content keywords or PCRE patterns. |
| EternalBlue | SMB | Existing ET rules (ET:2026547) match the specific SMB_COM_TRANSACTION2 exploit negotiation sequence. |
| Port Scanning | TCP | SYN flag match + detection_filter tracking by_src across many destination ports in a short window. |
| Brute Force | SSH/FTP | Flow direction + detection_filter counting connection attempts per source IP within a time window. |
| Malware Download | HTTP | Match PE magic bytes (MZ/|4D 5A|) in http.response_body; use filestore to extract and hash files. |
| Data Exfil | HTTP/DNS | Large POST bodies to external IPs, unusual DNS TTLs, high-entropy subdomain labels. |
EVE JSON (/var/log/suricata/eve.json) is Suricata's primary output. Every event — alerts, flows, DNS, HTTP, TLS, files — is emitted as a JSON object on one line. Each event has a event_type field distinguishing its schema.
timestamp, src_ip, dest_ip,alert.signature, alert.sid,alert.severity, alert.category,proto, flow_id, payload_printable
src_ip, dest_ip, proto,flow.pkts_toserver, flow.pkts_toclient,flow.bytes_toserver, flow.bytes_toclient,flow.start, flow.end, app_proto
dns.type (query/answer),dns.rrname, dns.rrtype,dns.rcode, dns.ttl,dns.rdata, dns.id
http.hostname, http.url,http.http_method, http.status,http.http_user_agent,http.length, http.protocol
tls.subject, tls.issuerdn,tls.sni, tls.version,tls.ja3.hash, tls.ja3s.hash,tls.notbefore, tls.notafter
fileinfo.filename, fileinfo.size,fileinfo.md5, fileinfo.sha256,fileinfo.magic, fileinfo.stored,fileinfo.gaps, fileinfo.state
ssh.client.proto_version,ssh.client.software_version,ssh.server.proto_version,ssh.hassh.hash, ssh.hassh.server.hash
smtp.mail_from,smtp.rcpt_to[],smtp.helo,email.from, email.to[]
Snort (1998, Sourcefire/Cisco) and Suricata (2009, OISF) share the same rule language roots but diverge significantly in architecture, performance, and capability. For most new deployments, Suricata is the default choice — but Snort 3 has closed many historical gaps.
| Feature | Suricata | Snort 3 |
|---|---|---|
| First release | 2009 (OISF) | 1998 (Sourcefire → Cisco) |
| Threading model | Native multi-thread — one worker per CPU core, scales linearly to 10–100 Gbps | Multi-thread since Snort 3 (2021); single-thread in legacy Snort 2 |
| Rule language | Superset of Snort rules. Adds sticky buffers, http.* keywords, tls.*, dns.*, ja3.*, flowint, datasets |
Snort 3 rewrote rule syntax; adds its own sticky buffers. Not fully backward-compatible with Snort 2 |
| Snort rule compatibility | Runs most Snort 2 rules unmodified. ET Open rules ship for both | Snort 3 broke some Snort 2 syntax; migration tool available |
| App-layer parsers | Built-in: HTTP/2, TLS, DNS, SMB, FTP, SSH, SMTP, NFS, DCERPC, SIP, MODBUS, DNP3, and more | HTTP, DNS, TLS, FTP, SMB, SIP via plugins. Fewer built-in; extensible via Lua/C++ plugins |
| TLS inspection | JA3/JA3S fingerprinting, SNI, cert fields — all built-in, zero config | JA3 available via plugin. SNI inspection supported in Snort 3 |
| Output formats | EVE JSON (rich unified log), fast.log, pcap, Redis, Kafka, Unix socket, Syslog | Unified2 (legacy binary), JSON alert output. EVE-style JSON not native — use Barnyard2 or plugins |
| File extraction | Native: HTTP, SMTP, FTP, SMB. MD5/SHA1/SHA256 hashing, YARA integration | File inspection via preprocessors. Less seamless than Suricata's built-in pipeline |
| Packet capture | AF_PACKET, DPDK, PF_RING, PCAP, NFQ (inline IPS) | PCAP, DAQ abstraction layer (AF_PACKET, NFQ, DPDK via DAQ plugins) |
| IPS inline mode | NFQ and AF_PACKET XDP inline — drop/reject/pass in production traffic | NFQ and DAQ-based inline. Equivalent capability, slightly more config overhead |
| Scripting | Lua scripting for custom detection logic (luajit). Datasets for bulk IP/domain lookups | Snort 3 is plugin-based (C++/Lua). More extensible at the core level |
| Rule sets | ET Open (free), ET Pro (commercial), Abuse.ch, PTRESEARCH, Stamus, custom — via suricata-update | Talos Intelligence (Cisco) — industry's largest commercial ruleset, included with Snort subscription |
| SIEM integration | EVE JSON → Elastic (native module), Splunk TA, Grafana/Loki, Kafka pipelines | Unified2 requires Barnyard2 bridge. Snort 3 JSON output improving but less mature ecosystem |
| Performance ceiling | 100 Gbps+ with DPDK/PF_RING on multi-core hardware | Competitive with Snort 3 multi-thread, but DPDK support lags |
| License | GPLv2 (engine), MIT (libraries). OISF-governed, vendor-neutral | GPLv2 but commercially controlled by Cisco. Talos rules are proprietary |
| Governance | Open Information Security Foundation (OISF) — community + corporate members | Cisco/Talos. Community edition free; Pro features behind subscription |
| Maturity / community | Dominant in open-source deployments. Default in Security Onion, Elastic SIEM, Stamus | Older, larger install base historically. Talos ruleset unmatched for enterprise depth |
| Suricata | Snort | |
|---|---|---|
| Created by | OISF (Open Information Security Foundation) | Martin Roesch at Sourcefire (now Cisco) |
| Written in | C (engine), Lua (scripting) | C (Snort 2), C++ (Snort 3) |
| Latest stable | Suricata 7.x (2024) | Snort 3.x / Snort 2.9.x (legacy) |
| Default in | Security Onion, pfSense (option), OPNsense (option) | Cisco Firepower, pfSense (option), OPNsense (option) |
| Shared rule format | Yes — ET Open rules published for both engines | |