Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

Suricata IDS/IPS — wykrywanie i blokowanie ataków na VPS

Opublikowano: 10 kwietnia 2026 · Kategoria: Bezpieczeństwo

Firewall (UFW, iptables) blokuje porty, ale nie rozumie zawartości pakietów. Suricata to wielowątkowy silnik IDS/IPS, który analizuje ruch sieciowy na poziomie warstwy aplikacji — wykrywa ataki SQLi, XSS, skanowanie portów, exploity, malware C2 i tysiące innych zagrożeń na podstawie sygnatury. W trybie IDS generuje alerty; w trybie IPS inline (NFQUEUE) blokuje złośliwe pakiety zanim dotrą do aplikacji. Ten artykuł przeprowadza przez instalację na Ubuntu, konfigurację reguł Emerging Threats, integrację z Filebeat i tuning false-positive.

Instalacja Suricata na Ubuntu

# Oficjalne PPA Suricaty (zawsze aktualne)
sudo add-apt-repository ppa:oisf/suricata-stable -y
sudo apt update && sudo apt install suricata suricata-update -y

# Sprawdz wersje
suricata --version

# Domyslny interfejs sieciowy
ip link show
# Najczesciej: eth0, ens3, ens18 — sprawdz na swoim VPS

# Ustaw interfejs w konfiguracji
sudo nano /etc/suricata/suricata.yaml
# Znajdz sekcje:
#   af-packet:
#     - interface: eth0   # <-- zmien na swoj interfejs

# Test konfiguracji
sudo suricata -T -c /etc/suricata/suricata.yaml

Reguły Emerging Threats — instalacja i aktualizacja

Emerging Threats (ET Open) to najpopularniejszy bezpłatny zestaw reguł IDS. Suricata-update automatyzuje pobieranie i zarządzanie zestawami reguł. Poniżej kompletna konfiguracja z harmonogramem aktualizacji:

# Pobierz liste dostepnych zestawow regul
sudo suricata-update list-sources

# Wlacz ET Open (bezplatny)
sudo suricata-update enable-source et/open

# Opcjonalnie: OISF Traffic ID
sudo suricata-update enable-source oisf/trafficid

# Zaktualizuj reguly
sudo suricata-update

# Sprawdz ile regul zostalo zaladowanych
sudo suricata-update --no-merge 2>&1 | grep "Total"
# Przykladowy output:
# Total: 45000 rules, 41200 enabled, 3800 disabled

# Automatyczna aktualizacja (cron - codziennie o 02:00)
echo "0 2 * * * root /usr/bin/suricata-update && /usr/bin/systemctl reload suricata" \
  | sudo tee /etc/cron.d/suricata-update

# Uruchom Suricata
sudo systemctl enable --now suricata
sudo systemctl status suricata

Tryb IPS inline — NFQUEUE dla blokowania ataków

W trybie IDS Suricata jest pasywna — tylko obserwuje i loguje. Tryb IPS (inline) przez NFQUEUE umożliwia aktywne blokowanie. Każdy pakiet przechodzi przez kolejkę netfilter, gdzie Suricata decyduje czy go przepuścić czy odrzucić. Konfiguracja wymaga zmian w iptables i pliku konfiguracyjnym:

# Krok 1: Skonfiguruj iptables NFQUEUE
sudo iptables -I FORWARD -j NFQUEUE --queue-num 0
sudo iptables -I INPUT   -j NFQUEUE --queue-num 0
sudo iptables -I OUTPUT  -j NFQUEUE --queue-num 0

# Zachowaj reguly iptables po restarcie
sudo apt install iptables-persistent -y
sudo netfilter-persistent save

# Krok 2: Wlacz tryb NFQUEUE w suricata.yaml
# Edytuj /etc/suricata/suricata.yaml:
#
# nfq:
#   mode: accept             # domyslna akcja = accept
#   failed-open: yes         # jesli Suricata jest przeciazona - przepusc
#
# Uruchom Suricata w trybie NFQUEUE
sudo suricata -c /etc/suricata/suricata.yaml -q 0

