Ereignishorizont
CyberPanel

CyberPanel

CyberPanel

Update 878787: Totalversagen einen Hosting-Anbieters

Ich hätte niemals gedacht, dass einer meiner Hosting-Anbieter, die ich für meine VPS’en verwende, selbst einmal erfolgreiches Ziel einer Hacker-Attacke werden würde. Aber so ist es geschehen: Am 04.01.2025 war plötzlich diese Webseite weg. Der ganze VPS, auf dem CyberPanel lief, war nicht mehr erreichbar. Nach einer Zeit stellte sich heraus, dass der Angreifer den Proxmox-Server angegriffen hatte und das komplette Cluster-System mit allen virtuellen Festplatten und sämtlichen VPS’en inklusive der Snapshot-Backups zerstört hatte. Anfangs hieß es, man versuche, die Festplatten wiederherzustellen. Allerdings war der Vorfall da schon bei der Polizei und Bundesamt für Sicherheit in der Informationstechnik (BSI), der Bundesnetzagentur (BNetzA) sowie die Landesdatenschutzbehörde informiert, und die haben es natürlich untersagt, eine Datenrettung zu versuchen, da man damit Spuren verwischt. Daraufhin hat die Kriminalpolizei die physischen Festplatten beschlagnahmt und einer Abteilung für Forensik übergeben. Dort werden sie dann auch die nächsten zwei Jahre verbleiben, und die Wahrscheinlichkeit, dass man danach noch Daten wiederherstellen kann, soll sehr gering sein.

Mal abgesehen davon, dass anscheinend doch recht fahrlässig mit ihrem Proxmox-System umgegangen wurde, da sie Remote-Zugriff auf das Herzstück überhaupt zugelassen haben und, wie es scheint, war auch noch die Firewall zu dem Zeitpunkt inaktiv. Aber was wirklich der Oberknaller war: Sie hatten null externe Backups oder Offline-Backups. Null! Alle Daten weg, komplett. Für meine drei VPS’en, die ich dort betrieben hatte, habe ich nichts wiederbekommen. An dieser Webseite arbeite ich zum Beispiel seit Jahren. Viel Arbeit und gesammeltes Wissen steckt da drin. Hätte ich blind auf den Anbieter vertraut, wäre alles weg gewesen, für immer.

Ich hatte damals meine Webseite von einem teuren Anbieter zu einem günstigeren migriert, der jetzt auch ausgefallen ist. Auch wenn sich das im Nachhinein als Fehler erwiesen hat, habe ich doch viel dabei gelernt, was mich jetzt gerettet hat. Ich wusste, wie ich mit CyberPanel und meiner Webseite umziehen kann und wie ich dafür eine externe Datensicherung betreiben muss. Dieses Wissen und die Erfahrungen aus der Feuerprobe, auf die ich anschließend eingehen werde, haben mich jetzt auch gerettet. Ich hatte ein grundlegendes manuelles Backup des Webseitenverzeichnisses von Anfang November 2024 und ein automatisch erstelltes UpdraftPlus Cloud Backup vom 29.12.2020. Und zum Glück hatte ich schnell noch eine offline Webseiten-Sicherung der Seite in meinem Browser machen können, an der ich die letzten Tage gearbeitet hatte, sodass ich nicht alles neu erfinden musste, sondern es zurückkopieren und die paar Bilder nur nochmals hochladen musste.

Man sieht, wenn du dich auf andere verlässt, ist die Wahrscheinlichkeit größer als Null, dass du es bereust. Verlass dich nicht auf lokale Backups, verteile die Backups auf andere unabhängige Systeme. Dann kannst du immer beruhigt schlafen. Nach diesem Vorfall habe ich diese Backup- und Recovery-Anleitung nochmal überarbeitet. Ich hoffe, es wird dem einen oder anderen mal größeres Leid ersparen können.

Bild: Annoucment – Späte Erkenntnis

Die Feuerprobe – Ein Cyberangriff auf meinen CyberPanel-Server

Nachdem ich am 28.10.2024 eine Abuse-Meldung von meinem Hosting-Anbieter erhalten hatte, begannen ein paar aufregende Tage. In der Software meines selbst gehosteten Webhosting-Panels CyberPanel (GitHub) fand ein Sicherheitsforscher eine RCE-Sicherheitslücke (Remote Code Execution). Leider veröffentlichte er mit seinem Blog vom 27.10.2024 auch gleich einen Exploit. Es dauerte nicht lange, bis tausende von Webhosting-Servern und noch viel mehr Webseiten infiziert waren. Crypto-Mining-Malware, Ransomware, die Dateien als .psaux, .encryp, .locked etc. verschlüsselte, oder den Server übernahm bzw. unbrauchbar machte.

Bild: Hinweismeldung eines mit Ransomware betroffenen Servers.
Die Lösegeldforderungen wurden übrigens auch in Bitcoin beglichen.

Die Not war groß, und die Vorkehrungen für meine Webseite erwiesen sich als eher dürftig. Wer rechnet schon damit, dass eine kleine private Webseite Ziel eines großen Angriffs wird? Tja, wie auch immer, ich hatte Glück im Unglück. Ich hatte verschiedene Backups und wusste, wie ich sie wiederherstellen konnte, da ich ein paar Wochen vorher von einem Hosting-Anbieter zum anderen migriert war. Trotzdem hat es eine Weile gedauert und viele Nerven gekostet. Dabei habe ich viel gelernt und erkannt, dass man jeden Virtual Private Server maximal absichern muss. In diesem Artikel habe ich lose ein paar Punkte zusammengestellt. Vielleicht nützt es ja dem einen oder anderen.

