ADMIN

2021

12

2021-12-01T12:00:00

Small Business IT

PRAXIS

050

Netzwerkmanagement

Remote-Management

Automatisierung

Tools

Fernwartung und Automatisierung mit RPort

Licht am Ende des Tunnels

von Thorsten Kramm

Veröffentlicht in Ausgabe 12/2021 - PRAXIS

Ferwartung ist oft leichter gesagt als getan, denn Firewalls und NAT versperren dem IT-Verantwortlichen in der Praxis den Zugang zu den Remote-Systemen. Die freie Software RPort umgeht diese Hürden und erlaubt Fernwartung per Tunnel. So gelingt mit der Open-Source-Software die Administration lokal, in der Cloud und auf PCs im Home Office. Dieser Workshop zeigt die Installation und den Einsatz von RPort.

Die Zeiten, als alle Server und die Mitarbeiter-PCs sich in einem gemeinsamen Subnetz befanden, sind lange vorbei. Längst hat sich die IT-Infrastruktur über verschiedene Standorte, Dienstleister und Netzwerke ausgebreitet. Und die Geräte an den Heimarbeitsplätzen der Kollegen fallen häufig auch noch in den Zuständigkeitsbereich von Systemadministratoren. Die Übersicht über eine wachsende Anzahl an Servern und Geräten zu behalten, stellt für viele IT-Abteilungen ein Problem dar: Für welche Systeme ist welches Team verantwortlich? Wo befinden sich diese? Und wie gelingt schnell der Fernzugriff?
Fernzugriff bedeute in der Regel nicht, die IP-Adresse des entfernten Systems in den Remote-Desktop- oder SSH-Client einzugeben und schon ist der Admin eingeloggt. Firewalls und Router erlauben dies nur in seltenen Fällen. Jump-Hosts, SSH-Ketten oder VPNs sind gängige Technologien, um Systeme hinter Firewalls zu erreichen. Doch dies bedeutet bei VPNs erheblichen Aufwand und Jump-Hosts müssen Systemadministratoren akribisch dokumentieren. Denn ihre Kollegen müssen nachschauen können, welchen Jump-Host sie für welches System nutzen müssen. Hinzu kommt, dass auch für Benutzerkonten auf den Jump-Hosts ein gewisser Verwaltungsaufwand anfällt.
RPort mit neuem Ansatz
Dieses Problem will die Open-Source-Software RPort [1] beheben. Dazu aktualisiert die Software das Inventar eigenständig und der Zugriff auf alle Systeme per SSH oder Remote-Desktop ist integriert. Im zentralen, webbasierten Dashboard zeigen sich im Inventar alle Systeme mit dem RPort-Client. Darin finden Admins interne wie externe IP-Adressen, den Standort und viele andere Details.
Die Zeiten, als alle Server und die Mitarbeiter-PCs sich in einem gemeinsamen Subnetz befanden, sind lange vorbei. Längst hat sich die IT-Infrastruktur über verschiedene Standorte, Dienstleister und Netzwerke ausgebreitet. Und die Geräte an den Heimarbeitsplätzen der Kollegen fallen häufig auch noch in den Zuständigkeitsbereich von Systemadministratoren. Die Übersicht über eine wachsende Anzahl an Servern und Geräten zu behalten, stellt für viele IT-Abteilungen ein Problem dar: Für welche Systeme ist welches Team verantwortlich? Wo befinden sich diese? Und wie gelingt schnell der Fernzugriff?
Fernzugriff bedeute in der Regel nicht, die IP-Adresse des entfernten Systems in den Remote-Desktop- oder SSH-Client einzugeben und schon ist der Admin eingeloggt. Firewalls und Router erlauben dies nur in seltenen Fällen. Jump-Hosts, SSH-Ketten oder VPNs sind gängige Technologien, um Systeme hinter Firewalls zu erreichen. Doch dies bedeutet bei VPNs erheblichen Aufwand und Jump-Hosts müssen Systemadministratoren akribisch dokumentieren. Denn ihre Kollegen müssen nachschauen können, welchen Jump-Host sie für welches System nutzen müssen. Hinzu kommt, dass auch für Benutzerkonten auf den Jump-Hosts ein gewisser Verwaltungsaufwand anfällt.
RPort mit neuem Ansatz
Dieses Problem will die Open-Source-Software RPort [1] beheben. Dazu aktualisiert die Software das Inventar eigenständig und der Zugriff auf alle Systeme per SSH oder Remote-Desktop ist integriert. Im zentralen, webbasierten Dashboard zeigen sich im Inventar alle Systeme mit dem RPort-Client. Darin finden Admins interne wie externe IP-Adressen, den Standort und viele andere Details.
Der Client hält diese Informationen stets aktuell. Mit Tags und einem verschlüsselten Key-Value-Store lassen sich die Systeminformationen erweitern. IT-Verantwortlichen, die viele Systeme mit RPort verwalten, ermöglicht die Software die Nutzung von Gruppen zur Sortierung. Vom Dashboard ist per Knopfdruck eine Verbindung mit den Maschinen möglich und auch Kommandos und Skripte lassen sich ausführen. Letztere lagern optional zur Wiederverwendung in einer Bibliothek.
Schnelle Server-Installation
Für die Installation des RPort-Servers empfehlen die Entwickler eine kleine virtuelle Maschine in der Cloud. Wenn der RPort-Server über das öffentliche Internet erreichbar ist, können Sie Server in unterschiedlichen Netzwerken und an verschiedenen Standorten einbinden. Eine Installation in einem privaten Netzwerk ist aber auch möglich.
Für den RPort-Server ist eine VM mit Debian 10 (Buster) oder 11 (Bullseye) und 1 GByte RAM ausreichend. Die Kosten belaufen sich je nach Cloudanbieter auf drei bis sieben Euro pro Monat. Für einen RPort-Server bei Azure, AWS EC2 oder Google Compute müssen Sie beim Anlegen der VM auf die richtigen Firewalleinstellungen achten. Neben dem SSH-Port 22 müssen Sie die TCP-Ports 80 und 443 für den Webserver und den TCP-Portbereich 20000 bis 30000 in der Firewall erlauben. Bei Cloudanbietern wie beispielsweise Hetzner, Scaleway oder Digitalocean sind Firewalls optional und neue virtuelle Maschinen haben keine Beschränkungen. Um in Azure günstige, kleine Systeme zu erzeugen, setzen Sie die Filter "0-2 GB RAM" und "1-2 CPUs". So gelangen Sie beispielsweise an die Serien B1s oder B1ls. Letztere ist für bis zu 100 mit RPort verwaltete Systeme ausreichend.
Nachdem die virtuelle Maschine verfügbar ist, sollten Sie diese mit sudo apt-get update && sudo apt-get dist-upgrade auf den neusten Stand bringen und neu starten. Nach dem Neustart wechseln Sie mit sudo -i zum Root-Account und führen den RPort-Cloud-Installer aus:
curl -o rport-install.sh https://get.rport.io && sh ./rport-install.sh
Ist Ihnen das ungeprüfte Ausführen eines Skripts mit Root-Rechten zu heikel, starten Sie die im Skript enthaltenen Schritte manuell. Die Angabe einer E-Mail-Adresse ist notwendig, denn eine Zweifaktor-Authentifizierung sorgt von Anfang an für maximale Sicherheit. Die E-Mail-Adressen werden nur in der lokalen Datenbank gespeichert und nicht übertragen.
Das Installationsskript lädt RPort von GitHub herunter, legt einen User und die nötigen Konfigurationsdateien an. Außerdem erzeugt es einen zufälligen FQDN in der Subdomäne "*.users.rport.io". Dieser wird benötigt, um per Let’s Encrypt gültige SSL-Zertifikate zu erzeugen. Um nach dem ersten Testen einen eigenen Hostnamen zu verwenden, finden Sie auf den RPort-Hilfeseiten eine Anleitung [2].
Nachdem das Installationsskript durchgelaufen ist, erhalten Sie eine URL und ein zufällig generiertes Erstkennwort. Öffnen Sie diese URL im Browser und loggen Sie sich ein. Per E-Mail erhalten Sie den Zwei-Faktor-Token und schon ist der RPort-Server einsatzbereit.
RPort-Client ausrollen
Damit der Fernzugriff auf Server hinter Routern und Firewalls funktioniert, müssen Sie auf jedem System den RPort-Client installieren. Dieser baut die Verbindung von Innen nach Außen auf. Damit Sie diese Verbindungen in Firewalls nicht extra freigeben müssen, nutzt der RPort-Client für den ersten Kontakt das HTTP-Protokoll und den Port 80. Die Verwendung eines HTTP-Proxy-Servers ist ebenfalls möglich. Sobald die Verbindung etabliert ist, entsteht eine in HTTP verpackte SSH-Session.
Die eigentliche Clientinstallation ist schnell erledigt: Auf der Weboberfläche klicken Sie oben rechts auf das Zahnrad und dann auf "Client Access". Ein Klick auf "Install Client" zeigt Ihnen zwei Skripte mit einem zufällig generierten Pairing-Code, der zehn Minuten gültig ist. Kopieren Sie das Skript in die Zwischenablage und führen Sie es in der PowerShell oder Linux-Konsole aus. Mithilfe des Pairing-Codes verbindet sich der Client direkt mit Ihrem Server.
Der Pairing-Dienst [3] generiert und transferiert lediglich die Clientkonfiguration und greift nicht in die Datenverbindung ein. Diese kommt auf direktem Weg zwischen Client und Server zustande. Die Client-Installationsskripte können Sie auch herunterladen und per Fileserver oder USB-Stick verteilen.
Mit einem Klick auf den Reload-Button oben links erscheinen neue Clients sofort im Inventar. Sollten Clients keinen direkten Zugang zum Internet haben, können Sie in der Client-Konfigurationsdatei "rport.conf" einen HTTP-Proxy eintragen – ein entsprechendes Beispiel ist in der Datei bereits enthalten.
Bild 1: Mit dem RPort-Dashboard im Hintergrund zeigt die Software eine SSH-Verbindung über einen RPort-Tunnel.
Tunnel statt VPN
Dem Wunsch, schnell und einfach an den SSH-Port 22 oder den Remote-Desktop-Port 3389 in einem Netzwerk heranzukommen, zu denen es keine direkte Verbindung gibt, stellt sich meist das Network Adress Translation (NAT) in den Weg. Für RPort stellt NAT kein Problem dar, denn dank der Tunnelfähigkeiten lässt sich jeder TCP-Port auf dem Zielsystem und benachbarten Systemen erreichen. Und die Tunnel sind nur solange aktiv, wie sie gebraucht werden – das spart Ressourcen.
Wählen Sie links im Inventar einen Client aus und klicken Sie rechts auf den Button "Add Tunnel". Je nach Betriebssystem ist ein SSH- oder ein RDP-Tunnel vorausgewählt. Ebenfalls ist der Schutz des Tunnels mit einer IP-Adress-Sperre voreingestellt und Ihre aktuelle öffentliche IP-Adresse ist vorausgefüllt. Mit einem Klick auf "Add Tunnel" bauen Sie den Tunnel auf. Dies dauert nur den Bruchteil einer Sekunde.
Der Tunnel endet auf einem zufälligen Port auf Ihrem RPort-Server. Dorthin können Sie sich nun per RDP oder SSH verbinden. Alternativ klicken Sie auf das "Launch Tunnel"-Icon und das Standardprogramm für SSH oder Remote-Desktop öffnet sich. Auch hier sind die Verbindungseinstellungen bereits eingetragen. Nun sind Sie in der Lage, jeden Server – auch solche hinter NAT-Routern – ohne VPN oder Jump-Host per SSH oder RDP zu erreichen.
Bild 2: Ist eine Remote-Desktop-Verbindung durch einen RPort-Tunnel aktiv, gelingt der Zugriff auf entfernte Systeme.
Jeder RPort-Client kann auch als Netzwerkbrücke zu anderen Systemen dienen. So können Sie Server erreichen, auf denen RPort nicht installiert ist. Aber auch der Zugriff auf Webkonfigurationen von Druckern oder NAS-Systemen ist möglich. Legen Sie dazu einen neuen Tunnel an und wählen Sie als "Service to access" den Punkt "Service Forwarding" aus. Legen Sie dann Ziel-Port und eine Zieladresse fest.
Kommandos und Skripte ausführen
Haben Sie den Client über den Pairing-Code installiert, ist das Ausführen von Kommandos und Skripten erlaubt. Sobald Sie links einen Client auswählen, können Sie auf der rechten Seite den Bereich "Commands & Scripts" ausklappen. Die Kommandos und Skripte werden ohne weitere Authentifizierung an den Client übertragen und ausgeführt. Das Resultat sehen Sie im Browser. Kommandos erfolgen unter Windows mit "cmd.exe" und unter Linux mit "/bin/sh". Mit den Skripten erhalten Sie unter Windows auch Zugriff auf die PowerShell. Wenn Sie ein Skript häufig verwenden, können Sie es in der Bibliothek abspeichern.
Das Ausführen von Kommandos und Skripten ist nicht auf einzelne Systeme beschränkt. In der Top-Navigation wählen Sie "Commands" oder "Scripts" aus. So können Sie Befehle auch auf mehreren Systemen parallel ausführen.
Falls Sie nun Sicherheitsbedenken haben, weil der RPort-Server durch das Ausführen von Kommandos die volle Kontrolle über alle verbundenen Systeme übernehmen kann, dann werfen Sie einen Blick auf den Abschnitt des Client-Konfigurationsdatei "rport.conf" im Listingkasten. Wie Sie dort sehen, haben Sie die Möglichkeit, das Ausführen von Kommandos und Skripten auszuschalten. Der Server kann sich über diese Beschränkungen nicht hinwegsetzen. Ebenfalls haben Sie die Option, nur einzelne Kommandos zu erlauben oder spezielle Befehle zu verbieten. So ist es möglich, beispielsweise nur das Neustarten von Diensten und einen Server-Reboot zu erlauben. Aber beachten Sie, dass sich die Regeln nicht auf Skripte anwenden lassen. Skripte können Sie nur ein- und ausschalten und auch eine Filterung des Inhalts ist nicht möglich.
Listing: Sicherheit für Skripte in "rport.conf"
[remote-commands] ## Enable or disable execution of remote commands sent by server. ## Defaults: true #enabled = true ## Allow commands matching the following regular expressions. ## The filter is applied to the command sent. Full path must be used. ## See {order} parameter for more details how it's applied together with {deny}. ## Defaults: ['^/usr/bin/.*','^/usr/local/bin/.*','^C:\\Windows\\System32\\.*'] #allow = ['^/usr/bin/.*','^/usr/local/bin/.*','^C:\\Windows\\System32\\.*'] ## Deny commands matching one of the following regular expressions. ## The filter is applied to the command sent. Full path must be used. ## See {order} parameter for more details how it's applied together with {allow}. ## With the below default filter only single commands are allowed. ## Defaults: ['(\||<|>|;|,|\n|&)'] #deny = ['(\||<|>|;|,|\n|&)'] ## Order: ['allow','deny'] or ['deny','allow']. Order of which filter is applied first. ## Defaults: ['allow','deny'] ## ## order: ['allow','deny'] ## First, all allow directives are evaluated; at least one must match, ## or the command is rejected. [remote-scripts] enabled = true ## Enable or disable execution of remote scripts sent by server. ## Defaults: false #enabled = false
Aktivierung der Zwei-Faktor-Authentifizierung
Wenn Sie das Ausführen von Skripten und Kommandos zulassen, ist es ratsam, den RPort-Server mit einer Zwei-Faktor-Authentifizierung zu schützen. Neben Benutzername und Passwort müssen Sie bei der Anmeldung ein Einmal-Passwort eingeben. Dieses erhalten Sie per E-Mail oder als Push-Nachricht. Das Installationsskript aktiviert eine Zwei-Faktor-Authentifizierung standardmäßig. Die Token werden über einen kostenlosen Internetdienst der RPort-Entwickler verschickt. Für den ersten Test ist dies sehr bequem, für den dauerhaften Betrieb ist es aber ratsam, den eigenen SMTP-Server mit Pushover zu verwenden.
Jetzt öffnen Sie die Konfigurationsdatei des Servers unter "/etc/rport/rportd.conf". In dieser sind bereits Beispiele für die Zweifaktor-Authentifizierung enthalten. Tragen Sie entweder die Zugangsdaten zu Ihrem SMTP-Server ein oder geben Sie Ihre Schlüssel für den Push-Nachrichtendienst Pushover.net an. Zusätzlich zu den Beispielen in der Konfigurationsdatei finden Sie im RPort-Hilfsportal weitere Informationen [4] zur Einrichtung der Zwei-Faktor-Authentifizierung.
Bild 3: Der RPort-Server generiert Pairing-Codes zur schnellen Clientinstallation.
RPort ist offen in alle Richtungen
RPort können Sie nicht nur über die Weboberfläche bedienen. Scripting und die Integration in andere Software oder Routinen sind ebenfalls möglich. Alles, was Sie über die grafische Oberfläche ausführen, lässt sich auch per REST-API erledigen. So ist die Software für Home-Office-Szenarien interessant, denn über ein Self-Service-Portal können Sie Mitarbeitern den Zugriff auf den Remote-Desktop des Büro-PCs vom heimischen PC ermöglichen. Ein API-Call instruiert dann RPort, den Tunnel für die aktuelle IP-Adresse des Heimarbeitsplatzes bereitzustellen.
Auch in IT-Projekten, die nicht auf der grünen Wiese, sondern im sogenannten Brownfield starten, leistet RPort gute Dienste. Bei solchen Projekten finden sich in Sachen Betriebssystemen oft tot geglaubte Veteranen. Doch da der RPort-Client keine Abhängigkeiten zu externen Programmen oder Bibliotheken hat, läuft er auch auf alten Betriebssystemen. Dank der REST-API schafft er die Möglichkeit, so gut wie jedes System fernzusteuern. Das ist besonders für Windows interessant, denn Technologien wie WinRM und PowerShell-Remoting sind kompliziert und nicht in jeder Version verfügbar. RPort schafft hier eine einfache und universelle Schnittstelle zur Fernsteuerung.
Fazit
RPort leistet bei der Fernwartung wertvolle Dienste: Das übersichtliche Dashboard und der zentrale Zugang zu allen Systemen funktionieren stabil und sicher. Zudem geht die Installation und Inbetriebnahme zügig und ohne steile Lernkurve vonstatten. Im Betrieb zeigt sich vor allem der Ansatz, alle Betriebssysteme gleich zu behandeln, als vielversprechend.
(jp)
Thorsten Kramm ist CEO der cloudradar GmbH.
Link-Codes
[1] RPort-Homepage und -Download: https://rport.io/
[2] RPort Knowledge Base: https://kb.rport.io/
[3] RPort Pairing-Dienst: https://pairing.rport.io/