Guida alle tecnologie

Come configurare un IPS su Fedora 17

6 min read Sicurezza Aggiornato 24 Sep 2025
Configurare un IPS su Fedora 17
Configurare un IPS su Fedora 17

TL;DR

In questa guida passo-passo configuri Suricata come IPS su Fedora 17 usando Vuurmuur per inoltrare il traffico a Suricata tramite NFQUEUE. Copre installazione, test in modalità IDS, passaggio a IPS inline, regole di esempio per il blocco e checklist operativa.

Introduzione

Vuurmuur è un gestore di firewall per Linux. Traduce una sintassi di regole leggibile dall’umano nelle corrette chiamate iptables. Offre visualizzazione log, shaping del traffico, terminazione di connessioni e altre funzionalità utili.

Suricata è un motore IDS/IPS relativamente moderno. È multithreaded per migliori prestazioni, supporta modalità IDS e IPS, può estrarre file da stream HTTP e offre molte altre funzionalità.

Fedora 17 include nei repository sia Vuurmuur sia Suricata. Questa guida mostra come ottenere un IPS funzionante usando solo i pacchetti Fedora.

Prerequisiti

  • Accesso root o sudo su una macchina Fedora 17.
  • Interfaccia di rete principale (nell’esempio: eth0).
  • Connettività Internet per scaricare le regole IDS/IPS.

Importante: Fedora 17 è una versione datata. Valuta il passaggio a una versione supportata per produzione.

1) Installare Vuurmuur e Suricata

Esegui come root:

yum install suricata Vuurmuur-daemon Vuurmuur-tui

2) Eseguire Suricata in modalità IDS (test passivo)

Un IPS può bloccare traffico se mal configurato. Per questo è consigliato prima testare in modalità IDS (passiva).

Scarichiamo le regole Emerging Threats ottimizzate per Suricata e mettiamole in /etc/suricata/rules/:

cd /etc/suricata/
curl -O https://rules.emergingthreatspro.com/open/suricata/emerging.rules.tar.gz
tar xzvf emerging.rules.tar.gz
ln -s /etc/suricata/rules/reference.config /etc/suricata/reference.config
ln -s /etc/suricata/rules/classification.config /etc/suricata/classification.config
cp /etc/suricata/rules/suricata-1.2-prior-open.yaml /etc/suricata/suricata.yaml

Testa Suricata con l’interfaccia di prova (sostituisci eth0 con l’interfaccia corretta):

suricata -c /etc/suricata/suricata.yaml -i eth0

Lascia Suricata in esecuzione per qualche minuto e controlla /var/log/suricata/stats.log e /var/log/suricata/http.log per confermare che l’ispezione funzioni. Genera traffico aprendo un browser e visitando alcuni siti.

3) Passare a Suricata in modalità IPS (inline)

Per permettere a Suricata di bloccare il traffico, iptables deve inoltrare pacchetti a Suricata tramite NFQUEUE. Usiamo Vuurmuur per gestire le regole del firewall.

Apri la configurazione grafica di Vuurmuur (vuurmuur_conf). Vai alla sezione “Rules” (Regole) e aggiungi una regola iniziale che accetta tutto e abiliti il logging:

accept service any from any to any log

L’aspetto della regola è mostrato nello screenshot.

Schermata che mostra una regola Vuurmuur che accetta tutto con logging

Poi, per poter avviare il servizio Vuurmuur, aggiungi un’interfaccia nella configurazione.

Vai a “Interfaces” (Interfacce) e aggiungi una nuova interfaccia; nel campo Device inserisci “eth0”:

Schermata Vuurmuur: aggiunta dell'interfaccia eth0

Quando hai finito, esci da vuurmuur_conf.

Per far funzionare correttamente il logging di Vuurmuur è necessario adattare la configurazione di rsyslog. Modifica /etc/rsyslog.conf e aggiungi la riga:

*.debug /var/log/debug

Poi riavvia rsyslog:

service rsyslog restart

Avvia Vuurmuur:

service vuurmuur start

Assicurati che Vuurmuur venga avviato automaticamente al boot:

systemctl enable vuurmuur.service

