0Pricing
Cyber Security Academy · Lezione

Regole basate su firme con Snort e Suricata

Scrivere e leggere regole di rete.

Regole basate su firme con Snort e Suricata è una lezione Cyber Security Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cyber Security Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cyber Security Academy include 4 lezioni in totale.

Snort e Suricata

Snort e Suricata sono i due principali motori IDS/IPS open source. Condividono un linguaggio delle regole in gran parte compatibile, quindi una regola scritta per l'uno viene generalmente eseguita anche dall'altro.

Suricata aggiunge il multi-threading, parser nativi dei protocolli, l'estrazione dei file e un logging dettagliato (EVE JSON); Snort 3 ha modernizzato in modo analogo il proprio motore. Imparare una volta la sintassi delle regole consente di lavorare efficacemente con entrambi.

Struttura di una regola

Ogni regola è composta da due parti: un header e un corpo tra parentesi contenente le opzioni. L'header definisce l'azione, il protocollo e la direzione del traffico; il corpo specifica che cosa cercare e come segnalarlo.

alert tcp $EXTERNAL_NET any -> $HOME_NET 80 ( \
  msg:"WEB suspicious request"; \
  content:"/admin.php"; http_uri; \
  sid:1000001; rev:1; )

I campi dell'intestazione

L'intestazione si legge da sinistra a destra:

  • azione — alert, drop, reject, pass
  • protocollo — tcp, udp, icmp, ip (oppure i protocolli applicativi in Suricata: http, dns, tls)
  • IP/porta di origine e IP/porta di destinazione
  • direzione — -> unidirezionale oppure <> bidirezionale

Le variabili come $HOME_NET e $EXTERNAL_NET provengono dalla configurazione, così le regole restano portabili tra ambienti diversi.

drop tcp any any -> $HOME_NET 22 ( msg:"SSH blocked"; sid:1000002; rev:1; )

Azioni: Alert vs Drop

L'azione determina il comportamento IDS o IPS della regola:

  • alert — registra e notifica, senza interrompere il traffico (IDS)
  • drop — scarta silenziosamente il pacchetto (IPS, solo in modalità inline)
  • reject — scarta il pacchetto e invia un reset TCP oppure un messaggio ICMP di destinazione irraggiungibile
  • pass — consente esplicitamente il traffico, ignorando le regole successive

Lo stesso motore può funzionare come IDS o IPS a seconda che sia distribuito in modalità inline e delle azioni utilizzate.

Corrispondenza del contenuto

La parola chiave content cerca una sequenza di byte nel payload. Il testo è racchiuso tra virgolette; i dati binari sono racchiusi tra barre verticali e rappresentati in esadecimale.

Le parole chiave di ancoraggio rendono le corrispondenze più precise: offset, depth, distance e within limitano la posizione in cui può comparire il modello, migliorando sia l'accuratezza sia le prestazioni.

alert tcp any any -> $HOME_NET any ( \
  msg:"Malware magic bytes"; \
  content:"|4D 5A|"; offset:0; depth:2; \
  sid:1000003; rev:1; )

Buffer sticky

Le regole moderne cercano corrispondenze nei buffer consapevoli del protocollo anziché nel flusso grezzo. Dopo una parola chiave che seleziona un buffer, le successive corrispondenze content vengono applicate a quella parte del protocollo analizzato.

  • http_uri — l'URI della richiesta
  • http_header — le intestazioni della richiesta o della risposta
  • http_user_agent — il valore User-Agent
  • tls_sni / dns_query — il nome del server TLS / la query DNS

È molto più affidabile che cercare una sottostringa nell'intero pacchetto.

alert http any any -> any any ( \
  msg:"Suspicious user agent"; \
  http.user_agent; content:"sqlmap"; nocase; \
  sid:1000004; rev:1; )

PCRE e nocase

Quando le stringhe fisse non bastano, pcre introduce le espressioni regolari compatibili con Perl. Abbini un filtro preliminare content, poco costoso, a pcre, così l'espressione regolare viene eseguita solo sui pacchetti candidati, preservando le prestazioni.

Il modificatore nocase rende la corrispondenza del contenuto senza distinzione tra maiuscole e minuscole; è importante per le intestazioni e per i campi controllati dall'utente, che gli attaccanti possono variare.

alert http any any -> $HOME_NET any ( \
  msg:"SQLi attempt in URI"; \
  http.uri; content:"select"; nocase; \
  pcre:"/union\s+select/i"; \
  sid:1000005; rev:1; )

