Sobald Sie die Zügel in der Hand halten, müssen Sie sicherstellen, dass Ihr VPS zumindest über ein Minimum an Abwehrmaßnahmen gegen Angriffe von außen verfügt. Kein System ist perfekt, und kein System ist wirklich undurchdringlich; das entbindet jedoch nicht davon, eine Reihe technischer Vorkehrungen zu treffen, die zumindest verhindern sollen, dass schon die einfachsten Angriffe zum Erfolg führen.
Gemäß der Richtlinie von VPS GREEN werden die VPS mit dem gewählten Betriebssystem so ausgeliefert, wie der Hersteller es bereitstellt. Das erfordert natürlich einige der Sicherheit gewidmete Handgriffe, bevor Sie Ihre eigenen Programme installieren können. Wie im berühmten Satz aus dem Spider-Man-Comic: Der Systemadministrator hat große Macht, aber auch große Verantwortung.
Das technische Team von VPS GREEN ist nicht berechtigt, auf Ihre VPS zuzugreifen; es steht Ihnen jedoch jederzeit für Unterstützung rund um das Betriebssystem zur Verfügung.
Voraussetzungen
- Ein VPS mit Linux-Betriebssystem
- Ein Benutzer mit angemessenen Rechten, also sudo oder direkt root
- Ein Texteditor, in unserem Beispiel verwenden wir nano
- Der Paketmanager apt, normalerweise im Betriebssystem enthalten
- [Empfohlen] Eine Firewall, in unserem Beispiel verwenden wir ufw
Aktualisieren Sie Ihr Betriebssystem
Die erste Pflicht als Sysadmin besteht darin, Tag für Tag die Sicherheit und Funktionsfähigkeit des Betriebssystems und der Anwendungen zu gewährleisten. Die Entwickler von Distributionen und Betriebssystemen veröffentlichen häufig Paket-Updates, sehr oft aus Sicherheitsgründen: Die Distribution bzw. das Betriebssystem aktuell zu halten ist ein wesentlicher Baustein, um den VPS zu schützen.
Mitunter veröffentlichen die Hersteller von Anwendungen Listen kompatibler oder inkompatibler Systempakete und Bibliotheken: Stellen Sie vor dem Update einzelner Komponenten sicher, dass keine Inkompatibilitäten mit den Anwendungen bestehen, die Sie auf dem VPS installiert haben oder installieren werden.
Stellen wir zunächst sicher, dass die Paketquellen auf dem neuesten Stand sind. Verbinden Sie sich dazu per SSH oder über die Konsole mit dem VPS und führen Sie den Befehl aus:
$ sudo apt update && sudo apt upgrade
Apt antwortet mit einer Reihe von Informationen, darunter die Anzahl der zu aktualisierenden Pakete. Denken Sie daran (sofern keine anderen Anforderungen dagegensprechen), Ihren VPS stets aktuell zu halten und die vorgeschlagenen Pakete zu bestätigen, wie im Beispiel:
6 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.
6 standard LTS security updates
Need to get 54.5 MB of archives.
After this operation, 242 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Ändern Sie den Standard-Port der Secure Shell
Auch wenn es nicht zwingend erforderlich ist, kann es sinnvoll sein, den Standard-Port von SSH zu ändern, der normalerweise auf 22 eingestellt ist. Dieser insgesamt simple Schritt wehrt Angriffe von Bots ab, die üblicherweise den Standard-Port ins Visier nehmen. Das Vorgehen ist recht einfach: Es genügt, die Konfigurationsdatei des Dienstes mit dem Texteditor Ihrer Wahl zu bearbeiten.
$ sudo nano /etc/ssh/sshd_config
Suchen Sie die Zeichenfolge „Port 22“ und ersetzen Sie die Nummer durch den Port Ihrer Wahl; achten Sie jedoch darauf, keinen Port zu verwenden, der bereits von einem anderen Systemprotokoll belegt ist. Per Konvention gelten die Ports zwischen 49152 und 65535 als frei, also keinem bestimmten Protokoll und keiner bestimmten Anwendung zugewiesen.
# This is the sshd server system-wide configuration file.
# Port 22
Port 4422
Speichern Sie die Änderungen und starten Sie den SSH-Dienst neu:
$ sudo systemctl restart sshd
Unmittelbar nach dem Neustart des Dienstes sollten Sie keinen Unterschied bemerken; bei der nächsten Verbindung müssen Sie jedoch folgende Zeichenfolge verwenden:
ssh Nome_Utente@IPv4_del_VPS -p Numero_della_porta
Wenn Sie eine Firewall verwenden, denken Sie daran, den neuen Port hinzuzufügen und den eingehenden Datenverkehr zuzulassen. Sollten Sie sich beispielsweise für ufw entscheiden, führen Sie den Befehl aus:
$ sudo ufw allow 4422
$ sudo ufw show added
Added user rules (see 'ufw status' for running firewall):
ufw allow 25565
ufw allow 22
ufw allow 4422
Damit fügen Sie den neu gewählten SSH-Port hinzu und prüfen, welche Ports auf der Firewall konfiguriert sind. Wenn Sie den Port 22 nicht nur ungenutzt lassen, sondern den Datenverkehr darauf auch blockieren möchten, können Sie ein Deny setzen:
$ sudo ufw deny 22
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
25565 ALLOW IN Anywhere
22 DENY IN Anywhere
4422 ALLOW IN Anywhere
25565 (v6) ALLOW IN Anywhere (v6)
22 (v6) DENY IN Anywhere (v6)
4422 (v6) ALLOW IN Anywhere (v6)
Der Parameter status verbose liefert Ihnen einen Überblick über die Firewall-Konfiguration. Wenn alles Ihren Vorstellungen entspricht, stellen Sie sicher, dass der Firewall-Dienst aktiv ist:
$ sudo ufw enable
Verwenden Sie root nicht für alles: Legen Sie ein Konto mit eingeschränkten Rechten an
Als allgemeine Grundregel gilt: Verwenden Sie nicht ständig den Benutzer root, insbesondere nicht für Vorgänge, die keine derart hohen Privilegien erfordern. Einen neuen Benutzer legen Sie mit diesem Befehl an:
$ sudo adduser Nome_del_Nuovo_Utente
Das System fragt das Passwort ab (es empfiehlt sich grundsätzlich, keine schwachen Passwörter zu verwenden) sowie weitere Angaben (Name usw.). Nach dem Anlegen kann der Benutzer sofort für den Zugriff auf den VPS verwendet werden. Soll der neue Benutzer Vorgänge ausführen, die Privilegien erfordern, gibt es zwei verschiedene Wege:
- den Befehl
$ su rootverwenden, um vorübergehend zum Benutzer root zu wechseln; - den Benutzer in die Liste der „sudoers“ aufnehmen, eine spezielle Liste von Benutzern, die ihre Privilegien über den Befehl
sudoerhöhen können.
Während die erste Methode keiner weiteren Erläuterung bedarf, erfordert die zweite die Aufnahme des neuen Benutzers in die Liste. Um ihn zu autorisieren, führen Sie als root aus:
$ echo "Nome_del_Nuovo_Utente ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/Nome_del_Nuovo_Utente
Auf diese Weise legen wir mit dem Benutzer root in sudoers.d/ eine eigene Datei für den neuen Benutzer an, die von sudo gelesen wird und unseren neuen Benutzer autorisiert. Ab jetzt können wir uns per SSH mit dem neuen Benutzer am VPS anmelden, auch für Vorgänge, die besondere Privilegien erfordern, zum Beispiel:
$ sudo apt update
Deaktivieren Sie den Serverzugriff des Benutzers root
Der Benutzer root wird auf GNU/Linux-Systemen standardmäßig angelegt und ist in der Regel der Benutzer mit der höchsten Zugriffsstufe im System. Es ist dringend abzuraten — und obendrein gefährlich —, den VPS ausschließlich über den Benutzer root zugänglich zu lassen, denn dieses Konto kann Vorgänge ohne jede Bremse ausführen, also auch schädliche und irreversible. Es wird daher dringend empfohlen, den direkten Zugriff des Benutzers root über Fernzugriffsprotokolle (RDP, VNC usw.) generell zu deaktivieren — nicht nur für das SSH-Protokoll.
Das Vorgehen ist recht einfach: Es genügt, die Konfigurationsdatei des Dienstes mit dem Texteditor Ihrer Wahl zu bearbeiten.
$ sudo nano /etc/ssh/sshd_config
Suchen Sie die Zeichenfolge „PermitRootLogin yes“ und setzen Sie den Wert auf „no“:
# Authentication:
# PermitRootLogin yes
PermitRootLogin no
Speichern Sie die Änderungen und starten Sie den SSH-Dienst neu:
$ sudo systemctl restart sshd
Von diesem Moment an schlägt jeder SSH-Verbindungsversuch mit root@IPv4_del_VPS fehl. Denken Sie daran, einen Benutzer für den Fernzugriff anzulegen. In jedem Fall kann root weiterhin für den Zugriff über die Web-Konsole von VPS GREEN verwendet werden.
Etwas mehr Schutz … Fail2ban
Fail2ban ist äußerst nützlich, um Einbruchsversuche zu verhindern, und kann daher ein kleines zusätzliches Plus für die Sicherheit Ihres VPS darstellen. Der Zweck von Fail2ban ist es, die IP-Adressen zu sperren, von denen aus Bots oder Angreifer versuchen, auf Ihr System zuzugreifen — insbesondere, wenn Sie ein Bot mit Brute Force angreift (also versucht, sich mit zufälligen oder aus einem Wörterbuch stammenden Passwörtern an einem Dienst anzumelden).
Die Installation ist denkbar einfach:
$ sudo apt install fail2ban
Die Anwendung ist direkt nach der Installation voll funktionsfähig. Wenn Sie einzelne Parameter anpassen möchten, können Sie die Konfiguration in der Datei /etc/fail2ban/jail.conf ändern; zur Vertiefung empfehlen wir die offizielle Dokumentation auf der Website des Fail2ban-Projekts.
Wie in der Dokumentation empfohlen, legen wir eine eigene Konfigurationsdatei an:
$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
$ sudo nano /etc/fail2ban/jail.local
Beachten Sie, dass die als [DEFAULT] gekennzeichneten Parameter global wirken, also auf alle Dienste; diese Werte werden jedoch „überschrieben“, wenn sie in den Abschnitten der einzelnen Dienste gesetzt werden. Beispiel:
# [DEFAULT]
bantime = 1h
...
[sshd]
# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
#mode = normal
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
bantime = 3h
In unserem Beispiel haben wir die Sperrzeit global auf 1 Stunde festgelegt (bantime = 1h), während wir für den SSH-Dienst eine bantime von 3 Stunden gesetzt haben. Damit die Anpassungen sofort greifen, muss der Dienst neu gestartet werden:
$ sudo systemctl restart fail2ban.service
Achten Sie darauf, keine doppelten Parameter innerhalb derselben Sektion [DEFAULT] oder in einer beliebigen [Dienstname]-Sektion zu schreiben: Andernfalls startet Fail2ban nicht und gibt einen Fehler zurück.
Ändern Sie Ihre Passwörter regelmäßig
Es empfiehlt sich, eine Richtlinie für den Passwortwechsel festzulegen, insbesondere für Benutzer mit hohen Privilegien. Eine feste Regel gibt es nicht, aber grundsätzlich gilt: Je öfter das Passwort gewechselt wird (und je komplexer es ist), desto besser. So ändern Sie das Passwort Ihres eigenen Benutzers:
$ passwd
Gehört das zu ändernde Passwort einem anderen Benutzer, muss dessen Name angegeben werden:
$ sudo passwd root
Fazit
Auch wenn Linux (im Allgemeinen) als eines der sichersten Betriebssysteme gilt, weist es einige Schwachstellen auf. Viele Sicherheitsbedrohungen können in Datenverlust oder Datenbeschädigung münden — also in Kosten und Zeitaufwand für die Wiederherstellung. Zum Beispiel:
- Malware — eine aufdringliche Software, die absichtlich dafür entwickelt wurde, Betriebssysteme zu schädigen.
- Sniffing — eine Praxis, bei der Pakete auf dem Weg von und zu ungeschützten Anwendungen abgefangen werden.
- Brute force — ein Angriff, der Passwörter durch automatische Generierung oder Wörterbücher zu erraten versucht.
- SQL injection — eine Praxis, die Schwächen im Code einer Webanwendung ausnutzt, um Zugriff auf die Datenbank des Servers zu erlangen.
- Cross-site scripting (XSS) — ein clientseitiger Angriff, bei dem schädlicher Code in eine Website eingeschleust wird.
- No function-level control — kann durch Software verursacht werden, die Zugriffsrechte nicht korrekt prüft und dadurch einfachen Benutzern Root-Privilegien einräumt.
- Broken authentication — Identitätsdiebstahl, der meist durch unverschlüsselte Daten, schwache Passwörter oder falsch konfigurierte Session-Timeouts entsteht.
Bevor Sie Sicherheitsmaßnahmen umsetzen, sollten Sie sich bewusst machen, welche Elemente Sie überwachen sollten. Hier einige davon:
- Sicherheit des VPS-Hostings
- Auf dem Server installierte Software
- Verbindungen über SSH und andere auf dem Server aktivierte Protokolle
- Root-Zugang und Logins
- Passwörter, Rechte und Privilegien der Benutzer
- Firewall
- Verbindungen über FTP und andere auf dem Server aktivierte Dateiübertragungsprotokolle
- Logdateien
Einen Server zu schützen ist nicht unmöglich: Wenn Sie dieser Anleitung gefolgt sind, haben Sie den ersten Schritt bereits getan. Die nächsten: der Zugriff mit SSH-Schlüsseln und die Deaktivierung des Passwort-Zugangs. Und wenn Sie Sicherheit nicht nur erklären, sondern überprüfen wollen: Das ist unser Handwerk.
Diese Anleitung erschien ursprünglich im Blog von VPS GREEN, dem VPS-Dienst auf unserer grünen Private Cloud.