Premettiamo una cosa: anche contro gli antifurti più perfetti ci sarà sempre qualcuno che riuscirà a penetrare in un sistema, però migliori sono le difese, più improbabile è questa ipotesi.
Gli attacchi verso un sistema Linux possono arrivare da varie parti: dalla console (tastiera/mouse), sull'unità centrale della macchina e via rete.
Gli attacchi dalla rete possono essere limitati, tuttavia se devono essere
forniti servizi all'esterno bisogna rassegnarsi ad esporre alcune parti
della macchina. L'importante è non rendere facilmente accessibili
aree vitali (filesystem /etc
via NFS in rw, se potete evitate
anche l'NFS, oppure aree di incoming nell'FTP pubblico).
Una cosa che intanto possiamo proteggere con facilità è la console. Una cosa importante: se dimenticate aperta la sessione di root siete fregati! Non fidatevi assolutamente della chiavetta che blocca la tastiera, in quanto il mouse è sempre attivo, e mediante un po' di copia/incolla con questo si può fare quasi tutto! Utilizzate sempre un programma di lock che richieda l'inserimento una password se dovete abbandonare momentaneamente la postazione.
Una cosa un po' difficile da proteggere è l'unità centrale: è preferibile renderla inaccessibile (sotto chiave, ma con la possibilità di ventilazione), in quanto se proteggete l'avvio come descriverò più avanti, l'unico modo per sbloccare tutto è azzerare il bios o alterare il disco trapiantandolo in un'altra macchina, quindi aprire il coperchio.
Vediamo adesso come proteggere una fase delicata del sistema: l'AVVIO!
Si può ovviare a ciò mediante un'opzione ormai inserita da qualche anno nei nuovi Bios: la possibilità di inserire una password e permettere il boot direttamente dal disco fisso evitando il floppy. Nella mia macchina, la possibilità di avviare il sistema operativo dal disco fisso è sotto l'opzione ``Bios Features Setup''. Già che ci siamo, possiamo anche definire il tipo di protezione del Bios: infatti se il Bios è accessibile a chiunque, a cosa serve proteggere contro l'avvio da floppy? Impostiamo quindi una password dal menù principale del Bios, e sempre sotto ``Bios Features Setup'' dovrebbe esserci l'opzione per definire il tipo di azione della password: ad ogni accensione o all'accesso al Bios. Se il sistema deve essere avviato anche da alcune persone autorizzate, ma volete che queste non accedano al Bios, dovete impostare la protezione password solo sul setup. Non preoccupatevi: potete inserire comunque tutte le password che volete più avanti.
LILO permette di fare molte cose all'avvio della macchina: permette di scegliere quale sistema operativo avviare, se ce ne sono diversi nella macchina, avviare un kernel specifico, se ce ne sono alcuni disponibili, passare alcuni parametri al kernel, mostrare un messaggio a video, chiedere una password. E proprio questo è quello che ci interessa.
Intanto bisogna definire come deve essere avviato il sistema: ci siete sempre voi all'accensione, oppure il sistema deve avviarsi da solo, ma volete impedire che qualcuno lo possa avviare in modalità single-user, oppure alcune persone autorizzate lo possono avviare ma non con pieni poteri? Sta a voi decidere... tutto è possibile.
Vediamo intanto quali sono le possibilità che uno possa accedere al sistema: se il sistema non si avvia automaticamente quando viene acceso, ma c'è una password o altro, può essere un buon deterrente verso chi potrebbe prendere la brutta abitudine di spegnere il sistema senza le dovute precauzioni (shutdown) o resettarlo con l'apposito pulsante se la macchina sembrasse piantata. Dopo uno o due tentativi falliti una persona furba preferisce lasciar stare e chiamare l'amministratore.
Un'altra situazione pericolosa è quando qualcuno blocca l'avvio del
kernel per passarci alcuni parametri aggiuntivi, come single
oppure root=/dev/fd0
. In questo modo, dopo i test di avvio,
uno può ottenere la shell di root a sua disposizione oppure avviare
un sistema a parte dal dischetto con cui accedere al sistema senza la
necessità di conoscere la password di root. A questo punto è
facile accedere al file /etc/passwd
e azzerare la password di
root.
Ma il LILO può essere più furbo! Infatti, sfruttando il fatto che oltre al MBR c'è anche il settore di avvio della partizione di root, si possono aggiungere anche altre due password, che si aggiungono alla password del Bios e alla password di root!
Le opzioni che ci interessano sono: password
,
restricted
ed eventualmente message
e
prompt
.
Nota: se inserite la password nel file di configurazione di LILO,
dovete impostare a -rw------- i permessi del relativo file di configurazione
(chmod 600 <file>
), in modo che nessuno possa andare a
leggersela! Comunque LILO si accorge di questo e vi avvisa di una simile
situazione pericolosa.
Per fare questo basta inserire nel file di configurazione la riga
password = "codice"
, e al posto di codice
inserite
la password voluta. Reinstallate quindi LILO. Potete usare anche il file di
configurazione di LILO generato all'installazione e apportare l'aggiunta
della riga password
.
Per fare questo si deve aggiungere la riga restricted
nel file
di configurazione di LILO oltre alla riga password
(vedi il
caso precedente). Con restricted
la password viene chiesta
solamente se qualcuno tenda di passare altri parametri al kernel, quindi non
è più possibile impadronirsi del sistema all'accensione da
parte di estranei. In mancanza di tale password il sistema potraà
avviarsi solamente in modo normale (multiutenza).
Per fare questo ho usato un sistema un po' più lungo, ma funzionante.
Ho sfruttato il fatto che oltre al MBR esiste il settore di avvio anche
della partizione di root! In pratica viene avviato il LILO contenuto nel
MBR. Questo visualizza un messaggio di presentazione e il modo di contattare
l'amministratore (numero telefonico) e quindi chiede la password di avvio.
Se la password è corretta viene avviato un sistema operativo generico
presente nella prima partizione. Nel settore di avvio della prima partizione
c'è un altro LILO, diverso dal precedente, che se non interrotto
carica immediatamente il kernel con i parametri standard senza password. Se
però questo viene interrotto dalla pressione dei tasti
[shift]
, [ctrl]
o [alt]
, permette di
passare ulteriori parametri al kernel, in questo caso chiedendo una
ulteriore password.
Vediamo in dettaglio questi file. Questo è il file di configurazione relativo al MBR.
# /etc/lilo.hda boot = /dev/hda message = /boot/message prompt vga = normal ramdisk = 0 password = "password_di_avvio" other = /dev/hda1 label = linux
message
e prompt
) definiscono un
file di testo contenenti informazioni sul sistema e chi contattare in caso
di problemi. Il comando prompt
forza la visualizzazione del
messaggio anche senza la pressione di [shift]
,
[ctrl]
o [alt]
. Il sistema da avviare è
definito come un sistema generico (other
) che si trova nella
prima partizione (la partizione di root, /dev/hda1
) e non un
kernel. Il kernel viene avviato da un altro LILO. Ecco l'altro file di configurazione:
# /etc/lilo.hda1 boot = /dev/hda1 vga = normal ramdisk = 0 image = /zImage root = /dev/hda1 password = "password_riservata" restricted read-only # Non-UMSDOS filesystems should be mounted read-only for checking append = "ether=5,0x300,eth0"
restricted
.
Notare nella seconda riga come LILO debba installarsi nella prima partizione
(/dev/hda1
) e non nel MBR. In questo file vanno messi tutti i
parametri da passare al kernel (riga append
).
Attenzione: la prima volta che installate una configurazione simile dovete
installare prima la configurazione della partizione di root, in quanto se
LILO non trova un sistema operativo nelle partizioni indicate in
other
si rifiuta di compiere l'installazione. I comandi sono:
lilo -C /etc/hda1 lilo -C /etc/hdaAdesso il sistema si avvia in modo sicuro: nessuno può accedere al sistema. Procuratevi sempre comunque dei dischi di emergenza, che comunque possono essere usati solo sbloccando temporaneamente nel Bios il boot da disco fisso (e quindi conoscendo la password del Bios).