Sistemi Liberi
Sentry: un Linux per molti usi...
a cura di Rudi Giacomini Pilon
L'articolo...
In questo breve articolo cercherò di spiegare come
sfruttare Sentry, una distribuzione GNU/Linux un po' particolare, utile
per vari utilizzi, e di illustrarvi una mia esperienza di installazione
(seguita da un utilizzo un poco inusuale).
|
Come definito nelle FAQ del prodotto il "Sentry Firewall CD"
è un CD-ROM avviabile basato su Linux, utile per svolgere
diverse funzioni: da firewall a server applicativo.
Per CD-ROM avviabile, si intende un CD che contiene il sistema operativo,
installato e dotato di un settore di avvio in modo tale che se il BIOS
del PC lo prevede è possibile avviare il computer tramite il
CD-ROM.
Il vantaggio di operare tramite un CDROM è dato principalmente
dall'inalterabilità del sistema e quindi dall'elevato grado di
ripristino del sistema e da una sostanziale impossibilità da
parte di un cracker (non hacker come a volte vengono erroneamente
definiti gli "intrusi" informatici) di comprometterlo in modo
definitivo.
Uno dei divertimenti preferiti dai cracker è infatti
l'installazione di un rootkit immediatamente dopo aver compromesso un
host.
Un rootkit è in parole semplici un insieme di programmi e
utility di sistema modificati in modo da consentire facile accesso,
successivo, al cracker mascherandone nel contempo le attività.
Chiaramente tali programmi vengono normalmente installati
nell'hard-disk del sistema compromesso e sono decisamente ostici da
rimuovere,richiedendo spesso di reinstallare tutto il sistema per poter
ristabilire una situazione sicura.
Nel caso di Sentry il sistema operativo è memorizzato in un CD e
quindi per definizione non modificabile. Il ripristino del sistema si
limita quindi al riavvio del PC (e naturalmente a metterlo in sicurezza
con migliore protezione).
Un altro grande vantaggio è dato dal fatto che il sistema
operativo non è contenuto sull'hard-disk che è uno dei
componenti maggiormente soggetti a guasto all'interno di un computer.
A questo punto potrebbe nascere una interminabile discussione sul fatto
che un lettore di CD è comunque un componente con una meccanica
soggetta a guasti quanto (se non di più) degli hard-disk e che
gli stessi CD sono sogetti a forme di usura. Vorrei solo far notare che
di un CD si possono avere numerose copie a basso costo e che un
lettore di CD ha un prezzo molto inferiore a quello di un hard-disk.
La distribuzione su cui si basava originariamente Sentry è la
Slackware e questa è anche la versione che ho utilizzato. Voglio
comunque segnalare la presenza di una versione di Sentry basata su Red
Hat.
Alcuni passi che seguono sono parziali traduzioni dall'HowTo di
Sentry (tradotte dopo avere verificato personalmente il loro
funzionamento).
- Prelevare l'immagine ISO aggiornata del CD da www.SentryFirewall.com.
Il file che viene prelevato è compresso in formato .gz o .bz2;
bisogna quindi
- decomprimerlo in una directory a vostra scelta:
- Trattandosi di un prodotto che può essere destinato
all'utilizzo come firewall è opportuno verificare
l'integrità del file come segue:
- Passare quindi alla masterizzazione
cdrecord -v -data speed=XXX dev=YYY sentrycd.iso
|
dove XXX sarà la velocità di masterizzazione desiderata e
YYY il percorso del device del Vostro masterizzatore.
Può capitare che siate sprovvisti di un PC con GNU/Linux (spero
di no!) o che, come è capitato al sottoscritto, non abbiate il
masterizzatore disponibile nel vostro PC Linux.
E`sufficiente quindi scompattare il file con uno dei tanti programmi di
decompressione come ad esempio Freezip (freeware). Masterizzare quindi
il CD tramite un programma di masterizzazione adeguato: in Windows tutti
i programmi di masterizzazione più noti prevedono l'opzione per
la creazione di CD da immagine ISO. Pertanto è sufficiente
selezionare l'immagine e far partire la masterizzazione.
Una volta ottenuto il CD sarà necessario un PC, con almeno
due schede di rete, che sia in grado di effettuare il boot da CD (i
BIOS più vecchi non prevedono l'opzione di avvio da CD). E`
richiesto un minimo di 32Mb RAM ma sono consigliati 64Mb. Deve essere
dotato di un floppy drive con almeno un floppy per salvare la
configurazione personalizzata. Sarà invece opportuno scollegare
l'eventuale hard-disk presente (lo potete riciclare in un altro PC)in
modo che non possa costituire un “punto di appoggio” per la modifica
“al volo” della configurazione e dei programmi.
Il PC andrà configurato (intervenendo eventualmente nel BIOS)
per tentare il boot prima da CD e poi da floppy escludendo il boot da
hard-disk.
Da notare che l'HowTo originale prevede anche, fra i requisiti minimi,
il "facile accesso a caffè, the, soda o stimolanti
equivalenti" :-). Da parte mia consiglio invece di dotarsi di una
buona dose di pazienza... e in seguito cercherò di spiegare il
perchè
La necessità di un floppy è ovvia: esso rappresenta (e
contiene) la personalizzazione e la specializzazione del nostro sistema
SENTRY rispetto allo standard contenuto nell'immagine iso del CD.
Il dischetto viene letto in fase di avvio e la sua configurazione
sovrascrive parzialmente quella del CD.
In particolare durante la fase di avvio viene rilevata la presenza di
un floppy. Se presente viene "montato" in /floppy
e viene
letto il file sentry.conf
in esso contenuto. Tale file
contiene delle istruzioni/direttive per indicare al sistema di
rimpiazzare alcuni file di configurazione standard con quelli contenuti
nell floppy stesso. Per il dettaglio sulle istruzioni possibili vi
rimando all'ottimo HowTo contenuto, fra l'altro, anche all'interno del
CD.
In caso di problemi, durante la personalizzazione, potete ripartire
sostituendo il dischetto e ricominciando la configurazione da zero o
semplicemente eseguendo il boot da CD e poi montando il floppy per
modificarne il contenuto.
Una volta avviato il sistema da CD eseguire il Login con utente root
e password sentry
.
Da questo momento bisogna ricordare che ogni modifica apportata al
sistema e non salvata su floppy è da considerare nulla in quanto
il sistema lavora su un ramdisk e qualsiasi dato scompare al riavvio.
Vi assicuro che mi sono dimenticato un numero infinito di volte di
salvare la configurazione e questo comporta la necessità di
ricominciare da capo ad ogni riavvio (da qui il consiglio di armarsi
di molta pazienza).
Innanzitutto modifichiamo le password di default per i due utenti di
standard che sono root e sentry: I comandi sono:
e
quando richiesto fornire la nuova password e confermarla con una
seconda immissione.
E` necessario quindi formattare il floppy per potervi scrivere i file
di configurazione:
formattiamo:
e creiamo il filesystem:
A questo punto possiamo sfruttare l'utility che permette di creare il
file di configurazione sul floppy eseguendo il comando
I file di configurazione scritti nel floppy,a questo punto,
conterranno anche il file delle password
con gli utenti aggiornati e le password modificate.
In alternativa è possibile creare a mano i file di
configurazione copiando la struttura di default con:
cp ~/SENTRY/scripts/cd-config/sentry.conf /floppy/
|
Ricordarsi sempre che è necessario copiare i file man mano che
vengono modificati, quindi, ad esempio, una volta cambiati utenti e
password sarà necessario copiare i file relativi dal ramdisk al
floppy:
cp /etc/passwd /floppy/config/passwd cp /etc/shadow /floppy/config/shadow
|
E` necessario precisare che non tutti i file contenuti nel floppy
vengono letti e vanno a sovrascrivere automaticamente le informazioni
del CD, ma solo quelli specificati all'interno del file /floppy/sentry.conf
.
Innanzitutto sarà necessario specificare di leggere i nuovi
utenti e le nuove password. Apriamo quindi il file attraverso un
editor:
. ed inseriamo le modifiche seguenti:
-------- passwd= /floppy/config/passwd shadow= /floppy/config/shadow --------
|
Passiamo a configurare la prima interfaccia di rete. Sarà
necessario modificare il file /etc/rc.inet1
in modo da
inserire alle voci
IPADDR= NETMASK= NETWORK= BROADCAST=
|
gli indirizzi IP della rete, della netmask, etc.
Copiare poi il file /etc/rc.inet1
dal ramdisk al floppy e
configurare il file /floppy/sentry.conf
aggiungendo la riga
-------- rc.inet1= /floppy/config/rc.inet1 --------
|
Ripetere l'operazione per ciascuna interfaccia di rete ovvero per gli
eventuali file /etc/rc.inet2
etc.
Come accennato nell'introduzione, il CD di SENTRY contiene un
discreto numero di sevizi/applicativi che possono essere utili.
Personalmente, l'ho impiegato in una situazione in cui avevo la
necessità di controllare in maniera molto rigida gli accessi ad
un server applicativo da uno spezzone all'altro della mia intranet.
Lo schema che segue può essere utile per chiarire la cosa:
Mi era infatti necessario limitare il numero di utenti che potessero
accedere al server, misurare il traffico e in caso di necessità
poter interrompere "al volo" il servizio. Inoltre veniva richiesto che
gli accessi fossero possibili solo in una determinata fascia oraria.
Vista la particolarità del caso, ho ritenuto opportuno
collegare fra il server ed il resto della rete un PC che avesse la
funzione di "filtro". Avevo sentito parlare di SENTRY e mi sembrava il
caso opportuno per verificarne il funzionamento.
Ho deciso quindi di dividere la intranet in due aree e utilizzare il PC
con SENTRY come router tra le due. In realtà un'area è
rappresentata dal solo server applicativo ma isolarlo significava
poterne regolare l'accesso in maniera migliore.
Per prima cosa ho verificato che il PC SENTRY non avesse dei servizi
attivi non necessari. Non fidandomi del solo controllo "a vista" della
configurazione, sono ricorso ad un buon scanner di rete (NESSUS) per testare il sistema. La
buona notizia è che SENTRY non attiva nessun servizio come
predefinito (ovvero se volete qualcosa di attivo dovete esplicitamente
configurarlo).
Nel mio caso non avevo proprio bisogno di alcun servizio se non il
funzionamento di base della rete e avevo già configurato le due
interfacce di rete come sopra riportato.
Giusto per dare un po' di nomi alle cose,il lato dei client
corrispondeva alla scheda di rete eth0 di SENTRY configurata come segue:
IPADDR=192.168.3.1 NETMASK=255.255.255.0 NETWORK=192.168.3.0 BROADCAST=192.168.3.255
|
mentre il lato server corrispondeva alla eth1 di SENTRY configurata
come segue:
IPADDR=192.168.1.1 NETMASK=255.255.255.0 NETWORK=192.168.1.0 BROADCAST=192.168.1.255
|
il server aveva IPADDR=192.168.1.10
mentre i due client di
test erano:
C1 con IPADDR=192.168.3.22
e C2 con IPADDR=192.168.3.118
A questo punto è necessario attivare il routing fra le due
reti. Sul PC SENTRY aggiungiamo quindi le seguenti regole:
route add 192.168.1.10 eth1 route add default 192.168.1.0 route add 192.168.3.22 eth0 route add 192.168.3.118 eth0
|
questo indica al PC come raggiungere gli altri host e solo quelli, non
solo,abbiamo imposto che di default i pacchetti uscenti vengano
indirizzati alla eth1 ove non specificato altrimenti. In questo modo si
escludono tutti gli host del lato client non specificati.
Continuo a ricordare che le modifiche inserite permangono solo fino al
riavvio della macchina. Per evitare un buon mal di testa, dopo avere
eseguito i test con risultato positivo, ricordatevi di trascrivere le
modifiche stesse nel floppy. Per mia scelta personale ho trascritto le
righe relative al routing alla fine del file rc.inet1=
/floppy/config/rc.inet1
ove era comunque presente una direttiva
riguardante la rete di default.
Aggiungiamo quindi nelle tabelle host le dovute specifiche: in /etc/hosts
le righe relative ai due clients e al server...
--------- C1 192.168.3.22 C2 192.168.3.118 Server 192.168.1.10 ---------
|
Nella tabella /etc/hosts.deny
inseriamo la riga che segue:
che, di fatto, vieta l'accesso a qualsiasi attività è
servizio di rete per gli hosts non indicati nella tabella /etc/host.allow
nella quale appunto indichiamo:
192.168.1.10 ALL 192.168.3.22 ALL 192.168.3.118 ALL
|
anche in questo caso bisogna ricordarsi di copiare i file dalla
directory /etc/ al floppy (in /floppy/config/
) in modo da
non perdere le modifiche e configurare il file /floppy/sentry.conf
in modo che i file siano caricati all'avvio.
Per limitare gli accessi in maniera drastica ho scelto una soluzione
banale: ho schedulato con cron due comandi che ad una determinata ora
"spengono" la rete dall'interno:
ifconfig eth0 down ifconfig eth1 down
|
Avrei dovuto poi schedulare altri due comandi per il riavvio della rete
ma ho preferito invece effettuare un reboot
programmato 5
minuti prima dell'orario di inizio lavoro. Naturalmente ho provveduto a
sostituire la tabella cron di default con quella salvata nel floppy.
A questo proposito vi devo riportare che la versione di SENTRY in mio
possesso aveva un errore nella direttiva di sostituzione della tabella
cron e ho fatto ricorso a una serie di scripts per ovviare
all'incoveniente. Tale errore è stato in seguito corretto e la
versione attuale mi risulta essere priva di tale bug.
Il risultato dell'operazione sopra indicata è un PC che
permette ai soli client indicati di collegarsi al server. In caso di
necessità posso modificare le tabelle di route e quelle degli
host per aggiungere o rimuovere accessi ad altri PC o limitare
l'utilizzo di solo alcuni protocolli di rete. Grazie ad una copia del
CD e ad un backup aggiornato del floppy posso attivare (in caso di
guasto) un PC con la stessa funzione di filtro in pochi minuti (il
tempo di trasferire le schede di rete o trovarne un paio di compatibili
con la configurazione). Se lo ritenessi opportuno niente mi impedirebbe
di sfruttare i servizi di firewall a disposizione nel CD in modo da
"rafforzare le difese".
Come ultima nota segnalo la presenza di un utility (netwatch
)
che permette di visualizzare, in modalità testo, i contatori dei
pacchetti che viaggiano nella rete evidenziando il traffico fra i due
segmenti.
Chi ne fosse capace inoltre può eseguire il mount dell'immagine
del CD copiarla in un disco e modificarne le parti che ritiene
opportune. Ne otterrà un sistema personalizzato, pronto all'uso,
che potrà eventualmente riconvertire in CD.
Per le applicazioni possibili l'unico limite è dato dalla vostra
fantasia...
L'autore
Rudi Giacomini Pilon,
programmatore dall'età di 14 anni, ex progettista elettronico,
ex hardwarista e sistemista presso un Microsoft Solution Provider, ex
esperto di reti e programmatore in una concessionaria IBM, incontra
Linux nel 1994 e da allora vede pinguini ovunque. Dal 1999 è
responsabile EDP in una SpA ove affronta l'informatica a 538 gradi (360
erano pochi). |