<commit_before>title=Festplattenverschlüsselung unter Ubuntu-14.04
date=2015-02-18
type=post
tags=ubuntu
status=published
~~~~~~

Festplattenverschlüsselung unter Ubuntu-14.04
=============================================

Ausgangspunkt: Frisch installiertes Ubuntu-14.04
mit verschlüsselter Festplatte. Der Rechner hat den Namen
"myfileserver" und bekommt seine IP-Adresse per DHCP.

Problem: Man muß beim Starten den Festplattenschlüssel eintippen.
Das geht bei einem Server ohne Konsole nur mit Problemen.

Abhilfe: <http://blog.nguyenvq.com/2011/09/13/remote-unlocking-luks-encrypted-lvm-using-dropbear-ssh-in-ubuntu/> oder auch <http://unix.stackexchange.com/questions/5017/ssh-to-decrypt-encrypted-lvm-during-headless-server-boot> oder auch <https://www.thomas-krenn.com/de/wiki/Voll-verschl%C3%BCsseltes-System_via_SSH_freischalten> oder auch <http://blog.asiantuntijakaveri.fi/2014/12/headless-ubuntu-1404-server-with-full.html>

Ablauf
------

Auf dem Server:

* `sudo apt-get install dropbear busybox`
* Anlegen von "/etc/initramfs-tools/scripts/local-top/networking" mit diesem Inhalt:

    [ "$1" = "prereqs" ] && { exit 0; }
    hostname myfileserver
    . /scripts/functions
    configure_networking

* `sudo chmod +x /etc/initramfs-tools/scripts/local-top/networking`
* `sudo sed -i "s,-x /bin/plymouth,-x /bin/plymouth.disabled,"  /usr/share/initramfs-tools/scripts/local-top/cryptroot`
* `sudo update-initramfs -u`
* `sudo cp /etc/initramfs-tools/root/.ssh/id_rsa /tmp/id_rsa`
* `sudo chown uli.uli /tmp/id_rsa`
* `sudo sh -c "echo GRUB_RECORDFAIL_TIMEOUT=2 >>/etc/default/grub"`
* `sudo update-grub`

Auf dem Client:

* `scp uli@{myfileserver}:/tmp/id_rsa ~/.ssh/id_rsa_server`
* `ssh uli@{myfileserver} rm /tmp/id_rsa`

Boot-Vorgang
------------

1. Rechner einschalten
2. Etwa eine Minute warten
3. `ssh root@myfileserver  -o UserKnownHostsFile=.ssh/myfileserver_known_hosts -i id_rsa "echo -n \"{password}\" >/lib/cryptsetup/passfifo"`

Weitere SSH-Schlüssel freischalten
----------------------------------

1. Einloggen beim {myfileserver}
2. Wechsel nach /etc/initramfs-tools/root/.ssh
3. Erweitern von "authorized_keys"
4. `sudo update-initramfs -u`

Dateien
-------

### /etc/initramfs-tools/root/.ssh/authorized_keys

```
ssh-rsa AAAAB3NzaC1yc2EAAAAD...UNNglI8gacGTgJtaC5mU9jrVyFbSbVODtb7ksl53QE/QFj root@myfileserver
ssh-rsa AAAAB3NzaC1yc2EAAAAB...x3ro2Qj/Cv7RGbS4H7jidxUAp6Q+VFQ/eAnpCZDoITmw== uli@mypc
```

### /etc/initramfs-tools/scripts/local-top/networking

