Suricata IDS/IPS na Linuxe v roku 2026: Inštalácia, pravidlá a IPS režim

Praktický sprievodca nasadením Suricaty 7.0 LTS ako IDS a IPS na Linuxe. Pokrýva inštaláciu, NFQUEUE, AF_PACKET bridge, ET Open pravidlá, EVE JSON aj ladenie výkonu.

Suricata 7.0 IDS/IPS na Linuxe (2026)

Aktualizované: 24. mája 2026

Suricata je open-source sieťový systém detekcie a prevencie narušení (IDS/IPS), ktorý analyzuje prevádzku v reálnom čase pomocou viacvláknového engine, podpisových pravidiel a JA4 TLS fingerprintingu. Vo verzii 7.0 LTS, ktorá je v roku 2026 stále podporovaná, prináša natívnu integráciu s eBPF, výrazne lepší výkon na 25/100 Gbit rozhraniach a strojovo čitateľný EVE JSON výstup pre SIEM systémy ako Wazuh alebo ELK. V tomto sprievodcovi si prejdeme inštaláciu, prevádzku v režime IDS aj inline IPS, správu pravidiel a integráciu do existujúcej bezpečnostnej infraštruktúry.

  • Suricata 7.0 LTS je odporúčaná produkčná verzia s podporou do roku 2027 a obsahuje natívne JA4 fingerprinting, HTTP/2 dekódovanie a vylepšený DPDK zachytávač.
  • V režime IDS pracuje pasívne cez SPAN port alebo TAP; v režime IPS sa zaraďuje inline cez NFQUEUE alebo AF_PACKET IPS bridge.
  • Hlavným zdrojom podpisov sú pravidlá Emerging Threats Open spravované nástrojom suricata-update s podporou viacerých feedov.
  • EVE JSON výstup je natívne podporovaný vo Filebeate, Wazuhu, Logstash a Splunk Universal Forwarderi.
  • Pre 10 Gbit+ linky je nutné zapnúť AF_PACKET v3 s RSS, prípadne použiť DPDK alebo eBPF zachytávač s viacvláknovým spracovaním.
  • Suricata sa v roku 2026 stáva de facto štandardom v open-source IDS svete. Snort 2 dosiahol EOL a Snort 3 nemá porovnateľnú adopciu v komunite.

Čo je Suricata a ako funguje

Suricata je viacvláknový sieťový engine, ktorý súčasne plní úlohu IDS (Intrusion Detection System), IPS (Intrusion Prevention System), NSM (Network Security Monitoring) a parsera pre L7 protokoly. Vývoj zastrešuje neziskové konzorcium Open Information Security Foundation (OISF) a kód je distribuovaný pod licenciou GPLv2. Na rozdiel od klasických paketových filtrov Suricata neanalyzuje len hlavičky, ale rekonštruuje TCP toky, dekóduje HTTP, TLS, SMB, DNS, DHCP, FTP, SNMP a desiatky ďalších protokolov, a nad nimi aplikuje signatúry, ktoré dokážu zistiť napríklad pokus o exploit CVE-2024-3094 (XZ backdoor) alebo command-and-control komunikáciu malvéru.

Engine je rozdelený na zachytávacie vlákno (capture), dekódovacie vlákno (decode), vlákno na sledovanie tokov (flow), spracovanie pravidiel (detect) a výstupné vlákno (output). Vďaka tomu škáluje lineárne s počtom CPU jadier a na bežnom serveri s 16 vláknami a 64 GB RAM zvládne analyzovať 10 Gbit/s prevádzky s plnou sadou ET Open pravidiel. V roku 2026 je produkčne odporúčaná vetva 7.0 LTS, ktorá pridáva podporu HTTP/2, QUIC, JA4 fingerprintingu a má rozšírený dataset pre IoC korelácie.

Aký je rozdiel medzi Suricata a Snort?

Suricata a Snort sú dva najznámejšie open-source IDS engine, no líšia sa architektúrou, výkonom aj formátom pravidiel. Snort 2.x bol jednovláknový a v roku 2025 dosiahol koniec životnosti; Snort 3 priniesol viacvláknovosť, ale v komunite ho rýchlo predbehla Suricata, najmä vďaka kompatibilite s pôvodnými Snort pravidlami a bohatšiemu logovaniu. Pre väčšinu nasadení v roku 2026 odporúčam Suricatu, najmä ak plánujete export do SIEM alebo už používate pravidlá Emerging Threats.

