Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2)<<Open Firmware>>
3<<Difesa>>
4<<Marco Triverio>>
5<<Un viaggio all'interno di Open Firmware, il “BIOS” dei Mac con processore
PowerPC; sapersi destreggiare e saper personalizzare questo ambiente sono
conoscenze fondamentali per rendere più sicuro il proprio Mac>>
Dall'articolo imparerai...
• I principi fondamentali per rendere il tuo Mac più sicuro
• A destreggiarti all'interno di Open Firmware
• A personalizzare Open Firmware modificando le variabili memorizzate nella NVRAM
• A gestire un sistema in dual-boot
• A sfruttare lo stack di Open Firmware
• A proteggere il tuo Mac da attacchi di chi avesse accesso fisico alla macchina
• A conoscere i punti deboli di tali protezioni
Sull'autore
Marco Triverio è uno studente al terzo anno di Ingegneria Informatica presso il Politecnico di
Milano; da quando suo padre gli regalò un iMac 10 anni fa, ha imparato ad analizzare, conoscere e
programmare i computer Apple ed i sistemi Unix-like.
I suoi interessi si estendono anche al mondo dell'elettronica e dell'intelligenza artificiale.
Il suo curriculum è disponibile all'indirizzo: http://trive.110mb.com/Triverio_CV.pdf
In Rete
● Ulteriori approfondimenti sono disponibili sul sito web dell'autore: http://trive.110mb.com
● “Il” sito di sicurezza per quanto riguarda i Macintosh http://www.securemac.com
● Note ufficiali di Apple su Open Firmware:
http://developer.apple.com/technotes/tn/tn1061.html
● Reference su Open Firmware: http://www.firmworks.com/QuickRef.html
sudo nvram -p
security-password %ff%c8%c5%c5%de
Introduzione
La sicurezza di un sistema operativo è un aspetto che deve essere curato in ogni minimo dettaglio se
si vogliono evitare brutte sorprese.
Mac OS X Tiger permette di avere a portata di click molte soluzioni interessanti per la protezione
del nostro computer; la prima è sicuremante il firewall, facilmente configurabile dal pannello
"Condivisione" nelle Preferenze di Sistema: dalla linguetta "Servizi" si possono attivare e
disattivare i servizi più comuni, come Accesso FTP, login remoto via SSH e Condivisione
Documenti; dalla linguetta "Firewall" si può attivare il firewall e aggiungere o rimuovere porte
attraverso cui ricevere il traffico di rete.
Apple fornisce dunque una soluzione molto user-friendly ma non lascia affinare ogni singolo
parametro: per fare questo vi consiglio di scaricare l'ottimo shareware FireWalk X (
http://www.pliris-soft.com/products/firewalkx/index.html ).
Una caratteristica interessante è invece data dal pannello "Sicurezza" nelle Preferenze di Sistema
(Figura 1), che riunisce in sè la possibilità di attivare molte protezioni di solito sparse per i vari
pannelli: si può richiedere una password ogni volta che si sveglia il computer dallo sleep o si
disattiva il salvaschermo; si può disabilitare il login automatico, per cui ad ogni startup si presenterà
la finestra di login e sarà richiesta la password dell'utente; si può anche far richiedere una password
ogni volta si vogliano modificare le preferenze di sistema protette (quelle segnalate da un
lucchetto); si può inoltre richiedere che il computer effettui automaticamente il logout dopo N
minuti di attività (con 5<= N <=960).
Ma la soluzione più interessante del pannello "Sicurezza" è sicuremente FileVault, che permette di
crittografare la propria cartella Inizio con l'algoritmo AES-128 (ovvero l'Advanced Encryption
Standard con chiave a 128bit): i nostri dati sono dunque protetti anche se l'hard-disk dovesse essere
rimosso dal computer (al contrario le protezioni prima elencate sono legate alla macchina).
Per attivare FilaVault bisogna impostare una Master Password (che permette di sbloccare qualsiasi
account crittografato in caso l'utente abbia dimenticato la propria password) e poi cliccare su
"Attiva FileVault": i dati verranno crittati con la password di login.
Per affinare ulteriormente la sicurezza sul proprio Mac si intervenga anche sul pannello "Account"
> "Opzioni Login" che permette, tra le altre cose, di mostrare la finestra Login come "Nome e
Password": un potenziale attaccante sarà dunque costretto ad indovinare il nome utente, oltre alla
password.
Potrebbe diventare:
QmpimiG4!...Nsff?
Se in questo modo non riuscite a creare password abbastanza facili da ricordare esiste un metodo
alternativo e piuttosto originale, che consiste nel prendere, piuttosto che una frase inventata, le
parole di una canzone (o di qualche frase famosa) di cui utilizzare le iniziali: miscelando
sapientemente minuscole e maiuscole, numeri e segni di punteggiatura, avremo una password
sicura. Comunque ricordate: la fantasia non ha limiti e con un piccolo sforzo possiamo aumentare
sensibilmente il livello di sicurezza della nostra macchina.
Per verificare la bontà di una password, Apple ha incluso in Tiger un'apposita utility: apriamo
"Accesso portachiavi" contenuto in /Applicazioni/Utility/ e dal menu Composizione scegliamo
“Cambia password per il portachiavi "xxx"” e poi clicchiamo sulla chiave che compare a fianco del
campo “Nuova password”. Scegliendo “Tipo: manuale” e digitando una qualsiasi password
compariranno consigli per migliorarla. La password che abbiamo creato in precedenza ha una
qualità davvero ottima (come si vede in Figura 2)!
Ultimo consiglio: è buona abitudine cambiare la password regolarmente.
Open Firmware
La maggior parte delle precauzioni che si possono prendere via GUI sono di "alto livello" e possono
quindi essere facilmente aggirate.
● Riavviando forzatamente il computer si possono saltare la password di salvaschermo e
quella di risveglio dallo sleep;
● avviando il computer da CD si può evitare di loggarsi: ad esempio, avviando dal CD di
installazione di Mac OS X e scegliendo dal menu Installer la voce "Reinizializza la
password..." si possono resettare le password di qualsiasi utente, amministratore e root
compresi;
● avviando il computer in Single-User Mode, si può navigare l'hard-disk con privilegi di root;
● avviando il computer in Target Disk Mode, si rende il disco interno navigabile da qualsiasi
altro Mac collegato via FireWire.
Come possiamo impedire tutto questo? Bisogna utilizzare intelligentemente Open Firmware: è
questo il "BIOS" dei Macintosh con processore PowerPC ed agisce prima che venga caricato il
Sistema Operativo controllando il buon funzionamento dell'hardware.
Le impostazioni di Open Firmware vengono salvate in una memoria non volatile (ovvero che non
perde il proprio contenuto in assenza di corrente).
Esistono tre modi per modificarle:
● tramite interfaccia grafica, con un semplice strumento offerto da Apple (Figura 3)
http://docs.info.apple.com/article.html?artnum=120095
(per il download diretto http://download.info.apple.com/Mac_OS_X/062-
9138.20011220/us/Open_Firmware_Password.dmg.bin)
● tramite la linea di comando di Mac OS X, sfruttando il comando nvram; questo permette di
modificare le variabili di Open Firmware con la sintassi
Per entrare in Open Firmware la prima cosa da fare è riavviare il computer: dopo il classico "Bong"
si premano contemporaneamente i tasti Mela+Alt+O+F.
Su un iMac, ad esempio, ci troveremo davanti a una shermata simile a quella mostrata nel Listato 1
(vedi anche Figura 4).
Questa schermata di benvenuto ci dà qualche informazione sul nostro Macintosh: scrive (se
impostato) il livello di sicurezza (security-mode) definito (command o full, lo vedremo più avanti) e
ci suggerisce due comandi: mac-boot e shut-down, rispettivamente per avviare il sistema operativo
e per spegnere la macchina.
Come possiamo vedere, l'accesso ad Open Firmware non è protetto da password! Per impostarne
una dobbiamo semplicemente digitare
password
Ma la password da sola non serve a nulla; dobbiamo anche scegliere il livello di sicurezza (detto
security-mode). Abbiamo tre possibilità:
● None (opzione di default), la password di Open Firmware non verrà mai chiesta (anche se
magari è stata impostata);
● Command, la password verrà richiesta ogni volta che si tentano modifiche ad Open
Firmware; ad esempio quando si prova a:
○ avviare il computer da CD (ovvero quando si preme il tasto C durante lo startup);
○ avviare il computer da un server NetBoot (tasto N durante l'avvio);
○ avviare il computer in Target Disk Mode (tasto T);
○ avviare il computer in Single-User-Mode (Mela+S);
○ resettare la PRAM e la NVRAM (Mela+Alt+P+R oppure reset-nvram o reset-all da
Open Firmware);
○ di entrare nel "boot-loader" (tasto Alt).
● Full, la password verrà richiesta ad ogni avvio, ad ogni risveglio dall'ibernazione (ovvero il
cosiddetto Safe Sleep) ed ogni qualvolta si tentano modifiche ad Open Firmware.
Security-mode non è altro che una delle variabili (dette Configuration Variables) contenute nella
NVRAM e che definiscono il comportamento di Open Firmware. Per modificarle dalla linea di
comando di OF si dovrà usare la sintassi:
ad esempio
setenv patate 3
oppure
printenv
L'output sarà diviso su tre colonne: la prima indica le variabili, la seconda e la terza riportano
rispettivamente i valori attuali e quelli di default.
>>> Vi avviso che modificare impropriamente queste variabili può danneggiare
irreparabilmente la scheda madre. Non sono responsabile per ciò che farete! <<<
Boot
Tra le variabili di Open Firmware ce ne sono alcune molte utili:
● auto-boot?, se impostata a "true", fa sì che il Mac, al di là del security-mode impostato, entri
in Open Firmware ad ogni avvio o risveglio dall'ibernazione (ma non dallo sleep!)
● security-#badlogins (che esiste solo se security-mode è impostato a command o a full) tiene
il conto del numero dei tentativi di accesso ad Open Firmware in cui è stata inserita una
password sbagliata
● boot-script se use-nvramrc? è impostata a true verrà eseguito lo script inserito con il
comando nvedit
● boot-args specifica i parametri che verranno passati al kernel all'avvio
○ -s farà avviare il Mac in single-user mode
○ -v farà avviare il Mac in modalità "verbosa", ovvero la bella barra di caricamento di Mac
OS X verrà sostituita da scritte bianche su sfondo nero
○ cpus=1 se le CPU sono più di una, farà credere a Mac OS X che ce ne sia una sola
○ maxmem=N farà credere a Mac OS X che solo N MB di RAM siano presenti
L'accesso in single-user mode è sempre possibile se security-mode è impostato a "none": o
impostando la variabile "boot-args" come specificato precedentemente oppure premendo MELA+S
nelle prime fasi di avvio.
In questa particolare modalità si ha accesso come root ed è dunque possibile navigare il filesystem o
modificare le password con il comando:
passwd nomeutente
Ad esempio:
# passwd root
Changing password for root.
New password:
Retype new password:
Se da un lato questa è una grande opportunità per gli utenti che dimenticano la propria password,
dall'altro è un grosso rischio di sicurezza.
● boot-device specifica il disco di avvio.
Quest'ultima è di grande interesse se abbiamo un Mac che avvia più sistemi operativi (ad esempio
Mac OS X e Linux): se security-mode è impostato a "none" è sufficiente premere ALT appena dopo
il "Bong" per poter scegliere da una lista il sistema operativo da avviare.
Se invece security-mode è command o full, sarà necessario entrare in Open Firmware e modificare
tale variabile, che ha come valore di default:
hd:,\\:tbxi
<device>:<partition>,<path><filename>
in cui
<device> è il disco da cui avviare, che può essere:
● hd ovvero l'hard-disk interno;
● cd ovvero il cd o il dvd;
● ma può anche essere, ad esempio, ultra0 (=primo disco IDE) oppure scsi-int/sd@1
(=secondo disco SCSI connesso al controller SCSI interno);
<partition> è il numero di partizione, ad esempio ultra0:4;
<path> è una cartella (si usi \ come separatore al posto di /); si ricordi che: "\\" sta per
"\System\Library\CoreServices\";
<filename> è:
● o un file, ad esempio "BootX";
● oppure ":tbxi", che non specifica un file di boot ma lo fa ricercare all'interno della cartella
definita con <path>.
Supponiamo a questo punto di avere un sistema dual-boot, con tabella delle partizioni come quella
mostrata nel Listato 2. In questa:
● disk0s1 contiene la mappa delle partizioni
● disk0s2 è la partizione di bootstrap
● disk0s3, disk0s4, disk0s5 e disk0s6 sono rispettivamente le partizioni dedicate a Linux.
● disk0s7 è la partizione di Mac OS X
● disk0s8 è la partizione per lo scambio di documenti tra Linux e Mac OS X.
E' possibile vedere quanto vale la variabile boot-device con il comando:
printenv boot-device
Sul mio Mac, su cui Mac OS X è il sistema di default, questo comando restituirà:
boot hd:2,\\:tbxi
Banner
Due variabili a mio avviso molto interessanti sono oem-banner e oem-banner? le quali permettono
di impostare un messaggio che comparirà in cima alla schermata di benvenuto di OF.
Prima di tutto bisogno attivare il banner con:
Questa possibilità è molto interessante in caso il nostro PowerBook venga smarrito e venga trovato
da una persona onesta (vedi Figura 5).
C'è un altro modo per far comparire un messaggio simile a quello sopra descritto: si può modificare
la struttura della finestra di login; per farlo si apra con un editor di testo il file
/Library/Preferences/com.apple.loginwindow.plist e si aggiunga il testo sottolineato nel Listato 3.
Volendo si può anche controllare la dimensione del testo aggiungendo, subito dopo, il testo del
Listato 4. Naturalmente il numero specificato si riferisce alla dimensione dei caratteri.
decimal
Poi si inseriscano i numeri (l'ultimo seguito da Invio), che verranno memorizzati nello stack:
15 9
si inserisca poi il simbolo di somma "+" seguito da Invio; questo somma i due numeri, memorizza il
risultato nello stack e li cancella.
Si inserisca poi il simbolo "." che mostra l'ultimo elemento inserito nello stack e lo cancella.
A fianco dell'input comparirà dunque il risultato. Ricapitolando (l'input è sottolineato):
0 > decimal ok
0 > 15 9 ok
2 > + ok
1 > . 24 ok
0 > _
Il numero che compare prima del simbolo di prompt ">" indica gli elementi presenti nello stack (la
notazione può essere esadecimale, decimale o ottale, a seconda di cosa abbiamo scelto noi). Più
velocemente, avremmo potuto digitare (solo "." va seguito da Invio):
0 > 5 7 + . 12 ok
".s" è un operatore che mostra il contenuto dello stack e indica l'ultimo numero inserito ma non
cancella nulla (si prema Invio solo dopo ".s"):
0 > 10 21 37 ok
0 > 10 21 37 ok
3 > .s -> 10 21 37 <- Top ok
3 > dup ok
4 > .s -> 10 21 37 37 <- ok
4 > clear ok
0 > _
Si ricordi che ogni volta che si inserisce una "bad-word", ovvero un comando non conosciuto da
Open Firmware, il contenuto dello stack viene automaticamente cancellato. Esempio:
Per cancellare l'ultimo, gli ultimi due elementi o gli ultimi tre elementi dello stack si usino drop,
2drop e 3drop:
0 > 1 2 3 4 5 6 7 8 ok
8 > .s -> 1 2 3 4 5 6 7 8 <- Top ok
8 > drop ok
7 > .s -> 1 2 3 4 5 6 7 <- Top ok
7 > 2drop ok
5 > .s -> 1 2 3 4 5 <- Top ok
5 > 3drop ok
2 > .s -> 1 2 <- Top ok
Comandi simili esistono anche per dup: possiamo infatti duplicare l'ultimo numero N volte
utilizzando Ndup.
Altre possibilità
Open Firmware può anche essere utile per espellere un CD che non vuole saperne di uscire dal
drive (anche se il più delle volte basta premere il pulsante del mouse appena dopo il bong dello
startup). Si scriva:
eject cd
Si possono inoltre resettare NVRAM e PRAM. La NVRAM è la RAM non volatile, in quanto
mantiene il proprio contenuto anche a computer spento: contiene, come già detto in precedenza, le
variabili di Open Firmware.
La PRAM è invece la RAM parametrica e contiene diverse impostazioni tra cui le impostazioni del
monitor (refresh rate, risoluzione, numero di colori), impostazioni Ora, volume Bong di Startup,
Volume autoparlanti, informazioni su kernel panic recenti (se ne sono avvenuti) e impostazioni
regione DVD.
Per resettarle si scriva
reset-nvram
reset-all
dopo il quale il computer dovrebbe riavviarsi. Il reset di questi parametri in alcuni casi permette di
risolvere diversi problemi.
Ad esempio
fà si che (anche con security-mode impostato su none) il computer, prima di avviare il sistema
operativo, entri in Open Firmware e aspetti il nostro "mac-boot".
Per visualizzare le variabili si utilizzi invece:
nvram -p
Queste infatti possono essere visualizzate anche senza privilegi di amministratore. Ma se noi
scriviamo
sudo nvram -p
e forniamo la password corretta, ci verrà presentato un elenco con diverse voci aggiuntive, tra cui
"security-password":
security-password %da%c3%da%da%c5
nvram -p
Conclusione
Anche se Open Firmware non garantisce sicurezza totale (ma chi la garantisce?) il suo utilizzo
parallelo con FileVault e un po' di accortezza possono rendere il nostro Macintosh decisamente al
riparo da moltissimi attacchi.
Welcome to Open Firmware, the system time and date is: hh:mm:ss nn/nn/nn
Command security mode.
ok
0>_