> For the complete documentation index, see [llms.txt](https://docs.instantroot.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.instantroot.de/kvm-server/allgemein/kvm-server-absichern.md).

# KVM-Server absichern

Ein KVM-Server bietet dir viel Freiheit, aber auch viel Verantwortung. Du verwaltest das Betriebssystem selbst und bist dafür zuständig, den Server sicher zu betreiben.

In diesem Artikel zeigen wir dir grundlegende Maßnahmen, mit denen du deinen KVM-Server besser absichern kannst.

### Warum Sicherheit wichtig ist

Ein öffentlich erreichbarer Server ist dauerhaft mit dem Internet verbunden. Dadurch können auch fremde Personen versuchen, sich mit deinem Server zu verbinden oder bekannte Schwachstellen auszunutzen.

Typische Risiken sind:

* schwache Passwörter
* veraltete Software
* offene Ports
* falsch konfigurierte Dienste
* unsichere SSH- oder RDP-Zugänge
* fehlende Firewall
* keine Backups
* kompromittierte Anwendungen

Ein sicher konfigurierter Server reduziert diese Risiken deutlich.

### Verantwortung bei KVM-Servern

Bei einem KVM-Server hast du Root- oder Administrator-Zugriff. Das bedeutet, dass du viele Einstellungen selbst ändern kannst.

Gleichzeitig bist du auch selbst für dein System verantwortlich.

Dazu gehören unter anderem:

* Betriebssystem aktuell halten
* sichere Passwörter verwenden
* Benutzerrechte sauber verwalten
* Firewall einrichten
* Dienste absichern
* Backups erstellen
* Logs prüfen
* verdächtige Aktivitäten erkennen

Der Support kann dir bei Problemen helfen. Die Administration deines Betriebssystems und deiner installierten Software liegt jedoch grundsätzlich bei dir.

### Betriebssystem aktuell halten

Sicherheitsupdates sind eine der wichtigsten Maßnahmen.

Veraltete Pakete oder Dienste können bekannte Sicherheitslücken enthalten. Diese werden häufig automatisch von Bots gesucht und ausgenutzt.

#### Debian und Ubuntu aktualisieren

Melde dich per SSH auf deinem Server an und führe die Updates aus.

Befehl: `apt update`

Danach installierst du verfügbare Updates.

Befehl: `apt upgrade`

Wenn Kernel-Updates oder wichtige Systemupdates installiert wurden, kann ein Neustart erforderlich sein.

Befehl: `reboot`

#### AlmaLinux und Rocky Linux aktualisieren

Bei AlmaLinux oder Rocky Linux nutzt du folgenden Befehl:

`dnf update`

Danach kannst du den Server bei Bedarf neu starten.

Befehl: `reboot`

#### Windows Server aktualisieren

Bei Windows Server solltest du regelmäßig Windows Update ausführen.

1. Öffne die Windows-Einstellungen.
2. Gehe zu **Windows Update**.
3. Suche nach Updates.
4. Installiere verfügbare Updates.
5. Starte den Server neu, falls erforderlich.

### Sichere Passwörter verwenden

Schwache Passwörter sind eine häufige Ursache für kompromittierte Server.

Verwende für deinen Server ein eigenes, langes und zufälliges Passwort.

Ein sicheres Passwort sollte:

* nicht bei anderen Diensten verwendet werden
* mindestens 12 bis 16 Zeichen lang sein
* Groß- und Kleinbuchstaben enthalten
* Zahlen enthalten
* Sonderzeichen enthalten
* nicht aus Namen, Domains oder einfachen Wörtern bestehen

Beispiele für schlechte Passwörter:

* `password`
* `admin123`
* `minecraft`
* `root`
* `server123`
* `deinedomain2024`

Nutze am besten einen Passwortmanager. Damit kannst du für jeden Dienst ein eigenes Passwort speichern.

### Standardzugänge prüfen

Viele Angriffe richten sich gegen bekannte Standardzugänge.

Typische Ziele sind:

* SSH auf Port `22`
* RDP auf Port `3389`
* Datenbanken wie MySQL oder PostgreSQL
* Weboberflächen von Adminpanels
* FTP-Server
* alte Testinstallationen

Prüfe regelmäßig, welche Dienste auf deinem Server laufen und welche Ports geöffnet sind.

Unter Linux kannst du offene Ports zum Beispiel so prüfen:

`ss -tulpen`

Wenn ein Dienst nicht benötigt wird, solltest du ihn deaktivieren oder deinstallieren.

### Firewall einrichten

Eine Firewall steuert, welche Verbindungen zu deinem Server erlaubt sind.

Grundregel: Öffne nur Ports, die du wirklich brauchst.

Typische Ports sind:

| Port    | Dienst            |
| ------- | ----------------- |
| `22`    | SSH               |
| `80`    | HTTP              |
| `443`   | HTTPS             |
| `3389`  | Remote Desktop    |
| `25565` | Minecraft Java    |
| `19132` | Minecraft Bedrock |

Wenn du einen Dienst nicht nutzt, sollte der entsprechende Port nicht erreichbar sein.

### Firewall unter Linux mit UFW

UFW ist eine einfache Firewall für viele Linux-Systeme.

UFW installieren:

`apt install ufw`

SSH erlauben:

`ufw allow 22/tcp`

HTTP und HTTPS erlauben:

`ufw allow 80/tcp`

`ufw allow 443/tcp`

Firewall aktivieren:

`ufw enable`

Status prüfen:

`ufw status`

**Wichtig:** Erlaube SSH, bevor du die Firewall aktivierst. Wenn du SSH blockierst, kannst du dich möglicherweise nicht mehr normal mit deinem Server verbinden.

### Firewall unter Windows Server

Bei Windows Server nutzt du die Windows Defender Firewall.

1. Öffne die Windows Defender Firewall.
2. Öffne **Erweiterte Einstellungen**.
3. Wähle **Eingehende Regeln**.
4. Erstelle eine neue Regel.
5. Wähle den benötigten Port.
6. Erlaube die Verbindung.
7. Wähle das passende Profil.
8. Vergib einen eindeutigen Namen.

Öffne nur Ports, die du wirklich benötigst.

### SSH absichern

SSH ist der Standardzugang für Linux-Server.

Wenn SSH unsicher konfiguriert ist, kann dein Server leichter angegriffen werden.

### SSH-Key statt Passwort verwenden

Ein SSH-Key ist sicherer als ein Passwort, wenn er korrekt verwendet wird.

Dabei meldest du dich nicht mit einem Passwort an, sondern mit einem privaten Schlüssel auf deinem Gerät.

Vorteile:

* schwerer zu erraten als ein Passwort
* besser gegen Brute-Force-Angriffe
* kann zusätzlich mit einer Passphrase geschützt werden

### SSH-Key erstellen

Auf Windows, macOS oder Linux kannst du im Terminal einen SSH-Key erstellen.

Befehl:

`ssh-keygen -t ed25519`

Danach wird ein privater und ein öffentlicher Schlüssel erzeugt.

Der öffentliche Schlüssel wird auf dem Server hinterlegt. Der private Schlüssel bleibt auf deinem Gerät.

**Wichtig:** Gib deinen privaten SSH-Key niemals weiter. Wer Zugriff auf deinen privaten Schlüssel hat, kann sich möglicherweise auf deinem Server anmelden.

### SSH-Key auf dem Server hinterlegen

Der öffentliche Schlüssel wird auf dem Server in folgender Datei gespeichert:

`~/.ssh/authorized_keys`

Achte auf korrekte Rechte:

`chmod 700 ~/.ssh`

`chmod 600 ~/.ssh/authorized_keys`

### Passwort-Login für SSH deaktivieren

Wenn dein SSH-Key funktioniert, kannst du den Passwort-Login deaktivieren.

Öffne die SSH-Konfiguration:

`nano /etc/ssh/sshd_config`

Setze oder ändere folgenden Wert:

`PasswordAuthentication no`

Optional kannst du zusätzlich den direkten Root-Login deaktivieren:

`PermitRootLogin no`

Danach SSH neu starten:

`systemctl restart ssh`

**Wichtig:** Teste deinen SSH-Key in einem zweiten Terminalfenster, bevor du den Passwort-Login deaktivierst. Wenn die Key-Anmeldung nicht funktioniert, kannst du dich sonst aussperren.

### Root-Login deaktivieren

Der direkte Login als `root` ist bequem, aber nicht immer empfehlenswert.

Besser ist:

1. normalen Benutzer anlegen
2. diesem Benutzer sudo-Rechte geben
3. direkten Root-Login deaktivieren

Benutzer anlegen:

`adduser benutzername`

Benutzer zur sudo-Gruppe hinzufügen:

`usermod -aG sudo benutzername`

Danach kannst du dich mit dem neuen Benutzer anmelden und administrative Befehle mit `sudo` ausführen.

### SSH-Port ändern

Du kannst den SSH-Port ändern, um einfache automatische Angriffe auf Port `22` zu reduzieren.

Öffne die SSH-Konfiguration:

`nano /etc/ssh/sshd_config`

Ändere zum Beispiel:

`Port 2222`

Erlaube den neuen Port in der Firewall:

`ufw allow 2222/tcp`

Starte SSH neu:

`systemctl restart ssh`

Danach verbindest du dich so:

`ssh benutzername@SERVER-IP -p 2222`

**Hinweis:** Ein geänderter SSH-Port ersetzt keine echte Sicherheitskonfiguration. Verwende trotzdem sichere Passwörter, SSH-Keys und eine Firewall.

### Fail2Ban installieren

Fail2Ban schützt Dienste wie SSH vor vielen fehlgeschlagenen Loginversuchen.

Installation unter Debian oder Ubuntu:

`apt install fail2ban`

Dienst aktivieren:

`systemctl enable fail2ban`

Dienst starten:

`systemctl start fail2ban`

Status prüfen:

`systemctl status fail2ban`

Fail2Ban erkennt wiederholte fehlgeschlagene Loginversuche und sperrt die betroffene IP-Adresse zeitweise.

### RDP absichern

Bei Windows Server ist Remote Desktop häufig das wichtigste Angriffsziel.

Wenn du RDP verwendest, solltest du besonders auf Sicherheit achten.

Empfehlungen:

* starkes Administrator-Passwort verwenden
* unnötige Benutzer entfernen
* Windows Updates installieren
* Firewall-Regeln begrenzen
* RDP nur für benötigte IP-Adressen erlauben, wenn möglich
* Standardadministrator umbenennen
* Ereignisanzeige regelmäßig prüfen

### RDP-Port ändern

Der Standardport für RDP ist `3389`.

Ein geänderter Port kann automatische Angriffe reduzieren, ersetzt aber keine echte Absicherung.

Wenn du den RDP-Port änderst, musst du auch die Firewall-Regeln anpassen.

**Wichtig:** Ändere den RDP-Port nur, wenn du weißt, was du tust. Eine falsche Einstellung kann dazu führen, dass du dich nicht mehr per Remote Desktop verbinden kannst.

### Nur benötigte Dienste installieren

Installiere nur Software, die du wirklich brauchst.

Jede zusätzliche Software kann neue Sicherheitsrisiken schaffen.

Vermeide:

* ungenutzte Webpanels
* alte Testinstallationen
* öffentlich erreichbare Datenbanken
* nicht gepflegte Skripte
* unbekannte Installationsscripts
* unnötige FTP-Dienste

Wenn du Software nicht mehr nutzt, deinstalliere sie.

### Datenbanken absichern

Datenbanken sollten in den meisten Fällen nicht öffentlich erreichbar sein.

MySQL, MariaDB oder PostgreSQL sollten nur dann über das Internet erreichbar sein, wenn es wirklich notwendig ist und sicher konfiguriert wurde.

Empfehlungen:

* Datenbank nur lokal erreichbar machen
* starke Datenbankpasswörter verwenden
* eigene Benutzer pro Anwendung erstellen
* keine Root-Datenbankzugänge für Anwendungen verwenden
* regelmäßige Datenbank-Backups erstellen

### Webserver absichern

Wenn du Webseiten auf deinem KVM-Server betreibst, solltest du auch den Webserver absichern.

Wichtige Punkte:

* HTTPS verwenden
* Software aktuell halten
* nicht benötigte Testdateien entfernen
* Dateirechte prüfen
* Adminbereiche schützen
* CMS wie WordPress regelmäßig aktualisieren
* Plugins und Themes aktuell halten
* alte Backups nicht öffentlich im Webverzeichnis speichern

### SSL-Zertifikat verwenden

Für Webseiten solltest du HTTPS aktivieren.

Ein SSL-Zertifikat sorgt dafür, dass die Verbindung zwischen Besucher und Webseite verschlüsselt wird.

Für viele Webserver kann Let's Encrypt verwendet werden.

Certbot installieren:

`apt install certbot`

Für Nginx:

`apt install python3-certbot-nginx`

Für Apache:

`apt install python3-certbot-apache`

### Backups erstellen

Sicherheit bedeutet nicht nur Schutz vor Angriffen. Auch Datenverlust gehört dazu.

Erstelle regelmäßig Backups.

Backups helfen bei:

* versehentlichem Löschen
* fehlerhaften Updates
* defekter Konfiguration
* kompromittierten Servern
* beschädigten Datenbanken
* fehlgeschlagenen Installationen

### Was sollte gesichert werden?

Sichere je nach Nutzung:

* Webseiten-Dateien
* Datenbanken
* Konfigurationsdateien
* Anwendungsdaten
* Docker-Volumes
* Maildaten
* wichtige Skripte
* SSL-Zertifikate
* eigene Projekte

Speichere Backups nicht nur auf demselben Server. Wenn der Server beschädigt oder kompromittiert wird, können lokale Backups ebenfalls betroffen sein.

### Logs prüfen

Logs helfen dir, Probleme und Angriffe zu erkennen.

Wichtige Linux-Logs:

| Datei oder Befehl   | Zweck                      |
| ------------------- | -------------------------- |
| `/var/log/auth.log` | SSH- und Loginversuche     |
| `/var/log/syslog`   | allgemeine Systemmeldungen |
| `journalctl`        | Systemdienste und Fehler   |
| `/var/log/nginx/`   | Nginx-Logs                 |
| `/var/log/apache2/` | Apache-Logs                |

Beispiele:

`journalctl -xe`

`journalctl -u ssh`

`tail -f /var/log/auth.log`

Bei Windows findest du wichtige Ereignisse in der Ereignisanzeige.

### Offene Ports prüfen

Prüfe regelmäßig, welche Ports erreichbar sind.

Unter Linux:

`ss -tulpen`

Achte darauf, dass nur notwendige Dienste erreichbar sind.

Typische unnötige Risiken sind:

* Datenbankport öffentlich offen
* Adminpanel ohne Schutz erreichbar
* Testserver öffentlich erreichbar
* alte Dienste laufen weiter
* FTP statt SFTP verwendet

### Verdächtige Aktivitäten erkennen

Anzeichen für einen kompromittierten Server können sein:

* ungewöhnlich hohe CPU-Auslastung
* unbekannte Prozesse
* viele fehlgeschlagene Logins
* unbekannte Benutzerkonten
* geänderte Systemdateien
* ausgehender Spam
* Beschwerden über Missbrauch
* Server wird plötzlich langsam
* unbekannte Dienste laufen
* Firewall-Regeln wurden verändert

Wenn du solche Anzeichen bemerkst, solltest du schnell reagieren.

### Was tun bei Verdacht auf Kompromittierung?

Wenn du glaubst, dass dein Server kompromittiert wurde:

1. Trenne unnötige Dienste vom Internet.
2. Sichere wichtige Logs.
3. Ändere Passwörter nicht nur auf dem Server, sondern auch bei betroffenen Diensten.
4. Prüfe Benutzerkonten und SSH-Keys.
5. Prüfe laufende Prozesse.
6. Prüfe Cronjobs und Systemdienste.
7. Sichere wichtige Daten.
8. Setze den Server im Zweifel sauber neu auf.
9. Spiele nur saubere Backups wieder ein.

**Wichtig:** Wenn ein Server kompromittiert wurde, reicht es oft nicht, nur einzelne Dateien zu löschen. Ein vollständiges Neuaufsetzen ist häufig die sicherste Lösung.

### Sicherheitscheckliste

Prüfe nach der Einrichtung deines KVM-Servers mindestens folgende Punkte:

* Betriebssystem ist aktuell
* sichere Passwörter gesetzt
* SSH-Key eingerichtet
* unnötige Dienste deaktiviert
* Firewall aktiviert
* nur benötigte Ports geöffnet
* Root-Login geprüft
* Fail2Ban installiert
* Backups eingerichtet
* wichtige Logs bekannt
* Webanwendungen aktuell
* Datenbanken nicht unnötig öffentlich erreichbar
* RDP oder SSH abgesichert
* Zugangsdaten sicher gespeichert

### Support kontaktieren

Wenn du Hilfe bei einem Sicherheitsproblem benötigst, kontaktiere den Support.

Gib dabei möglichst genau an:

* Betriebssystem
* betroffene IP-Adresse
* betroffener Dienst
* genaue Fehlermeldung
* Zeitpunkt des Problems
* welche Änderungen zuletzt vorgenommen wurden
* ob du noch Zugriff per SSH, RDP oder VNC hast
* welche Maßnahmen du bereits versucht hast

**Sicherheit:** Sende niemals Passwörter, private SSH-Keys, API-Tokens oder andere geheime Zugangsdaten an den Support.