1. VPS einrichten und härten

Dieses Tutorial verwendet einen Ubuntu 22.04 LTS Server. Einen Leitfaden zum Einrichten eines Ubuntu-VPS findet ihr zum Beispiel hier: 7.1 – Allgemein – Einrichten eines Virtual Private Server (VPS). Mindestvoraussetzung ist 2 GB RAM.

Root Login:

ssh root@yourIPaddress

1.1 Grundlagen

Update / Upgrade

apt update && apt upgrade -y

-> Evtl. müsst ihr Enter drücken.

Hinweis: Die ufw (uncomplicated firewall) wird hier nicht installiert, da eine die Firewall (firewalld) später mit CyberPanel kommt.

fail2ban

apt install fail2ban -y 
systemctl enable fail2ban
systemctl start fail2ban
systemctl status fail2ban

-> Zwei Mal mit Enter bestätigen.

Hinweis: Swapfile wird hier nicht installiert, da es später automatisch mit CyberPanel kommt.

1.2 Dedizierten Benutzer anlegen

Für mehr Sicherheit erzeugen wir einen neuen Benutzer, mit dem wir uns zukünftig einloggen. Er bekommt zwar ebenfalls „Root“-Rechte, muss sich aber immer wieder mit seinem Passwort identifizieren. Das bietet mehr Sicherheit, eine bessere Nachvollziehbarkeit und schützt vor menschlichen Fehlern.

adduser cypherpunk

-> Passwort vergeben, die restliche Dateneingabe ist optional.

usermod -aG sudo cypherpunk 

-> Dem Benutzer Root-Rechte zuweisen.

Wichtig: Konfigurationsdatei des OpenSSH Servers bearbeiten.

sudo nano /etc/ssh/sshd_config  

Erweitern mit:

AllowUsers cypherpunk

-> STRG+X -> Y -> Enter

Hinweis: Falls ihr den VPS weiterhin mit dem „root“-User erreichen wollt, müsst ihr, sofern noch nicht vorhanden, auch die Zeile AllowUsers root in die Konfigurationsdatei hinzufügen. Andernfalls wird euch beim Versuch, euch als „root“-User anzumelden, die Fehlermeldung „Permission denied, please try again.“ angezeigt. Nach fünf fehlgeschlagenen Versuchen wird der Zugriff für 10 Minuten komplett gesperrt, da Fail2ban sämtliche Verbindungen blockiert.

Jetzt den VPS herunterfahren, ggf. ein Snapshot machen und alles einmal neu durchstarten.

sudo systemctl poweroff

-> Um ein Backup eures Virtual Private Servers als Snapshot zu erstellen, findet ihr auf der Webseite eures VPS-Hosting-Anbieters sicherlich eine entsprechende Funktion. Dabei wird ein komplettes Abbild (Image) eurer Festplatte bzw. eures VPS erstellt. Dieses könnt ihr jederzeit wiederherstellen, um den Zustand des Servers zu einem früheren Zeitpunkt wiederherzustellen. Anschließend startet ihr den Server über die Webseite neu und meldet euch ab sofort immer mit dem neuen Benutzer an.

ssh cypherpunk@yourIPaddress

2. Cyber Panel installieren und einrichten

2.1 Die Installation von CyberPanel

Hinweis: Um diesem Tutorial zu folgen, sollte der Hostname des Servers nicht der eurer Domain sein. Also nicht yourdomain.xyz. Nennt den Host zum Beispiel wie hier einfach „CyberPanel“.

sudo su - -c "sh <(curl https://cyberpanel.net/install.sh || wget -O - https://cyberpanel.net/install.sh)"

-> Während der Installation: 1+Enter, 1+Enter, 6x Enter

Achtung: Am Ende der Installation wird euch der CyberPanel-Zugang angezeigt:

   ...
   CyberPanel Successfully Installed
   ...
   Visit: https://yourIPaddress:8090
   Panel username: admin
   Panel password: bAJWFpasswordWEjV6
   ...

-> Nach dem Sichern der Daten die Meldung Would you like to restart your server now? [y/N]: mit ENTER bestätigen.
-> sudo systemctl poweroff und einen Snapshot erstellen.

2.2 Das Einrichten von CyberPanel

Nachdem ihr euch im CyberPanel angemeldet habt, seht ihr oben den „Set-up Wizard“. Dieser hilft euch dabei, die erste Webseite einzurichten. Am besten zeigt schon die A- und AAAA-Adresse auf die IP-Adresse des CyberPanel-Servers. Loggt euch dann in CyberPanel ein und folgt diesen Schritten.

