CONFIGURAZIONI PC E RETI
ovvero... come abbiamo fatto dalla A alla Z.
 
HOME DOCUMENTI PROGETTI RISORSE DOMANDE ARTICOLI

 RL_FIREWALL: INTRODUZIONE
 ultimo aggiornamento: 8 aprile 2003 ore 10.20
 
 
PROBLEMATICA
Punti generali per l'installazione del nostro firewall, che abbiamo chiamato RL_Firewall.
 
PROGETTI
il documento č correlato al progetto PR1.
 
I VANTAGGI
1) con un PC č possibile gestire un firewall completo;
2) gestire la DMZ diventa facilissimo;
3) č facilmente configurabile, grazie alle pagine create per Webmin.

 
NOTA INIZIALE SU QUESTO DOCUMENTO INTRODUTTIVO
Essendo l'argomento "firewall" molto complesso, questo primo documento non puo' spiegare ogni cosa (ad esempio, cos'e' una DMZ o il protocollo tcp...). ma ha come scopo l'installazione di RL_Firewall.
Nei documenti che seguiranno si cerchera' di fare chiarezza sui vari aspetti di un firewall, di iptables, dei parametri del kernel e di tutto il resto, andando di volta in volta acoprire le lacune presenti in questo documento.

 
COS'E' UN FIREWALL
Un firewall č un "vigile" che regola il traffico di rete che passa attraverso di lui.
Installando e configurando un firewall č possibile decidere, ad esempio, chi puo' navigare in internet dalla lan interna, o quali server possono essere "consultati" dalla rete internet.
Il firewall č necessario anche se si vuole mettere i server consultabili dall'esterno (web, posta e qualsiasi altro) in una rete (chiamata DMZ) staccata dalla rete interna aziendale, in modo da non mettere in pericolo la rete interna da possibili attacchi da parte di hacker e company.

 
IL KERNEL LINUX E' ANCHE UN FIREWALL
Linux č un sistema operativo molto adatto per essere utilizzato come base di un firewall. Infatti ha implementate in sč le funzionalitą necessarie ad un firewall.
Nel nostro caso, le pagine create per webmin utilizzeranno il comando iptables per istruire il kernel a bloccare o far passare richieste di rete.
Per facilitarci le cose, ci siamo basati anche sul programma ferm che permette di scrivere le regole in modo piu' compatto e chiaro.

 
PREREQUISITO: SERVER LINUX CON IPTABLES INSTALLATO
Le regole generate da RL_Firewall sono compatibili solo con iptables (non, ad esempio, con ipchains). Occorre quindi che iptables sia installato sul server Linux.
Comunque, tutte le ultime distribuzioni installano iptables di default. Per verificare che iptables e' installato, come utente root occore aprire una shell e digitare il comando

iptables -V


 
SUPPONIAMO DI AVERE UN'AZIENDA...
... che abbia la necessitą di navigare in Internet, di "scaricare" e inviare la propria posta elettronica sia dall'interno della rete che dall'esterno, di poter utilizzare un fax server dall'esterno e di avere il server web aziendale che gestisce la propria intranet e che debba essere consultabile anche dall'esterno.
Se i server di posta, web e fax sono gią installati, e se abbiamo gią acquistato gli ip pubblici necessari (a cosa servono lo spieghiamo dopo...) il tutto č configurabile in poco tempo!!!
Supponiamo che la connessione internet sara' di tipo ADSL.

 
FASI
1) progettazione della rete;
2) richiesta degli ip pubblici;
3) installazione di webmin;
4) configurazione delle schede di rete;
5) installazione di ferm;
6) installazione di rl_firewall;
7) configurazione di rl_firewall.

 
FASE 1: PROGETTAZIONE DELLA RETE
I server/apparati che utilizzeremo nella rete sono i seguenti:

a) connessione internet tramite router;
b) firewall Linux interposto tra il router e le reti LAN e DMZ;
c) server posta e fax (che chiameremo srv_pofa) da porre in DMZ;
d) server intranet (che chiameremo srv_intra) da porte nella DMZ;
e) PC clients in rete LAN.
Supponiamo che il nostro indirizzo ip fisso internet sia 1.1.1.20, che il gateway sia 1.1.1.254 e che ci siano stati assegnati gli indirizzi pubblici dal 220.1.1.0 al 220.1.1.7 (netmask 255.255.255.248) da utilizzare per i due server che dobbiamo rendere visibili su internet.
Supponiamo che la LAN interna abbia classe di indirizzi 192.168.1.0 netmask 255.255.255.0.