Apri di nuovo vuurmuur_conf e vai al logviewer per verificare che il traffico passi:

Log viewer di Vuurmuur che mostra traffico in transito

Se tutto è regolare, procediamo a inoltrare il traffico a Suricata per l’ispezione profonda.

Inoltrare tutto a Suricata (NFQUEUE)

Cambia la regola Vuurmuur precedente in:

nfqueue service any from any to any

La regola apparirà così nello strumento:

Regola Vuurmuur che inoltra tutto a NFQUEUE

Questa regola invierà tutto il traffico a Suricata. Applica le modifiche in vuurmuur_conf; questo aggiornerà automaticamente il firewall. Il logviewer mostrerà l’inoltro verso NFQUEUE.

Log Vuurmuur dopo il passaggio a NFQUEUE

Avvia Suricata in modalità inline con la coda 0:

suricata -c /etc/suricata/suricata.yaml -q0

Apri il browser e verifica che il traffico scorra. Controlla /var/log/suricata/stats.log e /var/log/suricata/http.log per confermare il funzionamento.

Esempio parziale di stats.log generato durante il test:

-------------------------------------------------------------------
Date: 10/8/2012 -- 17:20:08 (uptime: 0d, 01h 39m 02s)
-------------------------------------------------------------------
Counter                   | TM Name                   | Value
-------------------------------------------------------------------
decoder.pkts              | Decode1                   | 3147
decoder.bytes             | Decode1                   | 1453192
decoder.ipv4              | Decode1                   | 3147
decoder.ipv6              | Decode1                   | 0
... (output abbreviato)
detect.alert              | Detect                    | 0

Esempio parziale di http.log:

10/08/2012-17:24:02.447292 www.howtoforge.com [] / [] Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1 [] 192.168.122.48:48396 -> 188.40.16.205:80
10/08/2012-17:24:02.544458 static.howtoforge.com [] /misc/drupal.css [] Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1 [] 192.168.122.48:52942 -> 178.63.27.110:80

Chiudi Suricata in esecuzione con Ctrl-C e modifica /etc/sysconfig/suricata per avviarlo da servizio. Imposta OPTIONS come segue:

OPTIONS="-q 0 -D --pidfile /var/run/suricata.pid"

Poi avvia Suricata come servizio e abilitalo al boot:

service suricata start
systemctl enable suricata.service

4) Bloccare (droppare) traffico con Suricata

Finora niente è stato droppato. Le regole scaricate di default usano la azione “alert”, quindi non bloccano.

Modifica /etc/suricata/suricata.yaml e nella sezione stream imposta inline su yes. Questo abilita la riassemblaggio dei flussi in modalità IPS:

stream:
  memcap: 32mb
  checksum_validation: yes      # reject wrong csums
  inline: yes

Aggiungi poi local.rules alla lista dei file di regole caricati:

default-rule-path: /etc/suricata/rules/
rule-files:
 - local.rules
 - emerging-ftp.rules
 - emerging-policy.rules

Crea il file /etc/suricata/rules/local.rules e aggiungi, su una singola riga, una regola di drop d’esempio che blocchi richieste contenenti “facebook.com”:

drop tcp any any -> any any (msg:"facebook is blocked"; content:"facebook.com"; http_header; nocase; classtype:policy-violation; sid:1;)

Riavvia Suricata:

service suricata restart

Ora prova ad aprire http://www.facebook.com/ con il browser: la richiesta dovrebbe andare in timeout.

Il file /var/log/suricata/fast.log mostrerà voci di drop come queste:

10/06/2012-11:40:49.018377  [Drop] [] [1:1:0] facebook is blocked [] [Classification: Potential Corporate Privacy Violation] [Priority: 1] {TCP} 192.168.122.48:57113 -> 173.252.100.16:80
10/06/2012-11:40:49.020955  [Drop] [] [1:1:0] facebook is blocked [] [Classification: Potential Corporate Privacy Violation] [Priority: 1] {TCP} 192.168.122.48:57114 -> 173.252.100.16:80

Importante: questa regola è solo un esempio. In produzione gestisci le regole con cura per evitare falsi positivi e interruzioni del servizio.