1. Falls verfügbar, nutzt den „Set-up Wizard“, der euch oben angezeigt wird. Dieser erleichtert euch das Einrichten der ersten Webseite.
2. Falls dieser nicht mehr angezeigt wird, könnt ihr die Webseite auch manuell einrichten unter MAIN > Websites > Create Website, falls noch nicht geschehen.
3. Einen FTP-Account auf dem neuen Server anlegen unter MAIN > FTP > Create FTP Account. Der Benutzername „yourusername“ wird automatisch zu „admin_yourusername“ umgestellt. Die IP-Adresse ist die eures VPS, der Port ist 21, und als FTP-Client könnt ihr FileZilla verwenden.
4. Richtet ihr CyberPanel neu ein um eine bestehende Version zu migrieren, könnt ihr nach einen Neustart eures CyberPanel unter MAIN > Websites > List Websites > Manage > Change PHP die PHP-Version vorab einstellen. Die Version bekommt ihr aus dem „Website-Zustand-Bericht“, siehe dazu Punkt 3.1 / Leitfaden Punkt 5.

3. Datensicherung und Migration

Bevor wir Daten wiederherstellen oder migrieren können, müssen wir sie erst einmal gesichert haben.

3.1 Datensicherung

Empfohlene Methoden der Datensicherung

Um sicherzustellen, dass eure Webseite im Falle eines Problems schnell wiederhergestellt werden kann, empfehle ich mindestens drei Methoden der Datensicherung:

3.1.1 Snapshots des kompletten VPS

Erstellt regelmäßig Snapshots des gesamten VPS. Diese können manuell durchgeführt werden, insbesondere vor Updates oder größeren Änderungen, und zusätzlich zeitgesteuert erfolgen. Die genaue Vorgehensweise variiert je nach Hosting-Anbieter und ist in der Regel gut dokumentiert. Funktioniert in der Regel sehr gut und zuverlässig. Nützt euch aber nichts wenn ihr auf einen andern VPS migrieren möchtet oder eurer VPS oder Snapshot gelöscht wird, weil euer Hostinganbieter einem Hackerangriff ausgliefert war und keine Backups hat oder die Festplatt zum Wiederherstellen der Daten in der Foresikabteilung der Kriminalpolizei ist.

Regelmäßige Snapshots des gesamten VPS sind eine ausgezeichnete Möglichkeit, den Status eures Servers zu sichern. Diese können sowohl manuell, z. B. vor Updates oder größeren Änderungen, als auch zeitgesteuert erstellt werden. Die genaue Vorgehensweise hängt vom Hosting-Anbieter ab und ist in der Regel gut dokumentiert. Snapshots funktionieren meist zuverlässig und sind eine schnelle Möglichkeit, den Zustand des VPS wiederherzustellen.

Wichtiger Hinweis:
Allerdings nützen euch Snapshots wenig, wenn ihr auf einen anderen VPS migrieren möchtet oder der VPS bzw. der Snapshot gelöscht wird – etwa, weil euer Hosting-Anbieter Opfer eines Hackerangriffs wurde und keine Backups hat, oder wenn die Festplatte zur Wiederherstellung der Daten im Rahmen einer kriminaltechnischen Untersuchung sich in der Forensikabteilung der Polizei befindet. So ist es mir jedenfalls widerfahren.

Deshalb empfehle ich, zusätzlich auf externe Backup-Methoden zurückzugreifen, um eine sicherere Grundlage für eure Daten zu schaffen.

3.1.2 Automatische Backups auf externe Cloud-Laufwerke

Verwendet Plugin-Software wie UpdraftPlus, um zeitgesteuerte Backups eurer WordPress-Webseite zu erstellen und diese in externe Cloud-Speicher wie Google Drive, Dropbox oder OneDrive hochzuladen. Detaillierte Anleitungen für die Einrichtung findet ihr bei den jeweiligen Plugin-Anbietern. Automatische Backups sichern alle WordPress-relevanten Daten wie die Datenbank, Themes und Plugins. Diese Methode ist sehr zuverlässig und bietet eine bequeme Möglichkeit, die wichtigsten Daten zu schützen.

Wichtig: Automatische Sicherungsmethoden decken jedoch nicht alle Daten ab. Manuelle Eintragungen im Verzeichnis, die über FTP-Uploads oder das CyberPanel-Menu vorgenommen wurden, sind in der Regel nicht Teil dieser Backups. Diese Dateien bleiben ungesichert, was zu Problemen führen kann, falls sie verloren gehen oder bei einer Migration benötigt werden.

Empfehlung: Um auch diese manuell hochgeladenen Dateien zu sichern, empfiehlt sich die nächste Methode: das manuelle Backup. Diese Methode stellt sicher, dass alle Inhalte – einschließlich benutzerdefinierter Dateien, die nicht automatisch gesichert werden – ebenfalls extern gespeichert werden.

3.1.3 Manuelles Sichern von Daten, Datenbank und Website-Zustandsbericht

Das manuelle Backup ist besonders nützlich, wenn ihr unabhängig von automatisierten Tools Sicherungen erstellen möchtet. Es eignet sich hervorragend, um die Webseite bei Bedarf zu einem anderen Hostinganbieter oder auf einen neuen VPS zu migrieren. Hier ist ein kurzer Leitfaden:

1. Ordner erstellen
Erstellt auf eurem lokalen Rechner einen Ordner mit dem Namen im Format YYMMDD (z. B. 250111 für den 11. Januar 2025).

2. Website-Dateien sichern

-> Navigiert im CyberPanel-Webserver zu MAIN > Websites > List Websites > yourdomain.xyz > File Manager.
-> Komprimiert den Ordner public_html zu einer .tar.gz-Datei.
-> Ladet die Datei public_html.tar.gz herunter und speichert sie im zuvor erstellten Ordner.

