Router per SSH administrieren

Wenn man auf einen Freifunk-Router nicht immer direkten Zugriff hat, dann ist es manchmal hilfreich, wenn er aus der Ferne administrierbar ist. Da der Konfigurationsmodus erst durch manuellen Tastendruck aktivierbar ist und das Gerät währenddessen auch nicht im Freifunknetz hängt, ist dieser Modus dafür nicht geeignet. Die einzige Möglichkeit zur Konfiguration bietet der SSH-Zugriff. SSH ist ein textzeilenbasiertes Protokoll, das hauptsächlich zur Fernwartung genutzt wird. In diesem Artikel werden ein paar grundlegende Hilfen dargelegt, um sich mit dieser Technologie auf dem Router zurechtzufinden.

Aktivieren

Bevor der SSH-Zugang des Freifunk-Routers benutzt werden kann, muss dieser erst freigeschaltet werden. Dies geht in den "Erweiterten Einstellungen" unter dem Reiter "Remotezugriff" im ConfigMode:

ConfigModeSSH.png
Screenshot im ConfigMode: Remotezugriff in den Erweiterten Einstellungen

Es gibt zwei Möglichkeiten für den Zugriff:
  1. Die passwortbasierte Authentifizierung ist für den Einstieg die einfachere Variante. Wichtig dabei ist, dass du ein sicheres Passwort wählst. SSH-Remotezugriffe sind regelmäßig opfer von sogenannten Brute-Force- oder Wörterbuchattacken, bei denen Listen von häufig genutzten Passwörtern durchprobiert werden. Wenn du nicht möchtest, dass dein Router teil eines Botnetzes wird, dann solltest du ein sicheres Passwort wählen.
  2. Die alternative (und sicherere) Variante ist die Authentifizierung über sogenannte SSH-Keys. Es handelt sich dabei um ein Schlüsselpaar, bestehend aus einem öffentlichen und einem privaten Schlüssel. Der öffentliche Schlüssel wird auf dem Router eingetragen. Gerade wenn man viele Router administriert, ist dies eine wesentlich bequemere Variante. An dieser Stelle wird allerdings nicht weiter darauf eingegangen. Für weitere Informationen ist das Internet zu befragen.

Sobald eine Authentifizierungsmethode konfiguriert wurde und der Router neugestartet wurde, ist der SSH-Zugriff freigeschaltet.

Verbinden

Um sich mit dem Freifunk-Router zu verbinden, wird ein SSH-Client benötigt. Unter Linux ist bereits der OpenSSH-Client installiert. Unter Windows kann auf das Tool PuTTY zurückgegriffen werden, dass eine grafische Oberfläche zum Verbinden mitbringt.

Um den Router auszuwählen, mit dem man sich verbinden will, gibt es in unserem Netz die Möglichkeit auf unsere Namensauflösung zurückzugreifen. Ist ein Router beispielsweise als "Kroepcke-FFH" benannt, so ist er über den Identifier kroepcke-ffh.n.ffh.zone erreichbar. Solange der Router eine Verbindung zum Internet hat, ist er nicht nur aus dem Freifunknetz administrierbar, sondern von jedem Netz in dem es IPv6-Internetzugang gibt. Als Nutzername auf dem Router muss "root" ausgewählt werden.

Unter Linux kann die Verbindung in einem Terminal über folgenden Befehl aufgebaut werden:

ssh root@kroepcke-ffh.n.ffh.zone

Bei erfolgreicher Verbindung zeigt sich auf der Konsole nun die Banner-Notiz des Routerbetriebssystems OpenWrt und eine Eingabezeile:

lemoer@orange ~> ssh root@crashtester.n.ffh.zone