# Lub jako systemd service z NFQUEUE
# Edytuj /etc/default/suricata:
# LISTENMODE=nfqueue
# NFQUEUE=0

sudo systemctl restart suricata

# Zweryfikuj ze Suricata blokuje (test):
# Wyslij request z curl - powinna byc odpowiedz 200
# Sprawdz logi: sudo tail -f /var/log/suricata/fast.log

Analiza logów — EVE JSON i fast.log

Suricata generuje dwa główne pliki logów: fast.log (czytelny dla człowieka, jeden alert per linia) i eve.json (pełny JSON z metadanymi — preferowany do integracji z SIEM). Poniżej komendy do analizy alertów:

# Biezace alerty (czytelny format)
sudo tail -f /var/log/suricata/fast.log

# Przykladowy alert:
# 04/10/2026-14:23:01 [**] [1:2027865:4] ET SCAN Potential SSH Scan [**]
# [Classification: Attempted Information Leak] [Priority: 2]
# {TCP} 192.0.2.100:54321 -> 10.0.0.1:22

# Analiza eve.json (wymagany jq)
sudo apt install jq -y

# Ostatnie 10 alertow z IP i signatura
sudo tail -n 100 /var/log/suricata/eve.json | \
  jq -r 'select(.event_type == "alert") |
    "\(.timestamp) \(.src_ip) -> \(.dest_ip) [\(.alert.signature)]"'

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

# Alerty konkretnej kategorii (np. skanowanie)
sudo cat /var/log/suricata/eve.json | \
  jq 'select(.event_type == "alert" and
    (.alert.category | test("Scan"; "i")))' | \
  jq -r '"\(.timestamp) \(.src_ip) \(.alert.signature)"'

Integracja z Filebeat i ELK Stack

EVE JSON jest formatem natywnie obsługiwanym przez Filebeat. Moduł suricata automatycznie parsuje logi i wysyła je do Elasticsearch lub Logstash. Poniżej minimalna konfiguracja:

# Zainstaluj Filebeat (jezeli masz ELK Stack)
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.12.0-amd64.deb
sudo dpkg -i filebeat-8.12.0-amd64.deb

# Wlacz modul Suricata
sudo filebeat modules enable suricata

# Sprawdz domyslna konfiguracje modulu
cat /etc/filebeat/modules.d/suricata.yml

# Skonfiguruj output do Elasticsearch
# /etc/filebeat/filebeat.yml:
# output.elasticsearch:
#   hosts: ["https://your-elk:9200"]
#   username: "elastic"
#   password: "HASLO"

# Zainstaluj dashboardy (Kibana musi byc dostepna)
sudo filebeat setup --dashboards \
  -E setup.kibana.host=your-kibana:5601

# Uruchom Filebeat
sudo systemctl enable --now filebeat

# Sprawdz czy logi plyna
sudo filebeat test output

Tuning reguł — eliminacja false-positive

Domyślnie ET Open zawiera dziesiątki tysięcy reguł — część wygeneruje false-positive dla typowego serwera webowego. Poniżej techniki dostosowania reguł przez suricata-update:

# Plik modyfikacji regul: /etc/suricata/disable.conf
# Wylaczy regule po SID (ID reguły)
# Znajdz SID z fast.log: [1:2027865:4] -> SID = 2027865

# Przykladowy /etc/suricata/disable.conf:
# 2027865   # False positive: legitymny SSH admin
# 2210051   # False positive: scanner naszego Uptime Robot

# Plik /etc/suricata/threshold.conf - ograniczenie alertow:
# suppress gen_id 1, sig_id 2027865, track by_src, ip 203.0.113.10
# Powyzsze: ignoruj alerty SSH z konkretnego IP admina

# Wylaczy cale kategorie regul:
sudo nano /etc/suricata/enable.conf
# Dodaj: group:emerging-policy  # itp.

# Lub przez suricata-update CLI:
sudo suricata-update add-conf /etc/suricata/disable.conf
sudo suricata-update add-conf /etc/suricata/threshold.conf
sudo suricata-update
sudo systemctl reload suricata

