How to Set Up Intrusion Detection with Suricata

Suricata is a powerful open-source network intrusion detection/prevention system (IDS/IPS) — analyzing network traffic in real time for malicious patterns, complementing host-based tools like Fail2Ban and AIDE.

What Suricata Adds Beyond Host-Based Tools

Where Fail2Ban reacts to log patterns and AIDE monitors file integrity, Suricata inspects network traffic content directly, detecting malicious patterns (exploit attempts, known malware communication, protocol anomalies) at the network level, often before an attack fully succeeds.

Prerequisites

  • Ubuntu 22.04/24.04 VPS with adequate CPU (network inspection is processing-intensive)

Step 1 — Install Suricata

sudo apt install suricata -y

Step 2 — Update Rule Sets

sudo suricata-update

Downloads and installs current detection rules — Suricata's effectiveness depends heavily on regularly updated rule sets reflecting current threat patterns.

Step 3 — Configure the Network Interface to Monitor

sudo nano /etc/suricata/suricata.yaml
af-packet:
  - interface: eth0

Step 4 — Start Suricata in IDS Mode (Detection Only)

sudo systemctl enable --now suricata

By default, Suricata runs in IDS mode — detecting and logging suspicious traffic without blocking it; a reasonable starting point before considering active blocking (IPS mode).

Step 5 — Monitor Alerts

sudo tail -f /var/log/suricata/fast.log

Reviewing Alerts in a More Structured Format

sudo tail -f /var/log/suricata/eve.json | jq

Suricata's JSON-formatted event log (eve.json) provides much richer, structured detail than the plain-text fast log, better suited for integration with centralized logging (see How to Set Up Centralized Logging with the ELK Stack (Elasticsearch, Logstash, Kibana)).

Integrating with Centralized Logging

Feed Suricata's eve.json output into your centralized logging platform for correlation with other security signals (see How to Set Up Security Incident Logging for Compliance (SIEM Basics)) — standalone Suricata alerts are useful, but far more powerful correlated with authentication logs and other security signals.

Tuning to Reduce False Positives

Default rule sets, particularly comprehensive community rule sets, can generate significant noise for your specific environment — review and disable/tune rules generating consistent false positives for your legitimate traffic patterns, rather than tolerating alert fatigue.

Considering IPS Mode (Active Blocking)

After a genuine tuning period confirming detection accuracy, Suricata can be configured to actively block detected malicious traffic (IPS mode) rather than just alerting — a more significant operational commitment, since false positives in blocking mode directly impact legitimate traffic.

Resource Considerations

Deep packet inspection at scale requires meaningful CPU resources — monitor Suricata's own resource consumption (see How to Monitor Windows Server Performance-style monitoring, applied here to Linux) and verify it doesn't itself become a performance bottleneck for your server's actual traffic volume.

Common Errors

High CPU usage from Suricata itself — consider reducing rule set scope to genuinely relevant categories for your environment, or verify your server has adequate CPU headroom for the traffic volume you're inspecting.

Continue Reading

Browse more articles in Advanced Security & Compliance.

  • suricata intrusion detection, network ids ips setup, suricata rules configuration, eve.json suricata
  • 0 Users Found This Useful
Was this answer helpful?

Related Articles

How to Install and Configure auditd for System Auditing

auditd is the Linux kernel's auditing framework, recording detailed logs of security-relevant...

GDPR Compliance Basics for a Self-Hosted VPS

If you handle personal data of EU residents, GDPR applies regardless of where your server is...

How to Prepare Your VPS Infrastructure for a SOC 2 Audit

SOC 2 evaluates an organization's controls around security, availability, and confidentiality of...

How to Harden SSH Beyond the Basics (Ciphers, MACs & Algorithms)

Beyond changing the port and disabling root login (see SSH Hardening: Change the Port, Disable...

How to Set Up AppArmor for Application Sandboxing

AppArmor confines individual applications to a defined set of permitted file, network, and...