3. MySQL-Datenbank exportieren

-> Öffnet phpMyAdmin im CyberPanel unter MAIN > Database > PHPMYAdmin.
-> Wählt in der linken Spalte die Datenbank eurer Webseite aus (z. B. your_databasename).
-> Exportiert die Datenbank mit den Einstellungen Schnell und SQL.
-> Speichert die Datei your_databasename.sql ebenfalls im Backup-Ordner.

4. Website-Zustandsbericht speichern

-> Öffnet WordPress und navigiert zu Werkzeug > Website-Zustand > Bericht.
-> Kopiert den „Website-Zustandsbericht“ in die Zwischenablage.
-> Erstellt im Backup-Ordner eine Textdatei und fügt den Bericht dort ein. Speichert die Datei, um wichtige Informationen wie die PHP-Version, verwendete Plugins und andere Details aufzubewahren.

Wichtiger Hinweis: Datenbank vor der Sicherung bereinigen

Bevor ihr die Datenbank exportiert, solltet ihr diese bereinigen, um mögliche Komplikationen beim späteren Import zu vermeiden. Besonders bei älteren Webseiten, die viele Updates und Upgrades durchlaufen haben, können sich Datenmüll, unzählige Revisionen und defekte Verknüpfungen angesammelt haben. Diese können Konflikte beim Import verursachen. Schritte zur Bereinigung:

1. Plugins zur Bereinigung nutzen:

-> Verwendet ein Plugin wie WP-Sweep, WP Optimize oder Advanced Database Cleaner, um die Datenbank von unnötigen Einträgen zu befreien.
-> Das spart nicht nur Speicherplatz, sondern reduziert auch die Wahrscheinlichkeit von Konflikten.

2. Werkzeug in phpMyAdmin:

-> In phpMyAdmin steht ein zusätzliches Bereinigungswerkzeug zur Verfügung. Dazu die Datenbank anwählen, nach unten scrollen, „Alle auswählen“ und dann im Dropdown-Menü „Hilfsmittel > Tabelle reparieren“ auswählen. Danach das Gleiche mit „Hilfsmittel > Tabelle optimieren“ wiederholen. Dieses allein reicht jedoch oft nicht aus, daher empfiehlt sich die Kombination mit einem der oben genannten Plugins.

Tipp: Zwischendurch Daten in WordPress-Format extern sichern. Falls ihr tagesaktuelle Formatierungen und Inhalte einzelner Seiten sichern möchtet, könnt ihr das direkt im WordPress Block Editor tun:

1. Öffnet die gewünschte Seite im Block Editor.
2. Schaltet oben rechts auf den Code-Editor um (Editor > Code Editor).
3. Markiert den gesamten Quellcode der Seite und kopiert ihn in die Zwischenablage.
4. Speichert den Code als einfache Textdatei auf eurem Rechner.

Diese Methode ist besonders nützlich, wenn ihr kleinere, aber wichtige Änderungen dokumentieren möchtet oder sicherstellen wollt, dass keine Arbeit verloren geht.

3.2 Datenwiederherstellung / Datenmigration

3.2.1 Daten übertragen

Die Datenwiederherstellung eines Snapshots beim VPS-Hosting-Anbieter ist relativ einfach und wird von den meisten Anbietern gut dokumentiert. Auch die Wiederherstellung mithilfe von UpdraftPlus ist gut beschrieben. Das manuelle Migrieren der Datensicherung und der Datenbank jedoch erfordert einige zusätzliche Schritte, die man kennen muss. Hier ist eine Anleitung, wie man Daten aus dem Backup-Ordner (Sicherungsmethode Kapitel 3.1.3) auf einem neu eingerichteten Server wiederherstellt:

1. Dateien hochladen und entpacken

Mit FileZilla die Datei public_html.tar.gz in das Verzeichnis /home/yourdomain.xyz auf dem neuen Server hochladen. Loggt euch in das CyberPanel ein und navigiert zum Verzeichnis /home/yourdomain.xyz. Klickt auf die „Extract“-Schaltfläche, um die Datei in das Verzeichnis public_html zu entpacken.

2. Datenbank hochladen

Ladet die Datenbank-Datei your_databasename.sql ebenfalls mit FileZilla in das Verzeichnis /home/yourdomain.xyz/public_html hoch.

3.2.2 Daten migrieren

1. Eine leere Datenbank mit Database > Create Database erstellen:

Enter -> databasename, username and password
databasename: your_databasename
username: your_username
password: …

2. Auf der Befehlszeile (CLI) Server mit „root“ einloggen
3. Folgenden Befehl zum Import der Datenbank eingeben:
mysql -u your_username -p your_databasename < /home/yourdomain.xyz/public_html/your_databasename.sql
Hinweis: Das Passwort ist das der neuen, leeren Datenbank, die zuvor erstellt wurde (nicht der alten Datenbank).

3.2.3 Datenbank-Verknüpfung einstellen

1. Auf dem CyberPanel im File Manager der Seite die Datei public_html/wp-config.php öffnen.
2. Unter DatabaseName, UserName und Passwort die neuen Werte einstellen und den Host auf localhost prüfen.

Die verwendete PHP-Version aus dem „Website-Zustandsbericht“ der Datensicherung prüfen und ggf. unter MAIN > Websites > New Websites > Manage > Change PHP einstellen.

3.2.4 Abschließende Schritte

