Erstellen einer Verschlüsselten Container Datei: Unterschied zwischen den Versionen

Aus 4-it
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
<p>Wer Daten Sicher aufbewahren will, kommt um eine Verschl&uuml;sselung nicht drum herum. Hier zeige ich wie man eine verschl&uuml;sselte Container Datei erstellt.</p>
[[Kategorie:Linux]]
[[Kategorie:Sicherheit]]
<p>Wer Daten sicher aufbewahren will, kommt um eine Verschl&uuml;sselung nicht drum herum. Hier zeige ich wie man eine verschl&uuml;sselte Container Datei erstellt.</p>
=Erstellen=
=Erstellen=
<p>Achtung! Es werden root-Rechte ben&ouml;tigt.</p>
<p><strong>Erstellung des Containers mit ca. 512MB:</strong></p>
<source lang="bash">
dd if=/dev/zero of=./privateContainer.vol bs=1024k count=512
</source>


<p>Achtung! Es werden root-Rechte ben&ouml;tigt.</p>
<p><strong>Erstellung mit ca. 512MB:</strong></p>
<p><em># dd if=/dev/zero of=./privateContainer.vol bs=1024k count=512</em></p>
<p>Bei der Verschl&uuml;sselung gibt mehrere Varianten. Grunds&auml;tzlich wird aber immer das gleiche gemacht.</p>
<p>Bei der Verschl&uuml;sselung gibt mehrere Varianten. Grunds&auml;tzlich wird aber immer das gleiche gemacht.</p>
<p><strong>Der Container wird als loop-Device Eingeh&auml;ngt</strong></p>
<p><strong>Der Container wird als loop-Device Eingeh&auml;ngt</strong></p>
<p><em># losetup /dev/loop0 ./privateContainer</em><em>.vol</em></p>
<source lang="bash">
losetup /dev/loop0 ./privateContainer.vol
</source>
<p><strong>Das loop-Device wird f&uuml;r die Verschl&uuml;sselung formatiert.</strong></p>
<p><strong>Das loop-Device wird f&uuml;r die Verschl&uuml;sselung formatiert.</strong></p>
<p><em># #Mit Key-File:<br /># dd if=/dev/urandom of=./private.key bs=1k count=64&nbsp;&nbsp;&nbsp; #Erstellung des Key-File<br /># cryptsetup -c aes-cbc-essiv:sha256 -s 256 luksFormat /dev/loop0 ./private.key<br /># #Mit Passphrase:<br /># cryptsetup -c aes-cbc-essiv:sha256 -s 256 luksFormat /dev/loop0</em></p>
 
<source lang="bash">
#Mit Key-File:<br /># dd if=/dev/urandom of=./private.key bs=1k count=64;   #Erstellung des Key-File
cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/loop0 ./private.key
#Mit Passphrase:
cryptsetup -c aes-xts-plain64 -s 512 -h sha512 -y /dev/loop0
</source>
 
<p><strong>Das loop-Device wird entschl&uuml;sselt.</strong></p>
<p><strong>Das loop-Device wird entschl&uuml;sselt.</strong></p>
<p><em># #Mit Key-File:<br /># cryptsetup luksOpen /dev/loop0 privateContainerluks &ndash;key-file=./private.key<br /># #Mit Passphrase:<br /># cryptsetup luksOpen /dev/loop0 privateContainerluks</em></p>
<source lang="bash">
#Mit Key-File:
cryptsetup luksOpen /dev/loop0 privateContainerluks --key-file=./private.key
#Mit Passphrase:
cryptsetup luksOpen /dev/loop0 privateContainerluks
</source>
 
