Notizen zu Cloud-Instanzen und Services

From Master of Neuroscience Wiki

Um Cloud Instanzen anlegen zu können, benötigt es einen Funktionsaccount bei dem das Feature "Cloud-Instanz anlegen" in den Online Tools aktiviert ist. Über "Cloud-Instanz anlegen" wird dann eine neues virtuelles System angelegt. Danach braucht man typischerweise einen DNS Eintrag https://smbind.zfn.uni-bremen.de/ und ein SSL Server Zertifikat (Online Tools -> Server Zertifikat).

root Passwort für die Cloud Instanz nicht rechtzeitig gesetzt oder verbummelt

  • In der Proxmox Console anmelden und die richtige Instanz auswählen.
  • Hardware -> Add -> CD/DVD Drive -> Storage: cephfs-prox ISO image: ubuntu 24.04 server live
  • Start machine and press ESC during BIOS post
  • Select DVD drive
  • Select Try / Install Ubuntu
  • Set German
  • Set German Keyboard
  • Please Ctrl + Alt + F4 (Ctrl and Alt need to be selected from the side menu)
  • Enter: sudo su
lsblk                          # identify your root partition
sudo mount /dev/sda1 /mnt      # adjust device name accordingly
sudo mount --bind /dev  /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys  /mnt/sys
sudo chroot /mnt
passwd root
exit
sudo umount -R /mnt
sudo reboot

Security Stack

Security Stack: Lynis + AIDE + Falco

IPv6

Die Freischaltung der IPv6 Funktionalität für ProxMox Instanzen muss bei campusserver@uni-bremen.de beantragt werden. Die brauchen den Namen der Instanz dafür.


Falls der DHCPv6 versagt, muss manuell ein NetPlan erstellt werden.

cd /etc/netplan
vi 01-netcfg.yaml
chmod 0400 *.yaml
netplan apply

So sieht dann z.B. der netplan aus:

network:
 version: 2
 renderer: networkd
 ethernets:
   ens18:
     addresses:
       - 134.102.22.207/24
       - 2001:638:708:16::22:207/64
     routes:
       - to: default
         via: 134.102.23.250
       - to: default
         via: fe80::1
     nameservers:
       addresses:
         - 134.102.20.20
         - 134.102.200.14
         - 2001:638:708:20::20
         - 2001:638:708:30c8::14
  • mit ifconfig das Interface (hier ens18) überprüfen.
  • mit ip r das default gateway für IPv4 raussuchen (unter default)
  • die IPv4 mit ifconfig unter dem Interface raussuchen 134.102.A.B wobei A 22 oder 23 sein kann.
  • die IPv6 "erdenken" 2001:638:708:16::A:B

Storage vergrößern

Storage Vergrößerung bei campusserver@uni-bremen.de (Instanz Name und neue Größe wird dafür benötigt) beantragen.

Nach dem Okay von der Server-Abteilung:

  • Instanz unter ProxMox rebooten
  • fdisk /dev/sda
  • fdisk: Situation plotten mit p
  • fdisk: alte Partition löschen (nicht schreiben) Wenn es die dritte Partition ist: d 3
  • fdisk: neue Partition anlegen n unter der gleichen Nummer also in diesem Beisiel 3 (Do you want to remove the signature? n)
  • fdisk: fdisk mit w verlassen
  • partprobe
  • resize2fs /dev/sda3 (Wenn es die dritte Partition ist)

Ich komme nicht auf die ProxMox Konsole

Das kann an der lokalen DNS Auflösung liegen.

In dem Fall unter /etc/hosts

10.122.22.1 cloud.zfn.uni-bremen.de

eintragen

Wireguard und interne VMs und OPNSense

Basis Anleitung: https://docs.opnsense.org/manual/how-tos/wireguard-client.html

Das Wireguard Netz ist bei uns 10.10.199.0/24. Original IP der externen VM ist hier 10.102.23.112.

Das Interne 10er Netz ist bei uns 10.10.0.0/16 mit einer FW extern 134.102.55.226.