La struttura della rete sara' la seguente:



Il router verra' configurato per "fare gestire" al server Linux tutte le richieste che arrivano da internet.
Il server Linux gestira' tutto il traffico di rete tramite le sue tre schede di rete e le regole firewall.


 
FASE 2: RICHIESTA DEGLI IP PUBBLICI
Gli IP pubblici vanno richiesti al proprio provider. Se si ha gia' la connessione Internet di tipo ADSL con un ip fisso si dovranno richiedere degli ip aggiuntivi per cui le richieste verranno indirizzate all'ip fisso posseduto.
Supponendo di non avere ancora la connessione ADSL, si dovra' attivare una connessione ADSL richiedendo 8 ip fissi aggiuntivi.
L'ip fisso della connessione ADSL (che nel nostro caso si suppone sia 1.1.1.20) verra' configurato sul router ADSL, mentre gli altri il pubblici saranno a disposizione per rendere "visibili all'esterno" i servizi web, mail e fax.

 
FASE 3: INSTALLAZIONE DI WEBMIN
Per configurare il server Linux utilizzeremo Webmin. Webmin permette di configurare tutto il server Linux tramite browser (ad es Mozilla, Galeon, Netscape, Opera, IExplorer).
Webmin puo' essere scaricato all'indirizzo:

www.webmin.com

Webmin e' scritto in Perl. Quindi sara' necessario installare Perl5 sul server Linux. Dato che tutte le distribuzioni contengono Perl5, basta utilizzare i prorpi CD di installazione. Ad ogni modo, Perl5 puo' essere scaricato dal sito

www.perl.com

Per utilizzare Webmin in modalita' sicura, occorre anche installare le estensioni SSL di Perl. Ad esempio, nella distribuzione Debian Woody il pacchetto si chiama libnet-ssleay-perl. Riferirsi alla propria distribuzione per installare le estensioni.

Supponendo di aver scaricato la versione 0.990 di Webmin, come descritto nel sito, l'installazione di Webmin avviene in questo modo (e deve essere eseguita come utente root):

[root@srv_linux ~]# cp webmin-0.990.tar.gz /usr/local
[root@srv_linux ~]# cd /usr/local
[root@srv_linux local]# tar -xvzf webmin-0.990.tar.gz
[root@srv_linux local]# cd webmin-0.990
[root@srv_linux webmin-1.050]# ./setup.sh


Verranno richieste delle informazioni di configurazione: basta confermare quelle proposte.
L'unica cosa da scegliere sara' la password per accedere a Webmin come utente admin (o altro nome scelto come amministratore).
Se tutto e' andato a buon fine, dopo l'installazione il server Webmin dovrebbe rispondere sulla porta 10000. Per poter accedere a Webmin sara' quindi necessario aprire il proprio browser (su un client della lan o sul server Linux) e richiamare la pagina

https://192.168.1.1:10000

avendo (nel nostro esempio) il server linux ip 192.168.1.1 (lato LAN).
Inserendo l'utente admin (o quello scelto) e la password scelta, si accedera' alle schermate di Webmin.
Se le schede di rete non sono ancora state configurate, si puo' accedere a Webmin dal server Linux richiamando come ip il 127.0.0.1

https://127.0.0.1:10000

Se il server non risponde richiamandolo con il protocollo https, probabilemente non e' stato installato il supporto SSL (come descritto sopra) e il server rispondera' al protocollo http (quindi dovra' essere richiamato con http://127.0.0.1:10000). In questo caso la connessione non e' criptata (e quindi non e' sicura), ma il tutto funziona ugualmente.
Se si vuole che Webmin sia sempre attivato all'avvio della macchina Linux, occorrera' inserire il seguente script tra gli script eseguiti all'avvio:

#!/bin/sh
# Start/stop Webmin

case "$1" in
'start')
/etc/webmin/start
RETVAL=$?
;;
'stop')
/etc/webmin/stop
RETVAL=$?
;;
'status')
pidfile=`grep "^pidfile=" /etc/webmin/miniserv.conf | sed -e 's/pidfile=//g'`
if [ -s $pidfile ]; then
pid=`cat $pidfile`
kill -0 $pid >/dev/null 2>&1
if [ "$?" = "0" ]; then
echo "webmin (pid $pid) is running"
RETVAL=0
else
echo "webmin is stopped"
RETVAL=1
fi
else
echo "webmin is stopped"
RETVAL=1
fi
;;
'restart')
/etc/webmin/stop && /etc/webmin/start
RETVAL=$?
;;
*)
echo "Usage: $0 { start | stop }"
RETVAL=1
;;
esac
exit $RETVAL

