TR-069 CWMP Provisioning on ISC-DHCPD

Das Broadband World Forum hat das Fernwartungsprotokoll TR-069 entwickelt, um Kunden-Router aus der Ferne einrichten zu können. Damit zum Beispiel Updates, Konfigurationen oder das Aufschalten zusätzlicher Dienste schneller vonstatten gehen können.

Mit dem TR-069 Protokoll können DHCP-Server einen oder mehrere herstellerspezifische Parameter an den Client Router senden. Eine CWMP Konfiguration benötigt für die URL zum Auto-Configuration-Servern (ACS) zur Provisionierung über ISC-DHCPD folgende Parameter:

Beispiel ACS URL http://acs.isp.org

Das Optionsfeld option vendor-encapsulated-options muss als codierte Sequenz identischer Syntax mit Code/Länge/Wertfeld zum DHCP Optionsfeld angegeben werden.

Abschnitt: IETF rfc2132 – DHCP Options and BOOTP Vendor Extensions

url2hex

Zur Umwandlung dient folgender bash Script, diesen man wie folgt aufruft ./url2hex http://acs.isp.org

Die Code Zeilen in eine Datei url2hex speichern und ausführbar machen.

Es wird die länge der übergebenen Zeichenkette berechnet und in den HEX Wert umwandelt, die Zeichenkette selbst wird ebenfalls in HEX umwandelt, danach werden die Werte zusammengehängt, beginnend von 0x01 für den Wert der CWMP Option für die ACS URL.

Die Ausgabe kann dann wie folgt aussehen:

Die letzten zwei Zeilen können in dhcpd.conf hinzugefügt werden.

Referenzen

TR-069 Boadband Forum, art. “3.1 ACS Discovery”
RFC2132 – DHCP Options and BOOTP Vendor Extensions, art. “8.4. Vendor Specific Information”.

 

Mit xrdp Remote-desktop auf Linux

Mit xrdp können Windows-Benutzer genauso einfach auf Linux-Systeme grafisch zugreifen wie auf andere Windows-Maschinen, und zwar am besten noch mit ein und derselben Anwendung. mit mstsc.exe, dem Windows Remotedesktop Client.

Bei xrdp handelt es sich um eine Open-Source-Implementierung des Remote-Desktop-Protokolls, das die Windows Terminal Services (RDS) verwenden, um sich mit Windows-Desktops zu verbinden. Das xrdp-Paket bringt das RDP-Protokoll auf den Linux-Rechner, indem es einen X-Server bereitstellt, der Verbindungen vom Windows-Terminalserver-Clients (mstsc) akzeptiert.

Nachdem sich der Anwender verbunden und authentifiziert hat, erhält er auf dem Windows Computer einen virtuellen X11-Desktop. Der Vorteil an der xRDP-Lösung ist, dass es keinen X-Server auf dem Windows-Rechner erfordert und das Linux-Display nicht exportiert werden muss.

Der xrdp-Server mit den Packet-Manager apt-get und yum auf dem Linux aufzusetzen, ist einfach, bereitet jedoch noch Probleme bei der systemd-integration, systemd ist das neue Daemon Management.

Dies sind die Schritte zum Aufbau von xrdp 0.9.1, auf einem debian 8 (jessie) System. der Build-process wie hier beschrieben, auf Ubuntu-Gnome 16.4.1. Es gibt immer noch Vorbehalte mit Ubuntu aufgrund der systematischen (systemd) Integration.

INSTALLATION

Erst wird das Linux-System vorbereitet, hier ist es Ubuntu Mate 16.10, es werden die Abhängigkeiten installiert: (bakslash am Zeilenende entfernen u. alles auf einer Zeile)

Die Source-Pakete aus den Github Quellen holen:

Erzeugen und installieren der xrdp-Server Binaries:

Erstellen und installieren von xorgxrdp:

Den Daemon xrdp-Server starten:

Die Konfiguration kann ggf. angepasst werden:

Die Remotedesktop Verbindung zum Linux xrdp-Server kann nun aufgebaut werden:

 

ANHANG

Beim Troubleshooting können die Log-Protokolle konsultiert werden:

Bei Abbruch oder einfrieren der RDP Session, kann allow_channels=true auf false gesetzt werden.

Falls die Firewall den RDP Port verwirft und zugelassen werden soll.

Die Guthub Quelle für Git Clone:

 

Quellen: xrdp.org
   github.com/neutrinolabs/xrdp/

 

Text in Hex Konverter mit PowerShell

ASCII Text in Hexadezimale Zeichen Konverter gibt es als Online Tool im Internet viele. Sollen sensible Daten beim Konvertieren im Internet nicht preisgegeben werden, empfiehlt sich die Umwandlung auf dem eigenen Rechner. Dazu braucht man nicht einmal ein Programm zu installieren, einfach zu bewerkstelligen ist es mit PowerShell.

Hierzu die PowerShell öffnen und folgenden Befehl ausführen:

Mit Notepad die Code Zeilen einfügen und speichern:

Die PowerShell beenden und neu öffnen, nun kann der Befehl text2hex ausgeführt werden.

 

Die Umwandlung von Decimal to Binary, Decimal to Hexadecimal und Hexadecimal to Decimal.

 

Nextcloud Installation auf Synology

Mit der Synology Diskstation kommen viele Packete vorinstalliert, weitere zusätzliche Packete können aus dem DSM Packet Manager installiert werden. Möchte man Nextcloud auf der Synology NAS haben, muss man derzeit noch manuell vorgehen. Hier wird beschrieben wie auf einer DS215 mit DSM 6 in wenigen schritten das Open Source Packet, Nextcloud 12 installiert werden kann. Das vorgehen sollte mit jeder Synology DS möglich sein.

Pre-Installation
Installation
CalDAV Integration
Absicherung und Konfiguration

Zur Vorbereitung sind einige Dienstpackete wie gewohnt aus dem DSM Packet-Zentrum zu installieren.

Pre-Installation

Die Packete PHP 5.6 und PHP 7.0, Apache 2.4, phpMyAdmin, MariaDB und Web Station werden installiert.

Es wird der Terminal Zugang zur Synology DS benötigt, wie der SSH Daemon aktiviert wird, steht im Beitrag hier.

Um sich mit PuTTY gleich als root bei der Diskstation einloggen zu können, braucht es folgenden Befehl um root Zugang zu aktivieren. Oder man führt jeweils sudo aus.

Download von Nextcloud und entpacken des ZIP-Archives mit anschließender Besitzer und rechte Vergabe. Die Document_Root ist hier /volume1/web/nextcloud.

Es muss ein MySQL root-Passwort vergeben werden.

Das MySQL-root Passwort kann natürlich auch aus dem DSM geändert werden.

Nun wird die DSM Web Station geöffnet um die Webserver Konfiguration und ein Virtueller Host zu erstellen.

Web Station Allgemeine Einstellungen

Web Station PHP-Einstellungen. Im Feld PHP open_basedir muss none stehen.

Web Station Virtueller Host erstellen.

Installation

Nun kann im Bowser die URL geöffnet werden http://ip_adresse_od_hostname/nextcloud

Das Administrator-Konto kann ein beliebiger Name sein, dieser steht nicht im Zusammenhang mit den Synology Benutzer. Es wird MySQL/MariaDB gewählt, das MySQL-root Kennwort ist das zuvor vergebene Passwort.

Nach ca. 2 min. ist die Installation abschlossen und es erscheint die Intro-Seite.

Soll nun unsere eigene Nextcloud aus dem Internet erreichbar sein, muss eine statische NAT Port Weiterleitung zur internen Synology Diskstation auf der Firewall gemacht werden. Ferner muss die unter nextcloud/config liegende Datei config.php angepasst werden. Im array wird eine weitere Zeile mit unserem FQDN hinzugefügt, dieser zuvor in der DNS Zone foo.io eingetragen wurde.


CalDAV Integration

