Zum Inhalt springen
labkompass

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.

Welcher Server?

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 --upgradable

    Eine lange Liste, die schon länger so aussieht, heißt: Updates bleiben liegen.

    Status: Sicherheitsupdates werden zeitnah eingespielt
  • 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-upgrades

    Beide Zeilen mit "1" → automatische Updates sind eingeschaltet. Datei fehlt → nicht eingerichtet.

    Status: Automatische Sicherheitsupdates sind aktiv — oder es gibt einen festen Update-Termin
  • 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.

    Status: Nach Kernel-Updates wird neu gestartet

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

    Status: SSH-Anmeldung nur mit Schlüssel, Passwort-Anmeldung ist aus
  • 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.

    Status: Kein direkter Root-Login per SSH

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 ruleset

    Leere Ausgabe → keine Regeln. Mit ufw zeigt sudo ufw status verbose dasselbe lesbarer.

    Status: Eine Firewall ist aktiv und lässt eingehend nur Benötigtes durch
  • 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 -tulpn

    0.0.0.0 bzw. [::] heißt: auf allen Netzwerkschnittstellen erreichbar. 127.0.0.1 heißt: nur lokal.

    Status: Du weißt, welche Dienste auf welchen Ports lauschen
  • 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.

    Status: Bei Docker: Ports sind an die richtige Adresse gebunden

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.

    Status: Verwaltungsoberflächen sind nur aus dem LAN oder per VPN erreichbar
  • 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.

    Status: Keine Portweiterleitung im Router auf Verwaltungsports

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.

    Status: Port 10000 ist nicht aus dem Internet erreichbar
  • 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.conf

    Keine 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.

    Status: Webmin nimmt nur Verbindungen aus LAN- und VPN-Netzen an
  • 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.conf

    twofactor_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.

    Status: Zwei-Faktor-Anmeldung ist für Webmin eingerichtet
  • 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.

    Status: Webmin-Konten haben nur die Module, die sie brauchen
  • 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 webmin

    Installiert und Kandidat sollten gleich sein; die Quelle sollte das Webmin-Repository sein.

    Status: Webmin kommt aus dem offiziellen Repository und wird mit aktualisiert
  • 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.

    Status: Gespeicherte Zugangsdaten im Webmin Servers Index sind dir bewusst

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: -f1

    Listet die normalen Benutzerkonten. Unbekannte oder verwaiste Konten sperren oder entfernen.

    Status: Jede Person hat ein eigenes Konto, keine geteilten Logins
  • 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 sudo

    Auf RHEL-Systemen heißt die Gruppe wheel (getent group wheel).

    Status: Nur Konten, die es wirklich brauchen, haben sudo
  • 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 -0002

    Leere Ausgabe ist das Ziel. Jeder Treffer ist eine Datei, die jeder Benutzer ändern darf.

    Mehr dazu: chmod-Rechner

    Status: Keine für alle beschreibbaren Dateien in Konfiguration und Daten

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

    Status: Daten und Konfiguration werden regelmäßig gesichert, eine Kopie liegt außer Haus
  • Eine Wiederherstellung wurde ausprobiert

    Ein Backup ist erst dann eines, wenn die Wiederherstellung einmal geklappt hat. Datum des letzten Tests notieren.

    Status: Eine Wiederherstellung wurde ausprobiert
  • 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.

    Status: Webmin-Konfigurationsbackups werden wie Passwörter behandelt
  • 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.

    Status: Datenbanken werden per Dump gesichert, nicht als laufende Dateien kopiert

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-boots

    Mehrere Einträge → das Journal wird über Neustarts hinweg gespeichert. Nur einer → vermutlich nur im RAM.

    Mehr dazu: journalctl Command Builder

    Status: Das Systemjournal überlebt einen Neustart
  • 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 -20

    Auf RHEL-Systemen heißt der Dienst sshd (journalctl -u sshd).

    Mehr dazu: journalctl Command Builder

    Status: Du schaust dir Anmeldungen ab und zu an
  • 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.log

    Eine 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.

    Status: Du weißt, wo Webmin Änderungen protokolliert

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

    Status: Ausfälle fallen dir auf, bevor jemand anderes sie meldet
  • 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 devtmpfs

    Ab etwa 85 % Belegung wird es Zeit aufzuräumen oder zu erweitern.

    Mehr dazu: smartctl Command Builder

    Status: Plattenplatz und Festplatten-Gesundheit sind im Blick

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