Chapter 27. Sicurezza nella rete

Table of Contents

27.1. Masquerading e firewall
27.2. SSH – secure shell, lavorare in sicurezza su host remoti
27.3. Cifrare delle partizioni e file
27.4. La sicurezza è una questione di fiducia

Abstract

Mascheramento e firewall assicurano un flusso e scambio di dati monitorato. La secure shell (SSH) dà all'utente la possibilità di accedere ad un host remoto tramite una connessione cifrata. Se oltre a voi vi sono anche altri che accesso al vostro sistema potete proteggere i vostri dati cifrando i vostri file o anche partizione intere. Oltre a dare delle indicazioni di natura tecnica concludiamo il capitolo con una sezione che tratta in maniera generale gli aspetti di sicurezza in una rete Linux.

27.1. Masquerading e firewall

Se utilizzate Linux in un ambiente collegato in rete e dovete distinguere tra settori interni e settori esterni, potete ricorrere alle funzionalità del Linux kernel per l'amministrazione di pacchetti di rete. L'infrastruttura netfilter offre tutti gli strumenti per implementare un sistema Linux come firewall efficace tra le diverse reti. Grazie a iptables – una tabella generica per la definizione di regole – si può stabilire in modo preciso quali pacchetti hanno via libera e quali invece sono da setacciare. SuSEfirewall2 e il rispettivo modulo di semplificano la configurazione del filtra pacchetti.

27.1.1. Filtrare i pacchetti con iptables

Netfilter e iptables sono preposti al filtraggio, alla modifica ed al NAT (Network Address Translation) dei pacchetti di rete. I criteri di filtraggio e le azioni conseguenti vengono salvate in cosiddette chain, catene, ed elaborate l'una dopo l'altra quando vi è un pacchetto di rete in entrata. La sequenza o catena delle regole viene salvata in una tabella. Il comando iptables elabora queste tabelle e catene di regole.

Linux ha tre tabelle per le diverse funzionalità di un filtra pacchetti:

filter

Questa tabella contiene la maggior parte delle regole, dato che qui avviene il filtraggio dei pacchetti vero e proprio. Qui sono riportate le regole per l'accettazione (ACCEPT) ed il rifiuto (DROP) dei pacchetti.

nat

Qui viene definita la modifica dell'indirizzo sorgente e di destinazione dei pacchetti: il mascheramento utilizzato per la connessione di una piccola rete privata ad Internet, si tratta di una forma particolare di NAT.

mangle

Con le regole qui definite si può intervenire sui valori nell'intestazione IP (ad esempio il Type of Service).

Le tabelle menzionate contengono diverse catene predefinite per l'elaborazione dei pacchetti:

PREROUTING

Questa catena vale per i pacchetti in entrata.

INPUT

Questa catena si occupa dei pacchetti destinati a processi del proprio sistema.

FORWARD

Questa catena si occupa dei pacchetti che vengono semplicemente inoltrati.

OUTPUT

Questa catena si occupa dei pacchetti che sono stati generati nel proprio sistema.

POSTROUTING

Questa catena si occupa di tutti i pacchetti in uscita dal sistema.

Figure 27.1. iptables: il percorso di un pacchetto attraverso il sistema

iptables: il percorso di un pacchetto attraverso il sistema

La figura Figure 27.1, “iptables: il percorso di un pacchetto attraverso il sistema” rispecchia il percorso di un pacchetto di rete attraverso il sistema. Per motivi illustrativi le tabelle sono raggruppate in base alle catene, anche se nella realtà sono le catene ad essere raggruppate all'interno delle tabelle.

Nel caso più semplice, un pacchetto raggiunge l'interfaccia eth0 del sistema ed ha come destinazione il sistema stesso. Innanzitutto il pacchetto viene indirizzato alla catena PREROUTING della tabella mangle, in seguito viene inoltrato alla catena PREROUTING della tabella nat. Nel fase successiva viene riconosciuto che il pacchetto è destinato ad un processo del proprio sistema. Dopo aver attraversato le catene INPUT delle tabelle mangle e filter il pacchetto raggiunge la sua destinazione; premesso che le regole di filtraggio definite nella tabella filter non lo impediscono.

