Dieses Tutorial ist VALID und sollte aktuell funktionieren...

Bitte lies Dir den Disclaimer durch, bevor Du eine Anleitung umsetzt...

Haftungsausschluss / Disclaimer

Basissystem: Debian 9 „Stretch“ Installation MIT Verschlüsselung

Netzwerkkonfiguration in GRUB einstellen, um das Inferface für dropbear zu starten

### Offenbar kann man das Netzwerk schon über GRUB hochjubeln:

--------INFO-----------
For dynamic configuration:
GRUB_CMDLINE_LINUX="ip=:::::eth0:dhcp"

For static configuration:
GRUB_CMDLINE_LINUX="ip=MY_IP_ADDR::MY_DEFAULT_GW:MY_NETMASK::eth0:none"
nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="ip=:::::ens3:dhcp"
GRUB_TERMINAL=console

### Unbedingt auf das richtige Netzwerkinterface achten!
### Ein DHCP-Start dauert gute 10 Sekunden länger als ein Start mit „fixed-Values“ (static), aber da wird die Kiste (hoffentlich) so gut wie nie neu sterten ist das total egal…

Änderungen der Config in GRUB speichern

update-grub2

dropbear Portnummer ändern (nicht 22)

nano /etc/dropbear-initramfs/config
DROPBEAR_OPTIONS="-s -j -k -p 55544"
IFDOWN=none

### Hier bitte auch wieder einen Port Deiner Wahl eintragen. 55544 haben wir hier nur als Beispiel genommen…

Initramdrive mit den Änderungen neu erstellen:

update-initramfs -u

Installation überprüfen:

zcat /boot/initrd.img-* | cpio -t conf/conf.d/cryptroot etc/dropbear/\* root\*/.ssh/authorized_keys sbin/dropbear | sort

### Ausgabe sollte so aussehen:

conf/conf.d/cryptroot
etc/dropbear/config
etc/dropbear/dropbear_ecdsa_host_key
etc/dropbear/dropbear_rsa_host_key
root-XXXXXX/.ssh/authorized_keys
sbin/dropbear
zcat /boot/initrd.img-* | cpio -i --to-stdout conf/conf.d/cryptroot

### Ausgabe sollte so aussehen:

target=sda2_crypt,source=/dev/sda2,key=none,rootdev,lvm=vg0-root

Auto-Filesystem-Check aktivieren

echo FSCKFIX=yes >> /etc/default/rcS

Benutzer hinzufügen und SSH-Key-Verfahren aktivieren

Benutzer „ibims“ anlegen und ihn in die „sudo“- und „Admin“-Gruppe hinzufügen

adduser ibims
adduser ibims sudo
adduser ibims adm

SSH-Schlüssel für „ibims“ einfügen und gegen fremden Zugriff absichern

mkdir /home/ibims/.ssh
nano /home/ibims/.ssh/authorized_keys

[Hier den Public Key aus Lastpass / VeraCrypt-Ordner importieren | Wichtig: Keine Zeilenumbrüche! Der ganze Schlüssel muss in einer Zeile stehen…]
ssh-rsa …

chmod 0600 /home/ibims/.ssh/authorized_keys

sshd-config ändern

nano /etc/ssh/sshd_config
Port 55544
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no

Script für die Passwortübergabe zum Entsperren der verschlüsselten Partition in der dropbear-Phase

nano /etc/initramfs-tools/hooks/mount_cryptroot
#!/bin/sh

# This script generates two scripts in the initramfs output,
# /root/mount_cryptroot.sh and /root/.profile

ALLOW_SHELL=0
# Set this to 1 before running update-initramfs if you want
# to allow authorized users to type Ctrl-C to drop to a
# root shell (useful for debugging, potential for abuse.)

if [ -z ${DESTDIR} ]; then
    exit
fi

ROOTDIR="$(cd "${DESTDIR}"; echo root-*)"

SCRIPT="${DESTDIR}/${ROOTDIR}/mount_cryptroot.sh"
cat > "${SCRIPT}" << 'EOF'
#!/bin/sh
CMD=
while [ -z "$CMD" -o -z "`pidof askpass plymouth`" ]; do
  CMD=`ps -o args | grep cryptsetup | grep -i open | grep -v grep`
  sleep 0.1
done
while [ -n "`pidof askpass plymouth`" ]; do
  $CMD && kill -9 `pidof askpass plymouth` && echo "Erledigt... In 30 Sekunden kommt das System hoch" && sleep 0.2
done
EOF

chmod +x "${SCRIPT}"

