Wechseln zu: Navigation, Inhalt, Suche

Permalink

1

HowTo: OpenSSH-Server konfigurieren (mit Authentifizierung über öffentliche Schlüssel)

Bei SSH handelt es sich um ein Netzwerkprotokoll, mit dem über eine verschlüsselte Verbindung die Konsole eines entfernten Computers bedienen kann. Außerdem gibt es die Möglichkeit Port-Weiterleitungen einzurichten und über SFTP Dateien zu übertragen. Spätestens, wenn man einen Server betreibt wird man diese Vorteile zu schätzen wissen, sollte diesen aber auch absichern, damit Hacker erst gar keine Chance haben.

Ubuntu Home-Server

Login über einen anderen Benutzer

Zu aller Anfang sollte man den Login von root komplett verbieten. Dazu legt man zunächst einen neuen Benutzer unter Ubuntu an, mit dem man sich in Zukunft über SSH einloggt. Von diesem Zugang aus kann man dann immer noch mittels sudo su zum Superuser root werden. Man legt zuerst einen neuen Benutzer mit einem Benutzernamen und einem Kennwort an

Da der neu angelegte Benutzer später den Befehl sudo ausführen soll, muss man ihn noch zur sudo-Gruppe hinzufügen

Nun sollte man sich einmal mit dem neuen Benutzer einloggen und testen, ob es auch geht. Hat alles geklappt, wird man root und bearbeitet die Konfigurationsdatei von sshd

Die Zeile

wird geändert zu

Dann wird die Datei abgespeichert und wieder geschlossen. Damit die Änderungen übernommen werden, muss entweder der komplette Rechner oder, was wesentlich praktischer ist, der ssh-Dienst neugestartet werden. Jetzt sollte man sich nicht mehr als root einloggen können.

Hinweis: Der ssh-Dienst erhält bestehende Verbindungen weiterhin aufrecht, selbst wenn er neu gestartet wurde. Man kann also zur Sicherheit die bestehende Verbindung geöffnet lassen, um im Notfall die Konfigurationsdatei noch erreichen zu können. Wenn alles geklappt hat, kann man die Verbindung schließen.

oder

Ab jetzt kann man nur noch per

zum Superuser werden.

Authentifizierung über öffentliche Schlüssel

Zunächst ein Schlüsselpaar (öffentlicher & privater Schlüssel) erstellt werden.

Erstellung eines Schlüsselpaares unter Windows mit Putty

Als Erstes startet man das Programm PuttyGen. Dann wählt man unter dem Punkt Parameters den Schlüsseltyp SSH2 RSA aus und gibt als Schlüssellänge 4096 Bits an. Mit einem Klick auf Generate wird das Schlüsselpaar erzeugt. Da PuttyGen Mausbewegungen nutzt, um einen Zufälligkeitsfaktor zu generieren, muss man die Maus solange über die graue Fläche bewegen, bis der Balken 100% erreicht hat.
Als Key Comment sollte man eine Beschreibung des Schlüssels eingeben (z.B. benutzername@servername) und als Passphrase ein sicheres Kennwort für den privaten Schlüssel. Zum Schluss werden privater und öffentlicher Schlüssel abgespeichert.
Man loggt sich nun auf dem Server ein ohne root zu werden und erstellt im Home-Verzeichnis des Benutzers ein neues Verzeichnis mit dem Namen .ssh und darin eine neue Datei authorized_keys

Anschließend kopiert man den Inhalt aus dem Fenster im Bereich Public key for pasting ... in die erstellte Datei.
Wichtig: Der gesamte Inhalt muss in der ersten Zeile der Datei stehen. Danach werden noch die Rechte für die Datei gesetzt.

Um das Schlüsselpaar unter Putty zu verwenden läd man dort die gespeicherte Sitzung für den Server. Anschließend geht man in den Optionen zu "Connection" > "SSH" und wählt unter Preferred SSH Version den Eintrag 2 only aus. Unter "Connection" > "SSH" > "Auth" wählt man unter Private key file for authentication den entsprechenden privaten Schlüssel (Dateiendung: .ppk) aus. Unter "Options" > "Session" und speichert man die veränderten Einstellungen der Sitzung ab.
Beim Einloggen gibt man als Benutzer den Namen des Benutzers an, in dessen Home-Verzeichnis der öffentlichen Schlüssel gespeichert ist. Das zugehörige Passwort ist das bei der Erstellung des Schlüsselpaares angegebene (nicht das Passwort des Benutzers auf dem Server). Es dient nur dazu den privaten Schlüssel vor Missbrauch zu schützen.

Erstellung eines Schlüsselpaares unter Linux mit OpenSSH

Man öffnet eine Kommandozeile und erstellt ein neues RSA-Schlüsselpaar

Man wird dazu aufgefordert, einen Verzeichnisnamen anzugeben, in dem das Schlüsselpaar erstellt werden soll. Mit Eingabetaste kann man den Standardwert bestätigen. Alternativ besteht die Möglichkeit, durch anhängen von -f client-rsa direkt einen besseren Namen zu vergeben. Anschließend muss das Kennwort eingegeben werden, um den privaten Schlüssel zu schützen.
Im angegebenen Verzeichnis findet sich nun das neue Schlüsselpaar. Der private Schlüssel heißt standardmäßig id_rsa, der öffentliche id_rsa.pub. Man überträgt den öffentlichen Schlüssel ins Home-Verzeichnis auf dem Server. Dazu empfiehlt es sich eine verschlüsselte Übertragungstechnik wie SCP oder SFTP zu verwenden.

Als Nächstes wird der Schlüssel an die Datei authorized_keys im Verzeichnis .ssh angehängt und dem Server so als autorisierten Schlüssel übergeben. Man loggt sich dabei auf dem Server ein, ohne root zu werden

Berechtigungen vergeben

Nun ist der Server konfiguriert und man kann eine Verbindung starten

Hat alles geklappt, können die Einstellungen in die eigene angepasste Client-Konfigurationsdatei (~/.ssh/config) eintragen werden

Jetzt kann man sich ganz einfach mit dem Server verbinden

Laufzeitkonfiguration von ssh

In meiner Konfiguration habe ich einige Anpassungen zur Verbesserung der Sicherheit vorgenommen. Unter anderem verwende ich den Port 2222 anstatt den Standard-Port 22, damit Port-Scans ins Leere laufen.

Außerdem soll nur das sichere SSH2 verwendet werden

Ein Benutzer hat nur 30 Sekunden Zeit, um sich einzuloggen. Ansonsten wird die Verbindung abgebrochen. Es kann sich zudem immer nur ein Benutzer gleichzeitig einloggen.

Die Client-Konfiguration (z.B. in Putty oder der Konfigurationsdatei für OpenSSH) muss natürlich daraufhin noch angepasst werden.
Meine aktuelle Konfiguration als Beispiel (Download):

oder

Die Konfiguration von sshd ist nun abgeschlossen.

SSH Begrüßungsnachricht ändern

Wer nicht daran interessiert ist, bei jedem Login darüber aufgeklärt zu werden, dass die Ubuntu-Entwickler für keinerlei Schaden haften, der kann in der Datei /etc/motd eine eigene Begrüßungsnachricht angeben oder den Inhalt einfach löschen. Dort steht nämlich, was dem Benutzer nach dem Login via ssh angezeigt wird.

Links

1 Kommentar

  1. Pingback: Anonymous

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert. Bitte beachten Sie meine Datenschutzerklärung.