Kubernetes Workshop Teil 2: Einrichtung der Server

Wie bereits im ersten Teil angekündigt, geht es heute um die Einrichtung der Server. Wie gesagt, habe ich 4 kleine virtuelle Server bei Contabo bestellt. Die Server habe ich mit Ubuntu 18.04 LTS aufgesetzt. Die Server sollen unter meiner Domain erreichbar sein. Dazu muss ich im ersten Schritt die IP-Adressen der Server bei meinem Domain-Anbieter hinterlegen. Ich hoste meine Domains bei united-domains und lege nun DNS-Records sowohl für IPv4 als auch für IPv6 an. Die IPs könnt ihr bei Contabo im Kundenportal nachschlagen. Das sieht dann beispielsweise so aus:

Weiterhin lege ich einen CNAME-Eintrag an, der alle Sub-Domains auf einen der Server zeigen lässt:

Damit kann ich später alle Applikationen mit eigenen Sub-Domains app1.ronnywalter.de, app2.ronnywalter.de usw. versehen und muss nicht jede Sub-Domain einzeln pflegen. Um das Routing im Cluster kümmert sich Kubernetes.

Für den Aufruf der Rancher-Oberfläche konfiguriere ich noch einen CNAME-Eintrag, der auf den „kleinen“ Server (VPS-S) zeigt:

Nun loggen wir uns auf den Servern ein und konfigurieren sie ein wenig. Ich verwende auf dem Mac das kleine Tool csshX. Damit kann ich mich gleichzeitig auf allen Servern einloggen. Die eingegebenen Kommandos werden zeitgleich an alle Server geschickt. Sehr praktisch! Im ersten Schritt wird auf allen Servern das root-passwort geändert, dass euch Contabo geschickt hat. Ebenso lege ich einen User an.

csshx root@defiant.ronnywalter.de root@discovery.ronnywalter.de root@reliant.ronnywalter.de root@yorktown.ronnywalter.de
#Passwort für root ändern
passwd

#User "ronny" anlegen
useradd -m -g users -s /bin/bash ronny

#Passwort vergeben
passwd ronny

#IPv6 anktivieren (auf contabo Servern)
enable_ipv6

#Den User ronny in die sudo-group aufnehmen
gpasswd -a ronny sudo

Ich aktiviere auf gleich noch die ufw-firewall unter ubuntu und aktiviere SSH, da wir uns ja weiterhin per SSH verbinden wollen:

systemctl enable ufw
systemctl start ufw
ufw enable
ufw allow SSH

Dann setze ich auf jedem Server den gewünschten hostnamen, trage also den Namen in die /etc/hostname ein. Beispiel für den ersten Server:

echo "defiant" > /etc/hostname

Ich starte nun die Server neu.

reboot

In Zukunft möchte ich mich nur noch mit SSH-Key einloggen und will die Passwortauthentifizierung deaktivieren. Logins als root möchte ich komplett verbieten und bei der Gelegenheit den root-Account deaktivieren. Ich kann später ja alles per sudo erledigen.

Dazu erstellt man sich lokal einen SSH-Key mit ssh-keygen und kopiert den anschliessend auf alle Server.

# key erzeugen
ssh-keygen -t ed25519

# key auf den Server defiant kopieren
ssh-copy-id defiant.ronnywalter.de

# die anderen server
ssh-copy-id reliant.ronnywalter.de
ssh-copy-id discovery.ronnywalter.de
ssh-copy-id yorktown.ronnywalter.de

Jetzt testen wir mal die Verbindung per SSH und sollten uns ohne Passwort einloggen können. Anschließend testen wir, ob wir uns mit sudo zum root machen können.

csshx ronny@defiant.ronnywalter.de ronny@discovery.ronnywalter.de ronny@reliant.ronnywalter.de ronny@yorktown.ronnywalter.de
sudo -s

Wenn das alles klappt, schalten wir die Logins per Passwort und als Root ab. Dazu muss die Datei /etc/ssh/sshd_config editiert werden. Dort werden folgende Einträge geändert:

PermitRootLogin no
PasswordAuthentication no

Danach starten wir den SSH-Server neu und deaktivieren root

systemctl restart sshd
passwd -l root

Danach dürfte man sich nicht mehr als root einloggen können. Es gibt im Netz diverse Anleitungen, um Ubuntu-Server abzusichern. Dazu einfach mal nach „ubuntu hardening guide“ suchen. Ich werd sicher mal noch fail2ban installieren. Jetzt belass ich erstmal dabei.

Ich möchte unter Ubuntu 18.04 einen aktuellen Kernel betreiben. Dazu kann man den sogenannten HWE-Kernel installieren. Eine Beschreibung gibts hier. Wir installieren bei der Gelegenheit gleich mal noch ein paar Softwareupdates, falls verfügbar.

apt-get update
apt-get upgrade
apt-get install --install-recommends linux-generic-hwe-18.04
reboot

Im nächsten Teil wollen wir wireguard konfigurieren und die Kommunikation mit dem Heimnetzwerk einrichten.

Schreibe einen Kommentar

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