27.1.2. I principi del masquerading

Masquerading è l'adattamento Linux di NAT (Network Address Translation), cioé “traduzione di indirizzi rete”. Questa funzionalità viene applicata quando si tratta di collegare una piccola LAN con indirizzi IP privati (si veda la sezione Section 22.1.2.2, “Maschere di rete e routing”) ad Internet con i suoi indirizzi IP ufficiali. Affinché gli host della LAN possano collegarsi ad Internet gli indirizzi privati assumono l'aspetto di indirizzi ufficiali. Questo passaggio viene eseguito dal router, frapposto tra LAN e Internet. Il principio di NAT non è particolarmente complicato: il vostro router dispone di più di un'interfaccia di rete, normalmente una scheda di rete e una interfaccia per l'Internet. Una di queste interfacce vi collegherà con l'esterno, una o diverse delle altre interfacce collegheranno il vostro computer con gli altri computer nella vostra rete. Nella vostra rete locale avete collegato diversi host alla scheda di rete del router Linux la quale, nel nostro esempio, si chiamerà eth0. Gli host nella rete inviano i pacchetti non destinati alla rete interna al router o al gateway di default.

[Important]Maschere di rete uniformi

Quando configurate la vostra rete, fate attenzione alla conformità degli indirizzi broadcast e maschere di rete. Altrimenti la vostra rete non potrà funzionare correttamente, visto che non è possibile un corretto instradamento dei pacchetti di rete.

Se uno dei computer nella vostra rete invia ora un pacchetto destinato a Internet, il pacchetto arriva al vostro router di default. Il router deve essere configurato in modo da inoltrare i pacchetti. Per ragioni di sicurezza, ciò è impostato di default dall'installazione di ! Impostate la variabile IP_FORWARD che si trova nel file /etc/sysconfig/sysctl su IP_FORWARD=yes.

Il computer meta del collegamento vede solo il vostro router, non però il computer mittente della vostra rete interna, nascosto dietro il vostro router. Da qui il termine masquerading (mascheramento). L'indirizzo meta del pacchetto risposta è a causa della conversione dell'indirizzo nuovamente il router che deve riconoscere i pacchetti e girare i pacchetti all'host giusto.

Poiché il percorso dei pacchetti entranti dipende dalla tabella di masquerading, non ci sono possibilità di aprire un collegamento dall' esterno verso l'interno: questo collegamento non è previsto nella tabella. Nella tabella, ogni collegamento effettuato ha uno stato ben definito, di modo che i relativi parametri nella tabella non possano venire utilizzati da un secondo collegamento.

Di conseguenza, subentrano delle difficoltà con alcune applicazioni: per esempio ICQ, cucme, IRC (DCC, CTCP), e FTP (nel modo PORT). Netscape, il programma FTP standard e tanti altri utilizzano il modo PASV che con filtra pacchetti e masquerading causa meno difficoltà.

27.1.3. Principi del firewall

Firewall è probabilmente una delle definizioni più diffuse per descrivere un meccanismo che collega fra loro due reti e che provvede ad un traffico di dati monitorato. Il metodo che vi presentiamo qui dovrebbe chiamarsi filtra pacchetti. Un filtro pacchetti regola il traffico sulla base di criteri come protocollo, porta ed indirizzi IP. In questo modo, siete in grado di settacciare quei pacchetti che, sulla base del loro indirizzo, non possono entrare nella vostra rete. Se ad esempio volete permettere l'accesso al vostro server web, dovete attivare la porta corrispondente. Il contenuto di questi pacchetti non viene controllato finché sono indirizzati in modo corretto (p.es. hanno come meta il vostro server web). Il pacchetto potrebbe quindi attaccare un programma CGl sul vostro server web, senza venir bloccato dal filtro.