1. IP-Weiterleitung bei neuem Server – Vergesst nicht, bei einem neuen Server mit einer anderen IP-Adresse auch die IP-Weiterleitung anzupassen. Loggt euch bei eurem Domainanbieter ein und ändert im DNS-Bereich den A- und AAAA-Eintrag auf die neue IP-Adresse des VPS mit CyberPanel. Anschließend könnt ihr die Änderungen überprüfen, z. B. mit Tools wie nslookup.io.

Hinweis zur HTTPS-Seite bei IP-Änderung: Sollte eure HTTPS-Seite nach der Umstellung nicht sofort erreichbar sein oder einen Fehler anzeigen, habt etwas Geduld. Das Zertifikatsmanagement kann einige Zeit in Anspruch nehmen, insbesondere wenn euer Server auf eine neue IP-Adresse umzieht, dass kann auch mal schnelle Stunden dauern.

2. VPS neu starten – Startet den VPS nach allen Anpassungen einmal neu, indem ihr den folgenden Befehl verwendet: sudo systemctl reboot

3. Funktionstest mit einer Testdatei – Normalerweise solltet ihr eure Wiederhergestellte Seite jetzt sehen. Falls nicht, könnte ihr den Server testen, in dem ihr im Verzeichnis ./public_html/ eine einfache Testdatei anlegen, z. B. neu.txt. Diese Datei sollte sich dann im Browser mit der URL yourdomain.xyz/neu.txt aufrufen lassen.

4. TLS/SSL-Zertifikate überprüfen – Solltet ihr noch TLS/SSL-Fehlermeldungen erhalten, erstellt in CyberPanel ein neues Zertifikat:

-> Navigiert zu MAIN > SSL > Manage SSL > Issue SSL und lasst das Zertifikat ausstellen.

5. UpdraftPlus-Backups prüfen
Überprüft, ob andere Backupdienste wie z. B. UpdraftPlus eine aktuellere Sicherung vorliegen haben. Dazu öffnet ihr das UpdraftPlus-Plugin und geht zu Bestehende Sicherungen > Remote-Speicher erneut einlesen. Falls in eurem persönlichen Cloudspeicher eine neue Version gefunden wird, könnt ihr diese direkt hochladen und wiederherstellen.

6. Datensicherung durch UpdraftPlus und manuelle Maßnahmen – Da selbst UpdraftPlus nur alle paar Tage ein Backup erstellt, können im Falle eines Datenverlustes immer noch einige Stunden oder Tage fehlen. In solchen Fällen bleibt nur zu hoffen, dass ihr zusätzlich manuelle Sicherungen vorgenommen habt. Wie in Kapitel 3.1 „Datensicherung“ beschrieben, kopiere ich mir regelmäßig den Quellcode einer Seite im WordPress-Block-Editor und speichere ihn in einer einfachen Textdatei. Das mache ich vor allem dann, wenn ich eine neue Seite erstellt habe, in die ich viel Arbeit investiert habe, oder bevor ich größere Änderungen vornehme. Sicher ist sicher – man weiß ja nie, was passieren kann.

7. Offline-Kopien als letzte Rettung – Was mir ebenfalls schon einmal geholfen hat, war eine offline gespeicherte Kopie einer Seite. Als ich bemerkte, dass mein Hosting-Anbieter Mist gebaut hatte und meine Webseite durch ein Problem mit CyberPanel verloren gegangen war, hatte ich zum Glück die zuletzt bearbeitete Seite noch in meinem Browser geöffnet. So konnte ich sie schnell offline speichern. Zwar müssen Objekte wie Bilder und Videos sowie spezifische Formatierungen in solchen Fällen manuell wiederhergestellt werden, aber immerhin hatte ich die mühevoll erstellten Texte parat und konnte sie per Copy-and-Paste wieder einfügen. Fazit: Es ist durchaus sinnvoll, seine Seiten hin und wieder offline zu speichern, um im Notfall darauf zurückgreifen zu können.

Hinweis zu UpdraftPlus: UpdraftPlus kopiert die aktuellen Daten in Verzeichnisse die es mit „-old“ benennt. Die werden nach der Wiederherstellung nicht automatisch gelöscht und man hat über das WordPress Interface auch keine Möglichkeit die Verzeichnisse zu löschen. Eine einfache Möglichkeit besteht darin das in CyberPanel über MAIN > Websites > List Websites > yourdomain.xyz > File Manager zu tun. Die „-old“ Verzeichnisse findet ihr unter: /home/yourdomain.xyz/public_html/wp-content/updraft/. Die sollte ihr löschen.

Hinweis zu UpdraftPlus:
UpdraftPlus legt bei der Wiederherstellung eurer Daten Kopien der aktuellen Inhalte in Verzeichnissen mit der Endung „-old“ ab. Diese Verzeichnisse werden nach der Wiederherstellung jedoch nicht automatisch gelöscht. Über das WordPress-Interface gibt es leider keine Möglichkeit, diese Verzeichnisse zu entfernen.

Eine einfache Methode, die „-old“-Verzeichnisse zu löschen, ist die Nutzung von CyberPanel. Dafür geht ihr wie folgt vor:

-> Navigiert zu MAIN > Websites > List Websites > yourdomain.xyz > File Manager.

-> Dort findet ihr die Verzeichnisse unter: /home/yourdomain.xyz/public_html/wp-content/updraft/

