[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: creazione secondo server sarge



Mandi! salvo.celsomino@virgilio.it
  In chel dí si favelave...

scvi> qualcuno conosce un sistema veloce per fare questa 
scvi> operazione ?

Allego (attacco) un piccolo tutorial che ho realizzato per dei miei
colleghi, credo che possa esserti di aiuto, anche se parla dei nostri
firewall. ;)

E se qualcuno ha da fare commenti ed aggiunte, è ovviamente il
benvenuto. ;)

----------------------------------------------------------------------

Con questo testo cerco di spiegare brevemente come produrre un clone del
vostro firewall, in maniera facile e veloce.

Questa procedura può essere usata per ripristinare un firewall morto, oppure
per crearne un clone da tenere a portata di mano ``perchè non si sa mai''.


PREMESSE

Una macchina GNU/Linux (ma potremmo dire UNIX) tende ad essere ben
organizzata, in particolare da quando sforzi organizzativi come LSB stanno
imponendo standard sull'organizzazione dei file nel disco.
Tutte le distribuzoni, ma in particolare debian, hanno ormai i file di
configurazione che risiedono solo ed esclusivamente in /etc.

Inoltre c'è da considerare che un firewall non ha dati ``stabili'', ma solo
in transito: insomma, non c'è niente di cui fare backup in un firewall, se
non... la configurazione del firewall stesso.

Il file che vi arriva via email (uuencoded) mensilmente risponde a questa
filosofia. Vediamo che cosa contiene.


LA TARPALLA

La tarpalla quindi contiene:

+ lo stato delle partizioni nel disco del firewall
+ lo stato dei pacchetti installati nel sistema
+ una copia dei file di configurazione (/etc) del sistema
+ una copia del file di configurazione del kernel
+ altre cose minori, come le crontab user-defined (/var/lib/cron,
  solitamente vuoto)

normalmente per un firewall sono poche centinaia di K.
Ovviamente, come vi raccomando sempre, dovete sincerarvi che mensilmente il
file vi arrivi dal vostro firewall, e dovete anche preoccuparvi di salvare
(l'email o il file, non è importante) in un luogo sicuro.


LA CAVIA

Prendete quindi una macchina su cui clonare il firewall; se possibile
cercare hardware (in particolare chipset della sk madre e schede di rete
installate) il più possibile simili a quelle del vostro firewall: non è
indispensabile ma vi evita lavoro inutile, vedremo poi.

Fate una installazione di debian sarge, rispondendo come vi pare e piace,
con solo tre note:

+ usate il kernel 2.4 (il default)

+ Partizionate il disco secondo lo schema del vecchio partizionamento
 (che trovate in var/backups/hda.part nella tarpalla): ovviamente il disco
 non deve essere identico, può essere più piccolo o più grande, basta che
 grossomodo rispettiate le ``proporzioni'' e che rispettiate ordine e tipo
 delle partizioni.

+ arrivati alla fase di installazione dei pacchetti aggiuntivi oltre al
 sistema base, non installate nulla.

arrivati al prompt fate login come root, e come prima cosa riducete il carico
sul filesystem / con i comandi:

	cd /
	rm -r tmp; ln -s var/tmp .
	mv home var/; ln -s var/home .

che sostanzialmente eliminano /tmp e spostano home in /var/home.
[questo solitamente vale se avete usato il mio schema di partizionamento,
nel dubbio lasciate stare che tanto non è indispensabile...]

A questo punto recuperate la tarpalla, decomprimetela da qualche parte (ad
esempio in /var/tmp) e prelevate da li il file etc/apt/sources.list
copiandolo sopra a quello corrente (/etc/apt/sources.list appunto).

Aggiornate quindi la definizione dei pacchetti:

	apt-get update


I PROGRAMMI

Non abbiamo copiato i programmi, abbiamo solo i file di configurazione;
occorre quindi reinstallare nel firewall il software che avevamo prima, ma
avendo la lista dei pacchetti installati la cosa è piuttosto semplice.

Nella tarpalla in var/backups/status.selections trovate un file che elenca
brutalmente i pacchetti installati. Spostatevi nella cartella dove c'è
questo file e date:

	apt-get install $(cat status.selections | cut -f 1)

apt-get dovrebbe iniziare a lavorare, ma fermarsi con degli errori: il
problema è che nella lista dei pacchetti potrebbero esserci dei pacchetti
non esistenti come i kernel custom che compilo io, o come pacchetti
vecchi (solitamente librerie) rimasti li da precedenti aggiornamenti.

Occorre semplicemente eseguire il proprio editor preferito contro
status.selections ed eliminare, una ad una, le righe incriminate che danno
errore: i pacchetti obsoleti non ci servono, i kernel custom li installeremo
dopo a manina.

L'operazione è pedante ma nel giro di una mezza dozzina di tentativi apt-get
dovrebbe smetterla di lamentarsi e inziare a scaricare i pacchetti.

Alla fine otteniamo un firewall che ha esattamente i programmi che
ci servono, ma completamente sconfigurato. ;(


LE CONFIGURAZIONI

La tentazione potrebbe essere quella di copiare i file di configurazione
del vecchio firewall sopra questi, ma occorre trattenersi per due motivi:

 a) se l'hardware non è precisamente lo stesso, o avete cambiato lo schema
  di partizionamento, potreste sovrascrivere file importanti e rendere la
  macchina quasi inutilizzabile
 b) inoltre molti utenti di sistema (bind, ssh, ...) vengono creati in fase
  di installazione, e quindi non hanno un UID univoco (ssh 102 sul vecchio
  firewall, 104 sul nuovo ad esempio).

