0

OpenSSH Tutorial – Teil 3: Login mit Public- und Private-Key

0

OpenSSH Tutorial – Teil 2: Grundlegende Absicherung

Nachdem wir im ersten Teil den OpenSSH-Server auf dem Linux Rechner aufgesetzt und danach jeweils erfolgreich eine Verbindung mittels Putty, mittels OpenSSH unter Linux und mittels OpenSSH für Windows hergestellt haben, soll es in diesem (zweiten) Teil der Artikelserie darum gehen, wie man seinen OpenSSH-Server absichert.

Standard Port ändern

Als Erstes sollten wir den Port ändern, auf dem der OpenSSH-Server läuft. Doch warum das? Hierbei geht es um einen klassischen Fall von Sicherheit durch Obskurität (engl. Security by Obscurity). Theoretisch verändert sich der Grad der Sicherheit nicht. Praktisch zeigt sich jedoch, dass die Anzahl der Attacken auf den SSH-Server sinkt. Dies liegt daran, dass viele Angreifer nur auf Port 22, den Standard-SSH-Port, scannen. Ändern wir den Port, fallen wir aus dem Schema. Sicher kann jemand, der speziell unseren Server als Angriffobjekt auserkoren hat, einen Portscan vornehmen, dennoch lohnt sich die Maßnahme, um die eben angesprochenen “planlosen” Scanner auszuschließen.

Um den Port zu ändern, müssen wir eine Änderung in der sshd_config des OpenSSH-Servers vornehmen. Öffnet hierzu einen Terminal auf dem Rechner, auf dem euer OpenSSH-Server läuft.

sudo vim /etc/ssh/shhd_config

In der sshd_config suchen wir nun die Zeile “Port 22″ und ersetzen diese durch “Port X”. (Wobei X für einen Port eurer Wahl steht.) Beachtet bei der Portwahl, dass ihr keinen Port wählt, der schon in Benutzung ist. Läuft auf eurem Linux Rechner also zum Beispiel ein Webserver auf Port 80, so eignet sich Port 80 logischerweise nicht mehr als neuer Port für euren OpenSSH-Server.

Nachdem ihr den Port angepasst habt, speichert ihr die Änderungen, schließt die sshd_config und startet den OpenSSH-Dienst neu.

sudo service ssh restart

Hinweis: Wer mit der Bedienung von VIM nicht klarkommt, kann in den Befehlen auch jeweils das “vim” durch ein “nano” ersetzen.

LogLevel erhöhen

Damit der OpenSSH-Server fehlerhafte Anmeldungen und potenzielle Angriffe protokolliert, müssen wir das Log-Level anpassen. Dies geht ebenfalls in der sshd_config.

sudo vim /etc/ssh/shhd_config

Standardmäßig loggt der OpenSSH-Server nur wenig mit. Wenn der Verdacht aufkommt, dass der Dienst unter “Beschuss” steht oder gerne detaillierte Logs haben möchte, der sollte das LogLevel in der sshd_config anpassen. Hierzu muss folgende Zeile angepasst werden.

#alt
LogLevel INFO

#neu
LogLevel VERBOSE

Wie auch schon bei der Portänderung muss der OpenSSH-Dienst nach dem Speichern der Änderungen noch neu gestartet werden.

sudo service ssh restart

Ist das Loglevel auf “VERBOSE” gestellt, schreibt der OpenSSH-Server die Logs nach “/var/log/auth.log”.
Um einen schnellen Blick auf eventuell fehlgeschlagene Logins zu werfen, kann folgender Befehl behilflich sein.

cat /var/log/auth.log | grep "Failed"

(Der obige Befehl kann immer nur eine Hilfe sein und ersetzt natürlich keinen ausführlichen Blick auf das Logfile.)

Root-Login verbieten

Eine weitere Möglichkeit zum Absichern des OpenSSH-Servers ist es, die Anmeldung als “root” zu verbieten und gegebenenfalls sogar nur bestimmte Nutzer zuzulassen. Auch hierzu müssen wieder Änderungen in der sshd_config vorgenommen werden.

sudo vim /etc/ssh/shhd_config

Um den Login als Root zu unterbinden muss die Direktive “PermitRootLogin” angepasst werden.

#alt
PermitRootLogin yes

#neu
PermitRootLogin no

Steht die Direktive auf no, kann sich niemand mehr als root einloggen. Sollte man selbst als Nutzer mal Root-Rechte benötigen, kann man nach dem Login mittels “su” oder “sudo” erhöhte Rechte akquirieren.

Nutzer-Whitelist anlegen

Ein weiterer Schritt ist das Anlegen einer Whitelist mit erlaubten Nutzern. Möchte man zum Beispiel, dass sich nur die Benutzer(-konten) “raffael” und “peter” anmelden können, so muss folgende Zeile in die sshd_config eingefügt werden.

AllowUsers raffael peter

(Ist die Direktive AllowUsers schon in der sshd_config vorhanden, so muss diese natürlich angepasst und nicht ein zweites Mal eingefügt werden.)

Wenn man sogar weiß, dass ein bestimmter Nutzer immer dieselbe IP-Adresse hat (was bei DSL-Anschlüssen ohne Weiteres ja leider nicht der Fall ist), so kann man die Whitelist noch restriktiver gestalten.

AllowUsers raffael@192.168.2.100

Die obige IP-Adresse muss dann natürlich durch eure angepasst werden und dient hier nur exemplarisch. Der Aufbau mit Angabe eines Hosts geschieht nach dem Schema: user@host.

Fazit

Das war auch schon der zweite Teil. Im dritten Teil geht es dann um die Einrichtung der Anmeldung am SSH-Server mittels Private/Public-Key-Verfahren. Wer wissen möchte, was bisher geschehen ist, kann gerne auch noch einen Blick auf den ersten Teil der Artikelserie werfen.

1

OpenSSH Tutorial – Teil 1: OpenSSH Server installieren

Wenn es um sichere Verbindungen zwischen zwei Computern geht, ist SSH (SSH = Secure Shell) das Mittel der Wahl. So lässt sich zum Beispiel der Home- oder Webserver über eine verschlüsselte Verbindung aus der Ferne per SSH steuern. Wie man den OpenSSH Server (Software) auf Linux (Ubuntu) installiert, einrichtet und absichert möchte ich euch in der nachfolgenden Artikelserie zeigen.

Als Beispiel Szenario gehen wir davon aus, dass wir einen Linux-Computer haben der als Server dient und zwei weitere Computer, einer mit Ubuntu Linux und einer mit Windows 8, die unsere  Arbeitsgeräte bzw. Clients darstellen.

OpenSSH Server installieren

Im ersten Schritt muss die Server Software heruntergeladen werden. Der SSH-Client (zum Verbinden des Servers mit einem weiteren PC) kann bei Bedarf gleich mit installiert werden.

sudo apt-get update
sudo apt-get install openssh-server openssh-client

Nach der Installation muss der OpenSSH-Server eventuell noch händisch gestartet werden. Dies geht mittels:

sudo service ssh start

Nun sollte der Server laufen. Für einen ersten Test begeben wir uns an einen der anderen beiden Computer. Um uns nun zu dem Server zu verbinden, benötigen wir nun noch einen SSH-Client für das jeweilige Betriebssystem. Nachfolgend werde ich jeweils auf Windows als auch auf Linux eingehen.

SSH Verbindung unter Windows mittels Putty herstellen

Der vermutlich populärste Client unter Windows ist Putty. Alternativ kann aber auch z.B. OpenSSH für Windows installiert werden, darauf gehe ich aber noch im nächsten Abschnitt ein.

Zuerst wird natürlich einmal Putty selbst benötigt. Den Downloadlink findet ihr hier. Wer lieber eine portable Version für seinen USB-Stick mag, findet diese hier. Die Installation von Putty selbst, sollte unmissverständlich sein.

Nach der Installation starten wir Putty. Im Connection Tab geben wir die IP/den Hostnamen des Servers ein und wählen als Verbindungstyp SSH. Der vorausgewählte Port (22) kann so belassen werden. (22 ist der Standardport für das SSH-Protokoll.)
Mit einem Klick auf Connect geht es auch schon los.

putty ssh login configuration    putty ssh linux login   putty ssh linux login successful

Sollte alles geklappt haben, erscheint im Konsolenfenster die Aufforderung zur Eingabe des Usernames sowie des Passworts. Zum Test melden wir uns einmal am Linux Server an und beenden die Verbindung daraufhin mittels des “exit”-Befehls wieder.

SSH Verbindung unter Windows mittels OpenSSH für Windows

OpenSSH für Windows gibt es im Gegenteil zu Putty nicht als portable Version. Das Setup könnt ihr von hier herunterladen. Während der Installation werdet ihr gefragt, ob ihr nur den Client oder auch den Server installieren wollt. Für unser Tutorial reicht der Client. Wenn ihr den Server installiert, euch jedoch später gar nicht auf euren Windows PC per Remote einloggen wollt, dann stellt der Server nur ein unnötiges “Sicherheitsrisiko” dar.

Nach der Installation öffnet ihr die Konsole (Win+R / Ausführen -> “cmd”). Um zu überprüfen, ob die Installation geklappt hat, gebt ihr folgenden Befehl ein.

ssh -v

Ihr solltet nun die installierte OpenSSH Version angezeigt bekommen. Erscheint stattdessen nur der Hinweis, dass der Befehl “ssh” ungültig ist, so müsst ihr noch die Umgebungsvariable für Windows anpassen. Dies geht ebenfalls direkt aus der Kommandozeile.

setx PATH "C:\Program Files (x86)\OpenSSH\bin;%path%"

(Wobei “C:\Program Files (x86)\OpenSSH\bin” den Pfad zur eurer OpenSSH Installation darstellt und bei euch ggf. abweichen kann!) Achtung: Nachdem ihr den setx-Befehl ausgeführt habt, müsst ihr das cmd-Fenster schließen und ein Neues öffnen. In dem Fenster in dem setx ausgeführt wurde, werden die Änderungen noch nicht beachtet.

Nun können wir uns mit ssh zu unseren Linux Server verbinden. Hier zu ist folgender Befehl nötig:

ssh user@meine_ip

“user” gibt hierbei den Benutzernamen an, unter dem ihr euch auf dem Linux-Server anmelden wollt. “meine_ip” müsst ihr durch den Hostnamen bzw. die IP-Adresse des Linux-Servers ersetzen.

openssh for windows login  openssh for windows login password  openssh for windows logged in

Wenn alles geklappt hat, solltet ihr nach dem Passwort für “user” gefragt werden. Gebt dieses ein und schließt danach die Verbindung mittels des “exit” Befehls.

SSH Verbindung unter Linux mittels OpenSSH

In den meisten fällen sollte der OpenSSH Client unter Linux schon installiert sein. Dies können wir testen, in dem wir probieren die installierte Versionsnummer abzufragen. Hier zu öffnen wir einen Terminal/Shell und geben folgenden Befehl ein.

ssh -v

Wenn der OpenSSH-Client installiert ist, dann sollten wir die Versionsnummer angezeigt bekommen. Ist dies nicht der Fall müssen wir zuerst noch den OpenSSH-Client installieren. Bei auf Ubuntu basierenden Linux-Distributionen geht das zum Beispiel wie folgt.

sudo apt-get install openssh-client

Nach der Installation kann es auch schon losgehen. Die Verbindung wird genauso aufgebaut wie bei der OpenSSH-Variante für Windows, welche ich weiter oben im Artikel schon beschrieben habe.

ssh user@meine_ip

“user” gibt hierbei wieder den Benutzernamen an, mit dem ihr euch auf dem Linux-Server anmelden wollt. “meine_ip” müsst ihr wieder durch den Hostnamen bzw. die IP-Adresse des Linux-Servers ersetzen.

openssh_linux_connect  openssh_linux_login  openssh_linux_logged_id

Auch hier gilt. Wenn alles geklappt hat, solltet ihr mit eurem Linux-Server verbunden und nach dem Passwort für den User auf dem Linux-Server gefragt werden. Wenn ihr eingeloggt seit, könnt ihr die Verbindung mittels des Befehls “exit” wieder trennen.

Fazit

Das war der erste Teil der Artikelserie zu OpenSSH. Wir sollten nun einen lauffähigen OpenSSH Server haben und fähig sein uns von einem Windows Computer aus mit diesem zu verbinden. Im nächsten Artikel geht es um die grundlegende Absicherung des OpenSSH Servers. Im dritten Teil geht es dann im speziellen um die Anmeldung mittels Private-Key.

1

Vim Standard Farbschema festlegen

Nachdem ich zuletzt Vim vorgestellt und die nötigsten Befehle erklärt habe, gibt es heute gleich einen Tipp für die Nutzung mit Vim. Wie bereits beschrieben, bringt Vim Syntaxhightlighting mit sich. Leider ist dieses in der Standardeinstellung, je nach Dateityp und Monitor schwer lesbar. Deshalb möchte ich euch nachfolgend zeigen, wie ihr das Vim Syntaxhighlighting Theme ändern könnt.

Vim Syntaxhighlighting Farbschema ändern

Nachdem ihr Vim geöffnet habt, könnt ihr mit dem “colo”-Befehl das Farbschema ändern.

:colo murphy

Wie ihr seht, wird das Farbschema aus dem Kommandomodus aus eingestellt. Dabei lautet der Befehl “colo” und mit einem Leerzeichen Abstand folgt dann der Name des Farbschemas. (Wer mag, kann statt “colo” auch “colorscheme” verwenden. “colo” ist lediglich der Kurzbefehl.)

vim colo murphy  vim colo blue

