Zum Inhalt springen
SHIELDMYSERVER

Was überwacht gehört und was nur Rauschen erzeugt

Sieben Prüfungen, die einen einzelnen Server tatsächlich absichern: Erreichbarkeit von außen, Zertifikat, Platte, Dienste, Sicherung, Update-Stand, ausgehender Verkehr. Mit Schwellwerten.

mittelDiesen Monat. Wichtig, aber kein Feuer.

veröffentlicht 19.08.2026 · 2 min

Titelbild: Was überwacht gehört und was nur Rauschen erzeugt

Überwachung scheitert selten an fehlenden Werkzeugen. Sie scheitert an zwei Enden: Es wird zu viel gemessen, sodass niemand mehr hinsieht, oder es wird von innen gemessen, sodass ein Ausfall der Maschine auch die Messung mitnimmt.

Warum mittel

Ein einzelner Server braucht keine Messplattform. Er braucht sieben Prüfungen, von denen mindestens eine von außen kommt, und einen Weg, auf dem der Alarm ankommt. Das ist an einem Nachmittag eingerichtet und schlägt jedes Dashboard, das niemand öffnet.

Die sieben#

#PrüfungVon woSchwelle
1Antwortet die Seite?außen2 Fehlversuche in Folge
2Zertifikat noch gültig?außen< 10 Tage Restlaufzeit
3Platte voll?innen> 85 % oder < 2 GB frei
4Laufen die Dienste?innenDienst nicht active
5Sicherung gelaufen?außen (Totmannschalter)Meldung bleibt aus
6Sicherheitsupdates offen?innen> 7 Tage nicht eingespielt
7Ausgehender Verkehr auffällig?innenVerbindung auf gesperrten Port

Die drei Prüfungen von außen sind die wichtigen: Sie funktionieren auch dann noch, wenn die Maschine nicht mehr antwortet.

Klein anfangen, ohne zusätzliche Software#

# 3. Platte
df -h --output=pcent,target / /var | tail -n +2

# 4. Dienste, die laufen sollen
systemctl is-active nginx postgresql docker || echo "Dienst fehlt"

# 6. Offene Sicherheitsupdates
apt-get -s -o Debug::NoLocking=true upgrade | grep -ci '^Inst.*security'

# 7. Ausgehende Verbindungen auf ungewöhnliche Ziele
ss -tunp state established | awk 'NR>1 {print $5}' | cut -d: -f1 | sort -u

Ein Skript, das diese vier Punkte prüft und nur bei Abweichung eine Meldung schickt, deckt die Innenseite ab:

#!/usr/bin/env bash
# /usr/local/sbin/wachhund.sh — schweigt im Normalfall
set -uo pipefail
meldungen=()
voll=$(df --output=pcent / | tail -1 | tr -dc '0-9')
[ "$voll" -gt 85 ] && meldungen+=("Platte / bei ${voll}%")
for d in nginx postgresql; do
  systemctl is-active --quiet "$d" || meldungen+=("Dienst $d ist nicht aktiv")
done
offen=$(apt-get -s -o Debug::NoLocking=true upgrade 2>/dev/null | grep -ci '^Inst.*security')
[ "$offen" -gt 0 ] && meldungen+=("$offen Sicherheitsupdates offen")
[ ${#meldungen[@]} -eq 0 ] && exit 0
printf '%s\n' "${meldungen[@]}" | mail -s "Befund auf $(hostname -s)" [email protected]

Die Außensicht braucht einen zweiten Ort#

Erreichbarkeit, Zertifikatsablauf und der Totmannschalter für die Sicherung gehören auf ein System, das nicht mitausfällt: eine kleine VM bei einem anderen Anbieter oder ein Dienst, der genau das anbietet. Wer beide Seiten auf derselben Maschine betreibt, misst die Verfügbarkeit einer Maschine mit sich selbst.

Warum das nicht theoretisch ist, steht in Alarme, die nachts ankommen: Der unangenehmste Zustand ist Stille, die wie Ruhe aussieht.

Schwellwerte begründen, nicht erben

Ein Alarm bei 80 % Plattenfüllung ist auf einer 20-GB-Platte sinnvoll und auf einer 4-TB-Platte Unsinn, dort sind 20 % noch 800 GB Luft. Sinnvoller ist die Frage: Wie lange dauert es bei aktuellem Wachstum, bis es eng wird? Wer statt Prozent die verbleibenden Tage alarmiert, bekommt eine Meldung, auf die man reagieren kann.

Was man sich sparen kann#

  • CPU-Spitzen. Ein Server, der arbeitet, ist kein Befund.
  • Arbeitsspeicherauslastung nahe 100 %. Linux nutzt freien Speicher als Zwischenspeicher; die interessante Zahl ist available, nicht used.
  • Jede erfolgreiche Sicherung. Erfolg ist kein Ereignis; das Ausbleiben ist eins.
  • Prozessanzahl, Netzdurchsatz, Lastdurchschnitt, interessant bei der Fehlersuche, nutzlos als Alarm.

Der Test, den fast niemand macht#

Einen Dienst absichtlich stoppen und die Uhr laufen lassen: Wann kommt die Meldung, und kommt sie auf dem Gerät an, das man abends dabei hat?

sudo systemctl stop nginx     # Uhrzeit notieren
# … warten, Meldung abwarten …
sudo systemctl start nginx

Wenn nach fünfzehn Minuten nichts kommt, ist die Überwachung ein Dashboard, kein Alarm und der eigentliche Befund steht in Einen Einbruch erkennen: Zeit bis zur Entdeckung entscheidet über die Kosten.

MRMedia

Geschrieben aus dem laufenden Betrieb: MRMedia betreibt eigene Hosts, Kundendienste und deren Härtung in der EU. Eine veraltete Anleitung ist hier ein Sicherheitsproblem, kein Schönheitsfehler. Korrekturen bitte über Discord.