Ad esempio, si puo' salvare il file in /etc/init.d chiamandolo webmin, e dandogli i permessi di esecuzione con

cd /etc/init.d
chmod 0700 webmin

e poi tramite Webmin stesso si puo' impostare l'avvio dello script, richiamando la pagina System -. Bootup e Shutdown -. webmin, selezionando Start at Boot Time e confermando la modifica con Save.

 
FASE 4: CONFIGURAZIONE DELLE SCHEDE DI RETE
Il router va configurato in questo modo (con gli ip dati come esempio):

indirizzo fisso Internet: 1.1.1.20
indirizzo lato LAN: 10.0.0.1

Inoltre il router deve essere configurato per la gestione da parte del server Linux delle richieste di rete derivanti dall'esterno.
La configurazione dipende dal router acquistato.
Le schede di rete del server Linux possono essere configurate tramite Webmin, richiamando la pagina Hardware--. Network Configuration--. Network Interfaces.
Nella sezione Interfaces Activated at Boot Time cliccando sui nomi delle interfacce si possono impostare i seguenti valori:

eth0: Ip Address 10.0.0.2; Netmask 255.255.255.0; Broadcast 10.0.0.255; Activate at Boot SI
eth1: Ip Address 220.1.1.1; Netmask 255.255.255.248; Broadcast 220.1.1.7; Activate at Boot SI
eth2: Ip Address 192.168.1.1; Netmask 255.255.255.0; Broadcast 192.168.1.255; Activate at Boot SI

Occorre impostare anche il default gateway a 10.0.0.1. L'operazione puo' essere eseguita sempre tramite Webmin selezionando Hardware--. Network Configuration--. Routing and Gateways.
Gli indirizzi di rete dei server collegati alla DMZ dovranno apppartenere all'intervallo 220.1.1.2-220.1.1.6, e dovranno avere come MASK il valore 255.255.255.248. Nel nostro esempio abbiamo scelto 220.1.1.2 per il server di posta e fax (srv_pofa) e 220.1.1.3 per il server Intranet (srv_intra).
Gli indirizzi dei client nella LAN interna dovranno appartenere all'intervallo 192.168.1.2-192.168.1.254 e dovranno avere come MASK il valore 255.255.255.0 e come gateway 192.168.1.1 (il server Linux).

 
FASE 5: INSTALLAZIONE DI FERM
Ferm e' uno script in in Perl che permette di scrivere regole firewall in modo compatto. Lo abbiamo utilizzato per avere un chiarezza maggiore sulla configurazione firewall generata da RLFirewall.
Ferm puo' essere scaricato da

ferm.sourceforge.net

RLFirewall attualmente utilizza la versione stable Ferm 1.1-pre7. Occorre verificare che versioni future di Ferm siano compatibili con RLFirewall.
Una volta scaricato il file, occorre scompattare il file, entrare nella directory e lanciare il comando make install:

tar -xvzf ferm.tar.gz
cd ferm-1.1-pre7
make install

A questo punto l'installazione di Ferm e' terminata.
Per verificare che l'installazione e' stata eseguita, si puo' aprire una shell ed eseguire il comando

ferm --version

 
FASE 6: INSTALLAZIONE DI RL_FIREWALL
RL_Firewall e' un modulo da installare in Webmin. Attualmente per la sua installazione occorre scaricare i seguenti files:

rl_firewall-2.0.1.tgz
rl_firewall_etc-2.0.1.tgz

Il file rl_firewall-2.0.1.tgz dovra' essere selezionato dalla pagina di installazione di Webmin, che si trova in Webmin--. Webmin Configuration--. Webmin Modules



Immettendo il nome (comprensivo del percorso) nella casella From local file e premendo su Install Module From File RL_Firewall verra' installato nella sezione System di Webmin.
A questo punto occorre scompattare (come utente root) il file rl_firewall_etc-2.0.1.tgz nella directory /etc:

cp rl_firewall_etc-2.0.1.tgz /etc
tar -xvzf rl_firewall_etc-2.0.1.tgz

In questo modo verra' creata la directory /etc/rl_firewall contenente i files utilizzati da RL_Firewall per configurare e attivare il firewall.

Per attivare il firewall al'accensione del server Linux, occorre inserire il seguente script tra quelli che vengono avviati al boot:

#! /bin/bash
#
#

#Retelinux Firewall
case "$1" in
start)
echo -n "Starting rl_firewall: "
/etc/rl_firewall/rlfirewall.script
;;

*)
exit 1
;;
esac

exit 0

Ad esempio, si puo' salvare il file in /etc/init.d chiamandolo rl_firewall, e dandogli i permessi di esecuzione con

cd /etc/init.d
chmod 0700 rl_firewall

e poi tramite Webmin stesso si puo' impostare l'avvio dello script, richiamando la pagina System -. Bootup e Shutdown -. rl_firewall, selezionando Start at Boot Time e confermando la modifica con Save.

 
FASE 7: CONFIGURAZIONE DI RL_FIREWALL
RL_Firewall viene configurato tramite Webmin richiamando la pagina System--. RL_Firewall
Dopo l'installazione, viene presentata un'interfaccia con i valori di default:




Stato Abilitazione RL Firewall: YES NO
Accesso Webmin da remoto
Indirizzi rete per Webmin:
Attenzione: attualmente siete connessi a Webmin dall'indirizzo 192.168.1.2.
 
Abilitazioni su Firewall
Risposta a ping
Utilizzo ftp
Accesso loopback
 
Interfacce di rete
Interfaccia rete interna:
Indirizzi rete interna:
 
Routing e masquerading
Routing: YES NO
Masquerading: YES NO
 
Servizi sul firewall
Server Attivi Interna: SSH WWW SQUID SMB POP3 SMTP FTP



bk_
Selezionare per confermare l'operazione sul salvataggio/ripristino dei dati.


Come prima cosa occorre entrare in Module Config, controllare che la casella Directory Configurazione Webmin sia settata con la directory giusta contenete i files di configurazione di Webmin (il valore di default dovrebbe essere esatto).
Inoltre, occorre porre INTERNET, DMZ e regole Personali a Yes.

Configurable options for RL Firewall
Directory Configurazione
File di Configurazione
INTERNET No    Yes   
DMZ No    Yes   
DNAT No    Yes   
Regole Personali No    Yes   
Regole Generali
File Regole Personali
File Flags Kernel
Altre Porte No    Yes   
Directory Configurazione Webmin



Per consentire l'accesso al server fax basato su Hylafax occorre selezionare Imposta Parametri e aggiungere la dicitura e la porta su cui Hylafax e' in ascolto (ossia la porta tcp 4559) per le attivazioni.
La dicitura puo' essere scelta come si vuole. Nell'esempio scegliamo HLF.
Nella pagina delle impostazioni personali occorre aggiungere HLF nelle caselle Servizi di Elenco Parametri sul Firewall e Elenco Parametri DMZ, e selezionare Applica Cambiamenti. Appariranno le due caselle HLF nelle relative tabelle. Occorrera' aggiungere T4459 (dove la lettera T sta per "protocollo tcp" e 4459 e' la porta) nelle caselle HLF e selezionare di nuovo Applica Cambiamenti.


Elenco Parametri sul Firewall
Servizi:
SSH
WWW
SQUID
SMB
POP3
SMTP
FTP
HLF
 
Elenco Parametri DMZ
Servizi:
SSH
WWW
SQUID
SMB
POP3
SMTP
FTP
HLF





A questo punto occorre eseguire le impostazioni degli indirizzi di rete sulla pagina principale di RL_Firewall.
La prima cosa da fare e' proteggere Webmin da tentativi di accesso da indirizzi non autorizzati. Nella sezione Accesso Webmin da remoto e' possibile specificare quali sono gli indirizzi di rete per cui la conenssione a Webmin sara' accettata.
Specificando 127.0.0.1, l'accesso sara' permesso in locale (ossia dal server Linux). Nella dicitura in rosso

Attenzione: attualmente siete connessi a Webmin dall'indirizzo 192.168.1.2.