Wenn ihr einen Überblick über die installierten Farbschemen haben wollt, dann tippt nur “:colo ” und drückt danach Ctrl+d – so solltet ihr einen Übersicht über alle verfügbaren Schemen bekommen.

vim verfügbare colorschemes

Vim Standard-Farbschema ändern

Um das vorausgewählte Standard-Farbschema in Vim zu ändern, muss dieses in der Vim-Config eingetragen werden. Diese heißt “.vimrc” und sollte sich in eurem Homeverzeichnis (~/) befinden. Das Farbschema wird innerhalb der .vimrc genauso angegeben wie in Vim direkt, mit dem einzigen Unterschied, dass ihr den Doppelpunkt am Anfang des Befehls weglasst. Um das Default-Farbschema auf “murphy” festzulegen, wären also folgende Schritte nötig.

vim ~/.vimrc

In die .vimrc müsst ihr nun folgende Zeile hinzufügen bzw. überschreiben (falls sie schon existiert).

colo murphy

Abschließen müsst ihr die “.vimrc” noch mittels :wq speichern und schließen. Beim nächsten Start von Vim wird nun eurer selbst gewähltes Farbschema für das Syntaxhighlighting verwendet.

1

Vim – Einsteiger Tutorial

vim screenshotVim ist ein ein Open Source-Texteditor, der unter Linux, MacOSX, Windows und vielen anderen Betriebssystemen läuft. Wenn ich Vim in einem Wort beschreiben sollte, dann würde mir als Erstes “mächtig” einfallen. Vim unterstützt Syntaxhighlighting für wirklich fast jedes Format und viele weitere Extras.

Mächtig ist jedoch auch die Lernkurve, denn Vim lässt sich vollständig über die Tastatur bedienen. Es gibt Unmengen an Befehlen und Tastenkombinationen. Wenn man sich jedoch erst einmal eingelebt hat, dann ist Vim ein wunderbares Werkzeug. Allein die Tatsache, dass Vim eigentlich auf jedem Linux System zu finden ist, egal wo und unter welcher Distribution man gerade arbeitet, ist ein guter Grund sich wenigstens die Basics in der Bedienung von Vim anzueignen. Deshalb gibt es an dieser Stelle heute hier eine Mini-Referenz für Vim mit den nötigsten Befehlen, um mit Vim zu arbeiten.

Vim  – die Basics

Gestartet wird Vim mittels des Befehls vi oder Vim. Möchte man eine Datei öffnen, so schreibt man diese einfache dahinter.

vim meine_datei.txt

Nachdem Vim gestartet ist, befindet man sich im Normalmodus. Insgesamt gibt es drei Modi in Vim. Den Normalmodus, den Einfügemodus und den Kommandozeilenmodus. Möchte man in der Datei “frei” schreiben, muss man in den Einfügemodus wechseln. Aber auch aus dem Normalmodus heraus lassen sich spezielle Operationen zur Bearbeitung ausführen.

Einfügemodus
i – in den Einfügen-/Bearbeitungsmodus wechseln
Shift+a – setzt den Cursor an das Ende der Zeile und wechselt in den Einfügen-/Bearbeitungsmodus
Esc – Einfügemodus verlassen / in den Normalmodus zurückkehren

Normalmodus
x – löscht das Zeichen unter dem Cursor (im Normalmodus)
r + beliebiges Zeichen – ersetzt das Zeichen unter dem Cursor mit einem beliebigen Zeichen
d d – löscht die aktuelle Zeile
Shift+g – setzt den Cursor an das Ende der Datei

Kommandomodus
: – öffnet den Kommandomodus (nachfolgend direkt in den Befehlen integriert)
:w – speichert die Datei
:sav dateiname.endung – speichert die Datei unter dem Namen dateiname.endung
:q- schließt Vim
:q! – schließt Vim auch, wenn Änderungen noch nicht gespeichert wurden
:wq – speichert die Datei und schließt Vim anschließend

Tipps & Tricks

Copy & Paste

v – wechselt in den Visuellen Modus
Mit dem Cursor den gewünschten Bereich markieren.
y – markierten Bereich kopieren
Mit dem Cursor den Punkt auswählen, an dem eingefügt werden soll.
p – kopierten Text einfügen

Cut & Paste

Ausschneiden und Einfügen funktioniert fast genauso wie Kopieren und Einfügen.
Statt y zum kopieren muss einfach d zum Ausschneiden gewählt werden.

Hilfe / Befehlsübersicht

:help – zeigt die Vim Hilfe inkl. vieler Befehle an
:q – schließt die Vim Hilfe

weitere Seiten ... 1 2 3