Diese Verzeichnisse könnt ihr sicher löschen, um Speicherplatz freizugeben.

4. Optionen für ein erweitertes Härten

Die nachfolgenden Methoden zur weiteren Stärkung der Sicherheit sind relevant und gut. Aber allzu oft passieren dabei Fehler und man sperrt sich selber aus. Mach als erstes ein Snapshot eures VPS, damit immer wieder zurück könnt. Dann geht alles sehr langsam Schritt für Schritt durch und testet immer den neuen Zugang, bevor ihr etwas deaktiviert. Denk auch daran, dass CyberPanel selbst ein Firewall mitbringt, welche ihr über das CyberPanel konfigurieren könnte. So müsst ihr zum Beispiel dort den individuellen Port für den SSH-Zugang freigeben oder eben schließen.

4.1 SSH Key verwenden

Die Verwendung von SSH-Schlüsselpaare klingt erstmal kompliziert und ist etwas verwirrend, aber wenn man es erstmal verstanden hat, ist es recht verständlich. Ich lasse es mal ChatGPT erklären:

Ein SSH-Schlüsselpaar ist eine Art von Sicherheitswerkzeug, das zur sicheren Anmeldung auf einem Computer oder Server verwendet wird. Stell es dir als ein Schloss und einen passenden Schlüssel vor, die zusammen funktionieren, um eine Tür zu öffnen – nur hier geht es um digitale Sicherheit.

Hier sind die beiden Teile des SSH-Schlüsselpaares:

1. Privater Schlüssel (Private Key): Dieser ist wie dein persönlicher, geheimer Schlüssel. Du solltest ihn niemals mit jemandem teilen. Er bleibt immer sicher auf deinem eigenen Computer.

2. Öffentlicher Schlüssel (Public Key): Dieser ist wie das Schloss, das du auf den Server montierst. Er kann von anderen Leuten gesehen werden, weil es nichts ausmacht, wenn er öffentlich bekannt ist. Der öffentliche Schlüssel wird auf den Server kopiert, auf den du dich einloggen willst.

Wie funktioniert das?

1. Wenn du dich auf einem Server anmelden möchtest, prüft der Server deinen öffentlichen Schlüssel.
2. Dein Computer (mit dem privaten Schlüssel) "spricht" mit dem Server, und der Server stellt sicher, dass der private Schlüssel zu dem öffentlichen Schlüssel passt.
3. Wenn sie zusammenpassen, wirst du angemeldet.

Das Besondere ist, dass dieses Verfahren sicher ist, weil nur derjenige, der den passenden privaten Schlüssel hat, sich anmelden kann. Da der private Schlüssel geheim bleibt und niemals gesendet wird, ist die Wahrscheinlichkeit eines Hackangriffs viel geringer als bei der Verwendung eines Passworts.

Ein Schlüsselpaar könnt ihr ganz einfach auf eurem Rechner selbst generieren. Öffnet dazu euer Terminal, als würdet ihr euch einloggen, und generiert dann mit folgendem Befehl ein Schlüsselpaar:

ssh-keygen

Als erstes werdet ihr gefragt, wo ihr das Schlüsselpaar ablegen möchtet. Wenn ihr einfach ENTER drückt, wird der in Klammern vorgeschlagene Pfad und Dateiname übernommen. Anschließend erscheint die Aufforderung „Enter passphrase“. Hier könnt ihr den Schlüssel zusätzlich verschlüsseln. Diese Passphrase ist das Passwort zum Entschlüsseln des privaten Schlüssels. Meldet ihr euch beim Remote-Server an, muss der private Schlüssel mit der Passphrase entschlüsselt werden. Ihr benötigt dann jedoch nicht mehr das Passwort für den Benutzer, um euch anzumelden. Die Passphrase ist nicht zwingend erforderlich, bietet jedoch zusätzliche Sicherheit. Achtet darauf, die Schlüsseldatei und die Passphrase nicht zu verlieren. Nachfolgend findet ihr ein Bild zur Generierung eines SSH-Schlüsselpaares auf einem Windows 11 Rechner.

Bild: Generierung eines SSH-Schlüsselpaares

Ed25519 ist ein moderner asymmetrischer Verschlüsselungsalgorithmus. Der private Schlüssel id_ed25519 und der öffentliche Schlüssel id_ed25519.pub wurden auf dem Rechner in dem Pfad C:\User\User\.ssh abgelegt. Es sind zwei Dateien, die ihr mit einem einfache Textreader wie Notepad öffnen und lesen könnt. Alternativ könnt ihr den Befehl cat id_ed25519.pub verwenden, dann wird euch im Terminal der Schlüssel angezeigt. Die Datei know_hosts ist eine Datei die euer Rechner anlegt um private Schlüssel von anderen Rechnern zu speichern. Sie dient nur um die Authentizität des anderen Rechners zu verifizieren.

Kurzer Einschub zur Info: Installiert ihr euren Server also mal neu, hat er einen neues Schlüsselpaar generiert und ihr bekommt folgende Warnmeldung.

Bild: Warnmeldung „man-in-the-middle attack“