viene specificato l'indirizzo ip da cui ci si sta connettendo. Se non si vuole perdere la connessione dopo l'attivazione del firewall, occorre aggiungere l'indirizzo tra quelli permessi.
Se si vuole lasciare libera la connessione da qualsiasi luogo, occorre specificare l'indirizzo 0.0.0.0.

Le interfacce e indirizzi delle reti devono essere specificate nel seguente modo (naturalmente stando all'esempio):

Interfaccia rete internet: eth0
Interfaccia rete interna: eth2
Indirizzi rete interna: 192.168.1.0/24
Interfaccia rete DMZ: eth1
Indirizzi rete DMZ: 220.1.1.0/29


Ricordiamo che con la dicitura 192.168.1.0/24 si intende rete 192.168.1.0 MASK 255.255.255.0. Infatti, dopo il segno / viene posto il valore della MASK, che puo' essere specificato in due modi:

a) scrivendolo per esteso (192.168.1.0/255.255.255.0)
b) scrivendo il numero dei bit posti a 1 se la MASK viene scritta in notazione binaria e se tutti i bit posti a 1 partono dal primo bit a sinistra e sono tutti di seguito. Ad esempio, convertendo 255.255.255.0 in binario si ottiene 11111111.11111111.11111111.00000000. Il numero di bit a 1 e' 24. Quindi, al posto di 255.255.255.0 posso scrivere 24 (192.168.1.0/24).

Il valore di Routing deve essere posto a YES, in modo da poter utilizzare il server Linux come router.
Se si vuole poter accedere al server Linux dalla LAN aziendale tramite il protocollo SSH, occorre selezionare il checkbox SSH nella sezione Servizi su Firewall--. Server Attivi Interna.





Stato Abilitazione RL Firewall: YES NO
Accesso Webmin da remoto
Indirizzi rete per Webmin:
Attenzione: attualmente siete connessi a Webmin dall'indirizzo 192.168.1.2.
 
Abilitazioni su Firewall
Risposta a ping
Utilizzo ftp
Accesso loopback
 
Interfacce di rete
Interfaccia rete internet:
Interfaccia rete interna:
Indirizzi rete interna:
Interfaccia rete DMZ:
Indirizzi rete DMZ:
 
Routing e masquerading
Routing: YES NO
Masquerading: YES NO
 
Servizi sul firewall
Server Attivi Interna: SSH WWW SQUID SMB POP3 SMTP FTP HLF
Server Attivi Internet: SSH WWW SQUID SMB POP3 SMTP FTP HLF



bk_
Selezionare per confermare l'operazione sul salvataggio/ripristino dei dati.


Si puo' ora selezionare Impostazione DMZ per attivare l'accesso ai servizi di posta, fax e intranet.




IMPOSTAZIONE DMZ

Servizi su DMZ
Server DMZ Attivi Interna: SSH WWW SQUID SMB POP3 SMTP FTP HLF
Server DMZ Attivi Internet: SSH WWW SQUID SMB POP3 SMTP FTP HLF





Confermando con il tasto Applica Cambiamenti e selezionando Home Firewall si torna alla Home Page del firewall.

Da ultimo occorre permettere la navigazione Internet dalla rete LAN. Per fare questo si puo' inserire una regola personale selezionando Imposta Personali e immettendo il seguente script:

#!/bin/bash

#imposto IPT al percorso completo di iptables
IPT="/sbin/iptables"

#cambio l'origine dei pacchetti derivanti dalla LAN mettendo l'indirizzo del server Linux (10.0.0.2)
$IPT -t nat -I POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.2


Applicando i cambiamenti e tornando sulla pagina principale diRL_Firewall si puo' ora attivare il firewall selezionando ESEGUI.

E' possibile salvare la configurazione creata immettendo nella casella bk_ un nome identificativo della stessa (ad esempio principale), selezionando Selezionare [ ] per confermare l'operazione sul salvataggio/ripristino dei dati. e cliccando su Salva in.

 
DOCUMENTI CORRELATI
PROGETTO PR1
RIFERIMENTI
www.webmin.com
www.perl.com
ferm.sourceforge.net
www.netfilter.org
www.linuxguruz.org/iptables/
CAMBIAMENTI
--. 8 aprile 2003 10:20: correzione impostazione configurazione iniziale;
--. 17 febbraio 2003 13.00: creazione documento
 
 
 redazione@retelinux.com