VlastnosťSuricata 7.0Snort 3.1
ArchitektúraNatívne viacvláknové (worker model)Viacvláknové, ale len 1 vlákno na zachytávanie
Maximálna priepustnosť (single host)≈ 40 Gbit/s s DPDK≈ 10 Gbit/s
Formát pravidielSnort-kompatibilné + rozšírenia (lua, ja4)Snort 3 vlastný DSL, čiastočne spätná kompatibilita
Štruktúrovaný výstupEVE JSON (natívne)JSON cez plugin
TLS fingerprintJA3, JA3S, JA4, JA4SJA3 (cez plugin)
Komunita pravidielET Open, ET Pro, vlastné feedyTalos VRT, Snort Subscriber
LicenciaGPLv2GPLv2

Inštalácia Suricaty 7.0 na Debiane a RHEL

Na Debiane 12 a Ubuntu 24.04 LTS býva v oficiálnych repozitároch často staršia verzia, takže odporúčam PPA udržiavané priamo OISF, kde nájdete vždy aktuálnu LTS vetvu. Inštalácia trvá zhruba dve minúty a okrem samotného démona pridá aj nástroj suricata-update a štandardné systemd jednotky.

# Debian / Ubuntu (OISF PPA)
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt update
sudo apt install -y suricata jq

# Overenie verzie a podporovaných modulov
suricata --build-info | grep -E "Suricata version|AF_PACKET|NFQUEUE|DPDK|HAVE_LUA"

Na RHEL 9, Rocky Linux a AlmaLinux použite EPEL alebo OISF COPR repozitár, ktorý prináša najnovšiu 7.0.x verziu vrátane DPDK podpory. Postup je takmer identický s Debianom, len menažér balíkov je iný:

sudo dnf install -y epel-release
sudo dnf copr enable @oisf/suricata-7.0
sudo dnf install -y suricata jq

sudo systemctl enable --now suricata
sudo systemctl status suricata --no-pager

Po inštalácii skontrolujte, či je hlavný konfiguračný súbor /etc/suricata/suricata.yaml prístupný, a vytvorte adresáre pre pravidlá a logy:

sudo mkdir -p /var/lib/suricata/rules /var/log/suricata
sudo chown -R suricata:suricata /var/lib/suricata /var/log/suricata
sudo suricata-update list-sources

Konfigurácia v režime IDS

V režime IDS Suricata pasívne číta kópiu prevádzky z mirror portu prepínača (SPAN) alebo z hardvérového TAP zariadenia. Najdôležitejším krokom je správne nastavenie premennej HOME_NET, aby pravidlá vedeli rozlíšiť internú a externú sieť. Pri jednom nasadení som tento krok podcenil a výsledkom bolo, že nám chýbali desiatky upozornení na laterálny pohyb. Nerobte tú istú chybu.

# /etc/suricata/suricata.yaml (výňatok)
vars:
  address-groups:
    HOME_NET: "[10.0.0.0/8,192.168.0.0/16,172.16.0.0/12]"
    EXTERNAL_NET: "!$HOME_NET"
    HTTP_SERVERS: "$HOME_NET"
    DNS_SERVERS: "$HOME_NET"

af-packet:
  - interface: ens1f0
    threads: auto
    cluster-id: 99
    cluster-type: cluster_flow
    defrag: yes
    use-mmap: yes
    tpacket-v3: yes

default-rule-path: /var/lib/suricata/rules
rule-files:
  - suricata.rules

Po uložení konfigurácie spustite configtest, ktorý overí syntax a načítanie pravidiel pred reštartom služby. Pri produkčnom nasadení sa oplatí pridať --init-errors-fatal, aby sa služba nespustila s pokazeným pravidlom (raz mi takto Suricata bežala dva dni s chybnou regulárnou frázou a nevidela polovicu HTTP alertov).

sudo suricata -T -c /etc/suricata/suricata.yaml -v
sudo systemctl restart suricata
sudo tail -f /var/log/suricata/suricata.log

Ako nakonfigurovať Suricatu v IPS režime?

V režime IPS sa Suricata zaraďuje priamo do dátovej cesty a aktívne zahadzuje pakety, ktoré zodpovedajú pravidlám s akciou drop alebo reject. Najčastejšie sa používajú dva spôsoby: NFQUEUE (paketové fronty z netfiltru) alebo AF_PACKET IPS bridge medzi dvoma rozhraniami. NFQUEUE je flexibilnejší a hodí sa pre menšie inštalácie do 1 Gbit/s, kým AF_PACKET bridge je rýchlejší a vie zvládať line-rate prevádzku.

Pre NFQUEUE musíte najprv presmerovať FORWARD reťazec do fronty. Príklad s nftables, ktorý sa dá kombinovať s našim sprievodcom nftables firewallom pre Linux servery:

# /etc/nftables.conf (výňatok pre IPS bridging)
table inet ips {
    chain forward {
        type filter hook forward priority 0; policy accept;
        ct state established,related accept
        counter queue num 0 bypass
    }
}

# spustenie Suricaty v NFQUEUE móde
sudo suricata -q 0 -c /etc/suricata/suricata.yaml --pidfile /run/suricata-ips.pid -D

