user@homelab:~/docs$ cat hardening.md

Hardening a režim serveru

Aktualizace, synchronizace času, firewall, víko, swap a ochrana baterie

# obsah

Přehled

OblastNastavení
aktualizaceunattended-upgrades (bezpečnostní), občas ručně full-upgrade
časchrony, časové pásmo Europe/Prague
firewallufw: příchozí ve výchozím stavu zakázané, explicitní seznam povolení
napájenívíko ignorované, baterie omezená na ~60 %
paměťswap vypnutý (požadavek Kubernetes)

1. Aktualizace a čas

shell @ server
sudo apt update && sudo apt full-upgrade -y
sudo apt install -y unattended-upgrades chrony
sudo timedatectl set-timezone Europe/Prague

unattended-upgrades instaluje jen bezpečnostní aktualizace; full-upgrade spustit občas ručně a restartovat, pokud existuje /var/run/reboot-required.

2. Firewall

shell @ server
sudo ufw allow OpenSSH        # před zapnutím, jinak se relace odřízne
sudo ufw enable
Port / síťÚčel
22/tcpSSH
6443/tcpKubernetes API
80/tcp, 443/tcpTraefik ingress
10.42.0.0/16síť podů k3s
10.43.0.0/16síť služeb k3s

Z internetu stejně nic dostupné není: na routeru není žádný port forwarding.

3. Víko

config @ server
# /etc/systemd/logind.conf.d/lid.conf
[Login]
HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore
HandleLidSwitchDocked=ignore

Drop-in soubor místo úpravy logind.conf, takže ho aktualizace balíčků nepřepíšou. Platí po restartu.

4. Vypnutý swap

shell @ server
sudo swapoff -a
sudo sed -i '/swap/ s/^/#/' /etc/fstab
sudo rm -f /swap.img

Kubernetes plánuje pody podle požadavků na paměť; swap by skutečný nedostatek paměti zakryl. Bez swapu zasáhne OOM killer, proto má každý pod limit paměti.

5. Ochrana baterie

shell @ server
echo 1 | sudo tee /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode
echo 'w /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode - - - - 1' | sudo tee /etc/tmpfiles.d/battery.conf

Ovladač ideapad_laptop zastaví nabíjení na ~60 %; systemd-tmpfiles nastavení obnoví při každém startu.

Ověření

shell @ server
sudo ufw status verbose
free -h | grep Swap                       # Swap: 0B 0B 0B
cat /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode   # 1
timedatectl | grep -E "Time zone|synchronized"