Archiv der Kategorie: Daily Work

Infos zu TR-069

Die Abkürzung «TR-069» steht für «Technical Report 69». Eine Bezeichnung die ideenlos, wenn nicht gar langweilig klingt. Aber das wofür TR69 steht, sorgt zurzeit für Kontroversen. TR69 wird als «Einfallstor für Spionagesoftware» oder gar als «Modem-Trojaner» bezeichnet. Was ist dran an diesen Behauptungen? Der folgende Artikel enthält eine kurze Einführung zum Thema.

TR69 ist bei Lichte betrachtet nicht mehr als ein Protokoll, das die Kommunikation zwischen einem Endgerät und einem Kontrollserver regelt. Endgeräte werden CPE’s (Customer Premises Equipment) genannt und sind in aller Regel Endgeräte beim Kunden: DSL-Modems, Router, ATA-Boxen, usw. CPE kann per Definition aber auch weiter gefasst werden. Nahezu bei jeder Komponente in einem Netzwerk kann TR69 zum Einsatz kommen. Auf der anderen Seite steht der Kontrollserver, der ACS (Access Control Server) genannt wird. Seine Aufgabe besteht darin, vermöge des TR69 Protokolles Informationen mit einem CPE auszutauschen. Dabei ist klar geregelt, wie die Kommunikation aufgebaut ist, welche Informationen dabei fliessen und welche Authorisierungsmechanismen zum Zuge kommen. Die erste wichtige Frage lautet nun aber: was sind das für Informationen, die ausgetauscht werden?

Leistungsumfang

Um diese Frage beantworten zu können, muss kurz auf das Leistungsspektrum von TR69 eingegangen werden. Dieses umschliesst drei Funktionen zur automatischen Fernkonfiguration und Fernwartung eines CPE:

  1. Konfiguration – Um die Konfiguration eines CPE beim Kunden zu erleichtern sieht TR69 vor, dass ein CPE nach der ersten Inbetriebnahme mit einem ACS Kontakt aufnimmt und von diesem seine Basiskonfiguration erhält. Dabei ist genau festgelegt, welcher (oder welche) ACS für diese Operation in Frage kommen. Bei DSL-Modems ist dies der DSL-Provider, mit dem der Kunden einen Vertrag abgeschlossen hat.

    Im Detail funktioniert das Spiel so: Das CPE bestimmt, welche Konfigurationsparameter von einem ACS abgefragt und verändert werden können. Beim einer Fritz!Box 7170 sind dies mehr als 400 Parameter! Das CPE liefert dem ACS auf Anfrage eine Liste dieser Parameter und ihrer Werte. Der ACS kann nun seinerseits diese Werte verändern und an das CPE zurück senden. Dieses Abfragen und Modifizieren von Parametern auf dem CPE kann beliebig oft vom ACS initiiert werden, ist also nicht an die Erstkonfiguration des CPE gebunden.

  2. Firmware Upgrade – TR69 beschreibt einen Mechanismus, der das Aktualisieren der CPE-Firmware, also zum Beispiel der Betriebssoftware auf dem DSL-Modem ermöglicht. Hierbei erhält das CPE eine enstprechende Anfrage vom Server, in der enthalten ist, wo eine neue Version der Firmware heruntergeladen werden soll. Der ACS sendet dem CPE also nicht die Firmware selbst, sondern nur eine Adresse, von der die Firmware heruntergeladen und installiert wird. In der Regel ist dies eine durch Passwort geschützte Datei auf einem Webserver des Providers.
    Der Vollständigkeit halber muss erwähnt werden, dass die Download-Funktion noch weitere Optionen bietet. Neben der Firmware ist auf einigen Geräten der Austausch von Webseiten des integrierten Webservers oder von anderen Dateien möglich. Bei der Download-Operation wird jeweils ein Funktionsnummer mitgeliefert, die den Typ des Downloads bestimmt.
  3. Wartung – Dazu gehören Funktionen wie das Auswerten von Logdateien, das Ermitteln von Traffic-Statistiken oder ein Neustart des Gerätes.

Sicherheit

Grundsätzlich gilt: Wer mit TR69 auf ein CPE zugreifen kann, ist klar festgelegt. Der TR69 Client auf einem CPE enthält die IP-Adresse eines ACS und die Authorisierungsparameter (Benutzername/Passwort), die vom ACS bei jeder Sitzung mitgeliefert werden müssen. Damit Passwörter nicht im Klartext durch das Netz gesendet werden, kommen SSL oder eine HTTP Digest-Authorisierung zum Einsatz. Obwohl TR69 ein asynchrones Protokoll ist, erfolgt der Aufbau einer Sitzung stets vom CPE aus. Dieser Sitzungsaufbau erfolgt periodisch, kann aber auch nach bestimmten Ereignissen (z.B Reboot) initiiert werden. Beim Sitzungsaufbau sendet das CPE eine sogenannte «Inform» Anfrage an den ACS. Dieser entscheidet dann, was damit zu geschehen hat. Antwortet er gemäss den TR69 Regeln auf die Anfrage, kommt die Sitzung zustande und der Server kann nun seinerseits Anfragen an das CPE stellen.

