2062825

Secure Shell (SSH) vor Fremdzugriff schützen

17.04.2015 | 13:01 Uhr |

Die Secure Shell oder kurz SSH ist das bewährte verschlüsselte Protokoll, um ein entferntes Linux-System wie etwa dedizierte Server beim Provider fernzuwarten. Der SSH-Zugang sollte aber gegen unbefugte Zugriffe gesichert werden.

Jeder externe Netzwerkzugriff auf ein System ist ein theoretisches Sicherheitsrisiko. Das Risiko steigt naturgemäß rapide an, wenn das System über das Internet erreichbar ist. So kann auch ein falsch oder zu gering abgesicherter Zugriff auf die Secure Shell zur Folge haben, dass auf dem System Schadprogramme eingeschleust oder Daten ausgelesen werden. In diesem Artikel erfahren Sie, wie Sie den externen Zugriff auf die Secure Shell besser absichern.

Die Zeit für das Log-in reduzieren

Beim Log-in ruft der Nutzer zunächst die (IP-)Adresse des Systems mit seinem SSH-Programm auf. Er wird anschließend dazu aufgefordert, sich zu identifizieren und sein Passwort einzutragen. Um diesen Vorgang abzuschließen, darf sich der Nutzer eine definierte Zeit nehmen. Erst wenn diese Zeit ohne erfolgreiche Anmeldung verstrichen ist, wird die Verbindung automatisch getrennt. In dieser Zeitspanne könnten Angreifer natürlich versuchen, das System anderweitig zu untersuchen oder zu manipulieren. Deswegen sollten Sie diese Zeitspanne möglichst kurz halten. Eine wichtige Rolle beim Einsatz von SSH spielt die Datei „/etc/ssh/sshd_config“. Sie kann mit jedem beliebigen Editor und root-Rechten bearbeitet werden:

sudo nano /etc/ssh/sshd_config

Ist die Datei nicht vorhanden oder präsentiert der Editor Nano nach diesem Kommando ein leeres Dokument, ist höchstwahrscheinlich der SSH-Server-Dienst gar nicht installiert. So verzichtet etwa Ubuntu darauf, die Server-Komponente für den SSH-Zugang standardmäßig zu aktivieren. Und auch beim Raspberry Pi müssen Sie SSH erst in den Optionen aktivieren. Unter Ubuntu installieren Sie mit

sudo apt-get install openssh-server

den Server. Suchen Sie dann in der Konfigurationsdatei nach dem Eintrag „LoginGraceTime“, und reduzieren Sie dessen Wert. Angegeben ist die Zeitspanne in Sekunden, die von der Anmeldung bis zum erfolgreichen Login am System vergehen darf. Da Sie im Normalfall mit Sicherheit weniger als die vorgegebenen 120 Sekunden benötigen werden, reduzieren Sie den Wert zum Beispiel auf 20 und speichern die Datei. Damit Änderungen wirksam werden, muss der Dienst mit

sudo /etc/init.d/ssh restart

erneut gestartet werden.

Konfigurationsdatei „sshd_config“ der Secure Shell bearbeiten: Der Editor Nano ist sicher keine Komfort-Textverarbeitung, funktioniert aber auch per SSH und ist daher unentbehrlich.
Vergrößern Konfigurationsdatei „sshd_config“ der Secure Shell bearbeiten: Der Editor Nano ist sicher keine Komfort-Textverarbeitung, funktioniert aber auch per SSH und ist daher unentbehrlich.

Root-Zugriff nicht erlauben

Die von Angreifern üblicherweise eingesetzten Scripts und Spezialprogramme gehen von einem frisch installierten System aus. Selbst professionelle Administratoren scheuen oft genug den Aufwand, die darin vorhandenen Standardzugänge zu bearbeiten. Sofern Sie keine Änderung an Ihrem System vornehmen, existiert der Zugang des Benutzers root auf Ihrem System. Nach der Anmeldung kann er mit weitreichenden Rechte alle Arbeiten durchführen. Sie erhöhen die Sicherheit deutlich, wenn Sie den direkten Zugriff von root per SSH deaktivieren. Aber Achtung: Sie müssen zuvor auf dem betreffenden Server wenigstens einen weiteren Benutzer angelegt haben, da Sie sich andernfalls aus Ihrem System aussperren.

Öffnen Sie erneut die Konfigurationsdatei „sshd_config“, und suchen Sie dort nach dem Eintrag „PermitRootLogon yes“. Ändern Sie den Wert „yes“ auf „no“, und starten Sie dann den Dienst erneut. Benötigen Sie später root-Rechte, um Änderungen am System vorzunehmen, melden Sie sich als einfacher Nutzer per SSH an. Auf der entfernten Konsole wechseln Sie danach mit su in den root-Account.

Mosh: Die mobile Shell mit Verbindungsschutz

Log-in-Versuche reduzieren

Die verbreitete Methode, das Passwort eines Benutzerkontos zu ermitteln, besteht darin, einfach Zeichenkombinationen auszuprobieren, bis das Passwort ermittelt ist. Ein solcher Brute-Force-Ansatz hinterlässt auf dem angegriffenen System Spuren, da es dabei regelmäßig zu Fehlermeldungen kommt. Deswegen lohnt sich für den Administrator der Blick in die Datei „/var/log/auth.log“. Sie werden dort für jeden erfolglosen Anmeldeversuch einen Eintrag finden. Stellen Sie hier fest, dass sich innerhalb eines Zeitfensters eine größere Zahl vergeblicher Anmeldeversuche ereignet hat, könnte es sich um eine Attacke handeln.

Ein Mittel gegen Brute-Force-Angriffe besteht in der Installation eines Werkzeugs, das automatisiert auffällige IP-Adressen sperren kann. Mit dem Befehl

sudo apt-get install fail2ban

installieren Sie das einschlägige Tool. Wie fail2ban auf fehlgeschlagene Anmeldungen reagieren soll, ist in der Konfigurationsdatei „jail.conf“ gespeichert. Da Änderungen in der „jail.conf“ durch Updates der Programmpakete eventuell überschrieben werden, ist es ratsam, eine Kopie der Datei bereitzuhalten und diese nach Änderungen wieder auf die tatsächliche Konfigurationsdatei zurückzukopieren:

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

Diese Datei „jail.local“ passen Sie danach an, und mit sudo cp jail.local jail.conf kopieren Sie danach die Änderungen in die tatsächliche Konfigurationsdatei. Als Anpassungen empfehlen wir folgende Einstellungen:

enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 86400

Hierbei handelt es sich um die Optionen für den SSH-Zugang. Mit „enabled“ aktivieren Sie die Überwachung für einen bestimmten Dienst oder Port, in diesem Fall „ssh“. Sie müssen fail2ban auch die Logdatei mitteilen, in der es nach fehlgeschlagenen Versuchen nachsehen soll, und definieren schließlich, wie viele Anmeldeversuche erlaubt sind. In der Datei ist ebenfalls vermerkt, wie lange eine verdächtige IP-Adresse gesperrt werden soll. Dies regelt der Ausdruck „bantime“, der eine Angabe in Sekunden erwartet. Damit die Einstellungen wirksam werden, muss der Dienst erneut gestartet werden:

/etc/init.d/fail2ban restart

Technisch arbeitet fail2ban ganz einfach: Es untersucht die Logdatei mit den aufgezeichneten Fehlermeldungen nach Wiederholungen. IP-Adressen, die sich mehrfach mit falschen Daten anzumelden versuchten, werden dann für eine bestimmte Zeit ausgesperrt.

Die Parameter für fail2ban sind überschaubar: Der typische Codeblock für den Zugriff per SSH und dessen Überwachung ist hier im Editor gedit markiert.
Vergrößern Die Parameter für fail2ban sind überschaubar: Der typische Codeblock für den Zugriff per SSH und dessen Überwachung ist hier im Editor gedit markiert.

Bestimmte Nutzer ausschließen

Die bisher vorgestellten Maßnahmen erhöhen die Sicherheit gegenüber Anmeldeversuchen unbekannter Eindringlinge. Bei einem Mehrbenutzersystem wollen Sie aber vielleicht zusätzlich den Zugriff von bestimmten Nutzern verbieten. Standardmäßig erlaubt SSH allen auf dem System vorhandenen Konten den Zugang. Um Konten auszuschließen, benötigen Sie wieder die Datei „sshd_config“. Dort legen Sie einen neuen Eintrag an, der mit „DenyUsers“ beginnt. Dahinter tragen Sie die Anmeldenamen der Nutzer ein, die Sie ausschließen wollen. Die Einträge sind dabei nur durch ein einfaches Leerzeichen getrennt. Nachdem die Datei gespeichert wurde, müssen Sie den SSH-Dienst neu starten.

Dieser Artikel stammt aus der LinuxWelt 1/2015

In der LinuxWelt 1/2015 stellen wir Ihnen die besten aktuellen Linux-Systeme vor, die Sie alle auch auf der Heft-DVD finden.

0 Kommentare zu diesem Artikel
2062825