Wissensdatenbank
Buehl, Kevin
07 Juli 2017
26 November 2017
4.513

Wissensdatenbank

Verschlüsselten Dateiserver mit Linux Debian erstellen

Vorwort

In diesem Beitrag erkläre ich Ihnen wie die einen verschlüsselten Dateiserver unter Debian Linux einrichten. Ich installiere das Betriebssystem auf zwei Samsung SSDs und verwende hier 40 GB für das Betriebssystem, die restlichen 200 GB sowie die 24 TB sollten später als iSCSI LUN den anderen Servern zu Verfügung gestellt werden. Als Hardware verwende ich einen Hewlett-Packard Proliant DL 180 der Generation 6 mit einem Smart Array P410 RAID-Controller. An dem RAID-Controller sind acht 4 Terabyte SATA3 Festplatten angeschlossen, welche in einem RAID6 Verbund betrieben werden.

Installation


Rescue System

Starten Sie zunächst ein Rescue System, und verbinden Sie sich am besten mit einem SSH Client mit Ihrem Server. Ich verwende hier gerne die minimale Installations-CD vom Gentoo, da diese direkt ohne grossen Aufwand in eine Konsole bootet und alle notwendigen Tools bereits mitgeliefert werden.

Partitionierung

Lassen Sie sich am besten zu beginn eine Liste mit dem Festplatten ausgeben:
fdisk -l /dev/sd*|grep Disk
Disk /dev/sda: 232.9 GiB, 250059350016 bytes, 488397168 sectors
Disk /dev/sdb: 232.9 GiB, 250059350016 bytes, 488397168 sectors
Disk /dev/sdc: 21.9 TiB, 24004520402944 bytes, 46883828912 sectors


Partitionieren Sie nun die erste Festplatte mit parted:
parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
Prüfen Sie ob bereits Partitionen auf der Festplatte vorhanden sind:
print
Error: /dev/sda: unrecognised disk label
Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sda: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown

Sollten bereits Partionen erstellt worden sein, löschen Sie diese mit rm. Legen Sie anschliessend den Typ der Partitionstabelle fest:
mklabel gpt
Erstellen Sie nun die folgenden drei Partitionen (Grub, Boot, Crypt):
mkpart primary 1MB 2MB
mkpart primary 2MB 1002MB
mkpart primary 1002MB 100%
print
Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sda: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 1049kB 2097kB 1049kB primary
2 2097kB 1002MB 1000MB primary
3 1002MB 250GB 249GB primary

Aktivieren Sie den BIOS Grub auf der ersten Partition:
set 1 bios_grub on
quit
Information: You may need to update /etc/fstab.

Kopieren Sie die Partitionen der ersten Festplatte (sda) auf die zweite Festplatte (sdb):
sgdisk -R=/dev/sdb /dev/sda
The operation has completed successfully.


RAID-Verbund

Erstellen Sie nun ein RAID1 für /boot:
mdadm --create /dev/md0 --level 1 --raid-devices=2 /dev/sda2 /dev/sdb2 --metadata=0.90
mdadm: array /dev/md0 started.
mdadm --create /dev/md1 --level 1 --raid-devices=2 /dev/sda3 /dev/sdb3
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

Status anzeigen:
cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda3[0] sdb3[1]
243088384 blocks super 1.2 [2/2] [UU]
[===>.................] resync = 18.0% (43768128/243088384) finish=66.6min speed=49870K/sec
bitmap: 2/2 pages [8KB], 65536KB chunk

md0 : active raid1 sda2[0] sdb2[1]
976832 blocks [2/2] [UU]

unused devices: <none>


Formatieren


Formatieren Sie die Boot Partition mit dem ext4 Dateisystem:
mkfs.ext4 -L boot /dev/md0
mke2fs 1.42.13 (17-May-2015)
Discarding device blocks: done
Creating filesystem with 244208 4k blocks and 61056 inodes
Filesystem UUID: c5372fc7-da40-4387-bb57-03373e3d2480
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done


Erstellen Sie nun eine verschlüsselte Partition für LVM:
cryptsetup -v --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-urandom --verify-passphrase luksFormat /dev/md1

WARNING!
========
This will overwrite data on /dev/md1 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:
Command successful.


Logische Partitionen


Entschlüsseln Sie nun die verschlüsselte Partition mit:
cryptsetup luksOpen /dev/md1 md1_crypt
Enter passphrase for /dev/md1:

Erstellen Sie nun eine physische Partition für LVM:
pvcreate /dev/mapper/md1_crypt
  Physical volume "/dev/mapper/md1_crypt" successfully created

Erstellen Sie nun eine Partitionsgruppe:
vgcreate 4b42 /dev/mapper/md1_crypt
  Volume group "4b42" successfully created



Nachdem Sie diese Befehle ausgeführt haben, können Sie logische Partitionen erstellen. Ich habe hier eine swap Partition mit 1 GB eine root Partition und eine iscsi mit dem restlichen Speicherplatz.
lvcreate -L 1000MiB -n swap 4b42
Logical volume "swap" created
lvcreate -L 40000MiB -n root 4b42
Logical volume "root" created
lvcreate -l 100%FREE -n iscsi 4b42
  Logical volume "iscsi" created.
Überprüfen Sie die Konfiguration mit folgendem Befehl:
lvdisplay --units G
  --- Logical volume ---
LV Path /dev/4b42/swap
LV Name swap
VG Name 4b42
LV UUID Q41hdg-MeFR-aV35-r0pt-djfZ-INiX-d6Ertg
LV Write Access read/write
LV Creation host, time 4b42, 2016-01-25 04:00:15 +0000
LV Status available
# open 0
LV Size 1.05 GB
Current LE 250
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1

--- Logical volume ---
LV Path /dev/4b42/root
LV Name root
VG Name 4b42
LV UUID s1QRgw-egy2-ojqW-hYcP-7wuf-AkUh-y927kr
LV Write Access read/write
LV Creation host, time 4b42, 2016-01-25 04:00:46 +0000
LV Status available
# open 0
LV Size 41.94 GB
Current LE 10000
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2

--- Logical volume ---
LV Path /dev/4b42/iscsi
LV Name iscsi
VG Name 4b42
LV UUID ndLUVX-nI8S-wfr8-NCcg-a82L-q113-0bdDCB
LV Write Access read/write
LV Creation host, time 4b42, 2016-01-25 04:01:54 +0000
LV Status available
# open 0
LV Size 205.93 GB
Current LE 49097
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:3

Wenn alle Partitionen korrekt erstellt wurden, können Sie die root Partition mit dem ext4 Dateisystem formatieren:
mkfs.ext4 -L root /dev/mapper/4b42-root
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 10240000 4k blocks and 2564096 inodes
Filesystem UUID: 2a39bb33-3e92-4552-8de7-13d7997aa0a8
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Danach formatieren und aktiveren Sie die swap Partition:
mkswap -L swap /dev/mapper/4b42-swap
Setting up swapspace version 1, size = 1000 MiB (1048571904 bytes)
UUID=ea58752c-30aa-4d2c-a837-052273bb63aa
swapon /dev/mapper/4b42-swap


Binden Sie die root Partition nach /mnt ein:
mkdir -p /4b42
mount /dev/mapper/4b42-root /4b42/
mkdir -p /4b42/boot
mount /dev/md0 /4b42/boot


Debain herunterladen


Laden Sie nun Debian herunter:
debootstrap --arch amd64 jessie /4b42/ http://ftp.debian.org/debian/
I: Retrieving Release
I: Valid Release signature (key id 75DDC3C4A499F1A18CB5F3C8CBF8D6FD518E17E1)
I: Unpacking bash...
I: Configuring systemd...
I: Base system installed successfully.
mount --bind /dev /4b42/dev
mount --bind /proc /4b42/proc
mount --bind /sys /4b42/sys
mount --bind /run /4b42/run

Wechseln Sie mit chroot in Ihr neues System:
chroot /4b42 /bin/bash
root@debian:/#

Konfiguration


Paketquellen


Sie können nun mit der Konfiguration Ihres neuen Debian Systems beginnen. Passen Sie zuerst die Paketquelle an:
nano /etc/apt/sources.list
deb http://ftp.ch.debian.org/debian/ jessie main
deb-src http://ftp.ch.debian.org/debian/ jessie main

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

# jessie-updates, previously known as 'volatile'
deb http://ftp.ch.debian.org/debian/ jessie-updates main
deb-src http://ftp.ch.debian.org/debian/ jessie-updates main
Aktualisieren Sie nun die Paketquellen und Ihr System:
apt update
apt upgrade


Mountpoints


Passen Sie nun die Datei fstab wie folgt an:
nano /etc/fstab
# <file system>		<mount point>	<type>	<options>		<dump>	<pass>
/dev/mapper/4b42-swap none swap sw 0 0
/dev/mapper/4b42-root / ext4 errors=remount-ro 0 1
/dev/md0 /boot ext4 rw,nosuid,nodev 0 2