Mit CalDAV Synchronizer for Outlook ist es möglich den Outlook Kalender, das Adressbuch und die Aufgaben einfach zu synchronisieren, damit ist jeder Desktop und Mobile Client über die private Nextcloud integriert.

Das freie Outlook Plugin von der Fachhochschule Technikum Wien, das zwischen Outlook und CalDAV Server synchronisiert, unterstützt die Outlook-Versionen 2016, 2013, 2010 und 2007. Der Download gibt es auf Github und bei Sourceforge.

Absicherung und Konfiguration

Zur Absicherung der Synology DS die aus dem Internet erreichbar ist, sollten die Zugriffsrechte  eingeschränkt werden, mit folgendem chmod command:

Desweiteren sollte https verwendet werden, Nextcloud empfiehlt folgende Einstellung an der Apache Webserver Konfiguration vorzunehmen:

Hierdurch wird der Aufruf der Webseite von http auf https (SSL) umgeleitet, in der Virtuellen Host Konfiguration unter ServerName hinzufügen:

Damit beim versuch des Client eine http Verbindung aufzubauen diese abgewiesen wird, kann das Module mod_headers.c hinzugefügt  werden.

Den Suchmachinen Crawler soll mitgeteilt werden, das unsere Nextcloud Webseite nicht indiziert werden soll. Die Textdatei robots.txt kommt dabei in die Document Root, im Verzeichnis /volume1/web/nextcloud zu stehen.

Mit  Copy  Paste die Textdatei robots.txt erstellen.

Zur Performance Optimierung kann der PHP opcache konfiguriert werden. Die Werte wie folgt in die PHP Konfiguration user-settungs.ini hinzufügen:

Durch   Copy Paste in der Datei user-settings.ini anfügen.

Nun muss die Synology DS nur noch neu gestartet werden damit die Konfiguration aktiv ist.

 

htaccess und Dynamische IP Adressen

Der Apache Webserver ermöglicht die Zugriffsteuerung über htaccess, auch um Autorisierten Zugang auf Webseiten zu ermöglichen. Mit der Apache direktive Allow from ist es möglich eine bestimmte IP von der Anmeldeaufforderung auszuschliessen. Dabei ist die Übergabe von Hostnamen und FQDN leider nicht möglich. Anhand des folgenden Scriptes wird die Dynamische IP eines Hostname ausgelesen und in die htaccess-Datei eingetragen.

Der Shell Script zur Auflösung der IP Adresse und schreiben in die htaccess-Datei. Die folgenden Zeilen in der Konsole mit copy & paste einfügen, dies erzeugt den Shell Script.

 Copy Paste

Der Script schreibt hier auf einem CentOS Host die htaccess-Datei um. Bei Zeile Allow from mit der Marke #DDNS wird der Hostname ausgelesen, auf der nächsten Zeile mit der Marke #DDNS-IP wird die aufgelöste IP des Host geschrieben. Die Pfad Variable htpath kann DocumentRoot oder ein Unterverzeichnis sein, dabei bearbeitet der Script alle vorkommenden .htaccess-Dateien rekursive ab htpath.

Die htaccess-Datei wird im Webverzeichnis gespeichert dieses geschützt werden soll. Mit cd in das gewünschten Verzeichnis wechseln und die folgenden Zeilen mit copy & paste in der Konsole einfügen, dies erzeugt die .htaccess-Datei.

 Copy Paste

Die Zeilen mit #DDNS und #DDNS-IP (mit #) dienen zur Markierung.

Der Script muss noch  ausführbar gemacht werden.

Damit die Auflösung der Dynamischen IP laufend aktualisiert wird, kann mit crontab -e ein Cron job erstellt werden.

Nach restart des Cron Daemon ist der job aktive.

Hinweis:
Ab Apache 2.4 lautet die direktive von zuvor Allow from nun Require.
Apache 2.x mod_access_compat

Apache 2.4 mod_authz_host

Die von mod_access_compat bereitgestellten Allow-, Deny- und Order-Direktiven sind veraltet und werden in den zukünftigen Version nicht mehr unterstützt. Es wird empfohlen die neuen Direktiven zu verwenden.