Assistent · Linux
Linux-Server-Sicherheitscheckliste
Die Punkte, die bei einem Linux-Server im Heimnetz oder als VPS wirklich zählen — jeweils mit einem Satz, warum, und einem lesenden Befehl, mit dem du selbst nachsiehst. Hake ab, was erledigt ist, und markiere, was bei dir nicht zutrifft. Die Liste prüft deinen Server nicht und gibt kein Sicherheitsurteil ab: Sie hilft dir, nichts Wichtiges zu vergessen.
0 erledigt · 28 offen · 0 trifft nicht zu — von 28 Punkten
Die Zählung gibt nur wieder, was du selbst abhakst. Sie ist keine Prüfung deines Servers und kein Sicherheitsurteil — auch eine komplett abgehakte Liste heißt nicht „sicher“.
Updates
Sicherheitsupdates werden zeitnah eingespielt
Die meisten erfolgreichen Angriffe nutzen Lücken, für die es längst ein Update gibt. Ein fester Rhythmus schlägt jeden guten Vorsatz.
Selbst nachsehen
apt list --upgradableEine lange Liste, die schon länger so aussieht, heißt: Updates bleiben liegen.
Automatische Sicherheitsupdates sind aktiv — oder es gibt einen festen Update-Termin
Auf Debian und Ubuntu spielt unattended-upgrades Sicherheitsupdates selbstständig ein. Wer das bewusst nicht will, braucht einen Termin im Kalender.
Selbst nachsehen
cat /etc/apt/apt.conf.d/20auto-upgradesBeide Zeilen mit "1" → automatische Updates sind eingeschaltet. Datei fehlt → nicht eingerichtet.
Nach Kernel-Updates wird neu gestartet
Ein neuer Kernel wirkt erst nach dem Neustart. Bis dahin läuft der alte mit seinen Lücken weiter.
Selbst nachsehen
uname -r && ls /boot/vmlinuz-*Liegt in /boot ein neuerer Kernel als der laufende (uname -r), steht ein Neustart aus.
SSH
SSH-Anmeldung nur mit Schlüssel, Passwort-Anmeldung ist aus
Passwörter lassen sich durchprobieren, ein SSH-Schlüssel praktisch nicht. Erst den Schlüssel testen, dann Passwörter abschalten — sonst sperrst du dich aus.
Selbst nachsehen
sudo sshd -T | grep -E '^(passwordauthentication|pubkeyauthentication|kbdinteractiveauthentication)'Ziel: passwordauthentication no, pubkeyauthentication yes. sshd -T zeigt die wirksame Konfiguration, nicht nur die Datei.
Mehr dazu: SSH Command Builder
Kein direkter Root-Login per SSH
Angreifer kennen den Benutzernamen root. Ein eigener Benutzer mit sudo hinterlässt außerdem nachvollziehbare Spuren, wer was getan hat.
Selbst nachsehen
sudo sshd -T | grep '^permitrootlogin'permitrootlogin no ist am strengsten; prohibit-password erlaubt root nur mit Schlüssel.
Firewall und offene Ports
Eine Firewall ist aktiv und lässt eingehend nur Benötigtes durch
Die Firewall ist das Sicherheitsnetz für den Dienst, von dem du vergessen hast, dass er lauscht. Standard: eingehend alles zu, dann gezielt öffnen.
Selbst nachsehen
sudo nft list rulesetLeere Ausgabe → keine Regeln. Mit ufw zeigt sudo ufw status verbose dasselbe lesbarer.
Du weißt, welche Dienste auf welchen Ports lauschen
Jeder lauschende Dienst ist eine mögliche Tür. Was du nicht kennst, kannst du weder absichern noch abschalten.
Selbst nachsehen
sudo ss -tulpn0.0.0.0 bzw. [::] heißt: auf allen Netzwerkschnittstellen erreichbar. 127.0.0.1 heißt: nur lokal.
Bei Docker: Ports sind an die richtige Adresse gebunden
Docker veröffentlicht Ports an ufw und firewalld vorbei. Ein -p 8080:8080 ist deshalb aus jedem Netz erreichbar, das den Server sieht — egal, was die Firewall sagt.
Selbst nachsehen
sudo docker ps --format '{{.Names}}: {{.Ports}}'0.0.0.0:8080->… ist überall erreichbar; 127.0.0.1:8080->… nur lokal. Ohne Docker: Punkt als nicht zutreffend markieren.
Verwaltungszugang und VPN
Verwaltungsoberflächen sind nur aus dem LAN oder per VPN erreichbar
Webmin, Portainer, Proxmox und Co. haben Root-Rechte auf dem Server. Eine Anmeldeseite im Internet ist eine Einladung — ein VPN davor lässt nur dich durch.
Keine Portweiterleitung im Router auf Verwaltungsports
Eine vergessene Weiterleitung, etwa für einen kurzen Test, macht eine Oberfläche dauerhaft öffentlich. Einmal im Router nachsehen kostet zwei Minuten.
Webmin
Port 10000 ist nicht aus dem Internet erreichbar
Webmin läuft mit Root-Rechten. Jede Lücke und jedes schwache Passwort wäre direkt ausnutzbar.
Selbst nachsehen
sudo ss -tlnp | grep ':10000'0.0.0.0:10000 heißt: auf allen Schnittstellen — dann muss die Firewall oder Webmins IP-Zugriffskontrolle Fremde abweisen.
Webmin nimmt nur Verbindungen aus LAN- und VPN-Netzen an
Die IP-Zugriffskontrolle von Webmin ist eine zweite Schicht hinter der Firewall: Selbst wenn der Port erreichbar ist, antwortet Webmin Fremden nicht.
Selbst nachsehen
sudo grep -E '^(allow|deny)=' /etc/webmin/miniserv.confKeine Zeile → alle Adressen erlaubt. allow=192.168.10.0/24 o. Ä. → nur diese Netze — alles andere wird abgewiesen, auch 127.0.0.1, wenn es fehlt.
Zwei-Faktor-Anmeldung ist für Webmin eingerichtet
Ein zweiter Faktor (Code aus einer Authenticator-App) macht ein erratenes oder geleaktes Passwort allein wertlos.
Selbst nachsehen
sudo grep '^twofactor_provider=' /etc/webmin/miniserv.conftwofactor_provider=totp → TOTP aktiv (in Webmin 2.670 „TOTP Authenticator“). Keine Zeile oder leerer Wert → kein zweiter Faktor. Danach muss sich jedes Konto unter Webmin Users noch selbst einschreiben. Achtung: Beim Einschreiben landet der geheime Schlüssel im Aktionsprotokoll /var/webmin/webmin.log — die Datei wie ein Passwort behandeln.
Webmin-Konten haben nur die Module, die sie brauchen
Wer nur Cronjobs pflegen soll, braucht keinen Zugriff auf Benutzer, Pakete oder die Kommandozeile. Module wie Terminal oder Upload können Root-Befehle ausführen.
Webmin kommt aus dem offiziellen Repository und wird mit aktualisiert
Über das Repository erhält Webmin seine Sicherheitsupdates mit dem normalen apt upgrade. Eine einmal heruntergeladene .deb-Datei veraltet still.
Selbst nachsehen
apt-cache policy webminInstalliert und Kandidat sollten gleich sein; die Quelle sollte das Webmin-Repository sein.
Gespeicherte Zugangsdaten im Webmin Servers Index sind dir bewusst
Wer weitere Server mit „Login via Webmin“ einträgt, speichert deren Benutzer und Passwort auf diesem Server — im Klartext, nur durch Dateirechte geschützt.
Selbst nachsehen
sudo ls -l /etc/webmin/servers/Nur die Datei config → nichts gespeichert. Jede .serv-Datei enthält die Zugangsdaten eines anderen Servers.
Benutzer und Rechte
Jede Person hat ein eigenes Konto, keine geteilten Logins
Nur mit eigenen Konten lässt sich nachvollziehen, wer was geändert hat — und ein Zugang lässt sich entziehen, ohne alle anderen zu treffen.
Selbst nachsehen
getent passwd {1000..60000} | cut -d: -f1Listet die normalen Benutzerkonten. Unbekannte oder verwaiste Konten sperren oder entfernen.
Nur Konten, die es wirklich brauchen, haben sudo
sudo ist Root. Jedes Konto in der Gruppe sudo ist ein vollwertiger Administrator.
Selbst nachsehen
getent group sudoAuf RHEL-Systemen heißt die Gruppe wheel (getent group wheel).
Keine für alle beschreibbaren Dateien in Konfiguration und Daten
Was jeder schreiben darf, kann jeder kompromittierte Dienst verändern — auch Skripte, die später als root laufen.
Selbst nachsehen
sudo find /etc /srv -xdev -type f -perm -0002Leere Ausgabe ist das Ziel. Jeder Treffer ist eine Datei, die jeder Benutzer ändern darf.
Mehr dazu: chmod-Rechner
Backups
Daten und Konfiguration werden regelmäßig gesichert, eine Kopie liegt außer Haus
Ein Backup auf derselben Platte überlebt keinen Plattenausfall, eines im selben Haus keinen Brand oder Verschlüsselungstrojaner.
Mehr dazu: Backup-Strategie für zuhause · Backup-Speicher-Rechner
Eine Wiederherstellung wurde ausprobiert
Ein Backup ist erst dann eines, wenn die Wiederherstellung einmal geklappt hat. Datum des letzten Tests notieren.
Webmin-Konfigurationsbackups werden wie Passwörter behandelt
Backup Configuration Files sichert je nach Auswahl auch /etc/shadow und den privaten Schlüssel des Webmin-Zertifikats. Wer die Datei hat, hat die Passwort-Hashes deines Servers.
Datenbanken werden per Dump gesichert, nicht als laufende Dateien kopiert
Die Dateien einer laufenden Datenbank zu kopieren, ergibt oft ein inkonsistentes Abbild. Ein Dump (mariadb-dump, pg_dump) ist ein sauberer Stand.
Logs
Das Systemjournal überlebt einen Neustart
Stürzt der Server ab, steht die Ursache im Journal des letzten Starts — aber nur, wenn es auf der Platte gespeichert wird.
Selbst nachsehen
journalctl --list-bootsMehrere Einträge → das Journal wird über Neustarts hinweg gespeichert. Nur einer → vermutlich nur im RAM.
Mehr dazu: journalctl Command Builder
Du schaust dir Anmeldungen ab und zu an
Fehlgeschlagene und erfolgreiche Anmeldungen zeigen früh, ob jemand Zugangsdaten durchprobiert — oder schon drin ist.
Selbst nachsehen
journalctl -u ssh --since -7d | grep -E 'Accepted|Failed' | tail -20Auf RHEL-Systemen heißt der Dienst sshd (journalctl -u sshd).
Mehr dazu: journalctl Command Builder
Du weißt, wo Webmin Änderungen protokolliert
Das Aktionsprotokoll von Webmin zeigt, welches Konto über welches Modul was geändert hat — Gold wert, wenn nach einem Klick etwas kaputt ist.
Selbst nachsehen
sudo tail -n 5 /var/webmin/webmin.logEine Zeile pro Aktion mit Konto, Adresse und Modul. Welche Dateien sich dabei geändert haben, speichert Webmin erst, wenn „Log changes made to files by each action“ eingeschaltet ist.
Monitoring
Ausfälle fallen dir auf, bevor jemand anderes sie meldet
Ein einfacher Erreichbarkeits-Check mit Benachrichtigung (z. B. Uptime Kuma auf einem anderen Gerät) reicht für den Anfang.
Mehr dazu: Uptime Kuma + Beszel
Plattenplatz und Festplatten-Gesundheit sind im Blick
Volle Platten legen Datenbanken und Logs lahm; SMART-Werte kündigen manche Ausfälle Wochen vorher an.
Selbst nachsehen
df -h -x tmpfs -x devtmpfsAb etwa 85 % Belegung wird es Zeit aufzuräumen oder zu erweitern.
Mehr dazu: smartctl Command Builder
Häufige Fragen
Ist mein Server sicher, wenn alles abgehakt ist?
Das kann keine Checkliste versprechen. Sie deckt die häufigsten Lücken ab — fehlende Updates, Passwort-Logins, offene Verwaltungsoberflächen, fehlende Backups —, aber nicht deine konkreten Dienste, deren Konfiguration und neue Schwachstellen. Sie ist ein Startpunkt, kein Prüfsiegel.
Werden meine Antworten gespeichert oder übertragen?
Der Bearbeitungsstand liegt nur im lokalen Speicher deines Browsers, damit er beim nächsten Besuch noch da ist. Er wird nicht an Labkompass übertragen. „Zurücksetzen“ löscht ihn; in einem privaten Fenster bleibt er gar nicht erst erhalten.
Sind die Prüfbefehle gefahrlos?
Ja, sie lesen nur: Sie zeigen Konfiguration, offene Ports, Konten und Logs an und ändern nichts. Einige brauchen sudo, weil die Informationen nur root lesen darf.
Warum Homeserver und VPS getrennt?
Ein VPS steht ohne Router davor direkt im Internet; jeder offene Port ist sofort erreichbar. Im Heimnetz schützt der Router zunächst, dafür entstehen Lücken eher durch vergessene Portweiterleitungen.
Passende Tools
Webmin-Installationsassistent →
Webmin auf Debian, Ubuntu oder Rocky/Alma einrichten: offizielle Paketquelle, Firewall-Regeln, Zugriff nur aus LAN, VPN oder per SSH-Tunnel, Prüfschritte und Checkliste.
SSH Command Builder →
SSH-Verbindungen und Port-Forwarding bauen — mit Key, Jump-Host und Tunnel, ohne Manpage-Suche.
chmod-Rechner →
Rechte per Klick setzen und zwischen 750, rwxr-x--- und chmod-Befehl umrechnen — mit Erklärung für Datei und Verzeichnis, Sonderbits und Warnung vor 777.