Firewall NAT Outbund ist notwendig um von intern zum Wireguard Netz Pakete zu schicken (außerdem muss Hybrid outbound NAT rule generation ausgewählt sein). Hier 10.10.199.0/24 auf 10.10.0.0/16 für interne LAN Adressen.

WAN und das 10er Uni Netz

Wegen der ganzen 10er Uni Netze außerhalb des eigenen intern 10er Netzes (hier 10.10.*.*) muss die RFC 1918 Konformität deaktiviert werden (Block private networks aus):

Firewall: Rules: WAN müssen wir für Wireguard Net RFC 1918 Konformität deaktivieren, daher müssen wir die Firewall Regeln für die 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 Netze selber definieren. Aber wir dürfen die IP bzw. das Netz der internen VM IPs nicht blocken. Um das zu erreichen sind diese Regeln aus Quick gesetzt. Also werden sofort angewendet, wenn die Regeln passen.

Ich habe noch IPv4 UDP auf den Ports 51820-51821 für Wireguard freigegen. Für dieses Setup hätte 51821 gereicht. Auch ist es sinnvoll die Source Adresse, also die IP des Wireguard Clients, anzugeben. Wurde hier offensichtlich nicht gemacht. Der Grund hat nichts mit Wireguard zu tun.

Wireguard Interface

Es wird empfohlen ein wg0 Device anlegen:

Für dieses neue Interface müssen wir die Firewallregeln einstellen. Ich habe mich hier dafür entschieden alles eingehende durch zu lassen.

Normalization

Es wird empfohlen Normalization für die Verbindung einzutragen:

Im Kern muss unter Max mss 1380 für IPv4 eingetragen werden.

Server-side Wireguard instance

Zeit die Instanz anzulegen:

Um meine Installation zu schützen habe ich Public Key und Private Key durch AAAAA und BBBBBB unkenntlich gemacht. Das Zahnrad setzt die Keys neu. Der Client braucht den Public Key in der Config Datei!

Example for einen Wireguard Client Eintrag:

Ich habe den Public Key mit CCCCCCCCCCCCCC unkenntlich gemacht. Hier muss der korrekte Public Key des Clients eingetragen werden. Sonst funktioniert es nicht.

Ich habe hier vergessen Keepalive Interval einzutragen. Ich habe da jetzt 25 eingetragen, wie beim Client. Sonst muss man den Verbindungsaufbau selber anstoßen, was nicht schön ist.

Peer generator

Mit dem Peer generator kann man Client Configs erzeugen:



Client

Beispiel für eine /etc/wireguard/wg0.conf Datei:

[Interface]
PrivateKey = REDACTED
Address = 10.10.199.2/32
ListenPort = 51821
PostUp = ip rule add to 134.102.0.0/16 priority 100 table main
PostUp = ip rule add to 10.10.0.0/16 priority 150 table 51820
PostUp = ip rule add to 10.0.0.0/8   priority 200 table main
PreDown = ip rule del to 134.102.0.0/16 priority 100 table main
PreDown = ip rule del to 10.10.0.0/16 priority 150 table 51820
PreDown = ip rule del to 10.0.0.0/8   priority 200 table main

[Peer]
PublicKey = REDACTED
Endpoint = 134.102.55.226:51820
AllowedIPs = 0.0.0.0/0 
PersistentKeepalive = 25

Zum starten

systemctl enable --now wg-quick@wg0.service

Wenn handshakes da == gut :-)

root@cog-nagios:~# wg show
interface: wg0
  public key: REDACTED (eigener Public Key)
  private key: (hidden)
  listening port: 51821
  fwmark: 0xca6c

peer: REDACTED (Public Key andere Seite)
  endpoint: 134.102.55.226:51820
  allowed ips: 0.0.0.0/0
  latest handshake: 14 seconds ago
  transfer: 333.85 MiB received, 1.24 MiB sent
  persistent keepalive: every 25 seconds

Wenn man nicht weiß was die Public Keys sind, auf der Firewall und dem Client per wg show ausgeben lassen und vergleichen (müssen über kreuz gleich sein).