In diesem Fall könnt ihr beruhigt sein, da ihr jetzt ja wisst, wieso die Meldung kommt, der Schlüssel hat sich mit dem neu Aufsetzen geändert. Um die zu beheben müsst ihr nur den Schlüssel aus der know_hosts Datei löschen, dann legt der Rechner beim nächsten Login den neuen Schlüssel vom Server wieder in der Datei ab. Er zeigt euch mit der Meldung auch an wo die Datei liegt. In diesem Fall im Ordnerpfad: C:\Users\axels\.ssh.

Weiter geht.. Jetzt könnt ihr den Inhalt des öffentlichen Schlüssels id_ed25519.pub lesen, markieren und in die Zwischenablage kopieren. Dann den Schlüssel in der Befehlszeile eures CyberPanel-Server in die Datei authorized_keys einfügen:

mkdir ~/.ssh
nano ~/.ssh/authorized_keys 

-> STRG+X -> Y -> ENTER.

Jetzt könnt ihr den Schlüssel testen, in dem ihr euch einmal mit dem Befehl exit ausloggt und dann neu anmeldet. Entweder werdet ihr wie Zauberhand eingeloggt, oder wenn ihr ein Passwortschutz für den Schlüssel vergebe habt, werdet ihr nach dem Passwort zum Entschlüsseln gefragt und dann eingeloggt.

Wichtig: Eure Schlüssel müsst ihr beim root- und beim cypherpunk-User hinterlegen. Loggt euch dafür bei beiden einmal ein.

Hinweis: Wenn ihr bei der Login-Abfrage mit eurem verschlüsselten Schlüssel einfach ENTER drückt, erscheint als zweite Option die Passwortabfrage. Probiert es aus!

Hinweis: Eure hinzugefügten SSH-Keys könnte ihr jetzt auch im CyberPanel sehen. Unter SERVER > Security > Secure SSH > SSH Keys.

4.2 Passwort Login deaktivieren

Wenn ihr sicher Zugang mit eurem SSH-Schlüssel habt, könnt ihr den Login per Passwort deaktivieren. Bevor ihr dass tut, richtet am besten einen zweiten Rechner ein, mit dem ihr Notfalls Zugang bekommt. Alternativ könnt ihr den Private Key id_rsa (bei Windows) auch selbst sichern. Der öffentliche Schlüssel ist nicht kritisch, der private Schlüssel hingegen schon.

Um den Login per Passwort zu deaktivieren:

sudo nano /etc/ssh/sshd_config

PasswordAuthentication auf no setzten:

PasswordAuthentication no

-> STRG+X -> Y -> ENTER

Den SSH-Server einmal neu starten:

sudo systemctl restart ssh

-> Loggt euch jetzt neu ein und drückt die SSH-Key Abfrage mit ENTER weg, dann sollte ihr keine Passwortabfrage mehr sehen. Das gilt jetzt für beide Benutzer.

4.3 Fremde SSH-Schlüssel deaktivieren

Im .ssh-Verzeichnis des Root-Users befindet sich ein privater und ein öffentlicher Schlüssel mit dem Namen cyberpanel. Ich konnte ihren Nutzen für mich nicht identifizieren und habe sie daher deaktiviert.

nano ~/.ssh/cyberpanel
nano ~/.ssh/cyberpanel.pub

-> Jeweils ein „NO_“ am Anfang des Schlüssels setzten. Damit werde die Schlüssel ungütig.

4.4 Login per Root-User deaktivieren

Da der root-User an bekanntes Angriffsziel ist, kann man den Login dafür deaktivieren. Ihr habt zwei Optionen. Einmal das deaktivieren über die CyberPanel Firewall unter SERVER > Security > Secure SSH > Basic > Permit Root Login. Und zweites direkt über die Konsole:

sudo nano /etc/ssh/sshd_config
PermitRootLogin no
# AllowUsers root

-> STRG+X -> Y -> ENTER

Hinweis: Mit # AllowUsers root ist auch ausgeschlossen, dass man vom CyberPanel den Schalter „Root-User“ umlegen kann. Wenn ihr dies über CyberPanel steuern möchtet, müsst ihr die Auskommentierung # vor AllowUsers root entfernen. Dann gilt nur das yes/no von PermitRootLogin.

Startet jetzt den SSH-Server einmal neu:

sudo systemctl restart ssh

-> Versucht euch mit dem root-User anzumelden -> Das sollte jetzt nicht mehr gehen, nur noch der cypherpunk-User sollte mit SSH-Key funktionieren.

4.5 Portzugang individualisieren (SSH Port 22 -> 1001)

Den neuen SSH Port für den Zugang könnt ihr frei Wählen: Zum Beispiel Port Nummer 1001. Da CyberPanel für euch die Firewall mit der Portverwaltung übernimmt, müsst ihr auch dort den Port dort aktivieren. Geht dazu in CyberPanel auf SERVER > Security > Firewall und legt die Regel fest:

Rule Name = SSHnew / tcp / 0.0.0.0/0 / Port = 1001

-> Ihr solltet in der Liste jetzt die neue Portfreigabe sehen.

Jetzt müsst ihr der sshd_config noch den Port eintragen:

sudo nano /etc/ssh/sshd_config

Fügt eine weitere Zeile mit dem zusätzlichen Port ein:

Port 1001 

-> STRG+X -> Y -> ENTER

sudo systemctl restart ssh

Einmal mit exit ausloggen und neu einloggen, mit einem etwas abgewandelten Befehl:

ssh -p 1001 cypherpunk@yourIPaddress

