1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

HowTo Full-Encrypted Root Server

Dieses Thema im Forum "Root / Vserver Server Sicherheit" wurde erstellt von meister85, 27. Oktober 2013.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. meister85
    Offline

    meister85 VIP

    Registriert:
    21. September 2009
    Beiträge:
    7.927
    Zustimmungen:
    5.229
    Punkte für Erfolge:
    113
    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

    Dieser Link ist nur für Mitglieder!!! Jetzt kostenlos Registrieren ?



    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

    Dieser Link ist nur für Mitglieder!!! Jetzt kostenlos Registrieren ?

    nutzen.
     
    Zuletzt von einem Moderator bearbeitet: 11. März 2015
    #1
  2. phantom

    Nervigen User Advertisement

  3. krikssus
    Offline

    krikssus Spezialist

    Registriert:
    6. Januar 2015
    Beiträge:
    601
    Zustimmungen:
    278
    Punkte für Erfolge:
    63
    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

    Dieser Link ist nur für Mitglieder!!! Jetzt kostenlos Registrieren ?



    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:
    http://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

    Dieser Link ist nur für Mitglieder!!! Jetzt kostenlos Registrieren ?

    nutzen.
     
    Zuletzt von einem Moderator bearbeitet: 10. August 2015
    #2
    elmorki, cobra112, Kuralibur und 9 anderen gefällt das.
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen