Ga naar inhoud

Post-installatie Hardening

Dit document beschrijft de stappen na een verse Ubuntu Server installatie, voordat we Kubernetes installeren.

Tip: Deze stappen zijn geautomatiseerd in ansible/playbooks/prepare-nodes.yml. Zie Ansible Setup voor het automatisch uitvoeren.

Handmatige Stappen (eerste keer)

De eerste keer doe je dit handmatig om te begrijpen wat er gebeurt. Daarna altijd via Ansible.

1. System Update

sudo apt update && sudo apt upgrade -y

2. Intel Microcode (Security Patches)

sudo apt install intel-microcode -y

Belangrijk voor HP EliteDesk's met Intel CPU's - patcht CPU vulnerabilities

3. Essentiële Packages

sudo apt install -y \
    curl \
    wget \
    git \
    htop \
    net-tools \
    vim \
    unzip

4. SSH Key Setup

Op je lokale machine (Windows/WSL):

# Genereer key als je die nog niet hebt
ssh-keygen -t ed25519 -C "homelab"

# Kopieer naar alle nodes
ssh-copy-id admin@192.0.2.201
ssh-copy-id admin@192.0.2.202
ssh-copy-id admin@192.0.2.203

5. SSH Hardening

Op elke node:

sudo vim /etc/ssh/sshd_config

Wijzig/voeg toe:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

Restart SSH:

sudo systemctl restart sshd

⚠️ Test SSH key login in een NIEUWE terminal voordat je de huidige sluit!

6. Firewall Basis

sudo ufw allow ssh
sudo ufw allow 6443/tcp  # Kubernetes API
sudo ufw enable

7. Hostname Verificatie

hostnamectl

Moet tonen: cp-01, node-01, of node-02

8. Disable Swap (vereist voor Kubernetes)

sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab

Verify:

free -h  # Swap moet 0 zijn

9. Kernel Modules voor Kubernetes

# Load modules
sudo modprobe overlay
sudo modprobe br_netfilter

# Persist on reboot
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

# Sysctl settings
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF

sudo sysctl --system

10. Hosts File (cluster discovery)

sudo tee -a /etc/hosts <<EOF
192.0.2.201 cp-01
192.0.2.202 node-01
192.0.2.203 node-02
EOF

Verificatie Checklist

Na deze stappen op alle nodes:

  • [ ] ssh admin@cp-01 werkt met key (geen wachtwoord)
  • [ ] ssh admin@node-01 werkt met key
  • [ ] ssh admin@node-02 werkt met key
  • [ ] sudo werkt op alle nodes
  • [ ] Alle nodes kunnen elkaar pingen (ping node-01 vanaf cp-01)
  • [ ] Alle nodes kunnen internet bereiken (ping 8.8.8.8)
  • [ ] Swap is uitgeschakeld (free -h toont 0 swap)
  • [ ] Kernel modules geladen (lsmod | grep br_netfilter)

Automatiseren met Ansible

Nu je begrijpt wat er gebeurt, hoef je dit nooit meer handmatig te doen:

cd ansible
ansible-playbook playbooks/prepare-nodes.yml

Dit playbook doet alle bovenstaande stappen automatisch op alle nodes.

Volgende Stap

Nodes zijn klaar voor Kubernetes. Zie Kubernetes Setup.