SuSEfirewall2

Icon-update.png Aggiorna alla versione: (vedere pagina originale)
Questo articolo necessita di un aggiornamento alla più recente versione di openSUSE. Se hai usato questa guida in una versione più recente ed ha funzionato, puoi segnalare che funziona modificando la pagina stessa.
SuSEfirewall2 è un filtro dei pacchetti di rete di tipo stateful (vedi dopo), anche noto come il firewall di openSUSE, o semplicemente il firewall. Viene anche fornito un modulo di YaST per configurare il Firewall.

Descrizione

SuSEfirewall2 esegue il filtraggio del pacchetto di rete in base allo stato in cui vengono suddivisi i pacchetti, oltre che alla connessione (tipo stateful, es.: "il pacchetto appartiene ad una connessione esistente?"). È sostanzialmente uno script in grado di generare regole per en:iptables a partire dalla configurazione archiviata nel file /etc/sysconfig/SuSEfirewall2. SuSEfirewall2 protegge l'utente dagli attacchi provenienti dalla rete, rifiutando (reject) o scartando in modo silenzioso (drop) i pacchetti indesiderati che raggiungono l'interfaccia di rete della sua macchina.

Per configurazioni più avanzate, il firewall dispone di tre zone diverse a cui assegnare la propria interfaccia di rete. Questo consente a SuSEfirewall2 di agire anche da router di rete per instradare il traffico tra tre reti diverse, o piuttosto di comportarsi come un server di rate locale (LAN) che fornisce il mascheramento verso Internet (o un'altra rete).

 +----------------------------+
 | per ogni Zona del Firewall |
 +-------------+--------------+
               |
               +--> [ È assegnata una Interfaccia di rete ]
               |
               +--> [ Sono configurati dei Servizi consentiti ]

Configurazione

Per configurare SuSEfirewall2 si può procedere a:

  • modificare a mano il file /etc/sysconfig/SuSEfirewall2 ed eseguire poi
/sbin/SuSEfirewall2

oppure

Si tenga presente che l'attuale interfaccia Firewall di YaST non visualizza e nemmeno permette di configurare tutte le impostazioni del firewall. Tra queste si segnala come minimo la configurazione dei pacchetti da scartare (almeno quella attivato in modo predefinito).

Funzionalità

Nonostante SuSEfirewall2 disponga di varie funzionalità, ovviamente YaST non è in grado di configurarle tutte quante. Il file di configurazione fornisce esso stesso tutta la documentazione necessaria per ogni singola funzionalità.

Se a una certa variabile si possono assegnare più valori contemporaneamente, questi devono essere separati da spazi.

Esempio:

FW_VARIABLE="valore1 valore2 valore3,con,parametri,aggiuntivi"

Zone del firewall

La configurazione predefinita di SuSEfirewall2 prevede tre differenti zone:

  • EXT - Zona esterna (External Zone) (cioè rete non fidata, Internet)
  • INT - Zona interna (Internal Zone) (rete pienamente fidata, nessun filtraggio, LAN)
  • DMZ - Zona demilitarizzata (Demilitarized Zone) (per server che devono essere raggiungibili da Internet)

Per assegnare le interfacce di rete alle zone volute si può aggiungere il nome dell'interfaccia alle variabili FW_DEV_zona, dove zona è una delle zone configurate.

Esempi:

FW_DEV_EXT="dsl0"
FW_DEV_EXT="any wlan0"
FW_DEV_INT="eth0 wlan1"

La stringa speciale any viene usata per indicare a SuSEfirewall che tutte le interfacce che non sono elencate in nessuna zona devono essere assegnate alla zona specificata da "any". Per default tutte le interfacce non assegnate sono automaticamente assegnate alla zona esterna.

Per definire delle zone aggiuntive si può usare la variabile FW_ZONES. Per esempio, se non si vuole applicare alla propria WLAN il filtraggio restrittivo della zona esterna, ma nemmeno ci si fida completamente della WLAN. per cui non è possibile usare la zona interna, si può allora definire una nuova zona:

FW_ZONES="wlan"
FW_DEV_wlan="ra0"

Consentire l'accesso ai servizi

Ciascuna zona del firewall può consentire quattro tipi di servizi:

  • TCP - FW_SERVICES_EXT_TCP, FW_SERVICES_INT_TCP, FW_SERVICES_DMZ_TCP
  • UDP - FW_SERVICES_EXT_UDP, FW_SERVICES_INT_UDP, FW_SERVICES_DMZ_UDP
  • RPC - FW_SERVICES_EXT_RPC, FW_SERVICES_INT_RPC, FW_SERVICES_DMZ_RPC
  • IP - FW_SERVICES_EXT_IP, FW_SERVICES_INT_IP, FW_SERVICES_DMZ_IP

I servizi che usano TCP o UDP possono essere aggiunti mediante: numero di porta, nome di porta (le porte correntemente assegnate nel sistema sono elencate nel file /etc/services del proprio sistema), o mediante un intervallo di porte, sotto forma di due numeri di porta separati da due punti (":").

Esempi:

FW_SERVICES_EXT_TCP="ssh"
FW_SERVICES_EXT_TCP="ftp 22 telnet 512:514"
FW_SERVICES_EXT_UDP="631 400:405"

In alternativa alcuni pacchetti forniscono un file di configurazione che definisce quali porte è necessario aprire per mettere in esecuzione un certo servizio, si veda en:SuSEfirewall2/Service_Definitions_Added_via_Packages. L'utilizzo di questo metodo è particolarmente conveniente se un servizio ha bisogno di più porte aperte per funzionare correttamente.

Rendere l'accesso ai servizi più restrittivo

Il metodo descritto qui sopra per consentire l'accesso ai servizi non è particolarmente restrittivo, e si limita a concedere o a negare l'accesso. Esiste un parametro che si può impostare per consentire un accesso più limitato ad un servizio. Tuttavia le impostazioni per i servizi consentiti, descritte qui sopra, hanno la precedenza sulle impostazioni definiti qui sotto, quando viene usata la medesima porta. Queste ultime sono:

  • FW_SERVICES_ACCEPT_EXT, FW_SERVICES_ACCEPT_INT, FW_SERVICES_ACCEPT_DMZ

Per ogni servizio questi parametri accettano 4 parametri posizionali e parametri aggiuntivi sotto forma di parole chiavi, anche dette flag.

Quindi il formato della stringa è un elenco, separato da spazi, con (nell'ordine) rete,protocollo[,dport[,sport[,flag]]] (dport: porta di destinazione, sport: porta di origine) Esempio:

FW_SERVICES_ACCEPT_EXT="0.0.0.0/0,tcp,22"
# Questa maschera 0.0.0.0/0 restringe l'accesso ai soli indirizzi IPv4

I flag ammessi sono:

  • hitcount=NUMERO  : ipt_recent --hitcount parameter
  • blockseconds=NUMERO : ipt_recent --seconds parameter
  • recentname=NOME  : ipt_recent --name parameter

Esempio:

# Consenti al massimo tre connessioni al minuto verso ssh da uno stesso indirizzo IP ovunque su Internet:
FW_SERVICES_ACCEPT_EXT="0/0,tcp,22,,hitcount=3,blockseconds=60,recentname=ssh"
# Questa maschera 0/0 consente l'accesso sia a IPv4 che a IPv6

Mascheramento

... Esempio:

  • Consenti alla rete che si affaccia sull'interfaccia interna della macchina accesso completo alla rete.
  • Consenti alla rete "demilitarizzata" (in zona DMZ) accesso completo alla rete.
 FW_MASQ_NETS="10.1.1.0/24 192.168.1.0/24"

Reindirizzamento verso host mascherato

...

Redirezione trasparente

...

Attività di log

...

HTB - Regolare la velocità massima di upload

...

IPv6

La configurazione relativa alla versione 6 di Internet Protocol (IPv6) comprende i seguenti elementi:

  • Supporto per IPv6 - FW_IPv6 (yes/no)
  • Configurazione connessioni IPv6 in uscita - FW_IPv6_REJECT_OUTGOING ([yes]/no/drop)

Esempi:

FW_IPv6=""
FW_IPv6_REJECT_OUTGOING="no"
  • FW_IPv6 per default, se l'opzione è lasciata vuota, il supporto viene impostato in base al supporto al protocollo ipv6 offerto dal Kernel.
  • FW_IPv6_REJECT_OUTGOING l'impostazione predefinita è yes (rifiuta).

Per consentire il reindirizzamento del traffico proveniente da una sotto-rete IPv6 dietro a SuSEfirewall2, impostare FW_FORWARD="[your IPv6 prefix]/64,2000::/3"

Elementi non funzionanti

  • SuSEfirewall2 non supporta tutte le proprie funzionalità con IPv6.
  • Elenco di parole chiavi non funzionanti:
    • FW_TRUSTED_NETS
    • FW_SERVICES_ACCEPT_EXT
    • ... (Altre possibili)

Ulteriori letture

Si veda il contenuto di /usr/share/doc/packages/SuSEfirewall2/, proveniente dal pacchetto SuSEfirewall2.