Security: Zugang via SSH private/public key

SSH erlaubt einen viel sichereren Weg um sich Einzuloggen als mit Benutzername und Passwort: der Login anhand eines private und public key Verfahrens. Im Gegensatz zu einem Passwort lässt sich dieses Verfahren nicht durch brute force Attacken knacken.

Es wird ein privater und ein öffentlicher Schlüssel generiert, der öffentliche Schlüssel wird dann auf den IOT2040 (SSH Server) übertragen. Ein Client Rechner der sich zum IOT2040 verbinden möchte, benötigt dann den dazugehörigen privaten Schlüssel. Erst wenn beide Schlüssel zusammenpassen wird der Login durchgeführt.

Um die Sicherheit noch weiter zu erhöhen, kann eine Passphrase beim Zugriff auf den privaten Schlüssel (auf dem Client Rechner) vergeben werden. Dies verhindert dann, dass ein Unberechtigter Dritter, der Zugriff auf den Client Rechner hat, auch SSH Zugang zum IOT2040 bekommt.

 

1. Im Terminal des Mac (des Client Rechners) wird zunächst das Schlüsselpaar, bestehend aus private und public key, erzeugt:

ssh-keygen -t rsa

Ein paar Fragen zum Erzeugen der Schlüssel müssen noch beantwortet werden (diese können mit Return bestätigt werden) und die Schlüssel werden erstellt:

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/mats/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/mats/id_rsa.
Your public key has been saved in /Users/mats/id_rsa.pub.
The key fingerprint is:
SHA256:L3eOGZnjJ/Tak7279IznZJ0Vu4YKItI2QAdyA/HGzZU
The key's randomart image is:
+---[RSA 2048]----+
| +o+   ..        |
|  = = .E         |
|   = +         . |
|  o .           o|
|   .    S      ..|
|    o    ..o  . =|
|   . = ..oB..+.++|
|    o o .+oO*.o*.|
|          ==o.=*+|
+----[SHA256]-----+

 

2. Public Key vom Mac auf den IOT2040 kopieren (192.168.78.32 ist die geänderte IP-Adresse des IOT2040):

ssh-copy-id root@192.168.78.32 

Es sollte nun eine Ausgabe erfolgen das der entsprechende public key übertragen wurde. Wer das root Passwort wie oben beschrieben geändert hat, muss es hier natürlich zur Übertragung des Schlüssels eingeben.

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: „~/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.78.32's password: 

Number of key(s) added:        1

Now try logging into the machine, with:   "ssh 'root@192.168.78.32'"
and check to make sure that only the key(s) you wanted were added.

 

3. Wenn alles geklappt hat sollte man sich jetzt ohne Passworteingabe auf dem IOT2040 einloggen können:

ssh root@192.168.78.32

 

4. Ab jetzt kann auf dem IOT2040 ein SSH Zugang per Passwort komplett abgeschaltet werden:

nano /etc/ssh/sshd_config

Folgende Einträge sollten hier in der SSH Konfigurationsdatei gesetzt werden, alle anderen können gefahrlos auskommentiert werden (durch voranstellen von #): 

Protocol 2
PermitRootLogin without-password
PubkeyAuthentication yes
ChallengeResponseAuthentication no
PasswordAuthentication no
AddressFamily inet

Protocol 2 SSH Protokoll Version 2 soll benutzt werden.

PermitRootLogin mit der Einstellung without-password ist dabei etwas missverständlich. Es ermöglicht root logins, aber nur wenn die Authentifizierungmethode eine andere als Passwort war.

PubkeyAuthentication yes Authentifizierung mittels public key aktivieren

ChallengeResponseAuthentication no Diese Authentifizierung fragt ebenfalls nach einem Passwort, deshalb abschalten

PasswordAuthentication no Authentifizierung mittels Passwort abschalten

AddressFamily inet erlaubt SSH nur mit dem Protokoll IPV4 und nicht etwa via IPV6.

 

5. Neustart des IOT2040 durchführen (via „Reboot“) oder nur den SSH Daemon neu starten damit die Änderungen wirksam werden:

/etc/init.d/sshd restart