Un costrutto più efficace, anche se più complesso, potrebbe essere una combinazione di diversi sistemi, come ad esempio, la combinazione di un filtra pacchetti con l'aggiunta di un gateway/proxy per le applicazioni. Il filtra pacchetti respingerà quei pacchetti che non sono indirizzati alla porta attivata e lascierà passare solo i pacchetti destinati ad un application gateway. Questo proxy finge di essere l'interlocutore del server che si vuole collegare con noi. Da questo punto di vista, un tale proxy può essere considerato una macchina di masquerading a livello del protocollo della rispettiva applicazione. Un esempio per un proxy del genere, è Squid, un server proxy http, per il quale dovete configurare il vostro browser in modo che richieste di pagine HTML vengano replicate dalla memoria del proxy e solo se la pagina non viene trovate lì, la richiesta verrà instradata su Internet. La SUSE proxy-suite (il pacchetto proxy-suite), contiene un server proxy per il protocollo ftp.

Adesso vogliamo concentrarci sul pacchetto filtra pacchetti di SuSE Linux. Per ulteriori informazioni e link consultate l'HOWTO del firewall contenuto nel howto. Se questo pacchetto è stato installato, potete leggerlo con il comando less  /usr/share/doc/howto/en/Firewall-HOWTO.txt.gz.

27.1.4. SuSEfirewall2

SuSEfirewall2 è uno script che trasforma le variabili configurate in /etc/sysconfig/SuSEfirewall2 in regole iptables. SuSEfirewall2 presenta tre cosiddette zone di sicurezza (delle quali tratteremo comunque solo le prime due nel seguente esempio di configurazione):

Rete esterna

Il sistema va protetto da eventuali attacchi provenienti da una rete esterna, di solito in questi casi si intende l' Internet, ma si può anche intendere altri tipi di rete non protette come ad es. una WLAN.

Rete interne

In questi casi si intende la LAN. Se all'interno di questo tipo di rete utilizzate degli indirizzi IP del campo degli indirizzi privato (si veda la sezione Section 22.1.2.2, “Maschere di rete e routing”), bisogna ricorrere alla Network Address Translation (NAT), affinché da una rete privata si possa accedere ad una rete esterna.

Zona demilitarizzata (DMZ)

Le macchine che si trovano all'interno di una zona demilitarizzata sono indirizzabile sia da una rete esterna che dalla rete interna, non possono però accedere all'Intranet. Questo tipo di configurazione tutela ulteriormente la rete interna da quella esterna, visto che dai sistemi nella DMZ non sarà possibile accedere agli host sulla rete interna.

Ogni traffico di rete non consentito esplicatemente dalla regole viene, bloccato da iptables. Per tale ragione ogni singola l'interfaccia tramite la quale i pacchetti raggiungono la rete deve far capo ad una delle tre zone, e per ogni zona va definito quali servizi e protocolli sono consentiti. Le regole valgono solo per pacchetti che giungono da una rete esterna. I pacchetti creati in locale possono essere inviati comunque.

Potrete eseguire la configurazione ricorrendo ad (vd. la sezione Section 27.1.4.1, “Configurazione con ”) o direttamente nel file /etc/sysconfig/SuSEfirewall2 che contiene delle indicazioni in lingua inglese. Alcuni scenari esempio sono riportati inoltre in /usr/share/doc/SuSEfirewall2/EXAMPLES.

27.1.4.1. Configurazione con

[Important]Configurazione automatica del firewall

avvia automaticamente su tutte le interfacce da voi configurate un firewall. La configurazione generata automaticamente viene adatta da tramite le opzioni Porte aperte su interfaccia selezionata nel firewall o Porte aperte su firewall nei moduli sulla configurazione server, non appena viene configurato e abilitato un servizio sul vostro sistema. Se nelle finestre dei moduli server vi è inoltre un bottone Dettagli firewall, potete attivare ulteriori servizi e porte. Il modulo di per la configurazione del firewall è stato ideato semplicemente per abilitare o disabilitare il firewall o per eseguire una riconfigurazione del servizio.

Il processo di configurazione in modalità grafica si avvia tramite il centro di controllo . Selezionate nella categoria Sicurezza e utente la voce Firewall. La configurazione si suddivide in cinque sezioni:

Riconfigurare/ferma

