SuSEfirewall2

SuSEfirewall2 è un filtro dei pacchetti di rete di tipo stateful, anche noto come firewall. Viene fornito un modulo di YaST per la configurazione del Firewall.

Descrizione

SuSEfirewall2 è sostanzialmente uno script in grado di generare regole per iptables a partire dalla configurazione archiviata nel file /etc/sysconfig/SuSEfirewall2. SuSEfirewall2 protegge l'utente dagli attacchi rifiutando (reject) o scartando in modo silenzioso (drop) i pacchetti indesiderati che raggiungono l'interfaccia di rete della macchina.

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

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

Configurazione

Per configurare SuSEfirewall2 si può:

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

oppure

Si tenga presente che YaST Firewall non visualizza e non permette nemmeno 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 molte 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="value1 value2 value3,with,more,parameters"

Zone del firewall

Per impostazione predefinita, SuSEfirewall2 ha tre zone diverse:

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)

Le interfacce di rete possono essere assegnate alle zone aggiungendo il nome dell'interfaccia alle variabili FW_DEV_zone, 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 può essere usata per indicare a SuSEfirewall di assegnare tutte le interfacce che non sono elencate in nessuna zona alla zona specificata. Per impostazione predefinita tutte le interfacce non assegnate sono automaticamente assegnate alla zona esterna.

La variabile FW_ZONES può essere utilizzata per definire delle zone aggiuntive. Ad esempio, se non si vuole applicare alla propria WLAN il filtraggio restrittivo della zona esterna ma non ci si fida completamente della WLAN (e quindi non si può usare la zona interna), è possibile 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 della porta (le porte correntemente assegnate nel sistema sono elencate nel file /etc/services del proprio sistema), o mediante un intervallo di porte, che è definito usando due numeri di porta separati dai 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 eseguire un certo servizio, si veda Definizioni di servizio aggiunte tramite pacchetti. L'utilizzo di questo metodo è particolarmente conveniente se un servizio ha bisogno di più porte aperte per funzionare correttamente.

Rendere più restrittivo l'accesso ai servizi

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 può essere impostato per consentire un accesso più limitato ad un servizio, tuttavia le impostazioni per i servizi consentiti, descritte qui sopra, hanno la precedenza sulle impostazioni definite 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 dei 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"
# Lo 0.0.0.0/0 restringe l'accesso ai soli indirizzi IPv4

I flag supportati 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 dallo stesso indirizzo IP ovunque su Internet:
FW_SERVICES_ACCEPT_EXT="0/0,tcp,22,,hitcount=3,blockseconds=60,recentname=ssh"
# Lo 0/0 consente l'accesso sia a IPv4 che a IPv6

Mascheramento

... Esempio:

  • Consentire alla rete che nell'interfaccia interna della macchina un accesso completo alla rete.
  • Consentire alla rete "demilitarizzata" (la zona DMZ) un accesso completo alla rete.
 FW_MASQ_NETS="10.1.1.0/24 192.168.1.0/24"

Reindirizzamento verso host mascherato

...

Redirezione trasparente

...

Registrazione

...

HTB - Regolare la velocità massima di caricamento

...

IPv6

La configurazione relativa alla versione 6 di Internet Protocol (IPv6) comprende le seguenti voci:

  • 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 come comportamento predefinito, 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"

Regole personalizzate

Questo è un esempio di utilizzo di regole personalizzate per disabilitare in modo non intrusivo la registrazione da sorgenti non valide. Sfortunatamente, il modo standard per disabilitare la registrazione di queste sorgenti è quello di impostare FW_SECURITY a "no", ma con questa scelta verranno disattivate anche molte altre opzioni di sicurezza. La configurazione seguente crea un file di regole personalizzate che apporta le modifiche necessarie alla configurazione del sistema.

  1. $ cp /etc/sysconfig/scripts/SuSEfirewall2-custom /root/bin/
  2. Eseguire l'editor di /etc/sysconfig di Yast
  3. Impostare Network->Firewall->SuSEfirewall2->FW_CUSTOMRULES a /root/bin/SuSEfirewall2-custom
  4. Modificare /root/bin/SuSEfirewall2-custom. Nel nostro esempio volevamo aggiungere del codice alla funzione fw_custom_after_finished:
fw_custom_after_finished() {
    # queste sono le regole da caricare dopo che il firewall è completamente configurato
    for i in /proc/sys/net/ipv4/conf/*; do
        setproc 0 $i/log_martians
    done
    true
}

Guardare in /usr/sbin/SuSEfirewall2 per vedere esattamente che cosa può essere fatto e in che punto dello script.

Voci non funzionanti

  • SuSEfirewall2 non supporta tutte le sue funzionalità con IPv6.
  • Elenco di parole chiave non funzionanti:
    • FW_TRUSTED_NETS
    • FW_SERVICES_ACCEPT_EXT
    • ... (sentitevi liberi di aggiungerne altre)

Ulteriori letture

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