LUKS gestione manuale dei volumi: cryptsetup: differenze tra le versioni

m
 
(6 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
{{Guida_da_adottare}}{{Versioni compatibili}}
{{Versioni compatibili|Jessie|Stretch|Buster}}
== Introduzione ==
== Introduzione ==
Questa guida contiene solo due esempi di [[script]] Bash per la gestione attraverso cryptsetup di volumi cifrati secondo lo standard [http://code.google.com/p/cryptsetup/ LUKS] (Linux Unified Keys Setup).<br/>
Questa guida contiene solo due esempi di [[script]] Bash per la gestione attraverso cryptsetup di volumi cifrati secondo lo standard [http://code.google.com/p/cryptsetup/ LUKS] (Linux Unified Keys Setup).<br/>
Riga 5: Riga 5:
== Automatizzazione dei passi necessari ==
== Automatizzazione dei passi necessari ==
Assumiamo di avere creato correttamente il volume criptato, la chiave e il filesystem. Ora dobbiamo solo creare uno script da eseguire come [[root]], per fare tutte le operazioni di creazione e montaggio, o viceversa di smontaggio e rimozione automaticamente.<br/>
Assumiamo di avere creato correttamente il volume criptato, la chiave e il filesystem. Ora dobbiamo solo creare uno script da eseguire come [[root]], per fare tutte le operazioni di creazione e montaggio, o viceversa di smontaggio e rimozione automaticamente.<br/>
Di seguito sono riportati due script, uno per il caso di file montato ricorsivamente, l'altro per il caso di periferica ordinaria.<br/>
Di seguito sono riportati due script, uno per il caso di file montato ricorsivamente, l'altro per il caso di periferica ordinaria.
In entrambi i casi il montaggio della periferica criptata avviene nella cartella "criptata" nella home dell'utente; è necessario quindi creare la cartella:
 
<pre>$ mkdir /home/'''nomeutente'''/criptata</pre>
=== Script per file immagine ===
=== Script per file immagine ===
<pre>#!/bin/bash
Con [[privilegi di amministrazione]] copiare il file successivo in <code>/usr/local/sbin</code>, assegnandogli utente e gruppo [[root]] e permessi di esecuzione, dopodiché eseguirlo sempre con privilegi.
 
Si deve però modificare la variabile dello script seguente per utilizzare la propria home.
 
<pre>
#!/bin/bash
 
HOME_UTENTE="/home/nomeutente" ### <-- DA MODIFICARE CON LA PROPRIA HOME


#Utilizzo di un file immagine come periferica criptata
#Utilizzo di un file immagine come periferica criptata
Riga 15: Riga 21:
case $1 in
case $1 in
         monta)
         monta)
                 if [ -f /home/'''nomeutente'''/immagine_cifrata ]; then
                 if [ -f "${HOME_UTENTE}/immagine_cifrata" ]; then
                     echo "Impostazione periferica ricorsiva (loop)."
                     echo "Impostazione periferica ricorsiva (loop)."
                     /sbin/losetup /dev/loop0 /home/'''nomeutente'''/immagine_cifrata
                     loopdev=$(losetup -f)
                    losetup "$loopdev" "${HOME_UTENTE}/immagine_cifrata"
                else
                    echo "File: \"${HOME_UTENTE}/immagine_cifrata\" non trovato!" >&2
                    exit 4
                 fi
                 fi


                 if [ $? = 0 ]; then
                 if [ $? = 0 ]; then
                     /sbin/cryptsetup luksOpen /dev/loop0 criptata
                     cryptsetup open --type luks "$loopdev" criptata
                 else
                 else
                     echo "Impostazione periferica ricorsiva non riuscita." >&2
                     echo "Impostazione periferica ricorsiva non riuscita." >&2
Riga 28: Riga 38:


                 if [ $? = 0 ]; then
                 if [ $? = 0 ]; then
                     mount /dev/mapper/criptata /home/'''nomeutente'''/criptata
                    if ! [ -e "${HOME_UTENTE}/criptata" ]; then
                      mkdir "${HOME_UTENTE}/criptata"
                    fi &&
                     mount /dev/mapper/criptata "${HOME_UTENTE}/criptata"
                 else
                 else
                     echo "Impotazione periferica non criptata non riuscita." >&2
                     echo "Impotazione periferica non criptata non riuscita." >&2
                     /sbin/losetup -d /dev/loop0
                     losetup -d "$loopdev"
                     exit 2
                     exit 2
                 fi
                 fi
Riga 37: Riga 50:
                 if [ $? != 0 ]; then
                 if [ $? != 0 ]; then
                     echo "Impossibile montare la periferica criptata." >&2
                     echo "Impossibile montare la periferica criptata." >&2
                     /sbin/cryptsetup luksClose criptata
                     cryptsetup close criptata
                     /sbin/losetup -d /dev/loop0
                     losetup -d "$loopdev"
                     exit 1
                     exit 1
                 fi
                 fi
Riga 47: Riga 60:
                 if [ $? = 0 ]; then
                 if [ $? = 0 ]; then
                     echo "Smontaggio riuscito"
                     echo "Smontaggio riuscito"
                     /sbin/cryptsetup luksClose criptata
                     cryptsetup close criptata
                 else
                 else
                     echo "Smontaggio non riuscito." >&2
                     echo "Smontaggio non riuscito." >&2
Riga 54: Riga 67:


                 if [ $? = 0 ]; then
                 if [ $? = 0 ]; then
                     /sbin/losetup -d /dev/loop0
                     loopdev=$(losetup -n -O "NAME" -j "${HOME_UTENTE}/immagine_cifrata") &&
                    losetup -d "$loopdev"
    if [ $? = 0 ]; then  
    if [ $? = 0 ]; then  
        echo "Periferica criptata chiusa"
        echo "Periferica criptata chiusa"
        touch /home/'''nomeutente'''/criptata.img
        touch "${HOME_UTENTE}/criptata.img"
                     else
                     else
                         echo "Rimozione periferica ricorsiva non riuscita." >&2
                         echo "Rimozione periferica ricorsiva non riuscita." >&2
Riga 71: Riga 85:
         exit 1
         exit 1
         ;;
         ;;
esac</pre>
esac
</pre>
Nello script è stato inserito il comando <code>touch</code> per impostare all'ora attuale le date di ultimo accesso e modifica del file <code>criptata.img</code>.<br/>
Nello script è stato inserito il comando <code>touch</code> per impostare all'ora attuale le date di ultimo accesso e modifica del file <code>criptata.img</code>.<br/>
Nella prassi si è rivelata importante una modifica esplicita di queste informazioni del file, per sapere quali file cifrati sono stati aperti di recente, nel caso se ne vogliano fare delle copie di backup.<br/>
Nella prassi si è rivelata importante una modifica esplicita di queste informazioni del file, per sapere quali file cifrati sono stati aperti di recente, nel caso se ne vogliano fare delle copie di backup.<br/>
Riga 77: Riga 92:


=== Script per periferica ordinaria ===
=== Script per periferica ordinaria ===
In questo esempio viene usata la prima partizione di una scheda di memoria SD (<code>/dev/mmcblk0p1</code> con lettore compatibile con il modulo <code>sdhci</code>).
Con [[privilegi di amministrazione]] copiare il file successivo in <code>/usr/local/sbin</code>, assegnandogli utente e gruppo [[root]] e permessi di esecuzione, dopodiché eseguirlo sempre con privilegi.
<pre>#!/bin/bash
 
Si deve però modificare la variabile dello script seguente per utilizzare la propria home.
 
In questo esempio inoltre viene usata la prima partizione di una scheda di memoria SD (<code>/dev/mmcblk0p1</code> con lettore compatibile con il modulo <code>sdhci</code>), se si utilizza una diversa memoria si deve cambiare il percorso.
 
<pre>
#!/bin/bash
 
HOME_UTENTE="/home/nomeutente"          ### <-- DA MODIFICARE CON LA PROPRIA HOME
PATH_MEMORIA="/dev/mmcblk0p1"          ### <-- DA MODIFICARE CON IL PATH /dev/... DELLA PROPRIA MEMORIA


case $1 in
case $1 in
         monta)
         monta)
                 echo "Verifica presenza SD:"
                 echo "Verifica presenza SD:"
                 if [ -b /dev/mmcblk0p1 ] ; then
                 if [ -b "$PATH_MEMORIA" ] ; then
                     echo "."
                     echo "."
                 else
                 else
                     echo "La periferica non è inserita!"
                     echo "La periferica ($PATH_MEMORIA) non è inserita!" >&2
                     exit 2
                     exit 2
                 fi
                 fi
 
                 if ! [ -e "$HOME_UTENTE"/criptata ]; then
                 if [ $? = 0 ]; then /sbin/cryptsetup luksOpen /dev/mmcblk0p1 criptata
                    mkdir "$HOME_UTENTE"/criptata
                 fi
                 fi &&
 
                 cryptsetup open --type=luks "$PATH_MEMORIA" criptata &&
                 if [ $? = 0 ]; then
                mount /dev/mapper/criptata "$HOME_UTENTE"/criptata ||
                    mount /dev/mapper/criptata /home/'''nomeutente'''/criptata
                 {
                 fi
                     echo "Il file system cifrato non può essere montato." >&2
 
                     cryptsetup close criptata
                if [ $? != 0 ]; then
                    exit 1
                     echo "Il file system cifrato non può essere montato."
                 }
                     /sbin/cryptsetup luksClose criptata
                 fi
         ;;
         ;;
         smonta)
         smonta)