Il primo problema è di facile soluzione: basta eliminare/rinominare nella
tarpalla i file che fanno riferimento all'hardware, come etc/modules o
etc/fstab; se l'hw è simile/gemello, oppure se state semplicemente
costruendo un disco nuovo per lo stesso firewall potete benissimo lasciarli
così.

Il secondo problema è invece un pelo più rognoso... molti di questi utenti
di sistema vengono usati per eseguire demoni e programmi vari, quindi è
probabile che esistano intere cartelle in /var che sono di proprietà di
questi utenti, e se scambiare ssh con bind poi probabilmente non vi
funzionano entrambi.

Una soluzione potrebbe essere quindi quella di fare un diff tra i file e
segnarsi le modifiche più imprtanti, essenzialmente gli scambi di ID:

	diff -ud etc/passwd /etc/passwd
	diff -ud etc/group /etc/group

ma sostanzialmente quello che conviene fare è eliminare i file estratti
dalla tarpalla in precedenza (per tirare fuori le informazioni sui pacchetti
installati), e ri-estrarre la tarpalla: tar, se eseguito da root, è
abbastanza intelligente da ripristinare da solo i file basandosi sugli
utenti/gruppi e non sugli UID/GUD, e quindi la cosa dovrebbe funzionare
senza remore.

Quindi occorre rinominare i file della tarpalla in modo che non sovrascrivano
quelli della nuova installazione:

	mv etc/passwd etc/passwd.old
	mv etc/shadow etc/shadow.old
	mv etc/group etc/group.old
	mv etc/gshadow etc/gshadow.old

per evitare che si ``incrocino'' gli ID...


3 .. 2 .. 1 .. 0 .. GO!!!

Bene, il grosso è fatto, ora è venuto il momento della verità. Ora basta
solo copiare i file, per farlo ci viene in aiuto l'opzione -a di cp.
Basta dare:

	cp -a * /etc

(supponendo di essere ovviamente nella cartella etc/ della tarpalla
decompressa!) per sovrascrivere i file di configurazione della nostra
installazione vergine con quella nuova.

Volendo è anche possibile a questo punto verificare che non ci siano stati
degli scambi di ID, cercando i file appartenenti ad un tal utente o gruppo
con, ad esempio:

	find / -gid 102

Inoltre se sono stati creati degli utenti o dei gruppi, è venuto il momento
di recuperarli da passwd/shadow/group/gshadow vecchi (o ricrearli con
adduser/addgroup).


KERNEL

Per i firewal solitamente ricompilo un kernel all'uopo, utilizzando come
base il file di configurazione boot/config-2.4.XY che trovate nella
tarpalla.

Esistono in rete dozillioni di tutorial su come si compila il kernel (ad
esempio cercate su google "compiling kernel debian way"), evito
l'argomento in toto.

[...]

REBOOT

Installato il nuovo kernel la macchina può essere riavviata, e se tutto è
andato a buon fine dovrebbe essere tale e quale al firewall.
Appunto, tale e quale, quindi con lo stesso indirizzo di rete... quindi non
collegatelo alla rete perchè tutto potrebbe smette di funzionare. ;)
Se volete fare delle verifiche, vi ricordo che l'indirizzo di rete in debian
si trova nel file /etc/network/interfaces, modificate l'indirizzo della rete
prima di connetterlo.

[...]

----------------------------------------------------------------------

-- 
  L'entropia dei soldi aumenta sempre.
							(prof. Taffara)



Reply to: