Quantcast
Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Full-Encrypted Root Server

Status
Für weitere Antworten geschlossen.

meister85

Best Member
Boardveteran
Registriert
21. September 2009
Beiträge
7.781
Reaktionspunkte
4.998
Punkte
373
Hallo liebe DEB´ler.

Heute möchte ich euch zeigen, wie ihr euren gemieteten Root-Server per Remote komplett per AES 256 Bit verschlüsselt.

Vorteile:


  • Kein Realtime-Monitoring durch Provider
  • Kein Provider-Kernel
  • Download von Paketen nicht über Provider sondern direkt über Debian
  • Direkter SSH-Zugang als Superuser root
  • Möglichst unabhängig von Provider-Infrastruktur
  • Minimalsystem
  • Komplett verschlüsselter Root-Server mit Entschlüsselung über SSH


Als aller erstes müsst ihr folgende Datein sichern:

Code:
cat /etc/resolv.conf
hostname
cat /etc/network/interfaces

Dann muss der Server in das Rescue-System gebootet werden. Dies erfolgt über das Webinterface vom jeweiligen Provider.

Nachdem wir uns im Rescue-System angemeldet haben, müssen wir die Partionierung erstellen. Dies erledigen wir mit cfdisk.

Code:
cfdisk -z

sda1
Code:
Größe 1GB
Typ 83 (Wird unverschlüsselte /boot Partition)
Bootfähig

sda2
Code:
Größe 512MB
Typ 83 (wird später verschlüsselter Linux Swap)

sda3
Code:
Größe Rest (wird von cfdisk automatisch vorgeschlagen)
Typ 83 (wird später verschlüsselter Linux Datenbereich)

Nun müssen diese formatiert werden.

Zunächst die Boot-Partition:

Code:
mkfs.ext4 /dev/sda1

Als nächstes die Systempartition. Zugleich wird diese auch verschlüsselt. Bitte erstellt hierfür ein Passwort mit mindestens einer Länge von 100 Zeichen. Ich nutze z.B. die Webseite

Nachdem das Passwort generiert ist geben wir folgenden Befehl ein:

Code:
cryptsetup luksFormat /dev/sda3

Hier müssen wir mit YES (Achtung in Großbuchstaben!) bestätigen.

Dann das zuvor generierte Passwort eingeben.

Dann mit folgenden Befehl die Partion öffnen:

Code:
cryptsetup luksOpen /dev/sda3 sda3_crypt

Und anschlißend formatieren:

Code:
mkfs.ext4 /dev/mapper/sda3_crypt

Nun müssen die Verzeichnisse eingebunden werden:

Code:
mount /dev/mapper/sda3_crypt /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot

Die Installtion von Debian (Wheezy) erfolgt über Debootstrap.

Code:
mount -t tmpfs none /tmp
cd /tmp
wget http://ftp.de.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.67_all.deb

Anschließend die Dateien entpacken:

Code:
ar -xf debootstrap_1.0.67_all.deb
tar xzf data.tar.gz
tar xzf control.tar.gz

Nun prüfen wir, ob der Inhalt des Pakets unverändert im Rettungssystem angekommen ist.

Code:
cat md5sums | cut -d " " -f 3 | xargs md5sum $1 > md5sums.local; diff md5sums md5sums.local

Um mit der Installation fortzufahren müssen wir den Quelltext ein wenig modifizieren:

Code:
nano usr/sbin/debootstrap

Bitte folgende Zeilen abändern:
Code:
DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap
DISABLE_KEYRING ="1"

Um sicherzugehen, dass nur offizielle Pakete ohne Backdoors auf dem neuen System installiert werden, müssen die Signaturen aller Pakete geprüft werden.

Code:
wget --no-check-certificate https://ftp-master.debian.org/keys/archive-key-6.0.asc
gpg --import archive-key-6.0.asc

Nun wird die Installation gestartet:

Code:
usr/sbin/debootstrap --keyring=/root/.gnupg/pubring.gpg --arch amd64 wheezy /mnt/ http://ftp2.de.debian.org/debian