Pre AF_PACKET bridge potrebujete dve rozhrania (napríklad ens1f0 a ens1f1) a v konfigurácii af-packet nastavíte copy-mode: ips a copy-iface. Tým Suricata replikuje pakety medzi rozhraniami a zahadzuje len tie, ktoré zodpovedajú IPS pravidlám.

af-packet:
  - interface: ens1f0
    threads: 8
    cluster-id: 98
    cluster-type: cluster_flow
    copy-mode: ips
    copy-iface: ens1f1
    use-mmap: yes
    tpacket-v3: yes
  - interface: ens1f1
    threads: 8
    cluster-id: 97
    cluster-type: cluster_flow
    copy-mode: ips
    copy-iface: ens1f0
    use-mmap: yes
    tpacket-v3: yes

Správa pravidiel pomocou suricata-update

Suricata sa dodáva bez akýchkoľvek pravidiel. Najpopulárnejším bezplatným zdrojom sú Emerging Threats Open, ktoré obsahujú vyše 60 000 podpisov pre malvér, exploity, scenériu C2 a politicky citlivú prevádzku. Nástroj suricata-update ich stiahne, vyhodnotí závislosti a vyprodukuje finálny suricata.rules. Tak, poďme na to.

# jednorazové pridanie ET Open
sudo suricata-update enable-source et/open
sudo suricata-update enable-source tgreen/hunting
sudo suricata-update enable-source sslbl/ssl-fp-blacklist
sudo suricata-update

# vytvorenie cron joba pre nočnú aktualizáciu
echo "30 3 * * * root /usr/bin/suricata-update --quiet && /usr/bin/suricatasc -c reload-rules" \
     | sudo tee /etc/cron.d/suricata-update

Po aktualizácii pravidiel netreba reštartovať službu. Cez unix socket suricatasc sa pravidlá načítajú za behu bez straty stavu tokov. Vlastné firemné pravidlá ukladajte do samostatného súboru a pridajte ho cez --local, aby pri ďalšej aktualizácii neboli prepísané.

# vlastné pravidlo na detekciu CVE-2024-3094 (XZ backdoor)
echo 'alert tcp $EXTERNAL_NET any -> $HOME_NET 22 ( \
    msg:"SSH XZ Backdoor pattern"; \
    flow:established,to_server; \
    content:"|00 00 00 0c|"; offset:0; depth:4; \
    sid:2026001; rev:1;)' | sudo tee /etc/suricata/rules/local.rules

sudo suricata-update --local /etc/suricata/rules/local.rules

EVE JSON výstup a integrácia so SIEM

EVE (Extensible Event Format) je natívny štruktúrovaný výstup Suricaty v JSON formáte. Každý alert, HTTP požiadavka, TLS handshake, DNS dotaz, FileInfo udalosť či NetFlow tok je zapísaný ako samostatný JSON objekt, čo zjednodušuje parsovanie v ELK, Wazuhu, Splunku alebo Grafane Loki. V /etc/suricata/suricata.yaml povolíte EVE výstup nasledovne:

outputs:
  - eve-log:
      enabled: yes
      filetype: regular
      filename: /var/log/suricata/eve.json
      community-id: yes
      community-id-seed: 0
      types:
        - alert: { tagged-packets: yes }
        - http: { extended: yes }
        - dns
        - tls: { extended: yes, ja4: yes }
        - files: { force-magic: yes, force-hash: [sha256] }
        - flow
        - ssh
        - smb
        - quic

Wazuh agent dokáže EVE súbor automaticky parsovať pomocou localfile dekódera. Postup spárovania s centrálnou Wazuh inštanciou je popísaný v našom článku Wazuh ako open-source SIEM a XDR pre Linux. Pre ELK nasadenie použite Filebeat modul suricata, ktorý obsahuje hotové Kibana dashboardy.

# Filebeat (povolenie modulu Suricata)
sudo filebeat modules enable suricata
sudo filebeat setup --pipelines --modules suricata
sudo systemctl restart filebeat

Ladenie výkonu na vysokorýchlostných linkách

Pri linkách nad 1 Gbit/s sa rýchlo prejavia limity jednovláknového zachytávania. Suricata 7 podporuje tri zachytávače: AF_PACKET v3 (kernel, bez špeciálnych ovládačov), DPDK (poll-mode, vyžaduje uvoľnenie portu z kernelu) a eBPF/XDP, ktorý umožňuje pred-filtrovanie paketov priamo v kernely. Pre väčšinu nasadení postačuje AF_PACKET v3 s RSS rozdelením tokov na hardvérovej úrovni. Honestly, na 10 gigabitovej linke som AF_PACKET v3 vystačil bez problémov, no nad 25 Gbit/s sa už oplatí investovať čas do DPDK.

