Irgendwann kommt der Moment: Ein Kunde schickt einen Sicherheitsfragebogen, ein Auftragsverarbeitungsvertrag verlangt eine Anlage mit technischen und organisatorischen Maßnahmen, oder eine Ausschreibung fragt nach Nachweisen. Die übliche Reaktion ist eine Vorlage aus dem Netz, in der viel steht und wenig stimmt.
Es drängt selten, bis es plötzlich drängt: Ein Vertragsabschluss hängt daran. Der Aufwand ist überschaubar, wenn man die technischen Maßnahmen ohnehin umgesetzt hat. Keine Rechtsberatung, Struktur und Formulierungen der eigenen Anlage prüft eine Anwältin oder ein Anwalt; hier geht es um den technischen Nachweis dahinter.
Die Gliederung, an der sich Prüfer orientieren#
Art. 32 DSGVO nennt Schutzziele, keine Produkte. Bewährt hat sich diese Ordnung:
| Ziel | Beispiele aus dieser Seite | Beleg |
|---|---|---|
| Zutritt/Zugang | Schlüssel statt Passwort, zweiter Faktor | sshd -T, Screenshot der Faktor-Einstellung |
| Zugriff | eigene Konten, enge sudo-Regeln | sudo -l -U …, Kontenliste |
| Weitergabe | TLS überall, keine offenen Dienste | openssl s_client, externer Portscan |
| Eingabe/Nachvollziehbarkeit | zentrale Protokolle | Beispieleintrag auf dem Zielsystem |
| Verfügbarkeit | Sicherungen, Wiederherstellung geprobt | Datum und Dauer der letzten Probe |
| Trennbarkeit | getrennte Konten, getrennte Datenbanken | Konfigurationsauszug |
| Wirksamkeitsprüfung | regelmäßige Prüfung von außen | Datum, Ergebnis, Maßnahme |
Belege statt Behauptungen#
Der Unterschied zwischen einer glaubwürdigen und einer beliebigen Liste ist die Spalte rechts. Ein Sammelskript, das die Belege erzeugt, spart bei jeder Wiederholung Zeit:
#!/usr/bin/env bash
# /usr/local/sbin/nachweis.sh — Zustand als Beleg, monatlich
set -euo pipefail
ZIEL="/var/backups/nachweis-$(hostname -s)-$(date +%F).txt"
{
echo "== Stand: $(date -u +%FT%TZ) Host: $(hostname -f)"
echo "-- SSH"
sshd -T | grep -E 'permitrootlogin|passwordauthentication|kbdinteractive'
echo "-- Offene Ports"
ss -tulpn | grep LISTEN
echo "-- Firewall"
nft list ruleset 2>/dev/null | head -40 || ufw status verbose
echo "-- Automatische Updates"
systemctl is-enabled unattended-upgrades 2>/dev/null || true
ls -1 /var/log/unattended-upgrades/ 2>/dev/null | tail -3
echo "-- Letzte Sicherung"
ls -l --time-style=long-iso /var/backups/ | tail -5
echo "-- Zertifikat"
echo | openssl s_client -connect "$(hostname -f):443" -servername "$(hostname -f)" 2>/dev/null \
| openssl x509 -noout -subject -enddate
} > "$ZIEL"
echo "$ZIEL"
Das Ergebnis ist kein Zertifikat, es ist etwas Besseres für den Alltag: ein datierter Zustand, den man einem Kunden zeigen und mit dem Vormonat vergleichen kann.
Eine TOM-Anlage ist Vertragsbestandteil. Wer „Verschlüsselung im Ruhezustand“ ankreuzt, obwohl die Platte unverschlüsselt ist, hat im Schadensfall nicht nur ein technisches Problem. Was nicht umgesetzt ist, gehört als offener Punkt mit Termin hinein, das wird in der Praxis akzeptiert, eine falsche Angabe nicht.
Kundenfragebögen: die drei Antworttypen#
- Ja, mit Beleg. Die einfachen Fälle, genau die, für die das Skript oben da ist.
- Nein, mit Begründung und Alternative. „Kein SIEM. Protokolle laufen zentral auf ein getrenntes System, Aufbewahrung 90 Tage, Alarm auf definierte Ereignisse.“ Das ist eine bessere Antwort als ein unehrliches Ja.
- Nicht anwendbar, mit Erklärung. Wenn nach Rechenzentrumszutritt gefragt wird und man bei einem Anbieter mietet, gehört dessen Nachweis dorthin, mit dem Hinweis, worauf man selbst keinen Einfluss hat.
Was die Liste aktuell hält#
Ein Dokument mit dem Stand von vorletztem Jahr ist ein Beleg dafür, dass niemand hinsieht. Zwei Termine reichen:
- monatlich: Skript läuft, Ergebnis wird abgelegt (automatisch).
- jährlich: Liste durchsehen, offene Punkte fortschreiben, Datum und Verantwortlichen aktualisieren.
Die inhaltliche Grundlage dafür liefern Bestandsliste, Angriffsfläche von außen messen und die Prüflisten am Rand jedes Beitrags dieser Seite.
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.