Parole chiave per flusso e stato

L'opzione flow limita una regola allo stato e alla direzione della connessione, riducendo i falsi positivi e il costo di elaborazione.

  • established — solo nelle sessioni TCP completate
  • to_server / to_client — direzione della richiesta o della risposta

Cercare le risposte del server solo quando la connessione è stabilita e la direzione è to_client evita di attivare la regola per pacchetti isolati o contraffatti.

alert tcp $HOME_NET any -> $EXTERNAL_NET any ( \
  msg:"Beacon response"; \
  flow:established,to_client; \
  content:"|00 01 02 03|"; \
  sid:1000006; rev:1; )

Metadati: sid, rev, msg, reference

Le opzioni di gestione mantengono un ruleset facilmente manutenibile:

  • sid — ID univoco della signature (usi 1000000+ per le regole locali)
  • rev — numero di revisione, da incrementare a ogni modifica
  • msg — il testo dell'avviso visualizzato dagli analisti
  • classtype — categoria che determina la priorità
  • reference — collegamento a un CVE o a un avviso di sicurezza

sid stabili e rev incrementali consentono di monitorare e aggiornare le regole senza compromettere dashboard e soppressioni.

alert tcp any any -> $HOME_NET 445 ( \
  msg:"EternalBlue exploit attempt"; \
  flow:to_server,established; content:"|FF|SMB"; \
  classtype:attempted-admin; \
  reference:cve,2017-0144; sid:1000007; rev:2; )

Differenze tra Snort e Suricata

Sebbene siano compatibili a livello di regole, i due motori offrono funzionalità diverse:

  • Suricata è multithread, analizza nativamente i protocolli applicativi, estrae file, calcola JA3 e genera JSON EVE
  • Snort 3 ha riscritto il proprio motore per migliorare le prestazioni e introdurre un sistema modulare di plugin

Alcune parole chiave sono specifiche del motore. Suricata aggiunge parole chiave del livello applicativo (tls.sni, dns.query, http.method) e funzionalità dataset/flowbits. Quando condivide le regole, punti al minimo comune denominatore oppure mantenga ruleset specifici per ciascun motore.

Filtri di frequenza e soglie

Per evitare che una regola inondi la console, applichi delle soglie. detection_filter si attiva solo dopo N eventi in una finestra temporale; threshold con limit limita il volume degli avvisi.

È essenziale per il rilevamento degli attacchi di forza bruta e delle scansioni, in cui un singolo evento non è significativo ma lo è una raffica di eventi.

alert tcp any any -> $HOME_NET 22 ( \
  msg:"SSH brute force"; flow:to_server; \
  detection_filter:track by_src, count 5, seconds 60; \
  sid:1000008; rev:1; )

Verifica rapida

Legga una regola e ne prevedա il comportamento.

Riepilogo

Ora è in grado di leggere e scrivere le signature Snort/Suricata:

  • Una regola = intestazione (azione, protocollo, origine/destinazione, direzione) + opzioni del corpo
  • L'azione determina IDS o IPS: alert, drop, reject, pass
  • content con offset/depth e corrispondenze esadecimali individua i byte del payload
  • I buffer sticky (http.uri, tls.sni, dns.query) confrontano i campi del protocollo analizzato
  • pcre e nocase gestiscono modelli variabili
  • flow limita la corrispondenza allo stato e alla direzione
  • sid/rev/msg/reference mantengono le regole facilmente manutenibili
  • Le soglie riducono il rumore prodotto da attacchi di forza bruta e scansioni

Prossimo argomento: rilevare le minacce senza alcuna signature.

Domande Frequenti

La lezione «Regole basate su firme con Snort e Suricata» è gratuita?

Sì — il testo completo di «Regole basate su firme con Snort e Suricata» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cyber Security Academy, passa a CoddyKit PRO. Il corso Cyber Security Academy include 4 lezioni in totale.

Cosa imparerò in «Regole basate su firme con Snort e Suricata»?

Scrivere e leggere regole di rete. Eserciti Cyber Security Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cyber Security Academy?

Non è richiesta alcuna esperienza precedente. Cyber Security Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Regole basate su firme con Snort e Suricata»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cyber Security Academy?

Sì. Ogni lezione Cyber Security Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Concetti di IDS e IPS
  2. Regole basate su firme con Snort e Suricata
  3. Rilevamento di anomalie e comportamenti
  4. Ottimizzazione e distribuzione
← Torna a Cyber Security Academy