#Smonto il file system criptato e controllo che lo smontaggio sia avvenuto correttamente
                #Smonto il file system criptato e controllo che lo smontaggio sia avvenuto correttamente
                 umount /dev/mapper/criptata
                 umount /dev/mapper/criptata
                 if [ $? != 0 ]; then
                 if [ $? != 0 ]; then
                     echo "Smontaggio non riuscito."
                     echo "Smontaggio non riuscito." >&2
                    exit 2
                 fi
                 fi


#Chiudo il nodo in /dev/mapper e controllo
                #Chiudo il nodo in /dev/mapper e controllo
                /sbin/cryptsetup luksClose criptata
                cryptsetup close criptata
                 if [ $? = 0 ]; then
                 if [ $? = 0 ]; then
                     echo "Nodo cifrato in /dev/mapper rimosso."
                     echo "Nodo cifrato in /dev/mapper rimosso."
                 else echo "Chiusura periferica criptata non riuscita"
                 else
                    echo "Chiusura periferica criptata non riuscita" >&2
                    exit 1
                 fi
                 fi
         ;;
         ;;
Riga 120: Riga 145:
         exit 1
         exit 1
         ;;
         ;;
esac</pre>
esac
</pre>




{{Autori
{{Autori
|Autore = [[Utente:GipPasso|GipPasso]]
|Autore = [[Utente:GipPasso|GipPasso]]
|Verificata_da =
: [[Utente:HAL 9000|HAL 9000]] 10:49, 29 set 2019 (CEST)
|Estesa_da =
|Numero_revisori = 1
}}
}}


[[Categoria:Filesystem]]
[[Categoria:Filesystem]]
[[Categoria:Crittografia]]
[[Categoria:Crittografia]]
[[Categoria:Bash Scripting]]
3 581

contributi