BusyBox v1.23.2 (2017-09-25 18:45:14 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 CHAOS CALMER (Chaos Calmer, r49389)
 -----------------------------------------------------
  * 1 1/2 oz Gin            Shake with a glassful
  * 1/4 oz Triple Sec       of broken ice and pour
  * 3/4 oz Lime Juice       unstrained into a goblet.
  * 1 1/2 oz Orange Juice
  * 1 tsp. Grenadine Syrup
 -----------------------------------------------------
root@crashtester:~# 

Grundlegende Befehle

Das Betriebssystem der Router basiert auf Linux und deshalb verhält es sich auch sehr ähnlich, wie ein Laptop mit einem Linux-Betriebssystem. Wer jedoch noch nie mit Linux in Kontakt gekommen ist oder in Linux noch keine Kommandozeile bedient hat, für den dürften nun einige hilfreiche Tipps folgen.

Das Dateisystem in Linux ist in einer streng hierarchischen Struktur aufgebaut. Das Wurzelverzeichnis ist /. Wenn du dich auf dem Router einloggst, dann befindest du dich in dem Ordner /root, der für die Dateien des Benutzers "root" vorgesehen ist. Die ersten grundlegenden Befehle um zu navigieren:
  • Dateien im aktuellen Verzeichnis anzeigen:

    root@crashtester:~# ls
    speedtest.sh

    Es existiert eine Datei namens "speedtest.sh".

  • Dateien und Ordner in dem Verzeichnis /etc/config anzeigen:

    root@crashtester:~# ls /etc/config/
    autoupdater gluon-setup-mode
    autoupdater-wifi-fallback gluon-wan-dnsmasq
    babeld luci
    batman-adv network
    dhcp simple-tc
    dropbear socat
    fastd system
    firewall ucitrack
    fstab uhttpd
    gluon-core vnstat
    gluon-node-info wireless
    gluon-radv-filterd 

    Es existieren mehrere unterschiedliche Dateien bzw. Ordner. Das ist in dieser Ansicht nicht unterscheidbar.

  • In das Verzeichnis /lib/gluon wechseln:

    root@crashtester:~# cd /lib/gluon/
    root@crashtester:/lib/gluon# 

    Das aktuelle Verzeichnis ist nun /lib/gluon. Das ist nun auch in der Eingabezeile links von dem Rautezeichen (#) zu erkennen.

  • In das Unterverzeichnes "autoupdater" des aktuellen Verzeichnisses wechseln:

    root@crashtester:/lib/gluon# cd autoupdater
    root@crashtester:/lib/gluon/autoupdater#

    Das aktuelle Verzeichnis ist nun /lib/gluon. Das ist nun auch in der Eingabezeile links von dem Rautezeichen (#) zu erkennen.

info Tipp: Probiere während du den Namen eines Verzeichnisses oder einer Datei die Taste Tab zu drücken. Ist eine Autovervollständigung des momentanen Dateinamens möglich, dann wird dieser nun vervollständigt. Durch doppeltes Drücken der Taste Tab werden weitere Vorschläge angezeigt.

Konfigurationen bearbeiten

Um die Konfiguration des Routers zu bearbeiten gibt es zwei Wege. Es können direkt die Konfigurationsdateien bearbeitet werden, oder das Konfigurationstool UCI (unified configuration interface) genutzt werden.

Das Konfigurationstool UCI

Mit dem Tool UCI hat man die Möglichkeit einzelne Einträge der Konfiguration zu verändern. Hier ein paar hilfreiche Befehle:

  • Auflisten aller gesetzten Konfigurationswerte:

    root@crashtester:~# uci show
    autoupdater.settings=autoupdater
    autoupdater.settings.version_file='/lib/gluon/release'
    autoupdater.settings.enabled='1'
    …
    wireless.client_radio1.macaddr='64:66:b3:de:dd:57'
    wireless.client_radio1.ssid='hannover.freifunk.net'
    

    Die Liste an Konfigurationswerten ist sehr lang, da auf der Konfigurationsoberfläche im ConfigMode nur ein kleines Subset der eigentlichen Konfigurationsmöglichkeiten dargestellt werden.

  • Suchen nach einem bestimmtenten Konfigurationswert:

    root@crashtester:~# root@crashtester:~# uci show | grep -i hannover
    wireless.client_radio0.ssid='hannover.freifunk.net'
    wireless.client_radio1.ssid='hannover.freifunk.net'
    

    Da es sich bei diesem Gerät um ein Dual-Band-Gerät mit zwei WLAN-Radios handelt, ist die SSID auch in zwei Konfigurationswerten gespeichert.

  • Einen Wert verändern:

    root@crashtester:~# uci set autoupdater.settings.branch='nightly'
    root@crashtester:~# uci commit
    

    Nachdem ein Wert verändert wurde, muss dieser noch durch das "commit" in den Flash-Speicher des Routers geschrieben werden. Lässt man das "commit" weg, so bleibt die Änderung nur bis zum nächsten Neustart des Routers erhalten.

alert Wichtig: Wahllos irgendwelche Werte in der Software zu ändern, kann zu undefiniertem Verhalten führen. In dem Wiki der Freifunksoftware wurden an folgender Stelle alle relevanten Konfigurationsänderungen gut dokumentiert.

info Link: Alle wichtigen Konfigurationänderungen in der Übersicht

Konfigurationsdateien bearbeiten mit vi

Für manche Änderungen wird das Ändern der Konfiguration mit UCI ein wenig unübersichtlich und komplex. Man kann ebenfalls direkt die Konfigurationsdateien in den UCI seine Werte abspeichert, bearbeiten. Diese liegen in dem Verzeichnis /etc/config/... und sind einfache Textdateien.

Mit dem Texteditor vi lassen sich diese Dateien bearbeiten. Der Texteditor ist jedoch vorerst ein wenig gewöhungsbedürftig. Er besitzt zwei "Modi": den "Insert Mode" und den "Normal Mode". Wenn man den Texteditor startet befindet er sich im "Normal Mode". Will man etwas an der Datei verändern, muss man zunächst in den "Insert Mode" wechseln. Dies geschieht durch Drücken der Taste i. Ganz unten links im Editor wird nun ein "I" angezeigt. Nun kann, wie gewohnt, die Datei editiert werden. Ist man zufrieden, dann muss der "Insert Mode" wieder verlassen werden. Dies geschieht durch drücken der ESC -Taste. Nun befinden wir uns wieder im "Normal Mode". Durch Tippen der Tastenkombination :wq (write, quit) kann der Editor verlassen werden. Will man die Änderungen, die man gemacht hat, verwerfen, quittiert man den Editor mit der Tastenkombination :q! (quit, force). Lässt man das Ausrufezeichen weg, beendet sich der Editor nur, wenn keine Änderungen an der Datei vorgenommen wurden.
Impressum -- Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.