Eine Sitzung kann auch vom ACS eingeleitet werden. Dazu sendet der Server eine Anfrage an eine vom CPE festgelegte Webadresse. Die Anfrage ist jedoch nur gültig, wenn der ACS sich korrekt authorisiert. Dazu muss der Server eine Benutzer/Passwort-Kombination senden, die auf dem Modem vor der Auslieferung gespeichert worden ist und vom ACS nicht verändert werden kann! Zusätzlich empfiehlt TR69, dass die vom CPE zur Verfügung gestellte Adresse nach jeder Sitzung verändert wird. Damit wird dem Missbrauch des asynchronen Modus zusätzlich vorgebeugt.

Die meisten CPE Clients sind selbst konfigurierbar: Sie erlaube das Konfigurieren einzelner Funktionen oder können als ganzes ausgeschaltet werden. Bei ZyXEL Modems geschieht dies bequem über ein Menu, das via Telnet erreichbar ist. Bei der Fritz!Box ist es eine Datei tr069.cfg, die im Ordner /var/flash zu finden ist. Dort legt der Besitzer fest, ob er Firmware-Upgrades erlaubt und wie oft sein Gerät eine Session zum ACS initiiert. Duch das Ändern eines Passwortes kann zudem der asynchrone Modus deaktiviert werden. Und wem TR69 gänzlich suspekt ist, dem steht es frei, es komplett auszuschalten.

Für und Wider

Obwohl es grundsätzlich möglich ist, eine Überwachungssoftware via ACS zu installieren, ist die Bezeichnung «Einfallstor für Trojaner» übertrieben und führt zu falschen Ängsten und Verdächtigungen. Denn ausschliesslich der Provider hat Zugriff auf das CPE. Im Alltag ist TR69 nichts anderes als ein Protokoll, das dem Kunden die Arbeit abnimmt, wenn er seinen DSL-Router in Betrieb nimmt. Mit TR69 werden alle wichtigen Parameter für das Gerät beim ACS abgeholt und gespeichert, so dass dass das Gerät sofort betriebsbereit ist. Der Firmware-Upgrade kann den Kunden sogar vor Angriffen schützen, wenn damit Schwachstellen in der Betriebssoftware behoben werden.

Auf der anderen Seite kann TR69 für eine übertriebene Kontrolle des Providers missbraucht werden. Ein wichtiger Schlüssel dazu bieten die Parameter-Attribute. Jeder Parameter eines CPE kann mit zwei Attributen ausgezeichnet werden: «Notify» und «Access». Das Access-Attribut legt fest. wer diesen Parameter einsehen oder ändern darf. Theoretisch ist es möglich, damit den Zugriff des ACS einzuschränken. In der Praxis wird dieses Attribut von den meisten TR69-Clients noch nicht oder nur zum Teil genutzt. Interessanter ist das Notify-Attribut: Es legt fest, was geschieht, wenn der Besitzer des CPE den Wert eines Parameters verändert. Es kann bestimmt werden, dass der neue Wert sofort oder beim nächsten «Notify» (siehe oben) an den ACS gesendet wird. Mit andern Worten: Der Provider kann protokollieren, welche Parameter zu welchem Zeitpunkt vom Kunden verändert worden sind.

Dokumentation

Der Umfang und die Funktionsweise von TR69 ist im Dokument «TR-069 Amendment» genau beschrieben. Leider gebricht es dem Dokument an Struktur und Verständlichkeit. Es ist an vielen Stellen nur schwer verdaulich. Erschwerend kommt hinzu, dass der mehr als 100 Seiten umfassende Text nicht ein einziges Beispiel gibt. Wer also selbst eine TR69-Schnittstelle entwickeln will, steht einigen Schwierigkeiten gegenüber. Als weitere Informationsquelle kann der englische Wikipedia-Artikel genannt werden. Dieser enthält eine gute Zusammenfassung der Materie sowie Links zu einigen kommerziellen ACS-Anbietern.

…Ist das alles? Ja, leider. Jedenfalls im Moment. Ich habe selber eine ACS-Software entwickelt und viel Zeit damit verbracht, im Internet nach Informationen zu recherchieren. Die beiden gebotenen Links bleiben vorerst das spärliche Ergebnis dieser Suche. Auch wer nach freier Software fragt, wird enttäuscht. Denn im Moment gibt es noch keine TR69-Projekte.