# Przetestuj konfiguracje
sudo suricata -T -c /etc/suricata/suricata.yaml -v

Suricata vs Snort — porównanie

Cecha Suricata 7.x Snort 3.x
Wielowątkowość Natywna (od v1) Tak (od Snort 3)
Inspekcja protokołów HTTP/TLS/DNS/SSH/SMB i inne HTTP/TLS i inne (mniej)
Format logów EVE JSON (gotowy do SIEM) Unified2 (wymaga konwersji)
Tryb IPS NFQUEUE, AF_PACKET inline NFQUEUE, IPFW
Reguły ET Open Natywnie kompatybilne Natywnie kompatybilne
Lua skrypty Tak Tak (Lua w regułach)
Społeczność Rosnąca, aktywna Większa, dłuższa historia
Rekomendacja Nowe wdrożenia, multi-thread Środowiska z istniejącą inf.

Najczęstsze pytania

Czym różni się IDS od IPS w Suricacie? +
IDS (Intrusion Detection System) tylko wykrywa ataki i generuje alerty — ruch nie jest blokowany. IPS (Intrusion Prevention System) działa inline, przechwytuje pakiety przez NFQUEUE i może je upuścić zanim dotrą do aplikacji. Suricata obsługuje oba tryby: w trybie IDS uruchamiamy ją na interfejsie sieciowym jako pasywny sniffer, w trybie IPS konfigurujemy iptables NFQUEUE i Suricata decyduje co przepuścić. Na VPS zaczynamy od IDS, by zebrać logi bez ryzyka false-positive zablokowania ruchu.
Czym są reguły Emerging Threats i jak je zaktualizować? +
Emerging Threats (ET) to jeden z największych open-source zestawów reguł IDS/IPS. Zawiera sygnatury dla malware, exploitów, skanerów portów, botnetów i ataków sieciowych. Suricata-update pobiera je automatycznie: suricata-update update-sources, suricata-update enable-source et/open, suricata-update. Reguły ET Open są bezpłatne; ET Pro (płatne) dają dostęp do sygnatury z 30-dniowym wyprzedzeniem.
Jak Suricata różni się od Snorta? +
Suricata jest wielowątkowa od podstaw — potrafi wykorzystać wiele rdzeni CPU jednocześnie, co przekłada się na wyższą przepustowość. Snort 3 też jest wielowątkowy, ale Suricata ma dodatkowo wbudowaną inspekcję protokołów (HTTP, TLS, DNS, SSH) i obsługuje reguły Snorta z minimalnymi modyfikacjami. Suricata generuje eventy w formacie JSON (EVE log) gotowym do integracji z ELK/SIEM. Snort ma dłuższą historię i bardzo aktywną społeczność, Suricata jest preferowana w nowych wdrożeniach.
Ile zasobów potrzebuje Suricata na VPS? +
Na typowym VPS z ruchem webowym Suricata w trybie IDS potrzebuje ok. 256-512 MB RAM i 0.5-1 rdzeń CPU. Tryb IPS (NFQUEUE) dodaje pewne opóźnienie (1-5 ms) i zużywa więcej CPU. Można ograniczyć zestaw reguł do kategorii relevant dla serwera (np. wyłączyć reguły DNS jeśli nie mamy serwera DNS). Suricata-update pozwala włączać/wyłączać całe kategorie reguł.
Jak integrować logi Suricaty z Filebeat i ELK? +
Suricata zapisuje zdarzenia do /var/log/suricata/eve.json w formacie JSON (EVE). Filebeat z modułem suricata czyta ten plik i wysyła zdarzenia do Logstash lub Elasticsearch. Wystarczy: filebeat modules enable suricata, skonfigurować output.elasticsearch lub output.logstash w filebeat.yml i uruchomić filebeat setup --dashboards. Kibana ma gotowy dashboard z mapą geograficzną ataków, listą alertów i statystykami protokołów.

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.