Einführung
Ich erinnere mich noch an meine ersten Server. Ich habe fast nichts für ihre Sicherheit getan, weil ich nicht wusste, dass jemand mit bösen Absichten Zugriff darauf erlangen könnte. Und ihr könnt euch denken, wie das ausgegangen ist. Zum Glück hatte ich Backups und konnte sie problemlos wiederherstellen. Aber es passierte wieder. Deshalb habe ich diesmal recherchiert, meine Hausaufgaben gemacht und meine Server sicherer gemacht. Ich weiß, dass es keinen absolut sicheren Server gibt, aber ich zeige euch, wie ihr euren Server sichert und was ihr tun könnt, wenn er ausfällt.
Wir beginnen mit der grundlegenden Einrichtung. Sie erfahren, was beim Erstellen eines neuen Servers zu tun ist. Anschließend zeigen wir Ihnen, wie Sie ihn durch regelmäßige Überprüfungen warten. Zum Schluss lernen Sie, was zu tun ist, wenn Ihr Server ausfällt. Dieses Tutorial macht Sie nicht zum professionellen Serveradministrator, da dies viel Arbeit und eine verantwortungsvolle Aufgabe ist. Aber zumindest können Sie so Ihre Hobbyprojekte schützen.
Voraussetzungen
- 1 Server (z. B. mit Hetzner)
Schritt 1 – Ersteinrichtung und grundlegende Sicherheit
Nachdem Sie Ihren Server erstellt haben, folgen Sie den Schritten 1 bis 5 des Tutorials “Ersteinrichtung des Servers mit Ubuntu”. Dort wird erklärt, wie Sie:
- Erstellen Sie einen neuen Benutzer mit sudo-Berechtigungen.
- Fügen Sie einen SSH-Schlüssel hinzu
Nachdem Sie die ersten 5 Schritte des verlinkten Tutorials abgeschlossen und sich mit dem neuen sudo-Benutzer verbunden haben, können Sie mit den folgenden Schritten fortfahren.
Systemaktualisierung
Als Erstes sollten Sie nach Updates suchen, da veraltete Software Sicherheitslücken aufweisen kann, die leicht ausgenutzt werden können. Es ist einfacher als Sie denken; führen Sie einfach diese beiden Befehle aus:
sudo apt update
sudo apt upgradeGanz einfach, oder? Wir haben nun sichergestellt, dass wir die neuesten Versionen verwenden.
Sicherer SSH-Zugriff
Wenn jemand Ihren Server angreift, wird er wahrscheinlich als Erstes versuchen, per SSH darauf zuzugreifen. Dies geschieht häufig mit Bots und verschiedenen Methoden. Daher ist die Sicherung des SSH-Zugriffs äußerst wichtig.
Bearbeiten Sie die Konfigurationsdatei:
sudo nano /etc/ssh/sshd_config
- Root-Zugriff deaktivieren
Suchen Sie die Zeile “PermitRootLogin” und ändern Sie sie in “no”.
- Passworteingabe deaktivieren
Wenn Sie wie oben vorgeschlagen einen SSH-Schlüssel hinzugefügt haben, können Sie die Passworteingabe deaktivieren.
- “Suchen Sie nach ”PasswordAuthentication“ und stellen Sie es auf ”Nein“.
- “Suchen Sie nach ”PubkeyAuthentication“ und stellen Sie es auf ”Ja“ ein.
- Ändern Sie den Standard-SSH-Port
Allein durch diese Änderung können wir die meisten automatisierten Bot-Angriffe eliminieren, da es sich bei den meisten um gefälschte Bots handelt, die versuchen, über Port 22 auf SSH zuzugreifen.
Suchen Sie die Zeile “#Port 22” und ändern Sie sie beispielsweise in “Port 2222” (oder ändern Sie 2222 in eine beliebige andere Zahl).
Speichern Sie die Änderungen und prüfen Sie, ob der Port erfolgreich geändert wurde:
sudo systemctl restart ssh.service
sudo systemctl status sshStellen Sie sicher, dass dort „Server listening on :: port 2222“ steht.
Wenn Port 2222 angegeben ist, können Sie folgenden Befehl ausführen, um die Verbindung zum Server zu beenden und zu überprüfen, ob die Verbindung zum neuen Port funktioniert:
ssh -p 2222 holu@<203.0.113.1>
Wenn Sie eine Verbindung zum von Ihnen festgelegten Port herstellen können, können Sie mit dem Tutorial fortfahren.
Firewall konfigurieren
Wir verwenden “ufw” zur Verwaltung von Firewall-Regeln. Es ist benutzerfreundlich gestaltet und verfügt über eine Kommandozeilenschnittstelle. Ufw ist wahrscheinlich bereits auf Ihrem System installiert. Sie können jedoch folgenden Befehl ausführen, um die Installation zu überprüfen:
sudo apt install ufw
Als Nächstes blockieren wir den gesamten eingehenden Netzwerkverkehr, sofern er nicht durch andere Regeln ausdrücklich zugelassen ist. Dies ist unerlässlich, um Ihren Server zu schützen, indem nur explizit freigegebener Datenverkehr zugelassen wird. Führen Sie dazu folgenden Befehl aus:
sudo ufw default deny incoming
Als Nächstes erlauben wir den gesamten ausgehenden Netzwerkverkehr. Dies ist in der Regel sicher und ermöglicht Ihrem Server die uneingeschränkte Kommunikation mit anderen Servern oder Diensten. Führen Sie folgenden Befehl aus:
sudo ufw default allow outgoing
Nun müssen wir unseren SSH-Port für die Verbindung zu unserem Server per SSH freigeben. Ersetzen Sie dazu einfach 2222 durch Ihren SSH-Port, falls Sie einen anderen angegeben haben, und führen Sie folgenden Befehl aus:
sudo ufw allow 2222/tcp
Abschließend müssen wir noch unsere Firewall-Regeln aktivieren:
sudo ufw enable
Fail2Ban
Wir haben unseren SSH-Port geändert und unsere Firewall eingerichtet. Was passiert aber, wenn ein Bot unseren Port findet und trotzdem versucht, per SSH auf unseren Server zuzugreifen? Das wäre ein Brute-Force-Angriff, und wir können unseren Server mit Fail2Ban schützen. Diese Software sperrt IPs, die Anzeichen für böswillige Zugriffsversuche zeigen. Um Fail2Ban zu installieren und zu aktivieren, müssen Sie diese drei Befehle ausführen:
sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2banSie können die Fail2Ban-Einstellungen auch anpassen, indem Sie die Konfigurationsdateien im Ordner „/etc/fail2ban/“ bearbeiten. Ausführlichere Informationen und Empfehlungen finden Sie in der Fail2Ban-Dokumentation.
Super! Sie haben einen großen Schritt getan und verfügen nun über einen besser geschützten Server. Vorerst genügt es, regelmäßig Wartungsarbeiten durchzuführen. Im nächsten Abschnitt erklären wir Ihnen, was dazu nötig ist.
Schritt 2 – Regelmäßige Wartung
- Systemaktualisierung
Zuerst müssen wir prüfen, ob Updates für unser System verfügbar sind. Führen Sie folgenden Befehl aus:
sudo apt update && sudo apt upgrade -y
- Monitorberichte
Sie sollten Ihre Systemprotokolle regelmäßig auf ungewöhnliche Aktivitäten überprüfen. Logwatch kann Ihnen dabei helfen, diesen Vorgang zu automatisieren. Sie können Logwatch mit folgendem Befehl installieren:
sudo apt install logwatch
In diesem Leitfaden finden Sie detailliertere Informationen, erfahren, wie Sie tägliche Berichte einrichten und wie diese Berichte aussehen.
- Überprüfen Sie die Festplattennutzung.
Um sicherzustellen, dass Sie genügend Speicherplatz für Ihren Server haben, überprüfen Sie Ihren verbleibenden Festplattenspeicher mit diesem Befehl:
df -h
- Sichern Sie Ihre Daten.
Sie sollten stets mehrere Backups erstellen, um im Falle eines vollständigen Serverausfalls oder der Nichterreichbarkeit Ihres Servers die Daten wiederherstellen zu können. Glücklicherweise bietet Hetzner eine automatisierte Backup-Lösung für Cloud-Server an, die Sie in der offiziellen Dokumentation finden. Wenn Sie Ihr Backup lieber selbst einrichten möchten, können Sie Tools wie “rsync” oder “Duplicity” verwenden.
- Benutzerkonten prüfen
Vergessen Sie nicht, die Benutzerkonten auf dem Server regelmäßig zu überprüfen. Stellen Sie sicher, dass nur autorisierte Benutzer Zugriff auf Ihren Server haben. Entfernen Sie alle nicht mehr benötigten Konten. Sie können die Benutzerkonten mit folgendem Befehl überprüfen:
sudo nano /etc/passwd
- Auf Rootkits und Malware prüfen
Um Ihren Server schnell zu scannen, können Sie Tools wie “rkhunter” und “chkrootkit” verwenden. Diese Tools helfen Ihnen, mögliche Rootkits, Backdoors und lokale Sicherheitslücken aufzuspüren und sicherzustellen, dass alles in Ordnung ist. Führen Sie die folgenden Befehle aus, um die Installation von rkhunter zu überprüfen:
sudo apt install rkhunter
sudo rkhunter --check- Systemleistungsüberwachung
Abschließend können Sie die Systemleistung schnell überprüfen, um sicherzustellen, dass beim Ausführen der Software keine Ressourcenengpässe auftreten. Es gibt Tools wie «htop», «top» oder «atop». Sie können aber auch einfach diesen Befehl ausführen:
htopSchritt 3 – Weitere Sicherheitstools
- Setzen Sie Einbruchserkennungssysteme ein.
Sie können Tools wie “AIDE” (Advanced Intrusion Detection Environment) verwenden, um Systemänderungen zu überwachen. AIDE erstellt eine Datenbank Ihrer Dateien und Ordner und vergleicht Ihr System mit dieser Datenbank, um die Dateiintegrität sicherzustellen. Weitere Informationen finden Sie im zugehörigen Repository. Zur erstmaligen Verwendung installieren Sie AIDE mit folgendem Befehl:
sudo apt install aide
Starten und generieren Sie die Datenbank mit diesen Befehlen:
sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.dbVergleichen Sie Ihr System mit der Datenbank mithilfe dieses Befehls:
sudo aide --config /etc/aide/aide.conf --check
- Aktivieren Sie die Zwei-Faktor-Authentifizierung (2FA).
Sie können auch die Zwei-Faktor-Authentifizierung (2FA) einrichten, um sich per SSH an Ihrem Server anzumelden. Dies bietet eine zusätzliche Schutzebene und verringert das Risiko unberechtigten Zugriffs. Die Installation erfolgt mit folgendem Befehl:
sudo apt install libpam-google-authenticator
Und führen Sie diesen Befehl aus, um es zu starten:
google-authenticator
- Sichere Webanwendungen
Wenn Sie Webanwendungen auf Ihrem Server betreiben, sollten Sie unbedingt die Best Practices befolgen und diese regelmäßig aktualisieren. Wenn Sie beispielsweise WordPress verwenden, sollten Sie stets die neueste Version nutzen und auch alle Plugins und Themes auf dem aktuellen Stand halten. Zusätzlich empfiehlt sich die Installation eines geeigneten WordPress-Sicherheits-Plugins. Dadurch verringern Sie das Risiko eines unbefugten Zugriffs auf Ihren Server und Ihre Anwendungen.
Schritt 4 – Notfallplan
Dieser Plan kann in großen Organisationen sehr detailliert sein, aber wir halten ihn einfach und praktikabel für kleine Unterhaltungsserver. Deshalb habe ich einen 3-Punkte-Plan für Sie vorbereitet.
- Vorbereitung
Für diesen Abschnitt sollten Sie eine kleine Textdatei oder eine Notiz in Ihrem Texteditor erstellen, die Ihre Serverinformationen enthält. Notieren Sie Informationen wie die Serverarchitektur, die installierte Software, den Speicherort Ihrer Backups und Protokolle sowie Ihre Konfigurationen. Bewahren Sie diese Notiz an einem sicheren Ort auf. Dieses Beispiel kann Ihnen als Ausgangspunkt dienen:
Serverinformationen
| Info | Beschreibung |
|---|---|
| Servername | MyServer01 |
| IP-Adresse | 192.168.1.100 |
| Betriebssystem | Ubuntu 24.04 LTS |
| CPU | 4 vCPUs |
| RAM | 8 GB |
| Lagerung | 100 GB SSD |
| SSH-Port | 2222 |
- Software und Dienste: Nginx 1.18.0, PostgreSQL 13, Django 3.1
- Datensicherung: Doppelte, tägliche Sicherung in /mnt/backup und Remote-Speicherung in AWS S3, Aufbewahrungsfrist 30 Tage
- Nginx-Konfiguration: /etc/nginx/nginx.conf
- PostgreSQL-Konfiguration: /etc/postgresql/13/main/postgresql.conf
- Django-Konfiguration: /home/myuser/myapp/settings.py
- UFW-Konfiguration: /etc/ufw/ufw.conf
- Identifikation
An diesem Punkt müssen Sie prüfen, wo das Problem mit Ihrem Server liegt. Betrifft das Problem oder die Sicherheitslücke Ihre Webanwendung, den Server selbst oder eine der Datenbanken auf Ihrem Server? Wenn Sie sich nicht sicher sind, gehen Sie immer davon aus, dass alles gefährdet ist. Beginnen Sie daher mit der Überprüfung aller Komponenten, angefangen beim Server.
- Verbesserung
In diesem Abschnitt erfahren Sie, wie Sie beschädigte Systeme wiederherstellen. Wenn Sie nicht auf Ihren Server zugreifen können, sollten Sie eine Serversicherung verwenden. Falls eine Ihrer Webanwendungen ausgefallen ist, reicht es möglicherweise aus, die entsprechende Sicherung wiederherzustellen. Stellen Sie sicher, dass alles wiederhergestellt, getestet und wie erwartet funktioniert und dass Sie einen Sicherheits-Scan durchgeführt haben.
Ergebnis
Die Absicherung Ihres Servers erfordert eine Kombination aus bewährten Methoden und regelmäßiger Wartung. Indem Sie die in diesem Beitrag beschriebenen Schritte befolgen, können Sie die Sicherheit Ihres Servers deutlich erhöhen und Ihre wertvollen Daten schützen. Denken Sie daran: Sicherheit ist ein fortlaufender Prozess. Überprüfen Sie Ihre Server daher regelmäßig.











