Wie kann ich meinen virtuellen Server absichern?


Mit dem nachfolgenden Artikel möchten wir Ihnen eine Anleitung an die Hand geben, mit der Sie Ihren frisch aufgesetzten vServer absichern und so vor unerwünschten Zugriffen schützen können. Diese Anleitung ist hauptsächlich für Neulinge mit geringer Erfahrung im Administrieren von Linux-Servern gedacht. Hierbei behandeln wir die folgenden Themen:

Aus Sicherheitsgründen wird in der Regel empfohlen, dass der SSH-Login für den root-User verboten und ein neuer User angelegt wird. Jedoch ist das nicht unbedingt notwendig, wenn man ausschließlich mit KeyLogin arbeitet und sonst keine andere Person per SSH auf den Server zugreifen soll. Wenn Sie dennoch einen neuen Benutzer anlegen möchten, dann müssen Sie die angegebenen Befehle mit einem vorangestellten "sudo" ausführen (z.B. "sudo apt update").

Update des Servers

Der allererste Schritt, noch bevor die Einrichtung des Servers beginnt, sollte die Aktualisierung des Servers sein. Geben Sie hierzu folgenden Befehl in die Befehlszeile ein:

apt update && apt dist-upgrade && apt autoremove && apt clean

Mit dieser Befehlszeile werden die Paketquellen aktualisiert, nach Upgrades für die installierten Pakete gesucht, unnötige Abhängigkeiten entfernt und der Paket-Cache geleert. Durch die Verwendung von dist-upgrade statt upgrade wird zusätzlich geprüft, ob aufgrund geänderter Abhängigkeiten bestimmte Pakete deinstalliert bzw. neu installiert werden sollten.


SSH KeyLogin einrichten

Nachdem der Server aktualisiert wurde, sollten Sie als nächstes einen KeyLogin für den SSH-Zugriff einrichten. Hierbei erfolgt die Authentifizierung über das PublicKey-Verfahren statt nur mit einem Passwort. Dies erhöht die Sicherheit, denn der SSH-Zugriff kann dann nur mithilfe des PrivateKeys erfolgen. Für die Authentifizierung wird ein Schlüsselpaar bestehend aus einem öffentlichen Schlüssel und einem privaten Schlüssel generiert. Der öffentliche Schlüssel wird auf dem Server abgelegt und der private Schlüssel heruntergeladen sowie im SSH-Client auf Ihrem PC installiert. In der Theorie wäre bereits nur mit diesem Schlüssel ein Login möglich, wir empfehlen aber zusätzlich noch ein Passwort für die Verwendung des Schlüssels zu verwenden. Mit dem nachfolgenden Befehl generieren Sie auf dem Server das Schlüsselpaar:

ssh-keygen -b 4096

Mit der "Enter"-Taste bestätigen Sie den Speicherort des Schlüsselpaars. Im Anschluss können Sie dann das Passwort für die Verwendung des privaten Schlüssels festlegen. Sobald Sie das Passwort eingegeben und anschließend wiederholt haben, erstellt der Server das Schlüsselpaar und legt dieses unter /root/.ssh ab. Mit dem nächsten Befehl legen Sie den öffentlichen Schlüssel zu den authorisierten Schlüsseln ab und löschen diesen anschließend.

touch /root/.ssh/authorized_keys
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
rm /root/.ssh/id_rsa.pub

Unter /root/.ssh/id_rsa können Sie den privaten Schlüssel finden, den Sie entweder als Datei herunterladen oder per nano öffnen und den Inhalt auf Ihren PC kopieren können.

Sollten Sie das Programm "Putty" verwenden, dann muss der Key vorab mit "puttygen" umgewandelt werden, da "Putty" den OpenSSH-Schlüssel nicht standardmäßig verwenden kann. Öffnen Sie hierzu puttygen, klicken Sie anschließend auf "Conversions" und dann auf "Import Key". Wählen Sie nun Ihren privaten Schlüssel (id_rsa) aus und geben Sie das Passwort für den Zugriff auf den Key ein. Im Anschluss müssen Sie nur noch den Schlüssel über "Safe private key" an dem gewünschten Ort abspeichern. In Putty müssen Sie dann den Schlüssel unter "Connection > SSH > Auth" bei "Private Key file for authentication" auswählen und anschließend können Sie sich via SSH anmelden.


SSH konfigurieren

Sobald Sie den KeyLogin eingerichtet haben, sollten Sie noch die Konfiguration des SSH-Zugangs überarbeiten. Hierzu öffnen Sie die Datei sshd_config (Tipp: Mit STRG + O können Sie eine Datei in Nano speichern und mit STRG + X schließen):

