SSH Daemon

Login für Root verbieten

Um dem Benutzer „root“ den Login per SSH zu verbieten, muss ein neuer Benutzer angelegt werden, welcher dann als „Loginuser“ dient.

      # adduser loginusername

Nach dem anlegen wird folgendes in /etc/ssh/sshd_config geändert:

      PermitRootLogin no

Nach dem Login mit dem „Loginuser“ wechselt man mit dem „su“ Kommando in eine root Konsole.

Port verbergen (Security by Obscurity)

Bringt Sicherheitstechnisch recht wenig, hält aber Logfiles sauber und verhindert Bruteforce Attacken, die vollautomatisch durchgeführt werden (z.B. durch Botnetze , da diese in der Regel nur nach Standardports suchen).

Dazu wird der Defaultport des SSH Daemons (Port 22) in den unprivilegierten Bereich (ab Port 1024) gelegt. Die Nummer sollte sich natürlich nicht mit einem anderen Daemon der auf dieser Maschine läuft, überschneiden.

Configfile /etc/ssh/sshd_config editieren:

      Port 2324

Nach dieser Änderung muss der Port beim SSH Client mit angegeben werden, um sich verbinden zu können. Dies erfolgt mit der Option „-p“.

      ~$ ssh username@servername -p 2324

In „/etc/ssh/banner“ kann man eine Begrüßung oder Ähnliches hinterlegen, die dann beim Login angezeigt wird (vor der Passwort Abfrage). Ich bevorzuge Sätze wie diesen:

      Unauthorized access to this server is forbidden by applicable law!

Configfile /etc/ssh/sshd_config editieren:

      Banner /etc/ssh/banner

Public Key Authentication

Dieses Verfahren sollte unbedingt eingesetzt werden. Bei der Public Key Authentication loggt man sich nicht mehr mit Benutzername und Passwort ein, sondern mit einem Schlüssel. Es existiert ein Schlüsselpaar, bestehend aus einem privaten und einem öffentlichen Schlüssel. Der öffentliche Schlüssel liegt auf dem Server, der private wird geheim gehalten (!) und kann sich im Homeverzeichnis, auf einem Mobilen Datenträger oder eine Smartcard befinden. Wichtig ist hierbei, das der private Schlüssel wirklich geheim bleibt.

Das hat den entscheidenden Vorteil, dass Bruteforce Angriffe gegen den SSH Daemon unsinnig werden (weil zusätzlich der Passwort Login abgeschaltet wird).

Zusätzlich wird der private Schlüssel mit einer Passphrase verschlüsselt. Somit bräuchte der Angreifer für einen erfolgreichen Login am SSH Server den privaten Schlüssel und die Passphrase.

Folgende Schritte sind nötig um den Client vorzubereiten:

      ~$ mkdir .ssh
      ~$ chmod 700 .ssh/
      ~$ cd .ssh/
      ~$ ssh-keygen -t rsa -C „Kommentar“

Der obige Befehl erwartet eine Passphrase. Diese muss dann vergeben (und nie mehr vergessen!) werden. Es werden zwei Dateien erstellt:

id_rsa: Der private key

id_rsa.pub: Der public key

Nach dem erstellen des Schlüsselpaars muss der public key auf den Server transferiert werden. Dies muss sicher geschehen, darum wird scp verwendet.

      ~$ scp -P 2324 id_rsa.pub username@servername:/home/$REMOTEUSER

Nun wird der Server für dieses Verfahren vorbereitet (im Homeverzeichnis des Users, der sich per Public Key Authentication einloggen können soll):

      ~$ mkdir .ssh
      ~$ chmod 700 .ssh/
      ~$ cat id_rsa.pub >> .ssh/authorized_keys
      ~$ chmod 600 .ssh/authorized_keys
      ~$ rm id_rsa.pub

Nun muss noch auf dem Server der SSH Daemon angepasst werden. Dazu wird folgendes in der Datei /etc/ssh/sshd_config geändert:

      PubkeyAuthentication yes
      PasswortAuthentication no
      UsePAM no

Danach muss der SSH Daemon neu gestartet werden, damit die Einstellungen aktiviert werden. Dies geschieht durch folgendes Kommando:

      /etc/init.d/ssh restart

Beim nächsten mal funktioniert der Login nur noch über Public Key Authentication. Auf dem Client muss noch der Public Key gelöscht werden.

 
ssh_daemon.txt · Zuletzt geändert: 2010/02/22 21:49 von joe
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht:Public Domain
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Run by Debian Driven by DokuWiki