Newsgroup: it.comp.os.linux.iniziare
Titolo: Ho crittato la home ma ora come faccio a...

Ciao,
sono riuscito a crittare la home del mio utente. Per far si che parta il
window manager (kde) che ha tutte le sue cose nella cartella .kde nella
home del mio utente, debbo per forza creare il device mapper che mi cripta
i dati e il conseguente mount per montare la partizione durante la
procedura di init. Il problema che questa si interrompe in attesa di
inserire la password per creare il device mapper. Ora fin quando sono
solo io ad usare il computer ok, ma se dovesse diventare un pc multiutente
non posso usare questo sistema ovviamente altrimenti dovrei dare la password
e questo vanificherebbe la crittazione della mia /home, c'è un metodo
alternativo ? 
-- 
Bye,
Colossus
Cpsed, a Linux OpenGL 3D scene editor
http://cpsed.sourceforge.net/

Ho risolto questo problema proprio la scorsa settimana nel modo seguente:
- home criptata -> serve la passphrase
- chiavetta usb (ancora non l'ho comprata e uso un cd, ma l'idea è 
quella) contenente la passphrase in un file a sua volta criptato con gpg 
(con chiave simmetrica).
Ho fatto uno script che al boot monta l'unità removibile e guarda se c'è 
il file contenente la passphrase. Se c'è lo decripta e al volo monta la 
home.
Per passare la chiave a gpg e la passphrase a losetup ho usato expect 
(con relativo infognamento da un'ora con le variabili d'ambiente per far 
funzionare il tutto al boot e non in una shell, all'interno della quale 
mi ha funzionato tutto dopo pochi minuti...).
Il portatile senza la chiavetta ha la home criptata. La chiavetta è 
comunque utilizzabile perché la passphrase che contiene è a sua volta 
criptata (quindi protetta da occhi indiscreti) e la chiave per gpg è nel 
portatile leggibile solo da root (per il massimo scrupolo ho fatto in 
modo di non "appoggiarla" in nessun file temporaneo durante il processo 
per non farla finire sul disco)...
Ovviamente occorre prestare la massima attenzione a non lasciare la 
chiavetta insieme al portatile, altrimenti tutto il lavoro è 
assolutamente inutile....
Gli script che ho scritto sono semplici (escludendo expect non c'è 
niente di programmazione bash, solo qualche if), non li ho postati 
perché fanno anche un'altra cosa e comunque sono personalizzati per la 
mia installazione.
Se l'idea ti sembra interessante e incontri qualche problema ad 
implementarla sarò lieto di aiutarti.
Ciao.

Ho risolto questo problema proprio la scorsa settimana nel modo seguente:
- home criptata -> serve la passphrase
- chiavetta usb (ancora non l'ho comprata e uso un cd, ma l'idea è 
quella) contenente la passphrase in un file a sua volta criptato con gpg 
(con chiave simmetrica).
Ho fatto uno script che al boot monta l'unità removibile e guarda se c'è 
il file contenente la passphrase. Se c'è lo decripta e al volo monta la 
home.
Per passare la chiave a gpg e la passphrase a losetup ho usato expect 
(con relativo infognamento da un'ora con le variabili d'ambiente per far 
funzionare il tutto al boot e non in una shell all'interno della quale 


 implementarla sarņ lieto di aiutarti.
Grazie, ho alcune domande:
1) Se ho ben capito serve il boot da un'unitą esterna come il cd-rom
o la usb pen giusto ? 
2) Metti che l'utente che vuole utilizzare il computer č un'altro che non ha
la sua home crittata, lo script non trovando la passphrase non monta
niente, giusto ?
3) io uso cryptsetup.sh per montare il device mapper in /dev/mapper; la
password gliela dņ io digitandola dalla tastiera. Si puņ fare anche
facendola caricare dall'unitą removibile (cd-rom, usb pen) ?
4) Se dimentico il cd-rom o la usb pen, posso digitare la password da
tastiera ?
Grazie per aver risposto,


 metodo alternativo ?
Potresti provare a crittare solo la partizione del tuo utente e poi dargli
il permesso di montare la propria home. Ovviamente avresti anche una
piccola home sulla root dove ci sono i file essenziali per il login del tuo
utente in modalità testuale. Dopo esserti collegato ti monti la tua
partizione home (in /home/nomeutente) e poi ti basta fare il login da un
altro terminale (o uscire e rientrare) e hai la tua home (e solo la tua)
montata. Le altre home degli altri utenti le puo lasciare nelle home
principale senza crittarle (oppure fare la stessa cosa per loro). Dando
esplicitamente il nome dell'utente abilitato al mount della partizione la
monti solo tu e root, chiaramente mentre se il pc viene avviato da un'altra
persona non si accorge proprio che c'è una partizione criptata sull'hd.
Spero di esserti stato utile!
Ciao
WildEagle

 > Grazie, ho alcune domande:
 >
 > 1) Se ho ben capito serve il boot da un'unità esterna come il cd-rom
 > o la usb pen giusto ?