# Run mount_cryptroot by default and close the login session afterwards
# If ALLOW_SHELL is set to 1, you can press Ctrl-C to get to an interactive prompt
cat > "${DESTDIR}/${ROOTDIR}/.profile" << EOF
ctrl_c_exit() {
  exit 1
}
ctrl_c_shell() {
  # Ctrl-C during .profile appears to mangle terminal settings
  reset
}
if [ "$ALLOW_SHELL" == "1" ]; then
  echo "Dechiffriere rootfs... Type Ctrl-C for a shell."
  trap ctrl_c_shell INT
else
  echo "Dechiffriere rootfs..."
  trap ctrl_c_exit INT
fi
/${ROOTDIR}/mount_cryptroot.sh && exit 1 || echo "Run ./mount_cryptroot.sh to try unlocking again"
trap INT
EOF
chmod +x /etc/initramfs-tools/hooks/mount_cryptroot

Neue initramfs mit den eben gemachten Änderungen bauen

update-initramfs -u

Aus dem neuen System aussteigen zurück ins Rettungssystem

exit

### root@grml:/#
### root@grml ~ #

Partitionen und verschlüsseltes System aushängen

umount /target/{dev,proc,sys,boot}
umount /target
cryptsetup luksClose sda2_crypt

System neustarten und Daumen drücken!

reboot

### Nach ca. 60 Sekunden per SSH mittels des „rootcrypt“-Keys und des in dropbear eingestellten Ports (55544) auf den Server verbinden.
### Es müsste die Passwortabfrage erscheinen. Nach Eingabe des HDD-Crypt-PWs sollte sich die Session beenden. Im Hintergrund fährt nun das System hoch ;)

### Einloggen als „ibims“ mit „ibims“-SSH-Key und Key-PW auf Port 55544
### „sudo -i“ mit „ibims“-PW für root-Rechte…

Update-Script anlegen und System updaten:

nano upup.sh
#!/bin/bash
apt update
apt upgrade
checkrestart
chmod 700 upup.sh
./upup.sh

Backup-Ordner anlegen

mkdir /var/backup

Firewall: Shorewall installieren

Shorewall für IPv4 installieren und einrichten

apt install -y shorewall
cd /usr/share/doc/shorewall/examples/one-interface/ && cp interfaces policy rules zones /etc/shorewall/ && cd
nano /etc/default/shorewall

startup=1

nano /etc/shorewall/policy

net / all / drop: Log level entfernen. (Sprich: „info“ löschen…) Sonst knallt uns das LOG voll.

nano /etc/shorewall/rules

Zeilen anfügen (für SSH, WEB und MAIL):

# SSH Port aufmachen
ACCEPT  net         $FW     tcp     55544   -       -    5/min:8
#
# WEB Ports aufmachen - http / https
ACCEPT:info net     $FW     tcp     80      -       -
ACCEPT:info net     $FW     tcp     443     -       -
#
# MAIL Ports aufmachen - smtp / transmission
ACCEPT:info net     $FW     tcp     25      -       -
ACCEPT:info net     $FW     tcp     587     -       -
nano /etc/shorewall/interfaces

### Ethernet Interface anpassen! [ens3]
net ens3 dhcp,tcpflags,logmartians,nosmurfs,sourceroute=0

Shorewall6 für IPv6 installieren und einrichten

apt install -y shorewall6
cd /usr/share/doc/shorewall6/examples/one-interface/ && cp interfaces policy rules zones /etc/shorewall6/ && cd
nano /etc/default/shorewall6

startup=1

nano /etc/shorewall6/policy

net / all / drop: und net / $FW / drop: Log level entfernen. (Sprich: „info“ löschen…) Sonst knallt uns das LOG voll.

nano /etc/shorewall6/rules

Zeilen anfügen (für SSH, WEB und MAIL):

# SSH Port aufmachen
ACCEPT  net         $FW     tcp     55544   -       -    5/min:8
#
# WEB Ports aufmachen - http / https
ACCEPT:info net     $FW     tcp     80      -       -
ACCEPT:info net     $FW     tcp     443     -       -
#
# MAIL Ports aufmachen - smtp / transmission
ACCEPT:info net     $FW     tcp     25      -       -
ACCEPT:info net     $FW     tcp     587     -       -
nano /etc/shorewall6/interfaces

### Ethernet Interface anpassen! [ens3]
net ens3 tcpflags

Shorewall auf das Zusammenspiel mit Docker vorbereiten

### Docker Support ab Shorewall v5.0.6
### Installiert wird Shorewall v5.0.15.6 :)

nano /etc/shorewall/shorewall.conf
################################################################
#             F I R E W A L L   O P T I O N S
################################################################
...
DOCKER=Yes
...
IP_FORWARDING=On
...

### Bei „stretch“ muss die shorewall zusätzlich zum startup=1 noch manuell in den Autostart hinzugefügt werden:

systemctl enable shorewall && systemctl enable shorewall6

Anzeige *

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.