Verlinken Sie nun die /etc/mtab mit /proc/mounts
ln -sf /proc/mounts /etc/mtab


Erstellen Sie nun die crypttab Datei mit folgendem Befehl:
apt install -y cryptsetup
echo "md1_crypt UUID=$(cryptsetup luksDump /dev/md1|grep UUID|tr -d '[[:blank:]]'|sed 's/UUID://') none luks" > /etc/crypttab


Netzwerk


nano /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp


Sofern erforderlich, passen Sie den Hostnamen des Servers an:
nano /etc/hostname
4b42

Software installieren


Installieren Sie zum Schluss alle nötigen Softwarepakete auf Ihrem neuen System:
apt install busybox cryptsetup dropbear grub-pc initramfs-tools linux-image-amd64 locales lvm2 mdadm ssh
German (Switzerland) - German (Switzerland, eliminate dead keys)
Kombiniert - Latein, slawisches Kyrillisch, Griechisch


Sonstiges

Ändern Sie zum Schluss das Passwort des root Benutzers:
passwd
Geben Sie ein neues UNIX-Passwort ein:
Geben Sie das neue UNIX-Passwort erneut ein:
passwd: Passwort erfolgreich geändert

Optional: Wenn Sie diese Option aktiveren repariert das Betriebssystem automaisch Fehler im dateisystem:
nano /etc/default/rcS
FSCKFIX=yes

Nun können Sie die chroot-Umgebung mit
exit
verlassen und das System neu starten:
reboot


Nützliches

Hier die Befehle falls bei der Installation etwas nicht funktioniert hat und das System erneut eingebunden werden muss:
mdadm --assemble --scan
mdadm: /dev/md/livecd:1 has been started with 2 drives.
mdadm: /dev/md/0_0 has been started with 2 drives.
mkdir /4b42
cryptsetup luksOpen /dev/md127 md1_crypt
Enter passphrase for /dev/md127:
vgscan
  Reading all physical volumes.  This may take a while...
Found volume group "4b42" using metadata type lvm2
lvchange -a y 4b42
mount -t ext4 /dev/mapper/4b42-root /4b42/
mount -t ext4 /dev/md126 /4b42/boot/
mount --bind /dev /4b42/dev
mount --bind /proc /4b42/proc
mount --bind /sys /4b42/sys
mount --bind /run /4b42/run
chroot /4b42/ /bin/bash



Einrichtung


Hardware RAID

Ich habe die acht 4 TB Festplatten an dem HP Smart Array P410 Controller zu einem RAID6 zusammen gefasst. Dieses kann mit folgendem Befehl verschlüsselt werden. Stellen Sie vorher Sicher, das es sich bei dem gewählten Laufwerk wirklich um das gewünschte Volume handelt:
fdisk -l /dev/sda
Disk /dev/sda: 21.9 TiB, 24004520402944 bytes, 46883828912 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
cryptsetup -v --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-urandom --verify-passphrase luksFormat /dev/sda
WARNING!
========
Hiermit überschreiben Sie Daten auf »/dev/sda« unwiderruflich.

Are you sure? (Type uppercase yes): YES
Passphrase eingeben:
Passphrase wiederholen:
Befehl erfolgreich.

Erstellen Sie nun eine Keyfile um diese verschlüsselte Partition beim Systemstart automatisch zu entschlüsseln. Achten Sie darauf, das sich die Keyfile an einem sicheren (verschlüsseltem) Ort befindet.
dd if=/dev/urandom of=/root/sda.key bs=1024 count=4
4+0 Datensätze ein
4+0 Datensätze aus
4096 Bytes (4.1 kB) kopiert, 0.000827719 s, 4.9 MB/s
Passen Sie nun die Berechtigungen für den root Benutzer an (nur lesen):
chmod 0400 /root/sda.key

Fügen Sie nun die Keyfile hinzu:
cryptsetup luksAddKey /dev/sda /root/sda.key
Geben Sie irgendeine Passphrase ein:

Damit das System diese nun automatisch entschlüsselt, müssen Sie die crypttab Datei anpassen:
nano /etc/crypttab
sda_crypt /dev/sda /root/sda.key luks

iSCSI Targets


Hierzu bitte folgenden
Dieser Link wurde entfernt. Links sind nur für Mitglieder sichtbar. Bitte melden Sie sich mit Ihrem Benutzernamen und Ihrem Passwort an und versuchen Sie es erneut.