Fernzugriff auf den Raspberry Pi – Teil 3 (SSH – Secure Shell)

1
0

Werbung:

Die einfachste Variante: SSH

Die fiese Konsole – Manche lieben sie, manche hassen sie… ich finde sie nützlich für das was ich tun will

SSH auf dem Raspberry installieren/aktivieren

Mittels der Secure Shell ist es möglich auf den Raspberry Pi zuzugreifen und die wichtigsten Dinge zu erledigen. Die aktuelle Raspian (Debian für den Raspberry Pi) Distribution (im November 2014) bringt schon alles mit, was man hierfür benötigt. Noch sollte der Raspi aber direkt ansprechbar sein, also über HDMI mit einem Display und mit mindestens einem USB-Keyboard, besser noch Maus ausgestattet sein.

Werbung:

Im nächsten Schritt müssen wir diesen Zugang nur noch aktivieren. Hierzu wird das Konfigurationsmenü, welches man schon zu Anfang durchlaufen haben sollte (sonst wäre Raspian ja noch nicht am Laufen…), erneut aufgerufen:

sudo raspi-config

 

...die Konsolenausgabe von raspi-config
…die Konsolenausgabe von raspi-config

Hier gibt es (je nach Version) direkt den Unterpunkt „ssh“ oder man muss den Punkt „Advanced Options“ aufrufen und dort ssh aktivieren. Ist die Option wirklich gar nicht zu finden, so kann man über nachfolgende Befehle die benötigten Pakete installieren, den Server starten und mit dem dritten Befehl dafür sorgen, dass der Server auch nach einem Reboot ebenfalls automatisch neu gestartet wird:

sudo aptitude install ssh
sudo /etc/init.d/ssh start
sudo update-rc.d ssh defaults

anstatt der Variante mit dem Tool Aptitude, kann man auch den Befehl apt-get wählen. Hierzu einfach „aptitude“ durch „apt-get“ ersetzen. Da ich aber durchweg die besten Erfahrungen mit Aptitude gemacht habe verwende ich es standardmäßig. Wer es lieber graphisch möchte, der sollte sich das Frontend „Synaptic“ einmal näher anschauen.

Das war zunächst alles, was notwendig ist um in Zukunft den Raspberry über seine IP-Adresse auf Port 22 anzusprechen.

Auf dem Clientcomputer muss man nun lediglich ein Programm installieren oder ausführen, mit dem man einen Zugriff via ssh realisieren kann. Dies kann zum Beispiel ein Plugin für Firefox sein (FireSSH), oder eine Konsolenanwendung für Windowssysteme wie PuTTY (dieses kostenfreie Tool beherrscht auch noch andere Verbindungsarten wie Telnet). Auch Androidgeräte bieten mittlerweile eine Vielzahl von guten SSH-Clientanwendungen. Mein persönlicher Favourit ist hier JuiceSSH und die speziell für den Raspberry geschriebene Anwendung RaspControl.

Den Raspberry auch von Ausserhalb ansprechen!

Wer glaubt, jetzt kann er von überall auf der Welt auf den Raspberry zugreifen… der irrt leider etwas. Ganz so leicht geht es doch nicht. Wenn du wie im zweiten Teil beschrieben dem Raspberry Pi eine eigene IP-Adresse zugewiesen hast, dann hat er zumindest im Privaten Netzwerk eine Adresse auf der man ihn ansprechen kann. Das wäre zum Beispiel etwas wie: 192.168.2.106:22

Wie du dir vielleicht denken kannst bedeutet die „:22“, dass diese Netzwerkadresse auf Port 22 angesprochen werden soll. Jetzt gibt es aber das Problem, dass diese internen Netzwerkadressen nicht vom Internet aus erreichbar sind. Das bedeutet, dass man seinem Router (und zwar, der, der sowohl die DHCP-Adressen, als auch den Internetzugang bereitstellt) noch beibringen muss, die Anfragen auf Port 22, genau an den Raspberry weiterzuleiten. Hat man mehr als ein Gerät im Netzwerk, dass mittels SSH angesprochen werden muss gibt es jetzt zwei Wege:

Entweder, man läßt jedes Gerät auf Portt 22 lauschen, spricht den Router dann über einen anderen Port an und definiert eine Weiterleitung (einfache Methode), oder man verteilt gleich andere Portnummern auf die weitergeleitet wird (mehr Aufwand, eventuell etwas übersichtlicher).

Beispiel zu eins:
2 SSH-Server beide auf Port 22 konfiguriert (Standard).

IP von Server 1 ist 192.168.40.40
IP von Server 2 ist 192.168.40.41

Zwei Weiterleitungen müssen konfiguriert werden.

[öffentliche IP]:2240 wird weitergeleitet an 192.168.40.40:22
[öffentliche IP]:2241 wird weitergeleitet an 192.168.40.41:22

 

Beispiel zu zwei:
2 SSH-Server einer auf Port 22 konfiguriert (Standard), einer auf Port 23 konfiguriert (angepasse Installation

IP von Server 1 ist 192.168.40.40
IP von Server 2 ist 192.168.40.41

Zwei Weiterleitungen müssen konfiguriert werden.

[öffentliche IP]:22 wird weitergeleitet an 192.168.40.40:22
[öffentliche IP]:23 wird weitergeleitet an 192.168.40.41:23

Ich bevorzuge die erste Variante, aber im Grunde genommen ist es egal und vom persönlichen Geschmack abhängig.

SSH-Port ändern

Möchte man Variante 2 wählen, so muss der Port der SSH-Installation geändert werden. Hierzu muss man eine Konfigurationsdatei anpassen, speichern und den SSH-Serverdienst neu starten. Dies geschieht wie folgt:

sudo nano /etc/ssh/sshd_config

Hier muss man den Eintrag „Port 22“ auf (beispielsweise) „Port 2240“ ändern.
Danach den Serverdienst neu starten:
sudo /etc/init.d/ssh restart
Fertig! Der Server lauscht jetzt auf Port 2240 statt 22. Angemerken möchte ich noch, dass diese Methode gerne benutzt wird, um Angriffe etwas zu erschweren, da unerfahrene Angreifer zunächst die Standardports austesten.

Den Server weiter vor Angriffen absichern

Möchte man nun die Sicherheit etwas erhöhen, so gibt es ein paar einfache Möglichkeiten. Zum einen gibt es das Programm fail2ban.

Dieses Tool unterbindet automatische Programme, die Passwärter durch probieren erraten (sogenannte Brute-Force Attacke). Sendet eine IP-Adresse (also ein anderer Rechner) zu oft anfragen, wird diese IP für einen gewissen Zeitraum gesperrt und kann keine weiteren Angriffe mehr unternehmen. Installieren kann man das Programm mittels „aptitude install fail2ban“. Wer möchte, kann fail2ban natürlich auch weiter konfigurieren, aber die Standardeinstellungen sollten ausreichend sein.

Eine weitere Möglichkeit Angriffe zu erschweren liegt darin, mit einem SSH-Schlüssel zu arbeiten, statt einem einfachen Passwort. Diese Vorgehensweise werde ich später in einem separaten Artikel beschreiben.

1
0

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.