Anschließend ins chroot wechseln:

Code:
mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -t tmpfs none /mnt/tmp
mount -o bind /sys /mnt/sys
LANG=C chroot /mnt /bin/bash

Kommt nun keine Fehlermeldung, befindet ihr euch auf ein frisch installiertes Debian-System 64bit.

Password für Root ändern:

Code:
passwd

Jetzt kommen wir zu der Konfiguration des Basissystems. Hierzu benötigen wir nun die zuvor gesicherten Daten.

Code:
echo [COLOR=#ff0000][I]euerhostname[/I][/COLOR] > /etc/hostname

Code:
echo [COLOR=#ff0000][I]eureipadressevomserver[/I][/COLOR] [COLOR=#ff0000][I]euerhostname[/I][/COLOR] >> /etc/hosts

Code:
cat > /etc/resolv.conf  /etc/network/interfaces  /etc/default/bootlogd

Nun müssen wir die crypttab bzw. fstab abändern:

Code:
nano /etc/crypttab

Dort bitte folgendes einpflegen:

Code:
sda2_crypt /dev/sda2 /dev/urandom cipher=aes-cbc-essiv:sha256,size=256,swap
sda3_crypt /dev/sda3 none luks

Selbe gilt für die fstab:

Code:
nano /etc/fstab

Code:
/dev/sda1               /boot   ext4    noatime 0       2
/dev/mapper/sda2_crypt  none    swap    sw      0       0
/dev/mapper/sda3_crypt  /       ext4    noatime,defaults,errors=remount-ro 0 1
proc /proc proc defaults

Jetzt noch die Paket-Liste anpassen:

Code:
nano /etc/apt/sources.list

Code:
deb http://ftp.de.debian.org/debian/ wheezy main non-free contrib
deb-src http://ftp.de.debian.org/debian/ wheezy main non-free contrib
deb http://security.debian.org/ wheezy/updates main non-free contrib
deb-src http://security.debian.org/ wheezy/updates main non-free contrib
deb http://ftp.de.debian.org/debian/ wheezy-updates main non-free contrib
deb-src http://ftp.de.debian.org/debian/ wheezy-updates main non-free contrib

Und aktualisieren:

Code:
aptitude update && aptitude -y upgrade

Sprache und Zone anpassen:

Code:
aptitude -y install locales && dpkg-reconfigure locales

Code:
dpkg-reconfigure tzdata

Sprache = de_DE.UTF-8
Zone = Europa --> Berlin

Jetzt installieren wir den Kernel.

Hierfür erstmal folgenden Befehl:

Code:
cat /proc/mounts > /etc/mtab

Und anschlißend:

Code:
aptitude install -y linux-image-amd64

Installation von wichtigen Paketen:

Code:
aptitude install -y ssh grub-pc pciutils psmisc cryptsetup dropbear busybox

Bei der Installation von Grub werdet ihr gefragt, wohin es installiert werden soll. Da die meisten nur eine Festplatte nutzen, wählt ihr bitte /dev/sda aus und bestätigt mit OK.

Jetzt muss der Remote-Unlock eingerichtet werden:

nano /etc/initramfs-tools/initramfs.conf

Nach DEVICE suchen und folgend ergänzen:

Code:
DEVICE=eth0
IP=[COLOR=#ff0000][I]ipvomserver[/I][/COLOR]::[COLOR=#ff0000][I]gatewayvomserver[/I][/COLOR]:[COLOR=#ff0000][I]subnetvomserver[/I][/COLOR]:[I][COLOR=#ff0000]hostnamevomserver[/COLOR][/I]:eth0:off
DROPBEAR=y

Änderungen in das initrd übernehmen:

Code:
update-initramfs -u -k all

Jetzt müssen wir den RSA-Key kopieren und am besten in notepad ++ einfügen. Anschließend unter id_rsa abspeichern.

Code:
cat /etc/initramfs-tools/root/.ssh/id_rsa

Jetzt müsst ihr Puttygen öffnen und auf Conversations --> Importkey klicken. Anschlißend auf save privatekey. Dieser ist für die Anmeldung notwendig. Ohne diesen Schritt kommt ihr nicht auf dem Server!

Nun noch Grub updaten:

Code:
update-grub
exit

Nun wieder in das Webinterface vom Provider gehen und als Netboot die HDD wieder auswählen!

Anschlißend wie gewohnt rebooten:

Code:
reboot

Nach einigen Minuten sollte der Server wieder hochgefahren sein.

Es steht euch der Dropbear als SSH im unverschlüsselten Bereich zur Verfügung. Der Dropbear wird über die initrd mit geladen.


Um die Anmeldung erfolgreich abzuschließen benötigt ihr den zuvor gespeicherten private key!

Nachdem ihr euch angemeldet habt, seid ihr im unverschlüsselten minimal SSH des Servers. Nun müsst ihr folgenden Befehl eingeben:

Code:
echo -n „[COLOR=#ff0000][I]das100stelligegeneriertepasswort[/I][/COLOR]" > /lib/cryptsetup/passfifo


Mit Enter bestätigen. Jetzt bootet der Server erst komplett durch.

Nun Putty schließen und erneut ein loggen. Allerdings nicht mehr mit dem private key sondern mit eurem festgelegten Passwort (siehe Punkt passwd).

Man kann auch hier ein zweites authorized_key nutzen. Bitte hierfür folgendes How-To nutzen.
 
Zuletzt bearbeitet von einem Moderator:
AW: Full-Encrypted Root Server

Hallo liebe DEB´ler.

Da nun Debian Jessie schon seit einiger Zeit verfügbar ist will ich euch hier nun die adaptierte Anleitung zur Verfügung stellen.
Grundsätzlich unterscheidet sich die Anleitung nicht so extrem von der bereits verfügbaren Anleitung.

Vorteile:


  • Kein Realtime-Monitoring durch Provider
  • Kein Provider-Kernel
  • Download von Paketen nicht über Provider sondern direkt über Debian
  • Direkter SSH-Zugang als Superuser root
  • Möglichst unabhängig von Provider-Infrastruktur
  • Minimalsystem
  • Komplett verschlüsselter Root-Server mit Entschlüsselung über SSH


Als aller erstes müsst ihr folgende Datein sichern:

Code:
cat /etc/resolv.conf
hostname
cat /etc/network/interfaces

Dann muss der Server in das Rescue-System gebootet werden. Dies erfolgt über das Webinterface vom jeweiligen Provider.

Nachdem wir uns im Rescue-System angemeldet haben, müssen wir die Partionierung erstellen. Dies erledigen wir mit cfdisk.

Code:
cfdisk -z

sda1
Code:
Größe 1GB
Typ 83 (Wird unverschlüsselte /boot Partition)
Bootfähig

sda2
Code:
Größe 512MB
Typ 83 (wird später verschlüsselter Linux Swap)

sda3
Code:
Größe Rest (wird von cfdisk automatisch vorgeschlagen)
Typ 83 (wird später verschlüsselter Linux Datenbereich)

Nun müssen diese formatiert werden.

Zunächst die Boot-Partition:

Code:
mkfs.ext4 /dev/sda1

Als nächstes die Systempartition. Zugleich wird diese auch verschlüsselt. Bitte erstellt hierfür ein Passwort mit mindestens einer Länge von 100 Zeichen. Ich nutze z.B. die Webseite

Nachdem das Passwort generiert ist geben wir folgenden Befehl ein:

Code:
cryptsetup luksFormat /dev/sda3

Hier müssen wir mit YES (Achtung in Großbuchstaben!) bestätigen.

Dann das zuvor generierte Passwort eingeben.

Dann mit folgenden Befehl die Partion öffnen:

Code:
cryptsetup luksOpen /dev/sda3 sda3_crypt

Und anschlißend formatieren:

Code:
mkfs.ext4 /dev/mapper/sda3_crypt

Nun müssen die Verzeichnisse eingebunden werden:

Code:
mount /dev/mapper/sda3_crypt /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot

Die Installtion von Debian (Jessie) erfolgt über Debootstrap.

Code:
mount -t tmpfs none /tmp
cd /tmp
wget http://ftp.de.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.67_all.deb

Anschließend die Dateien entpacken:

Code:
ar -xf debootstrap_1.0.67_all.deb
tar xzf data.tar.gz
tar xzf control.tar.gz

Nun prüfen wir, ob der Inhalt des Pakets unverändert im Rettungssystem angekommen ist.

Code:
cat md5sums | cut -d " " -f 3 | xargs md5sum $1 > md5sums.local; diff md5sums md5sums.local

Um mit der Installation fortzufahren müssen wir den Quelltext ein wenig modifizieren:

Code:
nano usr/sbin/debootstrap

Bitte folgende Zeilen abändern:
Code:
DEBOOTSTRAP_DIR=/tmp/usr/share/debootstrap
DISABLE_KEYRING ="1"

Um sicherzugehen, dass nur offizielle Pakete ohne Backdoors auf dem neuen System installiert werden, müssen die Signaturen aller Pakete geprüft werden.

Code:
wget --no-check-certificate https://ftp-master.debian.org/keys/archive-key-6.0.asc
gpg --import archive-key-6.0.asc

Nun wird die Installation gestartet:

Code:
usr/sbin/debootstrap --keyring=/root/.gnupg/pubring.gpg --arch amd64 jessie /mnt/ http://ftp2.de.debian.org/debian

Anschließend ins chroot wechseln:

Code:
mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -t tmpfs none /mnt/tmp
mount -o bind /sys /mnt/sys
LANG=C chroot /mnt /bin/bash

Kommt nun keine Fehlermeldung, befindet ihr euch auf ein frisch installiertes Debian-System 64bit.

ACHTUNG: Der Root User ist bei Zugriff über SSH deaktivert.
Sprich ihr müsst euch einen neuen User für die weitere Nutzung des Systems einrichten, anderenfalls könnt ihr euer System nach dem Boot ins verschlüsselte System nicht entsperren.

Code:
adduser "eueruser"

Der Root User kann im nachhinein wieder aktivert werden, stellt aber im Bezug auf Sicherheit eine Lücke dar.
Danke an Osprey für das How-to

Code:
https://www.digital-eliteboard.com/370015-root-login-unter-debian-jessie-aktivieren.html

Password für Root ändern:

Code:
passwd

Jetzt kommen wir zu der Konfiguration des Basissystems. Hierzu benötigen wir nun die zuvor gesicherten Daten.

Code:
echo [COLOR=#ff0000][I]euerhostname[/I][/COLOR] > /etc/hostname

Code:
echo [COLOR=#ff0000][I]eureipadressevomserver[/I][/COLOR] [COLOR=#ff0000][I]euerhostname[/I][/COLOR] >> /etc/hosts

Code:
touch /etc/default/bootlogd

Code:
cat > /etc/resolv.conf  /etc/network/interfaces  /etc/default/bootlogd

Nun müssen wir die crypttab bzw. fstab abändern:

Code:
nano /etc/crypttab

Dort bitte folgendes einpflegen:

Code:
sda2_crypt /dev/sda2 /dev/urandom cipher=aes-cbc-essiv:sha256,size=256,swap
sda3_crypt /dev/sda3 none luks

Selbe gilt für die fstab:

Code:
nano /etc/fstab

Code:
/dev/sda1               /boot   ext4    noatime 0       2
/dev/mapper/sda2_crypt  none    swap    sw      0       0
/dev/mapper/sda3_crypt  /       ext4    noatime,defaults,errors=remount-ro 0 1
proc /proc proc defaults

Jetzt noch die Paket-Liste anpassen:

Code:
nano /etc/apt/sources.list

Code:
deb http://ftp.de.debian.org/debian/ jessie main non-free contrib
deb-src http://ftp.de.debian.org/debian/ jessie main non-free contrib
deb http://security.debian.org/ jessie/updates main non-free contrib
deb-src http://security.debian.org/ jessie/updates main non-free contrib
deb http://ftp.de.debian.org/debian/ jessie-updates main non-free contrib
deb-src http://ftp.de.debian.org/debian/ jessie-updates main non-free contrib

Und aktualisieren:

Code:
aptitude update && aptitude -y upgrade

Sprache und Zone anpassen:

Code:
aptitude -y install locales && dpkg-reconfigure locales

Code:
dpkg-reconfigure tzdata

Sprache = de_DE.UTF-8
Zone = Europa --> Berlin

Jetzt installieren wir den Kernel.

Hierfür erstmal folgenden Befehl:

Code:
cat /proc/mounts > /etc/mtab

Und anschlißend:

Code:
aptitude install -y linux-image-amd64

Installation von wichtigen Paketen:

Code:
aptitude install -y ssh grub-pc pciutils psmisc cryptsetup dropbear busybox

Bei der Installation von Grub werdet ihr gefragt, wohin es installiert werden soll. Da die meisten nur eine Festplatte nutzen, wählt ihr bitte /dev/sda aus und bestätigt mit OK.

Jetzt muss der Remote-Unlock eingerichtet werden:

nano /etc/initramfs-tools/initramfs.conf

Nach DEVICE suchen und folgend ergänzen:

Code:
DEVICE=eth0
IP=[COLOR=#ff0000][I]ipvomserver[/I][/COLOR]::[COLOR=#ff0000][I]gatewayvomserver[/I][/COLOR]:[COLOR=#ff0000][I]subnetvomserver[/I][/COLOR]:[I][COLOR=#ff0000]hostnamevomserver[/COLOR][/I]:eth0:off
DROPBEAR=y

Änderungen in das initrd übernehmen:

Code:
update-initramfs -u -k all

Jetzt müssen wir den RSA-Key kopieren und am besten in notepad ++ einfügen. Anschließend unter id_rsa abspeichern.

Code:
cat /etc/initramfs-tools/root/.ssh/id_rsa

Jetzt müsst ihr Puttygen öffnen und auf Conversations --> Importkey klicken. Anschließend auf save privatekey. Dieser ist für die Anmeldung notwendig. Ohne diesen Schritt kommt ihr nicht auf dem Server!

Nun noch Grub updaten:

Code:
update-grub
exit

Nun wieder in das Webinterface vom Provider gehen und als Netboot die HDD wieder auswählen!

Anschlißend wie gewohnt rebooten:

Code:
reboot

Nach einigen Minuten sollte der Server wieder hochgefahren sein.

Es steht euch der Dropbear als SSH im unverschlüsselten Bereich zur Verfügung. Der Dropbear wird über die initrd mit geladen.


Um die Anmeldung erfolgreich abzuschließen benötigt ihr den zuvor gespeicherten private key!

Nachdem ihr euch angemeldet habt, seid ihr im unverschlüsselten minimal SSH des Servers. Nun müsst ihr folgenden Befehl eingeben:

Code:
echo -n „[COLOR=#ff0000][I]das100stelligegeneriertepasswort[/I][/COLOR]" > /lib/cryptsetup/passfifo


Mit Enter bestätigen. Jetzt bootet der Server erst komplett durch.

Nun Putty schließen und erneut ein loggen. Allerdings nicht mehr mit dem private key sondern mit eurem festgelegten Passwort (siehe Punkt passwd).

Die Anmeldung passiert nun mit dem bereits vorher angelegten "eueruser". Um Root Rechte zu bekommen habt ihr 2 Möglickeiten.

1. sudo vor den commands schreiben
2. mit dem Command "su" und anschliessender eingabe des Root Password

Man kann auch hier ein zweites authorized_key nutzen. Bitte hierfür folgendes How-To nutzen.
 
Zuletzt bearbeitet von einem Moderator:
Status
Für weitere Antworten geschlossen.
Zurück
Oben