Dieses Tutorial ist VALID.

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 wir die Kiste (hoffentlich) so gut wie nie neu starten 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:/#
wird zu…
### 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
apt full-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.

Verwendung
von Cookies

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung.

Scroll to Top