<p><strong>Ein Dateisystem wird angelegt.</strong></p>
<p><strong>Ein Dateisystem wird angelegt.</strong></p>
<p>Es kann praktische jedes Dateisystem benutzt werden. In diesem Beispiel wird <em>ext3</em> benutzt<strong><br /></strong></p>
<p>Es kann praktische jedes Dateisystem benutzt werden. In diesem Beispiel wird <em>ext3</em> benutzt<strong><br /></strong></p>
<p><em># mkfs.ext3 -L Geheimnis /dev/mapper/privateContainerluks<br /># tune2fs -c 0 -i 0 -r 0 /dev/mapper/privateContainerluks</em></p>
<source lang="bash">
mkfs.ext3 -L Geheimnis /dev/mapper/privateContainerluks
tune2fs -c 0 -i 0 -r 0 /dev/mapper/privateContainerluks
</source>
<p><strong>Die Entschl&uuml;sselung wird aufgehoben und das loop-Device ausgeh&auml;ngt.</strong></p>
<p><strong>Die Entschl&uuml;sselung wird aufgehoben und das loop-Device ausgeh&auml;ngt.</strong></p>
<p><em># cryptsetup luksClose privateContainerluks<br /># losetup -d /dev/loop0</em></p>
<source lang="bash">
cryptsetup luksClose privateContainerluks
losetup -d /dev/loop0
</source>


=Benutzen=
=Benutzen=
<p>Der Umgang mit der verschl&uuml;sselten Container Datei, ist im Grunde so wie mit ein &bdquo;wirkliches&ldquo; Device. Nur mit dem Unterschied, dass es erst als loop-Device eingebunden werden muss.</p>
<p>Der Umgang mit der verschl&uuml;sselten Container Datei, ist im Grunde so wie mit ein &bdquo;wirkliches&ldquo; Device. Nur mit dem Unterschied, dass es erst als loop-Device eingebunden werden muss.</p>
==Einbinden==
==Einbinden==
<p><em># losetup /dev/loop0 ./privateContainer</em><em>.vol</em><br /><em># cryptsetup luksOpen /dev/loop0 privateContainerluks &ndash;key-file=./private.key #Mit Key-File<br /># cryptsetup luksOpen /dev/loop0 privateContainerluks #Mit Passphrase<br /># mount -t ext3 /dev/mapper/privateContainerluks /mnt/</em></p>
<source lang="bash">
losetup /dev/loop0 ./privateContainer.vol
cryptsetup luksOpen /dev/loop0 privateContainerluks --key-file=./private.key #Mit Key-File
cryptsetup luksOpen /dev/loop0 privateContainerluks #Mit Passphrase
mount -t ext3 /dev/mapper/privateContainerluks /mnt/
</source>
==Aush&auml;ngen==
==Aush&auml;ngen==
<p><em># umount /mnt/<br /># cryptsetup luksClose&nbsp; privateContainerluks<br /># losetup -d /dev/loop0</em></p>
<source lang="bash">
umount /mnt/
cryptsetup luksClose&nbsp; privateContainerluks
losetup -d /dev/loop0
</source>


=Vergr&ouml;&szlig;ern des Containers=
=Vergr&ouml;&szlig;ern des Containers=
<p>Da es &ouml;fter mal vorkommt, dass eine Container Datei zu klein wird, gibt es die M&ouml;glichkeit diese zu vergl&ouml;&szlig;ern.</p>
<p>Da es &ouml;fter mal vorkommt, dass eine Container Datei zu klein wird, gibt es die M&ouml;glichkeit diese zu vergl&ouml;&szlig;ern.</p>
<p>!!! ACHTUNG !!! Unbedingt eine Sicherung machen, da es zum Datenverlust kommen kann.</p>
<p>!!! ACHTUNG !!! Unbedingt eine Sicherung machen, da es zum Datenverlust kommen kann.</p>
==Vergr&ouml;&szlig;ern der Datei==
 
<p><em># dd if=/dev/zero bs=1024k count=256 &gt;&gt; ./privateContainer.vol<br /># cryptsetup luksOpen /dev/loop0 privateContainerluks &ndash;key-file=./private.key #Mit Key-File<br /># cryptsetup luksOpen /dev/loop0 privateContainerluks #Mit Passphrase<br /># cryptsetup resize privateContainerluks</em></p>
<p><strong>Vergr&ouml;&szlig;ern der Datei</strong></p>
==Dateisystem Vergr&ouml;&szlig;ern==
<source lang="bash">
<p>Bei den Dateisystemen beschr&auml;nke ich mich auf ext2/3/4, xfs, ntfs und fat16/32.</p>
dd if=/dev/zero bs=1024k count=256 >> ./privateContainer.vol
<p><em># #ext2/3/4<br /># e2fsck /dev/mapper/</em><em>privateContainerluks<br /># resize2fs -p /</em><em>dev/mapper/</em><em>privateContainerluks<br /># #xfs<br /># </em><em>xfs_growfs /dev/mapper/</em><em>privateContainerluks<br /># #ntfs<br /># ntfsresize </em><em>/dev/mapper/</em><em>privateContainerluks<br /># #fat16/32<br /># parted </em><em>/dev/mapper/</em><em>privateContainerluks<br /># print #Zeigt alle Partitionen an<br /># resize [nummer der Partition aus print] [0] [100%]</em></p>
losetup /dev/loop0 ./privateContainer.vol
cryptsetup luksOpen /dev/loop0 privateContainerluks --key-file=./private.key #Mit Key-File
cryptsetup luksOpen /dev/loop0 privateContainerluks #Mit Passphrase
cryptsetup resize privateContainerluks
losetup -d /dev/loop0
</source>
 
<p><strong>Dateisystem Vergr&ouml;&szlig;ern</strong></p>
<p>Bei den Dateisystemen beschr&auml;nke ich mich auf ext2/3/4, xfs, und ntfs.</p>
<source lang="bash">
#ext2/3/4
e2fsck /dev/mapper/privateContainerluks
resize2fs -p /dev/mapper/privateContainerluks
#xfs
xfs_growfs /dev/mapper/privateContainerluks
#ntfs
ntfsresize /dev/mapper/privateContainerluks
</source>
 
=Passwort des Containers &auml;ndern=
<p>Wichtig ist, dass des &ouml;fternen mal das Passwort gewechselt wird, um die Sicherheit zu erh&ouml;hen.</p>
<p><strong>Passwort hinzuf&uuml;gen</strong></p>
<source lang="bash">
losetup /dev/loop0 ./privateContainer.vol
cryptsetup luksAddKey /dev/loop0 #Neues Passwort hinzuf&uuml;gen
cryptsetup luksRemoveKey /dev/loop0 #Passwort l&ouml;schen
losetup -d /dev/loop0
</source>
 
=Ändern=
Wenn verwendete Cipher unzureichend sicher sind, oder wie im Fall von aes-cbc-essiv unsicher werden, gibt es folgende Abhilfe:
<source lang="bash">
cryptsetup-reencrypt -s 512 -h sha512 -c aes-xts-plain64 /dev/device
</source>
bei Keyfile-Verschlüsselung:
<source lang="bash">
cryptsetup-reencrypt -s 512 -h sha512 -c aes-xts-plain64 /dev/device --key-file=/path/to/keyfile
</source>

Aktuelle Version vom 26. April 2020, 16:11 Uhr

Wer Daten sicher aufbewahren will, kommt um eine Verschlüsselung nicht drum herum. Hier zeige ich wie man eine verschlüsselte Container Datei erstellt.

Erstellen

Achtung! Es werden root-Rechte benötigt.

Erstellung des Containers mit ca. 512MB:

<source lang="bash"> dd if=/dev/zero of=./privateContainer.vol bs=1024k count=512 </source>

Bei der Verschlüsselung gibt mehrere Varianten. Grundsätzlich wird aber immer das gleiche gemacht.

Der Container wird als loop-Device Eingehängt

<source lang="bash"> losetup /dev/loop0 ./privateContainer.vol </source>

Das loop-Device wird für die Verschlüsselung formatiert.

<source lang="bash">

  1. Mit Key-File:
    # dd if=/dev/urandom of=./private.key bs=1k count=64; #Erstellung des Key-File

cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/loop0 ./private.key

  1. Mit Passphrase:

cryptsetup -c aes-xts-plain64 -s 512 -h sha512 -y /dev/loop0 </source>

Das loop-Device wird entschlüsselt.

<source lang="bash">

  1. Mit Key-File:

cryptsetup luksOpen /dev/loop0 privateContainerluks --key-file=./private.key

  1. Mit Passphrase:

cryptsetup luksOpen /dev/loop0 privateContainerluks </source>

Ein Dateisystem wird angelegt.

Es kann praktische jedes Dateisystem benutzt werden. In diesem Beispiel wird ext3 benutzt

<source lang="bash"> mkfs.ext3 -L Geheimnis /dev/mapper/privateContainerluks tune2fs -c 0 -i 0 -r 0 /dev/mapper/privateContainerluks </source>

Die Entschlüsselung wird aufgehoben und das loop-Device ausgehängt.

<source lang="bash"> cryptsetup luksClose privateContainerluks losetup -d /dev/loop0 </source>

Benutzen

Der Umgang mit der verschlüsselten Container Datei, ist im Grunde so wie mit ein „wirkliches“ Device. Nur mit dem Unterschied, dass es erst als loop-Device eingebunden werden muss.

Einbinden

<source lang="bash"> losetup /dev/loop0 ./privateContainer.vol cryptsetup luksOpen /dev/loop0 privateContainerluks --key-file=./private.key #Mit Key-File cryptsetup luksOpen /dev/loop0 privateContainerluks #Mit Passphrase mount -t ext3 /dev/mapper/privateContainerluks /mnt/ </source>

Aushängen

<source lang="bash"> umount /mnt/ cryptsetup luksClose  privateContainerluks losetup -d /dev/loop0 </source>

Vergrößern des Containers

Da es öfter mal vorkommt, dass eine Container Datei zu klein wird, gibt es die Möglichkeit diese zu verglößern.

!!! ACHTUNG !!! Unbedingt eine Sicherung machen, da es zum Datenverlust kommen kann.

Vergrößern der Datei

<source lang="bash"> dd if=/dev/zero bs=1024k count=256 >> ./privateContainer.vol losetup /dev/loop0 ./privateContainer.vol cryptsetup luksOpen /dev/loop0 privateContainerluks --key-file=./private.key #Mit Key-File cryptsetup luksOpen /dev/loop0 privateContainerluks #Mit Passphrase cryptsetup resize privateContainerluks losetup -d /dev/loop0 </source>

Dateisystem Vergrößern

Bei den Dateisystemen beschränke ich mich auf ext2/3/4, xfs, und ntfs.

<source lang="bash">

  1. ext2/3/4

e2fsck /dev/mapper/privateContainerluks resize2fs -p /dev/mapper/privateContainerluks

  1. xfs

xfs_growfs /dev/mapper/privateContainerluks

  1. ntfs

ntfsresize /dev/mapper/privateContainerluks </source>

Passwort des Containers ändern

Wichtig ist, dass des öfternen mal das Passwort gewechselt wird, um die Sicherheit zu erhöhen.

Passwort hinzufügen

<source lang="bash"> losetup /dev/loop0 ./privateContainer.vol cryptsetup luksAddKey /dev/loop0 #Neues Passwort hinzufügen cryptsetup luksRemoveKey /dev/loop0 #Passwort löschen losetup -d /dev/loop0 </source>

Ändern

Wenn verwendete Cipher unzureichend sicher sind, oder wie im Fall von aes-cbc-essiv unsicher werden, gibt es folgende Abhilfe: <source lang="bash"> cryptsetup-reencrypt -s 512 -h sha512 -c aes-xts-plain64 /dev/device </source> bei Keyfile-Verschlüsselung: <source lang="bash"> cryptsetup-reencrypt -s 512 -h sha512 -c aes-xts-plain64 /dev/device --key-file=/path/to/keyfile </source>