Questa finestra si ha se sul vostro sistema gira già un SuSEfirewall2, perché durante il processo di installazione non avete disabilitato la configurazione ed inizializzazione del firewall. Qui potete decidere se tramite Riconfigura le impostazioni firewall debbano seguire delle modifiche apportate manualmente alle impostazioni generate automaticamente da oppure se fermare il firewall ed escluderlo dal processo di avvio tramite Ferma firewall e rimuovilo dal processo di boot. Se sul vostro sistema non gira un firewall, non compare questa finestra e il processo di configurazione inizia con Impostazioni di base.

Impostazioni di base

Stabilite le interfacce da tutelare. In caso di una macchina singola non collegata ad una rete interna, indicate solo le interfacce che puntano verso l'esterno. Se la vostra macchina è parte anche di una rete interna va indicata anche l'interfaccia utilizzata per la comunicazione con la rete interna. In questo caso il vostro sistema si troverebbe in una DMZ. La configurazione di una DMZ è spesso rilevante solo per reti aziendali. Uscite da questa finestra con Prossimo.

Figure 27.2. : SuSEfirewall2 — selezione delle interfacce da proteggere

: SuSEfirewall2 — selezione delle interfacce da proteggere
Servizi

Questa opzione è rilevante se intendete offrire dei servizi tramite il vostro sistema a cui si potrà accedere dall'Internet (server web, server di posta etc.). Abilitate le corrispondenti check box e/o eseguite tale processo tramite il bottone Esperti ... in cui attivate determinati servizi a cui si potrà accedere attraverso i rispettivi numeri di porta (i numeri delle porte sono reperibili in /etc/services) . Se il vostro sistema non debba fungere da server, uscite da questo dialogo senza aver apportato alcuna modifica con Prossimo.

Features

Qui potete selezionare le caratteristiche principali del vostro firewall:

Eseguire inoltro dei dati e mascheramento

Con questa opzione tutelate sistemi della vostra rete interna nei confronti di eventuali attacchi provenienti da Internet — tutti i servizi Internet sembrano essere utilizzati dal vostro firewall, mentre restano per così dire invisibili all'esterno gli host interni.

Proteggere dalla rete interna

I servizi abilitati del firewall sono disponibili per gli host interni. Visto che qui non è possibile attivare dei servizi, si consiglia di disattivare questa opzione, se desiderate consentire l'accesso dalla rete interna.

Proteggere tutti i servizi in esecuzione

Con questa opzione si esclude ogni accesso di rete esterno a servizi TCP e UDP del firewall, fatta eccezione per i servizi che sono stati abilitati nel passaggio precedente.

Consenti traceroute

Con questa opzione potete monitorare il routing verso il vostro firewall

Trattare traffico di pacchetti IPsec come traffico interno

I pacchetti IPsec che sono stati decifrati correttamente vengono trattati alla stregua di pacchetti provenienti dalla vostra rete interna.

Conclusa la configurazione delle caratteristiche, uscite dalla maschera con Prossimo.

Attività di log

Qui stabilite gli eventi firewall da protocollare. Prima di abilitare le Opzioni di debug, considerate che i file di log possono assumere dimensioni considerevoli. Configurata l'attività di log del firewall avete concluso la configurazione del vostro firewall. Uscite da questa finestra tramite Prossimo e confermate il messaggio che viene visualizzato a questo punto per abilitare il firewall.

27.1.4.2. Configurazione manuale

In questa sezione illustreremo come procedere nella configurazione. Di volta in volta indicheremo se quanto detto vale per il mascheramento o per il firewall. Nel file di configurazione si riscontra anche una DMZ (“Zona demilitarizzata”), ma non entreremo nei dettagli a riguardo in questa sezione.

Abilitate innazitutto tramite l'editor dei runlevel di il SuSEfirewall2 per il vostro runlevel (probabilmente 3 o 5). Verranno creati dei link simbolici per gli script SuSEfirewall2_* nelle directory /etc/init.d/rc?.d/.

FW_DEV_EXT (Firewall, mascheramento)

