Diese Anleitung beschreibt den Aufbau eines ultraminimalen Servers, auf dem nur folgende Dienste laufen:
- Docker für alle produktiven Anwendungen
- Wazuh-Agent zur Host- und Containerüberwachung
- systemd + SSH
Alles andere wird konsequent weggelassen.
Firewall-Regeln werden über die nativen Docker-Netzwerke und den Reverse Proxy (Nginx Proxy Manager) gesteuert – kein ufw, kein iptables nötig.
Schritt 1 – Debian 13 Minimalinstallation
- ISO: Debian 13 netinst herunterladen
- Partitionierung (optional eigene Partition für /var/lib/docker)
- Software-Auswahl: nur SSH-Server aktivieren
- Alles andere deaktivieren: Desktop, Standardwerkzeuge, Mail, Druck, Snap etc.
Nach der Installation login als root.
Schritt 2 – System aktualisieren und Grundpakete installieren
apt update && apt upgrade -y
apt install -y ca-certificates curl gnupg wget lsb-release qemu-guest-agent sudo
Schritt 3 – Docker installieren
curl -fsSL https://get.docker.com | sh
Testen:
docker run hello-world
Optional: Einen Benutzer zur Docker-Gruppe hinzufügen, wenn du später nicht als Root arbeiten willst:
usermod -aG docker DEIN_BENUTZER
Schritt 4 – Wazuh-Agent installieren
Paket herunterladen. Achtung: Hier Version der Software und IP des Wazuh-Servers entsprechend anpassen.
cd /tmp
wget https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.14.1-1_amd64.deb && sudo WAZUH_MANAGER='192.168.171.13' WAZUH_AGENT_NAME='test' dpkg -i ./wazuh-agent_4.14.1-1_amd64.deb
Hier jetzt die Konfiguration prüfen. Manchmal wird die IP-Adresse des Wazuh-Servers nicht richtig gesetzt:
nano /var/ossec/etc/ossec.conf
Minimal:
<client>
<server>
<address>WAZUH_MANAGER_IP</address>
</server>
</client>
Agent starten:
systemctl enable wazuh-agent
systemctl start wazuh-agent
systemctl status wazuh-agent
Schritt 5 – Nicht benötigte Dienste entfernen
systemctl disable --now avahi-daemon cups bluetooth ModemManager
apt purge exim4* cups* avahi-daemon bluetooth -y
apt autoremove --purge -y
Schritt 6 – Logs begrenzen
nano /etc/systemd/journald.conf
Eintragen:
SystemMaxUse=300M
RuntimeMaxUse=100M
Danach:
systemctl restart systemd-journald
Schritt 7 – Dienste-Zustand prüfen
systemctl --type=service --state=running
Erlaubte Dienste:
- ssh
- docker
- wazuh-agent
- systemd-journald
- cron
- network