Se intendi dire che occorre fare il boot dal cd o dalla penna allora no! 
Il boot viene fatto dal disco fisso esattamente come prima. Ho 
semplicemente messo un link allo script che fa tutto in /etc/rcX.d ... 
se quando viene chiamato lo script la penna o il cd è presente, bene, 
altrimenti non cambia nulla.
 > 2) Metti che l'utente che vuole utilizzare il computer è un'altro che 
non ha
 > la sua home crittata, lo script non trovando la passphrase non monta
 > niente, giusto ?
Infatti. Io comunque ho tutte le home criptate.
 > 3) io uso cryptsetup.sh per montare il device mapper in /dev/mapper; la
 > password gliela dò io digitandola dalla tastiera. Si può fare anche
 > facendola caricare dall'unità removibile (cd-rom, usb pen) ?
Esattamente quello che ho fatto io. Questo è lo script expect che chiamo 
da quello al boot per montare il device
(chiamato auto_cryptsetup.sh):
----
#!/usr/bin/expect -f
spawn cryptsetup.sh
set PASS [lindex $argv 0]
expect "assword:"
sleep 1
send -- "$PASS"
expect eof
----
Poi ne ho un altro simile per decriptare la passphrase con gpg
(chiamato "get_passphrase"):
----
#!/usr/bin/expect -f
spawn /usr/bin/gpg -d /automount/passphrase.gpg
expect "Inserisci la passphrase:"
sleep 1
send "!!!!!!! CHIAVE PER GPG QUI !!!!!!!!\r"
expect eof
----
(/automount è un link al dispositivo / directory che contiene il file 
passphrase.gpg in modo che se cambi dispositivo hai solo da cambiare 
questo link e, ovviamente, dove viene montato, in pratica serve a poco 
perché alla fine è risultato tutto molto semplice...)
Infine (e questo è diverso da quello che veramente uso quindi nel 
"riassunto" potrei aver dimenticato qualcosa...) lo script chiamato al boot:
----
#!/bin/bash
# Vanno esportate un po' di variabili di ambiente altrimenti al boot
# gpg non funziona (sicuramente non servono tutte, forse basta
# solo la home, ma non mi sono messo ad indagare...)
SHELL=/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin
ENV=$HOME/.bashrc
USERNAME="root"
PWD=/root
HOME=/root
export USERNAME ENV PATH SHELL PWD HOME
# Monto il dispositivo removibile contenente la passphrase
# (nel file passphrase.gpg)
mount /mnt/cdrom
# A voler essere pignoli sarebbe opportuno mettere un
# controllo sull'esito del mount...
cd /dove_metti_gli_script
if test -e /automount/passphrase.gpg
then
     # Qui si estrae la passphrase e questo non e` il massimo
     # dell'eleganza... in pratica con i 2 grep rimuovo dallo
     # standard output le righe che vengono stampate dallo script
     # spawn e dal gpg... alla fine deve restare una sola riga
     # contenente la passphrase
     PASSPHRASE=`./get_passphrase | grep -v spawn | grep -v gpg `
     # mount della home
     ./auto_cryptsetup.sh "$PASSPHRASE" > /dev/null
fi
umount /mnt/cdrom
----
Per creare il file passphrase.gpg metti la passphrase in un file (io 
l'ho fatto sul desktop :-)) ) e poi:
$ gpg -c nomedelfile
La chiave che digiti qui è quella che devi mettere nel file 
get_passphrase al posto di !!!!!!! CHIAVE PER GPG QUI !!!!!!!!
Per il massimo scrupolo accertati che gli script siano di proprietà 
dell'utente root e dagli i permessi 700.
 > 4) Se dimentico il cd-rom o la usb pen, posso digitare la password da
 > tastiera ?
Si, esattamente come facevi prima.
 >
 > Grazie per aver risposto,
Aspetta a ringraziarmi quando tutto ti funzionerà... non vorrei aver 
fatto confusione a riportarti/adattarti gli script qua ;-)
Comunque prego.

 Spero di esserti stato utile!
Sicuramente, solo non ho capito bene !


 Sicuramente, solo non ho capito bene !
Sicuramente mi sono espresso veramente in forma criptata....
Ciao WildEagle