L'interfaccia che porta su Internet. Per modem e DSL utilizzate ppp0, per ISDN ippp0 e con auto utilizzate l'interfaccia della route di default.

FW_DEV_INT (Firewall, mascheramento)

Indicate l'interfaccia che punta verso la rete interna, “privata” (ad esempio eth0). In assenza di una rete interna lasciate vuota questa variabile.

FW_ROUTE (Firewall, mascheramento)

Se vi serve il mascheramento, impostate questa variabile su yes. I vostri host interni non saranno visibili dall'esterno, dal momento che hanno indirizzi di rete privati (p.es. 192.168.x.x) che non verranno instradati (routed) su Internet.

Per un firewall senza mascheramento selezionate qui yes, solo se volete permettere l'accesso alla rete interna. Per fare questo i computer interni devono avere indirizzi IP ufficiali. Di solito però, non dovreste consentire l'accesso ai vostri sistemi dall'esterno!

FW_MASQUERADE (Mascheramento)

Se intendete fare uso del mascheramento, immettete qui yes. Tenete presente che è più sicuro se gli host della rete interna accedono ad Internet tramite il server proxy.

FW_MASQ_NETS (Mascheramento)

Indicate qui gli host o reti da mascherare. Lasciate uno spazio tra le singole voci. Esempio:

FW_MASQ_NETS="192.168.0.0/24 192.168.10.1"
FW_PROTECT_FROM_INTERNAL (Firewall)

Immettete qui yes, se volete proteggere il firewall anche da attacchi dall'interno. In questo caso, dovrete esplicitamente attivare i servizi disponibili per la rete interna. Si veda anche FW_SERVICES_INT_TCP e FW_SERVICES_INT_UDP.

FW_AUTOPROTECT_SERVICES (Firewall)

Di solito si lascia su yes per la creazione automatica di regole esplicite da applicare ai servizi in esecuzione.

FW_SERVICES_EXT_TCP (Firewall)

Inserite qui le porte TCP a quali accedere per una semplice postazione di lavoro domestica che non debba offrire alcun servizio, di solito si lascierà vuota.

FW_SERVICES_EXT_UDP (Firewall)

Lasciate vuoto questo campo, a meno che non stiate usando un server dei nomi a cui si deve accedere dall'esterno. Altrimenti inserite qui le porte UDP richieste.

FW_SERVICES_INT_TCP (Firewall)

Qui stabilite i servizi disponibili per la rete interna. Le indicazioni sono analoghe a quelle in FW_SERVICES_EXTERNAL_TCP, solo che si riferiscono in questo caso alla rete interna. Questa variabile va configurata solo avete abilitato FW_PROTECT_FROM_INTERNAL.

FW_SERVICES_INT_UDP (Firewall)

Si veda sopra

FW_STOP_KEEP_ROUTING_STATE(Firewall)

Se andate su Internet automaticamente tramite diald o o tramite ISDN (dial on demand), inserite qui yes.

A questo punto avete concluso il processo configurativo. Non dimenticate di testare il firewall. Come utente root invocate SuSEfirewall2 start per generare delle regole. Tramite ad esempio un telnet dall'esterno potete vedere se questo collegamento venga effettivamente respinto; in questo caso dovreste avere in /var/log/messages un output del genere:

Mar 15 13:21:38 linux kernel: SFW2-INext-DROP-DEFLT IN=eth0 OUT=
MAC=00:80:c8:94:c3:e7:00:a0:c9:4d:27:56:08:00 SRC=192.168.10.0
DST=192.168.10.1 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=15330 DF
PROTO=TCP SPT=48091 DPT=23 WINDOW=5840 RES=0x00 SYN URGP=0 OPT
(020405B40402080A061AFEBC0000000001030300)

27.1.5. Ulteriori informazioni

La documentazione aggiornata per il pacchetto SuSEfirewall2 è reperibile sotto /usr/share/doc/packages/SuSEfirewall2.

Ecco ulteriori fonti per degli approfondimenti su iptables e netfilter:

http://www.netfilter.org

La home page del progetto netfilter/iptables. Qui troverete tanta documentazione tradotta in varie lingue.