Checklist operativa rapida (ruoli)

  • Amministratore di sistema:
    • Installare pacchetti e assicurare avvio servizi (rsyslog, vuurmuur, suricata).
    • Verificare che Vuurmuur gestisca l’interfaccia corretta.
  • Network engineer:
    • Confermare che NFQUEUE instradi il traffico desiderato.
    • Monitorare latenza e utilizzo CPU/memoria.
  • Analista sicurezza:
    • Testare le regole in IDS prima di abilitare il drop.
    • Scrivere regole locali e validare sid/descrizioni.

Approcci alternativi e quando usarli

  • Usare iptables/nfqueue manualmente: utile per ambienti senza Vuurmuur o per scripts di automazione.
  • Snort in modalità inline: alternativa a Suricata se si preferisce l’ecosistema Snort; valuta costi di manutenzione delle regole.
  • Offload su dispositivo dedicato: in reti ad alto traffico considera un’appliance o bilanciamento per evitare che l’IPS diventi collo di bottiglia.

Modello mentale e buone pratiche

  • Fase 1: Test in IDS (registrazione) — osserva e taratura le regole.
  • Fase 2: Modalità inline su una porzione limitata di traffico — monitoraggio intensivo.
  • Fase 3: Estensione graduale e automatizzazione delle regole approvate.

Regola pratica: prima di droppare, assicurati che ogni regola abbia una contromisura per il falso positivo (es. whitelist o bypass su IP critici).

Breve playbook di deploy (SOP)

  1. Installare pacchetti.
  2. Scaricare regole e configurare suricata.yaml.
  3. Avviare Suricata in IDS e raccogliere dati per almeno 24 ore.
  4. Creare local.rules e testarle in IDS.
  5. Abilitare inline e campionare il traffico su sottoreti non critiche.
  6. Monitorare logs e metriche; rollback se si osservano interruzioni.

Quando un IPS può fallire (controesempi)

  • Alte latenze se il server Suricata è sottodimensionato rispetto al throughput.
  • False positive che bloccano servizi importanti se le regole non sono tarate.
  • Problemi con traffico cifrato: l’ispezione HTTP richiede terminazione TLS o decrittazione a monte.

Note di compatibilità e migrazione

  • Fedora 17 è datato: per ambienti di produzione privilegia versioni supportate o distribuzioni enterprise.
  • Suricata evolve: verifica la compatibilità delle regole e dei file di configurazione quando esegui l’upgrade.

Glossario (1 linea ciascuno)

  • IPS: Intrusion Prevention System, blocca le minacce in linea.
  • IDS: Intrusion Detection System, rileva e segnala anomalie.
  • NFQUEUE: meccanismo del kernel Linux per passare pacchetti all’userland.
  • Vuurmuur: gestore di firewall che semplifica iptables.
  • Suricata: motore IDS/IPS open source multithreaded.

Ulteriori letture consigliate

  • Suricata User Guide
  • Rule management con oinkmaster
  • Vuurmuur user guide

Riepilogo

Questa guida mostra come portare Suricata da IDS a IPS su Fedora 17 usando Vuurmuur per inoltrare il traffico a NFQUEUE. Inizia sempre in modalità IDS per tarare le regole, quindi abilita l’inline reassembly e testa regole di drop con cautela. Monitora log e metriche e prepara un piano di rollback.

Importante: testa ogni modifica in un ambiente di staging e valuta l’aggiornamento a una release di Fedora supportata per produzione.

Autore
Redazione

Materiali simili

Installare e usare Podman su Debian 11
DevOps

Installare e usare Podman su Debian 11

Guida rapida a apt-pinning su Debian
Linux

Guida rapida a apt-pinning su Debian

Forzare FSR 4 con OptiScaler: guida completa
Guide.

Forzare FSR 4 con OptiScaler: guida completa

Dansguardian + Squid NTLM su Debian Etch
Rete

Dansguardian + Squid NTLM su Debian Etch

Riparare errore installazione SD su Android
Android

Riparare errore installazione SD su Android

Cartelle di rete con KNetAttach e remote:/
Linux

Cartelle di rete con KNetAttach e remote:/