nano /etc/ssh/sshd_config

Die meisten automatisierten Angriffe über SSH erfolgen auf dem Standardport 22. Aus diesem Grund sollten Sie zunächst den SSH-Port des Servers abändern. Den Port können Sie frei wählen, jedoch darf dieser nicht bereits von einem anderen Dienst genutzt werden. Des Weiteren sollten Sie zur Sicherheit den SSH-Login via Passwort ausschließen, so dass der Login nur mit der Verwendung des zuvor erstellten Schlüssels möglich ist. Hierzu ändern bzw. ergänzen Sie folgendes in der Konfigurationsdatei sshd_config:

Port 30123
LoginGraceTime 120
AllowGroups root
PermitRootLogin without-password
PasswordAuthentication no
MaxAuthTries 1
StrictModes yes

Durch diese Änderung erlauben Sie den SSH-Zugriff nur über den Port 30123. Des Weiteren bricht die Verbindung ohne Login automatisch nach 120 Sekunden ab. Der Login wird nur für die Gruppe "root" erlaubt. Der Root-Login bzw. der Login von anderen Usern unter Verwendung eines Passworts wird untersagt. Auch wird die Anzahl der Versuche zum Login bis SSH die Verbindung trennt auf 1 gesetzt und der Strict Mode aktiviert, was für die Gesamtsicherheit des Servers rund um OpenSSH wichtig ist.

Ist die Konfigurationsdatei angepasst, muss damit die Änderungen wirksam werden der SSH Daemon neugestartet werden.

Wichtig: Bevor Sie die SSH-Verbindung beenden, sollten jedoch unbedingt den Login mit dem Key über den neuen Port in einer neuen Session testen, da Sie sich andernfalls vom Server aussperren!

Mit dem folgenden Befehl starten Sie den Daemon neu:

service ssh restart

Damit Sie sich wieder über Ihr Programm per SSH mit dem Server verbinden können, müssen Sie noch entsprechend Ihrer Konfiguration den Port in Ihrem Client abändern. Anschließend sollten Sie sich mit Ihrem Key einloggen können.


Fail2ban installieren

Um sich gegen DoS und Brute-Force-Attacken zu schützen, empfehlen wir dringend fail2ban auf Ihrem Server zu installieren. Fail2ban prüft anhand von definierbaren Mustern die Logdateien und sperrt die IP-Adresse für einen konfigurierbaren Zeitraum, wenn diese zuviele fehlgeschlagene Anmeldeversuche verursacht. Mit dem nachfolgenden Befehl können Sie fail2ban auf dem Server installieren:

apt install fail2ban

Ist fail2ban installiert, dann müssen Sie die Konfigurationsdatei jail.conf in eine neue Datei jail.local kopieren, da die ursprüngliche Konfigurationsdatei bei jeder Paketaktualisierung überschrieben wird. Nutzen Sie hierzu den folgenden Befehl:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Im Anschluss können Sie die Konfiguration nach Ihren Vorgaben gestalten:

nano /etc/fail2ban/jail.local

In der Konfigurationsdatei können Sie Standardparameter festlegen oder auch die Parameter für einzelne Dienste (wie z.B. SSH) konfigurieren. Für den Anfang ist es ausreichend, wenn Sie die Standardparameter ändern. Wir empfehlen Ihnen die Zeit der Sperrung sowie die Zeit, in der die Versuche gezählt werden, zu erhöhen und die Anzahl der maximalen Versuche zu verringern. 

[DEFAULT]
bantime  = 86400
findtime  = 1200
maxretry = 3

Mit diesen Parametern erhöhen Sie die Zeit der Sperrung auf 86400 Sekunden (=24 Stunden) und die Zeit, in der die Versuche gezählt werden, auf 1200 Sekunden (=20 Minuten) und verringern die Anzahl der maximalen Versuche auf 3.

Sobald Sie die Parameter von fail2ban angepasst haben, müssen Sie den Dienst mit der nachfolgenden Zeile neustarten:

service fail2ban restart


Portsentry installieren

Um zu prüfen, welche Ports auf einem Server laufen bzw. welche Ports  geöffnet sind, führen Angreifer sogenannte Portscans durch. Über die geöffneten Ports versuchen die Angreifer dann einen Zugang zu Ihrem Server zu erhalten. Mit Portsentry können Sie solche Scans unterbinden. Hierzu erfasst Portsentry die Portscans in einer Logdatei und führt vordefinierte Aktionen aus, um solche Scans zu verhindern (z.B. die Sperrung einer IP-Adresse). Führen Sie den folgenden Befehl aus, um Portsentry auf Ihrem Server zu installieren:

apt install portsentry

Nach der Installation von Portsentry erscheint eine Meldung, dass das Tool nichts weiter unternummt als Logeinträge zu schreiben. Um Portsentry zu konfigurieren, bestätigen Sie zunächst mit Enter die Meldung und starten anschließend mit folgendem Befehl die Konfiguration:

nano /etc/portsentry/portsentry.conf

Ändern Sie den Wert der beiden Einträge BLOCK_UDP und BLOCK_TCP auf 1 ab. Mit dieser Änderung loggt Portsentry nicht nur Portscans sondern blockiert diese auch.

BLOCK_UDP="1"
BLOCK_TCP="1"

Damit die entsprechende IP-Adresse bei einem Portscan ausgesperrt wird, macht es Sinn die folgende Zeile direkt darunter zu setzen:

KILL_ROUTE="/sbin/iptables -A INPUT -s $TARGET$ -j DROP"

Danach können Sie die Datei speichern und mit der nächsten Konfigurationsdatei fortfahren:

nano /etc/default/portsentry

Damit Portsentry sensibler reagiert und auch Stealth-Scans erkennt, sollten Sie die folgenden Zeilen abändern:

TCP_MODE="stcp"
UDP_MODE="sudp"

Sobald die Konfiguration angepasst ist, muss Portsentry noch neugestartet werden. Erst dann sind die Änderungen aktiv:

service portsentry restart


E-Mail-Alarm bei einem SSH-Login einrichten

Um über SSH-Login-Versuche informiert zu werden, können Sie zum Abschluss noch einen E-Mail-Alarm einrichten. Damit werden Sie per E-Mail informiert, sobald jemand versucht sich über SSH auf Ihrem Server einzuloggen. Voraussetzung, dass eine solche Mail verschickt werden kann, ist natürlich ein "Mail Server" bzw. ein Mail Transfer Agent (MTA) auf Ihrem Server. Hierfür empfiehlt es sich eine kleine send-only-Lösung, wie z.B. exim4, zu verwenden. Exim4 können Sie wie folgt installieren und konfigurieren:

apt install exim4-daemon-light mailutils
dpkg-reconfigure exim4-config

Durch den zweiten Befehl wird die Mailserver-Konfiguration geöffnet. Wählen Sie dort die Option internet site; mail is sent and received directly using SMTP und bestätigen Sie mit Enter. Im Anschluss werden noch einige andere Konfigurationsmöglichkeiten angezeigt, die Sie aber allesamt einfach mit Enter bestätigen können. Die Standard-Einstellungen sollten für den E-Mail-Alarm ausreichen. Sobald die Konfiguration abgeschlossen ist, können Sie den Mail-Versand wie folgt testen:

echo "Das ist eine Testmail" | mail -s Testnachricht mail@domain.tld

Ersetzen Sie "mail@domain.tld" mit Ihrer Empfängeradresse!

Im Anschluss können Sie dann den E-Mail-Alarm konfigurieren. Hierzu müssen Sie eine Datei im profile.d Ordner erstellen, damit diese bei einem SSH Login automatisch ausgeführt wird.

nano /etc/profile.d/mailalert.sh

Übernehmen Sie folgenden Inhalt in die Datei:

echo "login from `who --ips | awk 'END{print $5}'` on `hostname -f` detected" | mail -s "ssh login alert" mail@domain.tld

Natürlich müssen Sie auch hier "mail@domain.tld" durch Ihre gewünschte Empfängeradresse ersetzen. Durch diese Zeile wird vom Server eine E-Mail erstellt, die Sie darüber informiert, welche IP-Adresse sich zuletzt auf dem entsprechenden Server (Hostname) eingeloggt hat. Falls Sie Änderungen am Inhalt der Mail vornehmen möchten, dann können Sie diese Zeile natürlich auch anders gstalten. Zum Schluss müssen Sie nur noch die Rechte der Datei anpassen, damit diese auch ausführbar ist:

chmod +x /etc/profile.d/mailalert

Empfanden Sie diesen Artikel als hilfreich?
Nein Ja
Wir verwenden Cookies für die technische Funktionalität dieser Website. Mit Ihrer Zustimmung erfassen wir außerdem Seitenaufrufe und andere statistische Daten in anonymisierter Form.

Einzeln auswählen
Cookie-Einstellungen
Datenschutzbestimmungen lesen