# zapnúť RSS, RPS a aktivovať tuning jadier
sudo ethtool -L ens1f0 combined 8
sudo ethtool -K ens1f0 gro off lro off tso off gso off

# pripínanie Suricata vlákien na konkrétne jadrá
threading:
  set-cpu-affinity: yes
  cpu-affinity:
    - management-cpu-set: { cpu: [ 0 ] }
    - receive-cpu-set:    { cpu: [ 1 ] }
    - worker-cpu-set:     { cpu: [ "2-15" ], mode: exclusive, prio: { default: high } }

Užitočným nástrojom je suricatasc -c uptime a iface-stat ens1f0, ktoré zobrazia počet zahodených (drop) paketov priamo v ringbufferi. Ak hodnota kernel_drops narastá, zvýšte ring-size v AF_PACKET sekcii alebo prejdite na DPDK. Pre dôslednejšie spevnenie operačného systému pod sieťovým senzorom použite naše odporúčania v článku spevnenie linuxového jadra pomocou sysctl parametrov, najmä parametre net.core.netdev_max_backlog a net.core.rmem_max.

Monitorovanie prevádzky a detekcia hrozieb

Aj keď Suricata generuje obrovské množstvo telemetrie, skutočná hodnota vzniká až vtedy, keď alerty dokážete triediť a korelovať. Pre rýchle ad-hoc analýzy je ideálny jq, ktorý EVE súbor filtruje na úrovni JSON polí. Nasledujúci príkaz vám napríklad ukáže top 10 hostiteľov s najvyšším počtom alertov za posledných 24 hodín:

jq -r 'select(.event_type=="alert") | .src_ip' \
   /var/log/suricata/eve.json | sort | uniq -c | sort -rn | head -10

Pre dlhodobé monitorovanie zoradíme Suricatu medzi ostatné detekčné vrstvy: na hraniciach sa stará o CrowdSec ako kolaboratívne IPS proti útokom, v sieti samotná Suricata, na hostiteľoch Wazuh agent a na úrovni jadra eBPF Tetragon. Tým získate viacúrovňovú obranu, kde každá vrstva pokrýva slepé miesto tej predchádzajúcej. Pre tlmenie nadmernej zaťaže odporúčam nastaviť threshold.config s pravidlami typu rate_filter, ktoré pri vysokej frekvencii alertov dočasne zvýšia prah.

V roku 2026 sa oplatí kombinovať Suricatu s detekciou JA4 odtlačkov, ktoré identifikujú nezvyčajné TLS klienty (napríklad Cobalt Strike, Sliver alebo Mythic). Aktiváciou tls.ja4: yes a importom datasetu ja4_malicious získate v alertoch presné identifikátory známych útočníckych nástrojov.

Časté otázky

Aké hardvérové požiadavky má Suricata pre produkčné nasadenie?

Pre 1 Gbit/s linku stačí 4 vlákna CPU a 8 GB RAM. Pre 10 Gbit/s odporúčam minimálne 16 fyzických jadier, 64 GB RAM a sieťovú kartu s podporou RSS (Intel X710, Mellanox ConnectX-5 a vyššie). Pri 40 Gbit/s a viac je nutné použiť DPDK zachytávač a CPU s aspoň 32 jadrami.

Môže Suricata bežať v cloude bez prístupu k SPAN portu?

Áno. V AWS sa používa VPC Traffic Mirroring, v Azure Virtual Network TAP a v GCP Packet Mirroring. Suricata prijíma zrkadlenú prevádzku cez VXLAN alebo ERSPAN tunel, ktorý dešifruje natívnym dekodérom decoder.vxlan.

Ako často aktualizovať pravidlá Emerging Threats?

ET Open feed sa publikuje denne, väčšinou medzi 02:00 a 04:00 UTC. Preto je optimálne spustiť suricata-update raz za 24 hodín cez cron a následne reloadnúť pravidlá cez suricatasc -c reload-rules, aby ste nestrácali stav existujúcich tokov.

Je Suricata vhodná na šifrovanú HTTPS prevádzku?

Bez TLS inšpekcie Suricata nevidí obsah šifrovaných paketov, ale stále dokáže detekovať škodlivé správanie pomocou TLS metadát: SNI, JA3/JA4 fingerprintov, dĺžkových profilov a reputácie certifikátov. Pre plný DPI vstup je potrebné kombinovať s TLS proxy ako mitmproxy alebo nginx s SSL bumpingom.

Aký je rozdiel medzi alert a drop akciou v pravidle?

alert iba zaznamená udalosť do EVE logu a paket prepustí. drop funguje len v IPS režime a paket zahodí, zatiaľ čo reject navyše pošle TCP RST alebo ICMP unreachable iniciátorovi spojenia. V testovacej fáze používajte výlučne alert, kým neoveríte mieru falošných pozitív.

O Autorovi Editorial Team

Our team of expert writers and editors.