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

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
(marcata come "da adottare", si veda la discussione della pagina)
Riga 23: Riga 23:
                     /sbin/cryptsetup luksOpen /dev/loop0 criptata
                     /sbin/cryptsetup luksOpen /dev/loop0 criptata
                 else
                 else
                     echo "Impostazione periferica ricorsiva non riuscita."
                     echo "Impostazione periferica ricorsiva non riuscita." >&2
                    exit 3
                 fi
                 fi


                 if [ $? = 0 ]; then
                 if [ $? = 0 ]; then
                     mount /dev/mapper/criptata /home/'''nomeutente'''/criptata
                     mount /dev/mapper/criptata /home/'''nomeutente'''/criptata
                else
                    echo "Impotazione periferica non criptata non riuscita." >&2
                    /sbin/losetup -d /dev/loop0
                    exit 2
                 fi
                 fi


                 if [ $? !=0 ]; then
                 if [ $? != 0 ]; then
                     echo "Impossibile montare la periferica criptata."
                     echo "Impossibile montare la periferica criptata." >&2
                     /sbin/cryptsetup luksClose criptata
                     /sbin/cryptsetup luksClose criptata
                     /sbin/losetup -d /dev/loop0
                     /sbin/losetup -d /dev/loop0
                    exit 1
                 fi
                 fi
         ;;
         ;;
         smonta)
         smonta)
                 umount /dev/mapper/criptata
                 umount /dev/mapper/criptata
                echo "Smontaggio riuscito"


                 if [ $? = 0 ]; then
                 if [ $? = 0 ]; then
                    echo "Smontaggio riuscito"
                     /sbin/cryptsetup luksClose criptata
                     /sbin/cryptsetup luksClose criptata
                 else
                 else
                     echo "Smontaggio non riuscito."
                     echo "Smontaggio non riuscito." >&2
                    exit 3
                 fi
                 fi


                 if [ $? = 0 ]; then /sbin/losetup -d /dev/loop0
                 if [ $? = 0 ]; then
        if [ $? = 0 ]; then  
                    /sbin/losetup -d /dev/loop0
            echo "Periferica criptata chiusa"
    if [ $? = 0 ]; then  
            touch /home/'''nomeutente'''/criptata.img
        echo "Periferica criptata chiusa"
        else echo "Chiusura periferica criptata non riuscita"
        touch /home/'''nomeutente'''/criptata.img
                fi
                    else
                        echo "Rimozione periferica ricorsiva non riuscita." >&2
                        exit 1
                    fi
else
                    echo "Chiusura periferica criptata non riuscita" >&2
                    exit 2
        fi
        fi
         ;;
         ;;

Versione delle 15:42, 19 apr 2015

Guida da adottare! Bannermv.png


Debian-swirl.png Versioni Compatibili

Tutte le versioni supportate di Debian

Introduzione

Questa guida contiene solo due esempi di script Bash per la gestione attraverso cryptsetup di volumi cifrati secondo lo standard LUKS (Linux Unified Keys Setup).
Per la parte relativa alla creazione dei volumi (sia su periferica fisica che su file) rimandiamo alla guida su LUKS e cryptmount

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.
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:

$ mkdir /home/'''nomeutente'''/criptata

Script per file immagine

#!/bin/bash

#Utilizzo di un file immagine come periferica criptata

case $1 in
        monta)
                if [ -f /home/'''nomeutente'''/immagine_cifrata ]; then
                    echo "Impostazione periferica ricorsiva (loop)."
                    /sbin/losetup /dev/loop0 /home/'''nomeutente'''/immagine_cifrata
                fi

                if [ $? = 0 ]; then
                    /sbin/cryptsetup luksOpen /dev/loop0 criptata
                else
                    echo "Impostazione periferica ricorsiva non riuscita." >&2
                    exit 3
                fi

                if [ $? = 0 ]; then
                    mount /dev/mapper/criptata /home/'''nomeutente'''/criptata
                else
                    echo "Impotazione periferica non criptata non riuscita." >&2
                    /sbin/losetup -d /dev/loop0
                    exit 2
                fi

                if [ $? != 0 ]; then
                    echo "Impossibile montare la periferica criptata." >&2
                    /sbin/cryptsetup luksClose criptata
                    /sbin/losetup -d /dev/loop0
                    exit 1
                fi
        ;;
        smonta)
                umount /dev/mapper/criptata

                if [ $? = 0 ]; then
                    echo "Smontaggio riuscito"
                    /sbin/cryptsetup luksClose criptata
                else
                    echo "Smontaggio non riuscito." >&2
                    exit 3
                fi

                if [ $? = 0 ]; then
                    /sbin/losetup -d /dev/loop0
		    if [ $? = 0 ]; then 
		        echo "Periferica criptata chiusa"
		        touch /home/'''nomeutente'''/criptata.img
                    else
                        echo "Rimozione periferica ricorsiva non riuscita." >&2
                        exit 1
                    fi
		else
                    echo "Chiusura periferica criptata non riuscita" >&2
                    exit 2
	        fi
        ;;
        *)
        echo "Usage: $1 {monta|smonta}" >&2
        exit 1
        ;;
esac

Nello script è stato inserito il comando touch per impostare all'ora attuale le date di ultimo accesso e modifica del file criptata.img.
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.
Se non si inserisce quella riga, programmi di backup (che spesso si appoggiano su librsync) possono non accorgersi che il file cifrato è stato cambiato o è stato aperto di recente e non lo considerano nel sincronizzare le varie copie.

Script per periferica ordinaria

In questo esempio viene usata la prima partizione di una scheda di memoria SD (/dev/mmcblk0p1 con lettore compatibile con il modulo sdhci).

#!/bin/bash

case $1 in
        monta)
                echo "Verifica presenza SD:"
                if [ -b /dev/mmcblk0p1 ] ; then
                    echo "."
                else
                    echo "La periferica non è inserita!"
                    exit 2
                fi

                if [ $? = 0 ]; then /sbin/cryptsetup luksOpen /dev/mmcblk0p1 criptata
                fi

                if [ $? = 0 ]; then
                    mount /dev/mapper/criptata /home/'''nomeutente'''/criptata
                fi

                if [ $? != 0 ]; then
                    echo "Il file system cifrato non può essere montato."
                    /sbin/cryptsetup luksClose criptata
                fi
        ;;
        smonta)
#Smonto il file system criptato e controllo che lo smontaggio sia avvenuto correttamente
                umount /dev/mapper/criptata
                if [ $? != 0 ]; then
                    echo "Smontaggio non riuscito."
                fi

#Chiudo il nodo in /dev/mapper e controllo
                 /sbin/cryptsetup luksClose criptata
                if [ $? = 0 ]; then
                    echo "Nodo cifrato in /dev/mapper rimosso."
                else echo "Chiusura periferica criptata non riuscita"
                fi
        ;;
        *)
        echo "Usage: $1 {monta|smonta}" >&2
        exit 1
        ;;
esac




Guida scritta da: GipPasso Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized