Linux Bibel online

Creative Commons Lizenzvertrag
Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 3.0 Österreich Lizenz.

Change language by Google translator: ...

So einige Nutzer des Internets leisten sich gerne einen eigenen Webserver um Ihre eigene Homepage zu präsentieren und so einiges mehr, aber auch Firmen machen dies. Davon lebt das Internet auch, etwas das viele Nutzer jedoch vergessen ist an die Sicherheit zu denken. Ein Webserver ist zu 99,9% der Zeit mit dem Internet verbunden und somit ein lohnendes Ziel für Angriffe, hier sind auch Server betroffen die auf Linux basieren. Zwei Angriffspunkte auf einem solchen Server bestehen sogar schon dann wenn noch nicht einmal der Webserver selbst läuft sondern nur das System selbst - das System und FTP.
Die meisten Nutzer setzen beim aufsetzen einer Web-Software (Joomla, Yabb, Typo, ...) und beim Upload von Webseiten und Bildern auf FTP, sicherlich ist es der einfachste Weg - doch alles andere als sicher, FTP überträgt Nutzernamen und Passwörter im Klartext, und dies bei jeder einzelnen Datei, Angreifer haben kein Problem damit sich in eine solche Verbindung einzuklinken und die Daten zur Anmeldung abzufangen - schon ist Ihr Webserver in anderen Händen ohne das Sie etwas davon bemerken.
Das nächste Problem ist das sich die meisten Nutzer darauf verlassen das sich der Provider um die Sicherheit des Servers kümmert, dies ist auf keinen Fall so - dies ist Ihre Geschichte sobald Ihnen der Server überlassen wird und Sie sind auch für die Sicherheit gesetzlich verantwortlich. Kümmern Sie sich nicht darum das System aktuell zu halten haben Sie ein Problem, ein veraltetes Linux-System ist nicht sicherer als ein Windows-System von Microsoft.

Was ist nun SSH?

SSH ist ein Dienst-Protokoll über Netzwerke das sicher ist, die Verbindung selbst ist verschlüsselt, dies bedeutet alle Daten die Sie übertragen können von einem außen stehenden nicht abgefangen werden, dazu zählen natürlich auch Login-Namen und Passwörter zur Anmeldung. Mittels SSH - also Secure Shell ist es nicht nur möglich Daten sicher von einem Rechner zum anderen zu übertragen sondern sich direkt mit dem entfernten System zu verbinden. Dies bedeutet nichts anderes als das Sie damit arbeiten können wie wenn Sie direkt vor diesem Rechner sitzen würden. Sie können das System aktualisieren, weitere Software installieren und Einstellungen ändern, und noch vieles mehr.
In diesem Beitrag lernen Sie nun ein wenig mehr über SSH und wie Sie die Sicherheit dieses Dienstes noch weiter verbessern.

Was wird benötigt?

Wenn Sie einen Server im Internet bei Ihrem Provider mieten hat dieser schon alles nötige vorinstalliert - das nötige Paket nennt sich unter auf Debian basierenden Systemen "openssh-server". Auch auf den meisten gängigen Linux-Distributionen die man sich zu Hause auf dem Rechner installiert ist die nötige Klient-Software schon vorhanden - hier nennt sich das passende Paket "openssh-client". Alles was Sie nun noch benötigen ist die IP-Adresse des Rechners mit dem Sie sich verbinden wollen und die Login-Daten, diese Information finden Sie bei den Produkt-Informationen Ihres Providers. Alles was Sie nun noch tun müssen ist sich ein Terminal zu öffnen.

SSH nutzen

Nun haben Sie Nutzer-Name, Passwort und IP-Adresse für Ihren Server und ein Terminal geöffnet. Ich nehme jetzt einmal ein kleines Beispiel, als Nutzer-Name zum Login "user" und als IP-Adresse "1.23.456.678.9". Als Befehl zur Verbindung dient "ssh". Mit diesen Daten können wir uns nun verbinden:

ssh user@1.23.456.789.9

Alternativ kann man auch die Adresse des Servers nutzen - etwa "server-name.org":

ssh user@server-name.org

Verbundenes SSH-Terminal

Verbundenes SSH-Terminal

Bestätigt man mit der Eingabe-Taste baut sich die Verbindung auf, steht diese werden Sie mit einer System-Meldung begrüßt und zur Eingabe des Passwortes aufgefordert, wurde dieses eingegeben sind Sie direkt mit dem Rechner, also mit dessen System verbunden und können auf dem Terminal so arbeiten wie wenn Sie direkt vor diesem Rechner sitzen würden. Sie können also das System aktualisieren, weitere Software installieren und Einstellungen tätigen. Mittels des Befehls:

exit

beenden Sie die Verbindung wieder. Ein kleiner Tipp - bei der ersten Verbindung loggt man sich immer als Nutzer "root" ein, also als Administrator, man findet sich also standardmäßig im Home-Verzeichnis des Nutzers "root" - also "/root" wieder. Um also in das System-Verzeichnis zu kommen dient:

cd /

SCP - Secure Copy

Sie können sich mittels SSH auf einem entfernten Rechner einloggen und direkt auf diesem arbeiten, möchte man jedoch etwa vom lokalen Rechner auf den entfernten Rechner übertragen nutzt man SCP und wird durch das Paket "openss-client" installiert. Als kleines Beispiel möchte ich von meinem lokalen Rechner die Datei "bild.jpg" auf einen entfernten Server übertragen, die Datei soll dort im Verzeichnis "/var/www/images/" landen:

scp bild.jpg user@server-name.org:/var/www/images/

Das selbe mit dem lokalen Verzeichnis "Bilder", hier nutzt man zusätzlich die Option "-r" um auch die darin liegenden Dateien zu übertragen:

scp -r Bilder/ user@server-name.org:/var/www/images/

Dies funktioniert natürlich umgekehrt auf die selbe Art - hier gibt man jedoch zuletzt einen Punkt "." an um zu zeigen das die Datei oder das Verzeichnis in das aktuelle Verzeichnis kopiert werden soll in dem man sich auf dem Terminal gerade befindet:

scp user@server-name.org:/var/www/images/bild.jpg . scp -r user@server-name.org:/var/www/images/Bilder/ .

SSH etwas bequemer mit SSH-Schlüssel

Nun muss man natürlich jedes mal wenn man sich auf dem fremden Server einloggt das Passwort des jeweiligen Nutzers eingeben, dies dient natürlich der Sicherheit - funktioniert jedoch auch einfacher und genau so sicher, mit einem Schlüssel. Einem SSH-Schlüssel. Einen solchen zu erstellen und zu nutzen ist ganz einfach.

Schlüssel erstellen Um sich einen solchen SSH-Schlüssel zu erstellen ist uns auch hier wieder das Paket "openssh-client" sehr nützlich. Man öffnet ein Terminal und startet den Befehl:

ssh-keygen -t dsa

Die Software ist interaktiv und fragt nach was Sie von Ihnen wissen möchte - wichtig ist das Passwort, geben Sie eines an müssen Sie es auch beim Aufbau der Verbindung mittels SSH eingeben, geben Sie kein Passwort an und bestätigen mit der Eingabe-Taste ist es auch nicht nötig dieses bei der Nutzung von SSH anzugeben. Diesen Schlüssel erstellen Sie natürlich als dieser User der sich auch auf dem entfernten System einloggen soll, will man sich dort als Nutzer "root" einloggen muss der Schlüssel auch vom Nutzer "root" erstellt werden, will sich "robert" dort einloggen muss den Schlüssel der Nutzer "robert" erstellen.

Schlüssel auf den Server bringen Damit der Schlüssel auch funktioniert muss dieser an die richtige Stelle auf dem Server liegen, auch dazu ist die passende Software bereits vorhanden. Auch dies muss der Nutzer durch führen der sich auf dem entfernten Server einloggen will. Dazu nutzt dieser User nun den Befehl:

ssh-copy-id -i .ssh/id_dsa.pub user@server-name.org

Beim nächsten Login ist das Passwort nicht mehr nötig.

SSH grafisch

Auf dem Terminal mittels SSH ist auf einem entfernten Rechner wirklich alles möglich, man muss jedoch nicht wirklich alles auf dem Terminal machen, viele Dinge - etwa Dateien und Verzeichnisse zwischen dem lokalen und dem entfernten Rechner zu kopieren / verschieben, löschen, umbenennen, Rechte setzen und Dateien bearbeiten ist auch grafisch möglich und somit natürlich viel einfacher. Dazu nutzt man ganz einfach einen Datei-Manager der dazu fähig ist. Unter KDE ist dies etwa "konqueror" oder "krusader".

Nutzt man Konqueror (Webbrowser, Datei-Manager, FTP-Klient, ...) gibt man einfach in die Adresszeile die selbe Syntax wie auch auf dem Terminal ein - statt "ssh" nutzt man jedoch "fish://", also frei nach vorigem Beispiel:

fish://user@server-name.org

Nach kurzer Zeit hat sich Konqueror mit dem Rechner verbunden und verlangt nach dem Passwort, schon findet man sich im System wieder:

Grafisch mit Konqueror per SSH arbeiten

Grafisch mit Konqueror per SSH arbeiten

Möchten Sie Krusader nutzen wählen Sie das Menü "Extras / Neue Netzwerkverbindung" und wählen im sich öffnenden Fenster das Protokoll "fish", geben den Namen des Servers ein - etwa "server-name.org", in den beiden darunter liegenden Feldern geben Sie das Passwort wie den Nutzer-Namen ein. Ein Klick auf "Verbinden" und schon kurz danach finden Sie sich im Dateisystem des entfernten Systems wieder:

Grafisch mit Krusader per SSH arbeiten

Grafisch mit Krusader per SSH arbeiten

Ganz rechts finden Sie ein nettes kleines Menü - klicken Sie auf "Lesezeichen hinzufügen" und schon kommen Sie per Klick auf Ihren entfernten Rechner.

Grafische Anwendungen per SSH auf dem entfernten System

Es ist natürlich auch möglich auf einem entfernten System grafische Anwendungen zu starten und diese dann am lokalen System zu nutzen, dies macht zwar auf einem Server wenig Sinn - doch wenn man etwa im Nebenzimmer einen Rechner laufen hat auf dem eine Software installiert ist die auf dem lokalen nicht ist ... Auch dies ist möglich. Dazu müssen Sie auf dem System auf dem die grafische Anwendung installiert ist die Sie auf dem lokalen System nutzen wollen als Nutzer "root" die Datei "/etc/ssh/sshd.config" etwas modifizieren und das Paket "openssh-server" installiert sein. Suchen Sie nach dem Eintrag "#X11Forwarding no", entfernen Sie die Raute (#) und ersetzen "no" durch "yes" - also "X11Forwarding yes". Nun muss der SSH-Server neu gestartet werden:

systemdctl ssh restart

Nun lässt es sich per SSH und der Option "-X" verbinden:

ssh -X user@server-name.org

Starten Sie eine grafische Anwendung wird diese auf den lokalen Rechner durch geschaltet.

SSH abhärten

SSH ist der wichtigste Dienst auf einem Server der im Internet für den Administrator verfügbar ist, dem entsprechend sollte dieser auch abgesichert sein, hat ein Angreifer Zugriff auf Ihren SSH-Zugang hat er den Server auch schon in seiner Kontrolle.

Root-Login unterbinden Der Einzige der per SSH Zugang zum Server hat wenn Sie Ihren Server vom Provider mieten ist der Nutzer "root", wo liegt hier das Problem? Jeder Angreifer kennt diesen Nutzer-Namen, alles was er dann noch benötigt ist das Passwort das er je nach Schwierigkeit per Bruteforce in absehbarer Zeit heraus finden könnte. Unterbindet man jedoch den Zugang für den Nutzer "root" kann der Angreifer ewig und noch länger das richtige Passwort für "root" suchen. Dies bedeutet natürlich nicht das Sie dann auf dem System nicht mehr als Administrator arbeiten können sondern nur das sich "root" nicht mehr direkt anmelden kann. Man erstellt sich einen einfachen Nutzer ohne Administrator-Rechte, dieser kann sich einloggen - ist dies geschehen kann er dann natürlich zu "root" werden.

Dazu muss man sich unbedingt bevor man irgend etwas anderes tut einen neuen Nutzer ohne Rechte anlegen, sperrt man den Zugang für "root" und hat keinen weiteren Nutzer angelegt der sich einloggen darf sperrt man sich selbst aus und der Provider muss wieder Hand anlegen. Legen wir also einen neuen Nutzer an, im Beispiel nenne ich diesen einfach "robert":

adduser robert

Die Software fragt einige Dinge ab, die meisten können Sie einfach bestätigen - ein Passwort müssen Sie aber unbedingt vergeben. Nun loggen wir uns mittels:

exit

vom entfernten System ab und versuchen es mit dem neu angelegten Nutzer-Namen:

ssh robert@server-name.org

Klappt der Login haben können wir weiter gehen, wir werden wieder zum Nutzer "root" und öffnen mit einem beliebigen Texteditor - etwa Nano die Datei "/etc/ssh/sshd_config" und suchen dort den Eintrag:

PermitRootLogin prohibit-password

und ersetzen diesen durch:

PermitRootLogin no

Wir speichern die Datei und starten den SSH-Server neu:

systemctl sshd restart

Alternativ lässt sich auch das komplette System neu starten. Nun haben wir diese Geschichte erledigt und der Nutzer "root" kann sich nicht mehr direkt einloggen.

Nur mit SSH-Schlüssel einloggen Hat man den Zugang für den Nutzer "root" gesperrt kann man noch etwas weiter gehen, für den neu erstellten Nutzer den Login nur mit einem SSH-Schlüssel erlauben, so kann der Angreifer Ihren Nutzer-Namen kennen und sogar das Passwort knacken - hat er aber Ihren SSH-Schlüssel nicht kommt er trotzdem nicht rein. Legen Sie sich wie oben beschrieben Ihren SSH-Schlüssel an und legen diesen am Server ab, wichtig - versuchen Sie sich nun einige Male einzuloggen - müssen Sie dazu Ihr Passwort nicht angeben können Sie weiter gehen und den Zugang nur mit Schlüssel erlauben. Öffnen Sie mit einem Texteditor die Datei "/etc/ssh/sshd_config" und suchen die Zeilen:

PasswordAuthentication yes ChallengeResponseAuthentication yes

und ersetzen "yes" durch "no". Starten Sie den Server neu - erledigt.

Fail2ban Fail2ban ist eine Software die die Login-Log-Dateien nach nicht erfolgten Anmeldungen am SSH-Dienst durchforstet, also wenn man zum Login nicht das richtige Passwort angegeben hat, geschieht dies öfter in einigen Minuten sperrt Fail2ban die entsprechende IP-Adresse für einige Zeit direkt über die Firewall. Die Software arbeitet also automatisch und sicher, alles was dabei zu tun ist ist das Paket "fail2ban" ganz einfach über die Paket-Verwaltung (auf Debian basierenden Systemen) zu installieren.

Suche Nach oben Startseite Mail an den Autor Links rund um Linux









SiteLock