Virtuelle Server anlegen und einrichten
Nach Anlage der Server müssen sie Konfiguriert werden. Im ersten Schritt werden sie zuerst einmal abgesichert. Dazu wird ein neuer User mit sudo-Rechten angelegt, dem root-User das ssh Login verweigert und das ssh Login grundsätzlich nur noch mit einem Schlüssel erlaubt, die Authentifizierung über user:password also gesperrt.
Natürlich werden alle Ports bis auf das ssh-Port mit Hilfe der ufw gesperrt. Zusätzlich wird file2ban genutzt, um Angriffe auf das ssh-Port zu überwachen und angreifende IPs zu sperren.
#
# Angenommener User-Name..: ralf
# Angenommener Domain-Name: die-steffens.eu
#
# !!
# !! Als root auf dem V-Server ausführen
# !!
#
# Swap File anlegen, wenn keines existiert
#
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
#
# Neuen Admin-User anlegen
#
useradd -m -U -s /bin/bash -G sudo ralf
passwd ralf
#
# Firewall (ufw) und file2ban installieren
#
apt update
apt upgrade -y
apt install ufw fail2ban
#
# fail2ban konfigurieren
#
printf "[sshd]\nenabled = true\nbanaction = iptables-multiport\nbantime = 30m" > /etc/fail2ban/jail.local
systemctl start fail2ban
# !!
# !! Vom lokalen Host den Public Key auf den Server kopieren.
# !! Danach unbedingt testen, ob die Anmeldung ohne Password gelingt!
# !!
ssh-copy-id -i ~/.ssh/id_rsa.pub ralf@die-steffens.eu
ssh ralf@die-steffens.eu
# !!
# !! Als root auf dem V-Server ausführen
# !!
#
# Configure firewall (allow ssh only)
#
ufw allow OpenSSH
ufw enable
#
# Harden ssh
#
sed -i -e '/^\(#\|\)PermitRootLogin/s/^.*$/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i -e '/^\(#\|\)PasswordAuthentication/s/^.*$/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i -e '/^\(#\|\)X11Forwarding/s/^.*$/X11Forwarding no/' /etc/ssh/sshd_config
sed -i -e '/^\(#\|\)MaxAuthTries/s/^.*$/MaxAuthTries 2/' /etc/ssh/sshd_config
sed -i -e '/^\(#\|\)AllowTcpForwarding/s/^.*$/AllowTcpForwarding no/' /etc/ssh/sshd_config
sed -i -e '/^\(#\|\)AllowAgentForwarding/s/^.*$/AllowAgentForwarding no/' /etc/ssh/sshd_config
sed -i -e '/^\(#\|\)AuthorizedKeysFile/s/^.*$/AuthorizedKeysFile .ssh\/authorized_keys/' /etc/ssh/sshd_config
sed -i '$a AllowUsers ralf' /etc/ssh/sshd_config
#
# Test sshd configuration and restart sshd (if config is ok)
#
sshd -t
systemctl restart sshd
# !!
# !! Vom lokalen Host anmelden
# !! 1. Test muss fehlschlagen - root darf sich nicht mehr anmelden
# !! 2. Test muss gelingen - nur user ralf darf sich (ohne password) anmelden
# !!
ssh root@die-steffens.eu
ssh ralf@die-steffens.eu
# !!
# !! Auf dem V-Server einen Restart ausführen
# !!
sudo shutdown -r now
#
# Wieder einloggen und root werden
#
sudo -s
#
# k3s ports öffnen
#
ufw allow 6443/tcp
ufw allow 2379:2380/tcp
ufw allow from 10.0.0.0/16 to any
#
# k3s installieren
#
mkdir -p /etc/rancher/k3s/
printf "disable: traefik\n" > /etc/rancher/k3s/config.yaml
#
# Auf dem ersten V-Server, der als server das Cluster initialisiert:
# Das Token wurde mit dem KeyPassXC Passwordgenerator erstellt
#
curl -sfL https://get.k3s.io | K3S_TOKEN=rWeygpe4VFENvXA4u7aT7ANodS2q32N53mq9Jnc4xzLR35HRJjqJnSL5YuD4d2jZ sh -s - server --cluster-init
#
# Für jeden weiteren V-Server, der als k3s server im Cluster arbeiten soll:
#
curl -sfL https://get.k3s.io | K3S_TOKEN=rWeygpe4VFENvXA4u7aT7ANodS2q32N53mq9Jnc4xzLR35HRJjqJnSL5YuD4d2jZ sh -s - server --server https://10.0.0.2:6443
#
# Ready
#