Telefonieren mit Asterisk (I)

Asterisk Logo«…Was soll ich machen? Eine virtuelle PBX? Was um alles in der Welt ist das!?» Ich gebe es freimütig zu, ich hatte den Begriff «PBX» wirklich nie zuvor gehört. Dass hängt damit zusammen, dass ich bisher mit Telefonie so gut wie nichts zu tun hatte und mich für Telefone bis vor einigen Wochen auch kaum interessierte. Telefone waren für mich eher etwas langweiliges.

Also, PBX ist die Abkürzung für «Private Branch Exchange» und kann am einfachsten mit «Telefonanlage» übersetzt werden. Klingt ganz einfach, oder? Ist es aber nicht! Denn damit begeben wir uns in ein Fachgebiet, das eine unstillbare Neigung zur Unübersichtlichkeit und Komplexität hat. Das hängt damit zusammen, dass vieles neu und die Dokumentation dementsprechend spärlich ist.

Durch die zunehmende Rechenleistung und erhöhte Bandbreite in den weltumspannenden Netzen haben sich in den vergangenen Jahren verschiedene Technologien entwickelt, die das Telefonieren auf IP-Basis ermöglichen. Als Trägermedium dient also nicht mehr ein herkömmliche Telefonleitung sondern ein Computernetzwerk. Digitale Telefonzentralen ermöglichen es, eine firmen- oder hausinterne Telefonanlage aufzubauen, die weniger als herkömmliche Zentralen kostet, dafür aber in bezug auf Funktionsumfang und Flexibilität einiges mehr bietet.

Wer sich mit digitaler Telefonie beschäftigt, wird rasch mit einer Unmenge an Fachbegriffen konfrontiert: VoIP, SIP, IAX, DTMF, H232, OpenSER, Voicemail, etc. etc. Um mir ein Bild der der Sache machen zu können, habe ich mich zuerst durch die Online-Dokus der verschiedenen Websites durchgelesen, die sich mit diesem Thema beschäftigen. Etwas frustriert stellte ich dann fest, dass es nicht ganz simpel ist, sich einen Überblick zu verschaffen und etwas Ordnung in das umfangreiche Angebot zu bringen. Ein guter Einstiegspunkt ist nach meiner bisherigen Erfahrung voip-info.org. Die Wiki-Seite ist zwar stellenweise ziemlich chaotisch, aber sie enthält einen Bereich für Einsteiger, der die verschiedenen Möglichkeiten, Techniken und Produkte vorstellt.

Asterisk, der Alleskönner

Eher früher als spät taucht der Begriff «Asterisk» auf, eine von Digium entwickelte Software-Telefonanlage, von der eine kommerzielle, aber auch eine freie, GPL-lizensierte Version gibt. Asterisk läuft auf den verschiedensten UNIX-Varianten, benötigt – je nach Verwendungszweck – keine zusätzliche Telefoniehardware und stellt durch einen modularen Aufbau eine Myriade an Funktionen zur Verfügung. Dabei ist das System in bezug auf die Ressourcen dennoch genügsam, ein kleines System mit bis zu 10 SIP-Telefonen läuft auf einem Server mit einer 700Mhz Intel-CPU mit 256 MB RAM problemlos.

Aber was genau ist Asterisk? Die Software als Telefonanlage zu bezeichnen ist zwar nicht falsch, aber eine glatte Untertreibung, denn Asterisk kann wesentlich mehr! Ausserdem muss Asterisk entsprechend konfiguriert und mit einem an die Bedürfnisse angepassten Wählplan ergänzt werden, damit es als Telefonanlage verwendet werden kann. Es ist treffender, Asterisk als Baukasten zu bezeichnen, der die Bausteine liefert mit denen verschiedensten Aufgaben gelöst werden können.

Der Wählplan

Das Herzstück des Asterisk Server ist der Wählplan (Dialplan), mit dem festgelegt wird, wer wen anrufen darf und welche Telefone klingeln, wenn eine bestimmte Nummer gewählt wird. Im Wählplan wird ferner festgelegt, wie das System reagiert, wenn ein Teilnehmer nicht abnimmt, besetzt ist oder selbst eine Umleitung definiert hat. Und endlich legt der Wählplan fest, welche externen Anschlüsse von welchen Teilnehmern benutzt werden dürfen und wie diese externen Anschlüsse basierend auf der gewählten Nummer selektiert werden. Und dies sind nur einige Standardfunktionen des Wählplans, er kann noch einiges mehr. Und das erfreuliche an der Sache: Die verschiedenen Kommandos des Wählplanes sind sehr gut dokumentiert und es gibt im Internet viele praxisnahe Beispiele.

Der Wählplan kann mit der Makrosprache einer Office-Anwendung verglichen werden. Dort gibt es Kommandos, die Anwendungsfunktionen wie «sortieren», «exportieren» oder «formatieren». Auch die Kommandos des Asterisk Wählplanes operieren auf einem entsprechend hohen Level. Eines der wichtigsten Kommandos ist «Dial». Dial() erwartet als Argument nebst verschiedenen Optionen eine Telefonnummer die in der Folge angerufen wird. Nimmt der Besitzer des angerufenen Telefones ab, kommt eine Verbindung zustande und Dial() bleibt solange aktiv, bis einer der Teilnehmer den Hörer auflegt oder die Verbindung anderweitig unterbrochen wird. Anschliessend wird das nächste Kommando im Wählplan ausgeführt, in einfacheren Beispielen ist dies meist «Hangup».

Anständige Makrosprachen ermöglichen auch Konstrollstrukturen, also das Verzweigen innerhalb des Makros, sobald gewisse Bedingungen erfüllt sind. Beim Wählplan ist dies nicht anders. Beispielsweise kann entsprechend reagiert werden, wenn eine externe Leitung vorübergehend nicht verfügbar ist oder wenn ein Teilnehmer seinen Appart auf «DND» (Do not disturb) gestellt hat. Im Wählplan können ausserdem externe ähnlich der CGI-Spezifikation Scripts aufgerufen werden, eine Gruppe von Anweisungen lässt sich in einem Makro zusammenfassen und beliebige Werte können für eine spätere Verwendung in einer Datenbank gespeichert werden.

Beispiele

Um das ganze zu veranschaulichen folgen nun einige praxisbezogene Beispiele, was mit Asterisk ohne grossen Aufwand realisiert werden kann:

snom360.jpg

Kann auch Wetterdaten und Fussballergebnisse anzeigen: snom 360

Aufwerten des privaten Telefonanschlusses durch Voicemail, Ansagetext und Anrufumleitung. Die Einstellungen können je nach Tageszeit ändern, so dass in der Nacht garantiert Ruhe herrscht. Einzelne Nummern oder auch ganze Nummernbereiche können gesperrt werden und eine Auswertung gibt Auskunft über alle ein- und ausgehenden Anrufe.

Teilen eines privaten Telefonanschlusses durch das Anschliessen mehrerer Telefone an einen Asterisk Server. Damit können intern kostenlos Gespräche geführt werden und wer eine externe Nummer wählt, wird automatisch weiterverbunden. Selbstverständlich können wiederum alle Funktionen aus dem ersten Beispiel genutzt werden.

Flexible und preiswerte KMU Telefonzentrale. Mit einem Asterisk Server wird das interne Firmennetz für die Telefongespräche genutzt. Alle angestellten erhalten eine Nummer für die interne Kommunikation. Wer externe Anrufe entgegennehmen können muss, bekommt zusätzlich eine externe Nummer, die global erreichbar ist. Für die verschiedenen Abteilungen der Firma können Gruppennummern definiert werden. Wer häufig im Aussendienst arbeitet, kann Gespräche per Knopfdruck auf ein Mobiltelefon umleiten oder ad hoc einen Ansagetext hinterlassen. Ausserhalb der Bürozeiten erhalten Anrufer eine entsprechende Meldung und können ihr Anliegen dem Voicemail-Dienst anvertrauen. Es können Konferenzgespräche geführt und direkte Verbindungen mit Partnerfirmen erstellt werden. Mit entsprechender Ausstattung sind auch Videokonferenzen möglich.

– Fortsetzung folgt –

RIPE-Tool

ripetool.png

Das RIPE-Tool

IP Ranges werden in Europa von RIPE (Réseaux IP Européens) verwaltet. RIPE legt fest, wem die einzelnen Bereiche gehören und wie diese miteinander in Beziehung stehen. Vereinfacht ausgedrückt. Damit Kunden die ihnen zugewiesenen Bereiche selber verwalten können, stellt RIPE zwei Methoden zur Aktualisierung der RIPE-Datenbank zur Verfügung: Per signierter Mail oder über ein Webserver-API. Wir haben unsere Ranges bisher mit dem ersten Verfahren aktualisiert. Da dies mittlerweile zu einer zeitraubenden Angelegenheit geworden ist, wurde ein Tool entwickelt, welches diese Aufgaben übernimmt.

Soll ein neu zu vergebender Range für einen Kunden reserviert werden, genügt es, diesen aus dem (auch von uns entwickelten) Netzwerk-Tool auszuwählen und anschliessend mit einer Adresse aus dem CRM zu verbinden – fertig! Ebenso leicht sind Aenderungen an der Adresse oder Halterwechsel durchzuführen: IP Range auswählen, Korrekturen anbringen und die Aenderung bestätigen.