Dekryptér root partitionen remotely

Skrevet af: Patrick Kerwood

Det kan være problematisk at dekryptér root partitionen på ens server, da man så skal være fysisk tilstede under boot, for at skrive adgangskoden. Der findes dog en løsning der tillader dig at gøre det via SSH.

Måden man gør det på, er at starter en lille SSH server i initramfs.
Initramfs står for “initial ram file system” og er et lille filsystem der bliver indlæst i serverens RAM under opstarts processen.

Via denne SSH forbindelse får vi indtastet kodeordet til dekrypterings processen.

Start med at installer nedenstående programmer. Openssh-server og busybox er sikkeret allerede installeret på din server. Dropbear er SSH serveren.
sudo apt-get install openssh-server dropbear busybox

Under installationen af dropbear laver den en SSH key, som vi skal bruge til authentication. Den skal du bruge hver gang du forbinder via dropbear. Key’en ligger i /etc/initramfs-tools/root/.ssh/ og hedder id_rsa.

Der er flere måder hente filen på. Den nemmeste er nok bare at kopier indholdet til en ny fil.
Cat id_rsa filen og kopier indholdet.
sudo cat /etc/initramfs-tools/root/.ssh/id_rsa

Opret en ny fil på din klient, kald den hvad du vil. Indsæt indholdet fra id_rsa filen.
nano drop-bear-sshkey

Ændre rettighederne på filen.
chmod 700 drop-bear-sshkey Se eksemple på en SSH Key (Drop down)

-----BEGIN RSA PRIVATE KEY-----
MIICZAIBAAKBgl2GreZgDYkd0mnbdBlMgNy0Rozmb7BlVJ4F4d4VelsyjTIXtvhs
h2matduxfvjI6vrIEcTYyqrw7cqbk6MM31OHNpDEQl0JKbw2HRL6cu1hRXF74yVS
EHApOMpT7vtJQ3V67t8FUISWmb3BJhdnI5RQuetrN+mBwe5zCG5NELl6heECAwEA
AQKBghqh/Api5ufZcK5JWnXL1dRDl+WOx1ZlfKOlTC0IU7f9nLybiTST/zmg31Go
6V3iJRv19i1miMwF4Mk55WRkiYII4daRIABgc0sYs5T6k6S8YdGzORZ8bfuXB3MO
vd3rGyhdrRGp0CY6oRO68MCR6dPMqm/KqObzfC+A1gGIzJGf6QMCQgCt0n2bXJBe
UU3VGO9H/CcooLPfJhUbrPH5cFClz7BlvlmvNXuZGGk2JTjAvbcbJBdAV9+kKnN3
vdl0ORtyTqrxWwJCAIm+CYJ//S2q3xTLelhc7awAwdT93bsPba4UTjYEyMXauop6
l4oPCF5blFuQGGAYnmdmxT4BJ4chGxrYZ87K4W5zAkIAqF/cMjFw2xwQs9pKdsVn
PTCl7AOcsMlPP5uvU16idXv0rga1qi/+Qme92N4sz4mfR0GXrhM89IGfcbibwJc5
eT8CQTvaC+dTlnIW1rgPyw9EcM/WDIKIbcIGdq23fEkZT9x4z4+OxP54iCW3KBmn
3FOEovlPySiwC+lLSKYn4RQlSG9tAkEXoTY9MEfi0vLbtXI1TQ3tV2nNXvN01Myw
y9BXHbwkxLjQ76o5CCec5SfRP+xEC3R+Ic5cEreQwhYdrX5H69nzqg==
-----END RSA PRIVATE KEY-----

Hvis din server får en reserveret IP fra din DHCP, så spring de næste par trin over. Hvis din server derimod har en fast IP, skal disse indstillinger sættes op.

Åben filen /etc/default/grub og find linjen der starter med GRUB_CMDLINE_LINUX.
I denne linje skal netværks oplysningerne stå, som vist neden under.
GRUB_CMDLINE_LINUX="ip=IP::Gateway:Netmask::Interface:none"

Netværks interface kan du finde med følgende.
kerwood@debian:~$ ip link show
2: eth0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0a:12:69:2b:30 brd ff:ff:ff:ff:ff:ff

Et eksempel på overstående.
GRUB_CMDLINE_LINUX="ip=192.168.1.10::192.168.1.1:255.255.255.0::eth0:none"

Gem og luk. Opdater GRUB.
sudo update-grub

Så er dit setup klar. Genstart serveren

Brug denne kommando til at forbinde og indtaste koden. De parameter du skal ændre er stien til SSH key’en, IP adressen og selvfølgelig kodeordet. De er alle markeret med farve.
ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" -i "/sti/til/drop-bear-sshkey" root@IP "echo -ne \"password\" >/lib/cryptsetup/passfifo"

Grunden til at du skal en anden known_hosts fil, er at du ellers vil komme i karambolage med din servers normale “SSH finger print”.

Fremover skal du bare have din Dropbear SSH key med dig hvis din server, af ventet eller uventet årsager, rebooter.

PuTTY

Hvis man sidder ved en Windows computer og forbinder via PuTTY, skal du konverter din SSH Key til en ppk fil. Du kan se i dette indlæg hvordan man gør. http://linuxbloggen.dk/ssh-keys-putty/

Sæt PuTTY til at bruge ppk filen, autologin til root og forbind til dropbear. Når du er inde kører du bare nedenstående kommando.
echo -ne "dit-password" >/lib/cryptsetup/passfifo


23 jul 2014   | Alle · Sikkerhed

Leave a Reply