-> Achte auf das -p 1001. Die Portfreigabe für 1001 gilt jetzt für alle User.

Jetzt den Standard Port 22 in der Firewall des CyberPanel deaktivieren. Geht dazu auf SERVER > Security > Firewall und löscht die Zeile mit dem Port 22.

Jetzt den Port Zugang in der SSH-Config deaktivieren:

sudo nano /etc/ssh/sshd_config

Die Zeile Port 22 mit # auskommentieren:

 # Port 22 

STRG+X -> Y -> ENTER

Dienst neu Starten:

sudo systemctl restart ssh

Einmal neu starten, exit und neu einloggen, um den Zugang zu prüfen, in der Hoffnung, dass ihr euch nicht selbst ausgesperrt habt. 😉

Damit habt ihr dem Server eine große Portion mehr Sicherheit hinzugefügt. 💪 Ihr habt nur ein kleines verstecktes Türchen offen gelassen. Bewahrt den Zugang und das Wissen darüber gut auf.

4.6 Nicht verwendete Ports schließen

Ja nachdem wie ihr euer CyberPanel verwendet benötigt ihr diverse Port geöffnet. Wer aber z.B. die Email Funktion nicht verwendet, kann alle Ports die damit zusammenhängen schließen. Andere Ports sind optional. Ich für meinen Teil verwende nur die Grundfunktionen und das beinhaltet die Ports: 8090, 80, 443, 21 und 22 bzw. 1001. Alle anderen Ports sind geschlossen bzw. aus der Firewall Freigabe gelöscht. Geht dazu auf SERVER > Security > Firewall und löscht alle nicht benötigen Ports.

4.7 CyberPanel deaktivieren

Was nicht da ist, kann auch nicht missbraucht werden. Die Webseiten selbst laufen auch ohne aktives CyberPanel.

Hier ein paar Befehle zum Stoppen, Deaktivieren des Autostarts, Starten, Aktivieren des Autostarts und zum Prüfen des Status. Ihr könnt CyberPanel auch ohne weiteres einfach deaktivieren, wenn ihr es nicht benötigt. Hier ein paar nützliche Befehle. „Stop“ gilt nur für die Session, bei einem Neustart ist CyberPanel wieder aktiv. Mit „disable“ wird CyberPanel dauerhaft deaktiviert. Mit „enable“ könnt ihr es wieder aktivieren. „Status“ zeigt den aktuellen Status.

sudo systemctl stop lscpd
sudo systemctl disable lscpd
sudo systemctl start lscpd
sudo systemctl enable lscpd
sudo systemctl status lscpd

4.8 Neuen Benutzername und Passwort für OpenLiteSpeed

Das OpenLiteSpeed Panel kann durch den direkten Aufruf des Servers und Port 7080 erfolgen: https://yourIPaddress:7080. Um den User und das Passwort zu ändern, logt euch mit dem „root“ User ein und ruft das Skritp ./admpass.sh auf.

cd /usr/local/lsws/admin/misc
./admpass.sh

5. Anhang

5.1 Quellen und weiterführende Informationen

Website: https://www.cyberpanel.net
Forum: https://forums.cyberpanel.net oder https://community.cyberpanel.net/
Wiki: https://docs.cyberpanel.net
Dokumentation: https://cyberpanel.net/docs/
GitHub: https://github.com/usmannasir/cyberpanel

5.2 CyberPanel-Version anzeigen und Upgrade durchführen

CyberPanel-Version und Commit prüfen:

cd /usr/local/CyberCP/
sudo git log -1

Im GitHub-Repository könnt ihr auf neue Versionen und Commits prüfen: https://github.com/usmannasir/cyberpanel

CyberPanel-Upgrade durchführen:

sudo su - -c "sh <(curl https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/preUpgrade.sh || wget -O - https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/preUpgrade.sh)"

-> Starte jetzt den ganze Server einmal neu, damit auch die Firewall wieder aktiviert wird: sudo systemctl reboot

Hinweis: Bekommt ihr beim Upgrade die Fehlermeldung:

 TypeError: canonicalize_version() got an unexpected keyword argument 'strip_trailing_zero'

Dann ein Update der Pip-Pakete durchführen:

sudo pip install packaging==22

Die komplette Fehlermeldung findet ihr unter pastebin.com.

5.3 Ubuntu System Update

sudo su -
apt update && apt upgrade -y
reboot

5.4 fail2ban-Logfiles

# Show simple logfiles
sudo cat /var/log/fail2ban.log
# Show sorted logfiles
sudo awk '($(NF-1) == "Ban"){print $NF}' /var/log/fail2ban.log \
  | sort | uniq -c | sort -n

Weitere Informationen findet ihr hier.

5.5 CyberPanel-Firewall überprüfen

Den Status der CyberPanel-Firewall könnt ihr unter SERVER > Security > Firewall einsehen. Direkt prüfen und die Logs aufrufen könnt ihr sie mit der Befehlszeile:

sudo systemctl status firewalld
sudo journalctl -u firewalld

Die SSH-Port-Einstellung, den Root-Login und die hinterlegten SSH-Schlüssel könnt ihr unter SERVER > Security > Secure SSH einsehen bzw. ändern.

Erstellt mit Liebe 🧡 Seit 858407 / 878787

– Lightning ⚡ (er)leben –

Value 4 Value
axelhamburch@ereignishorizont.xyz