```
[ "$1" = "prereqs" ] && { exit 0; }
HOSTNAME=myfileserver
hostname "${HOSTNAME}"
. /scripts/functions
configure_networking
for device in /sys/class/net/*; do
  d="$(basename "$device")"
  if [ "$d" != "lo" ]; then
    /bin/ipconfig "::::${HOSTNAME}:$d:all"<commit_msg>HOSTNAME -> BOOT_HOSTNAME<commit_after>title=Festplattenverschlüsselung unter Ubuntu-14.04
date=2015-02-18
type=post
tags=ubuntu
status=published
~~~~~~

Festplattenverschlüsselung unter Ubuntu-14.04
=============================================

Ausgangspunkt: Frisch installiertes Ubuntu-14.04
mit verschlüsselter Festplatte. Der Rechner hat den Namen
"myfileserver" und bekommt seine IP-Adresse per DHCP.

Problem: Man muß beim Starten den Festplattenschlüssel eintippen.
Das geht bei einem Server ohne Konsole nur mit Problemen.

Abhilfe: <http://blog.nguyenvq.com/2011/09/13/remote-unlocking-luks-encrypted-lvm-using-dropbear-ssh-in-ubuntu/> oder auch <http://unix.stackexchange.com/questions/5017/ssh-to-decrypt-encrypted-lvm-during-headless-server-boot> oder auch <https://www.thomas-krenn.com/de/wiki/Voll-verschl%C3%BCsseltes-System_via_SSH_freischalten> oder auch <http://blog.asiantuntijakaveri.fi/2014/12/headless-ubuntu-1404-server-with-full.html>

Ablauf
------

Auf dem Server:

* `sudo apt-get install dropbear busybox`
* Anlegen von "/etc/initramfs-tools/scripts/local-top/networking" mit diesem Inhalt:

    [ "$1" = "prereqs" ] && { exit 0; }
    hostname myfileserver
    . /scripts/functions
    configure_networking

* `sudo chmod +x /etc/initramfs-tools/scripts/local-top/networking`
* `sudo sed -i "s,-x /bin/plymouth,-x /bin/plymouth.disabled,"  /usr/share/initramfs-tools/scripts/local-top/cryptroot`
* `sudo update-initramfs -u`
* `sudo cp /etc/initramfs-tools/root/.ssh/id_rsa /tmp/id_rsa`
* `sudo chown uli.uli /tmp/id_rsa`
* `sudo sh -c "echo GRUB_RECORDFAIL_TIMEOUT=2 >>/etc/default/grub"`
* `sudo update-grub`

Auf dem Client:

* `scp uli@{myfileserver}:/tmp/id_rsa ~/.ssh/id_rsa_server`
* `ssh uli@{myfileserver} rm /tmp/id_rsa`

Boot-Vorgang
------------

1. Rechner einschalten
2. Etwa eine Minute warten
3. `ssh root@myfileserver  -o UserKnownHostsFile=.ssh/myfileserver_known_hosts -i id_rsa "echo -n \"{password}\" >/lib/cryptsetup/passfifo"`

Weitere SSH-Schlüssel freischalten
----------------------------------

1. Einloggen beim {myfileserver}
2. Wechsel nach /etc/initramfs-tools/root/.ssh
3. Erweitern von "authorized_keys"
4. `sudo update-initramfs -u`

Dateien
-------

### /etc/initramfs-tools/root/.ssh/authorized_keys

```
ssh-rsa AAAAB3NzaC1yc2EAAAAD...UNNglI8gacGTgJtaC5mU9jrVyFbSbVODtb7ksl53QE/QFj root@myfileserver
ssh-rsa AAAAB3NzaC1yc2EAAAAB...x3ro2Qj/Cv7RGbS4H7jidxUAp6Q+VFQ/eAnpCZDoITmw== uli@mypc
```

### /etc/initramfs-tools/scripts/local-top/networking

```
[ "$1" = "prereqs" ] && { exit 0; }
# Don't use HOSTNAME, it will be overwritten by 'configure_networking'
BOOT_HOSTNAME=myfileserver
hostname "${BOOT_HOSTNAME}"
. /scripts/functions
configure_networking
for device in /sys/class/net/*; do
  d="$(basename "$device")"
  if [ "$d" != "lo" ]; then
    /bin/ipconfig "::::${BOOT_HOSTNAME}:$d:all"
{'fraction_non_alphanumeric': 0.17336415362731153, 'fraction_numerical': 0.025960170697012803, 'mean_word_length': 4.296610169491525, 'pattern_counts': {'":': 2, '<': 11, '<?xml version=': 0, '>': 18, 'https://': 2, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5522180', 'n_tokens_mistral': 2415, 'n_tokens_neox': 2237, 'n_words': 391}