25.02.2014 Aufrufe

Linux-Magazin Ausgewogen (Vorschau)

Verwandeln Sie Ihre PDFs in ePaper und steigern Sie Ihre Umsätze!

Nutzen Sie SEO-optimierte ePaper, starke Backlinks und multimediale Inhalte, um Ihre Produkte professionell zu präsentieren und Ihre Reichweite signifikant zu maximieren.

08/13<br />

DIE ZEITSCHRIFT FÜR LINUX-PROFESSIONALS<br />

Anoymes Surfen<br />

als Placebo<br />

Chrome, Epiphany, Firefox und Konqueror<br />

täuschen Schutz weitgehend vor S. 48<br />

Keon und Peak<br />

Die zwei Referenz-Smartphones<br />

mit dem neuen<br />

Firefox OS im Test S. 68<br />

Web RTC<br />

Ohne extra Browser-Plugin<br />

per Video chatten und Files<br />

Peer-to-Peer tauschen S. 92<br />

<strong>Ausgewogen</strong><br />

Was die Daten einer Firma wert sind –<br />

und was man für deren Schutz tun muss<br />

■ Risiken begrenzen und Schäden kalkulieren –<br />

eine Matrix kann helfen S. 22<br />

■ Anonym im Web – ein Admin-Guide S. 26<br />

■ Wenn nötig: Access Management S. 34<br />

■ Angriffe übers Netzwerk erkennen S. 36<br />

■ Schlüsselszene: SSH für die Großen S. 38<br />

■ Backups zum Schutz verschlüsseln S. 42<br />

■ Neues Deploymentverfahren:<br />

Docker verschifft <strong>Linux</strong> Containers S. 64<br />

■ Tine 2.0: Ungewöhnliche Groupware<br />

mit CRM und Personalverwaltung S. 58<br />

Beerenstark: Eigenen Raspberry-Pi-Kernel bauen – entweder auf dem Gerät oder cross-kompiliert S. 86<br />

www.linux-magazin.de<br />

Deutschland Österreich Schweiz Benelux Spanien Italien<br />

4 6,40 4 7,05 sfr 12,80 4 7,50 4 8,30 4 8,30<br />

4 192587 306401 08


ADMIN und <strong>Linux</strong>-<strong>Magazin</strong><br />

am Apple Newsstand!<br />

Jetzt NEU!<br />

Jetzt GRATIS<br />

testen!<br />

Alternativ finden Sie alle Titel der Medialinx AG auch bei:<br />

Pubbles, PagePlace, iKiosk, OnlineKiosk und Leserauskunft


Gute Nachrichten<br />

Login 08/2013<br />

Editorial<br />

Hongkong ist ein gutes Pflaster für jemanden, der abtauchen, aber dabei online<br />

bleiben will. Dank des historischen Erbes, das die Kolonialmacht England 1997<br />

hinterließ und dank des komplexen Verhältnisses zwischen der Metropole und der<br />

Staatsmacht China können Auslieferungsverfahren dort schon mal länger dauern,<br />

gerne auch viele Jahre, gerade wenn ein politisches Interesse vorliegt.<br />

Dafür gibt’s dort schnelles, redundantes Internet – mehrere Interkontinentalleitungen<br />

führen in die Stadt – und die Sicherheit einer anonymen, dichtbesiedelten<br />

Multikulti-Millionenstadt (zum Beispiel vor einem „chirurgischen“ Drohnen-<br />

Angriff) mit ihren Nerds, Mafiosi und Dissidenten. Laut der South China Morning<br />

Post ist Hongkong gar die „sicherste Millionenmetropole der Welt“ - kurzum ideal<br />

für einen „feindlichen“ Whistleblower, der sich mit der größten demokratisch<br />

legitimierten Supermacht angelegt hat.<br />

Markus Feilner,<br />

Stellvertretender Chefredakteur<br />

Nach Julian Assange (vermutlich noch ein wenig länger im Safe-Harbour-Patt<br />

der ecuadorianischen Botschaft in London beheimatet) reiht sich mit Snowden<br />

wieder ein vergleichsweise junger Ex-Hacker mit <strong>Linux</strong>-, Open-Source- und Security-Hintergrund ein in die Reihe<br />

der Top-Staatsfeinde der USA. Auch Snowden unterstützt die EFF und das Tor-Projekt, sein Ex-Arbeitgeber<br />

und CIA-Dienstleister Booz Allen Hamilton gewann gerade auf dem Red Hat Partner Summit in Boston den<br />

Innovation Award für die Kategorie „Optimized Systems“. Mit RHEL, Jboss und RHEV habe man es geschafft,<br />

„die Infrastruktur des US-Verteidigungsministeriums in eine moderne, elastische und flexible Form zu bringen,<br />

sodass dieses jetzt auch auf hohe Nachfrage reagieren“ könne.<br />

Suse, Red Hat, Open Stack – alle beteuern auf Anfrage natürlich, sich an nationale Gesetze zu halten und dass<br />

ihre Firma „keine Verbindung zu Prism“ (Gerald Pfeiffer, Suse) habe. Verwendungszweck und Lizenzen seien<br />

zwei völlig unterschiedliche Sachen, sagt der Direktor fürs Produktmanagement bei Suse – niemand könne<br />

verhindern, dass Software auch für Zwecke herhalten muss, wo keine Einwilligung Betroffener vorliegt – von<br />

einer demokratischen Legitimation ganz zu schweigen.<br />

Open Source ist eben offen für jeden, und auch die vermeintlich Bösen greifen nicht erst seit Kurzem gerne zu<br />

freier Software, weil sie deren Qualitäten kennen. Und wer nicht wusste, dass gerade Big Data ein Thema für<br />

Langley, Fort Meade, im Thames House oder bei Verfassungsschutz, MAD oder anderen den wahrhaft braven<br />

Bürger proaktiv beschützenden Behörden ist, der muss sich angesichts der jüngsten Enthüllungen Blauäugigkeit<br />

vorwerfen lassen.<br />

Letzen Endes bestätigt Prism doch nur die schlimmsten Befürchtungen von Verschwörungstheoretikern und<br />

deren Unkenrufe. Das sarkastische Fazit, das die amerikanische Satiresendung „The Daily Show“ am 10. Juni<br />

zog, bringt das auf den Punkt: „Die gute Nachricht [an den Prism-Enthüllungen] ist: Sie sind nicht paranoid!“<br />

www.linux-magazin.de<br />

3


Inhalt<br />

www.linux-magazin.de 08/2013 08/2013<br />

4<br />

Wie viel sind die Daten meiner Firma wert? Wie schwer wiegt der Verlust eines Kundendatensatzes?<br />

Welche Schutzmechanismen muss der Admin umsetzen? Best Practice für Risikoanalysen<br />

liefert der Schwerpunkt dieses <strong>Magazin</strong>s, dazu jede Menge Tipps, Tricks und Software<br />

zur Anonymisierung, Verschlüsselung, Zugriffskontrolle und für den Ernstfall.<br />

Aktuell<br />

Titelthema: <strong>Ausgewogen</strong> - Wert von Daten und ihr Schutz<br />

6 N ew s<br />

n Supertuxkart rast durch Rostock<br />

n Nach zehn Jahren: Limux ist fertig<br />

n Shuttleworth schließt Bug No. 1<br />

n EFF spricht sich gegen DRM aus<br />

21 Einführung<br />

Titel<br />

Admin-Pflicht: Firmen-Daten schützen.<br />

22 Risikoanalyse<br />

Risk Assessment, Schutzmaßnahmen,<br />

Strategien und der wahre Wert der Daten.<br />

38 Key-Deployment<br />

Damit der Host gegenüber auch wirklich<br />

der ist, für den er sich ausgibt:<br />

Automatisierte Schlüsselverifikation.<br />

26 Anonym im Internet<br />

Wer seinen Usern anonymen Webzugriff<br />

geben will, hat es nicht leicht. Der<br />

Admin-Guide zeigt, wo es noch hakt.<br />

Die Gnupi-Platine steckt auf dem Raspberry Pi<br />

und kann zahlreiche Module anschließen.<br />

12 Zahlen & Trends<br />

n Coverity: Qualitätssiegel für Kernel<br />

n Softwarepatente im Bundestag<br />

n Debian und Systemd: Eine Umfrage<br />

Anonym oder nicht? Im Idealfall kontrolliert<br />

der Admin, welche Daten ins Web gelangen.<br />

Sichere Authentifizierung mit automatischer<br />

Hostkey-Verteilung.<br />

42 Cloud-Datenverschlüsselung<br />

Mit dem Kommandozeilentool Duplicity<br />

sichern Admins Backups ab, die auf<br />

einem Host in der Cloud landen sollen.<br />

34 Dateizugriffe regeln<br />

Unternehmenslösungen für die Kontrolle<br />

heikler Daten.<br />

Auf seiner Webseite wirbt Logitech für seine<br />

Geräte mit dem Prädikat „<strong>Linux</strong>-kompatibel“.<br />

36 Netzwerkanalyse als Schutz<br />

Packet Inspection, Intrusion Detection<br />

und Data Loss Prevention.<br />

Wenn sensible Daten in die Public Cloud wandern,<br />

ist Verschlüsselung Pflicht.<br />

18 Zacks Kernel-News<br />

n Reboot nach Resume wegen NX-Bit<br />

n Kernellizenz mal wieder: GPLv2 oder 3?<br />

Keine Flush-Operationen? Verdächtig gute<br />

Zahlen erbrachte der Tux3-Benchmark.<br />

DELUG-DVD<br />

Uberstudent 3.0<br />

TOOL<br />

Debian- und Ubuntu-basierte<br />

Distribution für Akademiker, mit<br />

ausgefeilten Research- und<br />

Studientools (64 Bit)<br />

<strong>Linux</strong> Mint 15<br />

TOOL<br />

TOOL<br />

Offizielles ISO des Unity-freien<br />

Ubuntu 13.04 (64 Bit)<br />

TOOL<br />

Details zu DVD-<br />

TOOL<br />

Inhalten auf S. 45<br />

125 Securitytricks<br />

E-Book mit 500 Seiten kostenlos:<br />

„Netzwerksicherheit Hacks“<br />

Bozen verpasst?<br />

Videonachlese: Die besten Vorträge<br />

von der Open Source System<br />

Management Conference 2013


08/2013 08/2013<br />

Inhalt<br />

54 Großes Hin und Her<br />

Bereits im Teststadium offenbart<br />

Bittor rent Sync einiges Potenzial und<br />

synchronisiert Daten über Netzwerkgrenzen<br />

hinweg.<br />

66 Jungfüchse<br />

Ein offenes, OSS-basiertes und kostengünstiges<br />

Smartphone nicht nur<br />

für Schwellenländer baut die Mozilla<br />

Foundation rund um Firefox OS.<br />

104 Am Anfang war der Test<br />

Test-driven Development mit einer<br />

nebenbei generierten Testsuite: Perlmeister<br />

Schilli findet am Wegesrand ein<br />

passendes, nagelneues CPAN-Modul.<br />

www.linux-magazin.de<br />

5<br />

Software<br />

Sysadmin<br />

Know-how<br />

45<br />

Einführung<br />

Auf der DELUG-DVD: Uberstudent 3.0,<br />

Mint 15, Ein E-Book über Netzwerk-Hacks,<br />

Firefox OS und OSMC-Videos.<br />

46 Tooltipps<br />

Im Kurztest: Sleepuntil 1.0, Ether Ape<br />

0.9.13, Code crypt 2013-05-24, Ashd 0.12,<br />

HTTP Tunnel 1.4.0, Jailkit 2.16.<br />

57 Einführung<br />

Aus dem Alltag eines Sysadmin: Ntpd.<br />

58 Tine 2.0<br />

Titel<br />

Ungewöhnliche Groupware mit CRM und<br />

Personalverwaltung.<br />

86 Kern-Technik – Folge 69<br />

Titel<br />

Kernel- und Treiberprogrammierung mit<br />

<strong>Linux</strong>: Raspberry-Pi-Kernel selbst gebaut.<br />

Rechts vorne am Pi sitzen die GPIO-Kontakte.<br />

Wenn der WLAN-Betreiber nur HTTP, aber kein<br />

SSL zulässt, hilft HTTP Tunnel weiter.<br />

48 Bitparade<br />

Titel<br />

Browser auf dem Anonymitätsprüfstand.<br />

Zu einer Adresse blendet Tine 2.0 auch gleich<br />

die entsprechende Kartenansicht ein.<br />

64 Docker und LXC<br />

Titel<br />

Virtualisierung mal anders: Docker füllt<br />

<strong>Linux</strong>-Container und verschiebt sie.<br />

Programmieren<br />

92 Web RTC<br />

Titel<br />

Videotelefonie ohne Browser-Plugin und<br />

Daten übertragen Peer-to-Peer.<br />

Hardware<br />

68 Firefox OS<br />

Titel<br />

Keon und Peak: Zwei Firefox-OS-<br />

Smartphones im Test.<br />

Der Signaling-Server leitet nach seinem Start<br />

wie ein Router Nachrichten weiter.<br />

Firefox, Konqueror, Epiphany und Chrome aktivieren<br />

die Einstellungen nicht per Default.<br />

54 Bitorrent Sync<br />

Synchronisation im Peer-to-Peer-Netz.<br />

Forum<br />

78 Leserbriefe<br />

Auf den Punkt gebracht.<br />

100 C++11 – Folge 11<br />

Endlich: Reguläre Ausdrücke in C++<br />

suchen und finden Textmuster.<br />

Service<br />

3 Editorial<br />

108 IT-Profimarkt<br />

110 Stellenanzeigen<br />

112 Veranstaltungen<br />

112 Inserenten<br />

113 Impressum<br />

114 <strong>Vorschau</strong><br />

79 Bücher<br />

Bücher über Ruby<br />

sowie über Scipy<br />

und Numpy.<br />

80 Recht<br />

Unternehmensdaten schützen und mit<br />

Rechtsmitteln verteidigen.<br />

Der reguläre Ausdruck für E-Mail-Adressen.<br />

104 Perl-Snapshot<br />

Ein Loginsystem, agil entwickelt.


Aktuell<br />

www.linux-magazin.de News 08/2013<br />

6<br />

News<br />

Supertuxkart rast durch Rostock<br />

Die Entwickler des <strong>Linux</strong>-<br />

Rennspiels Supertuxkart haben<br />

es möglich gemacht,<br />

Open streetmap-Daten für den<br />

Bau eigener Rennstrecken zu<br />

verwenden. Ein erstes Beispiel<br />

führt den rasenden Pinguin<br />

nach Rostock.<br />

Ein wenig Arbeit an den OSM-<br />

Daten und ein paar grundlegende<br />

Kenntnisse im Umgang<br />

mit dem 3-D-Programm Blender<br />

sollen ausreichen, um eine<br />

Landschaft aus der echten<br />

in die virtuelle Welt von Supertuxkart<br />

zu übertragen.<br />

Dafür benötigt der Rennstrecken-Entwickler<br />

zusätzlich<br />

Supertuxkarts Modelling-<br />

Addon für Blender, das ein<br />

ausführliches Howto im<br />

Openstreetmap-Wiki [http://​<br />

​wiki.​openstreetmap.​org] detailliert<br />

beschreibt.<br />

n<br />

Hier entsteht eine Rennstrecke im Openstreetmap-Editor Josm.<br />

Pulseaudio 4.0 veröffentlicht<br />

In Version 4.0 erhält Pulseaudio<br />

[http://​www.​pulseaudio.​org]<br />

einige Neuerungen: So gibt<br />

es Shellcompletion (Bash,<br />

Zsh) für die meisten Hilfsprogramme<br />

von Pulseaudio.<br />

Pactl, das Kontrollprogramm<br />

für den Pulseaudio-Server,<br />

kennt mit »set‐default‐sink«<br />

und »set‐default‐source« zwei<br />

neue Befehle. Zudem erlaubt<br />

das »set‐*‐mute«-Kommando<br />

nun den Einsatz des Parameters<br />

»toggle«.<br />

Das neue Modul »module‐role‐ducking«<br />

sorgt beim Auftreten<br />

paralleler Streams dafür,<br />

dass Pulseaudio die Lautstärke<br />

für weniger wichtige Streams<br />

automatisch senkt, sobald ein<br />

relevanteres Audiodevice auftaucht.<br />

Bei einem Anruf regelt<br />

es zum Beispiel die Lautstärken<br />

für die Video- und Musik-<br />

Ausgabe nach unten.<br />

Pulseaudio nutzt nun beide<br />

Ausgabekanäle von Native<br />

Instruments Traktor Audio 2<br />

ohne Eingriffe simultan und<br />

unterstützt Capturing für Logitechs<br />

B530-USB-Headsets<br />

sowie Focusrite Scarlett 2i2.<br />

Für ARM Neon gibt es neuerdings<br />

die Möglichkeit, 16-Bit-<br />

Streams mit zwei Kanälen<br />

zu mixen, zudem wurde der<br />

C-Code für andere Geräte optimiert.<br />

Der Audiodaemon Jack vermag<br />

nun auf die Soundkarte<br />

zuzugreifen, während Pulseaudio<br />

läuft. Nicht zuletzt<br />

wurde der Blue tooth-Support<br />

überarbeitet, was die Unterstützung<br />

zuverlässiger macht<br />

und die Pflege erleichtert.<br />

Wer die Software herunterladen<br />

will, findet auf der Site<br />

[http://​www.​freedesktop.​org/​wiki/​<br />

​Software/​PulseAudio/​Download/]<br />

Pakete nicht nur für den<br />

Quellcode von Pulseaudio,<br />

sondern auch für einige Distributionen.<br />

n<br />

<strong>Linux</strong> Foundation: Autos und Kriegsspiele<br />

LPI sucht <strong>Linux</strong>- und Open-Source-Vorträge<br />

Beim „Automotive <strong>Linux</strong> Summit<br />

Spring 2013“ in Japan hat<br />

die Foundation bekannt gegeben,<br />

dass das indische Unternehmen<br />

Allgo Embedded<br />

Systems Mitglied wird. Es entwickelt<br />

Infotainment-Systeme<br />

für Kraftfahrzeuge und beliefert<br />

Automobilhersteller in<br />

Deutschland und den USA.<br />

Unter anderem hat Allgo im<br />

Rahmen der „Automotive Grade<br />

<strong>Linux</strong> Initiative“ die Distribution<br />

Tizen <strong>Linux</strong> auf ARM<br />

Cortex-A9 portiert.<br />

Auch Suntec Software aus<br />

Shanghai stößt zur <strong>Linux</strong><br />

Foun dation. Die Firma versorgt<br />

die Automobilbranche mit Betriebs-<br />

und Navigationssystemen<br />

sowie Clouddiensten.<br />

Mit Wargaming wird zudem<br />

ein Computerspiele-Anbieter<br />

Mitglied des Konsortiums. n<br />

Das <strong>Linux</strong> Professional Institute<br />

(LPI) sucht für seine zentraleuropäische<br />

Partnertagung<br />

am 17. Oktober 2013 in München<br />

Referenten, die Beiträge<br />

zu <strong>Linux</strong> und Open Source<br />

beisteuern. Sie müssen weder<br />

Mitglieder des Partnerprogramms<br />

sein noch Trainer.<br />

Gefragt sind Referate zu <strong>Linux</strong><br />

und Open Source im Rechenzentrum<br />

von Monitoring bis<br />

Virtualisierung, zu Mobile Solutions,<br />

Security, Open Knowledge,<br />

Open Data, Open Technology<br />

sowie zu rechtlichen<br />

Aspekten. Auch Erfahrungen<br />

im Schulungsbereich oder<br />

bei der Prüfungsvorbereitung<br />

sind willkommen.<br />

Informationen gibt es auf der<br />

Webseite [http://​www.​lpice.​eu],<br />

die Frist für die Einreichungen<br />

endet am 15. August. n


ISBN: 978-3-95561-127-9<br />

org_running_lean_final.indd 1 29.05.13 13:23<br />

ISBN<br />

Neuheiten von O’Reilly<br />

Lösungen vorprogrammiert<br />

Mission accomplished?<br />

Seit 2004 gehört er zur Ubuntu-Folklore:<br />

Der Bug No. 1,<br />

der Microsoft eine Vormachtstellung<br />

auf dem Desktop-PC-<br />

Markt bescheinigt, die es zu<br />

brechen gelte [https://​bugs.​<br />

​launchpad.​net/​ubuntu/+bug/​1/]. Nun<br />

hat Ubuntu-Gründer Shuttleworth<br />

den Bug geschlossen.<br />

Obwohl sich die Verhältnisse<br />

im Desktopbereich kaum verändert<br />

haben, argumentiert<br />

er, heute sei alles anders als<br />

2004. So seien inzwischen<br />

zahlreiche andere Geräte Teil<br />

des digitalen Lebens, darunter<br />

Telefone und Tablets. Mit I-OS<br />

und Android gebe es einen gesunden<br />

Wettbewerb auf dem<br />

Markt, insofern könne das<br />

Projekt den Bug schließen.<br />

Ubuntus Chef gibt aber zu,<br />

dass die Distribution nur einen<br />

kleinen Anteil an dieser<br />

Verschiebung habe.<br />

Auch zum sozialen Aspekt<br />

des Bugreports, der dem<br />

Ubuntu-Projekt stets als eine<br />

Art Mission diente, äußerte er<br />

sich. Es sei besser, sich auf die<br />

Qualität der eigenen Software<br />

zu konzentrieren statt auf den<br />

Einfluss eigener Produkte auf<br />

die eines Mitbewerbers. n<br />

ISBN 978-3-95561-109-5, 39,90 €<br />

ISBN 978-1-4493-3953-1, 41,00 €<br />

ISBN 978-1-4493-4522-8, 22,00 €<br />

ISBN 978-3-95561-141-5, 49,90 €<br />

Genau 10 Jahre: Limux „ist fertig“<br />

Beim Start 2003 noch eine<br />

IT-Revolution, deren Erschütterungen<br />

bis ins ferne Redmond<br />

reichten, zählt Limux<br />

inzwischen nur mehr zu den<br />

mittelgroßen <strong>Linux</strong>-Desktop-<br />

Projekten. Doch auch wenn<br />

die französische Gendarmerie,<br />

brasilianische Schulen oder<br />

die spanische Region Extremadura<br />

die Münchener bei der<br />

Anzahl der Rechner übertreffen,<br />

bleibt Limux für <strong>Linux</strong>-<br />

Enthusiasten ein Leuchtturm.<br />

Und der feiert nun das zehnte<br />

Jubiläum. Passend dazu hat<br />

der Projektleiter verkündet:<br />

„Wir sind fertig.“<br />

Gestartet war Limux [http://​<br />

​www.​muenchen.​de/​limux] am<br />

28. Mai 2003, als die Landeshauptstadt<br />

offiziell beschloss,<br />

die 15 000 städtischen Arbeitsplätze<br />

fortan mit <strong>Linux</strong><br />

zu betreiben, unabhängig von<br />

den Vorgaben der (amerikanischen)<br />

Softwarekonzerne.<br />

Dass es länger dauern würde,<br />

konnte man bereits den ersten<br />

Strategiepapieren entnehmen.<br />

So habe man nie vorgehabt,<br />

alle Fachanwendungen zu<br />

portieren, sondern nur „eine<br />

möglichst hohe Quote“, wie es<br />

ein Beschluss vom 28.5.2003<br />

formuliert.<br />

Auf dem <strong>Linux</strong>tag 2013 meldete<br />

Peter Hofmann, Projektleiter<br />

der Limux-Migration,<br />

schließlich: „Wir sind fertig.<br />

Dafür waren viele RUNNING langsame,<br />

Das How-to für<br />

kleine Schritte notwendig LEAN anstelle<br />

vom großen Knall. Qualität<br />

ging uns vor Seiten starken Zeit, Konzeptpapiere. wir haben<br />

lieber abgewartet und uns<br />

dem Buch übernehmen.<br />

dafür definieren<br />

selbst gekümmert, anstatt uns<br />

Die Kunden in den gesamten Entwicklungsprozess einbinden<br />

Features mit Kunden testen, verfeinern oder verwerfen<br />

Erkennen, wann die Marschrichtung geändert werden sollte<br />

auf Lösungen von Konzernen<br />

Den idealen Zeitpunkt für Finanzierungsrunden finden<br />

zu verlassen.“<br />

München habe niemals den<br />

www.oreilly.de<br />

EURO 24,90 [D]<br />

9 783955 611279 ISBN 978-3-95561-127-9<br />

<strong>Linux</strong>-Weg beschritten, um<br />

Geld zu sparen, beteuern die<br />

Verantwortlichen. Die geschätzt<br />

10 Millionen Euro, die<br />

das freie System weniger koste,<br />

nehme man aber, neben<br />

den wenigen Störungen und<br />

dem Mehrwert, den man in<br />

Sachen Organisation, Knowhow<br />

und Testen aufgebaut<br />

habe, gern in Kauf. n<br />

erfolgreiche Innovationen<br />

Warum scheitern so viele Startups und neue Produkte? Und wie<br />

kann man die Chancen deutlich erhöhen, mit einer Innovation<br />

erfolgreich zu sein? Als Antwort auf diese Fragen hat Ash Maurya die<br />

in diesem Buch vorgestellte Methode entwickelt, die auf Strategien des Lean Management und der<br />

agilen Entwicklung aufbaut und speziell auf Innovationsprozesse zugeschnitten ist. Der Trick besteht<br />

darin, frühzeitig, konsequent und in allen Projektphasen potenzielle Kunden in den Entwicklungsprozess<br />

einzubeziehen und das eigene Geschäftsmodell immer wieder zu hinterfragen. Ein entscheidendes<br />

Tool ist dabei die »Lean Canvas«, ein Template, das eine einfache Visualisierung des Businessplans<br />

ermöglicht und erheblich einfacher zu erfassen und zu überarbeiten ist als die üblichen, viele<br />

Ash Maurya hat die Methode anhand eigener Projekte entwickelt und erfolgreich getestet. In Running<br />

Lean erläutert er sie ganz praktisch mit Schritt­für­Schritt­Anleitungen anhand eines konkreten<br />

Beispiels. Alle Schritte können einfach nachvollzogen und auf die eigenen Innovationsprojekte angewandt<br />

werden. Die Lean Canvas sowie die Fragebögen für Kundeninterviews lassen sich direkt aus<br />

Ein Problem identifizieren, das viele Menschen umtreibt, und eine Lösung<br />

Das Produkt / die Idee kontinuierlich testen, in immer kürzeren Iterationszyklen<br />

Entwicklungsgeschwindigkeit, Erkenntnisprozesse und Ausrichtung optimieren<br />

Das How-to für<br />

erfolgreiche Innovationen<br />

RUNNING LEAN<br />

Maurya<br />

ISBN 978-3-86899-805-4, 14,90 €<br />

Für Startups, Existenzgründer<br />

und Produktentwickler<br />

RUNNING<br />

LEAN<br />

Das How-to für<br />

erfolgreiche Innovationen<br />

Ash Maurya<br />

Übersetzung: Ralf Schmitz, Herausgeber: Eric Ries<br />

ISBN 978-3-95561-127-9, 29,90 €<br />

ISBN 978-1-4493-0829-2, 32,00 €<br />

978-3-86899-369-1, 29,90 €<br />

O’REILLY ®<br />

www.oreilly.de


Aktuell<br />

www.linux-magazin.de News 08/2013<br />

8<br />

Electronic Frontier Foundation gegen DRM<br />

Die Electronic Frontier Foundation<br />

(EFF) hat sich [https://​<br />

​www.​eff.​org/​pages/​drm/​w3c‐formal<br />

‐objection‐html‐wg] gegen einen<br />

W3C-Entwurf ausgesprochen,<br />

der DRM über die Encrypted<br />

Media Extension (EME) zum<br />

Teil des HTML-5-Standards<br />

machen möchte.<br />

Die Formal Objection der EFF<br />

richtet sich gegen den Entwurf<br />

einer Charta der HTML Working<br />

Group und damit mittelbar<br />

gegen die EME. „Dieser<br />

Vorschlag steht abseits aller<br />

anderen Aspekte der HTML-<br />

Standardisierung“, schreibt<br />

Danny O’Brien von der EFF.<br />

„Er definiert eine neue Blackbox<br />

für die Unterhaltungsindustrie<br />

und schirmt sie gegen<br />

eine Kontrolle durch den<br />

Browser oder den User ab.“<br />

Daher habe die EFF Einspruch<br />

gegen Pläne zur Integration<br />

von EME in HTML 5 erhoben.<br />

Diese würden die Innovation<br />

im Web bremsen und global<br />

den Zugriff der Menschen auf<br />

Inhalte blockieren.<br />

Nicht nur habe sich DRM<br />

in der Vergangenheit in den<br />

meisten Fällen als unwirksam<br />

erwiesen. Die Befürchtung gilt<br />

auch, dass die geplante Form<br />

von EME dazu führt, dass andere<br />

Rechte-Inhaber dieselben<br />

Privilegien wie Hollywood<br />

verlangen, was zu einem Web<br />

führen könnte, in dem sich<br />

Bilder nicht mehr speichern<br />

oder durchsuchen, Werbung<br />

nicht blockieren ließe und<br />

innovative Browser nur mit<br />

expliziter Zustimmung der<br />

großen Rechte-Inhaber konkurrenzfähig<br />

seien.<br />

Als Vollmitglied des W3C hat<br />

die EFF daher Einspruch erhoben<br />

und fordert dazu auf,<br />

eine Diskussion über die Zukunft<br />

des Internets zu führen.<br />

„Der EME-Vorschlag muss als<br />

das betrachtet werden, was<br />

er ist: Eine Erfindung, die<br />

Open-Source-Entwickler und<br />

Konkurrenz ausschließt, Interoperabilität<br />

wegwirft und<br />

alte Business-Modelle festschreibt.“<br />

n<br />

Adapter-Board verbindet Gnublin und Raspberry Pi<br />

Das Augsburger Unternehmen<br />

Embedded Projects bietet<br />

seit Neuestem eine Aufsteckplatine<br />

für den beliebten<br />

Minirechner Raspberry Pi<br />

an, die Erweiterungsmodule<br />

des Gnublin-Boards nutzbar<br />

macht. Dank der Gnupi genannten<br />

Adapterplatine können<br />

interessierte Entwickler<br />

die bei Embedded Projects<br />

erhältlichen Module an den<br />

Raspberry Pi anschließen.<br />

Zu ihnen gehören unter anderem:<br />

Schrittmotor, Relaiskarte,<br />

Temperatursensor, CAN-Bus,<br />

RS232, Display, WLAN oder<br />

Webcam. Für die Erweiterungen<br />

stellt der Anbieter auch<br />

Kommandozeilen-Programme<br />

sowie ein C++-API zur Verfügung.<br />

Der Geschäftsführer Benedikt<br />

Sauter zeigt Gnupi [http://​www.​<br />

​youtube.​com/​watch?​v=BYxfTTonSsU]<br />

in einem kurzen Videoclip,<br />

für interessierte Bastler gibt es<br />

zudem ein passendes 45-Minuten-Webinar.<br />

Die Adapterkarte<br />

ist für rund 10 Euro im<br />

Embedded-Projects-Shop erhältlich.<br />

n<br />

Die Gnupi-Platine steckt man auf den Raspberry Pi und kann anschließend zahlreiche<br />

Module von Embedded Projects anschließen.<br />

Pidora 18: Fedora für den Raspberry Pi<br />

Pidora, ein Fedora-Remix für<br />

den Ein-Platinen-Computer<br />

Raspberry Pi, ist in Version<br />

18 erschienen, die mit neuen<br />

Features aufwartet. Die Release<br />

setzt auf Kernel 3.6.11<br />

und übersetzt für die Architektur<br />

Armv6hl.<br />

Aus dem Paketarchiv der<br />

jüngsten Fedora-Version 18<br />

stehen Tausende Pakete zur<br />

Installation per Yum bereit.<br />

Auf dem Image für die SD-<br />

Karte des Pi befinden sich<br />

bereits Programmierumgebungen<br />

für die Sprachen C,<br />

Python und Perl. Der Editor<br />

Gedit samt Erweiterungen wie<br />

der Python-Konsole ist auch<br />

an Bord, hinzu kommen Vi<br />

und Midnight Commander.<br />

Treiber zum Anbinden externer<br />

Hardware per GPIO, I2C<br />

und SPI gibt es ebenfalls.<br />

Daneben haben die Entwickler<br />

am kanadischen Seneca Centre<br />

for Development of Open<br />

Technology (CDOT) praktische<br />

Features für den kleinen<br />

ARM-Computer maßgeschneidert.<br />

Dazu gehören ein grafisches<br />

Tool zur Konfiguration<br />

nach dem ersten Booten, ein<br />

kleines Image, das sich später<br />

selbst vergrößert, und das<br />

automatische Erstellen eines<br />

Swap-Bereichs. Weitere Infos,<br />

Tutorial-Videos sowie das<br />

Image zum Herunterladen<br />

gibt es auf [http://​pidora.​ca] n


Multiboot-Tablet mit <strong>Linux</strong>, Android und Windows<br />

Windows 8, Ubuntu 13.04,<br />

Android 4.2 und dazu ein<br />

abnehmbarer Touchscreen –<br />

fertig ist das Python S3 des<br />

italienischen Unternehmens<br />

Ekoore [http://​www.​ekoore.​com]<br />

für rund 600 Euro. „Die drei<br />

Systeme können auf dem Gerät<br />

koexistieren, sodass der<br />

Benutzer beim Systemstart<br />

die Wahl hat“, schreibt der<br />

Hersteller auf der Webseite.<br />

Das Gerät bringt eine Dualcore-CPU,<br />

zwei USB-Ports,<br />

ein Ethernet- und ein WLAN-<br />

Modul sowie eine zweite<br />

Batterie mit. Amerikanische<br />

Medien berichten zudem von<br />

8 GByte RAM und 128 GByte<br />

SSD-Speicher. Die Basisvariante<br />

mit 2 GByte RAM und 32<br />

GByte SSD kostet 600 Euro,<br />

die Dockingstation mit Tastatur<br />

noch mal 139 Euro. n<br />

News 08/2013<br />

Aktuell<br />

www.linux-magazin.de<br />

9<br />

Sicherheitsschwächen in X-Clients<br />

Der Security-Experte Ilja van<br />

Sprundel hat im Code der X11-<br />

Client-Bibliotheken von X.org<br />

eine ganze Reihe sicherheitskritischer<br />

Fehler ausgemacht.<br />

Das schreibt Alan Coppersmith<br />

in einer Mitteilung an<br />

die X.org-Entwicklerliste. Der<br />

Hauptgrund für die Vielzahl<br />

von Schwachstellen liege darin,<br />

dass die Clientbibliotheken<br />

darauf vertrauen, dass die<br />

vom X-Server geschickten Daten<br />

dem X11-Protokoll genügen<br />

und korrekt sind. So aber<br />

lassen sich mit manipulierten<br />

Daten Integer und Buffer<br />

Overflows konstruieren.<br />

Meist ist das kein Problem,<br />

denn X-Server- und X-Client-<br />

Programme laufen mit derselben<br />

Benutzer-ID. Aber es gibt<br />

Sonderfälle wie Set-UID-Programme,<br />

mit denen sich eventuell<br />

Exploits zur Erlangung<br />

von Rootrechten schreiben<br />

lassen. Betroffen sind wohl<br />

alle bisherigen Versionen bis<br />

hin zur aktuellen. Helfende<br />

Patches für den Quellcode findet<br />

man im Security-Bereich<br />

der Webseite.<br />

n<br />

Die heute führenden Spezialisten stammen oft aus der "Freie Software-Szene" und schulen seit<br />

Jahren im <strong>Linux</strong>hotel. Das erklärt die Breite und Qualität unseres Schulungsangebotes:<br />

AJAX * Amavis * Android * Angriffstechniken * Apache * Asterisk * BaseX * BayesianAnalysis * Bind * C/C++ * Cassandra *<br />

CiviCRM * Cloud * Cluster * ClusterFS * CouchDB * CSS3 * CUPS * Debian * DHCP * DNS * DNSSEC * Echtzeit <strong>Linux</strong> *<br />

Embedded <strong>Linux</strong> * eXist-db * Faces * FAI * Firewall * Forensik * FreeBSD * FreeRADIUS * GeoExt * Git * Grails * GRASS *<br />

Groovy * hadoop * Hochverfügbarkeit * HTML5 * Hudson * iSCSI * IPv6 * ITSM * Java * JavaScript * Jenkins * Kernel * KVM<br />

* LDAP * LibreOffice * <strong>Linux</strong> * LPI * m23 * MacOSX * MapFish * Mapserver * Maven * Mikrocontroller * MVS/380 * MySQL *<br />

Nagios * Node.js * OpenBSD * OpenLayers * OpenOffice * openQRM * OpenVPN * OPSI * OSGi * OTRS * Perl * PHP *<br />

Postfix * PostgreSQL * Puppet * Python * QuantumGIS * R * Rails * RedHat * Routing * Request-Tracker RT * Ruby * Samba<br />

* SAN * Scala * Scribus * Shell * Sicherheit * SNMP * Spacewalk * Spamfilter * SQL * Struts * Subversion * SuSE * TCP/IP *<br />

Tomcat * Treiber * TYPO3 * Ubuntu * UML * Unix * Univention * Virenfilter * Virtualisierung * VoIP * WebGIS * Webservices *<br />

Windows Autoinstall * Windowsintegration * x2go * xen * XML * Xpath * Xquery * z/OS * Zabbix * Zend<br />

Fast 100% der Teilnehmer empfehlen uns weiter. Siehe www.linuxhotel.de<br />

Ja, wir geben es zu und haben überhaupt kein schlechtes Gewissen dabei: Unsere Schulungen machen auch Spaß ;-)


Aktuell<br />

www.linux-magazin.de News 08/2013<br />

10<br />

Kurznachrichten<br />

Zato 1.1: Ein noch junger, in Python geschriebener Applikationsserver<br />

und Enterprise Service Bus (ESB). Neu: Der Load Balancer Haproxy kann<br />

sich nun an alle Schnittstellen binden. Die vom Quickstart-Tool erzeugten<br />

Skripte lassen sich an andere Orte verschieben, das Kommando »zato<br />

check‐config« prüft die Konfiguration. Lizenz: LGPL [https://​zato.​io]<br />

<strong>Linux</strong> Mint 15: Eine auf Ubuntu aufbauende Distribution mit den Desktops<br />

Cinnamon und Mate. Neu: Die Basis von Mint 15 besteht aus dem Kernel<br />

3.8 und den Paketen von Ubuntu 13.04. Für das grafische Login mit MDM<br />

steht neben dem GTK- und dem GDM-Greeter ein neuer Begrüßungsschirm<br />

bereit, dessen Aussehen sich in HTML definieren lässt. Ein Driver Manager<br />

dient zur Auswahl proprietärer Treiber, etwa für Grafikkarten oder WLAN-<br />

Chips, ein Tool namens Sources verwaltet Paketquellen und testet Mirrors<br />

auf ihre Download-Geschwindigkeit. Cinnamon 1.8 bringt einen eigenen<br />

Bildschirmschoner, Desklets sowie eine verbesserte Version des Dateimanagers<br />

Nemo mit. Lizenz: GPL und andere [http://​www.​linuxmint.​com]<br />

Expect-lite 4.6.0: Ein Open-Source-Tool zum einfachen Automatisieren von<br />

Kommandozeilen-Programmen. Neu: Die neue Release führt unter anderem<br />

Foreach-Schleifen ein. Daneben bringt sie eine Reihe von Operationen<br />

für Strings mit: Verketten, Subtrahieren sowie das Suchen und Ersetzen<br />

mit und ohne Regular Expressions. Die Handhabung von SSH-Logins haben<br />

die Entwickler vereinfacht, indem sie die Optionen nach »~/.ssh/config«<br />

verbannt haben. Lizenz: BSD [http://​expect‐lite.​sourceforge.​net]<br />

Highlight 3.14: Die Software hebt die Syntax zahlreicher Programmierund<br />

Markup-Sprachen farbig hervor. Neu: Die Version 3.14 kann unter<br />

<strong>Linux</strong> mit den CRLF-Zeilenenden von Windows umgehen. Daneben wurde<br />

die Konfigurierbarkeit vereinfacht: Die Software sucht Skripte zunächst<br />

in »~/.highlight«, dann systemweit unter »/usr/share/highlight«. Neue<br />

Plugins heben die Klammern oder Schlüsselwörter in der HTML-Ausgabe<br />

anklickbar hervor. Der Kopf- und Fußbereich der Ausgabe lässt sich in den<br />

Plugins anpassen. Lizenz: GPLv3 [http://​www.​andre‐simon.​de]<br />

Emacspeak 38.0: Eine sprechende Desktopumgebung für blinde und<br />

sehbehinderte Nutzer. Neu: Die neue Release (Codename Free Dog) ermöglicht<br />

die Bedienung von Google Maps, um Orte zu suchen und Wegbeschreibungen<br />

abzurufen. Für Programmierer gibt es eine Sprachausgabe<br />

für das Codetagging-System Gags sowie eine rudimentäre Eclipse-Integration<br />

via Eclim. Daneben wurden die Eingabehilfen für Websuchen sowie<br />

die URL-Templates aktualisiert. Emacspeak 38.0 arbeitet zudem mit der<br />

Advice-Implementierung in Emacs 24.3 zusammen. Lizenz: GPLv2 [http://​<br />

​emacspeak.​sf.​net]<br />

Rsyslog 7.4.0: Eine freie Logging-Software basierend auf »syslog« für<br />

Unix. Neu: Rsyslog 7.4.0 bringt ein Security Package mit, das Anonymisierung,<br />

Signaturen und Verschlüsselung für die Protokolldateien anbietet.<br />

Auch neu ist das Zusammenspiel mit Systemd: Rsyslog bezieht Nachrichten<br />

von dessen Journal und schickt Meldungen dorthin. Es gibt Rate-Limiter<br />

für alle Eingangsquellen, zudem fasst Rsyslog wiederholte Nachrichten<br />

zusammen, was Nutzen und Geschwindigkeit verbessern soll. Arbeiten<br />

an Disk Queue und DNS-Cache sowie ein Skript-Optimizer steigern die<br />

Performance. Lizenz: GPLv3 und LGPLv3 [http://​www.​rsyslog.​com]<br />

Yadt auf dem <strong>Linux</strong>tag 2013<br />

Automatisieren lautet die Devise in<br />

diesem Jahr: Schlomo Schapiro auf<br />

dem <strong>Linux</strong>tag 2013.<br />

Immer wieder kommen Unternehmen<br />

auf den <strong>Linux</strong>tag,<br />

um ihre Open-Source-Ansätze<br />

vorzustellen. So etwa das Berliner<br />

Unternehmen Immobilienscout<br />

24, das mit seinem<br />

Deployment-Tool Yadt [http://​<br />

​www.​yadt‐project.​org] erschien.<br />

In den vergangenen beiden<br />

Jahre habe das Thema Devops<br />

auf der Tagesordnung<br />

gestanden, nun sei es Yadt,<br />

das Open-Source-Tool fürs Deployment,<br />

so erzählt Schlomo<br />

Schapiro, seines Zeichens<br />

Systemarchitekt und erklärter<br />

Open-Source-Enthusiast. Immobilienscout<br />

24 hat ein eigenes<br />

Tool entwickelt, über das<br />

sich Konfigurationen, Anwendungen<br />

und die Infrastruktur<br />

der Webseiten in RPM-Pakete<br />

verpacken und – nach einigen<br />

Tests – auf die Server ausliefern<br />

lassen.<br />

Die Administratoren setzen<br />

auf eine dreiteilige Struktur<br />

aus Entwicklungs-, Deployund<br />

Produktionsservern. Per<br />

Continuous Integration bauen<br />

sie RPM-Pakete aus Software,<br />

die in den Subversion-Repositories<br />

wartet. Die Module der<br />

Webseite würden kontinuierlich<br />

aktualisiert, die darunterliegenden<br />

Systeme auch, erklärt<br />

Schapiro. Das sei nicht<br />

immer so gewesen: Der Open-<br />

Source-Ansatz, die Vorträge<br />

auf Veranstaltungen wie dem<br />

<strong>Linux</strong>tag und vor allem die<br />

Automatisierung sollen sicherstellen,<br />

dass das System<br />

nachhaltig funktioniere und<br />

gepflegt werde.<br />

Anders als früher bleibe man<br />

nicht mehr bei einer bestimmten<br />

Version von Tomcat, nur<br />

weil diese stabil laufe, denn<br />

auf diese Weise würde man<br />

die Probleme nur aufschieben.<br />

Beim Vorgängersystem<br />

sei die Entwicklung zudem<br />

irgendwann eingeschlafen,<br />

daher habe man Yadt von<br />

Grund auf neu geschrieben<br />

und halte den Entwicklungsprozess<br />

bewusst offen. Nicht<br />

nur die eigenen Mitarbeiter<br />

sollen das Tool verwenden,<br />

sondern auch andere Firmen<br />

– eine Behörde setze es intern<br />

bereits ein.<br />

Warum greift Immobilienscout<br />

24 nicht einfach zu Chef und<br />

Puppet, den häufig eingesetzten<br />

Open-Source-Lösungen<br />

für massive Deployments?<br />

Natürlich werde man schräg<br />

angesehen, weil man die nahe<br />

liegenden Open-Source-Tools<br />

ablehne. Aber diese seien für<br />

den eigenen Bedarf schlicht zu<br />

überladen, ihnen gehe es um<br />

Einfachheit, erklärt Schapiro.<br />

Die bekannten Open-Source-<br />

Alternativen bieten für jeden<br />

Sonderfall eine Lösung an,<br />

aber genau das spiegele sich<br />

eben auch in der Komplexität<br />

der Tools wieder, welche die<br />

Firma in dieser Form nicht<br />

haben möchte.<br />

Neben Yadt haben die Entwickler<br />

zudem ein Yum-Plugin<br />

für Nexus [https://​github.​<br />

​com/​sonatype/] entwickelt und<br />

es als Open-Source-Software<br />

veröffentlicht. Es richtet sich<br />

vor allem an Java-Entwickler,<br />

die Maven als Repository für<br />

RPMs verwenden möchten,<br />

das dann auch der Paketmanager<br />

Yum anzapfen kann. n


Build-Automat Pybit erreicht Version 1.0.0<br />

Pybit, ein verteiltes Open-<br />

Source-Buildsystem, ist in der<br />

ersten stabilen Release 1.0.0<br />

erhältlich. Sie kann Pakete direkt<br />

aus Debians Paketmanager<br />

Apt neu bauen, daneben<br />

bringt der Client eine verbesserte<br />

Daemon-Unterstützung<br />

mit. Die neue Release steckt<br />

unter anderem in Debians<br />

Unstable-Repository.<br />

Pybit ist in Python und unter<br />

Verwendung der Message-<br />

Queue Rabbit MQ umgesetzt.<br />

Derzeit kommt es zum Einsatz,<br />

um Debian-Pakete aus<br />

dem Quelltext sich rasch ändernder<br />

Subversion-Repositories<br />

zu bauen. Builds stößt<br />

das System automatisch an,<br />

sobald sich die Datei »debian/<br />

changelog« im Paketquelltext<br />

ändert. Daneben lässt sich das<br />

Tool einsetzen, um Pakete mit<br />

unterschiedlichen Flags oder<br />

für verschiedene Architekturen<br />

zu bauen.<br />

In Zukunft soll Pybit weitere<br />

Paketformate wie etwa RPM<br />

und Windows-Binaries produzieren.<br />

Zurzeit baut die<br />

Software hauptsächlich ARMund<br />

i386-Pakete für Debians<br />

stabile Release Wheezy sowie<br />

die Entwicklerzweige. Weitere<br />

Informationen sowie den<br />

GPLv2-lizenzierten Quelltext<br />

gibt es in einem Github-Repository<br />

[https://​github.​com/​<br />

​nicholasdavidson/​pybit]. n<br />

Smart Fuzzing mit Fuzzino<br />

Die Forschungseinrichtung<br />

Fraunhofer Fokus hat mit<br />

Fuzzino ein Java-Test-Tool<br />

unter Open-Source-Lizenz<br />

freigegeben. Unter Fuzzing<br />

versteht man einen Test, der<br />

einem Programm zufällig generierte<br />

Eingabedaten liefert,<br />

um Fehler zu finden, insbesondere<br />

bislang unentdeckte<br />

Sicherheitsschwächen (0-Day-<br />

Vulnerabilities).<br />

Fuzzino verwendet Smart Fuzzing,<br />

also Daten, die aufgrund<br />

einer Protokollbeschreibung<br />

erzeugt wurden. Das reduziere<br />

die Zahl der Testfälle auf<br />

die relevanten, komplexere<br />

Fehler würden auf diese Weise<br />

besser aufgedeckt.<br />

Auf der Fokus-Website finden<br />

sich weitere Informationen,<br />

die unter anderem ein Referenzprojekt<br />

vorstellen. Für<br />

das Geldverarbeitungssystem<br />

eines Industriepartners wurde<br />

dabei eine Risikoanalyse<br />

erstellt und mit funktionalen<br />

Testfällen nach Schwachstellen<br />

gefahndet. Dienstleistungen<br />

rund um das Testing bietet<br />

das Team auch an.<br />

Das Java-Tool steht im Quelltext<br />

auf Github [https://​github.​<br />

​com/​fraunhoferfokus/​Fuzzino] inklusive<br />

Dokumentation und<br />

vielen Codebeispielen bereit,<br />

als Softwarelizenz kommt<br />

Apache 2.0 zur Anwendung.<br />

(ofr/mhu/mfe/kki) n<br />

News 08/2013<br />

Aktuell<br />

www.linux-magazin.de<br />

11<br />

Digitales aBO<br />

linuxUser: Das Monatsmagazin für die Praxis<br />

DigisUB *<br />

nur 56,10 €<br />

im Jahr (12 PDFs)<br />

* Digitales Abo, jederzeit kündbar<br />

Jetzt Bestellen Unter:<br />

www.linux-user.de/digisub<br />

Telefon: 07131 /2707 274<br />

Fax: 07131 / 2707 78 601<br />

E-Mail: abo@linux-user.de


Aktuell<br />

www.linux-magazin.de Zahlen & Trends 08/2013<br />

12<br />

Zahlen & Trends<br />

Logitech wirbt mit <strong>Linux</strong>-Kompatibilität<br />

Nach der medienträchtigen<br />

Ankündigung der Spieleplattform<br />

Steam, ihre Spiele auf<br />

<strong>Linux</strong>-Systemen zu veröffentlichen,<br />

bekommt das freie<br />

Betriebssystem jetzt auch von<br />

Seiten der Hardwarehersteller<br />

Schützenhilfe: Beim Mausund<br />

Multimedia-Spezialisten<br />

Logitech haben die Entwickler<br />

im Onlineshop die Produkt-Infos<br />

um einen Punkt erweitert,<br />

der vor allem Anhänger des<br />

freien Betriebssystems freuen<br />

wird: Logitech verspricht als<br />

einer der ersten Hersteller im<br />

Endkundenbereich, einige<br />

seiner Geräte seien <strong>Linux</strong>kompatibel.<br />

Logitech sagt im Grunde nicht<br />

mehr als: Diese Maus können<br />

Sie unter <strong>Linux</strong>, Windows und<br />

OS X verwenden. Über den<br />

Wert dieser Angaben diskutieren<br />

Fans im Internet, denn<br />

gerade die Eingabegeräte wie<br />

Mäuse und Keyboards erfüllen<br />

ja Standards, mit denen<br />

jedes <strong>Linux</strong>-System schon<br />

seit Langem problemlos zurechtkommt.<br />

Dennoch interpretieren<br />

Blogger das Auftauchen<br />

dieses Eintrags als einen<br />

Meilenstein, zieren sich viele<br />

Hersteller doch noch immer,<br />

<strong>Linux</strong>-Support auf die Verpackung<br />

zu schreiben. n<br />

Auf seiner Webseite weist Logitech Geräte als <strong>Linux</strong>-kompatibel aus.<br />

<strong>Linux</strong> für Brillen<br />

Google-Entwickler spielen<br />

gern mit Technik. Das zeigte<br />

sich wieder auf der hauseigenen<br />

Konferenz Google I/​O.<br />

Hier demonstrierten Angestellte,<br />

wie man Google Glass<br />

rootet, um ein Ubuntu darauf<br />

zu installieren [http://​www.​<br />

​engadget.​com/​2013/​05/​16/].<br />

Über ADB werden dabei einige<br />

APK-Pakete auf das Gerät<br />

geschoben, das der Entwickler<br />

dann per Bluetooth mit<br />

einem Keyboard und einem<br />

Trackpad verknüpft. Dann<br />

wird der Bootloader aufgemacht<br />

und mit einem neuen<br />

Boot-Image ein Zugang für<br />

Root gelegt. Über den Android<br />

Terminal Emulator und den<br />

Complete <strong>Linux</strong> Installer lässt<br />

sich anschließend eine <strong>Linux</strong>-<br />

Distribution installieren. n<br />

<strong>Linux</strong> im Weltall<br />

Frankreich: Open Source bevorzugt<br />

„Keine Science-Fiction“ sei<br />

das, was er zu berichten habe,<br />

schreibt Steven J. Vaughan-<br />

Nichols in seinem Blog auf<br />

Zdnet [http://​www.​zdnet.​com/​<br />

​blog/​open‐source/]. Die Nasa<br />

wolle ihre Windows-betriebenen<br />

Laptops in der International<br />

Space Station (ISS) auf<br />

<strong>Linux</strong>-Desktops umstellen.<br />

Außerdem werde R2, der erste<br />

humanoide Roboter im Weltall,<br />

mit <strong>Linux</strong> betrieben.<br />

Vaughan-Nichols beruft sich<br />

dabei auf eine Aussage von<br />

Keith Chuvala, verantwortlich<br />

für das Space Operations<br />

Computing der Nasa. Laut<br />

Chuvala wolle die amerikanische<br />

Weltraumbehörde in<br />

Zukunft Debian 6 einsetzen,<br />

nachdem sie auf einigen<br />

Rechnern an Bord bereits gute<br />

Erfahrungen mit Scientific<br />

<strong>Linux</strong> gemacht habe, einem<br />

Red-Hat-Derivat.<br />

Noch mehr Science-Fiction<br />

bietet R2, der erste „Robonaut“<br />

im Weltall: Der menschenähnliche<br />

Roboter läuft<br />

auf einer <strong>Linux</strong>-Basis und soll<br />

den menschlichen Astronauten<br />

gefährliche oder anstrengende<br />

Arbeiten abnehmen. n<br />

Der französische Senat empfiehlt<br />

seit Kurzem den bevorzugten<br />

Einsatz freier Software<br />

und offener Formate in Frankreichs<br />

Grund- und weiterführenden<br />

Schulen.<br />

Ausdrücklich wird in dem auf<br />

[http://​www.​senat.​fr/​leg/​pjl12‐569.​<br />

​html] veröffentlichten Dokument<br />

– übersetzt – festgestellt,<br />

dass „dieser öffentliche Dienst<br />

bevorzugt freie Software und<br />

offene Dokumentenformate<br />

verwendet“.<br />

Die Empfehlung des Senats<br />

gelte zwar nicht für das gesamte<br />

Schulsystem, sie verankere<br />

aber erstmals freie<br />

und offene Software gesetzlich,<br />

schreibt kommentierend<br />

die Organisation „April“, die<br />

sich vor Ort für freie Software<br />

einsetzt.<br />

Diese Politik bezieht sich<br />

auf ein Versprechen, das der<br />

französische Staatspräsident<br />

François Hollande in seinem<br />

Wahlkampf gegeben hatte.<br />

Sie ist nicht der erste Erfolg<br />

für Open Source in dem Land:<br />

Die französische Gendarmerie<br />

will bis 2015 nicht weniger als<br />

90 Prozent ihrer Rechner auf<br />

Ubuntu umstellen. n


Rechtsunsicherheit bei Softwarepatenten soll enden<br />

Nach den Anhörungen der<br />

Experten haben CDU/​CSU,<br />

SPD, Bündnis 90/​Die Grünen<br />

sowie die FDP einen gemeinsamen<br />

Antrag zur Patentierbarkeit<br />

von Software gestellt.<br />

Er fordert unter anderem, die<br />

Praxis der Patentvergabe auf<br />

nicht patentierbare Software<br />

zu stoppen.<br />

Das vierseitige Papier stellt<br />

fest, dass das Europäische Patentamt<br />

(EPA) Zehntausende<br />

von Patenten auf Software<br />

erteilt habe, obwohl dies laut<br />

deutschem Patentgesetz und<br />

dem Europäischen Patentübereinkommen<br />

eigentlich<br />

nicht möglich ist, weil diese<br />

„Computerprogramme als solche<br />

vom Patentschutz ausnehmen“.<br />

Für Software-Entwickler<br />

bedeute dies große Rechtsunsicherheit.<br />

Auch seien Patente<br />

mit dem überwiegenden Teil<br />

der Open-Source-Software<br />

unvereinbar, man befürchte<br />

insgesamt Monopolisierungstendenzen.<br />

Die Parteien sehen offenbar,<br />

dass sie den Software-Richtlinien<br />

in Europa selbst Geltung<br />

verschaffen müssen. Der Bundestag<br />

fordert daher die Regierung<br />

auf, dafür zu sorgen,<br />

dass die Urheber von Software<br />

diese auch wirtschaftlich<br />

nutzen dürfen, ohne Patente<br />

von Dritten fürchten zu müssen.<br />

Software soll sich urheberrechtlich<br />

schützen lassen,<br />

aber nicht patentieren. Letzteres<br />

solle sich auf Computerprogramme<br />

beschränken, die<br />

mechanische oder elektromechanische<br />

Bauteile „ersetzen“,<br />

etwa Software zum<br />

Steuern von Walzen.<br />

Auch die Open-Source-Entwickler<br />

sollen ihre Software<br />

rechtssicher veröffentlichen<br />

dürfen und Projekte „möglichst“<br />

nicht von Patenten beeinträchtigt<br />

werden. Zudem<br />

soll die Bundesregierung die<br />

Entscheidungspraxis des EPA<br />

wissenschaftlich evaluieren<br />

und dafür sorgen, dass die Erteilung<br />

von Softwarepatenten<br />

künftig unterbleibt.<br />

Der Bundesverband Informations-<br />

und Kommunikationstechnologie<br />

(BIKT) begrüßte<br />

den Antrag und fordert:<br />

„Deutschland muss gesetzgeberisch<br />

vorangehen, um ein<br />

deutliches Signal in Richtung<br />

Brüssel zu setzen.“ n<br />

Zahlen & Trends 08/2013<br />

Aktuell<br />

www.linux-magazin.de<br />

13<br />

Intels Tizen auf einem Ultrabook<br />

Auf der Tizen Conference in<br />

San Francisco haben Intel-<br />

Entwickler ein I-7-Ivy-Bridge-<br />

Ultrabook mit dem <strong>Linux</strong>-<br />

System gezeigt. Von dem Gerät<br />

gibt es auch ein Video<br />

[http://​www.​youtube.​com/​watch?​v=<br />

fU1v56cmzKI]. Es zeigt ein mit<br />

einem Gnome-3-Desktop ausgestattetes<br />

Intel-Ultrabook,<br />

dessen Shell – die Tizen Shell<br />

– für die mobile Oberfläche<br />

optimiert wurde.<br />

Ein Intel-Mitarbeiter führte<br />

das Laptopsystem vor, das<br />

in vielen Teilen eher an ein<br />

Standard-<strong>Linux</strong> erinnert als<br />

an eins mit Android.<br />

Das Gerät nutze bereits Apps<br />

der HTML-5-Runtime, aber<br />

auch <strong>Linux</strong>-Standards wie<br />

Pulseaudio. Es sei offen für<br />

Accounts bei Internetdiensten,<br />

selbst 3-D-Spiele wie<br />

Team Fortress 2 würden bereits<br />

auf Tizen laufen. n<br />

Quelle: Youtube, Tizenexperts<br />

Ein erstes Ultrabook mit Tizen wurde auf der Tizen-Konferenz vorgestellt.<br />

Debian: Meinungsbild zu Systemd<br />

Das Debian-Projekt hielt eine<br />

Umfrage ab, um die Meinungen<br />

in der Community zum<br />

alternativen Init-System Systemd<br />

zu erforschen.<br />

Von den rund 570 Teilnehmern<br />

stimmten 62 Prozent der<br />

Aussage „Ich befürworte Systemd<br />

in Debian, das ist in Ordnung“<br />

zu. 15 Prozent wollen<br />

die Software nicht in Debian<br />

sehen, 14 sind unentschlossen<br />

und 8 Prozent gaben an,<br />

es sei ihnen egal. Als Standard-Init-System<br />

wün schen<br />

sich 44 Prozent Systemd, 32<br />

Prozent sind dagegen. Unter<br />

den Befragten befanden sich<br />

nach eigenen Angaben rund<br />

46 Prozent Debian-Developer<br />

und -Maintainer oder sonstige<br />

Aktive, die Pakete bauen.<br />

Rund die Hälfte der Teilnehmer<br />

gab auch Gründe für ihre<br />

Haltung an. Häufig genannte<br />

Argumente lauten „Systemd<br />

ist zu komplex und aufgeblasen“,<br />

„Systemd lässt sich<br />

nicht auf Nicht-RPM-Systeme<br />

wie Debian/​Free BSD“ portieren<br />

und „Der Bootvorgang mit<br />

Systemd lässt sich schwieriger<br />

debuggen als mit Sys-V-Init“.<br />

Systemd steht für alle Debian-<br />

Zweige (Stable, Testing, Unstable)<br />

als Paket bereit. Die<br />

Maintainer möchten demnächst<br />

auf die Bedenken der<br />

Befragten reagieren, schreibt<br />

Michael Stapelberg in seinem<br />

Blogeintrag [http://​people.​<br />

​debian.​org/​~stapelberg/​2013/​05/​<br />

​27/], der auch weiterführende<br />

Informationen anbietet. n


Aktuell<br />

www.linux-magazin.de Zahlen & Trends 08/2013<br />

14<br />

Exchange Web Services für KDE?<br />

Der brasilianische Entwickler<br />

Daniel Nicoletti arbeitet an<br />

einer KDE-Unterstützung für<br />

die Web-Service-Schnittstelle<br />

von Microsoft Exchange. Der<br />

proprietäre Groupwareserver<br />

des Redmonder Unternehmens<br />

hat neben Mapi auch<br />

eine Soap-Schnittstelle namens<br />

EWS (Exchange Web<br />

Services) an Bord, die beispielsweise<br />

die E-Mail-Lösung<br />

Evolution unterstützt.<br />

Nicoletti hat als ersten Versuch<br />

mit KDE-Technologie<br />

einen einfachen Client namens<br />

Litteras geschaffen, der<br />

allerdings noch einige Mängel<br />

aufweisen soll. Nun möchte<br />

der Entwickler nicht nur Litteras<br />

verbessern, sondern eine<br />

KDE-Bibliothek für EWS austüfteln,<br />

die unterschiedliche<br />

Anwendungen nutzen könnten.<br />

Auf diesem Weg erhielte<br />

zum Beispiel auch KMail<br />

Zugriff auf den Exchange-<br />

Dienst.<br />

Zur Finanzierung seiner Idee<br />

hat Nicoletti eine Crowdfunding-Kampagne<br />

auf Indiegogo<br />

gestartet. Sein Ziel ist, 100<br />

Prozent des EWS-Protokolls<br />

umzusetzen. Funktionsfähigen<br />

Code für Litteras gibt es<br />

bereits jetzt unter der GPLv2<br />

in einem Gitorious-Repository<br />

[https://​gitorious.​org/​litteras]. n<br />

In Grundzügen fertig: Die KDE-Software Litteras liest Exchange-Mails über die<br />

Soap-Schnittstelle des Microsoft-Servers.<br />

Frauen an den Kernel!<br />

Sarah Sharp berichtet in ihrem<br />

Blog über den Ausgang des<br />

Outreach Program for Women<br />

(OPW) für den <strong>Linux</strong>-Kernel.<br />

Die gute Nachricht: Tatsächlich<br />

scheint das Programm bei<br />

den weiblichen Entwicklern<br />

gut anzukommen.<br />

Sechs ausgewählte Teilnehmerinnen<br />

erhalten demnach<br />

ein Stipendium von 5000 US-<br />

Dollar, um drei Monate lang<br />

in die Kernelentwicklung zu<br />

schnuppern. Intel und die<br />

<strong>Linux</strong> Foundation finanzieren<br />

jeweils drei Plätze. Voraussetzung<br />

für eine Bewerbung<br />

ist jedoch, dass die Kandidatinnen<br />

bereits Patches an die<br />

Kernelentwickler geschickt<br />

haben und diese akzeptiert<br />

wurden.<br />

Sarah Sharps Erwartungen<br />

im Hinblick auf die Resonanz<br />

waren jedoch eher zurückhaltend,<br />

wie sie in ihrem Blog unter<br />

[http://​sarah.​thesharps.​us/​2013/​<br />

​05/​23/] schreibt: „Everyone<br />

knows that kernel maintainers<br />

are the pickiest bastards, perfectionists<br />

about coding style,<br />

getting the proper signed-offby,<br />

sending plain text email,<br />

etc.“ Mit anderen Worten:<br />

Kernelentwickler seien bekanntlich<br />

schnell schlecht gelaunt,<br />

wenn jemand sich nicht<br />

pedantisch an die Regeln der<br />

Mailingliste halte, was Neulinge<br />

häufig abschrecke.<br />

Aus diesen Gründen rechnete<br />

die bei Intel angestellte Kernelhackerin<br />

mit ein bis zwei fertigen<br />

Patches – irrte sich aber<br />

gewaltig: Tatsächlich wurden<br />

von 41 Bewerberinnen 374<br />

Cleaning-Patches für Staging-<br />

Treiber eingereicht, von denen<br />

Greg Kroah-Hartman 133<br />

für den Mainline-Kernel akzeptierte.<br />

Vier weitere Patches<br />

landeten im Xen-Tree. Nach<br />

fünf Tagen reichten die Teilnehmerinnen<br />

zudem saubere<br />

Patch Sets ein.<br />

Als Gründe für den Erfolg des<br />

Programms, das sich auch an<br />

Gender Queers und Fluids<br />

richtet, sieht Sharp drei Faktoren:<br />

starke Bewerberinnen,<br />

detaillierte Tutorials sowie<br />

motivierende Mentoren. Ein<br />

von Sharp selbst verfasstes<br />

First Patch Tutorial dürfte<br />

auch andere Entwickler interessieren,<br />

die am Kernel basteln<br />

wollen. Zudem wurde ein<br />

„Safe Place“ für die Praktikantinnen<br />

geschaffen, also ein<br />

Kommunikationskanal, über<br />

den sich ohne Druck Fragen<br />

stellen ließen. Eine nächste<br />

Förderrunde soll im Dezember<br />

starten.<br />

n<br />

Googles Wolke wechselt zu Debian<br />

Noch ein Erfolg für Team<br />

Debian: Nach der Nasa, die<br />

ihre Rechner in der International<br />

Space Station (ISS) jetzt<br />

mit Debian bestückt, gab<br />

jüngst auch Google bekannt,<br />

zahlreiche eigene Systeme auf<br />

das freie Community-<strong>Linux</strong> zu<br />

migrieren. In einer Mitteilung<br />

[http://​googleappengine.​blogspot.​<br />

​de/​2013/​05/] gratulierte Google-<br />

Entwickler Jimmy Kaplowitz<br />

nicht nur „seinem“ Debian-<br />

Team, sondern erklärte auch,<br />

Google werde Wheezy ab<br />

sofort als Standard für alle<br />

Images der Compute Engine<br />

heranziehen.<br />

Wie die News-Webseite „The<br />

Register“ meldet, habe Google<br />

bereits seine FAQ aktualisiert<br />

und die bisherigen GCEL-Images<br />

als veraltet gekennzeichnet.<br />

Das bedeutet, man werde<br />

sie demnächst komplett entfernen.<br />

Dennoch arbeite Google auch<br />

weiterhin aktiv mit anderen<br />

Distributionen zusammen,<br />

beispielsweise unterstütze<br />

man immer noch Centos und<br />

sei stets offen für Kundenwünsche.<br />

Aber: „Wir glauben,<br />

dass eine Distribution, die von<br />

der Debian-Community unterstützt<br />

wird, unseren Kunden<br />

ein großartiges Nutzererlebnis<br />

bietet“, erklärte ein Google-<br />

Sprecher auf Anfrage von The<br />

Register.<br />

n


Coverity: Qualitätssiegel für <strong>Linux</strong>-Kernel<br />

Das Unternehmen Coverity<br />

hat seine Fehlerstatistiken für<br />

Open-Source- und proprietären<br />

Quellcode für das Jahr<br />

2012 veröffentlicht.<br />

Für den jüngsten Bericht<br />

hat die Firma 450 Millionen<br />

Zeilen Code untersucht, die<br />

größte Menge, seit die US-<br />

Firma 2006 mit ihren umfassenden<br />

Analysen begann. Neben<br />

proprietären Softwareprodukten<br />

kommen dabei auch<br />

Open-Source-Projekte wie der<br />

Apache-Webserver, PHP und<br />

der <strong>Linux</strong>-Kernel zur Untersuchung.<br />

Letzterem stellen die Forscher<br />

ein hervorragendes Zeugnis<br />

aus: Der Kernel weise<br />

in Version 3.8 lediglich 0,59<br />

Defekte pro 1000 Codezeilen<br />

auf. Damit liege die Fehlerquote<br />

unterhalb der Rate der<br />

untersuchten kommerziellen<br />

Software (0,68) sowie der<br />

teilnehmenden Open-Source-<br />

Projekte (0,69).<br />

Zudem ließe sich eine interessante<br />

Korrelation zwischen<br />

Codemenge und ‐qualität feststellen.<br />

Proprietäre Projekte<br />

mit mehr als einer Million<br />

Codezeilen kämen auf eine<br />

Fehlerquote von nur 0,66, bei<br />

kleineren liege sie bei 0,98.<br />

Bei freier Software kehre sich<br />

das Verhältnis um: Projekte<br />

mit 500 000 bis eine Million<br />

Codezeilen enthielten nur<br />

0,44 Fehler pro 1000 Zeilen,<br />

die größeren hingegen 0,75<br />

Fehler.<br />

Der Bericht steht nach Registrierung<br />

als 61-seitiges PDF-<br />

Dokument zum Download<br />

bereit. Open-Source-Projekte<br />

können sich bei Coverity für<br />

kostenlose Untersuchungen<br />

ihres Quelltexts anmelden. n<br />

PHP ohne Security<br />

Fast die Hälfte der im Web<br />

erreichbaren PHP-Installationen<br />

tragen die Versionsnummer<br />

5.2 oder älter. Das heißt,<br />

das Upstream-Projekt versorgt<br />

sie nicht mehr mit Security-<br />

Updates.<br />

Darauf weist auf [http://​www.​<br />

​lornajane.​net/​posts/​2013] die<br />

PHP-Entwicklerin und Autorin<br />

Lorna Jane Mitchell hin,<br />

die ihre Zahlen von der Umfrageseite<br />

[http://​w3techs.​com]<br />

bezieht. Neben dem Sicherheitsrisiko<br />

bedeute dies, dass<br />

die Betreiber veraltete Technologie<br />

aus dem Jahr 2006<br />

benutzen.<br />

Sie empfiehlt mindestens ein<br />

Upgrade auf die PHP-Version<br />

Anzeige<br />

5.3, die nützliche Features für<br />

das objektorientierte Programmieren<br />

mitbringe, zudem anonyme<br />

Funktionen und die<br />

Erweiterung Date Time.<br />

Daneben habe diese Release<br />

das wichtige Error-Flag »E_<br />

DEPRECATED« eingeführt,<br />

das Entwickler vor nicht zukunftstauglichen<br />

Features<br />

warne und somit den Upgrade-Pfad<br />

sichere. PHP 5.4,<br />

die derzeit stabile Version,<br />

glänze laut Mitchell vor allem<br />

bei den Punkten Performance<br />

und Speicherbedarf.<br />

Upgrades, so schließt die Autorin<br />

ihren Beitrag, sollten ein<br />

selbstverständlicher Teil der<br />

Softwarewartung sein. n<br />

Die Perspektiven der Videounterhaltungsbranche in Polen<br />

Zahlen & Trends 08/2013<br />

Aktuell<br />

www.linux-magazin.de<br />

15<br />

Studie: Openstreetmap-User laufen weiter<br />

Gar nicht so lokal wie gedacht<br />

scheinen die Openstreetmap-<br />

User ihre freie Weltkarte zusammenzutragen.<br />

Eine neue<br />

Studie der Uni Heidelberg belegt,<br />

dass manch ein Freizeit-<br />

Geodät gar 1000 Kilometer<br />

und mehr von seinem Wohnort<br />

entfernt arbeitet, um Daten<br />

für OSM zu sammeln.<br />

Die neue Studie zeigt laut Pascal<br />

Neis von der Universität<br />

Heidelberg, „dass die Größe<br />

der lokalen Community wie<br />

auch die Datenmenge des<br />

OSM-Projekts meist mit der<br />

Bevölkerungsdichte korreliert<br />

[…], weltweit aber [auch]<br />

sehr unterschiedlich sein<br />

kann. Gerade Länder außerhalb<br />

von Europa zeigen starke<br />

Differenzen“.<br />

Eine weitere Analyse decke<br />

laut Neis auf, „dass nicht<br />

zwangsläufig die Geodaten in<br />

einer Stadt auch von lokalen<br />

Mitgliedern gesammelt werden,<br />

sondern teilweise auch<br />

erhebliche Beiträge von freiwilligen<br />

Helfern stammen, die<br />

mehr als 1000 Kilometer von<br />

der jeweiligen Stadt entfernt<br />

ihr normales Aktivitätsgebiet<br />

besitzen“. Dies widerspräche<br />

ein wenig der Idee hinter Volunteered<br />

Geographic Information<br />

(VGI), nach der Mitglieder<br />

mit Hilfe ihres lokalen<br />

Fachwissens Geodaten vor Ort<br />

sammeln.<br />

Für Interessierte steht die Studie<br />

als Open-Access-Publikation<br />

unter [http://​www.​mdpi.​com/​<br />

​1999‐5903/​5/​2/​282] bereit. n<br />

In Polen lässt sich geradezu ein Wiederaufleben<br />

der IT Brancheverspüren.<br />

Zunehmend spricht man sowohl über<br />

polnische Spieletitel wie „Sniper:<br />

Ghost Warrior 2“, „Der Hexer 2“ oder<br />

über „Dead Island: Riptide“, als auch<br />

über Großveranstaltungen, die mit der<br />

IT Branche in Verbindung stehen, wie<br />

das vor kurzem in Krakau organisierte<br />

„Digital Dragons“ oder die bevorstehende<br />

Games Arena in Posen.<br />

Das polnische Wirtschaftsministerium<br />

unterstützt die Computer Industrie<br />

ebenfalls: kürzlich wurde die Strategie<br />

für die Entwicklung der einheimischen<br />

Videospiele Industrie vorgestellt. Das<br />

Ministerium setzt auf das Schaffeneinheimischer<br />

Marken mit starkem Wiedererkennungswert<br />

und geht von einer<br />

wachsenden Präsenz hiesiger Autoren<br />

und Spielesoftwareunternehmen auf<br />

dem internationalen Markt aus. Dabei<br />

soll das sogenannte „Programm zur<br />

Förderung der Videospiele Industrie“<br />

helfen und die Teilnahme polnischer<br />

Firmen an Messen wie CeBIT in Hannover,<br />

E3 in Los Angeles und GamesCom<br />

in Köln zu unterstützen, wo Fans demnächst<br />

die polnische Spiele ausprobieren<br />

können.<br />

Dank diesem Beitragerobern immer<br />

mehrkleinere Unternehmen den<br />

Markt. Ein Beispiel hierfür ist die Firma<br />

Ars Thanea aus Warschau, die das<br />

populäre Spiel „Puzzle Craft“ für iPhone<br />

und iPad entwickelte, und für das<br />

sie im Jahr 2012 mit dem App Store<br />

Best Price ausgezeichnet wurde. Dies<br />

dafür, dass „Puzzle Craft“ in einer eigenenKategorie,<br />

das meistverkaufte<br />

Produkt war. Ein weiteres, vielversprechendes<br />

polnisches Spiel ist das<br />

von den Jury Mitgliedern des „Digital<br />

Dragons“ im Jahr 2013 ausgezeichnete<br />

„Real Boxing“, entwickelt von Vivid<br />

Games. Dank solcher Produktionen<br />

wird zunehmend über die polnische<br />

Videospiele Industrie gesprochen. ■<br />

(D.D.)


Aktuell<br />

www.linux-magazin.de Zahlen & Trends 08/2013<br />

16<br />

Studentenansturm auf GSoC 2013<br />

Googles Summer of Code<br />

genießt in der Open-Source-<br />

Community einen guten Ruf,<br />

weil die Veranstaltung Open-<br />

Source-Projekte voranbringt<br />

und zugleich jungen Entwicklern<br />

eine Chance bietet,<br />

in die Welt der freien Software<br />

hineinzuschnuppern. Die 177<br />

Mentorgruppen haben sich<br />

allerdings keine leichte Aufgabe<br />

[http://​google‐opensource.​<br />

​blogspot.​de/​2013/​05/] ausgesucht:<br />

Sie mussten dieses<br />

Jahr 6000 Vorschläge von gut<br />

4000 Bewerbern durchackern.<br />

Am Ende erhalten knapp 1200<br />

Studenten Stipendien für ihre<br />

Arbeit am Quellcode, das sind<br />

100 mehr als 2012.<br />

Die Projekte, zu denen sie beitragen<br />

sollen, könnten unterschiedlicher<br />

kaum sein. Sie<br />

kommen aus den Bereichen<br />

Spiele (Battle for Wesnoth, Supertuxkart),<br />

Programmiersprachen<br />

(Python, Mono, Haskell),<br />

<strong>Linux</strong>-Desktops (KDE,<br />

Gnome), Desktop-Anwendungen<br />

(Pitivi, Abiword, Libre<br />

Office), Browser (Chrome,<br />

Firefox) und reichen bis hin<br />

zu populären Webdiensten<br />

(Apache, Wiki, CMS) und<br />

dem Kernel.<br />

Eine komplette Liste mit den<br />

Studenten, ihren Plänen sowie<br />

den Mentorprojekten lässt<br />

sich auf einer umfangreichen<br />

Google-Webseite einsehen. n<br />

SLAC 2013: Cybercrime - Fachwissen der Polizei „stark verbesserungswürdig“<br />

Hamburger Ermittler haben<br />

ein Informationsdefizit in<br />

Sachen IT, erklärte Andreas<br />

Dondera in seinem Vortrag<br />

auf der Secure <strong>Linux</strong> Administration<br />

Conference 2013. „Ein<br />

Beispiel: Ein Aufstiegsbeamter<br />

der Hamburger Polizei erhält<br />

in seinem gesamten Studium<br />

ganze 15 Doppelstunden zum<br />

Thema IT.“<br />

Und auch das Urheberrecht<br />

beschäftige eher Anwälte als<br />

Polizisten, denen dafür die<br />

Zeit fehle. Sie identifizieren<br />

eher „echte“ Straftäter und<br />

setzen sich mit vielen offenen<br />

Rechtsfragen auseinander.<br />

Dondera nannte zahlreiche<br />

reale Fallbeispiele zumeist erfolgreicher<br />

Ermittlungen, oft<br />

mit überraschendem, belustigendem<br />

Ausgang, in denen<br />

schlecht informierte Verbrecher,<br />

falsch konfigurierte SSH-<br />

Server, richtig konfigurierte<br />

Nagios-Systeme und unzureichend<br />

gelöschte Festplatten<br />

die Hauptrolle spielen.<br />

Beim Erläutern der Maßnahmen<br />

nach einem Sicherheitsvorfall<br />

fielen die Namen klassischer<br />

und moderner <strong>Linux</strong>-<br />

Forensiktools wie Sleuthkit,<br />

Log2timeline, Lime, Volatility<br />

und viele andere mehr.<br />

Er schilderte die Rolle von<br />

Ermittlern und Staatsanwaltschaft<br />

– nebst den beteiligten<br />

Poststellen – im Falle einer<br />

Strafanzeige und hatte zahlreiche<br />

Tipps für Admins parat:<br />

Wer beispielsweise schnelle<br />

polizeiliche Hilfe nach dem<br />

Feststellen einer Straftat wünsche,<br />

solle möglichst schon im<br />

Vorfeld die für ihn zuständige<br />

Dienststelle ausfindig machen<br />

und dann im Bedarfsfall<br />

anrufen und „denen ein Fax<br />

schicken“. Dann beginnen die<br />

Ermittlungen fast eine Woche<br />

früher als bei der Erstattung<br />

einer Strafanzeige. n<br />

Andreas Dondera vom LKA Hamburg<br />

auf der Secure <strong>Linux</strong> Administration<br />

Conference.<br />

Australiens CTO: ODF wird Standard<br />

John Sheridan, Chief Technology<br />

Officer der australischen<br />

Regierung, hat in einem<br />

Blogpost ODF 1.1 als „Requirement“<br />

für jedwede Office-<br />

Software in dortigen Behörden<br />

definiert.<br />

Im Rahmen der Common<br />

Operating Environment Policy<br />

(COE) habe das Australian<br />

Government Information<br />

Management (AGIMO) Richtlinien<br />

erarbeitet. Diese geben<br />

für öffentliche Einrichtungen<br />

vor, wie und mit welcher<br />

Software sie ihren Anwendern<br />

Zugang zu den Desktops<br />

ermöglichen sollen, schreibt<br />

Sheridan.<br />

Jetzt, nach mehreren Monaten<br />

Arbeit, stelle man Entwürfe<br />

(Policy Drafts) vor, die<br />

im Kern darauf hinauslaufen,<br />

dass alle Behörden des Landes<br />

Office-Suiten verwenden, die<br />

mindestens Support für ODF<br />

in Version 1.1 mitbringen, so<br />

wie es ISO/​IEC 26300:2006/​<br />

Amd 1:2012 spezifiziert.<br />

Anschließend nennt Sheridan<br />

zehn Faktoren, die den Ausschlag<br />

für ODF gegeben hätten.<br />

Dazu gehörten die Entscheidung<br />

der COE für offene<br />

Standards, die Verbreitung<br />

von ODF, aber auch die Tatsache,<br />

dass selbst Microsoft<br />

ODF seit Office 2007 unterstütze.<br />

Außerdem habe man<br />

dank ODF die Wahl aus einer<br />

breiten Palette an Softwareprodukten<br />

von Google<br />

Docs über Lotus Symphony,<br />

Libre Office, Microsoft Office,<br />

Open Office und Star Office<br />

für fast beliebige Betriebssysteme.<br />

Sheridan lädt nun „alle<br />

interessierten Parteien“ ein,<br />

die Drafts unter die Lupe zu<br />

nehmen und an der finalen<br />

Version mitzuwirken. (kki/<br />

mfe/mhu)<br />

n


1&1 DYNAMIC CLOUD SERVER<br />

ZAHLEN SIE NUR<br />

WAS SIE AUCH NUTZEN!<br />

0, 03 € *<br />

PRO STUNDE<br />

ab<br />

VOLLE KOSTENKONTROLLE<br />

■ NEU: Keine Einrichtungsgebühr!<br />

■ NEU: Kein Basispreis!<br />

■ NEU: Keine Mindestvertragslaufzeit!<br />

■ Für kurze Zeit: bis zu 30,– €<br />

Startguthaben!*<br />

■ Stundengenaue, leistungsbezogene<br />

Abrechnung!<br />

■ Unlimited Traffic, ohne Drosselung.<br />

■ Parallels ® Plesk Panel 11 inklusive,<br />

ohne Limitierung der Domainzahl.<br />

VOLLER ROOT-ZUGRIFF<br />

■ Komfort und Funktionsumfang eines<br />

Root-Servers, mit dedizierten Ressourcen.<br />

HÖCHSTE FLEXIBILITÄT<br />

■ vCore-Anzahl, Arbeits- und Festplattenspeicher<br />

unabhängig voneinander<br />

buchbar – für nur 0,01 € pro Stunde<br />

und Einheit!<br />

■ NEU: Bis zu 8 vCore und 32 GB RAM<br />

■ Per Mausklick bis zu 99 virtuelle<br />

Maschinen zubuchen – ohne Migration!<br />

AUSFALLSICHER<br />

■ Redundante Speicher- und Recheneinheiten<br />

schützen Ihren Cloud-Server automatisch<br />

vor Ausfällen.<br />

0 26 02 / 96 91<br />

0800 / 100 668<br />

1und1.info<br />

* 1&1 Cloud Server ohne monatliche Basiskosten. Performance Features für 0,01 €/Stunde und Einheit buchbar. Mindestabnahme je 1 Einheit vCore, Arbeitsspeicher, Festplattenspeicher<br />

(=0,03 €/Stunde). Persönliche Preiskalkulation unter hosting.1und1.de/cloud-server-confi g. Startguthaben wird ausschließlich mit der ersten Monatsrechnung verrechnet. Preise inkl. MwSt.


Aktuell<br />

www.linux-magazin.de Kernel-News 08/2013<br />

18<br />

Zacks Kernel-News<br />

Allzu fabelhafte Benchmark-Ergebnisse für Tux3<br />

Misstrauen prägt das Verhältnis<br />

mancher Kernelentwickler<br />

zu den Machern von Tux3<br />

[http://​tux3.​org], einem versionierenden<br />

Dateisystem, das<br />

seit 2008 in Arbeit ist. Kürzlich<br />

hat der Projektleiter Daniel<br />

Phillips unter [http://​phunq.​net/​<br />

​pipermail/​tux3/​2013‐May/​002016.​<br />

​html] Benchmark-Zahlen veröffentlicht,<br />

die Tux3 schneller<br />

als Tmp-FS erscheinen lassen.<br />

Und das, obwohl Tmp-<br />

FS als unschlagbar gilt, wie er<br />

selbst schreibt: „Es ist kaum<br />

mehr als eine dünne Schicht<br />

zwischen VFS und der Swap-<br />

Partition.“<br />

Der XFS-Entwickler Dave<br />

Chinner sah sich Vorgehen und<br />

Ergebnisse an und legte rasch<br />

den Finger auf ein wichtiges<br />

Detail: Der Benchmark führe<br />

keine Flush-Operationen aus,<br />

die erst für das nachhaltige<br />

Speichern der Daten sorgen.<br />

Das Tux3-Frontend konnte<br />

seine Arbeit getrost bei einem<br />

beliebigen Backend abladen.<br />

So blockierte das Frontend nie<br />

und konnte blitzschnell durch<br />

den Test sausen. Dave schrieb:<br />

„Ihr habt den Benchmark mühevoll<br />

genau so konstruiert,<br />

dass er dem günstigsten Fall<br />

für die Tux3-Architektur entspricht,<br />

[..] und das außerdem<br />

nicht zugegeben, in der<br />

Hoffnung, dass alle nur das<br />

Ergebnis beachten.“<br />

Für die Tux3-Entwickler antwortete<br />

Hirofumi Ogawa.<br />

Er erklärte, der Systemcall<br />

»fsync()« sei in ihrem Dateisystem<br />

einfach noch nicht implementiert<br />

und die Benchmarks<br />

hätten nur einen Vergleich mit<br />

dem bereits geschriebenen<br />

Code angestellt. Auch Daniel<br />

schrieb zurück: „Ich hätte<br />

tatsächlich anmerken sollen,<br />

dass es sich um einen modifizierten<br />

Benchmark mit dem<br />

Tool »dbench()« handelt, der<br />

die Performance der Löschoperationen<br />

von Tux3 begünstigt.<br />

Das habe ich übersehen,<br />

doch das Ergebnis bleibt: Es<br />

ist bemerkenswert, dass wir<br />

Tmp-FS geschlagen haben.“<br />

Zur Frontend-Problematik<br />

merkte er an, „Ja, der Sinn<br />

unseres Frontend/​Backend-<br />

Keine Flush-Operationen? Dave Chinner nimmt die verdächtig guten Zahlen des<br />

Tux3-Benchmark unter die Lupe.<br />

Designs ist es, die Latenz der<br />

Anwendungen bei gepufferten<br />

Dateisystem-Transaktionen zu<br />

vermindern.“<br />

Der Ext-4-Entwickler Theodore<br />

Ts’o wies darauf hin,<br />

dass es ohne »fsync()« keine<br />

aussagekräftigen Benchmark-<br />

Resultate geben könne: „Der<br />

Systemcall »fsync()« kehrt definitionsgemäß<br />

nicht zurück,<br />

bevor die Daten per Flush auf<br />

persistenten Storage geschrieben<br />

sind. Nur dann sind sie<br />

bei einem Systemabsturz sicher.<br />

Das heißt für die Anwendung<br />

im Vordergrund,<br />

dass sie warten muss, bis das<br />

Backend von Tux3 die Daten<br />

geschrieben hat.“ Damit wird<br />

auch der Zeitvorteil durch das<br />

Entkoppeln von Front- und<br />

Backend aufgehoben, denn<br />

»fsync()« bedingt die zeitliche<br />

Kopplung.<br />

Bei vielen Diskussionsteilnehmern<br />

blieb am Ende der Eindruck,<br />

Phillips sei es vor allem<br />

um eine Marketing-Aktion gegangen<br />

– auf Kosten der technischen<br />

Korrektheit. n<br />

Reboot nach Resume: Besorgniserregendes Bit<br />

Michael Hocko von den Suse<br />

Labs hat einen rätselhaften<br />

Bug beim Resume aus dem<br />

Suspend-to-RAM aufgespürt.<br />

Der betroffene Rechner wachte<br />

nicht auf, sondern startete<br />

neu. Es stellte sich heraus,<br />

dass der Fehler auf ein ausgeschaltetes<br />

NX-Bit zurückzuführen<br />

war. Dieses Bit kann<br />

man in einigen CPUs setzen,<br />

um Speicherbereiche als nicht<br />

ausführbar („never executable“)<br />

zu markieren.<br />

Linus Torvalds brachte die<br />

Bug-Jäger auf die richtige<br />

Spur: Verantwortlich war<br />

das Attribut »__initdata«,<br />

das Codeteile markiert, die<br />

ausschließlich für den Systemstart<br />

gedacht sind. Ist der<br />

Bootvorgang abgeschlossen,<br />

kann der Kernel den Speicher<br />

freigeben. Das NX-Bit hatte offenbar<br />

einen Speicherbereich<br />

an der Ausführung gehindert,<br />

dessen Inhalt »__initdata« beschädigt<br />

hatte. Solange das<br />

NX-Bit gesetzt blieb, machte<br />

das aber nichts aus, erst dessen<br />

Entfernung brachte den<br />

Bug zum Vorschein. n


Ärger mit Union-Dateisystemen<br />

Der Suse-Entwickler Miklos<br />

Szeredi hat sich für die Aufnahme<br />

von Overlay-FS in den<br />

offiziellen Kernel stark gemacht.<br />

Es ist unter anderem<br />

bei Ubuntu im Einsatz und<br />

gehört zu den stapelbaren<br />

oder transluzenten Dateisystemen.<br />

Diese vereinen mehrere<br />

Verzeichnisbäume unter<br />

einem Einhängepunkt, sodass<br />

Dateien aus unterschiedlichen<br />

Partitionen in einem gemeinsamen<br />

Verzeichnis zu liegen<br />

scheinen.<br />

Diese Methode kommt beispielsweise<br />

zur Anwendung,<br />

um Live-CDs mit beschreibbaren<br />

Bereichen zu vereinen.<br />

Die Software existiert bereits<br />

seit mehreren Jahren. Linus<br />

Torvalds stellte fest: „Ich<br />

glaube, wir sollten das einfach<br />

tun. Das Dateisystem ist<br />

in Gebrauch, es ist recht klein<br />

und die Alternativen sind<br />

schlechter.“<br />

Al Viro meldete sich freiwillig,<br />

um den Code-Review zu übernehmen.<br />

Daneben regte er an,<br />

auch ähnliche Projekte wie<br />

Unionmount und Aufs in den<br />

Kernel zu übernehmen, wenn<br />

<strong>Linux</strong> schon offiziell stapelbare<br />

Dateisystem aufnehme.<br />

Bei seiner Analyse fand Al einige<br />

technische Probleme und<br />

Sicherheitsschwächen, die er<br />

mit Miklos ausgiebig diskutierte.<br />

Hier meldete sich plötzlich<br />

der Entwickler George Spelvin<br />

mit einem Hack, der mittels<br />

einer temporären Datei und<br />

Symlinks die Schwierigkeiten<br />

beheben sollte. Al war damit<br />

nicht zufrieden: „Stell dir vor,<br />

was bei »rm ‐rf /foo« passieren<br />

würde.“ Dann listete er<br />

die vielen notwendigen Lese-,<br />

Link- und Unlink-Operation<br />

haarklein auf.<br />

In einem anderen Thread<br />

klagte David Howells über<br />

die jüngsten Änderungen<br />

im Virtual File System (VFS)<br />

des Kernels. Sie machen umfassende<br />

Anpassungen an<br />

seinem Unionmount-Code<br />

erforderlich. David: „Ein Labyrinth<br />

vertrackter Locking-<br />

Probleme.“<br />

Zwar sind sich die Kernelentwickler<br />

inklusive Linus einig,<br />

dass sie Union-Dateisysteme<br />

in den Kernel aufnehmen<br />

möchten. Keiner weiß jedoch,<br />

wie man die damit verbundenen<br />

technischen Probleme<br />

sauber löst. Derzeit gibt es<br />

keine Umsetzung, deren Code<br />

dem scharfen Blick von Al Viro<br />

standhält.<br />

n<br />

Kernel-News 08/2013<br />

Aktuell<br />

www.linux-magazin.de<br />

19<br />

Posix: Was tun mit ziellosen Symlinks?<br />

Kernel-Lizenz: GPL-Version 2 oder 3?<br />

<strong>Linux</strong> verbietet es seinen Anwendern,<br />

symbolische Links<br />

anzulegen, die auf nicht existente<br />

Dateien zeigen. Der<br />

Posix-Standard dagegen erlaube<br />

es, das schrieb der Red-<br />

Hat-Entwickler Pádraig Brady<br />

an die Mailingliste. Er fragte<br />

zum wiederholten Mal, ob die<br />

Kernelentwickler das nicht<br />

korrigieren möchten. Dabei<br />

denkt er sogar daran, Daten<br />

einfach im Namen solcher<br />

Symlinks zu speichern.<br />

Sein Firmenkollege Eric Blake<br />

hält dagegen, das Problem sei<br />

nicht das Anlegen der Links,<br />

sondern was der <strong>Linux</strong>-Kernel<br />

tun solle, wenn er in einem<br />

Dateipfad auf einen solchen<br />

Symlink treffe. Sein Argument:<br />

Auch wenn <strong>Linux</strong> selbst keine<br />

leeren Links anlege, könne es<br />

auf eingehängten Partitionen<br />

auf welche treffen, die von<br />

anderen Betriebssystemen<br />

stammen. Dann sei es wichtig,<br />

dass der <strong>Linux</strong>-Kernel vernünftig<br />

reagiere.<br />

„Mir persönlich ist es egal,<br />

ob wir den Symlink-Syscall<br />

in <strong>Linux</strong> dazu bringen, leere<br />

Links zu erlauben, oder ob wir<br />

beantragen, die Posix-Spezifikation<br />

anzupassen. Ich möchte<br />

einfach, dass <strong>Linux</strong> eines<br />

Tages die Posix-Zertifizierung<br />

erhält“, fährt Eric fort. Bis dahin<br />

sieht er aber noch viele<br />

Baustellen im <strong>Linux</strong>-Kernel,<br />

und das Symlink-Problem sei<br />

nicht das wichtigste – immerhin<br />

bestehe es schon über<br />

zwölf Jahre.<br />

Linus Torvalds hält bekanntermaßen<br />

nichts davon, Standards<br />

allein zum Zweck der<br />

Konformität einzuhalten.<br />

Wenn eine Korrektur nichts<br />

kostet, hat er nichts dagegen,<br />

sprechen aber stichhaltige<br />

technische Argumente für eine<br />

Non-Standard-Umsetzung,<br />

ist er stets für diese. Zudem<br />

macht er keinen Hehl daraus,<br />

dass er von bestimmten Abschnitten<br />

des Posix-Standards<br />

nicht besonders viel hält. n<br />

Eric Appleman hat vorgeschlagen,<br />

einen Pool von Kernelentwicklern<br />

zu bilden, um<br />

GPL-Verstöße wirkungsvoller<br />

zu verfolgen. Als Urheber von<br />

Teilen des Kernel-Quelltextes<br />

könnten sie ihre Copyright-<br />

Ansprüche geltend machen.<br />

Unter den Unterstützern der<br />

Idee fand sich auch Luke<br />

Leighton. Er bringe zwar nur<br />

einzelne Zeilen in den Kernel<br />

ein, fügte er an, doch er würde<br />

sie gerne nicht nur unter<br />

GPLv2, sondern gleichzeitig<br />

auch unter GPLv3 oder neuer<br />

stellen.<br />

Die Stammgäste dieser Diskussion<br />

machten ihm schnell<br />

klar, dass Linus Torvalds die<br />

GPLv3 nicht für den Kernel<br />

verwenden möchte. Das empfand<br />

Luke als Bevormundung<br />

– und schon war eine hitzige<br />

Diskussion im Gange. Theodore<br />

Ts’o bezog zur GPLv3<br />

eindeutig Stellung: „Es geht<br />

nicht nur um Linus. Viele der<br />

führenden Kernelentwickler<br />

finden die so genannte Anti-<br />

Tivoization-Klausel [gegen Geräte,<br />

die das Ausführen modifizierter<br />

Software verhindern,<br />

Anm. d. Red.] inakzeptabel.<br />

Daher wollen sie ihren Code<br />

ausschließlich unter GPLv2<br />

veröffentlichen. Das bedeutet<br />

aber, dass GPLv3-lizenzierter<br />

Code immer inkompatibel zu<br />

wichtigen Teilen des <strong>Linux</strong>-<br />

Kernels bleiben wird.“<br />

Eine Duale BSD/​GPLv2-Lizenzierung<br />

sei wesentlich unproblematischer<br />

und an mehreren<br />

Stellen des Kernels auch<br />

bereits praktiziert. Eigene Lizenzen<br />

für einzelne Codezeilen<br />

seien generell nicht üblich,<br />

fuhr Ted fort, und er würde<br />

solche Patches als Maintainer<br />

ablehnen. Die lizenzierte Einheit<br />

sei stets eine komplette<br />

Quelltextdatei.<br />

Nebenbei bemerkte er sarkastisch,<br />

die Anhänger der<br />

GPLv3 beteten am „Altar des<br />

Richard M. Stallman“. (Zack<br />

Brown/​mhu)<br />

n


Jetzt neu:<br />

Android Apps & Tipps im Abo<br />

196 Seiten<br />

im Pocket-Format<br />

• Ihr Wegweiser<br />

durch den Android-<br />

App-Dschungel<br />

• Vierteljährlich die<br />

besten Apps und<br />

Games für Android<br />

• Tolle Tipps und<br />

Tricks für den<br />

Android-Alltag<br />

SPAREN SIE 15 % zum Einzelkauf!<br />

Digitales Abo nur 23,90 E, Printabo 32,90 E*<br />

Jetzt gleich online bestellen:<br />

www.apps-und-tipps.de<br />

*Preise gelten für Deutschland (4 Ausgaben pro Jahr)


Was die Daten einer Firma wert sind - und was man für ihren Schutz tun muss<br />

<strong>Ausgewogen</strong><br />

Einführung 08/2013<br />

Titelthema<br />

150 Euro beträgt der durchschittliche Wert eines Datensatzes. In Datenbanken, NAS und Cloud aufgehäuft<br />

wiegen Daten jedoch schnell mehr, als dem Admin lieb ist. Der Schwerpunkt dieses <strong>Linux</strong>-<strong>Magazin</strong>s vermittelt<br />

Strate gien, Tipps und Tricks für die richtige Balance zwischen Funktionalität und Datensicherheit. Markus Feilner<br />

Inhalt<br />

22 Risikoanalyse<br />

Informationssicherheit ist wichtig,<br />

kostet aber ordentlich Geld.<br />

26 Anonym ins Web<br />

Sich anonym im Web zu bewegen ist<br />

schwieriger denn je. Ein Admin-Guide.<br />

34 Zugriffskontrolle<br />

Unternehmenslösungen für die Zugriffskontrolle<br />

auf heikle Daten.<br />

36 Netzwerkanalyse­<br />

Packet Inspection, Intrusion Detection<br />

und Co. - Traffic überwachen.<br />

38 Automatisches Key-Deployment­<br />

Sichere Host-Authentifizierung mit<br />

automatischer SSH-Key-Verteilung.<br />

42 Sichere Cloud-Backup­<br />

Public Cloud und Privacy? Mit der richtigen<br />

Verschlüsselungstechnik geht<br />

beides zusammen.<br />

48 Bitparade­<br />

Chrome, Firefox, Konqueror, Epiphany:<br />

Anonymität nicht per Default.<br />

54 Bittorrent Sync­<br />

Datensynchronisation über Netzwerkgrenzen<br />

und ohne zentralen Server.<br />

80 Recht­<br />

Unternehmensdaten beschützen und<br />

mit Rechtsmitteln verteidigen.<br />

92 Web RTC­<br />

Ohne Plugins: Video-Chats über Peerto-Peer-Verbindungen.<br />

Die Prism-Enthüllungen des Guardian<br />

[1] drangen bis in die Mainstream-Medien<br />

vor. Selbst technikferne Manager<br />

machen sich angesichts der Berichterstattung<br />

jetzt Gedanken über die Gefahren<br />

von (Industrie-)Spionage, den Wert der<br />

Daten und den Datenschutz im eigenen<br />

Unternehmen. Doch amerikanische Geheimdienste<br />

sind bei weitem nicht die<br />

einzigen, die fremde Daten im Internet<br />

abfangen, auswerten und speichern wollen.<br />

Die Konkurrenz, der Betreiber des<br />

Webservers, der Hersteller des Smartphones<br />

oder der im Unternehmen eingesetzten<br />

proprietären Software – alle haben<br />

ein Interesse daran, die wertvollen Daten<br />

aus der Firma auszuspähen. Der klassische<br />

Hacker scheint dagegen zum Erfüllungsgehilfen<br />

degradiert. Längst hat die<br />

Branche den Wert erkannt, den Daten<br />

besitzen – und sie sammelt nach dem<br />

Motto: Je mehr, desto besser.<br />

Für den Admin ergibt sich so eine ganze<br />

Reihe von Problemen: Er muss erkennen,<br />

welche Daten seines besonderen Schutzes<br />

bedürfen, welches Risiko mit einem Totalverlust<br />

verbunden ist und Maßnahmen<br />

treffen, um die schlimmsten Katastrophen<br />

zu vermeiden. Der Schwerpunkt dieses<br />

<strong>Linux</strong>-<strong>Magazin</strong>s schlägt den Bogen von<br />

der Risikoabschätzung über den Schutz<br />

der Mitarbeiter durch Anonymisierung<br />

bis hin zur Kontrolle der Datenströme<br />

auf der Ebene der Netzwerkinfrastruktur<br />

oder mit Verschlüsselungstools.<br />

Kontrolle ist gut, aber<br />

Beweise sind besser<br />

Software, die sich auf Intrusion Detection,<br />

Packet Inspection und Data Loss<br />

Prevention spezialisiert hat, scannt den<br />

(ausgehenden) Traffic und sucht so zu<br />

verhindern, dass vertrauliche Daten das<br />

Unternehmen verlassen. Intelligente Verfahren<br />

begrenzen den Zugriff auf Daten,<br />

und führen auf Wunsch darüber Buch.<br />

Um die Identität eines Rechners jederzeit<br />

sicherzustellen, verteilen Admins<br />

mit automatisierten Verfahren SSH-Host-<br />

Keys. Und wer seine Daten in einer Public<br />

Cloud bei einem externen Dienstleister<br />

ablegen will, der sollte auf Verschlüsselungstools<br />

wie Duplicity setzen.<br />

Auch in der Software-Rubrik finden sich<br />

zwei Artikel die dem Schwerpunkt nahestehen:<br />

Die Bitparade testet vier Browser<br />

auf die Default-Einstellungen und die<br />

Möglichkeiten für eine Grundsicherung<br />

der Privatsphäre zu sorgen – und kommt<br />

zu einem enttäuschenden Ergebnis.<br />

Bittorrent-Sync und Web RTC (Programmieren)<br />

dagegen nutzen die Power der<br />

Peer-to-Peer-Netzwerke: Bittorrent-Sync<br />

synchronisiert Daten direkt zwischen den<br />

Clients, das Web-RTC-Protokoll sorgt für<br />

Multimedia-Chats ohne Server.<br />

Und wenn’s trotz all der Maßnahmen<br />

schon zu spät ist, wenn ein Angriff erfolgreich<br />

war, dann helfen die Tipps aus<br />

dem Rechts-Artikel dabei, die richtige<br />

Vorgehensweise zu finden, um Personen<br />

(juristisch oder real) zu schützen, zu verteidigen<br />

oder aber zu verfolgen und Täter<br />

dingfest zu machen. Denn die sitzen<br />

nicht nur im kriminellen Milieu, sondern<br />

gar nicht so selten im eigenen Haus. n<br />

Infos<br />

[1] „The NSA Files“, The Guardian: ­<br />

[http://​­www.​­guardian.​­co.​­uk/​­world/​<br />

­the‐nsa‐files]<br />

www.linux-magazin.de<br />

21


Titelthema<br />

www.linux-magazin.de Risikoanalyse 08/2013<br />

22<br />

Grundlagen der IT-Risikoanalyse<br />

Risikobewusst<br />

Informationssicherheit ist wichtig, kostet aber ordentlich Geld. Die IT-Risikoanalyse ermittelt zu schützende<br />

Daten und Werte und kalkuliert, welche Schutzmaßnahmen sich rechnen. Markus Opfer, Mathias Huber<br />

©Michelle Albers, 123RF.com<br />

Die Anbieter von Security- und Antimalware-Produkten<br />

zeigen gerne den<br />

jugendlichen Hacker mit Kapuzenpulli<br />

als Bedrohung von IT-Systemen. In der<br />

Regel stellen aber die Mitarbeiter eines<br />

Unternehmens die größere Gefahr für<br />

die Informationssicherheit dar. Sie sind<br />

für rund 70 Prozent der Vorfälle verantwortlich,<br />

außenstehende Angreifer, die<br />

insbesondere offene Sicherheitslücken<br />

ausnutzen, nur für rund 30 Prozent. Die<br />

Norm ISO/​IEC 27005 [1] zum IT-Risikomanagement<br />

zählt schlecht ausgebildete<br />

oder fahrlässige Mitarbeiter, verärgerte<br />

oder böswillige Angestellte sowie unehrliche<br />

oder gerade gekündigte Mitarbeiter<br />

zu den Gefahren.<br />

Analyse tut not<br />

Auch kleine bis mittlere Unternehmen<br />

sind von Spionage, Datendiebstahl und<br />

Verlust von Vertraulichkeit betroffen.<br />

Meist fehlt es am nötigen Know-how und<br />

an den finanziellen Mitteln, um sich dagegen<br />

zu wehren. Das betriebswirtschaftliche<br />

Instrument, um die Situation in den<br />

Griff zu bekommen, ist die Risikoanalyse.<br />

Sie ist das Werkzeug, um die Risiken<br />

für ein Unternehmen zu identifizieren,<br />

finanzielle Auswirkungen zu berechnen,<br />

Schwachstellen zu identifizieren, Bedrohungen<br />

einzuschätzen sowie die Auswirkungen<br />

zu bewerten, die eintreten<br />

würden, wenn jemand die bestehenden<br />

Schwachstellen und Konflikte ausnutzen<br />

würde. Ihr Zweck ist es, auch in Sachen<br />

Informationssicherheit die Kosteneffizienz<br />

sicherzustellen.<br />

Die Analyse bezieht auch externe Dienstleister<br />

mit ein, zum Beispiel Anbieter<br />

von Penetrationstests, die Schwachstellen<br />

ausfindig machen. Die Resultate der<br />

Analyse stellen einen dringlichen, realistischen<br />

und wirtschaftlichen Grund dar,<br />

Verfahren und Gegenmaßnahmen im<br />

Unternehmen zu implementieren. Die<br />

Risikoanalyse, einmal angestoßen, ist allerdings<br />

ein Prozess, der sich fortlaufend<br />

weiterentwickeln muss.<br />

Im Rahmen einer solchen Untersuchung<br />

steht meist der Mensch als größter Risikofaktor<br />

im Fokus. Daher gilt es zunächst,<br />

zu verstehen, was Personen bewegt, Angriffe<br />

gegen Unternehmen und Privatpersonen<br />

zu starten. Bei den so genannten<br />

Hacktivisten sind die Motive etwa politische:<br />

Sie kämpfen für die Freiheit der<br />

Bürgerinnen und Bürger. Neugierde, Anerkennung<br />

und Motivation, Machtgefühl,<br />

Langeweile, Sucht und Besessenheit können<br />

hinter den Angriffen stecken. Meist<br />

aber ist finanzielle Bereicherung das vorherrschende<br />

Motiv für viele Einbrüche<br />

in Computersysteme. Hintergründe liefert<br />

der Kasten „Die Kosten und Gewinne<br />

der Angreifer“.<br />

Die typischen Schwachstellen lassen sich<br />

in Hardware (unzureichende Wartungszyklen),<br />

Software (Schwachstellen bei<br />

der Programmierung), Netzwerk, Personal,<br />

Standort und Organisation untergliedern.<br />

Die Organisation steht bei der<br />

Risikoanalyse an erster Stelle. Unter Organisation<br />

ist hierbei zu verstehen, dass<br />

nicht nur einzelne Abteilungen in die<br />

Analyse mit einbezogen werden, sondern<br />

das komplette Unternehmen. Viele Unternehmen<br />

machen den Fehler, etwa nur<br />

die Finanzbuchhaltung einer Analyse zu<br />

unterziehen, doch auch die IT-Abteilung<br />

muss sich der Untersuchung stellen. Für<br />

die Zuständigkeiten ist der externe Prozessberater<br />

verantwortlich.<br />

Kleine im Visier<br />

Eine Studie von Imperva [2] unterstreicht<br />

den Trend zu Angriffen gegen kleine und<br />

mittelständische Unternehmen. Deren Sicherheitssysteme<br />

sind in der Regel weit<br />

weniger gut ausgebaut und gewartet als<br />

die der Großkonzerne. Dieses Phänomen<br />

soll 2013 weiter zunehmen. Web-basierte


Angriffe laufen zudem mittlerweile weitgehend<br />

automatisiert ab, von der Identifikation<br />

der Ziele über das Finden der<br />

Schwachstellen bis hin zur Vollendung<br />

des Angriffs. Während gut gerüstete Konzerne<br />

diese Art von Gefahr relativ leicht<br />

abwehren können, ist die Lage in kleineren<br />

Unternehmen meist anders.<br />

Schaden und<br />

Wahrscheinlichkeit<br />

Die Identifikation der zu schützenden<br />

Vermögensgegenstände und die Erfassung<br />

des finanziellen Werts sind erste<br />

Schritte für eine effektive Risikoanalyse<br />

(siehe Kasten „Hauptziele der Analyse“).<br />

Sie stellen die vorhandenen Werte<br />

den zu implementierenden Maßnahmen<br />

gegenüber. Beispielsweise betrifft das<br />

Ausspähen eines Benutzerpassworts in<br />

der Finanzbuchhaltung große Werte, das<br />

unverschlüsselte Übertragen von sensiblen<br />

Daten ebenfalls.<br />

Im weiteren Verlauf sind die Bedrohungen<br />

zu erfassen. Dazu bewertet man zusätzlich<br />

die Wahrscheinlichkeit, dass ein<br />

bestimmter Schaden eintritt. Die Abschätzung<br />

lässt sich quantitativ ermitteln. Sie<br />

ist das Produkt aus S (Schadensausmaß)<br />

und E (Eintrittswahrscheinlichkeit). Der<br />

Wert für R, das Risiko, berechnet sich<br />

also mit:<br />

R = S * E.<br />

Bei der Bestimmung der Schadenshöhe<br />

S unterscheidet die Risikoanalyse zudem<br />

zwischen primären und sekundären<br />

Schäden. Zu den primären zählen unter<br />

anderem Schäden durch Produktionsausfälle,<br />

Wiederbeschaffungskosten und<br />

Personalkosten. Diese Art von Kosten ist<br />

recht leicht zu beziffern. Viel schwieriger<br />

wird es bei der Identifizierung sekundärer<br />

Schäden: Darunter fallen Imageverlust,<br />

Vertrauensverlust bei Kunden und<br />

Geschäftspartnern bis hin zur Insolvenz<br />

eines Unternehmens.<br />

Zur Berechnung der Eintrittswahrscheinlichkeit<br />

dienen der geschätzte Aufwand,<br />

den ein Angreifer zum Umsetzen eines<br />

Angriffs betreiben muss, und die Höhe<br />

des Nutzens, den er davon hat. Als Beispiel:<br />

Hat ein Angreifer Kreditkartendaten<br />

gestohlen, fallen Eintrittswahrscheinlichkeit<br />

und Schadensausmaß sehr hoch aus.<br />

Die Lehrbuchformeln zur Risikoberechnung<br />

sind allerdings wenig anschaulich.<br />

Für Unternehmen, die lieber Auskünfte<br />

in Euro und Cent erhalten, lässt Symantec,<br />

Anbieter von Security- und Backup-<br />

Lösungen, jährlich eine Studie erstellen.<br />

Der Bericht „Cost of a Data Breach 2013“<br />

[3] basiert auf den Datenverlusten, die<br />

277 Unternehmen in neun Ländern verzeichnet<br />

haben.<br />

Unsicherheit kostet<br />

Selbst wenn man das Interesse des<br />

Auftrag gebers berücksichtigt, seine Lösungen<br />

zu verkaufen, sind die Zahlen<br />

schockierend: Jeder verlorene Datensatz<br />

koste ein deutsches Unternehmen durchschnittlich<br />

151 Euro, ist dort zu lesen.<br />

Dabei entspricht die Einheit Datensatz jenen<br />

Kunden- und Abrechnungsdaten, die<br />

jeweils einer Person zugeordnet sind. In<br />

der Finanz-, Industrie- und Energiebranche<br />

betragen die Kosten sogar 200 Euro,<br />

bei der öffentlichen Hand nur 93. Die<br />

Tendenz ist steigend, 2011 lag der Durchschnitt<br />

noch bei 146 Euro.<br />

Unter den möglichen Ursachen für Datenverlust<br />

und -veruntreuung schlagen<br />

laut Studie am meisten die böswilligen<br />

Angriffe aufs Budget durch. Kriminelle<br />

Risikoanalyse 08/2013<br />

Titelthema<br />

www.linux-magazin.de<br />

23<br />

Die Kosten und Gewinne der Angreifer<br />

Den Schaden, den Firmen durch Cracker erleiden,<br />

behandelt der vorliegende Artikel. Aber<br />

auch die Angreifer selbst unterliegen einer Art<br />

Kostenstruktur. Das mag im ersten Moment<br />

überraschen, doch die Vorstellung vom einsamen<br />

Hacker, der in seiner Wohnung hockt und<br />

aus Lust am Machbaren oder aus purer Bosheit<br />

Daten stiehlt, ist eine romantische. Cracken ist<br />

heute in der Regel ein Business, bei dem aus<br />

Angebot, Nachfrage und Nebenkosten Preise<br />

entstehen. Natürlich findet das Marktgeschehen<br />

im Verborgenen statt, denn die gehandelten<br />

Dienstleistungen, Produkte und Daten sind<br />

überall illegal.<br />

Das Sicherheitsunternehmen Kaspersky Lab hat<br />

vor einiger Zeit diesen Schwarzmarkt untersucht.<br />

So kostet die Miete eines 1000<br />

Maschinen umfassenden Botnetzes im<br />

„Discount Bot Shop“ oder bei „Bot-<br />

Seller“ rund 30 US-Dollar, 5000 Bots<br />

sind leicht rabattiert für 140 Dollar zu<br />

haben. Die Geschäftsanbahnung findet<br />

per Jabber, ICQ oder in Foren statt (Abbildung<br />

1). Die monatlichen Preise für<br />

einen so genannten Bulletproof-Hoster,<br />

der seinen Kunden keinerlei Restriktionen<br />

auferlegt, bewegen sich zwischen<br />

20 und 120 Dollar. Wer sich während des<br />

Steuerns von Botnetzen oder bei Geldtransfers<br />

vor Nachstellungen von Strafverfolgungsbehörden<br />

unsichtbar machen will, nimmt Crypter<br />

genannte Clouddienste in Anspruch. 60 Dollar<br />

kostet beispielsweise Saddam’s Crypter auf Lebenszeit<br />

– wie lang auch immer das bei einem<br />

Service diesen Namens sein mag.<br />

Neben der Infrastruktur für Angriffe braucht<br />

der Cracker auch noch für seine Zwecke geeignete<br />

Soft-, sprich Malware. Das Remote-Administrationstool<br />

Black Shades Net beispielsweise<br />

ist ab 40 Euro zu haben. Das DDoS-Werkzeug IP<br />

Killer oder den „Stealer“ Pieces of Eight etwa<br />

kann sich jedermann für 35 Euro zu Diensten<br />

machen. Wer einen Exploit gleich im Internet<br />

Abbildung 1: Wer an der richtigen Stelle fragt, bekommt ein Angebot<br />

zu einem Botnet, sogar Gewährleistung und Support gibt es.<br />

Abbildung 2: Kreditkartendaten und Paypal-<br />

Accounts mit Funktions- und Deckungsgarantie.<br />

verteilen lassen möchte, muss ungefähr 500<br />

Euro pro Monat aufbringen.<br />

Den ganzen Aufwand kann sich der Kriminelle<br />

aber auch sparen, wenn er einfach verifizierte<br />

Kreditkartendaten oder erbeutete Paypal-Accounts<br />

möchte. Die kann er nämlich zu zivilen<br />

Preisen gleich fertig kaufen (Abbildung 2).<br />

Die recht geringen Preise lassen vermuten,<br />

dass das Angebot illegaler<br />

Dienste und Software größer als die<br />

Nachfrage ist. Wer erbeutete Accounts<br />

nicht selbst verwertet, sondern weiterverkauft,<br />

kann wie gesehen auch nur<br />

wenig erzielen. Dass die unmittelbaren<br />

und die Reputationsschäden bei ihren<br />

Opfern ungleich höher sind, interessiert<br />

die Akteure des Cracker-Business<br />

nicht. (Jan Kleinert)


Titelthema<br />

www.linux-magazin.de Risikoanalyse 08/2013<br />

24<br />

Insider und Social Engineering verursachen<br />

pro Datensatz 136 Euro Schaden.<br />

Handelt ein Mitarbeiter fahrlässig oder<br />

macht er einen Bedienfehler, kostet der<br />

Schaden pro Datensatz durchschnittlich<br />

138 Euro.<br />

Für diese Zahlen hat das beauftragte<br />

Ponemon Institute die direkten und indirekten<br />

Kosten der Datenpannen berücksichtigt.<br />

Direkte Kosten sind etwa<br />

Supportkosten und das Honorar für Computerforensiker,<br />

in die indirekten Kosten<br />

haben die Forscher den Kommunikationsaufwand<br />

sowie eine Schätzung von<br />

Auftragsverlusten durch vergraulte und<br />

abgeschreckte Kunden eingerechnet.<br />

Onlinerechner<br />

Die erhobenen Daten und Trends hat<br />

Ponemon für Symantec auch in einen<br />

Onlinerechner [4] für die Kosten von<br />

Datenpannen gegossen (Abbildung 3).<br />

Die kleinste Firmengröße reicht dort allerdings<br />

bis 500 Mitarbeiter, sodass die<br />

Schätzung für ein kleines Beratungs- oder<br />

Startup-Unternehmen nicht unbedingt<br />

treffend ist. Doch immerhin haben deutsche<br />

IT-Verantwortliche in einer Umfrage<br />

von 2012 [5] angeben, die in den Computersystemen<br />

gespeicherten Informationen<br />

machten 40 Prozent des Unternehmenswerts<br />

aus.<br />

Risikograph<br />

häufig<br />

wahrscheinlich<br />

gelegentlich<br />

entfernt vorstellbar<br />

unwahrscheinlich<br />

unvorstellbar<br />

akzeptabler Bereich<br />

unwesentlich geringfügig kritisch<br />

ALARP-Bereich<br />

Bei der Risikoanalyse gilt als Faustformel:<br />

Denke wie ein Hacker und du weißt, wie<br />

du dich schützen musst [6]. Es ist ganz<br />

wichtig zu wissen, wie ein Angreifer<br />

vorgeht, was ihn antreibt, wie hoch die<br />

Werte im Unternehmen sind und warum<br />

ein Angreifer sich gerade für diese Werte<br />

interessiert. Nur so ist gewährleistet, dass<br />

eine effektive Risikoanalyse stattfindet.<br />

Zur weiteren Abschätzung können auch<br />

Penetrationstests dienen.<br />

Sind alle Risiken identifiziert, lassen sich<br />

die Gegenmaßnahmen definieren. Sie<br />

müssen jedoch im Einklang mit den finanziellen<br />

Mitteln des Unternehmens stehen.<br />

Dabei ermittelt man den durch einen<br />

Vorfall zu erwartenden Gesamtschaden<br />

sowie die zu erwartenden Wiederherstellungskosten.<br />

Die Abschätzung der Wahrscheinlichkeit<br />

ist einer der schwierigsten<br />

Prozesse der Analyse. Hier können<br />

Statistiken zu Grunde liegen, aber auch<br />

die Aussagen externer Dienstleister, zu<br />

denen etwa Penetrationstester gehören,<br />

sowie die ermittelten Werte.<br />

Matrix hilft<br />

katastrophal<br />

inakzeptabler Bereich<br />

Abbildung 4: Der Risikograph setzt Eintrittswahrscheinlichkeit und Ausmaß eines Schadens in Beziehung.<br />

Die Schwierigkeit liegt jedoch darin, die<br />

vielen Faktoren zu berücksichtigen, von<br />

denen jeweils Unsicherheiten ausgehen.<br />

Hier hilft eine Matrix-basierte Methode<br />

aus der ISO 31010 [7] mit qualitativen<br />

Skalen (Abbildung 4). Für den gelben<br />

Bereich gilt das so genannte ALARP-<br />

Prinzip. Das englische Akronym steht<br />

für „As Low As Reasonably Practicable“<br />

(so niedrig, wie vernünftigerweise praktikabel).<br />

Risiken in diesem Bereich sollte<br />

man möglichst weit reduzieren, aber nur<br />

mit vertretbarem technischen und finanziellen<br />

Aufwand.<br />

Normen als Grundlage<br />

Abbildung 3: Die Befunde einer Studie zu Datenverlusten hat der Antimalware-Anbieter Symantec zur Grundlage<br />

dieses Online-Schadensrechners gemacht.<br />

Für jedes Unternehmen gilt es, einen<br />

maßgeschneiderten Prozess anzustoßen.<br />

Als Grundlage dienen dennoch einige<br />

Standards und Regeln. Von Bedeutung<br />

sind insbesondere ISO/​IEC 27005 (Einführung<br />

ins Risikomanagement), ISO/​IEC<br />

27001 (Informationssicherheitsmanagement,<br />

[1]), ISO 31010 (Beurteilungsmethoden<br />

des Risikomanagements, [7]), der


Tel. 0 64 32 / 91 39-749<br />

Fax 0 64 32 / 91 39-711<br />

vertrieb@ico.de<br />

www.ico.de/linux<br />

SEIT 1982<br />

BSI-Standard 100-3 [8] sowie die SANS-<br />

Risikoliste [9] und die IT-Infrastructure<br />

Library (ITIL, [10]).<br />

Bei der Risikobehandlung sind folgende<br />

Möglichkeiten zu unterscheiden: Risikoübernahme,<br />

Risikovermeidung, Risikoreduktion<br />

und Risikotransfer. Bei der Risikoübernahme<br />

nimmt das Unternehmen<br />

bewusst einen Schadensfall in einem bestimmten<br />

Zeitraum in Kauf, ohne jedoch<br />

Maßnahmen zu ergreifen. Bei der Risikovermeidung<br />

dagegen streicht es eine<br />

risikobehaftete Aktivität.<br />

Die Risikoreduktion lässt sich mit Hilfe<br />

der BSI-IT-Grundschutz-Standards [11]<br />

und hier anhand der Kreuzreferenzmodelle<br />

bewerten. Ein Beispiel für Risikoreduktion<br />

wäre, alte Software gegen neue<br />

auszutauschen, weil die alte ausnutzbare<br />

Schwachstellen besitzt, für die es keine<br />

Patches mehr gibt. Risikotransfer schließlich<br />

heißt, ein Risiko teilweise oder ganz<br />

zu verlagern, mittels Versicherung oder<br />

Outsourcing. Die Wahl richtet sich nach<br />

dem Kosten-Nutzen-Verhältnis. Zudem<br />

sind Risiken nicht isoliert zu betrachten,<br />

sondern immer in der Gesamtheit.<br />

Fazit<br />

Bei der Risikoanalyse im Risikomanagement<br />

geht es also in erster Linie darum,<br />

die erkannten Risiken so weit zu<br />

minimieren, dass sie für die jeweilige<br />

Organisation noch akzeptabel sind.<br />

Hierbei dient die Analyse dazu, das Management<br />

in die Lage zu versetzen, die<br />

erforderlichen dringlichsten, realistischsten<br />

und wirtschaftlichsten Maßnahmen<br />

zu ergreifen, um die Auswirkungen der<br />

bestehenden Risiken möglichst weit zu<br />

reduzieren.<br />

Risikomanagement setzt sich zusammen<br />

aus der Identifizierung, dem Messen sowie<br />

der Kontrolle von Verlusten, die in<br />

Hauptziele der Analyse<br />

Die vier Hauptziele einer Bedrohungs- und<br />

Risikoanalyse sind folgende:<br />

n Vermögensgegenstände und deren finanziellen<br />

Wert evaluieren<br />

n Bedrohungen identifizieren<br />

n Quantitativ und qualitativ die Auswirkungen<br />

der Risiken ermitteln<br />

n Die Wirtschaftlichkeit der Gegenmaßnahmen<br />

im Vergleich zu den möglichen Auswirkungen<br />

des Risikos sicherstellen<br />

Verbindung stehen mit unbestimmten Ereignissen<br />

und Risiken. Bestandteile sind<br />

eine allumfassende Sicherheitsprüfung,<br />

Risikoanalyse, Auswahl und Evaluierung<br />

von Hilfsmaßnahmen, Kosten-Nutzen-<br />

Analysen und Managemententscheidungen<br />

sowie die Einführung von Rettungsmaßnahmen<br />

und Prüfverfahren. n<br />

Infos<br />

[1] Informationen zur Normensammlung ISO/​<br />

IEC 27000:<br />

[http:// www. iso27001security. com]<br />

[2] Netsecure-IT.de, „Schwarze Wolken am<br />

Horizont – Black Cloud ist Hacker-Trend<br />

2013“: [http:// netsecure‐it. de/ content/<br />

schwarze‐wolken‐am‐horizont‐black<br />

‐cloud‐ist‐hacker‐trend‐2013]<br />

[3] Symantec-Studie „Cost of a Data Breach<br />

2013“: [http:// www. symantec. com/​<br />

content/ de/ de/ about/ downloads/ 2013_<br />

Cost_of_a_Data_Breach_Deutsche_<br />

Ergebnisse_ENG. pdf]<br />

[4] Risiko-Rechner von Symantec:<br />

[https:// databreachcalculator. com]<br />

[5] Symantec, „State of Information: Germany<br />

Results 2012“: [http:// www. symantec. com/​<br />

content/ en/ us/ about/ media/ pdfs/ 2012<br />

‐state‐of‐information‐german. en‐us. pdf]<br />

[6] Netsecure-IT.de, „Hackerdefinition“:<br />

[http:// whitepaper. netsecure‐it. de/​<br />

Hackerdefinition. pdf]<br />

[7] ISO-Norm 31010:<br />

[http:// www. previ. be/ pdf/ 31010_FDIS. pdf]<br />

[8] BSI-Standard 100-3:<br />

[https:// www. bsi. bund. de/ SharedDocs/​<br />

Downloads/ DE/ BSI/ Publikationen/​<br />

ITGrundschutzstandards/ standard_1003_<br />

pdf. pdf? __blob=publicationFile]<br />

[9] SANS-Risikoliste: [http:// www. sans. org/​<br />

critical‐security‐controls/]<br />

[10] IT-Infrastructure Library (ITIL):<br />

[http:// www. itil. org/ de/ vomkennen/ itil/​<br />

index. php]<br />

[11] BSI-IT-Grundschutz-Standards:<br />

[https:// www. bsi. bund. de/ DE/ Themen/​<br />

ITGrundschutz/ itgrundschutz_node. html]<br />

Der Autor<br />

Markus Opfer [http:// netsecure‐it. de] arbeitet<br />

als ICT-Systemadministrator und IT-Security-<br />

Berater. Sein Schwerpunkt liegt in der Informationssicherheit<br />

gegenüber Wirtschaftskriminalität<br />

und Spionage sowie in der Implementierung und<br />

Betriebsführung einer sicheren IT-Infrastruktur<br />

unter Einhaltung von Compliance-Vorgaben.<br />

Innovative Computer • Zuckmayerstr. 15 • 65582 Diez<br />

Neueste Intel<br />

®<br />

Xeon<br />

® E3-<br />

Prozessoren<br />

BALIOS R15C 1HE SERVER<br />

GmbH<br />

• Intel ® Xeon ® E3-1220 V3 3,1GHz S1150<br />

• 2x 4GB DDR3 RAM<br />

• 2x 1TB 24x7 SATA-2 HDD<br />

• 2x Gigabit-LAN<br />

• <strong>Linux</strong> Systemtest<br />

inkl. MwSt.<br />

exkl. MwSt.<br />

986, 51 829,-<br />

Art.Nr. BTO-2996854<br />

BALIOS R25E STORAGE SERVER<br />

• Intel ® Xeon ® E3-1220 V3 3,1GHz S1150<br />

• 2x 4GB DDR3 RAM<br />

• 4x 1TB 24x7 SATA-2 HDD<br />

• Adaptec 6405<br />

• <strong>Linux</strong> Systemtest<br />

inkl. MwSt.<br />

exkl. MwSt.<br />

1450, 61 1219,-<br />

Art.Nr. BTO-2996844<br />

XANTHOS R55A STORAGE SERVER<br />

• 2x Intel ® Xeon ® E5-2620 2,0GHz 7,2GT 15MB 6C<br />

• 8x 8GB DDR3 RAM<br />

• 12x 2TB 24x7 SATA-2 HDD<br />

• Adaptec 72405 + NAND BBU<br />

• Intel ® Remote Management<br />

• <strong>Linux</strong> Systemtest<br />

inkl. MwSt.<br />

exkl. MwSt.<br />

7067, 41 5939,-<br />

Intel ® , Intel ® Logo, Intel ® Inside, Intel ® Inside Logo, Atom,<br />

Atom Inside, Xeon und Xeon Inside sind Marken der Intel<br />

Corporation in den USA und anderen Ländern.<br />

Alle Preise in Euro.<br />

Art.Nr. BTO-2996845<br />

wir liefern auch<br />

nach Österreich<br />

u. in die Schweiz


Titelthema<br />

www.linux-magazin.de Anonym im Internet 08/2013<br />

26<br />

Admin-Guide: Spurenlos und anonym im Internet<br />

Anonym im Web?<br />

Jeder Internetnutzer hinterlässt zahlreiche Spuren, aus denen Google & Co. umfangreiche Anwenderprofile<br />

erstellen und bereitwillig weitergeben. Die Datenkraken nicht mehr füttern und so die eigenen Mitarbeiter und<br />

die Firma schützen – das stellt Administratoren vor eine schwierige Aufgabe. Tim Schürmann, Markus Feilner<br />

in der Vergangenheit mehrfach mit „Mag<br />

ich nicht“ bedacht haben. Nicht wenige<br />

Unternehmen geben die Daten wohl auch<br />

an Geheimdienste weiter [2], was Industriespionen<br />

Tor und Tür öffnet.<br />

Langzeitgedächtnis<br />

© Elnur Amikishiyev, 123RF.com<br />

Müssen zum Frühstück frische Brötchen<br />

her, liefert Google zum Stichwort „Bäckereien“<br />

prompt passende Adressen aus<br />

der näheren Umgebung (Abbildung 1).<br />

Das funktioniert, weil Google anhand der<br />

IP-Adresse weiß, in welcher Stadt der<br />

Frühaufsteher sitzt. Google kennt sogar<br />

seine Vorlieben für Bio-Produkte – über<br />

die hat er schließlich bei Google+ ausgiebig<br />

berichtet – und kann ihm deshalb<br />

lokale Bio-Bäckereien vorschlagen.<br />

Datenkraken bei der Arbeit<br />

Was zunächst verführerisch bequem<br />

klingt, birgt jedoch mehrere Gefahren:<br />

Google & Co. erstellen immer detailliertere<br />

Profile ihrer Kunden. Mit denen<br />

können sie einem Nutzer maßgeschneiderte<br />

Werbung zeigen und ihn leichter<br />

und vor allem immer häufiger zum Kauf<br />

verleiten. Des Weiteren unterschlägt die<br />

Suchmaschine viele andere Treffer. Der<br />

hungrige Frühaufsteher erfährt so vielleicht<br />

gar nicht, dass es in seiner Nähe<br />

ein kleines Bistro gibt.<br />

Eli Pariser bezeichnet diese Abschottung<br />

als „Filter Bubble“, in die sich alle Suchmaschinennutzer<br />

zwangsweise begeben<br />

[1] und die erfolgreich verhindert, dass<br />

der Suchende Ergebnisse erhält, die außerhalb<br />

seiner Erfahrungen und Vorlieben<br />

liegen. Das genaue Gegenteil mag<br />

ebenfalls ein Problem werden, wenn<br />

Google beispielsweise falsch kombiniert<br />

und einem Mann plötzlich Werbung für<br />

Damenbinden präsentiert.<br />

All dies betrifft nicht nur Privatpersonen,<br />

sondern auch Mitarbeiter in Unternehmen.<br />

Die werden unter Umständen beobachtet,<br />

während sie auf die Webseiten<br />

der Konkurrenz zugreifen. Google enthält<br />

ihnen womöglich interessante Neuheiten<br />

vor, weil die Mitarbeiter einen Hersteller<br />

Dieser Artikel zeigt, welche gezielten<br />

Maßnahmen Administratoren treffen<br />

können, um Unternehmen und Mitarbeiter<br />

vor den Datenkraken, aber auch vor<br />

der Filter Bubble zu schützen. Die wichtigste<br />

Rolle beim Datensammeln spielen<br />

Browser: Dank hinterlegter Identifikationsnummern<br />

in Cookies, Flash-LSO (Local<br />

Shared Objects) und dem Webstorage<br />

[3] erkennen die Tracker fast jeden Nutzer<br />

wieder.<br />

Sofern im Unternehmen kein Browser<br />

vorgeschrieben oder noch keiner festgelegt<br />

ist, sollte die Wahl auf einen Vertreter<br />

fallen, der möglichst umfassende Konfigurationsmöglichkeiten<br />

bietet. Einen<br />

Vergleich aktueller Browser im Hinblick<br />

auf die Schaffung von Anonymität liefert<br />

die „Bitparade“ in diesem Heft.<br />

Für Unternehmen erweist sich Firefox als<br />

guter Kompromiss: Die meisten Distributionen<br />

bringen ihn bereits mit, was dem<br />

Admin die Wartung sehr vereinfacht. Da<br />

die Einstellungen in Form von Textdateien<br />

vorliegen, lassen sie sich leicht verändern<br />

und nachträglich auf alle Systeme<br />

im Unternehmen verteilen. Zahlreiche<br />

Erweiterungen erlauben fast komplett<br />

anonymes Surfen.<br />

Angriffsziel Browser<br />

Noch bevor die Nutzer zum ersten Mal<br />

ins Netz gehen, sollten Administratoren<br />

die standardmäßig recht auskunftsfreudi-


Besuchen Sie unsere<br />

neue Webseite:<br />

opensourcepress.de<br />

READ<br />

neu<br />

€ 4,99<br />

PDF ISBN 978-3-95539-008-2 ISBN 978-3-95539-009-9<br />

48 Seiten · E-Book · € 4,99 [D]<br />

Abbildung 1: Google schlägt ausschließlich Bäckereien aus Lüdenscheid vor, da es den Nutzer dort vermutet –<br />

und liegt damit rund 45 Kilometer daneben.<br />

Jetzt im Bundle günstiger<br />

gen Browser in ihrem Einstellungsdialog<br />

stumm schalten. Der erfahrene Stratege<br />

schaltet erst einmal alle problematischen<br />

Funktionen ab und definiert Ausnahmen<br />

für einzelne Websites (siehe Kasten<br />

„Firefox anonymisieren“).<br />

Wenn möglich sollten Administratoren<br />

zunächst eine lokale Startseite einstellen<br />

und eine weniger datenhungrige Suchmaschine<br />

einstellen. Als Alternative eignen<br />

sich besonders Meta-Suchmaschinen<br />

wie Ixquick ([4], Abbildung 2), die anonym<br />

andere Suchmaschinen anzapfen.<br />

Zumindest bei Ixquick erhöht das die<br />

Suchzeiten nur unmerklich.<br />

Suchmaschinen sammeln alle Informationen,<br />

die sie vom Browser bekommen<br />

können. Neben der Browserkennung sind<br />

das auch diverse Einstellungen – darunter<br />

etwa die Javascript-Version und die zur<br />

Verfügung stehenden Schriftarten. Aus<br />

diesen Daten erstellen die Suchmaschinen<br />

einen digitalen Fingerabdruck, über<br />

Abbildung 2: Die niederländische Meta-Suchmaschine Ixquick verspricht<br />

anonyme Suchanfragen bei angenehmen Reaktionszeiten.<br />

den sie die Browser-Installation – und<br />

somit den Nutzer – erstaunlich gut wiedererkennen.<br />

Viele Infos sind dazu nicht<br />

notwendig: Eine Seite der EFF verrät, wie<br />

häufig die eigene Browser-Konfiguration<br />

im Internet auftaucht [5].<br />

Stumm geschaltet<br />

Administratoren erhöhen folglich die Anonymität,<br />

indem sie den Nutzern möglichst<br />

identische Systemkonfigurationen<br />

bereitstellen und den Browser anweisen<br />

wenig über sich preiszugeben. Insbesondere<br />

gilt es, die Browserkennung zu<br />

unterdrücken, wozu meist eine Browser-<br />

Erweiterung oder ein Proxy notwendig<br />

sind. Interessant an den Ergebnissen auf<br />

Abbildung 3 sind die weiter unten abgefragten<br />

Informationen. Sie eignen sich<br />

gut für Tests der Konfiguration.<br />

Komplett deaktivieren können Administratoren<br />

die im Alltag meist überflüssige<br />

Browser-History sowie<br />

die nur selten benötigte<br />

Standortabfrage<br />

über das Geo-Location-API<br />

[6].<br />

Damit Google & Co.<br />

keine Identifikationsnummern<br />

im Browser<br />

ablegen, gilt es, Cookies,<br />

Flash und neuere<br />

Speichermethoden<br />

wie Webstorage oder<br />

Web-SQL abzuschal-<br />

ISBN 978-3-95539-050-1<br />

Zwei Bände · € 69,90 [D] statt € 94,80 [D] bei Einzelkauf<br />

opensourceschool.de<br />

LEARN<br />

Programmierung<br />

22. – 24. 07. Einstieg in C++<br />

02. – 04. 09. Python<br />

02. – 05. 09. Qt für Desktop-Entwickler<br />

Webentwicklung<br />

15. – 17. 07. TYPO3 Extbase/Fluid Entwicklung<br />

05. – 07. 08. CMS webEdition (Basic)<br />

28. – 30. 08. JavaScript<br />

Administration<br />

12. – 14. 08. Bacula Administration I<br />

21. – 23. 08. Asterisk<br />

nur<br />

€ 69,90<br />

02. – 03. 09. TCP/IP-Analyse mit Wireshark<br />

weitere Themen und Termine:<br />

opensourceschool.de/kurstermine


Titelthema<br />

www.linux-magazin.de Anonym im Internet 08/2013<br />

28<br />

Abbildung 3: Die Standardkonfiguration von Firefox unter Open Suse 12.3 ist<br />

unter mehr als 2 Millionen getesteten Installationen eindeutig erkennbar.<br />

ten. Wer Javascript blockiert, verhindert<br />

das unbefugte Auslesen weiterer Daten<br />

(etwa der Fenstergröße) sowie den Zugriff<br />

auf den Webstorage.<br />

Unbedingt unterdrücken sollten die<br />

Admins das standardmäßige Öffnen von<br />

Pop-up-Fenstern, die meist nur Werbebanner<br />

enthalten, sowie die Darstellung<br />

von „Gefällt mir“-Buttons, Webfonts und<br />

Webbugs. Letztere bestehen aus 1 mal 1<br />

Pixel großen, meist leeren Bildern, deren<br />

einziger Zweck im Tracken des Users<br />

besteht. In solchen Fällen erhalten die<br />

Anbieter schon durch das Abrufen der<br />

Grafik oder Schriftart Informationen über<br />

den Nutzer, die zum Beispiel verraten,<br />

welche Seite er gerade betrachtet.<br />

Während die meisten Browser Pop-up-<br />

Fenster blockieren können, müssen<br />

Admins Webbugs und „Gefällt mir“-<br />

Knöpfen mit separaten Erweiterungen zu<br />

Leibe rücken. Werbefilter blockieren<br />

mittlerweile sehr erfolgreich fast alle Banner<br />

aus Werbenetzwerken wie dem von<br />

Google. Sie verhindern, dass der Suchmaschinenriese<br />

auch jenseits seiner eigenen<br />

Seiten Nutzer verfolgt. Addons wie Ghostery<br />

oder Better Privacy (beide im Firefox-<br />

Addon-Store) leisten<br />

dabei gute<br />

Dienste.<br />

Generell gilt: Erweiterungen<br />

und<br />

Plugins sollten nur<br />

dann aktiv sein, wenn eine Webanwendung<br />

sie auch wirklich benötigt. Das gilt<br />

insbesondere für Flash, das äußerst hartnäckige,<br />

Cookie-ähnliche Local Shared<br />

Objects speichert, um die sich wiederum<br />

separate Lösch-Tools wie Better Privacy<br />

kümmern müssen.<br />

Do not track!<br />

Abbildung 4: Je nach Browser sind die Datenschutzeinstellungen über mehrere<br />

Register – mitunter auch Fenster – verteilt.<br />

Umstritten ist derzeit noch der Nutzen<br />

der Do-not-track-Funktion. Dabei bittet<br />

der Browser die Webanwendung, seinen<br />

Nutzer nicht zu überwachen. Es gibt<br />

jedoch insbesondere in den USA kein<br />

Gesetz, das den Server dazu verpflichtet.<br />

Da sich deshalb nur wenige Seiten daran<br />

orientieren, ist die Funktion in der Praxis<br />

weitgehend nutzlos.<br />

Wenn möglich sollten Administratoren<br />

den privaten Modus erzwingen oder den<br />

Browser entsprechend konfigurieren (Abbildung<br />

4). Damit gehen insbesondere<br />

Cookies beim Beenden des Browsers verloren.<br />

Zusätzlich sollten Administratoren<br />

den Browser dazu anweisen, beim Beenden<br />

alle angefallenen Daten zu löschen<br />

(Better Privacy hilft hierbei).<br />

Abschließend sollten Admins ihren Nutzern<br />

das Eintragen eigener DNS-Server<br />

verbieten. Beliebt sind vor allem die DNS-<br />

Server von Google (IP-Adressen 8.8.8.8<br />

und 8.8.4.4), weil sie angeblich ein paar<br />

Millisekunden schneller reagieren und<br />

nicht zensiert werden. Im Gegenzug<br />

registriert Google jedoch jede Anfrage.<br />

Idealerweise sollten Admins vertrauenswürdige<br />

DNS-Server vorgeben und die<br />

IP-Adressen fragwürdiger DNS-Server<br />

über die Firewall blockieren.<br />

Das Erstellen von Ausnahmeregeln ist<br />

in der Praxis mitunter recht aufwändig.<br />

Müssen sich die Mitarbeiter frei im Internet<br />

bewegen, sollten Javascript und<br />

Abbildung 5: Ärgerlich für Webmaster: Aus einer Seite mit Werbebannern ...<br />

Abbildung 6: … machen Noscript und Adblock eine auf den Inhalt reduzierte.


Cookies aktiviert bleiben und Browser-<br />

Erweiterungen die Anonymität erhöhen.<br />

Unter Firefox weist etwa Noscript [8]<br />

neugierige Javascript-Funktionen in ihre<br />

Schranken.<br />

Erweiterungen sind zudem immer dann<br />

eine Empfehlung, wenn dem Browser<br />

Funktionen fehlen. So rüstet etwa Adblock<br />

Plus [9] unter Firefox, Chrome<br />

und Opera einen Werbefilter nach (Abbildungen<br />

5 und 6), das angesprochene<br />

Better Privacy [10] löscht alle Daten am<br />

Ende einer Browsersitzung, Ghostery [11]<br />

informiert über Schnüffelversuche von<br />

Webseitenbetreibern und unterdrückt sie<br />

auf Wunsch.<br />

Bevor die Suchanfrage an Google das<br />

Unternehmen verlässt, sollte sie eine Filtersoftware<br />

noch einmal unter die Lupe<br />

nehmen und dabei Cookies, die Browserkennung<br />

und andere persönliche Daten<br />

entfernen. Ein beliebter Filter, der genau<br />

das erledigt, ist Privoxy [12], der in den<br />

Repositories vieler Distributionen liegt.<br />

Abbildung 7: Foxyproxy kann automatisch zwischen verschiedenen Proxys wechseln.<br />

Wie die meisten seiner Kollegen arbeitet<br />

er als Proxy, nimmt also Netzwerkverkehr<br />

entgegen, manipuliert ihn und schickt<br />

ihn dann ins Internet. Diese Arbeitsweise<br />

hat den Vorteil, dass Administratoren in<br />

den Browser-Einstellungen lediglich Privoxy<br />

als Proxy eintragen müssen. Proxys ,<br />

die den Netzwerkverkehr anonymisieren,<br />

nennt man Anonymous oder Elite Proxys.<br />

Privoxy kann direkt auf den Rechnern<br />

der Mitarbeiter laufen, besser ist aber ein<br />

dedizierter Server oder gar die Kombination<br />

mit einem vorhandenen (Squid-)<br />

Proxy [13].<br />

So ein Elite Proxy ist verlockend, weil<br />

Administratoren seine Nutzung erzwingen<br />

können (wenn er auf einem eigenen<br />

Server werkelt). Welche Informationen<br />

Privoxy streichen oder austauschen soll,<br />

bestimmen Regelsätze, deren Aufbau je-<br />

Anonym im Internet 08/2013<br />

Titelthema<br />

www.linux-magazin.de<br />

29<br />

MAGAZIN<br />

ONLINE<br />

<strong>Linux</strong>-<strong>Magazin</strong> newsLetter<br />

Nachrichten rund um die Themen <strong>Linux</strong> und Open Source lesen Sie täglich<br />

im Newsletter des <strong>Linux</strong>-<strong>Magazin</strong>s.<br />

Newsletter<br />

informativ<br />

kompakt<br />

tagesaktuell<br />

www.linux-magazin.de/newsletter


Titelthema<br />

www.linux-magazin.de Anonym im Internet 08/2013<br />

30<br />

Abbildung 8: Anonymouse verspricht die eingetippte URL anonym anzufordern.<br />

doch viel Fingerspitzengefühl erfordert.<br />

Filtern Administratoren zu stark, indem<br />

sie etwa alle Cookies eliminieren, funktionieren<br />

unter Umständen viele Webanwendungen<br />

nicht mehr. Die Mitarbeiter<br />

haben dann keine Chance, dies selbst<br />

zu ändern. Bei Privoxy kommt hinzu,<br />

dass die Einstellungen recht kryptisch<br />

aufgebaut sind, was eine entsprechende<br />

Einarbeitung erfordert.<br />

Eine gute Idee ist es, einen einfachen<br />

Squid-Proxy für den gesamten Webtraffic<br />

zu verwenden. Er kann den Benutzern<br />

über dedizierte Regeln entweder für einzelne<br />

Webseiten Anonymität verschaffen<br />

oder sie für bestimmte URLs von der erzwungenen<br />

Namenlosigkeit ausnehmen.<br />

Squid bietet hier viele Möglichkeiten bis<br />

hin zur Active-Directory-Integration mit<br />

User-, Gruppen-, Protokoll-, Port- und<br />

URL-basierten Regeln.<br />

Wer seinen Anwendern die Wahl überlassen<br />

will oder muss, schafft Abhilfe mit<br />

Browser-Erweiterungen und Policies, also<br />

mit Vorgaben wie „Diese Seiten bitte nur<br />

anonymisiert aufrufen“. In diesem Fall<br />

schalten die Nutzer den Proxy nach Bedarf<br />

ein und aus und wechseln zwischen<br />

mehreren Proxys hin und her.<br />

Einige dieser Extensions wählen den passenden<br />

Proxy anhand der aufgerufenen<br />

URL sogar automatisch (Abbildung 7).<br />

So fließen dann beispielsweise beim Aufruf<br />

von »www.google.de« alle Daten über<br />

Privoxy, im Fall von »www.example.com«<br />

kommuniziert der Browser direkt mit der<br />

Seite. Eine solche automatische Umschaltung<br />

beherrscht beispielsweise Foxyproxy<br />

Standard für Firefox und Chrome [14].<br />

Die Automatik hat zudem den Vorteil,<br />

dass Mitarbeiter das Umschalten nicht<br />

vergessen – wie im oben genannten Beispiel<br />

mit dem Squid-Proxy.<br />

Noch mehr Anonymität?<br />

Aber selbst wenn der Browser keine Informationen<br />

mehr herausrückt, erfahren<br />

Google & Co. immer noch die IP-Adresse<br />

des anfragenden Rechners. Über sie lässt<br />

sich unter anderem der Standort des<br />

Nutzers herausfinden. Besitzt das Unter-<br />

nehmen fest zugewiesene IP-Adressen,<br />

kennen die Webanwendungen sogar das<br />

Unternehmen und können im schlimmsten<br />

Fall einen Mitarbeiter der Konkurrenz<br />

anhand seiner IP-Adresse zuverlässig<br />

identifizieren.<br />

Die IP-Adresse verschleiern so genannte<br />

Webproxys. Sie stellen eine Internetseite<br />

bereit, auf der ein Anwender die<br />

gewünschte URL eintippt. Der Webproxy<br />

ruft dann stellvertretend diese Adresse<br />

auf und liefert die Webseite an den Nutzer<br />

aus. Webproxys sind bequem, da<br />

sie keine Konfiguration benötigen, in<br />

der Vergangenheit verschwanden viele<br />

von ihnen allerdings immer wieder urplötzlich.<br />

Einer der wenigen beständigen<br />

deutschsprachigen Webproxys ist Anonymouse<br />

([15], Abbildung 8), eine halbwegs<br />

aktuelle Liste führt das Electronic<br />

Privacy Information Center (unter [16]<br />

im Abschnitt »Surf Anonymously«).<br />

Offene Proxys: Finger weg!<br />

Neben den Webproxys gibt es noch komplett<br />

offene Proxys, die einfach den ganzen<br />

Netzwerkverkehr weiterleiten. Die<br />

besseren entfernen dabei auch gleich<br />

noch verräterische Informationen, etwa<br />

eine Browserkennung. Doch auch sie<br />

verschwinden so schnell vom Markt wie<br />

neue hinzukommen. Eine recht aktuelle<br />

Liste führt unter anderen Public Proxy<br />

Servers [17]. Die entsprechenden Daten<br />

eines offenen Proxys müssten Administratoren<br />

entweder in den Browsern hinterlegen<br />

oder aber den Firmen-Proxy auf<br />

den offenen umbiegen.<br />

Das klingt verführerisch: Web- und offene<br />

Proxys sind schnell eingerichtet (Abbildung<br />

9) und bequem zu nutzen. Doch<br />

Firefox anonymisieren<br />

Ausgehend von den Standardeinstellungen erreichen<br />

User in Firefox (Abbildung 4) eine gute<br />

Grundsicherung wie folgt: Hinter »Bearbeiten<br />

| Einstellungen« lassen sie unter »Allgemein«<br />

eine »Leere Seite« beim Starten anzeigen.<br />

Unter »Inhalt« blocken sie »Pop‐Up‐Fenster«,<br />

deaktivieren »JavaScript« und legen dann entsprechende<br />

»Ausnahmen« fest.<br />

Anschließend klicken sie neben den Einstellungen<br />

zur Schriftart auf »Erweitert« und entfernen<br />

den Haken vor »Seiten das Verwenden von<br />

eigenen statt der oben gewählten Schriftarten<br />

erlauben«. Weiter geht es beim »Datenschutz«,<br />

wo man Firefox eine Chronik »nach benutzerdefinierten<br />

Einstellungen anlegen« lässt. Der<br />

Browser sollte dabei »Immer den privaten<br />

Modus« verwenden. Firefox startet daraufhin<br />

einmal neu.<br />

Wieder zurück im »Datenschutz«, stellt der<br />

Anwender die Chronik erneut auf »nach benutzerdefinierten<br />

Einstellungen anlegen« und<br />

entfernt den Haken vor »Cookies akzeptieren«.<br />

Ausnahmen lassen sich über die gleichnamige<br />

Schaltfläche festlegen. Die Synchronisation unter<br />

»Sync« sollte abgeschaltet werden. Unter<br />

»Erweitert« entfernen Administratoren unter<br />

»Datenübermittlung« alle Haken, die übrigen<br />

Einstellungen bleiben auf ihren Vorgaben.<br />

Zurück im Browserfenster findet sich im Suchfeld<br />

die Ausklappliste für die Suchmaschine mit<br />

dem Eintrag »Suchmaschinen verwalten«. Hier<br />

empfiehlt es sich, den Haken vor »Suchvorschläge<br />

anzeigen« zu entfernen. Damit befragt<br />

der Browser erst dann die Suchmaschine, wenn<br />

der Nutzer den Begriff abschickt. Über den<br />

entsprechenden Link können Administratoren<br />

weitere Suchmaschinen einbinden. Dauerhaft<br />

gültige Ausnahmeregeln lassen sich für die angezeigte<br />

Seite auch über »Extras | Seiteninformationen«<br />

anlegen. Wer sich das Konfigurieren<br />

ersparen möchte, findet beim Jon-Do-Projekt<br />

auch ein vorgefertigtes Firefox-Profil [7].


Vorsicht: Der Betreiber des Proxys kann<br />

den kompletten Datenverkehr einsehen<br />

und mitschneiden. Schlimmer noch: Die<br />

Proxys können mühelos schadhaften<br />

Code in die zurückgelieferten Seiten einschleusen.<br />

Darüber hinaus verzögert ein<br />

Proxy die Anfrage und reduziert unter<br />

Umständen die Bandbreite.<br />

Die Verschleierung funktioniert zudem<br />

nur dann wirksam, wenn möglichst viele<br />

verschiedene Personen den Proxyserver<br />

nutzen. Durch die so erzeugte Last verringert<br />

sich allerdings die Bandbreite, die<br />

Geschwindigkeit sinkt. Nicht zuletzt werfen<br />

Proxys Datenschutzprobleme auf, da<br />

in diesem Fall Unternehmensinterna und<br />

persönliche Daten der Mitarbeiter über<br />

Dritte fließen.<br />

Es gibt Browser-Erweiterungen, die nach<br />

einiger Zeit automatisch den Proxy wechseln.<br />

Damit sehen die einzelnen offenen<br />

Proxys zwar immer nur einen Ausschnitt<br />

des Netzwerkverkehrs, die Grundprobleme<br />

bleiben jedoch weiterhin bestehen.<br />

Web- und offene Proxys eigenen<br />

sich folglich nicht für den Unternehmenseinsatz.<br />

Zwiebelschalen<br />

Wenn die Nutzung einzelner Proxys<br />

bedenklich ist, bietet es sich<br />

an, die Daten zu verschlüsseln<br />

und zusätzlich dazu mehrere<br />

Proxyserver hintereinanderzuschalten.<br />

Nach diesem Zwiebelschalenprinzip<br />

arbeitet das Tor-<br />

Projekt [18]: Zunächst sendet<br />

der Browser seine Anfrage an einen<br />

so genannten Onion-Proxy.<br />

Dieses Programm besorgt sich<br />

bei einem speziellen Verzeichnisserver<br />

eine Liste mit Routern,<br />

die dem Tor-Projekt zur Verfügung stehen<br />

und die eigentliche Weiterleitung der Daten<br />

übernehmen.<br />

Der Onion-Proxy wählt dann eine Kette<br />

aus mehreren Routern aus, mit denen<br />

Abbildung 9: Um einen (anonymen) Proxy zu nutzen, sind nur<br />

die entsprechenden Einstellungen im Browser erforderlich.<br />

er jeweils einen geheimen Schlüssel vereinbart.<br />

Anschließend chiffriert er die<br />

eigentliche Nachricht nacheinander mit<br />

allen Schlüsseln und schickt das erst einmal<br />

unleserliche Ergebnis an den ersten<br />

Anonym im Internet 08/2013<br />

Titelthema<br />

www.linux-magazin.de<br />

31<br />

Alles zum ThemA Android<br />

Die Monatszeitschrift für Android-Fans, Smartphone- und Tablet-Nutzer<br />

DigisuB: nur 39,90 € im Jahr (12 PDFs)<br />

Jetzt bestellen unter:<br />

www.android–user.de/digisub<br />

Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@android-user.de<br />

+<br />

Lesen Sie News und<br />

Artikel schon 1 Woche<br />

vor dem Kiosk-Termin!


Titelthema<br />

www.linux-magazin.de Anonym im Internet 08/2013<br />

32<br />

Abbildung 10: Das Management-Tool von Vidalia aus<br />

dem Tor Browser Bundle ist selbsterklärend.<br />

Router. Dieser dechiffriert die Nachricht<br />

mit seinem Schlüssel und sendet das Ergebnis<br />

an den zweiten Router, der wiederum<br />

das Datenpaket mit seinem Schlüssel<br />

entschlüsselt. Wie beim Schälen einer<br />

Zwiebel entfernt jeder Router eine Verschlüsselungsschicht.<br />

Tor! Aber auf Japanisch?<br />

Nur der letzte Router in der Kette (der<br />

so genannte Exit Node) sieht schließlich<br />

die Nachricht im Klartext und stellt<br />

sie zu. Genau dieser Router könnte aber<br />

auch wie ein offener Proxy die Daten<br />

im Klartext mitschneiden und verändern.<br />

Um das zumindest etwas zu erschweren,<br />

wechselt der Onion-Proxy regelmäßig die<br />

beteiligten Router. Außerdem erhöhen die<br />

Weiterleitung und Verschlüsselung die<br />

Latenz – auch wenn die Entwickler von<br />

Tor versucht haben, möglichst effiziente<br />

Verfahren zu wählen.<br />

Und es gibt noch ein Problem: Steht der<br />

letzte Onion-Proxy in Japan, geht Google<br />

unter Umständen davon aus, dass auch<br />

der Nutzer in Nippon sitzt, und präsentiert<br />

seine Seiten mit japanischen Schriftzeichen.<br />

Googles Suchseite lässt sich vermutlich<br />

auf eine andere Sprachfassung<br />

umstellen, bei anderen Diensten klappt<br />

das unter Umständen nicht.<br />

Wie der Name schon andeutet, arbeitet<br />

der Onion-Proxy mit Schichten hintereinandergeschalteter<br />

Proxys. Tor liegt in<br />

den Repositories der meisten Distributionen,<br />

bei der Konfiguration hilft das GUI<br />

Vidalia (Abbildung 10), das auch unter<br />

Windows und Mac OS X läuft [19].<br />

Für Einzelplatzrechner stellt das Tor-Projekt<br />

zudem ein Paket aus Tor, Vidalia und<br />

einem vorkonfigurierten Mozilla Firefox<br />

in einer älteren ESR-Fassung bereit. Die<br />

Tools aus dem Bundle [20] liefern Zusatzinformationen,<br />

etwa die Anonymisierungskette<br />

auf einer grafischen Karte<br />

(Abbildung 11). Zugleich warnt das Tor-<br />

Projekt davor, Browser-Plugins wie Flash<br />

und Java einzusetzen, weil diese unter<br />

Umständen eine direkte Verbindung am<br />

Proxy vorbei aufbauen.<br />

Wer zusätzlich Privoxy nutzen will,<br />

um seine User zu schützen, muss den<br />

Elite- unbedingt noch vor den Onion-<br />

Proxy setzen, da Privoxy ansonsten nur<br />

noch verschlüsselte Pakete sieht. In den<br />

Browsern müssen Administratoren in<br />

den Proxy-Einstellungen die Daten des<br />

Onion-Proxys eintragen.<br />

Neben Tor gibt es weitere Projekte, die<br />

nach einem ähnlichen Prinzip arbeiten.<br />

Bekanntestes Beispiel ist das deutsche<br />

Jon Donym, das aus dem AN.ON-Projekt<br />

hervorgegangen ist [21]. Da es ähnlich<br />

wie Tor arbeitet, gelten hier die gleichen<br />

Einschränkungen. Auch bei kostenpflichtigen<br />

VPN-Diensten muss das Unternehmen<br />

dem Anbieter des VPN vertrauen<br />

und Geschwindigkeitseinbußen durch die<br />

Verschlüsselung hinnehmen. Zudem sieht<br />

Google dabei nur eine andere IP-Adresse,<br />

das Filtern der Daten muss der Admin<br />

separat erledigen.<br />

Nur theoretisch anonym?<br />

Eine gänzlich anonyme Internetnutzung<br />

ist wohl nur theoretisch zu erreichen. Tor<br />

und (offene) Proxyserver dürften für Unternehmen<br />

in der Praxis ausscheiden: Die<br />

Lösungen sind zu langsam und zu unsicher<br />

für den Alltag und lösen nicht das<br />

Problem der Datenschnüffelei durch den<br />

Betreiber einer Webseite oder Suchmaschine.<br />

Der wichtigste<br />

Schritt, den Browser<br />

komplett stumm zu<br />

schalten, kostet Mühe<br />

und benötigt je nach<br />

Browser viele Erweiterungen.<br />

Zudem setzen<br />

viele Webanwendungen<br />

aktiviertes Javascript<br />

und Cookies<br />

voraus, was Ausnahmeregelungen<br />

erfordert.<br />

Nicht zuletzt sind Administratoren<br />

machtlos,<br />

wenn ihre Benut-<br />

zer fleißig und ohne Zwang auf Google+<br />

oder Facebook Daten preisgeben. Hier<br />

helfen nur Unternehmensrichtlinien, passende<br />

Firewallregeln und vor allem eine<br />

Sensibilisierung der Mitarbeiter. n<br />

Infos<br />

[1] Eli Pariser, „The Filter Bubble“: Hanser-<br />

Verlag, ISBN 978-3-446-43034-1<br />

[2] Prism-Seite des Guardian:<br />

[http:// www.guardian.co.uk/world/prism]<br />

[3] Web Storage:<br />

[http:// www. w3. org/ TR/ webstorage/]<br />

[4] Ixquick: [https:// www. ixquick. com/ deu/]<br />

[5] Panopticlick: [http:// panopticlick. eff. org]<br />

[6] Geo-Location-API:<br />

[http:// www. w3. org/ TR/ geolocation‐API/]<br />

[7] Vorgefertigtes Firefox-Profil: [https://​<br />

www. anonym‐surfen. de/ jondofox. html]<br />

[8] Noscript: [http:// noscript. net]<br />

[9] Adblock Plus: [http:// adblockplus. org/ de/]<br />

[10] Better Privacy:<br />

[http://​nc.ddns.us/BetterPrivacy.htm]<br />

[11] Ghostery: [http://www.ghostery.com]<br />

[12] Privoxy: [http:// www. privoxy. org]<br />

[13] Markus Feilner, Falk Husemann, „Blind<br />

Date“: <strong>Linux</strong>-<strong>Magazin</strong> 03/​12<br />

[14] Foxyproxy: [http:// getfoxyproxy. org]<br />

[15] Anonymouse: [http:// anonymouse. org]<br />

[16] Liste mit Webproxys:<br />

[http:// epic. org/ privacy/ tools. html]<br />

[17] Liste mit offenen Proxys:<br />

[http:// www. publicproxyservers. com]<br />

[18] Tor-Projekt: [https:// www. torproject. org]<br />

[19] Vidalia: [https:// www. torproject. org/​<br />

projects/ vidalia. html]<br />

[20] Tor Browser Bundle:<br />

[https:// www. torproject. org/ projects/​<br />

torbrowser. html. en]<br />

[21] Jon Donym: [http:// www. jondos. org]<br />

Abbildung 11: Zweimal USA und zurück, aber vielleicht auch via Japan: Tor.


JETZT<br />

MIT DVD!<br />

MAGAZIN<br />

Sonderaktion<br />

Testen Sie jetzt<br />

3 Ausgaben<br />

für 3 Euro!<br />

Gewinnen Sie...<br />

einen von drei Spheros,<br />

per Smartphone fernsteuerbare<br />

Roboter-Bälle im Gesamtwert<br />

von 389 Euro<br />

Jetzt schnell bestellen:<br />

• Telefon 07131 / 2707 274<br />

• Fax 07131 / 2707 78 601<br />

• E-Mail: abo@linux-magazin.de<br />

• Web: www.linux-magazin.de/probeabo<br />

Mit großem Gewinnspiel unter:<br />

www.linux-magazin.de/probeabo<br />

gesponsert von:<br />

• wasserfester Kugelroboter, per Bluetooth steuerbar,<br />

Multi-Colour-Changing LEDs, Apps für Android und iOS<br />

.de • induktive Ladestation (3 Std. Ladezeit, 1 Std. Betriebszeit)<br />

Einsendeschluss ist der 16.09.2013


Titelthema<br />

www.linux-magazin.de Access Management 08/2013<br />

34<br />

Unternehmenslösungen für die Zugriffskontrolle<br />

Zugang nach Vorschrift<br />

Den Zugriff der Mitarbeiter auf Daten zu regulieren gehört zu den üblichen Bedürfnissen eines Unternehmens.<br />

Spezielle Produkte bieten umfassende Konfigurationsmöglichkeiten, in manchen Fällen tut es aber auch schon<br />

eine <strong>Linux</strong>-Enterprise-Distribution. Mathias Huber<br />

einsetzbar, direkte Abhängigkeiten zwischen<br />

ihnen gäbe es nicht. Die Access<br />

Management Suite (Abbildung 1) beispielsweise<br />

kümmert sich um Autorisierung,<br />

Zugriffserlaubnis und protokolliert<br />

die tatsächliche Zugriffe (Abbildung 2).<br />

Eine Weboberfläche gibt Zugang auf die<br />

diversen Einstellungsmöglichkeiten und<br />

Berichte.<br />

Compliance-Check<br />

© sarella, 123RF.com<br />

In vielen Unternehmen soll jeder Mitarbeiter<br />

Zugriff nur auf jene Daten haben,<br />

die er für seine Arbeit braucht. Für<br />

bestimmte Branchen ist das sogar durch<br />

Gesetze oder Regeln von Aufsichtsbehörden<br />

vorgeschrieben, etwa durch den Sarbanes-Oxley<br />

Act für den Finanzsektor.<br />

Mit den Unix-Permissions für Benutzer<br />

und Gruppen sowie erweiterten Dateiattributen<br />

stellt <strong>Linux</strong> allerdings nur ein<br />

grobes Raster für solche Regelungen zur<br />

Verfügung. Durch Access Control Lists<br />

(ACL) lässt sich das verbessern, doch<br />

insbesondere in heterogenen Umgebungen<br />

mit verschiedenen Betriebssystemen<br />

muss eine umfassende Lösung her.<br />

Identity and Access<br />

Management<br />

Für eine solche Zugriffssteuerung (Access<br />

Control Management) muss das System<br />

erst einmal wissen, wer der Benutzer ist<br />

(Authentisierung), um ihm das Lesen<br />

oder Bearbeiten von Daten zu erlauben<br />

oder zu verweigern (Autorisierung). Deshalb<br />

pflegen einschlägige Lösungen eine<br />

enge Beziehung zum Identity Management,<br />

man spricht auch von Identity and<br />

Access Management (IAM)<br />

Zu den Anbietern eines solchen IAM gehört<br />

das Unternehmen Net IQ, wie Suse<br />

und der Rest von Novell Teil der Attachmate<br />

Group [1]. Das Softwareunternehmen<br />

hat gleich eine ganze Palette von<br />

Produkten im Angebot.<br />

Für das Identity Management kommt bei<br />

Net IQ der Verzeichnisdienst E-Directory<br />

aus dem Hause Novell zum Einsatz. Als<br />

Metadirectory vereint der Dienst Verzeichnisinformationen<br />

aus den unterschiedlichen<br />

Systemen im Unternehmen.<br />

Damit ist der „Rundumschlag im firmenweiten<br />

Identitätsmanagement möglich“,<br />

drückt es Jörn Dierks aus, Net IQ Chief<br />

Security Strategist EMEA. Daneben, betont<br />

er, seien die Net-IQ-Produkte für das<br />

Access Management [2] auch einzeln<br />

Setzt der Kunde zudem den Secure Configuration<br />

Manager ein, kann er seine Konfiguration<br />

automatisiert auf Compliance<br />

prüfen: Net IQ hat Normen wie die PCI<br />

Data Security Standards (Payment Card<br />

Industry), den Sarbanes-Oxley Act (SOX)<br />

und die Normenserie ISO/​IEC 27000 in<br />

maschinenlesbare Templates übersetzt.<br />

Optional ist das IAM an die Provisioning-<br />

Tools koppelbar, mit denen die Administratoren<br />

die Konfigurationen in der<br />

Firma verteilen. Daneben gibt es Schnittstellen<br />

zu Sentinel, dem Net-IQ-Produkt<br />

für Security Information and Event Management<br />

(SIEM). Es verwaltet die Logging-Informationen,<br />

spürt Anomalien im<br />

Betrieb auf und kann laut Dierks auch<br />

verschiedene User-Accounts auf unterschiedlichen<br />

Systemen verknüpfen, die<br />

zur selben Person gehören.<br />

Eine weitere Komponente heißt Change<br />

Guardian, überwacht Änderungen an Dateien<br />

und kann diese als Diff anzeigen.<br />

Wer zudem seinen Admins auf die Finger<br />

schauen will oder ihre Berechtigungen<br />

feiner konfigurieren, greift zum Net IQ<br />

Privileged User Manager.<br />

Sowohl Unternehmen als auch einzelne<br />

Angestellte nutzen in ihrer Arbeit zunehmend<br />

Software-as-a-Service (SaaS) und<br />

Cloud-Dienste externer Anbieter. Diese


Access Management 08/2013<br />

Titelthema<br />

www.linux-magazin.de<br />

35<br />

Abbildung 1: Net IQs Access-Governance-Produkte dienen zum feinkörnigen<br />

Einstellen von Zugriffsberechtigungen.<br />

Abbildung 2: Die Monitoring-Komponente des Access Management zeichnet<br />

Zugriffe und Verstöße gegen die Policies auf.<br />

Angebote gelten derzeit als Leck, durch<br />

das sensible Informationen nach außen<br />

dringen können. Damit der Mitarbeiter<br />

wenigstens nicht sein Unternehmenspasswort<br />

für ein Social Network einsetzt,<br />

hat Net IQ das Produkt Cloud Access<br />

geschaffen. Die Appliance übernimmt für<br />

den Anwender die Anmeldung bei den<br />

Cloud- und SaaS-Diensten und ist in das<br />

Identity-Management eingebunden. Der<br />

Mitarbeiter meldet sich nur einmal im<br />

Unternehmen an (Single-Sign-on), um<br />

den Rest kümmert sich diskret die Appliance.<br />

So erhält der Angestellte gar keinen<br />

direkten Zugriff auf die Passwörter.<br />

Cloud Access befindet sich in der Hand<br />

der IT-Abteilung, die bei Bedarf sogar die<br />

Zugänge sperren kann.<br />

<strong>Linux</strong> und Windows<br />

Die Produkte laufen serverseitig auf Windows<br />

Server 2003 oder 2008 R2 Enterprise,<br />

auf Red Hat Enterprise Server 6 oder auf<br />

Suse <strong>Linux</strong> Enterprise 11. Viele sind auch<br />

als virtuelle Appliance erhältlich, die als<br />

Betriebssystembasis ein gehärtetes Suse<br />

<strong>Linux</strong> verwendet. Die Lizenzmodelle<br />

von Net IQ unterscheiden sich nach Produktgruppen:<br />

Die IAM-Produkte rechnet<br />

der Anbieter nach Benutzern ab, Sentinel<br />

nach Events pro Sekunde, das Konfigurationsmanagemnt<br />

nach Endpunkten und<br />

den Change Guardian nach Servern.<br />

Das Softwareunternehmen Red Hat dagegen<br />

hat kein spezielles Produkt für<br />

das Identity Management im Angebot.<br />

Gleichwohl hat die Firma 2007 das Open-<br />

Source-Projekt Free IPA initiiert [3], das<br />

ein Framework für zentralisiertes Identity<br />

Management entwickelt und regelmäßig<br />

veröffentlicht. Die Tools des Free-<br />

IPA-Frameworks stehen den Anwendern<br />

von Red Hat Enterprise <strong>Linux</strong> 6 (RHEL)<br />

im Rahmen ihrer Subskription inklusive<br />

Support zur Verfügung.<br />

Ursprünglich stand das Akronym für<br />

Identity (Identität für Benutzer, Gruppen<br />

und Rechner), Policy (hostbasierte Zugriffskontrolle)<br />

und Audit. Die Umsetzung<br />

des letzten Bestandteils ist jedoch<br />

für unbestimmte Zeit aufgeschoben.<br />

Open-Source-Framework<br />

Free IPA umfasst die freien Komponenten<br />

389 Directory Server, MIT-Kerberos, das<br />

Zertifikatssystem Dogtag sowie SSSD, den<br />

System Security Services Daemon für die<br />

Client-Seite. Über Kommandozeile und<br />

Web-GUI kann der Administrator damit<br />

umfassend Zugriffsberechtigungen setzen<br />

sowie per Sudo-Mechanismus Administrationsvorgänge<br />

delegieren (Abbildung<br />

3). Auch Red Hats Mandatory Access<br />

Control (MAC) SE <strong>Linux</strong>, standardmäßig<br />

im Enterprise <strong>Linux</strong><br />

aktiviert, ist in die<br />

Administration eingebunden.<br />

Matthias Kranz, Manager<br />

Solution Architect<br />

EMEA bei Red Hat,<br />

berichtet von Kunden,<br />

die damit das Identity<br />

Management für<br />

ihre <strong>Linux</strong>- und Unix-<br />

Landschaft abwickeln. Sudo-Berechtigungen.<br />

Daneben lassen sich Windows-Hosts integrieren,<br />

wenn der Admin die LDAP-<br />

Felder entsprechend anpasst.<br />

Wer besondere Ansprüche in Sachen<br />

Verzeichnisdienst oder Zertifikatsserver<br />

habe, könne darüber hinaus zu Red Hats<br />

eigenständigen Produkten Directory Server<br />

und Certificate System greifen, die<br />

auf den Open-Source-Servern in Free IPA<br />

basieren, sagt Kranz. Als Einstiegslektüre<br />

für das Identitäts- und Zugriffsmanagement<br />

empfiehlt er den Identity Management<br />

Guide aus seinem Hause [4]. n<br />

Infos<br />

[1] The Attachmate Group:<br />

[http:// www. attachmategroup. com]<br />

[2] Net-IQ-Produkte für das Access Management:<br />

[https:// www. netiq. com/ products/<br />

# access]<br />

[3] Free IPA: [http:// www. freeipa. org]<br />

[4] Red Hat Enterprise <strong>Linux</strong> 6 Identity Management<br />

Guide: [https:// access. redhat. com/​<br />

site/ documentation/ en‐US/ Red_Hat_Enterprise_<strong>Linux</strong>/<br />

6/ html‐single/ Identity_Manage<br />

ment_Guide/ # using‐the‐ui]<br />

Abbildung 3: Auf der Weboberfläche von Free IPA vergibt der Admin auch


Titelthema<br />

www.linux-magazin.de Netzwerkanalyse 08/2013<br />

36<br />

Den Strom der Firmendaten sinnvoll kontrollieren und absichern<br />

Barrikade<br />

Will der Admin kritische Daten daran hindern, das eigene Unternehmen zu verlassen, dann greift er zu Software,<br />

die die Wege nach draußen überwacht und nötigenfalls sperrt. Dieser Artikel zeigt einen Überblick von<br />

Netzwerksniffern über Intrusion-Detection-Tools bis hin zur Data Loss Prevention. Martin Loschwitz<br />

© Nathaporn Tunthong, 123RF.com<br />

So konnte der chinesische Spezialist via<br />

VPN die Arbeit auf dem Firmenserver<br />

erledigen.<br />

Aufmerksam wurden die Admins des<br />

Unternehmens auf die Geschichte nach<br />

einiger Zeit aber dennoch. Sie entdeckten<br />

nämlich in den Packetflows ihrer Router<br />

immer wieder auffällige VPN-Verbindungen<br />

nach China – und machten sich auf<br />

die Suche nach der undichten Stelle:<br />

IDS, PI, DPI und SPI<br />

Die Daten eines Unternehmens sind<br />

diesem zurecht heilig – nicht erst seit<br />

PRISM ist bekannt, dass manchmal Daten<br />

den Weg aus der eigenen Firma in<br />

die Hände Dritter schneller finden, als<br />

es den Admins lieb sein darf. Im Kampf<br />

gegen Datenlecks und blinde Passagiere<br />

helfen dem für die Sicherheit Verantwortlichen<br />

zahlreiche Tools und Technologien<br />

einen unerwünschten Datenausgang zu<br />

erkennen und sukzessive zu verhindern.<br />

Dieser Artikel gibt einen Überblick über<br />

wichtige Methoden und verweist anhand<br />

von Beispielen auf geeignete Lösungen.<br />

Dial-in aus China<br />

Bei der Analyse von Netzwerktraffic gibt<br />

es zwei grundverschiedene Ansätze, die<br />

bestenfalls teilweise miteinander verwoben<br />

sind: Überwachung und (pro-)aktive<br />

Maßnahmen. Der Standard ist heute der<br />

Mix, also Tools, die den kompletten Datenstrom<br />

eines Unternehmens auf verschiedene<br />

Parameter erst untersuchen<br />

und anschließend Maßnahmen ergreifen.<br />

Hier fällt das Stichwort Packet Inspection<br />

(PI). Lösungen dieser Art haben<br />

den großen Vorteil, dass sie sich zentral<br />

umsetzen lassen und nicht von weiteren<br />

Komponenten abhängen.<br />

Eine aktuell sehr beliebte Geschichte aus<br />

dem Web [1] zeigt exemplarisch erfolgreiche<br />

Packet Inspection bei der Arbeit: Ein<br />

überlasteter Entwickler, der für mehrere<br />

amerikanische Firmen arbeitete, heuerte<br />

seinerseits heimlich einen in China lebenden<br />

Entwickler an. Der Amerikaner hätte<br />

einen ordentlichen Schnitt gemacht, da<br />

Arbeitskräfte in China viel billiger als in<br />

den USA sind.<br />

Die US-Firma, die den Auftag erteilt hatte,<br />

hätte das aus Angst vor Industriespionage<br />

natürlich nie erlaubt und beugte dem<br />

auch sicherheitstechnisch vor, zum Beispiel<br />

mit einem Hardwaretoken-basierten<br />

VPN für externe Mitarbeiter. Aber der<br />

gewitzte Entwickler hebelte den Schutz<br />

aus, indem er den Token-Stick kurzerhand<br />

per Post nach China verschickte.<br />

Intrusion Detection (ID) und ID-Systeme<br />

(IDS) zielen dagegen darauf ab, erfolgreiche<br />

Einbrüche zu erkennen: Mit Hilfe von<br />

IDS versuchen Admins, anhand vorher<br />

festgelegter Parameter Auffälligkeiten auf<br />

Systemen zu erkennen. Die ID schlägt<br />

Alarm, denn wenn sich beispielsweise<br />

die Berechtigungen von Dateien in einem<br />

Dateisystem wie von Geisterhand<br />

ändern, ist zumindest ein genauerer Blick<br />

angesagt.<br />

Eine zuverlässige Erkennung von Angriffen<br />

besteht aus der Kombination beider<br />

Techniken, einerseits, um auffälligen<br />

Netzwerkverkehr zu erkennen, andererseits<br />

aber auch, um eventuell kompromittierte<br />

Systeme schnell und zuverlässig<br />

aus dem Verkehr zu ziehen.<br />

Der Begriff der Packet Inspection ist heute<br />

vielerorts nur im Rahmen der „Deep Packet<br />

Inspection“ geläufig, einer Methode<br />

der Datenstrom-Analyse, bei der das<br />

Netzwerkequipment selbst den gesamten<br />

Datenverkehr analysiert, um aus ihm entsprechende<br />

Maßnahmen abzuleiten. So<br />

setzen totalitäre Systeme gerne auf DPI:<br />

Zwar können auch sie SSH-Verbindungen<br />

und SSL-Verschlüsselung nicht wirksam<br />

aufbrechen, doch lässt sich mit DPI bereits<br />

der Aufbau solcher Verbindungen


unterbinden. (Der Handshake des SSL-<br />

Verbindungsaufbau wird erkannt und<br />

unterbunden.) Der Nachteil: DPI setzt<br />

eine spezielle Netzwerkausstattung voraus,<br />

deren Anschaffung sich nicht für<br />

jedes Unternehmen lohnt. Ähnliches gilt<br />

für den mit DPI in Verbindung stehenden<br />

administrativen Aufwand.<br />

Eine Alternative zur Deep Packet Inspection<br />

per Netzwerkequipment stellt die<br />

„Stateful Packet Inspection“ dar, die sich<br />

üblicherweise mittels Software auf Standardhardware<br />

betreiben lässt. Anders<br />

als der Name vermuten lässt, kann SPI<br />

längst nicht nur mit Stateful-Verbindungen<br />

umgehen, beinahe alle Tools behandeln<br />

auch UDP-Verbindungen (nicht ganz<br />

korrekt) als „stateful“. SPI-Lösungen analysieren<br />

die gängigen Datenströme der<br />

üblichen Protokolle und bieten somit<br />

Funktionalität, die in den meisten Fällen<br />

für ausreichenden Schutz sorgt.<br />

Eine Frage der Ebene: NIDS<br />

Eigentlich kann der Admin das zwar auch<br />

manuell erledigen, indem er einfach den<br />

Output von Tools wie »tcpdump« nutzt,<br />

um den gesamten Traffic einzelner Interfaces<br />

auf dem Router unter die Lupe zu<br />

nehmen. Das aber ist mit viel Arbeit verbunden.<br />

Besser klappt es mit Software,<br />

die die Analyse von Verbindungsdaten<br />

automatisiert und so sehr viel leichter<br />

macht. Der bekannteste Vertreter dieser<br />

Art ist Snort [2], das „Network Intrusion<br />

Detection System“ (NIDS), das auch die<br />

Möglichkeit bietet, bei potenziellen Angriffen<br />

automatisch Gegenmaßnahmen<br />

einzuleiten (Network Intrusion Prevention<br />

System, NIPS).<br />

Grundsätzlich gilt: Je weiter unten im<br />

OSI-Layer-Modell die Untersuchung von<br />

Datenströmen ansetzt, desto effizienter<br />

funktioniert sie. Snort macht sich diese<br />

Eigenschaft zunutze und setzt auf Layer<br />

2 an: Die Empfehlung der Snort-Autoren<br />

zielt darauf ab, den Uplink-Port eines Firmengateway<br />

mittels Switch-Konfiguration<br />

auf einen zweiten Port zu spiegeln, an<br />

dem dann ein Server mit aktivem Snort<br />

seinen Dienst verrichtet.<br />

Snort kommt mit einer ganzen Menge<br />

vordefinierter Checks daher, die gerade<br />

im Netz aktive Datenströme für TCP- und<br />

UDP-Verbindungen mit bereits bekannten<br />

Angriffsmustern (Patterns) vergleichen.<br />

Finden sie dabei auffällige<br />

Übereinstimmungen,<br />

schlägt Snort<br />

Alarm. Als Werkzeug<br />

für die Protokollanalyse<br />

in Netzwerken<br />

blickt Snort auf eine<br />

lange Geschichte zurück,<br />

die Ursprünge<br />

des Projekts reichen<br />

bis 1998.<br />

DLP<br />

An Admins, die besonders<br />

viele Windows-<br />

Systeme betreuen,<br />

richtet sich die Open<br />

Data Loss Prevention<br />

Suite (Open DLP, [4],<br />

Abbildung 1), die aus<br />

zwei Komponenten<br />

besteht: Einem Perl-<br />

Webfrontend sowie<br />

einem Agent speziell für Windows-Systeme,<br />

der die ein- und abgehenden Verbindungen<br />

nicht nur übersichtlich darstellt,<br />

sondern bei Auffälligkeiten auch<br />

den Admin alarmiert.<br />

Die Idee ist, besonders die üblichen Verdächtigen<br />

– Viren, die Rechner zu Datentrögen<br />

oder Botnet-Zombies machen<br />

– schnell und effizient abzufangen. Wer<br />

viele Windows-Systeme betreut, sollte<br />

sich die Software anschauen, denn angenehmer<br />

lassen sich befallene Systeme auf<br />

Netzwerkebene kaum identifizieren.<br />

Gegen die Gewohnheit<br />

Zusätzlich zu den NIDS gibt es selbstverständlich<br />

auch Host-basierte IDS wie<br />

AIDE [5] und LIDS [6], die beispielsweise<br />

Rootkits erkennen helfen. Egal wofür<br />

sich der Admin entscheidet: Wichtig<br />

beim Einsatz von IDS ist ein Faktor, den<br />

viele allerdings gerne vergessen: die Gewohnheit.<br />

Die in diesem Artikel vorgestellten Werkzeuge<br />

erzeugen fast ausnahmslos ein<br />

eher hohes Grundrauschen. AIDE produziert<br />

beim Software-Update auf einem<br />

überwachten System üblicherweise diverse<br />

Warnungen, auch Snort sorgt für<br />

viel Traffic in der Mailbox.<br />

Das wird auf Dauer zum gefährlichen<br />

Problem: Wenn sich durch etwaige<br />

Abbildung 1: Open DLP sucht auf Windows-Hosts in ausgehenden Verbindungen<br />

nach bestimmten Patterns und zeigt Zusammenfassungen an.<br />

Events die False Positives häufen, stellt<br />

sich bei Admins nicht selten eine eher<br />

laxe Grundhaltung im Umgang mit solchen<br />

Meldungen ein.<br />

So wird der Mensch zur Schwachstelle:<br />

Das schönste IDS ist nichts wert, wenn<br />

die von ihm produzierten Warnungen<br />

ungehört bleiben. Wer ein IDS betreibt,<br />

darf das nicht vergessen. (mfe) n<br />

Infos<br />

[1] CNN: Programmierer „outsourct“ seinen<br />

eigenen Job nach China:<br />

[http:// edition. cnn. com/ 2013/ 01/ 17/​<br />

business/ us‐outsource‐job‐china]<br />

[2] Snort: [http:// www. snort. org]<br />

[3] Samhain:<br />

[http:// www. la‐samhna. de/ samhain/]<br />

[4] Open DLP:<br />

[http:// code. google. com/ p/ opendlp/]<br />

[5] AIDE: [http:// aide. sourceforge. net]<br />

[6] LIDS: [http:// www. lids. org]<br />

Der Autor<br />

Martin Gerhard Loschwitz<br />

arbeitet als Principal<br />

Consultant bei Hastexo.<br />

Er beschäftigt sich dort<br />

intensiv mit den Themen<br />

Hochverfügbar und Cloud<br />

Computing und pflegt in seiner Freizeit den <strong>Linux</strong>-<br />

Cluster-Stack für Debian GNU/​<strong>Linux</strong>.<br />

Netzwerkanalyse 08/2013<br />

Titelthema<br />

www.linux-magazin.de<br />

37


Titelthema<br />

www.linux-magazin.de SSH-Key-Management 08/2013<br />

38<br />

Automatisierte Schlüsselverifikation<br />

Schließanlage<br />

Eine zunehmende Zahl an Hosts und die Dynamisierung des Deployments machen eine sichere Host-<br />

Authentifizierung per SSH zur Herausforderung. Von mehreren Lösungsansätzen führt mitunter nur<br />

der älteste zum Ziel. Schlomo Schapiro, Marco Woitschitzky<br />

Tool »ssh‐keysign«, das nur dafür existiert<br />

und mit Hilfe von SUID-Permissions die<br />

nur »root« zugänglichen Hostschlüssel in<br />

»/etc/ssh« benutzt. Der Zielserver muss<br />

anschließend den Hostschlüssel vom<br />

Client-Rechner über die Dateien »/etc/<br />

ssh/ssh_known_hosts« oder »~/.ssh/<br />

known_hosts« bestätigen.<br />

Wie von Geisterhand<br />

© ellirra, 123RF.com<br />

Bei seiner Einführung in den 90er Jahren<br />

war SSH schlicht die richtige Lösung<br />

zur richtigen Zeit, denn es schützt im<br />

Gegensatz zu Telnet, Rlogin und RSH<br />

die Authentifizierung und Datenübertragung<br />

kryptographisch. Beim Verschlüsseln<br />

setzt SSH auf eine Public-Key-Authentifizierung.<br />

Indem es den geheimen<br />

Schlüssel eines Nutzers oder Systems<br />

mit seinem öffentlichen Gegenstück abgleicht,<br />

prüft es die Identität des Schlüsselbesitzers<br />

zweifelsfrei.<br />

Für die Benutzeranmeldung ist eine Public-Key-Authentifizierung<br />

zwar optional,<br />

empfiehlt sich aber gegenüber einer Passwortauthentifizierung,<br />

die bekanntlich<br />

nach einer Benutzerinteraktion verlangt.<br />

Das Public-Key-Verfahren gehört zu den<br />

seltenen Fällen, in denen zusätzliche Sicherheit<br />

mit einem Komfortgewinn einher<br />

geht: Dank des mitgelieferten »ssh‐agent«<br />

darf der Nutzer nach einmaligem Entsperren<br />

des Schlüsselbunds beliebig viele<br />

sichere Verbindungen ohne Passwortabfrage<br />

aufbauen.<br />

Host-basierte<br />

Authentifizierung<br />

Für die Host-basierte Authentifizierung<br />

verlässt sich SSH nicht nur auf den Hostnamen,<br />

sondern kann auch mit Hilfe der<br />

Hostschlüssel den Quellhost autorisieren.<br />

Dabei autorisiert sich der Client mit dem<br />

Hostschlüssel des lokalen SSH-Servers<br />

und nicht mit einem gewöhnlichen Benutzerschlüssel<br />

[1].<br />

Normalerweise lädt der SSH-Client einen<br />

SSH-Schlüssel aus dem Homeverzeichnis<br />

des Benutzers, beispielsweise<br />

»~/.ssh/id_dsa«, und autorisiert sich<br />

mit diesem beim Server. Bei der Host-basierten<br />

Authentifizierung verwendet der<br />

Client hingegen den privaten Schlüssel<br />

des SSH-Servers, der auf dem Clientrechner<br />

läuft. Der Zugriff erfolgt über das<br />

Die Authentifizierung per Schlüsselpaar<br />

klappt auch nicht-interaktiv, also ohne<br />

manuelle Eingriffe des Administrators.<br />

Das macht sie – zumindest in der Theorie<br />

– zur idealen Basis für eine automatisierte<br />

Kommunikation von Maschine zu<br />

Maschine (M2M). Nach bester Unix-Philosophie<br />

(„Ein Werkzeug pro Aufgabe“)<br />

verlassen sich dabei zahlreiche Tools auf<br />

die Infrastruktur von SSH. Kein Wunder<br />

also, dass die weit verbreitete SSH-Implementierung<br />

Open SSH dafür zahlreiche<br />

erweiterte Funktionen an Bord hat. Zu<br />

den bekannten Möglichkeiten zählen die<br />

Optionen, mit deren Hilfe SSH Daten tunnelt,<br />

Port- und X-Forwarding betreibt oder<br />

Daten verschlüsselt über SFTP und SCP<br />

überträgt. Doch es gibt auch eine Reihe<br />

weniger bekannter Optionen wie zum<br />

Beispiel »PermitRootLogin=forced‐commands‐only«,<br />

das nur eingeschränkte<br />

Root-Zugriffe erlaubt.<br />

Vertrauensfrage<br />

Aber wer oder was überprüft die Identität<br />

während der Verbindungsaufnahme und<br />

spricht damit das Vertrauen aus? In der<br />

Standardkonfiguration schaut SSH in den<br />

Dateien »/etc/ssh/ssh_known_hosts«<br />

und lokal unter »~/.ssh/known_hosts«<br />

nach, ob es den öffentlichen Schlüssel


des Ziel-Hosts kennt. Ist das nicht der<br />

Fall, bittet SSH den Benutzer, den Fingerabdruck<br />

zu überprüfen (Abbildung<br />

1). Vertraut er diesem, ergänzt SSH die<br />

»known_hosts«-Datei und baut weitere<br />

Verbindungen dann ohne erneute Nachfrage<br />

auf.<br />

Stimmt der tatsächliche nicht mit dem<br />

von SSH erwarteten Fingerabdruck überein<br />

– etwa wegen einer Neuinstallation<br />

des Servers – verweigert SSH den Verbindungsaufbau<br />

mit einem deutlichen<br />

Hinweis (Abbildung 2) und fordert vom<br />

Benutzer ein manuelles Eingreifen. Schon<br />

bei einer mittelgroßen Anzahl statischer<br />

Systeme stellt die gewissenhafte Überprüfung<br />

und Pflege der Fingerabdrücke eine<br />

Herausforderung dar.<br />

In skalierbaren, virtualisierten Umgebungen,<br />

in denen täglich Dutzende virtueller<br />

Systeme hinzukommen oder bei eigenverantwortlich<br />

arbeitenden Entwicklerteams<br />

mit Shellzugang verschärft sich<br />

das Problem. Gerade solche Umgebungen<br />

nutzen massive M2M-Kommunikation,<br />

weil sie von der Automatisierung leben.<br />

Jede Benutzerinteraktion multipliziert<br />

sich dort schnell ins Hundert- oder gar<br />

Tausendfache.<br />

Automatisierungstechnik,<br />

eine schwierige Disziplin<br />

Eine sichere und automatisierte<br />

Authentifizierung für eine dynamische<br />

Umgebung zu gewährleisten, erweist sich<br />

in der Praxis als erstaunlich aufwändig.<br />

Abbildung 1: Beim ersten Anmelden auf einem fremden SSH-Host muss der Nutzer dessen Fingerabdruck<br />

bestätigen, was bei automatischen Installationen einen Nachteil darstellt.<br />

Das geschickte Kombinieren der SSH-<br />

Optionen »StrictHostkeyChecking=no«,<br />

»UserKnownHostsFile=/dev/null« sowie<br />

»GlobalKnownHostsFile=/dev/null« vermeidet<br />

zwar Rückfragen und Benutzereingriffe<br />

jeder Art. Der Administrator<br />

verliert jedoch zugleich jeglichen Schutz<br />

vor Spoofing- und Man-in-the-Middle-<br />

Angriffen, selbst die eingebaute Verschlüsselung<br />

wird dadurch wertlos. Im<br />

Ergebnis liegt die Sicherheit also kaum<br />

über der von Telnet.<br />

Der von Open SSH vorgesehene Lösungsweg<br />

besteht darin, die Datei »/etc/ssh/<br />

ssh_known_hosts« zu verwenden. Die<br />

Manpage von SSH schreibt dazu: „Der<br />

Systemadministrator sollte diese Datei so<br />

pflegen, dass sie sämtliche öffentlichen<br />

Hostkeys aller Maschinen der Organisation<br />

enthält.“<br />

Die Verteilung dieser einzelnen Datei<br />

lässt sich in kleineren, statischen Umgebungen<br />

noch recht leicht bewerkstelligen;<br />

geeignete Werkzeuge wie Cfengine,<br />

Puppet oder Chef sind in diesem Umfeld<br />

meist ohnehin vorhanden. Mit zunehmender<br />

Größe der Umgebung stößt das<br />

Konstrukt jedoch schnell an seine Grenzen<br />

– Änderungen müssten im Minutentakt<br />

auf hunderten oder gar tausenden<br />

Maschinen landen.<br />

Lichtblick DNS<br />

Die dritte Idee besteht darin, private<br />

Schlüssel zu verteilen. Sie wirft mehr<br />

Fragen auf als sie Antworten geben kann.<br />

Wo soll das System die zu verteilenden<br />

geheimen Schlüssel anfertigen und aufbewahren?<br />

Wie kann man dieses System<br />

schützen, wie die geheimen Schlüssel<br />

sicher verteilen? Nicht ohne Grund lautet<br />

die Regel, dass geheime Schlüssel das<br />

System niemals verlassen sollen.<br />

Einen ersten Lichtblick stellt der 2006<br />

standardisierte [2] SSHFP Resource Record<br />

im Domain Name System (DNS) dar,<br />

wobei SSHFP schlicht für SSH Fingerprint<br />

steht. Zum Prüfen des digitalen Fingerabdrucks,<br />

wie ihn Abbildung 1 zeigt, zieht<br />

das System einen DNS-Eintrag wie etwa<br />

host.example.com. SSHFP 2 1 U<br />

123456789abcdef67890123456789abcdef67890<br />

als Zusatzquelle heran und spart so eine<br />

Rückfrage beim initialen Verbindungsaufbau.<br />

Die »2« hinter SSHFP symbolisiert<br />

den verwendeten Algorithmus (hier:<br />

SSH-Key-Management 08/2013<br />

Titelthema<br />

www.linux-magazin.de<br />

39<br />

Open-SSH-PKI<br />

Ein zusätzlicher Schlüssel dient als Certification<br />

Authority (CA). Er signiert die öffentlichen<br />

Schlüssel der Hosts oder User. Signiert SSH<br />

einen Schlüssel mit »ssh‐keysign ‐s« entsteht<br />

zusätzlich zum öffentlichen Schlüssel ein Zertifikat,<br />

das die Endung »‐cert.pub« trägt. Mit der<br />

»‐I« Option übergibt man eine Beschreibung<br />

und mit »‐n« die Namen der User oder Hosts,<br />

für die das Zertifikat gültig ist. Gültigkeit und<br />

Nutzbarkeit lassen sich dabei einschränken.<br />

Der Administrator kann viele Einstellungen der<br />

»authorized_keys«-Datei auch in das Schlüsselzertifikat<br />

hinein verlagern und so Missbrauch<br />

verhindern.<br />

Um den von der CA signierten Schlüsseln zu<br />

vertrauen, sollte der Admin diese in den Dateien<br />

»ssh_known_hosts«, »known_hosts«<br />

beziehungsweise »authorized_keys« als CA<br />

hinterlegen. In der »known_hosts«-Datei muss<br />

er zusätzlich eine Gültigkeit in Form von Hostname-Pattern<br />

eintragen:<br />

@cert‐authority *.myorg.de,*.lan ssh‐dss U<br />

AAAAB3NzaC1kc3[...]<br />

@revoked * ssh‐rsa AAAAB5W[...]<br />

Dem »authorized_keys«-Eintrag lassen sich<br />

noch weitere Einschränkungen mit auf den Weg<br />

geben:<br />

cert‐authority,no‐port‐forwarding ssh‐dss U<br />

AAAAB3NzaC1kc3[...]<br />

Global lassen sich über den<br />

»TrustedUserCAKeys«-Eintrag in der »sshd_<br />

config« auch die vertrauenswürdigen CAs<br />

(eventuell mit Einschränkungen) ergänzen. Der<br />

»RevokedKeys«-Eintrag gilt für gesperrte CAs.<br />

Den so signierten User-Zertifikaten vertraut<br />

der Server. Er erlaubt dem User die Anmeldung,<br />

falls das Zertifikat auf ihn ausgestellt ist.<br />

Ebenso sollte der Admin Hostzertifikate immer<br />

für konkrete Hosts ausstellen. Gestohlene Zertifikate<br />

würden sonst für jeden Host gelten.<br />

Für den SSH-Daemon muss der Systemverwalter<br />

jedes Zertifikat zusätzlich zu den Schlüsseln<br />

über einen »HostCertificate«-Eintrag in die<br />

Datei »sshd_config« eintragen. Der SSH-Client<br />

lädt automatisch die Zertifikate mit, wenn sie<br />

dem Namensschema entsprechend neben den<br />

Schlüsseldateien liegen, zum Beispiel »~/.ssh/<br />

id_dsa‐cert.pub« passend zu »~/.ssh/id_dsa«.<br />

Detailinformationen zu den Zertifikaten zeigt<br />

»ssh‐keygen ‐L« an.<br />

Unter [5] haben die Autoren dieses Artikels<br />

zur Demonstration eine automatische Testsuite<br />

für die Open-SSH-PKI veröffentlicht, mit der<br />

sich auch beliebige andere Open-SSH-Konfigurationsvarianten<br />

durchspielen lassen.


Titelthema<br />

www.linux-magazin.de SSH-Key-Management 08/2013<br />

40<br />

Abbildung 2: Erscheint ein neuer Fingerprint unter einer bekannten IP-Adresse, wird SSH misstrauisch und<br />

fordert die Benutzer auf, die Datei mit den bekannten Hosts anzupassen.<br />

DSS), die »1« für den Typ des Fingerabdrucks<br />

(SHA-1). Ist kein passender Eintrag<br />

im DNS vorhanden, verhält sich SSH<br />

wie gewohnt.<br />

Dieses Modell setzt voraus, dass im Rechenzentrum<br />

ein interner Nameserver<br />

existiert. Leider ist in der Praxis noch<br />

nicht vollständig klar, wie sich die Fingerprints<br />

automatisiert und sicher in<br />

das DNS eintragen lassen [3]. Schwerer<br />

wiegt aber, dass es ohne DNSSEC unmöglich<br />

ist, die Einträge abzufragen. Die<br />

wenigsten Rechenzentren dürften diese<br />

Voraussetzung für eine interne Namensauflösung<br />

bereits erfüllen.<br />

Flucht ins Öffentliche<br />

Den wohl fortschrittlichsten und sichersten<br />

Lösungsansatz verfolgt derzeit die<br />

zertifikatsbasierte Authentifizierung<br />

(siehe Kasten „Open-SSH-PKI“). Das<br />

Konzept der Public-Key-Infrastruktur<br />

(PKI) ist grundsätzlich von X.509 bekannt,<br />

Open SSH verwendet allerdings<br />

ein eigenes, recht minimalistisches Zertifikatsformat<br />

[4].<br />

Zusätzlich zu den privaten und öffentlichen<br />

Schlüsseln wird eine Certificate<br />

Authority (CA) eingeführt, die andere<br />

öffentliche Schlüssel mit dem eigenen<br />

beglaubigt. Vertraut ein Benutzer oder<br />

System nun einer CA, so überträgt sich<br />

dieses Vertrauen auf alle von ihr signierten<br />

Schlüssel. Der Verwaltungsaufwand<br />

beschränkt sich damit auf das Verteilen<br />

der CA-Schlüssel und das Signieren neuer<br />

Schlüssel.<br />

Für neu aufgesetzte Systeme muss der<br />

Admin ohnehin diverse Sicherheits-<br />

Tokens (beispielsweise SSL-Zertifikate,<br />

Kerberos-Keytab und so weiter) initiali‐<br />

sieren und kann in diesem Zuge auch die<br />

Open-SSH-Schlüssel signieren.<br />

Da sowohl der CA-Schlüssel als auch<br />

die zu signierenden Schlüssel öffentlich<br />

sind, bestehen keine gesonderten Sicherheitsanforderungen<br />

für den Transport. Zu<br />

beachten ist für den Admin allerdings,<br />

mindestens Open SSH in Version 5.6 einzusetzen.<br />

Frühere Versionen von Open<br />

SSH verwenden ein anderes Zertifikatsformat<br />

und unterstützen keine Zertifikate<br />

für die Host-Authentifizierung.<br />

Kerberos und RSH<br />

Für Benutzer von Enterprise-Distributionen<br />

ist dies ein Spielverderber: Während<br />

Debian Wheezy und Ubuntu 12.04 die<br />

Anforderung erfüllen, paketieren sowohl<br />

SLES 11 SP2 als auch RHEL 6.4 sowie<br />

weitere davon abgeleitete Distributionen<br />

ältere Open-SSH-Versionen.<br />

Bestehen beim Admin oder im Unternehmen<br />

Vorbehalte dagegen, neuere<br />

Versionen von Open SSH selbst zu paketieren,<br />

bietet sich RSH mit Kerberos als<br />

Alternative an, wenn zum Beispiel bereits<br />

eine Active-Directory-Umgebung mit Kerberos-Infrastruktur<br />

existiert. Gegenüber<br />

Open SSH mit Kerberos vermeidet es die<br />

»StrictHostkeyChecking«-Problematik,<br />

schützt aber dennoch vor Man-in-the-<br />

Middle-Angriffen. Zusätzliche Sicherheit<br />

bietet die Option »‐x« zur (Teil)-Verschlüsselung<br />

der Verbindung [6].<br />

Fazit<br />

RSH als Lösungsvorschlag mag überraschen,<br />

ist jedoch Rahmenbedingungen,<br />

Rechenzentren und Enterprise-<strong>Linux</strong>-<br />

Versionen geschuldet. In Verbindung mit<br />

Kerberos spielt es zum jetzigen Zeitpunkt<br />

die einfache Host-Authentifizierung als<br />

Vorteil aus. Grundsätzlich sind die Zeiten<br />

von RSH aber gezählt – den Oldtimer<br />

ohne Kerberos einzusetzen, davon lässt<br />

sich nur abraten.<br />

Für kleine, überwiegend statische, Umgebungen<br />

kann die Pflege von »/etc/ssh/<br />

ssh_known_hosts« eine akzeptable und<br />

weniger aufwändige Lösung sein. Sie<br />

skaliert eben nur schlecht. Es mag Zufall<br />

sein, dass die SSH-Manpage von nur<br />

einem Administrator in der Organisation<br />

spricht, es passt aber gut ins Bild.<br />

Im direkten Vergleich zur Pflege der<br />

»/etc/ssh/ssh_known_hosts« ist die zertifikatsbasierte<br />

Authentifizierung von<br />

Open SSH kaum aufwändiger zu implementieren,<br />

aber ohne Komfort- und<br />

Sicherheitsverzicht hervorragend zu automatisieren.<br />

Gerade in großen und dynamisch<br />

virtualisierten Umgebungen kann<br />

sie daher punkten, so denn Open SSH in<br />

der richtigen Version vorliegt. (kki) n<br />

Infos<br />

[1] Host-basierte Authentifizierung einrichten:<br />

[http:// www. rrze. uni‐erlangen. de/​<br />

dienste/ arbeiten‐rechnen/ linux/ howtos/​<br />

ssh‐konfigurieren. shtml]<br />

[2] RFC zu SSHFP Resource Records:<br />

[http:// tools. ietf. org/ html/ rfc4255]<br />

[3] Fingerprints für DNS sammeln:<br />

[http:// jpmens. net/ 2012/ 02/ 01/ on‐collectin<br />

g‐ssh‐host‐keys‐for‐sshfp‐dns‐records/]<br />

[4] CA für Open SSH:<br />

[http:// www. openssh. com/ txt/ release‐5. 6]<br />

[5] Open-SSH-PKI automatisiertes Demo<br />

und Testsuite: [https:// gist. github. com/​<br />

schlomo/ 5759825]<br />

[6] RSH mit Kerberos:<br />

[http:// web. mit. edu/ kerberos/ krb5‐1. 5/​<br />

krb5‐1. 5. 4/ doc/ krb5‐user/ rsh. html]<br />

Die Autoren<br />

Schlomo Schapiro [http:// go. schapiro. org/​<br />

schlomo] ist Systemarchitekt und Open-Source-<br />

Evangelist bei Immobilienscout24 [http:// www.​<br />

immobilienscout24. de] in Berlin. Er ist Autor von<br />

diversen Open-Source-Projekten und engagiert<br />

sich für ein agiles Mindset und Dev-Ops-orientierte<br />

Kultur in der IT.<br />

Marco Woitschitzky ist System Engineer bei<br />

Immobilienscout24 in Berlin. Dort entwickelt er<br />

wartungsarme Infrastrukturlösungen in einem<br />

agilen Team.


Shop the Shop<br />

shop.linuxnewmedia.com<br />

Your companion for a strange<br />

and wonderful adventure...<br />

You ordered your Raspberry Pi...<br />

You got it to boot...what now?<br />

The Raspberry Pi Handbook takes<br />

you through an inspiring collection of<br />

projects. Put your Pi to work as a:<br />

▪ media center<br />

▪ photo server<br />

▪ game server<br />

▪ hardware controller<br />

▪ and much more!<br />

Discover Raspberry Pi’s special tools<br />

for teaching kids about programming<br />

and electronics, and explore advanced<br />

techniques for controlling Arduino<br />

systems and coding GPIO interrupts.<br />

Watch your newsstands for<br />

the only Raspberry Pi reference<br />

you’ll ever need!<br />

Raspberry Pi on newsstands now or order online at:<br />

shop.linuxnewmedia.com/rpi


Titelthema<br />

www.linux-magazin.de Duplicity 08/2013<br />

42<br />

Verschlüsselte Cloudbackups mit Duplicity<br />

Datensafe<br />

Wer wertvolle Daten archiviert oder sichert, sollte sich eine Strategie zurechtlegen, die auch deren<br />

Sicherheit berücksichtigt. Die Backupsoftware Duplicity erlaubt das Archivieren verschlüsselter Daten<br />

auf unsicherem Terrain. Kristian Kißling<br />

wie Duply, Backupninja und Dupinanny,<br />

die den Umgang mit Duplicity vereinfachen<br />

wollen [2].<br />

Schlüsselfertig<br />

© Maksim Kabakou, 123RF.com<br />

Duplicity ist das Kommandozeilentool<br />

der Wahl, wenn es darum geht, Backups<br />

in potenziell unsicheren Umgebungen<br />

abzulegen, denn es verschlüsselt Daten<br />

standardmäßig. Chiffriert dürfen Backups<br />

zur Not auch Dritten in die Hände fallen<br />

und sie lassen sich sowohl auf FTP- und<br />

SSH-Servern als auch in den Cloudspeicher<br />

von Amazon (S3) oder Ubuntu (U1)<br />

lagern. Das bringt nicht nur zusätzlich<br />

Redundanz ins Backup, sondern macht<br />

es zugleich weltweit verfügbar.<br />

Duplicity erzeugt nach dem ersten Start<br />

ein vollständiges Backup und speichert<br />

spätere Veränderungen inkrementell in<br />

Form so genannter Volumes. Platzsparende<br />

Hardlinks verweisen dann auf jene<br />

Dateien, die bereits im Vollbackup stecken,<br />

während die inkrementellen Backups<br />

nur noch aus den veränderten Daten<br />

(Deltas) bestehen.<br />

Im Prinzip genügt es also, ein Vollbackup<br />

zu erstellen und von da an alle Änderungen<br />

nur noch inkrementell zu sichern.<br />

Doch davor warnen die Duplicity-Entwickler:<br />

Nicht nur kann ein Fehler in<br />

einem inkrementellen Teil womöglich die<br />

komplette Sicherung ruinieren [1], sondern<br />

das Wiederherstellen von Dateien<br />

nimmt auch recht viel Zeit in Anspruch,<br />

wenn sich die Software durch alle inkrementellen<br />

Backups wühlt.<br />

Für erklärte Mausschubser gibt es mit<br />

Déjà Dup übrigens eine grafische Oberfläche<br />

für Duplicity, die sich sehr einfach<br />

bedienen lässt und viele wesentliche<br />

Funktionen abbildet. Sie ist Teil von<br />

Gnome, steckt zum Beispiel in Distributionen<br />

wie Ubuntu und Fedora, lässt<br />

sich aber auf Systemen ohne grafische<br />

Oberfläche nicht einsetzen. Daneben gibt<br />

es noch zahlreiche Kommandozeilentools<br />

Verfügt der Admin noch nicht über einen<br />

eigenen GPG-Schlüssel oder möchte er<br />

für die Sicherung einen eigenen anlegen,<br />

erzeugt er ihn über »gpg ‐‐gen‐key«<br />

(Abbildung 1). Im Kommentar hinterlässt<br />

er – falls gewünscht – den Zweck des<br />

Schlüssels, die Passphrase benötigt er<br />

später beim Anlegen und Entschlüsseln<br />

eines chiffrierten Backups. Wer will, kann<br />

seine Archive zusätzlich signieren und<br />

dazu über »gpg ‐‐sign‐key Schlüssel‐ID«<br />

eine digitale Signatur erstellen.<br />

Die Passphrase schützt den Schlüssel,<br />

falls er in fremde Hände gerät. Ihn sollte<br />

der Admin ohnehin gut sichern, sonst<br />

kommt er später nicht mehr an seine<br />

Daten. Mitunter hilft es, den öffentlichen<br />

und den geheimen Schlüssel auf einem<br />

externen Medium zu sichern, etwa einem<br />

USB-Stick. Die Befehle »gpg ‐k« beziehungsweise<br />

»gpg ‐K« zeigen den öffentlichen<br />

respektive geheimen Key an. Über<br />

$ gpg ‐‐output /media/user/USB‐Stick/backupU<br />

key_pub.gpg ‐‐armor ‐‐export Schlüssel‐ID<br />

$ gpg ‐‐output /media/user/USB‐Stick/backupU<br />

key_sec.gpg ‐‐armor ‐‐export‐secret‐keys U<br />

Schlüssel‐ID<br />

lassen sich die beiden Schlüssel exportieren.<br />

Über »gpg ‐‐import« spielt der<br />

Schlüsselmeister die Keys auf einem anderen<br />

System wieder ein.<br />

Vier Ziele<br />

Das Skript aus Listing 2 erzeugt nun verschlüsselte<br />

Backups aller Homeverzeichnisse<br />

für vier verschiedene Ziele: ein lo-


kales Verzeichnis, einen SSH-Server (über<br />

das Paramiko-Backend), Ubuntu One sowie<br />

Amazons S3 (Abbildung 2).<br />

Hierbei gibt es einiges zu beachten. So<br />

erwartet Duplicity bei lokalen Backups<br />

absolute Pfade. Ist das Backupziel hingegen<br />

ein SSH-Server, folgt nach dem<br />

Hostnamen ein relativer Pfad zum Homeverzeichnis<br />

des angemeldeten Benutzers<br />

– in Listing 2 landet das Backup daher<br />

unter »/home/user/backup«.<br />

Sicher in die Wolken<br />

Wer Ubuntu One (U1) verwenden will,<br />

braucht für den Einsatz von Duplicity<br />

eine laufende X-Session, weil ein Fenster<br />

mit der Passwortabfrage erscheint.<br />

Insofern ist diese Option in erster Linie<br />

für Nutzer von Déjà Dup interessant.<br />

Für den in Duplicity angegebenen Pfad<br />

legt Ubuntu One relativ zum Homeverzeichnis<br />

des Nutzers einen Zielordner<br />

an. Wer Amazons S3-Cloudstorage verwendet<br />

(auch hier gibt es ein kostenloses<br />

Kontingent), erzeugt dort zunächst einen<br />

User, um die Zugangsdaten zu erhalten,<br />

und dann einen so genannten Bucket.<br />

Als Pfad verlangt Duplicity nach dem<br />

Namen des Bucket. Befindet er sich in<br />

Amazons europäischer Availability Zone<br />

(AZ), erwartet Duplicity zudem die Parameter<br />

»‐‐s3‐use‐new‐style« und »‐‐s3‐european‐buckets«.<br />

Wer den Backupmechanismus zunächst<br />

testen will, greift zu den Schaltern »‐v8«<br />

und »‐v9«, die Duplicity ausführlichere<br />

Infos entlocken. Wer für seine Sicherungen<br />

einen SSH-Server oder Ubuntu One<br />

verwendet, braucht zudem das Paket<br />

»python‐paramiko«, Nutzer von S3 installieren<br />

zusätzlich »python‐boto«.<br />

Die Passwörter übergibt der Admin im<br />

Listing 2 als Umgebungsvariablen, um<br />

sie nach dem Vorgang wieder zu löschen.<br />

FTP- und SSH-Passwörter erwartet Duplicity<br />

in der Variablen »FTP_PASSWORD«.<br />

Wer eine unverschlüsselte Sicherung<br />

bevorzugt, verwendet den Parameter<br />

»‐‐no‐encryption«.<br />

Feintuning<br />

Will der Admin nicht alle Homeverzeichnisse<br />

(Listing 2) sichern, muss er Dateien<br />

vom Backup ausnehmen. Die Parameter<br />

»‐‐include=${QUELLE}/karl«,<br />

»‐‐include=${QUELLE}/lenny« sowie<br />

»‐‐exclude='**'« sorgen dafür, dass<br />

nur die Homeverzeichnisse »karl« und<br />

»lenny« im Backup landen.<br />

Duplicity speichert Dateien zudem in<br />

Form von Volumes ab, die standardmäßig<br />

etwa 26 MByte groß sind. Sichert der<br />

Admin Daten im GByte-Bereich, entsteht<br />

hier schnell eine stattliche Dateisammlung.<br />

Es lohnt sich eventuell, die Volumes<br />

über »‐‐volsize 250« etwa auf 250 MByte<br />

Listing 1: Cronjob für Duplicity<br />

01 2 * * * /Pfad/zum/Backup‐Skript >> /Pfad/zur/Logdatei<br />

Duplicity 08/2013<br />

Titelthema<br />

www.linux-magazin.de<br />

43<br />

Listing 2: »backup.sh«<br />

01 #!/bin/bash<br />

02 # Passphrase für den GPG‐Key<br />

03 export PASSPHRASE=Passphrase<br />

04 <br />

05 # Schlüssel‐ID des GPG‐Key<br />

06 export GPG_KEY=Schlüssel‐ID<br />

07 <br />

08 # Amazons Zugangsdaten<br />

09 export AWS_ACCESS_KEY_ID=Schlüssel‐ID<br />

10 export AWS_SECRET_ACCESS_KEY=Geheimer<br />

Schlüssel<br />

11 <br />

12 # Backup‐Quelle<br />

13 QUELLE=/home<br />

14 <br />

15 # Backup‐Ziele<br />

16 # Lokales Backup<br />

17 LOKAL_BACKUP=file:///home/user/backup<br />

18 # Backup über SSH<br />

19 SSH_BACKUP=sftp://user@remote/backup<br />

20 # Backup in Ubuntu One<br />

21 UBUNTU_ONE=u1+http://Zielordner<br />

22 # Amazon S3<br />

23 AMAZON_S3=s3+http://Bucket‐Name<br />

24 <br />

25 # Duplicity‐Kommandos<br />

26 # Lokal<br />

27 duplicity ‐‐encrypt‐key ${GPG_KEY} ${QUELLE}<br />

${LOKAL_BACKUP}<br />

28 # SSH<br />

29 export FTP_PASSWORD=SSH‐Passwort<br />

30 duplicity ‐‐encrypt‐key ${GPG_KEY} ${QUELLE}<br />

${SSH_BACKUP}<br />

31 unset FTP_PASSWORD<br />

32 # Ubuntu One<br />

33 duplicity ‐‐encrypt‐key ${GPG_KEY} ${QUELLE}<br />

${UBUNTU_ONE}<br />

34 # Amazon S3<br />

35 duplicity ‐‐encrypt‐key ${GPG_KEY}<br />

‐‐s3‐use‐new‐style ‐‐s3‐european‐buckets<br />

${QUELLE} ${AMAZON_S3}<br />

36 <br />

37 # Passwörter zurücksetzen<br />

38 unset AWS_ACCESS_KEY_ID<br />

39 unset AWS_SECRET_ACCESS_KEY<br />

40 unset PASSPHRASE<br />

Mit dem CANDAN Homepage­Baukasten<br />

Buchbar schon ab 1.50 € monatlich!<br />

Weitere Webspace­Angebote CMS­Systeme Shop­Systeme SSL­Certs Hosted Exchange Spezial­Angebote u.v.m. auf www.candan.eu


Titelthema<br />

www.linux-magazin.de Duplicity 08/2013<br />

44<br />

zu vergrößern. Die Option ist aber mit<br />

Vorsicht zu genießen, weil sie den Arbeitsspeicher<br />

arg strapaziert.<br />

Check it out<br />

Im nächsten Schritt prüft Duplicity, ob<br />

die Signaturen der gesicherten Dateien<br />

noch mit denen der Originale übereinstimmen.<br />

Trifft das nicht zu, gibt die Software<br />

eine Fehlermeldung aus. Die lässt<br />

sich per Skript auswerten, wobei »‐v« die<br />

Gesprächigkeit von »verify« erhöht:<br />

$ duplicity verify ‐v4 ‐‐s3‐use‐new‐style U<br />

‐‐s3‐european‐buckets ‐‐encrypt‐key U<br />

${GPG_KEY} ${AMAZON_S3} ${QUELLE}<br />

Dass der Duplicity-Nutzer hier kein GPG-<br />

Passwort eingeben muss, liegt daran, dass<br />

die Software es sich meist aus ».cache/<br />

duplicity« holt. Den Report kann sich<br />

der Admin in eine Datei schreiben lassen<br />

(»‐‐log‐file«), die im Falle einer Unregelmäßigkeit<br />

per E-Mail oder Sync-Software<br />

bei ihm landet. So ist der Backup-Ersteller<br />

stets informiert, falls eine Sicherung<br />

misslingt, und kann gegensteuern.<br />

Bei dieser Gelegenheit sollte er auch einen<br />

Gedanken darauf verwenden, eine<br />

Routine einzurichten, die den freien und/<br />

oder den belegten Speicherplatz auf dem<br />

externen Storage regelmäßig kontrolliert<br />

und Engpässe meldet.<br />

Will der Admin eine bestimmte Datei<br />

wieder aus dem Backup holen, lässt er<br />

sich zunächst alle Dateien aus der letzten<br />

Sicherung anzeigen:<br />

$ duplicity list‐current‐files U<br />

‐‐s3‐use‐new‐style ‐‐s3‐european‐buckets U<br />

‐‐encrypt‐key ${GPG_KEY} {AMAZON_S3}<br />

Soll die Liste den Zustand zu einem bestimmten<br />

Zeitpunkt widerspiegeln, hilft<br />

der Parameter »‐‐time«, der die Zeitangabe<br />

im Datetime-Format [3] entgegennimmt<br />

(etwa 1997‐07‐16T19:20:30+01:00) oder<br />

als YYYY/MM/DD.<br />

Dieser Parameter kommt auch beim Wiederherstellen<br />

von Dateien zum Tragen:<br />

$ duplicity ‐‐time 2013/06/08 U<br />

‐‐s3‐use‐new‐style ‐‐s3‐european‐buckets U<br />

‐‐file‐to‐restore Pfad/zur/Quelldatei U<br />

${AMAZON_S3} Pfad/zu/Zielordner/Quelldatei<br />

Wichtig ist, dass die »‐‐time«-Angabe vor<br />

dem Restore-Befehl steht. Neben dem<br />

Wiederherstellungsordner darf auch der<br />

Name der Quelldatei nicht fehlen, die<br />

erste Pfadangabe verweist auf die Quelldatei<br />

in Amazons Bucket.<br />

Backupzyklen<br />

Abbildung 2: Wer in Amazons Cloudstorage S3 ein<br />

Bucket anlegt, kann dort mit Duplicity verschlüsselte<br />

Backups lagern.<br />

Weil Vollbackups viel Platz in Anspruch<br />

nehmen, sollte der Sicherungsbeauftragte<br />

im Vorfeld überlegen, wie häufig er Komplettsicherungen<br />

wünscht. Das hängt unter<br />

anderem davon ab, wie oft sich die<br />

Daten seiner User ändern und wie viel<br />

Speicherplatz bereitsteht.<br />

Die Option »‐‐full‐if‐older‐than 1M« lässt<br />

Duplicity Vollbackups erzeugen, falls die<br />

letzte Komplettsicherung schon mehr als<br />

einen Monat zurückliegt. Das erspart es<br />

dem Admin, umständliche Skripte zu<br />

schrei ben oder mehrere Cronjobs anzulegen,<br />

um zwischen vollen und inkrementellen<br />

Backups zu wechseln.<br />

Für die automatische Sicherung lassen<br />

sich die Befehle aus Listing 2 sowie eine<br />

Verifizierungsroutine in ein Skript einbauen,<br />

das ein Cronjob regelmäßig ausführt<br />

– in Listing 1 beispielsweise jede<br />

Nacht um 2 Uhr. Läuft der Backuprechner<br />

nicht permanent, greift der Admin zu<br />

Anacron, das Backups notfalls nachholt,<br />

wenn der Rechner zum geplanten Zeitpunkt<br />

nicht auf dem Posten war.<br />

Um alte Backups ohne manuelle Eingriffe<br />

zu löschen, passt der Admin Listing 2<br />

einfach an. Der Befehl<br />

$ duplicity ‐‐s3‐use‐new‐style ‐‐s3‐euroU<br />

pean‐buckets ‐‐encrypt‐key ${GPG_KEY} U<br />

remove‐older‐than 6M ‐‐force ${AMAZON_S3}<br />

löscht automatisch solche Backups aus<br />

dem S3-Speicher von Amazon, die älter<br />

als sechs Monate sind.<br />

n<br />

Abbildung 1: Ein Schlüssel für das Backup lässt sich mit »gpg ‐‐gen‐key« recht schnell und einfach erzeugen.<br />

Infos<br />

[1] Inkrementelle Backups vs. Vollbackups:<br />

[http:// lists. gnu. org/ archive/ html/​<br />

duplicity‐talk/ 2013‐04/ msg00041. html]<br />

[2] Duplicity-Frontends: [http:// duply. net]<br />

[3] Datetime nach W3C:<br />

[http:// www. w3. org/ TR/ NOTE‐datetime]


In eigener Sache: DELUG-DVD<br />

Uberstudent, Mint, Hacks<br />

Einführung 08/2013 12/2010<br />

Software<br />

Auch diesen Monat bekommen DELUG-Käufer wieder eine randvolle DVD mit exklusiven Inhalten: Sie bootet<br />

das brandneue Akademiker-Ubuntu Uberstudent, dazu gibt’s <strong>Linux</strong> Mint 15, drei Firefox-OS-VMs, gratis ein<br />

E-Book über Netzwerkhacks und vier Vortragsvideos von der OSMC in Bozen. Markus Feilner<br />

www.linux-magazin.de<br />

45<br />

Inhalt<br />

46 Tooltipps<br />

Sleepuntil 1.0, Ether Ape 0.9.13, Codecrypt<br />

2013-05-24, Ashd 0.12, HTTP Tunnel<br />

1.4.0 und Jailkit 2.16<br />

48 Bitparade<br />

Chrome, Firefox, Konqueror und Epiphany:<br />

Wer ist der Beste in Sachen<br />

Anonymität?<br />

54 Bittorrent Sync<br />

Das Bittorrent-P2P-Netz ist unter Filesharern<br />

beliebt, weil es die Last verteilt.<br />

Admins können das jetzt auch zur Datensynchronisation<br />

nutzen.<br />

Neben einem normalen <strong>Linux</strong>-<strong>Magazin</strong><br />

ohne Datenträger gibt es die DELUG-Ausgabe<br />

mit Monats-DVD, bei der die Redaktion<br />

den Datenträger nach einem speziellen<br />

Konzept zusammenstellt: In einer Art<br />

modularem System enthält er Programme<br />

und Tools, die in der jeweiligen <strong>Magazin</strong>-Ausgabe<br />

getestet und besprochen<br />

Abbildung 2: Kostenlos auf der DELUG-DVD:<br />

Netzwerksicherheit-Hacks von O’Reilly.<br />

werden. Zudem führt<br />

eine HTML-Oberfläche<br />

durch von der Redaktion<br />

besonders empfohlene<br />

Software.<br />

Uberstudent,<br />

Mint 15<br />

Die Ubuntu-basierte<br />

Distribution Uberstudent<br />

(Abbildung 1)<br />

richtet sich in erster<br />

Linie an Akademiker<br />

und solche, die es<br />

werden wollen. Mit<br />

Hilfe zahlreicher wissenschaftlicher<br />

Programme<br />

erleichtert sie<br />

sowohl das Lehren als<br />

auch Lernen komplizierter Zusammenhänge.<br />

Daneben bietet das System eine<br />

breite Palette an Programmen für den<br />

täglichen Gebrauch. Wer die Distribution<br />

nutzen möchte, bootet seinen Rechner<br />

von der DELUG-DVD.<br />

Ebenfalls auf der DVD, allerdings als<br />

ISO-Image, steht die Distribution <strong>Linux</strong><br />

Mint 15, Codename Olivia, bereit. Sie ist<br />

ausgestattet mit dem Kernel 3.8 und dem<br />

Paketbestand von Ubuntu 13.04, aber natürlich<br />

ohne Unity-, dafür mit Cinnamon-<br />

Desktop.<br />

Netzwerkhacks<br />

Mit fortgeschrittenen Hacks für Unixund<br />

Windows-Server beschäftigt sich<br />

das kostenlose E-Book (Abbildung 2).<br />

Einen seiner Schwerpunkte legt der Autor<br />

Andrew Lockhart auf das Absichern von<br />

TCP/​IP-basierten Diensten, daneben erläutert<br />

er eine ganze Reihe Host- basierter<br />

Sicherheitstechniken. Außerdem liefert<br />

Abbildung 1: Wissenschaft für <strong>Linux</strong>-Einsteiger mit der Uberstudent-<br />

Distribution: DELUG-Leser booten sie einfach von der DVD.<br />

das Buch schnelle Lösungen für reale<br />

Sicherheitsprobleme sowie Beispiele für<br />

Systemhärtung, Verschlüsselung, Intrusion<br />

Detection, sicheres Tunneling, Logging<br />

und Monitoring, Incident Response,<br />

Firewalling, Sicherheit in WLANs und die<br />

Sicherung der Privatsphäre. Das E-Book<br />

umfasst über 500 Seiten und kostet aktuell<br />

bei O’Reilly 32 Euro.<br />

Firefox-VM, Videos, Tools<br />

Damit nicht genug: Im HTML-Menü auf<br />

der DVD finden sich noch viele weitere<br />

exklusive Einträge, zum Beispiel die<br />

Firefox-OS-VMs als Browser-Plugins –<br />

passend zum Artikel in der Hardware-Rubrik<br />

–, dazu die Software zu den Dockerund<br />

Duplicity-Artikeln und wie immer<br />

alle Werkzeuge aus den Tooltipps. Nach<br />

all der Software lässt es sich lehrreich<br />

entspannen mit den Videos von der Open<br />

Source System Management Conference<br />

2013 in Bozen. n


Software<br />

www.linux-magazin.de Tooltipps 08/2013<br />

46<br />

Werkzeuge im Kurztest<br />

Tooltipps<br />

Sleepuntil 1.0<br />

Sleep und At in Kombination<br />

Quelle: [http:// tamentis. com/ projects/​<br />

sleepuntil]<br />

Lizenz: BSD<br />

Alternativen: Sleep, At<br />

Etherape 0.9.13<br />

Grafischer Netzwerkmonitor<br />

Quelle: [http:// etherape. sourceforge. net]<br />

Lizenz: GPLv2<br />

Alternativen: Sysstat, Uperf<br />

Codecrypt 2013-05-24<br />

Verschlüsseln und Signieren<br />

Quelle: [https:// github. com/ exaexa/​<br />

codecrypt]<br />

Lizenz: GPLv3<br />

Alternativen: Gnu PG, PGP<br />

Das Programm Sleep fügt in Skripte oder<br />

Befehlsfolgen Pausen ein und wartet eine<br />

bestimmte Anzahl an Sekunden, Minuten,<br />

Stunden oder auch Tage, bis das<br />

nächste Kommando startet. At hingegen<br />

stellt Jobs in eine Warteschlange und<br />

führt sie zu einem vom Anwender definierten<br />

Zeitpunkt aus. Das Tool akzeptiert<br />

Angaben der Form HH:MM, optional mit<br />

den Zusätzen »am« oder »pm«, »now«,<br />

»today«, »tomorrow«, »now + 10min«<br />

und so weiter. Wer sich eine solche Syntax<br />

für Sleep wünscht, der sollte sich das<br />

Tool Sleepuntil anschauen.<br />

Genau wie bei At macht der Benutzer<br />

hier eine konkrete Angabe, wann die<br />

Pause endet. So darf er beispielsweise<br />

die genaue Uhrzeit anordnen (»sleepuntil<br />

17:53«), ein Datum (»sleepuntil 17:53<br />

May 27«) oder einen Wochentag (»sleepuntil<br />

19:00 Monday«) hinzufügen. Auch<br />

die At-Aliasse »tomorrow«, »next week«,<br />

»midnight«, »noon« und »teatime« versteht<br />

das Tool. Für weitere Erklärungen<br />

zum Zeitformat und Beispiele verweist<br />

der Entwickler auf die At-Manpage.<br />

★★★★★ Sleepuntil ist eine interessante<br />

Alternative zu Sleep, insbesondere wenn<br />

Nutzer sicherstellen möchten, dass ein<br />

Job immer zum selben Zeitpunkt startet<br />

oder weiterläuft. Die At-Syntax erleichtert<br />

es, ganz präzise das Ende einer Pause zu<br />

bestimmen.<br />

n<br />

Die meisten Netzwerkverkehr-Analysetools<br />

werfen auf der Konsole mit nackten<br />

Zahlen um sich. Nicht so das Programm<br />

Etherape, das Verbindungen zwischen<br />

den einzelnen Knoten live und in Farbe<br />

als Graphen darstellt. Um die Datenerhebung<br />

kümmert sich Libpcap.<br />

In der Konfiguration legen Anwender fest,<br />

ob Etherape nur den eingehenden oder<br />

nur den ausgehenden Traffic oder beide<br />

Richtungen berücksichtigt. Die Stärke der<br />

Verbindungslinie repräsentiert das Datenvolumen,<br />

die unterschiedlichen Farben<br />

geben Rückschlüsse auf das Protokoll.<br />

Eine Legende am linken Rand zeigt die<br />

Farbzuordnung, Anwender dürfen sie<br />

nach ihrem Geschmack neu gestalten.<br />

Ebenso können sie die Länge der Aktualisierungsintervalle<br />

einstellen.<br />

Etherape blendet auf Wunsch zwei tabellarische<br />

Übersichten ein. Sie unterteilen<br />

das Volumen des Datenverkehrs<br />

nach Protokollen und nach Rechnern.<br />

So ist auf einen Blick klar, mit welchem<br />

Rechner der eigene auf welche Weise am<br />

meisten kommuniziert.<br />

★★★★★ Der Netzwerkmonitor zeigt<br />

übersichtlich den aktuellen Datendurchsatz<br />

und alle Netzwerkverbindungen<br />

eines Systems an. Die Graphenansicht<br />

macht auch in Auswertungen und Analysen<br />

eine gute Figur.<br />

n<br />

Das Kryptographietool Codecrypt will<br />

eine Verschlüsselungsmethode bereitstellen,<br />

die auch mit steigender Rechenleistung<br />

nicht ohne Weiteres zu knacken ist.<br />

Dazu nutzt es das McEliece-Kryptosystem<br />

und Merkle-Signaturen; die Verfahren<br />

gelten als resistent gegen Angriffe durch<br />

Quantencomputer.<br />

Genau wie Gnu PG und PGP verwenden<br />

Nutzer das Programm auf der Shell.<br />

Viele der Optionen haben die gleiche<br />

Funktion wie bei »gpg«, etwa »‐e« zum<br />

Verschlüsseln oder »‐k« zum Anzeigen<br />

des Schlüsselrings. Um etwas mit »ccr«<br />

zu verschlüsseln, erstellen Anwender zunächst<br />

ein Schlüsselpaar. Dazu rufen sie<br />

das Tool zusammen mit dem Parameter<br />

»‐g« gefolgt vom gewünschten Algorithmus<br />

auf; »ccr ‐g help« gibt die verfügbaren<br />

Algorithmen aus.<br />

Den Public Key geben Nutzer genau wie<br />

bei Gnu PG weiter. Codecrypt bietet zudem<br />

Funktionen, um Keys zu im- und<br />

exportieren, aus dem Schlüsselring zu<br />

löschen oder umzubenennen. Die Projektwebseite<br />

zeigt eine Reihe von Beispielen,<br />

die den Einsatz verdeutlichen. Eine<br />

Manpage sucht man indes vergebens.<br />

★★★★★ Codecrypt ist eine interessante<br />

Alternative zu den etablierten Verschlüsselungslösungen.<br />

Dank der Ähnlichkeit<br />

zu Gnu PG ist der Lernaufwand für Einsteiger<br />

minimal.<br />

n


Ashd 0.12<br />

Modularer Webserver<br />

Quelle: [http:// www. dolda2000. com/​<br />

~fredrik/ ashd]<br />

Lizenz: GPLv3<br />

Alternativen: Lighttpd, Ngnix<br />

HTTP Tunnel 1.4.0<br />

TCP-Daten per HTTP tunneln<br />

Quelle: [http:// the‐linux‐academy. co. uk/​<br />

downloads. htm]<br />

Lizenz: GPLv2<br />

Alternativen: Sslh, Webtunnel<br />

Jailkit 2.16<br />

Benutzer und Dienste einsperren<br />

Quelle: [http:// olivier. sessink. nl/ jailkit]<br />

Lizenz: GPLv2 und BSD<br />

Alternativen: Chroot<br />

Tooltipps 08/2013<br />

Software<br />

www.linux-magazin.de<br />

47<br />

Die meisten großen Webserver haben<br />

eins gemeinsam: ihre monolithische Softwarestruktur.<br />

Ashd verfolgt einen anderen<br />

Ansatz, er besteht aus sechs Programmen,<br />

die Hand in Hand greifen und untereinander<br />

kommunizieren. Dies erlaubt<br />

eine übersichtliche Konfiguration, erhöht<br />

die Sicherheit und die Performance. So<br />

kann etwa jede einzelne Komponente mit<br />

unterschiedlichen Benutzerrechten ausgestattet<br />

sein. Hat eines der Werkzeuge<br />

ein Problem oder quittiert den Dienst,<br />

sind die anderen nicht betroffen und arbeiten<br />

weiter.<br />

Der Ashd-Hauptprozess nimmt die Anfragen<br />

aus dem Netz entgegen und verteilt<br />

sie an die anderen Tools. Eine »htparser«-<br />

Konfigurationsdatei gibt es nicht. Benutzer<br />

steuern ihn über Aufrufparameter und<br />

legen damit unter anderem die Zugriffsrechte<br />

und den Port für eingehende Anfragen<br />

fest. Wer HTTPS nutzen möchte,<br />

der gibt zusätzlich die Schlüsseldateien<br />

beim Start an.<br />

Die Komponenten »dirplex«, »patplex«<br />

und »userplex« bearbeiten die Anfragen<br />

und liefern Daten zurück. Mit »userplex«<br />

implementieren Anwender Benutzerverzeichnisse,<br />

wie sie auch bei Apache<br />

vorkommen. »dirplex« handhabt die<br />

Zuordnung von URLs zu Verzeichnissen<br />

oder Dateien auf der Festplatte, der<br />

Schwerpunkt von »patplex« liegt auf der<br />

Mustererkennung, womit Ashd auch mit<br />

virtuellen Verzeichnissen oder Domains<br />

umgehen kann.<br />

★★★★★ Ashd macht nicht nur auf Systemen<br />

mit begrenzten Ressourcen eine<br />

gute Figur. Anwender können die einzelnen<br />

Programme und Komponenten<br />

gezielt konfigurieren und einsetzen. n<br />

Wenn der WLAN-Betreiber nur HTTP-<br />

Verbindungen zulässt und der SSH-Zugriff<br />

auf entfernte Rechner damit ausfällt,<br />

schafft HTTP Tunnel Abhilfe. Der Client<br />

kapselt den TCP-Datenverkehr in HTTP-<br />

Pakete und schleust ihn so durch restriktive<br />

Firewalls. Im Internet nimmt ein<br />

Server die Pakete in Empfang, schält sie<br />

aus dem HTTP-Code heraus und reicht<br />

sie ans eigentliche Ziel weiter.<br />

Das Konsolentool »httptunnel« enthält die<br />

Client- und die Serverkomponente. Über<br />

die Konfigurationsdatei legt der Anwender<br />

fest, welche Aufgabe das Werkzeug<br />

wahrnimmt. Der globale Bereich dieser<br />

Datei definiert Debugging-Anweisungen<br />

und den Speicherplatz der PID-Datei.<br />

Arbeitet das Werkzeug als Client, folgen<br />

Angaben zum Zielserver und ‐port,<br />

Proxy server und zur Authentifizierung.<br />

Hier aktivieren Nutzer bei Bedarf auch<br />

die SSL-Verschlüsselung.<br />

Für einen HTTP-Tunnel-Server listet die<br />

Konfiguration auf, an welchem Port er<br />

Verbindungen erwartet und welche IP-<br />

Versionen er unterstützt. Wer den Kreis<br />

der Nutzer einschränken will, hinterlegt<br />

hier Zugangsdaten. Zudem besteht die<br />

Möglichkeit, Bandbreite und Anzahl der<br />

getunnelten Verbindungen pro Nutzer<br />

zu limitieren und die Verbindung zu bestimmten<br />

Systemen zu begrenzen.<br />

Während der Client für Unix- und Windows-Betriebssysteme<br />

zur Verfügung<br />

steht, arbeitet der HTTP-Tunnel-Server<br />

ausschließlich unter Unix. Der Anwender<br />

muss somit einen <strong>Linux</strong>-Rechner oder<br />

Ähnliches im Netz betreiben.<br />

★★★★★ HTTP Tunnel schleust Daten<br />

zuverlässig per HTTP durchs Netz und<br />

hilft damit allen, die hinter einer restriktiven<br />

Firewall sitzen.<br />

n<br />

Die Jailkit-Toolsammlung unterstützt<br />

Anwender dabei, Benutzer und Prozesse<br />

voneinander abzuschotten und in ihren<br />

eigenen Bereich des Dateisystems einzusperren.<br />

Dabei setzen die Entwickler im<br />

Hintergrund auf die altbewährte Chroot-<br />

Technik. Insgesamt 11 Werkzeuge umfasst<br />

die Sammlung; die meisten davon<br />

sind in Python implementiert.<br />

Sofern noch nicht vorhanden, erstellt<br />

der Admin zunächst ein Verzeichnis,<br />

in das Chroot die Benutzer einsperrt.<br />

Mit dem Kommando »jk_init« legt er in<br />

diesem Verzeichnis nun die einzelnen<br />

Umgebungen an. Das Tool erzeugt die<br />

benötigte Ordnerstruktur und kopiert alle<br />

erforderlichen Programme dorthin. Die<br />

»jk_init«-Konfigurationsdatei enthält bereits<br />

Anweisungen für SFTP, Rsync, Mc,<br />

Open VPN und Apache, die Anwendern<br />

als Beispiele für eigene Setups dienen.<br />

Ist die Umgebung fertig eingerichtet, legt<br />

»jk_addjailuser« einen Account an, der<br />

hier eingesperrt ist.<br />

Damit Programme in der Chroot-Umgebung<br />

Status- und Fehlermeldungen an<br />

Syslog weiterreichen können, muss der<br />

»jk_socketd« laufen. Eine Übersicht über<br />

alle Prozesse des Jail liefert »jk_list«. Wer<br />

die Konfiguration auf mögliche Sicherheitsmängel<br />

hin testen möchte, der setzt<br />

»jk_check« ein. »jk_update« aktualisiert<br />

Programme einer Umgebung nach einem<br />

Systemupdate und »jk_chrootlaunch«<br />

startet Dienste, die von Haus aus kein<br />

Chroot unterstützen.<br />

★★★★★ Jailkit erleichtert das Aufsetzen<br />

und Verwalten von Chroot-Umgebungen.<br />

Konfigurationsbeispiele und eine umfassende<br />

Beschreibung aller Tools finden<br />

Nutzer auf der Projektseite und in den<br />

Manpages. (U. Vollbracht/​hej) n


Software<br />

www.linux-magazin.de Bitparade 08/2013<br />

48<br />

Browser-Anonymisierungsfunktionen im Vergleich<br />

Keine Auskunft<br />

Alle großen Webbrowser beteuern, ihre Benutzer auch vor Datenkraken und der Werbe-Industrie zu schützen.<br />

Versprechen und Realität klaffen jedoch mitunter recht weit auseinander, wie diese Bitparade zeigt. Tim Schürmann<br />

© Yuri Arcurs, Fotolia<br />

Webbrowser sind in der Regel recht auskunftsfreudig.<br />

Einer aufgerufenen Webseite<br />

teilen sie unter anderem mit, wie<br />

sie heißen und welche Site ihr Nutzer zuletzt<br />

besucht hat. Außerdem hinterlegen<br />

Webanwendungen Cookies und holen<br />

mittels Javascript weitere Informationen<br />

über das System ein – der Surfer wird<br />

transparent. Auf dem Prüfstand dieser<br />

Bitparade stehen daher die Anonymisierungsfunktionen<br />

der Browser Chrome [1],<br />

Epiphany [2], Firefox [3] und Konqueror<br />

[4]. Opera [5] blieb außen vor, weil er<br />

sich zum Testzeitpunkt in einer Umbruchphase<br />

befand (siehe Kasten „Opera und<br />

Opera Next“).<br />

Die Kandidaten sollten zeigen, ob sie<br />

Cookies löschen oder sie nur an die Seiten<br />

zurückgeben, von denen sie stammen.<br />

Auch der im Rahmen von HTML<br />

5 eingeführte Webstorage<br />

[6] kommt immer mehr<br />

in Mode: Sichere Browser<br />

müssen ihn löschen können.<br />

Auch sollten sie anbieten<br />

Javascript, Webfonts,<br />

den Zugriff auf das<br />

Geolocation-API [7] zum<br />

Abfragen der Standorte<br />

sowie Java und Flash zu<br />

deaktivieren.<br />

Auch wenn die meisten<br />

Seiten sie ignorieren,<br />

sollten Browser Do-nottrack-Information<br />

senden.<br />

Nützlich ist zudem<br />

eine eingebaute Blockade<br />

von Werbebannern und<br />

Popups. Das Übermitteln<br />

des Referrers und der<br />

Browserkennung muss<br />

abschaltbar sein und<br />

beim Beenden sollten die<br />

Programme alle beim Surfen<br />

angefallenen Daten löschen (Cookies,<br />

Chronik und so weiter).<br />

Auf dem Testrechner lief Open Suse 12.3<br />

(64 Bit). Die Tester beschränkten sich auf<br />

die über die Menüs zugänglichen Einstellungen<br />

und Funktionen.<br />

E Chrome<br />

Der Webbrowser der Google Inc. ist seit<br />

September 2008 verfügbar. Unter dem<br />

Opera und Opera Next<br />

Die noch aktuelle Version 12.15 des Browsers<br />

aus der norwegischen Firma Opera Software ist<br />

eigentlich bereits veraltet und die Entwickler<br />

pflegen sie nicht länger weiter. Von der komplett<br />

überarbeiteten Neufassung Opera Next<br />

[8] war zum Zeitpunkt des Tests noch keine<br />

<strong>Linux</strong>-Version erhältlich; mit Erscheinen dieses<br />

Namen Chromium [11] stellt die Firma einen<br />

Großteil des Quelltextes von Google<br />

Chrome [1] unter der BSD-Lizenz als<br />

quelloffenes Projekt bereit. Für Chrome<br />

selbst untersagt der Hersteller das Kopieren<br />

und Ändern der Binärversion.<br />

Im Test trat Google Chrome 27.0.1453.93<br />

an und forderte direkt nach dem Start<br />

den Anwender dazu auf, sich mit einem<br />

Benutzerkonto bei Google anzumelden.<br />

Über dieses und somit die Google-Server<br />

synchronisiert der Browser unter anderem<br />

den Verlauf und die Lesezeichen mit<br />

anderen Chrome-Installationen.<br />

Auch sonst gibt sich Chrome gesprächig:<br />

Bei einem Tippfehler in der Internetadresse<br />

schickt das Programm die URL<br />

an die Google-Server, die dann wiederum<br />

Alternativvorschläge zurückliefern.<br />

Auch die eingegebenen Suchbegriffe<br />

in der Adress zeile wandern zu Google,<br />

und die Suchmaschine schlägt passende<br />

Fundstellen vor (Abbildung 1).<br />

Nachdem der Browser eine Seite geladen<br />

hat, ermittelt er automatisch die<br />

IP-Adressen der enthaltenen Links, um<br />

die Arbeitsgeschwindigkeit beim Anfordern<br />

neuer Seiten zu beschleunigen.<br />

Gleichzeitig versucht Chrome Seiten im<br />

Voraus zu laden. Das als Pre-Rendering<br />

bezeichnete Verfahren ruft folglich eigenmächtig<br />

Webinhalte ab. Anwender deaktivieren<br />

es in den Einstellungen, wo es<br />

etwas missverständlich mit »Netzwerkaktionen<br />

voraussehen« benannt ist.<br />

Hefts sollte sie aber zum Download verfügbar<br />

sein. Die wichtigste Neuerung steckt unter der<br />

Haube von Opera 15: Die eigene Browserengine<br />

haben die Macher eingemottet und wechseln<br />

nun auf die Chromium-Engine Blink [9]. Der<br />

Nachfolger von Webkit [10] rendert künftig<br />

auch bei Googles eigenen Browsern.


Bitparade 08/2013<br />

Software<br />

www.linux-magazin.de<br />

49<br />

Abbildung 1: Über die Instant-Suche ruft Chrome die Suchergebnisse schon ab,<br />

während der Benutzer sie noch eintippt.<br />

Abbildung 2: Die Cookie-Verwaltung in Chrome beschränkt sich auf das Nötigste<br />

und entfernt entweder einzelne oder direkt alle Cookies.<br />

Der eingebaute Phishing- und Malware-<br />

Schutz greift auf eine lokal gespeicherte<br />

Blacklist zu. Ist die URL darin verzeichnet,<br />

schickt Chrome sie zur weiteren<br />

Prüfung an Google. Auch diese Funktion<br />

ist in der Voreinstellung aktiv. In der Verlaufsansicht<br />

löscht ein Knopf außer der<br />

Chronik auch alle Formulardaten, den<br />

Cache sowie die Daten aller Erweiterungen<br />

und Anwendungen, die der Benutzer<br />

über Chromes Webstore heruntergeladen<br />

hat. Dazu zählt auch der von Gmail lokal<br />

genutzte Speicher.<br />

Chrome entfernt nicht nur Cookies, sondern<br />

auch die Informationen im Webstorage<br />

und die Daten, die Erweiterungen<br />

über das NPAPI-Clear-Site-Data-API [12]<br />

abgelegt haben. Leider ist es unmöglich,<br />

Daten einzelner Bereiche zu behalten.<br />

Soll und Haben<br />

Nutzerstatistiken und Absturzberichte<br />

sendet Chrome erst an Google, nachdem<br />

der Anwender dies abgenickt hat. Explizit<br />

aktivieren muss er auch die Do-not-track-<br />

Meldung sowie die Rechtschreibprüfung.<br />

Letztere schickt den zu korrigierenden<br />

Text an einen Google-Webdienst. Als<br />

Alternative gibt es eine Rechtschreibprüfung,<br />

die auf ein lokales Wörterbuch<br />

zurückgreift.<br />

In der Voreinstellung speichert Chrome<br />

Passwörter sowie Formulareingaben –<br />

und legt diese Daten auch gleich in der<br />

Google-Cloud für eine spätere Synchronisation<br />

ab. Nur die Synchronisation abschalten<br />

dürfen Nutzer nicht. Sobald sie<br />

sich anmelden, wandern alle Daten in<br />

das eigene Google-Konto.<br />

Chrome nimmt sämtliche Cookies entgegen.<br />

In den Einstellungen weist der<br />

Anwender den Browser an, Cookies von<br />

Dritten zu blockieren oder sie komplett<br />

abzuweisen. Auf Wunsch löscht das Programm<br />

die Cookies beim Beenden und<br />

legt Ausnahmen für einzelne Webseiten<br />

fest. Die Cookie-Verwaltung zeigt gespeicherte<br />

Informationen an und entfernt einzelne<br />

oder direkt alle Cookies auf einmal<br />

(siehe Abbildung 2).<br />

Javascript und Popups blockt Chrome<br />

erst auf Wunsch. In beiden Fällen dürfen<br />

Anwender Ausnahmen für bestimmte<br />

Seiten festlegen. Der Browser verrät den<br />

Standort, erlaubt den Zugriff auf Mikrofon<br />

und Webcam und zeigt eingehende<br />

Benachrichtigungen auf dem Desktop an.<br />

Von letztgenannter Funktion macht etwa<br />

der Google-Kalender Gebrauch. In der<br />

Voreinstellung müssen Nutzer all dies<br />

immer erst explizit bestätigen, können es<br />

in den Einstellungen aber auch komplett<br />

deaktivieren. Prinzipiell bietet Chrome<br />

dort auch an, Ausnahmeregeln zu hinterlegen.<br />

Der Dialog bot im Test aber keine<br />

passenden Schaltflächen an.<br />

Der private Modus heißt beim Google-<br />

Browser Inkognito. Er verzichtet auf das<br />

Anlegen einer Chronik. Außerdem löscht<br />

er Cookies und die Daten im Webstorage<br />

nach dem Schließen des letzten Inkognito-Fensters.<br />

Zuvor nimmt Chrome sie<br />

jedoch an und macht sie in allen Inkognito-Fenstern<br />

verfügbar. Außerdem<br />

übermittelt der Browser auch in dieser<br />

Betriebsart weiterhin Daten an Google –<br />

ein Inkognito sieht anders aus.<br />

Erweiterungen laufen abgeschottet in einer<br />

Sandbox mit eingeschränkten Rechten.<br />

Möchte ein Addon daraus ausbrechen<br />

und verlangt etwa persönliche Daten des<br />

Surfers, fragt es nach. In den Einstellungen<br />

unterbindet der Anwender dieses<br />

Verhalten oder definiert Sonderregeln für<br />

einzelne Seiten. Zudem dürfen Nutzer in<br />

den Einstellungen auf eine Click-to-play-<br />

Variante umschalten. Der Browser fragt<br />

dann jeweils um Erlaubnis, sobald er eine<br />

Erweiterung benötigt.<br />

Der Chrome Webstore [13] hält zahlreiche<br />

Addons bereit, die sich dem anonymen<br />

Surfen verschrieben haben. So blendet<br />

Adblock Plus beispielsweise Werbung<br />

aus, Noscript schaltet aktive Inhalte ab,<br />

Do Not Track Me blockiert Cookies und<br />

andere Tracking-Elemente.<br />

E Epiphany<br />

Epiphany [2] liegt inzwischen in Version<br />

3.8 vor. Da den meisten Distributionen<br />

derzeit Gnome 3.6 beiliegt, schauten sich<br />

die Tester diese weiter verbreitete Release<br />

an. Der Standardbrowser des Gnome-<br />

Desktops legt immer eine Chronik an<br />

und bereinigt diese beim Beenden nicht<br />

automatisch. Das Verwaltungsfenster für<br />

die Chronik bietet außerdem nur an, die<br />

komplette Aufzeichnung zu entfernen;<br />

das gezielte Löschen von Einträgen ist<br />

nicht möglich.<br />

Cookies akzeptiert der Gnome-Browser<br />

entweder immer oder liefert sie nur an


Software<br />

www.linux-magazin.de Bitparade 08/2013<br />

50<br />

die aufgerufene Seite zurück oder lehnt<br />

sie grundsätzlich ab. Ausnahmeregeln<br />

für einzelne Seiten sind nicht möglich.<br />

Epiphany bietet eine rudimentäre Cookie-<br />

Verwaltung, in der Nutzer die vorhandenen<br />

Cookies ansehen und einzeln entfernen<br />

können. Hier finden sie auch den<br />

zunächst unscheinbaren Knopf »Leeren«,<br />

über den sie nicht nur alle Cookies, sondern<br />

auch gespeicherte Passwörter, die<br />

komplette Chronik und alle temporären<br />

Dateien entfernen.<br />

Auch der Rest der Konfiguration ist überschaubar.<br />

Anwender können alle Erweiterungen<br />

deaktivieren, Popups unterdrücken,<br />

Javascript komplett abschalten<br />

und die Do-not-track-Funktion aktivieren<br />

(Abbildung 3). Auf dem Testsystem war<br />

keine der mitgelieferten Erweiterungen<br />

aktiviert. Um sie ein- oder auszuschalten,<br />

wechseln Nutzer in die recht spartanische<br />

Erweiterungsverwaltung.<br />

Nach einer Funktion, um ein Addon zu<br />

deinstallieren oder neue hinzuzufügen,<br />

sucht man vergeblich. Immerhin enthält<br />

Epiphany einen Werbefilter, der alle URLs<br />

blockiert, die auf einer schwarzen Liste<br />

stehen. In der Voreinstellung ist das die<br />

von Mozilla gepflegte Blacklist, Anwender<br />

dürfen jedoch weitere Verzeichnisse<br />

hinzufügen. Möchte Epiphany auf das<br />

Geolocation-API zugreifen, bittet das Programm<br />

vorher um Erlaubnis; dauerhaft<br />

abschalten können Anwender die Standortermittlung<br />

aber nicht. (Im Test schlug<br />

die Erkennung jedoch reproduzierbar<br />

fehl.) Nach dem Start zeigt der Gnome-<br />

Browser immer die zuletzt geöffneten<br />

Webseiten an. Auch dieses Verhalten darf<br />

der Benutzer nicht unterbinden.<br />

Damit ist Epiphanys Funktionsumfang<br />

bereits vollständig erschöpft. Anwender<br />

dürfen keine Ausnahmeregeln für<br />

Javascript definieren, Einfluss auf den<br />

Webstorage nehmen oder einen privaten<br />

Modus starten.<br />

E Firefox<br />

Firefox [3] erfreut sich seit Jahren wachsender<br />

Beliebtheit. Der Browser des Mozilla-Projekts<br />

ist einer der meistgenutzten<br />

Browser. Im Test trat Version 21 an.<br />

Firefox löscht per Mausklick die Chronik,<br />

Cookies, den Cache, aktive Logins, alle<br />

eingegebenen Suchbegriffe und Formulardaten<br />

sowie die Offline-Website-Daten<br />

Abbildung 3: der Gnome-Browser Epiphany arbeitet<br />

nach dem Motto „Weniger ist mehr“.<br />

und die Website-Einstellungen. Was sich<br />

hinter den letzten beiden Begriffen verbirgt,<br />

erklärt auch die Dokumentation<br />

nur unzureichend: Offline-Website-Daten<br />

sind Dateien, die eine Website ablegt,<br />

und die Website-Einstellungen umfassen<br />

einige vom Anwender hinterlegte Ausnahmeregeln.<br />

Den Webstorage dürfen Anwender weder<br />

löschen noch einsehen – zumindest nicht<br />

von Hand. Wenn sie Firefox allerdings<br />

anweisen, alle Daten beim Beenden zu<br />

eliminieren, umfasst dies auch die Inhalte<br />

im Webstorage. Apropos Webstorage: Der<br />

steht Webanwendungen grundsätzlich<br />

immer zur Verfügung – und die Firefox-<br />

Nutzer erfahren noch nicht einmal, welche<br />

Seiten welche Daten darin abgelegt<br />

haben.<br />

Cookies akzeptiert<br />

Firefox in der Voreinstellung<br />

von allen<br />

Websites, auf Wunsch<br />

aber auch nur von<br />

der originalen Seite<br />

oder überhaupt nicht.<br />

Alternativ kann der<br />

Browser vor der Annahme<br />

eines Cookies<br />

nachfragen, was<br />

mit ihm geschehen<br />

soll, und für einzelne<br />

Seiten dürfen Nutzer<br />

Aufnahmeregeln<br />

festlegen. In der gut<br />

versteckten Cookie-<br />

Verwaltung darf der<br />

Anwender die Cookies dann einsehen<br />

sowie einzeln oder gebündelt für eine<br />

Domain löschen.<br />

Der Mozilla-Browser lädt alle Bilder und<br />

führt auch Javascript aus. Popups blockiert<br />

er hingegen von sich aus. In den<br />

Einstellungen passen Anwender das Verhalten<br />

an und richten Ausnahmen ein.<br />

Zusätzlich bietet das Programm über<br />

»Extras | Seiteninformationen« ein Feintuning<br />

an (siehe Abbildung 4). In diesem<br />

Dialog verbieten es Nutzer der geöffneten<br />

Seite, Grafiken zu laden, Popups zu öffnen,<br />

Cookies zu speichern und Themes<br />

zu installieren.<br />

Das Fenster regelt auch die Standortabfrage,<br />

den Zugriff auf den Offlinespeicher<br />

(nicht aber den Webstorage) und das<br />

Umschalten in den Vollbildmodus. Der<br />

Zugriff auf das Geolocation-API ist ausschließlich<br />

über diesen Dialog möglich,<br />

eine allgemeine Einrichtung fehlt.<br />

Ausgekundschaftet<br />

Während der Anwender einen Begriff<br />

ins Suchfeld rechts oben eintippt, nimmt<br />

Firefox Kontakt zur ausgewählten Suchmaschine<br />

auf und holt Vorschläge ein.<br />

Von Haus aus kennt der Browser Google,<br />

Bing und Yahoo, weitere Engines binden<br />

Nutzer per Mausklick ein. Die Einstellungen<br />

zur Suchmaschine gelten allerdings<br />

nur für das Suchfeld. Tippt der Anwender<br />

seinen Begriff in die Adressleiste, sucht<br />

Firefox unverrückbar mit Google.<br />

In den Einstellungen dürfen Nutzer das<br />

Einbinden von Webfonts verbieten. Im<br />

Abbildung 4: Über diesen Dialog erlaubt Firefox die Einrichtung für einzelne<br />

Webseiten. Eine Reglementierung des Webstorage fehlt jedoch in der Liste.


Bereich »Datenschutz« des Konfigurationsdialogs<br />

legen sie fest, ob und wann<br />

der Browser Do-not-track-Nachrichten<br />

an Seiten schickt, wann und wie er eine<br />

Chronik erzeugt, ob er sich eingetippte<br />

Suchbegriffe und Formulardaten merkt<br />

und ob er Cookies speichert (Abbildung<br />

5). Auf Wunsch surft der Firefox-Anwender<br />

immer im privaten Modus. In<br />

diesem legt der Browser keine Chronik<br />

an, speichert keine Formulareingaben<br />

und verwirft beim Schließen der privaten<br />

Fenster die zugehörigen Cookies sowie<br />

die Webstorage-Daten.<br />

Firefox synchronisiert auf Wunsch die<br />

Einstellungen, Lesezeichen und die privaten<br />

Daten über die Mozilla-Cloud mit<br />

anderen Browserinstanzen. Anders als bei<br />

Chrome schalten Anwender das Feature<br />

explizit ein und können darüber hinaus<br />

einen eigenen Server als Datenspeicher<br />

einrichten [14]. Mozilla entpuppt sich an<br />

anderer Stelle als Datensammler: Widerspricht<br />

der Anwender nicht ausdrücklich,<br />

funkt Firefox an den Hersteller Absturzund<br />

Statusberichte, die auch Statistiken<br />

zur Gesamtlaufzeit und zur Anzahl der<br />

installierten Addons enthalten.<br />

Außerdem kann Firefox Telemetriedaten<br />

an Mozilla schicken, etwa Informationen<br />

über Prozessor, Speicher und IP-Adresse.<br />

Glücklicherweise ist diese Funktion in der<br />

Voreinstellung deaktiviert. Der Browser<br />

weist zudem beim ersten Start auf seine<br />

Sammelwut hin und bietet es zugleich<br />

an, die entsprechenden Einstellungen zu<br />

korrigieren.<br />

Firefox warnt vor dem Zugriff auf Seiten<br />

mit Phishing oder Malware und orientiert<br />

sich dabei an der Mozilla-Blacklist. Im<br />

Gegensatz zu Epiphany ist es hier nicht<br />

möglich, die Liste zu ergänzen oder eine<br />

eigene hinzuzufügen. Anonymisierungs-<br />

Addons gibt es wie Sand am Meer – kein<br />

anderer Browser hat so viele Erweiterungen<br />

im Angebot.<br />

E Konqueror<br />

Abbildung 5: Der Reiter »Datenschutz« versammelt die Einstellungen zur<br />

Verfolgung, zu Chronik und Adressleiste.<br />

Zur KDE Software Collection gehört auch<br />

der Webbrowser Konqueror [4], der dem<br />

Testrechner in Version 4.10 beilag. Über<br />

das Menü »Extras« deaktivieren Nutzer<br />

schnell Javascript, Java, das Speichern<br />

von Cookies und das Laden von Bildern.<br />

Auch die Erweiterungen – bei Konqueror<br />

Module genannt – schalten sie hier ein<br />

und aus und wechseln bei Bedarf schnell<br />

mal die Browserkennung.<br />

Vergleichbares erreichen andere Browser,<br />

wenn überhaupt, nur über Addons. Konqueror<br />

bringt das von Haus aus mit und<br />

gibt sich wahlweise gegenüber allen oder<br />

der gerade angesteuerten Seite mit einem<br />

falschen Namen aus. In den Einstellungen<br />

dürfen Anwender die Kennung sogar<br />

komplett abschalten, aber keine eigene<br />

definieren (Abbildung 6).<br />

Über das »Extras«-Menü surfen Nutzer<br />

außerdem schnell über einen eingerichteten<br />

Proxy und deaktivieren den<br />

Browsercache. Die einzelnen Funktionen<br />

können sie hier nur komplett ein- oder<br />

ausschalten. Zum Feintuning wechseln<br />

sie in die Programmeinstellungen.<br />

Eine Ausnahme bildet<br />

der Cache, für den über<br />

»Extras | Zwischenspeicher‐Regelung«<br />

die<br />

drei Optionen »Zwischenspeicher<br />

aktuell<br />

halten«, »möglichst<br />

den Zwischenspeicher<br />

verwenden« und »Offline‐Browsing‐Modus«<br />

verfügbar sind.<br />

Konqueror nennt die<br />

Chronik »Verlaufsspeicher«<br />

und blendet sie<br />

optional am linken<br />

Bildschirmrand ein.<br />

Über die rechte Maustaste<br />

entfernen Nutzer<br />

PUPPET FUNDAMENTALS<br />

3 TAGE | NÜRNBERG | ZÜRICH<br />

PUPPET ADVANCED<br />

3 TAGE | NÜRNBERG | HAMBURG<br />

EXTENDING PUPPET<br />

3 TAGE | NÜRNBERG<br />

puppet<br />

labs<br />

NETWAYS ®


Software<br />

www.linux-magazin.de Bitparade 08/2013<br />

52<br />

wahlweise einzelne Einträge oder gleich<br />

die ganze Chronik. In den Grundeinstellungen<br />

legen sie fest, wie viele Adressen<br />

der Browser in der Chronik ablegt und<br />

nach wie vielen Tagen er ältere Einträge<br />

vergisst. In der Voreinstellung merkt sich<br />

das KDE-Programm für jede URL, wie oft<br />

der Anwender sie besucht hat sowie das<br />

Datum des ersten und des letzten Aufrufs.<br />

Dies Verhalten unterbinden Nutzer<br />

in den Einstellungen.<br />

Grenzen setzen<br />

Die Entwickler haben dem Browser eine<br />

Ausfüllhilfe für Formulare verpasst, sie<br />

speichert in der Voreinstellung zehn<br />

Werte. Diese Funktion deaktivieren Nutzer<br />

im Konfigurationsdialog auf Wunsch<br />

komplett. Dort weisen sie Konqueror<br />

auch an, Do-not-track-Nachrichten zu<br />

versenden. Auf Wunsch zieht der KDE-<br />

Browser einen Rahmen um nicht vollständig<br />

geladene Bilder, verhindert das<br />

automatische Neuladen von Seiten sowie<br />

die Umleitung zu anderen Web sites. Ein<br />

Werbefilter blockiert URLs, die auf einer<br />

schwarzen Liste stehen. Eine solche Liste<br />

pflegt der Nutzer entweder selbst oder<br />

bezieht sie aus dem Netz.<br />

Cookies nimmt Konqueror nur vom ausstellenden<br />

Server an, kann sie aber auch<br />

komplett abweisen, den Anwender fragen<br />

und die Cookies beim Beenden löschen.<br />

Session-Cookies blockt er separat, für<br />

ausgewählte Seiten sind Ausnahmen erlaubt.<br />

Die Cookie-Verwaltung gruppiert<br />

die gespeicherten Daten übersichtlich<br />

nach Domainnamen, ein Suchfeld hilft<br />

beim schnellen Aufspüren eines Kandidaten.<br />

Ein Klick genügt, um alle Daten<br />

über ein Cookie einzusehen; löschen darf<br />

der Nutzer allerdings nur einzelne oder<br />

gleich alle.<br />

Javascript deaktivieren Benutzer entweder<br />

global oder gezielt für einzelne<br />

Websites, beim Öffnen von Popups fragt<br />

Konqueror auf Wunsch um Erlaubnis.<br />

Als einziger Browser im Test aktiviert<br />

das KDE-Programm Java von vornherein.<br />

Ausnahmen für einzelne Sites sind<br />

möglich. Sofern das Ausführen einer<br />

Java-Anwendung gestattet ist, schaltet<br />

der Browser einen Sicherheitsmanager<br />

ein, der zumindest einen direkten Zugriff<br />

auf das System verhindern soll. Zudem<br />

würgt Konqueror Java-Applikationen ab,<br />

Abbildung 6: Konqueror bietet an, die Browserkennung zu ändern. Über diesen Dialog aktivieren Anwender<br />

das Feature auch gezielt für einzelne Webseiten oder ganze Domains.<br />

die zu lange laufen – die Zeitspanne gibt<br />

wiederum der Nutzer vor.<br />

In der recht rudimentären Modulverwaltung<br />

schalten die Anwender Erweiterungen<br />

an und aus und richten Sonderregeln<br />

ein. Im laufenden Betrieb wechselt Konqueror<br />

außerdem zwischen KHTML- und<br />

Webkit-Engine, und die Rechtschreibprüfung<br />

setzt ausschließlich auf lokale<br />

Wörterbücher. Den Webstorage kann der<br />

Browser nicht löschen, Webfonts lädt er<br />

grundsätzlich, ein Geolocation-API fehlt<br />

ganz, einen privaten Modus vermissten<br />

die Tester ebenfalls.<br />

Verfolgungswahn<br />

Der Auslieferungszustand aller Testkandidaten<br />

ist erschreckend. Um zumindest<br />

einigermaßen anonym surfen zu können,<br />

müssen sich Anwender erst durch<br />

mehr oder weniger übersichtliche Einrichtungsdialoge<br />

durcharbeiten. Selbst<br />

wenn sie alle Einschränkungen definiert<br />

haben, geben die Browser weiterhin zahlreiche<br />

Informationen bereitwillig preis.<br />

Der private Modus hat zudem bei keinem<br />

Programm den Namen verdient: In der<br />

Regel löschen die Browser beim Beenden<br />

schlicht alle Daten. Zudem verklausulieren<br />

die Browser tatsächliche Techniken<br />

oder benennen sie um.<br />

Als besonders geschwätzig entpuppte sich<br />

Chrome. Es ist schwierig, ihm die Telefonate<br />

nach Hause auszutreiben. Epiphany<br />

hinkt der Konkurrenz sowieso hinterher,<br />

mit den wenigen Konfigurationsoptionen<br />

können Anwender ihn kaum mundtot machen.<br />

Firefox bietet zwar deutlich mehr in<br />

den Einstellungsdialogen, punktet dort<br />

aber nicht mit Übersichtlichkeit. Auf der<br />

Habenseite stehen Tausende von Addons<br />

bereit, die den Browser abschotten. Konqueror<br />

fehlen insbesondre Einstellmöglichkeiten<br />

für neuere Webtechniken wie<br />

den Webstorage.<br />

Anwender, die anonym surfen möchten,<br />

sollten daher zu Firefox greifen und einige<br />

Zeit aufwenden, um ihn mit Bordmitteln<br />

einzurichten und mit Anonymisierungs-<br />

Addons zu bestücken. (hej) n<br />

Infos<br />

[1] Chrome: [http:// www. google. de/ chrome]<br />

[2] Epiphany:<br />

[http:// projects. gnome. org/ epiphany]<br />

[3] Firefox:<br />

[http:// www. mozilla. org/ de/ firefox]<br />

[4] Konqueror: [http:// www. konqueror. org]<br />

[5] Opera: [http:// www. opera. com/ de]<br />

[6] Webstorage:<br />

[http:// www. w3. org/ TR/ webstorage]<br />

[7] Geolocation-API:<br />

[http:// www. w3. org/ TR/ geolocation‐API]<br />

[8] Opera Next: [http:// www. opera. com/ de/​<br />

developer/ next]<br />

[9] Blink: [http:// www. chromium. org/ blink]<br />

[10] Webkit: [http:// www. webkit. org]<br />

[11] Chromium: [http:// www. chromium. org]<br />

[12] NPAPI-Clear-Site-Data-API: [https:// wiki.​<br />

mozilla. org/ NPAPI:ClearSiteData]<br />

[13] Chromes Webstore:<br />

[https:// chrome. google. com/ webstore/​<br />

category/ extensions? hl=de]<br />

[14] Eigener Server für Firefox Sync:<br />

[http:// docs. services. mozilla. com/​<br />

howtos/ run‐sync. html]


oSC13<br />

openSUSE Conference 2013<br />

From 18-22 July, 2013 the openSUSE Conference (oSC13) will bring together a<br />

wide variety of Open Source contributors to collaborate on one of the major<br />

<strong>Linux</strong> distribution projects.<br />

The sessions at oSC13 will be about openSUSE, our technology and the Free<br />

and Open Source Software (FOSS) community around us. You can meet many<br />

of the people that make FOSS happen, learn from and have fun with them!<br />

On a more serious note of PAAAAAARTYYYYYY, we asure you that as always<br />

we’ll have a lot of fun together at our legendary social events, barbecues and<br />

excursions!<br />

The conference will be hosted July 18-22, 2013 in Thessaloniki, Greece at the<br />

Olympic Museum.<br />

Join us! Check out conference.opensuse.org<br />

Photograph by http://www.flickr.com/photos/user-colin/8913251039/


Software<br />

www.linux-magazin.de P2P-Synchronisation 08/2013<br />

54<br />

Dateien verteilen mit Bittorrent Sync<br />

Großes Hin und Her<br />

Noch im Teststadium, doch zeigt Bittorrent Sync bereits jetzt einiges Potenzial für das Synchronisieren von<br />

Dateien zwischen mehreren Rechnern und über Netzwerkgrenzen hinweg. Kristian Kißling<br />

neues Secret, das es mit Base32 enkodiert,<br />

um es für die Nutzer lesbar zu<br />

machen. Wer mehrere Ordner freigeben<br />

will, muss für jeden ein eigenes Secret<br />

generieren, das er an andere Sync-Teilnehmer<br />

verteilt.<br />

Tauschhandel<br />

© Stephen Coburn, Fotolia<br />

Bittorrent ist nicht nur eine P2P-Software,<br />

die das gleichnamige Protokoll verwendet,<br />

um Dateien recht fix zwischen<br />

mehreren Rechnern zu verschieben, sondern<br />

auch der Name einer Firma, die<br />

verschiedene Produkte auf Basis dieser<br />

Technologie entwickelt. Eines davon<br />

heißt Bittorrent Sync [1], befindet sich<br />

aktuell noch im Alphastadium und läuft<br />

auch unter <strong>Linux</strong>. Bisher gibt es zwar<br />

ein Versprechen, die Software stets frei<br />

zu verteilen [2], doch steht sie bisher<br />

weder unter einer freien Lizenz noch ist<br />

sie quelloffen.<br />

Neben normalen Nutzern könnten sich<br />

auch Admins für sie interessieren, gilt sie<br />

doch als Alternative zu einer anderen bekannten<br />

proprietären Software: Dropbox.<br />

Anders als Dropbox kommt Bittorrent<br />

Sync komplett ohne Server von Drittanbietern<br />

aus, weil jeder Rechner zugleich<br />

als Client und Server funktioniert. Beim<br />

kostenlosen File sharing stoßen die User<br />

an kein 5-GByte-Limit, sondern tauschen<br />

beliebig große Datenmengen in vielen<br />

Dateien aus – Foreneinträge sprechen<br />

von einer Million. Die verwendete Bandbreite<br />

lässt sich drosseln.<br />

Die Software läuft plattformübergreifend<br />

und synchronisiert Dateien zwischen<br />

Rechnern im lokalen Netzwerk, aber<br />

auch über das Internet. Dazu setzt sie auf<br />

NAT Traversal und UPnP Port Mapping.<br />

Auch ein benutzerfreundlicher Rsync-<br />

Ersatz kann die Software sein: Im Gegensatz<br />

zum freien Veteranen klappt das<br />

Synchronisieren sogar schneller, wenn<br />

mehrere Rechner daran teilnehmen – ein<br />

Vorteil in Unternehmen. Zudem überträgt<br />

Sync mehrere Dateien parallel.<br />

The Key, the Secret<br />

Die Daten verschlüsselt Bittorrent Sync<br />

mit AES und einem 256-Bit-Schlüssel,<br />

den es auf Basis eines 21-Byte-Schlüssels<br />

– Secret genannt – erzeugt. Jede Sync-<br />

Instanz generiert aus »/dev/random« ein<br />

Zwei Sync-Clients mit gleichem Secret<br />

finden sich lokal, indem sie Broadcast-<br />

Pakete schicken (Local Peer Discovery)<br />

und Informationen über andere bekannte<br />

Clients weitergeben (Peer Exchange,<br />

PEX). Zudem lässt sich für den Client<br />

ein fester Shared Folder anlegen.<br />

Auch die aus dem P2P-Bereich bekannten<br />

verteilten Hashtabellen (Distributed<br />

Hash Tables, DHT) nutzt Bittorrent Sync<br />

auf expliziten Wunsch des Anwenders.<br />

Die Software verpackt das Secret mit<br />

SHA-2 und schickt es an die DHT, um<br />

Sync-Zwillinge im Netz aufzuspüren. Die<br />

Entwickler empfehlen jedoch, Tracker zu<br />

verwenden. Diese seien nicht nur schneller,<br />

sondern fungieren auch als STUN-<br />

Server und ermöglichen so eine direkte<br />

Verbindung zu Rechnern, die sich hinter<br />

einer Firewall befinden.<br />

Ist diese sehr restriktiv, besteht die Option,<br />

einen Traffic-Relay-Server von<br />

Bittorrent zu verwenden. Die Betreiber<br />

versichern, die verschlüsselt gesendeten<br />

Daten nicht ausforschen zu können, sie<br />

erheben jedoch anonyme Nutzungsdaten<br />

[3], zu denen das SHA-2-verpackte Secret<br />

gehört, das sie nach eigener Aussage<br />

aber nicht speichern.<br />

Im Einsatz<br />

Sync lässt sich einfach aufsetzen, die<br />

Daten wandern dank Bittorrent-Protokoll<br />

zügig zwischen den Rechnern hin und


Abbildung 1: In der erzeugten Beispielkonfiguration passt der Admin unter<br />

<strong>Linux</strong> den Storage-Pfad sowie das Passwort für den Zugriff auf die Weboberfläche<br />

an. Diese lässt sich auch komplett deaktivieren.<br />

her. In einem Unternehmen kann die<br />

Software zum Beispiel automatisch die<br />

Mobilrechner der Mitarbeiter mit dem<br />

Datenbestand auf dem Firmenserver abgleichen<br />

– Verbindungen in die Außenwelt<br />

zu Trackern und DHT kappt der<br />

Admin bei Bedarf.<br />

In diesem Szenario helfen die speziellen<br />

Read-only-Secrets: Dank dieser Einbahnstraße<br />

schickt ein Firmenrechner seine<br />

Dateien zwar an andere Sync-Instanzen,<br />

übernimmt dort vorgenommene Änderungen<br />

aber nicht. Schließlich gibt es<br />

noch One-Time-Secrets. Sie gelten nur für<br />

einen einzigen Sync-Vorgang, das Gegenüber<br />

muss sie im Laufe von 24 Stunden<br />

aktivieren.<br />

Wer zuletzt schreibt, bleibt<br />

Angenommen Sync läuft mit demselben<br />

Secret auf drei Rechnern. Löscht ein Teilnehmer<br />

eine Datei, verschwindet diese<br />

auch aus den Sync-Ordnern der anderen<br />

Nutzer, landet aber in<br />

einem Mülleimer, dem<br />

versteckten Ordner<br />

».SyncTrash«. Über<br />

».SyncIgnore« [4] besteht<br />

zudem die Möglichkeit,<br />

bestimmte<br />

Dateien im Sync-Ordner<br />

vom Tausch auszunehmen.<br />

Ändert ein Nutzer eine<br />

Datei, wird die neuere<br />

Version automatisch<br />

auf die anderen<br />

Rechner übertragen.<br />

Führen mehrere unterschiedliche<br />

Dateien denselben Namen,<br />

hebt Bittorrent Sync nur die zuletzt<br />

ergänzte Version auf und schiebt ältere<br />

Varianten nach ».SyncTrash« – das ließe<br />

sich sicherlich intelligenter lösen und ist<br />

ein Kritikpunkt. Eine Versionierung ist<br />

zwar bereits in Planung, aber noch nicht<br />

umgesetzt.<br />

Schaltet ein Sync-Teilnehmer seinen<br />

Client während des Synchronisierens<br />

aus, wird die halbfertige Datei zu einem<br />

späteren Zeitpunkt vollständig synchronisiert<br />

– es sei denn, jemand verändert<br />

sie inzwischen.<br />

Eins, zwei, Sync<br />

Wer Sync beispielsweise unter Ubuntu<br />

12.10 einsetzen will, lädt die passende<br />

Tar.gz-Datei für 32- oder 64-Bit-Systeme<br />

herunter und entpackt sie am besten in<br />

einen lokalen Ordner, der etwa »~/.btsync«<br />

heißen darf. Im Test kam Sync in<br />

Version 1.0.134 zum Einsatz.<br />

Die entpackte Binärdatei lässt sich wie<br />

gewohnt über »./btsync« ausführen. Nach<br />

Eingabe von »http://localhost:8888« in<br />

die URL-Leiste des Browsers landet der<br />

<strong>Linux</strong>-Anwender auf einer grafischen<br />

Oberfläche für Sync, über die er Ordner<br />

freigibt, Secrets generiert und diverse<br />

Einstellungen an existierenden Tauschordnern<br />

vornimmt.<br />

Konfiguration auf<br />

Knopfdruck<br />

Der Knackpunkt: In der Standardeinstellung<br />

dürfen alle Browser im LAN über die<br />

IP-Adresse auf die Sync-Weboberfläche<br />

eines <strong>Linux</strong>-Clients zugreifen, um dort<br />

nach Belieben Ordner freizugeben – ganz<br />

klar eine Sicherheitslücke. Abhilfe schafft<br />

das Anlegen einer Konfigurationsdatei im<br />

Json-Format (Listing 1). In diese trägt der<br />

Sync-Betreiber ein Passwort ein oder deaktiviert<br />

die Weboberfläche gleich ganz.<br />

Auch der Storage-Pfad lässt sich hier ändern<br />

(Abbildung 1).<br />

In die »sync.conf« lassen sich unter<br />

<strong>Linux</strong> noch weitere Parameter eintragen<br />

(Listing 2). Stellt der Admin die Option<br />

Listing 1: Sync mit Konfigurationsdatei<br />

starten<br />

01 // Sync in einen lokalen Sync‐Ordner entpacken<br />

02 // und in diesen Ordner wechseln<br />

03 cd ~/.Sync‐Ordner<br />

04 // eine Dummy‐Konfigurationsdatei erzeugen<br />

05 ./btsync ‐‐dump‐sample‐config > sync.conf<br />

06 // Konfigurationsdatei anpassen<br />

07 vi sync.conf<br />

08 // btsync mit neuer sync.conf starten<br />

09 ./btsync ‐‐config sync.conf<br />

P2P-Synchronisation 08/2013<br />

Software<br />

www.linux-magazin.de<br />

55<br />

Community-Edition<br />

32 Seiten der aktuellen auSgabe gratiS im PdF-Format<br />

JEtzt<br />

informieren!<br />

archiv und bestellseite:<br />

www.easylinux.de/Ce/<br />

❱<br />

KostEnlos als nEwslEttEr<br />

odEr zum downloadEn<br />

Easy<strong>Linux</strong> erscheint 4x im Jahr – neben der<br />

gedruckten Ausgabe für e 9,80 erhalten Sie gratis<br />

eine 32-seitige Auswahl der Artikel im PDF-Format.


Software<br />

www.linux-magazin.de P2P-Synchronisation 08/2013<br />

56<br />

Abbildung 2: Über das Browserfenster erzeugt der Admin ein neues Sync-Secret oder trägt ein bereits existierendes<br />

ein, im Feld darunter legt er den Tauschordner fest.<br />

»disk_low_priority« auf »false«, legt Sync<br />

auf schwächeren Systemen womöglich<br />

andere Anwendungen lahm. Das Deaktivieren<br />

der Datenverschlüsselung in einem<br />

LAN sowie der Einsatz von TCP statt<br />

UDP bringen einen Performancegewinn<br />

auf Low-End-Geräten.<br />

Nach dem Start gilt es, im Browser-Interface<br />

über einen Klick auf »Add Folder«<br />

einen Tauschordner einzurichten und ein<br />

Secret zu erzeugen (Abbildung 2). Letzteres<br />

sollte sich der Anwender notieren<br />

und auf sicherem Wege (etwa über eine<br />

verschlüsselte E-Mail) an den Tauschpartner<br />

weitergeben. Der wiederholt nun den<br />

Prozess auf seinem Client, erzeugt dort<br />

aber kein neues Secret, sondern verwendet<br />

das eben generierte, um die beiden<br />

Sync-Instanzen zu verknüpfen.<br />

Im Test klappte das lokal und – wenn<br />

auch deutlich langsamer – über das Internet.<br />

Läuft der verschlüsselte Datenverkehr<br />

über einen Tracker, kennzeichnet<br />

das Browser-Interface dies übrigens mit<br />

dem Symbol einer Wolke.<br />

Wer den direkten Austausch mehrerer<br />

Rechner über LAN-Grenzen hinweg<br />

bevorzugt, muss auf beiden Gateways<br />

Ports weiterleiten und gegebenenfalls die<br />

Firewall neu einstellen. Das ist nicht nur<br />

aufwändig, sondern in öffentlichen Net-<br />

01 "disk_low_priority": true<br />

02 "lan_encrypt_data": true<br />

03 "lan_use_tcp": false<br />

Listing 2: »sync.conf«<br />

04 "rate_limit_local_peers": false<br />

zen auch nicht immer möglich, detailliertere<br />

Infos dazu gibt [5].<br />

Für Admins besteht zudem die Möglichkeit,<br />

Sync komplett über die Kommandozeile<br />

zu betreiben. Der Aufruf »./btsync<br />

‐‐help« zeigt die Optionen. Um Sync zu<br />

stoppen, hilft nur die beherzte Eingabe<br />

von »killall btsync«.<br />

Autostart<br />

Soll der Dienst zusammen mit dem<br />

System starten, lässt er sich entweder<br />

manuell als »btsync.desktop«-Datei unter<br />

»$HOME/.config/autostart« anlegen<br />

oder unter Ubuntu über die Anwendung<br />

»Startprogramme« einrichten. In die Zeile<br />

»Befehl« trägt der Nutzer dann<br />

/home/Benutzer/.btsync/btsync ‐‐config U<br />

/home/Benutzer/.btsync/sync.conf<br />

ein. Ein »ps aux | grep "bt"« nach einem<br />

Neustart des Rechners schaut nach, ob<br />

Sync läuft.<br />

Fazit<br />

Einige Nachteile von Sync sind offensichtlich,<br />

andere weniger. Einer Closed-<br />

Source-Software sowie dem vagen<br />

Versprechen künftiger Kostenfreiheit<br />

vertrauen zu müssen gehört zur ersten<br />

Kategorie. Gerät ein Schlüssel in falsche<br />

Hände, greifen womöglich Dritte auf den<br />

Tauschordner zu. Weniger offensichtlich<br />

ist der im Artikel erwähnte Umgang mit<br />

zwei völlig verschiedenen Dateien gleichen<br />

Namens – hier sollten die Macher<br />

nachbessern, weil ein Datenverlust für<br />

die Nutzer droht.<br />

Die Default-Sicherheitseinstellungen für<br />

den Zugriff auf das Webinterface sind<br />

problematisch, der Weg über die Konfigurationsdatei<br />

unter <strong>Linux</strong> ist wenig<br />

benutzerfreundlich. Einem Secret lassen<br />

sich zudem nicht mehrere Tauschordner<br />

zuweisen, was schade ist. Große Dateien<br />

überträgt Sync komplett neu, wenn die<br />

Änderungen den vorderen Bereich betreffen,<br />

andernfalls schickt es nur die<br />

geänderten Blöcke (Chunks).<br />

Doch Sync bringt auch einige Vorteile<br />

mit. Verbreitet man den Schlüssel, lässt<br />

sich schnell und vollautomatisch ein<br />

plattformübergreifendes Sync-Netzwerk<br />

aufbauen, das dank Tracker- und Relay-<br />

Server auch über NAT- und Firewall-<br />

Grenzen hinweg funktioniert.<br />

Temporäre und Read-only-Shares setzt<br />

der Admin ein, wenn er keine Änderungen<br />

an den freigegebenen Dateien<br />

wünscht. Sync verkraftet parallele Upund<br />

Downloads und synchronisiert Dateien<br />

sogar schneller, wenn es mehrere<br />

Teilnehmer gibt.<br />

Noch befindet sich die Software im Alphastadium,<br />

was sie für einige Admins sicher<br />

ausschließt. Anderen, die Daten wegen<br />

Sicherheitsbedenken oder ihres Umfangs<br />

nicht einer Cloud anvertrauen möchten,<br />

dürfte Sync auch schon im Frühstadium<br />

gefallen. Während Techniken wie NAT<br />

Traversal und UPnP Port Mapping Netzwerkbetreibern<br />

womöglich den Schweiß<br />

auf die Stirn treiben, freuen sich normale<br />

User über den umstandslosen und verschlüsselten<br />

Austausch von Dateien ohne<br />

umständliche Port-Freigaben. n<br />

Infos<br />

[1] Bittorrent‐Webseite: [http:// labs.​<br />

bittorrent. com/ experiments/ sync. html]<br />

[2] Sync soll kostenlos bleiben:<br />

[http:// forum. bittorrent. com/ topic/​<br />

8756‐future‐pricing‐plan/ # entry28600]<br />

[3] Übermittelte Nutzerdaten: [http:// forum.​<br />

bittorrent. com/ topic/ 19192‐first‐pb/]<br />

[4] Sync-Ignore einrichten:<br />

[http:// forum. bittorrent. com/ topic/​<br />

16410‐bittorrent‐sync‐faq/]<br />

[5] Ports weiterleiten:<br />

[http:// forum. bittorrent. com/ topic/​<br />

19214‐trouble‐with‐rotuer/ # entry50004]


Aus dem Alltag eines Sysadmin: Ntpd<br />

Verschenkte Zeit<br />

Einführung 08/2013<br />

Sysadmin<br />

Mit dem Network Time Protocol ist <strong>Magazin</strong>-Kolumnist Charly Kühnast stets auf der Höhe der Zeit. Um seine<br />

Pünktlichkeit in den Dienst des Allgemeinwohls zu stellen, exportiert er die Zeitzeichen sogar. Charly Kühnast<br />

www.linux-magazin.de<br />

57<br />

Inhalt<br />

58 Tine 2.0<br />

Die Web-basierte OS-Groupware will<br />

schlanker, leichter zu installieren und zu<br />

warten sein als die Großen.<br />

64 Docker<br />

LXC (<strong>Linux</strong> Containers) heißt die Basistechnologie<br />

von Docker, das Container<br />

füllt und verschiebt.<br />

Abbildung 1: Ntpd gibt Auskunft über die Zeitserver, die er als Referenz für seine Abschätzung heranzieht.<br />

Wenn auf meinem privaten Notebook<br />

die Uhr um ein paar Sekunden vor- oder<br />

nachgeht, ist das nicht dramatisch. Auf<br />

einem Server sieht das anders aus. Logdateien<br />

sollten – mindestens! – sekundengenau<br />

synchronisiert sein, sonst gerät<br />

die Fehlersuche zum Gewurschtel.<br />

Die zuständige Software ist natürlich der<br />

NTP-Daemon (Ntpd, [1]). Als Zeitquelle<br />

eignet sich Spezialhardware wie etwa ein<br />

DCF-77- oder GPS-Empfänger. Wem es<br />

daran mangelt, fragt andere Zeitserver<br />

ab – mehrere deshalb, um Laufzeitunterschiede<br />

der UDP-Pakete im Netz herausrechnen<br />

zu können.<br />

In der NTP-Konfiguration auf meinem<br />

Test-Ubuntu sind in der »/etc/ntp.conf«<br />

fünf Zeitserver eingetragen:<br />

server ntps1‐0.cs.tu‐berlin.de iburst<br />

server ptbtime1.ptb.de iburst<br />

server ntp1.fau.de iburst<br />

server ntp.probe‐networks.de iburst<br />

# Use Ubuntu's ntp server as a fallback.<br />

server ntp.ubuntu.com<br />

Abbildung 2: Ein paar Millisekunden Abweichung<br />

gibt es für NTP-Benutzer immer zu korrigieren.<br />

Das Schlüsselwort »iburst« („initial<br />

burst“) beschleunigt das Synchronisieren<br />

beim ersten Verbindungsaufbau. Eine<br />

Liste öffentlicher Zeitserver gibt es unter<br />

anderem unter [2].<br />

Leih-Zeit von mehreren<br />

Zur Kontrolle gebe ich auf der Kommandozeile<br />

»ntpq ‐p« ein und erhalte eine<br />

Liste aller Zeitserver, zu denen mein<br />

Ntpd Kontakt hält (siehe Abbildung 1).<br />

Wie zuverlässig die Zeitlieferanten sind,<br />

erfahre ich in der ersten Spalte: Ein Asterisk<br />

(»*«) kennzeichnet den derzeitigen<br />

Referenzserver. Ein Pluszeichen bedeutet,<br />

dass die Zeit dieses Servers in die<br />

Mittel wertberechnung eingeht. Server<br />

mit einem Minus lieferten in der letzten<br />

Zeit eine zu hohe Abweichung – besteht<br />

das Problem dauerhaft, lösche ich sie<br />

besser aus der Konfiguration.<br />

Frei-Zeit für alle<br />

Nun spricht nichts dagegen, dass ich meinen<br />

Zeitserver auch für andere bereitstelle.<br />

Der zu erwartende Datenverkehr<br />

ist minimal und große Sicherheitsprobleme<br />

sind bei richtiger Konfiguration<br />

auch nicht zu erwarten. Ich muss in der<br />

»/etc/ntp.conf« lediglich klarstellen, dass<br />

fremde NTP-CLients nur die Zeitinformation<br />

abrufen, aber nichts konfigurieren<br />

dürfen. Das regeln diese Zeilen:<br />

restrict ‐4 default kod notrap nomodifyU<br />

nopeer noquery<br />

restrict ‐6 default kod notrap nomodifyU<br />

nopeer noquery<br />

Wer kein IPv6 einsetzt, lässt die zweite<br />

Zeile natürlich einfach weg.<br />

Wie erfahren andere von meinem Zeitserver?<br />

Am besten binde ich ihn in ein populäres<br />

Zeit-Netzwerk wie [pool. ntp. org]<br />

ein. Mein Server muss außer einem funktionierenden<br />

Ntpd kaum Voraussetzungen<br />

[3] erfüllen. Den eigentlichen Eintrag<br />

erledige ich über ein Webformular. Machen<br />

genug Leute mit, verringert das die<br />

Last je Server, und vor allem: Alle ticken<br />

wieder richtig (Abbildung 2). (jk) n<br />

Infos<br />

[1] Marc André Selig, „Aus dem Nähkästchen<br />

geplaudert: NTP & Co.“: <strong>Linux</strong>-<strong>Magazin</strong><br />

10/​05, S. 61<br />

[2] Liste öffentlicher Zeitserver:<br />

[http:// support. ntp. org/ bin/ view/ Servers/​<br />

WebHome# Browsing_the_Lists]<br />

[3] Zeitserver-Netzwerk Ntp.org: [http:// www.​<br />

pool. ntp. org/ en/ join. html]<br />

Der Autor<br />

Charly Kühnast administriert<br />

Unix-Syste me im Rechenzentrum<br />

Niederrhein. Zu seinen<br />

Aufgaben gehören Sicherheit<br />

und Verfügbarkeit der<br />

Firewalls und der DMZ.


Sysadmin<br />

www.linux-magazin.de Tine 2.0 08/2013<br />

58<br />

Kristina: Die neueste Version der Allround-Groupware Tine 2.0<br />

Alles fürs Büro<br />

Einen etwas anderen Ansatz als die meisten Groupware-Produkte verfolgt Tine 2.0. Die Web-basierte PHP-<br />

Groupware bietet neben E-Mail, Terminen und Kontakten auch CRM und eine Personalverwaltung. Andrej Radonic<br />

© Gennadiy Poznyakov, 123RF.com<br />

01 $ php tine20.php ‐‐method Tinebase.undo ‐d ‐ \<br />

02 record_type=Addressbook_Model_Contact<br />

modification_time=2013‐05‐08 \<br />

03 modification_account=3263<br />

Listing 1: »Tinebase.undo«<br />

E-Mail, Kalender, Adressendaten, Todo-Listen<br />

– aber alles bitte fürs gemeinsame<br />

Arbeiten im Team, von überall<br />

aus nutzbar über Web und Smartphone<br />

und immer brav synchronisiert: Das und<br />

noch mehr versprechen nicht nur die großen<br />

Groupwares wie Exchange, Zarafa,<br />

Zimbra , Kolab oder Notes, sondern auch<br />

rein Web-basierte Open-Source-Projekte<br />

wie Tine 2.0.<br />

Von dem ist vor Kurzem eine neue Version<br />

erschienen, auf die dieser Artikel einen<br />

gründlichen Blick wirft. Tine 2.0 (die<br />

Zahl ist Bestandteil des Projektnamens)<br />

möchte einfacher zu installieren und<br />

zu warten sein als andere Groupware-<br />

Lösungen. Während große Enterprise-<br />

Produkte wie Zimbra bisweilen umfassendes<br />

Know-how und detaillierte Planung<br />

erfordern, besonders wenn es um<br />

die Ablösung des Gespannes Outlook/<br />

Exchange geht, sind gerade bei kleineren<br />

und mittleren Unternehmen schlankere<br />

Lösungen gefragt.<br />

Tine 2.0 [1] verbindet als Webgroupware<br />

klassische E-Mail- und Kalenderfunktionen<br />

sowie Aufgaben- und Kontaktverwaltung<br />

mit spezialisierten Anwendungen<br />

wie dem Customer Relationship<br />

Management (CRM), Zeiterfassung oder<br />

Personalmanagement. Beim Funktionsumfang<br />

muss sich die kostenfreie Open-<br />

Source-Software nicht vor den größeren<br />

Kollegen verstecken, im Gegenteil. Und<br />

sie ist schnell installiert, meist einfach<br />

aus den gängigen Repositories, und verspricht<br />

Flexibilität bei der Anpassung an<br />

die eigenen Bedürfnisse.<br />

Kristinas Erweiterungen<br />

Das Entwicklerteam, das im Wesentlichen<br />

der deutschen Firma Metaways [2]<br />

angehört, legt nach eigener Aussage be-<br />

sonderen Wert auf „professionelle und<br />

kontinuierliche Entwicklung“. Dementsprechend<br />

bringt sie mehrmals im Jahr<br />

neue Versionen heraus, die erste Release<br />

in 2013 hört auf den Codenamen Kristina<br />

(die Entwickler vergeben die Namen ihrer<br />

Kinder) und trägt die Versionsnummer<br />

2013.03.<br />

Das jüngste Mädel beschert der Groupware<br />

eine Reihe von Verbesserungen im<br />

Detail: Ein erweiterter Kalender erlaubt<br />

es, Termine mit einem Klick zu kopieren.<br />

Änderungen an einem Serientermin<br />

stellt die Software nun deutlich übersichtlicher<br />

dar (Abbildung 1). Wer Termine<br />

anderer Anwender einsehen will, kann<br />

die gewünschten User über eine neue<br />

Auswahlbox in der Navigation links auswählen.<br />

E-Mail-Anwender dürfen eine<br />

Lesebestätigung anfordern und Tine 2.0<br />

selbst zeigt empfangene Anforderungen<br />

jetzt ebenfalls an.<br />

Die neue Undo-Funktion rollt Änderungen<br />

oder Eingaben eines Benutzers zurück,<br />

beispielsweise wenn dieser fälschlicherweise<br />

mehrere Datensätze geändert<br />

oder falsch bearbeitet hat. Allerdings darf<br />

nur der Administrator den entsprechenden<br />

PHP-Befehl auf der Kommandozeile<br />

ausführen. Im Beispiel in Listing 1 macht<br />

der Admin schnell mal alle Änderungen<br />

im Adressbuch vom 8. Mai 2013 von Anwender<br />

3263 rückgängig:<br />

Der Schalter »d« steht für Dry Run und<br />

simuliert die Ausführung nur, damit der<br />

Admin den Effekt überprüfen kann, bevor<br />

er den Befehl wirklich auf das System<br />

loslässt. War der Test erfolgreich, muss<br />

er ihn natürlich weglassen. Zusätzlich<br />

oder alternativ zum Datum kann der Administrator<br />

auch eine spezifische Record<br />

ID angeben, um beispielsweise nur einen<br />

bestimmten Datensatz wiederherzustellen.<br />

Wichtig dabei: Haben nach der zu


und ermöglicht Einsteigern flottes Arbeiten.<br />

Das GUI beherrscht Drag & Drop und<br />

ordnet die Funktionsmodule übersichtlich<br />

auf Reitern an. Eine alles übergreifende<br />

Suche erlaubt es, ihre Ergebnisse<br />

als persönliche Favoriten abzulegen. In<br />

jedem Modul können Anwender über<br />

dynamische Listen mit Hilfe von Filtern<br />

sehr gezielt Daten selektieren und als<br />

Suchabfragen speichern. Hier zeigt sich<br />

der Anspruch der Entwickler, eine besonders<br />

benutzerfreundliche Lösung auf die<br />

Beine stellen zu wollen.<br />

Tine 2.0 08/2013<br />

Sysadmin<br />

www.linux-magazin.de<br />

59<br />

Abbildung 1: Das Kalendermodul von Tine 2.0 Kristina 2013.03 verwaltet Termine deutlich intuitiver.<br />

korrigierenden Änderung noch weitere<br />

Changes stattgefunden, muss er noch<br />

»overwrite=1« angeben, damit diese<br />

nicht verloren gehen.<br />

Kristina kümmert sich auch in vielfältiger<br />

Weise um den Import von Daten. So führt<br />

sie ein neues Scripting-API ein, mit dem<br />

Administratoren und Programmierer über<br />

eine von ihnen gewählte Programmiersprache<br />

Daten aus Tine 2.0 exportieren.<br />

Den bereits vorhandenen E-Groupware-<br />

Import haben die Entwickler noch erweitert,<br />

er umfasst nun auch das Einlesen<br />

von Benutzern und ihren Berechtigungen,<br />

Kalenderterminen, Adressen und<br />

Aufgaben sowie anderen Kategorien, die<br />

der Import in vorher definierte Tine-Tags<br />

umwandelt.<br />

Update fix erledigt<br />

Updates auf eine neue Tine-2.0-Version<br />

sind unkompliziert, führen aber zu einer<br />

kurzen Downtime der Anwendung: Nach<br />

dem Herunterladen und Auspacken des<br />

Installationspakets [3] führt der Admin<br />

folgende Schritte aus:<br />

n Er muss die Konfigurationsdatei »config.inc.php«<br />

sowie die Zugriffssteuerung<br />

in ».htaccess« aus dem alten<br />

Verzeichnis in das neue kopieren,<br />

n die Dateiberechtigungen korrigieren,<br />

n wenn nötig das Cache-Verzeichnis neu<br />

anlegen,<br />

n den Update-Prozess anstoßen, entweder<br />

über den Browser im Setup-Modus<br />

oder auf der Kommandozeile mit »php<br />

setup.php ‐‐update«.<br />

Fehler im Updatevorgang protokolliert<br />

das Logfile, das in »config.inc.php« eingetragen<br />

ist. Als letzten Schritt bringt<br />

der Tine-Admin im Setup-Tool unter dem<br />

Menüpunkt »Anwendungs‐Verwaltung«<br />

alle gewünschten Tine-Komponenten<br />

auf den aktuellen Stand. Das Tool markiert<br />

dazu bereits automatisch alle noch<br />

zu aktualisierenden Programme, sodass<br />

ein Klick auf »Anwendung aktualisieren«<br />

vollkommen ausreicht.<br />

Enthält ein Update neue Anwendungen,<br />

die bis dato noch nicht verfügbar waren,<br />

muss der Admin diese erst aktivieren,<br />

bevor sie den Tine-Benutzern zur Verfügung<br />

stehen. Das erledigt er, als Administrator<br />

im GUI von Tine 2.0 angemeldet,<br />

in der »Admin«-Komponente.<br />

An Tine 2.0 fällt sofort die moderne,<br />

übersichtliche Ajax-Oberfläche auf. Kristinas<br />

GUI ist sehr einfach zu bedienen<br />

Mittelstands-Groupware<br />

Ursprünglich als Fork von E-Groupware<br />

[4] entstanden (Tine ist ein Akronym<br />

von „This is not E-Groupware 2.0“ und<br />

wird „Tein“ ausgesprochen), findet Tine<br />

Zuspruch vor allem in mittelständischen<br />

Unternehmen. Mirco Rohloff von der<br />

Rohloff AG in Fuldatal bei Kassel schätzt<br />

vor allem den direkten Draht und die einfache<br />

Erweiterbarkeit der Software:<br />

„Tine 2.0 ist bei uns seit 2011 im Einsatz<br />

und überzeugt uns in allen wichtigen<br />

Punkten: Das System ist robust, einfach<br />

zu installieren, stellt geringe Anforderungen<br />

an Betrieb und Pflege und den Admin<br />

nicht vor Herausforderungen. Viele Abhängigkeiten<br />

gibt’s nicht, anders als bei<br />

anderen Groupwares reichen ein Webserver<br />

und MySQL. Die Anwender sind<br />

binnen einer Stunde eingearbeitet und<br />

finden genau die Funktionen vor, die sie<br />

für die tägliche Arbeit brauchen. Durch<br />

den kurzen Draht zu den Entwicklern haben<br />

wir den nötigen Support, wenn wir<br />

kurzfristig eine Erweiterung benötigen.“<br />

Abbildung 2: Zu einer Adresse blendet Tine 2.0 auch gleich die entsprechende Kartenansicht ein.


Sysadmin<br />

www.linux-magazin.de Tine 2.0 08/2013<br />

60<br />

Abbildung 3: Kontakte verwalten und verknüpfen ist die Spezialität von Tine 2.0.<br />

Im Kern umfasst Tine 2.0 einen IMAP-<br />

Webmail-Client, eine Aufgabenverwaltung,<br />

Zeiterfassung, Adressbuch (Abbildung<br />

3) und ein CRM-Modul (Abbildung<br />

4) inklusive optionaler Asterisk-VoIP-Anbindung.<br />

Nahezu alle Tine-Anwendungen<br />

sind untereinander verknüpft, so können<br />

User etwa eine Aufgabe an einen Termin<br />

anhängen oder eine E-Mail mit einem<br />

Lead aus dem CRM-Modul verknüpfen.<br />

Vor allem die Aufgaben und die Adressen<br />

sind eng mit dem CRM-Modul verzahnt,<br />

das die Verwaltung und Wiedervorlage<br />

von Leads erlaubt.<br />

Tine 2.0 basiert auf einem modularen<br />

Konzept mit PHP-Innenleben und bietet<br />

Unterstützung für gängige Datenbanken,<br />

SMTP-Server sowie Mailprotokolle. Es<br />

verfügt über ein ausgefeiltes Berechtigungskonzept,<br />

ein Admin-GUI (Abbildung<br />

5) sowie eine handliche Kommandozeile.<br />

Die Software lässt sich vielfältig<br />

in die RZ-Umgebung integrieren, zum<br />

Beispiel durch Anbindung an LDAP-Verzeichnisse.<br />

„Unter der Haube finden sich<br />

recht weit reichende Anpassungs- und<br />

Erweiterungsmöglichkeiten, sei es bei<br />

der Erstellung von Themes, Export- oder<br />

Importprofilen oder bei der Integration<br />

mit anderen Drittanwendungen über das<br />

bereitgestellte Json-RPC-API“, erklärt<br />

Cornelius Weiss von Metaways.<br />

Synchronisation on Board<br />

Ein Highlight für mobile Anwender<br />

dürften die Synchronisationsfähigkeiten<br />

mit Smartphones und anderen mobilen<br />

Endgeräten darstellen, die Tine 2.0 seiner<br />

Active-Sync-Schnittstelle verdankt.<br />

Kristina hat hier vor allem für bessere<br />

Skalierbarkeit gesorgt, der Server belastet<br />

bei Synchronisierungsprozessen nun<br />

CPU und Speicher weniger.<br />

Rohloff: „Wir synchronisieren mit Tine<br />

2.0 nicht nur Termine, Adressen und Aufgaben,<br />

sondern auch Adress- und Kalendergruppen<br />

auf I-OS-Geräten. So können<br />

wir auch auf den mobilen Endgeräten<br />

zwischen Mitarbeiter-, Kunden- und<br />

Privat-Daten unterscheiden. Mit Android<br />

geht das nur über Extra-Apps.“ Anwender,<br />

die auf Desktop-Programme wie<br />

Thunderbird oder Apples Ical noch nicht<br />

verzichten können, greifen per Caldav<br />

und Carddav auf ihre Daten zu. Der noch<br />

recht neue Filemanager ist zudem auch<br />

per Webdav erreichbar.<br />

Dateimanager<br />

Die Release Milan brachte 2012 endlich<br />

den lange erwarteten Dateimanager, der<br />

eine zentrale Datei-Ablage mit Verknüpfungen<br />

in die entsprechenden Module bereitstellt.<br />

Im Tine-Setup muss der Admin<br />

den zentralen Speicherpfad für alle Dokumente<br />

eintragen, damit der integrierte<br />

Dateimanager funktioniert.<br />

Er ermöglicht es Usern, direkt innerhalb<br />

der Groupware Dateien und Dokumente<br />

in privaten oder gemeinsamen Ordnern<br />

zu verwalten. Einfache Datei-Operationen<br />

wie das Hoch- oder Herunterladen, Umbenennen<br />

und Löschen per Drag & Drop<br />

sind möglich. Zu jeder Datei kann der Benutzer<br />

Meta-Informationen wie Beschreibungen,<br />

Notizen und Tags hinterlegen<br />

sowie die Historie einsehen (Abbildung<br />

6). Ein Versionierungsmechanismus ist<br />

integriert, jedoch gibt es für ihn noch<br />

kein User-Interface.<br />

Entscheidend am Dateimanager ist dessen<br />

Integration in andere Tine-Anwendungen,<br />

dabei sind sogar n:m-Beziehungen<br />

möglich. Der Anwender kann beispielsweise<br />

einem Adressbuch-Eintrag eine<br />

Datei anhängen. Auch der umgekehrte<br />

Weg ist möglich: Mit einer Datei kann<br />

er einen Kontakt verknüpfen, was zwar<br />

praktisch ist, jedoch beim täglichen Arbeiten<br />

schnell den noch recht schlichten<br />

Charakter des Dateimanagers offenbart.<br />

Ein Viewer ist nicht integriert, sodass<br />

Vor- und Nachteile<br />

‚ Moderne Oberfläche<br />

‚ Gut auf Unternehmensbelange zugeschnittener<br />

Funktionsumfang<br />

‚ Synchronisationsfunktionen<br />

‚ Kontinuierliche Weiterentwicklung<br />

‚ Guter Community-Support (Forum), kommerzieller<br />

Support verfügbar<br />

„ Fehlende Hierarchie in Adressdaten<br />

„ Kein Webclient für mobile Geräte<br />

„ Unvollständige, unübersichtliche, teilweise<br />

veraltete Dokumentation<br />

Active Sync konfigurieren<br />

Active-Sync-Geräte erwarten eine URL der<br />

Form »http://Webserver/Microsoft‐Server‐ActiveSync«.<br />

Der Tine-2.0-Vhost muss dafür<br />

lediglich mit entsprechenden Rewrite-Regeln<br />

ausgestattet sein. Ein Weg führt über die<br />

».htaccess«-Datei:<br />

RewriteEngine on<br />

RewriteRule Microsoft‐Server‐ActiveSync(.*)U<br />

index.php?frontend=activesync<br />

[E=REMOTE_USER:%{HTTP:Authorization},L,QSA<br />

Das setzt voraus, dass Tine 2.0 im Hauptverzeichnis<br />

des Vhost installiert ist.<br />

Application-Manger<br />

Das Active-Sync-Modul ist standardmäßig im<br />

Paket enthalten, jedoch muss der Admin es zunächst<br />

im Setup-Menü installieren und dann im<br />

Tine-Admin-GUI unter »Application‐Manager«<br />

aktivieren. Anschließend kann er die Active-<br />

Sync-URL im Browser testweise aufrufen und<br />

sich mit einem gültigen User einloggen.


Benutzer eine Datei nicht direkt online<br />

einsehen können. Beim Verknüpfen präsentiert<br />

er einfach alle Dateien, auf die<br />

der Anwender Zugriff hat, als Liste, die<br />

dieser zwar mit Stichworten filtern kann,<br />

die jedoch keine Verzeichnishierarchien<br />

enthält. Das ginge auch übersichtlicher.<br />

Zielgruppe Unternehmen:<br />

Human-Resources-Addon<br />

Recht neu ist ein kleines Modul für die<br />

Personalverwaltung, das die Administration<br />

von Mitarbeitern mit allen persönlichen<br />

Daten erlaubt und das die Release<br />

Kristina um Krankheits- und Urlaubstage<br />

erweitert hat.<br />

Das Modul (Abbildung 7) ist nicht Bestandteil<br />

des Kernpakets, sondern steht<br />

im Downloadbereich bereit. Der Admin<br />

muss es herunterladen und im Hauptordner<br />

von Tine 2.0 auspacken. Im Setup-<br />

GUI wählt er »Anwendung installieren«,<br />

anschließend aktiviert er es im Admin-<br />

Modul. Nach dem<br />

nächsten Anmeldevorgang<br />

ist die Personalverwaltung<br />

sichtbar.<br />

Verbesserungspotenzial<br />

Abbildung 4: Verwaltung des Lead-Status im CRM-Modul.<br />

Leider haben sich die<br />

Entwickler bei der<br />

Konzeption der Datenstrukturen<br />

einen ziemlichen<br />

Patzer erlaubt:<br />

Das Adressensystem<br />

unterscheidet nicht zwischen Adressen<br />

und Kontakten beziehungsweise Ansprechpartnern.<br />

Das zwingt Anwender<br />

Firmenadressen redundant anzulegen,<br />

für jede Kontaktperson extra. Das zu ändern<br />

sieht die Roadmap [6] vor.<br />

Verbesserungspotenzial findet sich auch<br />

bei der ansonsten gelungenen Oberfläche:<br />

Die reagiert gelegentlich etwas träge<br />

auf Klicks, was wohl auch damit zusammenhängt,<br />

dass sich viele Dialoge als<br />

Popups öffnen.<br />

Tine 2.0 existiert seit Anbeginn ausschließlich<br />

als Open-Source-Software,<br />

alle Anwender kommen ohne zusätzliche<br />

Kosten in den Genuss des vollen<br />

Funktionsumfangs. Freiwilligen Community-Support<br />

leistet das Forum [7], nach<br />

Aussage von Anwendern funktioniert<br />

der meist gut und schnell. Wer sich mit<br />

Tine 2.0 08/2013<br />

Sysadmin<br />

www.linux-magazin.de<br />

61<br />

JETZT NEU<br />

AM KIOSK!<br />

Mit DVD für<br />

nur 12,80 Euro<br />

Hier gleich bestellen:<br />

medialinx-shop.de/ubuntu-spezial


Sysadmin<br />

www.linux-magazin.de Tine 2.0 08/2013<br />

62<br />

Abbildung 5: Das Tine-Setup-GUI ist übersichtlich und auf das Nötigste reduziert.<br />

festzulegen, damit sich nicht eine eher<br />

chaotische Nutzung ausbreitet.<br />

Mehr Breite als Tiefe<br />

Tine 2.0 ist wie viele freie Vertreter seiner<br />

Zunft eher auf Breite als auf Tiefe<br />

ausgelegt. Wer gerne Featurelisten vergleicht,<br />

dürfte hier kaum zufrieden sein.<br />

So manche Funktionen fehlen, die man<br />

von großen Produkten wie Exchange,<br />

Lotus Notes oder Zimbra kennt und für<br />

selbstverständlich ansehen mag. Bei Tine<br />

2.0 gehen Übersicht und Einfachheit vor<br />

Vollständigkeit, das Gesamtpaket ist stimmig.<br />

Und da die Weiterentwicklung bisher<br />

von Konsequenz geprägt war, dürfte<br />

auch in Zukunft der Funktionsumfang<br />

noch weiter wachsen. (mfe) n<br />

Abbildung 6: Der integrierte Dateimanager erlaubt das Verknüpfen von Dokumenten mit Datensätzen.<br />

den Details von Tine 2.0 beschäftigen<br />

will, wird Unterstützung allerdings auch<br />

brauchen, da die Dokumentation [8] lückenhaft<br />

ist.<br />

Support vom Hersteller selbst erhält,<br />

wer eine der kostenpflichtigen Editionen<br />

unter Vertrag nimmt. Das hat Vorteile:<br />

Die Softwarepflege für die Open-Source-<br />

Variante endet nach einem halben Jahr,<br />

der kommerziellen Variante gewährt Metaways<br />

hingegen volle 2 Jahre. Patches<br />

und Updates stellt die Firma den Support-Kunden<br />

in Form zertifizierter Pakete<br />

zur Verfügung. Wer Tine 2.0 schnell und<br />

ohne Installation ausprobieren möchte,<br />

findet unter [9] eine Live-Demo.<br />

Fazit<br />

Tine 2.0 bietet sich für unterschiedlichste<br />

Szenarien in Teams an. Seine Stärken<br />

spielt es besonders dann aus, wenn vernetztes<br />

und mobiles Arbeiten im Vordergrund<br />

steht. Für Unternehmen kleiner bis<br />

mittlerer Größe mag Tine 2.0 sogar als<br />

einziges, zentrales Unternehmensportal<br />

geeignet sein, da es alle wichtigen Anforderungen<br />

von Kalender über Adressen<br />

bis hin zu CRM und Personalverwaltung<br />

abdeckt und dabei auch Aspekte wie die<br />

Synchronisation der Daten mit Smartphones<br />

berücksichtigt.<br />

Die Bedienung ist zumeist spielend einfach,<br />

sodass keine aufwändigen Schulungen<br />

erforderlich sind. Wie so oft<br />

kommt es bei Applikationen dieser Art<br />

eher darauf an, sinnvolle Konventionen<br />

innerhalb des Teams oder Unternehmens<br />

Infos<br />

[1] Tine 2.0: [http:// www. tine20. org]<br />

[2] Metaways: [http:// www. metaways. de]<br />

[3] Andrej Radonic, „Freier Ausblick“, fünf<br />

Webgroupware-Tools ohne Outlook:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 2012/​08<br />

[4] Tine-2.0-Download:<br />

[http:// www. tine20. org/ download. html]<br />

[5] E-Groupware:<br />

[http:// www. egroupware. org]<br />

[6] Roadmap: [https:// forge. tine20. org/​<br />

mantisbt/ roadmap_page. php]<br />

[7] Forum: [http:// www. tine20. org/ forum/]<br />

[8] Wiki: [http:// www. tine20. org/ wiki/ index.​<br />

php/ Main_Page]<br />

[9] Tine-2.0-Live-Demo:<br />

[https:// demo. tine20. org]<br />

Der Autor<br />

Andrej Radonic arbeitet<br />

(vor allem rund um<br />

Virtualisierung, Cloud und<br />

Groupware) als freier Journalist,<br />

Fachbuchautor und<br />

Vorstand der Intersales AG.<br />

Abbildung 7: Mit dem Personalmodul verwaltet Tine 2.0 auch Urlaubs- und Krankheitstage von Mitarbeitern.


Admin-MAGAZIN<br />

im Jahres-Abo<br />

Praktisch anwendbares Wissen und ausführliche<br />

Hintergrundberichte für alle IT-Administratoren<br />

von <strong>Linux</strong>, Unix und Windows.<br />

JETZT Zugreifen<br />

und über 15% Sparen!<br />

IHRE vorteile<br />

• 6 Ausgaben im Jahr Frei Haus<br />

• inklusive 6 ADMIN-Specials<br />

(unter anderem zu IPv6 und SSD)<br />

als PDF-Download im Wert von<br />

über 35 Euro<br />

sichern Sie Sich Ihr<br />

gratis Multitool!<br />

Jetzt abonnieren:<br />

www.admin-magazin.de/abo<br />

(Printabo 49,90 Euro, digitales Abo nur 44,90 Euro)<br />

• Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@admin-magazin.de •


Sysadmin<br />

www.linux-magazin.de Docker 08/2013<br />

64<br />

<strong>Linux</strong> Containers verwalten mit Docker<br />

Volle Ladung<br />

Docker ist das englische Wort für Hafenarbeiter. Das passt, denn die gleichnamige Software füllt und verschiebt<br />

Container – die unter anderem Webanwendungen enthalten. Rob Knight<br />

© 36clicks, 123RF.com<br />

schine mit Hardware-Emulation, sondern<br />

bietet einen separaten Prozessraum<br />

samt Netzwerkschnittstelle an, in dem<br />

die Anwendungen laufen. Das Control-<br />

Groups-Feature des Kernel ermöglicht es,<br />

Prozessgruppen zu isolieren. Das hat den<br />

Nachteil, dass unter LXC keine Nicht-<br />

<strong>Linux</strong>-Systeme laufen. Dafür brauchen<br />

die Container weniger Ressourcen und<br />

starten spürbar schneller.<br />

Docker ist ein noch junges Open-Source-<br />

Werkzeug [1], das Deployments von Betriebssystemen<br />

und Webanwendungen<br />

um eine Facette erweitert. Es erzeugt und<br />

verwaltet Betriebssystem-Images mit vorkonfigurierten<br />

(Web)-Anwendungen, die<br />

der Admin verändert, teilt und auf Servern<br />

mit einer nur rudimentären <strong>Linux</strong>-<br />

Basis ausführt.<br />

LXC (<strong>Linux</strong> Containers) heißt die Technologie,<br />

von der Docker abhängt und die<br />

auch Heroku für die Dynos einsetzt [2].<br />

Sie steckt seit Version 2.6.29 im Kernel<br />

und stützt sich auf das Control-Groups-<br />

Feature [3]. Einen stabilen Support für<br />

LXC gibt es erst seit Kernel 3.8, was zur<br />

Folge hat, dass Docker nur auf Maschinen<br />

mit neueren Kernelversionen läuft [4].<br />

Containerschiffe<br />

Ein typisches Beispiel für eine Docker-<br />

Ladung wäre der LAMP-Stack. Er hängt<br />

von einer festgelegten PHP-Version ab,<br />

einer bestimmten Apache-Konfiguration<br />

und der Installation spezifischer Pakete.<br />

LAMP auf verschiedene Plattformen<br />

verteilen ist aufwändig, weil es unterschiedliche<br />

Paketmanager gibt und es zu<br />

Konflikten mit den Konfigurationen anderer<br />

Anwendungen kommen kann, die in<br />

derselben Umgebung laufen.<br />

Docker isoliert die Komponenten in so<br />

genannten Containern, sodass Apache<br />

auf einem eigenen Betriebssystem läuft,<br />

frei von Konflikten mit Prozessen auf<br />

dem Hostsystem. Diese Container lassen<br />

sich als Images speichern, die man<br />

lokal bearbeiten, teilen und auf Server<br />

ausliefern kann. Der Admin muss also<br />

keine vorgegebene Umgebung für eine<br />

Anwendung schaffen, denn die bringt<br />

ihre Abhängigkeiten gleich mit.<br />

Das Prinzip erinnert stark an die Images<br />

für virtuelle Maschinen, funktioniert<br />

aber ein wenig anders. Im Unterschied<br />

zu Hypervisor-basierten VMs wie Xen<br />

ist LXC keine vollständige virtuelle Ma-<br />

Befehlsgewalt<br />

Docker verbindet LXC mit weiteren unterstützenden<br />

Technologien und verpackt<br />

das Ganze in einem intuitiv zu bedienenden<br />

Kommandozeilen-Interface. Zu den<br />

absetzbaren Kommandos gehört unter<br />

anderem »diff«, das es ermöglicht, das<br />

Dateisystem eines Containers mit dem<br />

seines Ursprungs-Image abzugleichen.<br />

Der »commit«-Befehl wiederum erstellt<br />

ein neues Image, in das die an dem Container<br />

vorgenommenen Änderungen einfließen,<br />

und »push« schickt die Kopie<br />

eines Image an den Docker-Index [5], ein<br />

Repository mit öffentlich zugänglichen<br />

Docker-Images.<br />

Nicht alles passt<br />

Für einige Anwendungsfälle eignet sich<br />

Docker weniger: Container können keine<br />

abweichenden Architekturen emulieren<br />

oder etwas anderes als den <strong>Linux</strong>-Kernel<br />

beherbergen. Auch die Sicherheit ist noch<br />

Work in Progress: User Namespaces, eine<br />

wichtige Komponente, um unerlaubte<br />

Zugriffe auf die Ressourcen des Hostsystems<br />

zu verhindern, gibt es erst ab<br />

Kernel 3.8.<br />

Ein anderes Problem von Docker besteht<br />

darin, dass es das stapelbare Dateisystem<br />

Aufs benötigt, das nicht viele Kernel von


1 gezeigte Webseite aufrufen. Ab diesem<br />

Punkt kann der Admin beliebige Open-<br />

Source-Webanwendungen installieren,<br />

etwa Drupal oder Wordpress.<br />

Docker 08/2013<br />

Sysadmin<br />

Abbildung 1: Im Docker-Container läuft ein Apache-Server, der eine einfache Webseite ausliefert.<br />

Hause aus unterstützen. Daher arbeiten<br />

die Entwickler an einer Migration zu Btrfs<br />

oder Overlay-FS [6].<br />

Container beladen<br />

Als Beispielanwendung soll hier ein<br />

Docker-Image entstehen, auf dem ein<br />

LAMP-Stack läuft. Naturgemäß muss der<br />

Admin Docker dafür zunächst installieren.<br />

Wer Ubuntu 12.10/​13.04 verwendet,<br />

ist aus dem Schneider und folgt einfach<br />

der Anleitung auf der Docker-Webseite.<br />

Andere Nutzer lassen Ubuntu entweder<br />

in einer virtuellen Maschine laufen oder<br />

greifen zu inoffiziellen Docker-Paketen,<br />

die es etwa für Open Suse 12.3 [7] und<br />

Gentoo [8] gibt.<br />

Im nächsten Schritt gilt es, ein Basis-<br />

Image für den Container auszusuchen.<br />

Die Wahl fällt auf Centos, aber auch<br />

Ubuntu, Debian und weitere Distributionen<br />

stehen bereit. Docker bietet ein Verzeichnis<br />

öffentlich zugänglicher Images<br />

an, das man über »docker pull« anzapft:<br />

$ docker pull centos<br />

Ist das Basis-Image heruntergeladen, lässt<br />

sich ein neuer Container erzeugen:<br />

$ docker run ‐i ‐t centos /bin/bash<br />

Das startet die Bash als interaktiven Prozess.<br />

Der Entwickler tippt nun Befehle ein<br />

und führt im Container Anwendungen<br />

aus. Weil es sich bei dem Centos-Image<br />

nur um eine Minimalversion handelt,<br />

installiert der Docker-Nutzer den LAMP-<br />

Stack nach – natürlich über Yum:<br />

$ yum install httpd php php‐common php‐cli U<br />

php‐pdo php‐mysql php‐xml php‐mbstring U<br />

mysql mysql‐server<br />

Speichert der Admin den Container als<br />

Image, steht ihm für spätere Experimente<br />

bereits ein Container mit vorinstalliertem<br />

LAMP-Stack zur Verfügung. Nach<br />

Eingabe von »exit« landet der Docker-<br />

Anwender dann wieder auf der Konsole<br />

des Hostsystems. Hiermit zeigt<br />

$ docker ps ‐a<br />

ID IMAGE COMMAND CREATED STATUS COMMENT U<br />

PORTS<br />

1758290cbef2 centos:latest /bin/bash U<br />

8 minutes ago Exit 0<br />

das derzeit laufende Image an. Die Nummer<br />

unter »ID« identifiziert den eingesetzten<br />

Container. Sie lässt sich verwenden,<br />

um mit Docker ein neues Image zu<br />

erstellen:<br />

$ docker commit 1758290cbef2 LAMP<br />

Das trägt nun den Namen »LAMP«. Ein<br />

weiterer Befehl listet alle existierenden<br />

Images auf:<br />

$ docker images<br />

REPOSITORY TAG ID CREATED<br />

LAMP latest 7c34f69c3f93 9 seconds ago<br />

Der neue Container lässt sich dann wie<br />

das eben erstellte Image über<br />

$ docker run ‐i ‐t LAMP / bin/bash<br />

aufrufen. Der Befehl »php ‐v« prüft, ob<br />

PHP läuft.<br />

LAMP in Aktion<br />

Ein Webserver nützt nicht viel, wenn<br />

er keine Webseiten anbietet. Um einen<br />

Netzwerkzugriff zu ermöglichen, bietet<br />

Docker die Option, Ports vom Container<br />

an den Host weiterzuleiten. Dazu schließt<br />

der Entwickler den aktuellen Container<br />

und ruft ihn neu auf, wobei er zugleich<br />

Port 80 weiterleitet:<br />

$ docker run ‐i ‐t ‐p :80 LAMP /bin/bash<br />

Läuft Docker in einer virtuellen Maschine,<br />

muss der Admin zusätzlich Port 80 der<br />

VM an einen Port der Hostmaschine weiterleiten.<br />

Über den Befehl<br />

$ echo "" > U<br />

/var/www/html/index.php<br />

baut der Admin eine kleine Testwebseite<br />

und ruft dann über »/sbin/service httpd<br />

start« den Apache-Server auf. Über den<br />

Browser lässt sich nun die in Abbildung<br />

Es geht ein Schiff …<br />

Docker ist derzeit noch Alphasoftware<br />

und nicht serienreif. Features wie die Fähigkeit,<br />

Speichermedien des Hostsystems<br />

in den Container einzubinden, befinden<br />

sich noch in der Entwicklung. Ein Projekt,<br />

um Docker als Backend-Anbieter für<br />

Vagrant (ein Tool für virtuelle Entwicklungsumgebungen)<br />

zu nutzen, ist zwar<br />

bereits in Arbeit, aber noch nicht fertig.<br />

Das Build-Filesystem, über das sich die<br />

Image-Erstellung skripten lässt, könnte<br />

durchaus bedienungsfreundlicher sein.<br />

Nicht zuletzt dauern die Aufräumarbeiten<br />

nach einem Build-Fehler noch deutlich<br />

zu lange.<br />

Allerdings betreibt das Docker-Team einen<br />

sehr offenen Entwicklungsprozess<br />

auf Github [9]. Dort diskutieren sie neue<br />

Ideen öffentlich mit der Community.<br />

Langfristig möchte das Team eine breitere<br />

Palette an Kerneln, verschiedene Backends<br />

sowie Alternativen zu LXC und Aufs<br />

anbieten. Eine Plugin-Architektur soll<br />

eine bessere Integration in bestehende<br />

Cloudprovisioning-Tools ermöglichen.<br />

Docker ist aber schon jetzt eine großartige<br />

Idee, die aktuelle Version demonstriert<br />

schön das Potenzial Container-basierter<br />

Deployments. (kki) <br />

n<br />

Infos<br />

[1] Docker: [https:// index. docker. io]<br />

[2] Heroku nutzt LXC:<br />

[https:// www. heroku. com/ how/ relax]<br />

[3] Kern-Technik-Ausgabe zu LXC: [http://​<br />

www. linux‐magazin. de/ Ausgaben/ 2011/ 02/​<br />

Kern‐Technik/ %28language%29/ ger‐DE]<br />

[4] Was Docker voraussetzt:<br />

[http:// docs. docker. io/ en/ latest/​<br />

installation/ kernel. html]<br />

[5] Docker-Index: [https:// index. docker. io]<br />

[6] Dateisystem für Docker: [https:// github.​<br />

com/ dotcloud/ docker/ issues/ 443]<br />

[7] Docker für Open Suse 12.3: [https:// github.​<br />

com/ dotcloud/ docker/ issues/ 359]<br />

[8] Docker für Gentoo: [https:// github. com/​<br />

dotcloud/ docker/ issues/ 313]<br />

[9] Docker auf Github:<br />

[https:// github. com/ dotcloud/ docker]<br />

www.linux-magazin.de<br />

65


dedizierter<br />

1Gbit/s<br />

Port


Hardware<br />

www.linux-magazin.de Firefox OS 08/2013<br />

68<br />

Keon und Peak: Zwei Firefox-OS-Smartphones im Test<br />

Jungfüchse<br />

Javascript, HTML 5 und jede Menge <strong>Linux</strong>- und Android-Erbschaften: Das ist Firefox OS, das Smartphone-<br />

Betriebssystem, mit dem Mozilla auf den Markt der günstigen Smartphones drängt. Das <strong>Linux</strong>-<strong>Magazin</strong> hat die<br />

ersten beiden Referenz-Entwicklergeräte Keon und Peak von Geeksphone getestet. Nils Faerber, Peter Kreussel<br />

© pictureguy66, 123RF.com<br />

Offen, frei und modern – das will Mozilla<br />

mit dem Firefox OS sein. Die auch „Boot<br />

to Gecko“ oder kurz B2G [1] genannte<br />

Open-Source-Alternative zu gängigen<br />

Smartphone-Betriebssystemen soll bekannte<br />

Technologien verwenden, um<br />

dem System eine möglichst schnelle und<br />

einfache Verbreitung zu ermöglichen.<br />

Gleichzeitig soll der Ressourcenverbrauch<br />

gering bleiben, damit Hersteller ihre Geräte<br />

mit möglichst günstiger Hardware<br />

ausstatten können.<br />

Emerging Markets<br />

Mozilla zielt hiermit ganz klar in Richtung<br />

der so genannten Emerging Markets,<br />

also der Schwellenländer, in denen<br />

Smartphones wegen ihres Preises noch<br />

eine recht geringe Verbreitung und billige<br />

Geräte somit gute Chancen haben.<br />

Mozilla legt es aber nicht darauf an,<br />

selbst einen Applikationen-Shop oder<br />

Bezahldienste anzubieten, sondern betont,<br />

dass Mobilfunkbetreiber oder andere<br />

Interessenten diese selbst aufbauen<br />

können. Die Foundation versteht sich nur<br />

als Entwickler und Anbieter der Software,<br />

nicht als Diensteanbieter.<br />

Mit dieser klaren Trennung macht Mozilla<br />

bei Firefox OS praktisch alles anders als<br />

bei anderen derzeit verfügbaren Smartphone-Betriebssystemen.<br />

Die Frage bleibt,<br />

wie die Foundation die Entwicklung mittel-<br />

und langfristig finanzieren möchte,<br />

wenn sie weder mit dem System selbst<br />

noch mit den Diensten drum herum ein<br />

kommerzielles Interesse verfolgt.<br />

Simulant<br />

Seit gut einem halben Jahr gibt es den<br />

Firefox OS Simulator (Abbildung 1, [2])<br />

als Plugin für den normalen Firefox-<br />

Browser. Der Simulator ist als Testumgebung<br />

durchaus auch für Entwickler<br />

spannend, die nicht gleich ein Telefon<br />

kaufen und Firefox OS darauf installieren<br />

möchten. Außerdem ist er für die Applikationsentwicklung<br />

nützlich. Bereits in<br />

seiner ersten Version zeigte er eine flüssig<br />

bedienbare grafische Oberfläche, die den<br />

etablierten Smartphone-Systemen lediglich<br />

in der Fülle der verfügbaren Applikationen<br />

nachstand.<br />

Allerdings läuft der Simulator auch auf einem<br />

leistungsfähigen PC. Die spannende<br />

Frage lautet daher, wie das Firefox OS<br />

sich auf echter Telefonhardware verhalten<br />

würde, die ja oft über eine wesentlich<br />

schwächere Hardware-Ausstattung<br />

verfügt. Dass dies kein Problem darstellt,<br />

sollen jetzt die beiden Geeksphone-Geräte<br />

[3] Keon und Peak (Abbildungen 2<br />

und 3) beweisen.<br />

Architektur<br />

Herzstück von Firefox OS ist – wenig<br />

verwunderlich – Mozillas Webengine<br />

Gecko. Alle Anwendungen, mit denen<br />

ein Benutzer unter Firefox OS interagiert,<br />

sind Webapplikationen und bestehen aus<br />

Javascript, CSS und HTML, welche die<br />

Gecko-Engine zum Leben erweckt (siehe<br />

Abbildung 4).<br />

Die Anbindung der Engine an die Hardware<br />

realisiert eine neue Schicht namens<br />

Gonk. Die greift über recht bekannte Bibliotheken<br />

und Schnittstellen auf die Hardware<br />

zu. Für die Treiberanbindung an<br />

DELUG-DVD<br />

Auf der Delug-DVD finden Sie<br />

DELUG-DVD<br />

die drei Varianten des Firefox-OS-Addon für<br />

den Browser Firefox (auf Windows, <strong>Linux</strong>,<br />

Mac) als XPI-Datei.


Abbildung 1: Im Firefox OS Simulator, einem<br />

Browser-Addon, können Interessierte mit wenigen<br />

Mausklicks erste Gehversuche unternehmen.<br />

konkrete Hardware verfolgt Mozilla einen<br />

ähnlichen Ansatz wie Ubuntu mit seiner<br />

Touch-Distribution für Mobiltelefone und<br />

Tablets [4]: Es verwendet existierende<br />

Treiber und Bibliotheken, die bereits für<br />

Android-Versionen auf der entsprechenden<br />

Hardware zur Verfügung stehen.<br />

Ergo läuft auf der untersten Ebene ein<br />

<strong>Linux</strong>-Kernel.<br />

Gonk, Gecko und Gaia<br />

Oberhalb von Gonk unterstützen diverse<br />

Web-APIs das Runtime Environment<br />

Gecko beim Zugriff auf beispielsweise<br />

Sensoren, Kameras, Bluetooth oder NFC.<br />

Auf dem Application Layer läuft Gaia,<br />

das vielleicht noch am ehesten mit dem<br />

Launcher unter Android vergleichbar ist.<br />

Gaia stellt den Startbildschirm dar, zeigt<br />

Benachrichtigungen an (Abbildungen 5,<br />

6, 7, 10 und 11) und ermöglicht es dem<br />

Benutzer, Applikationen zu starten und<br />

zu verwalten.<br />

Das Ausführen nativer <strong>Linux</strong>-Applikationen<br />

ist in der aktuellen Architektur nicht<br />

vorgesehen, was gerade für die Hersteller<br />

von Spielen oder Applikationen, die<br />

etwas mehr Rechenleistung benötigen,<br />

ein Problem darstellen könnte. Der Ansatz,<br />

HTML, CSS und Javascript für die<br />

Applikationsentwicklung einzusetzen,<br />

ist zudem auch nicht neu. Bereits Palms<br />

Web OS [5] basierte darauf, gestattete<br />

aber auch native Applikationen.<br />

Das Entwickeln und Etablieren einer<br />

neuen Softwareplattform ist kompliziert,<br />

insbesondere ohne konkrete Hardware,<br />

auf der sie entwickelt und auch verwendet<br />

werden kann. Viele auf freier<br />

Software basierende Handy-Projekte für<br />

<strong>Linux</strong> und die darauf aufbauenden Mobilgeräte<br />

sind bereits an diesem Problem<br />

gescheitert oder fristen immer noch ein<br />

Nischendasein.<br />

Mozilla hat dieses Problem erkannt und<br />

mit dem Partner Geeksphone aus Spanien<br />

gleich zwei Entwicklertelefone allgemein<br />

verfügbar gemacht. Die Geräte unterstreichen<br />

auch gleich den Anspruch Mozillas,<br />

Firefox OS auf vergleichsweise sparsamer<br />

Hardware gut und fließend zum Laufen<br />

zu bringen. Tabelle 1 zeigt die Spezifikationen<br />

der beiden Geräte.<br />

Keon und Peak<br />

Das kleinere, orangefarbene Keon ist<br />

mit einem 1-GHz-Singlecore-Qualcomm-<br />

Snapdragon und HVGA-TFT-Display (320<br />

mal 480) ausgestattet, das große, weiße<br />

Peak glänzt mit einem doppelkernigen<br />

1,2-GHz-Snapdragon, einem IPS-Display<br />

in qHD (540 mal 960) und einer zusätzlichen<br />

Frontkamera. Die preisbewusste<br />

Herstellung merkt man den Geräten zwar<br />

an, es sind keine Smartphones der Luxusklasse,<br />

doch für den Preis von nur 110<br />

Euro für das Keon und 180 Euro für das<br />

Peak wird das auch kein Kunde erwarten.<br />

Die Verarbeitung ist gut, alle Teile passen,<br />

nichts klappert oder steht über.<br />

Tabelle 1: Testgeräte<br />

Keon<br />

Das Gehäuse des Peak besteht aus glattem<br />

weißen Kunststoff, das des Keon ist<br />

in dem für Firefox charakteristischen<br />

Orange gehalten, auch ist seine Oberfläche<br />

leicht aufgeraut, was den haptischen<br />

Eindruck gegenüber dem Peak deutlich<br />

verbessert.<br />

Grundsätzlich sind die Geräte sehr ähnlich<br />

ausgestattet: Die wichtigsten Unterschiede<br />

zwischen Peak und Keon sind<br />

das geringer auflösende Display, die langsamere<br />

Singlecore-CPU und die fehlende<br />

Frontside-Kamera des Keon. Sein Akku<br />

ist auch etwas kleiner ausgefallen, doch<br />

die 220 mAh Unterschied gleicht der<br />

zweite Core des Peak vermutlich schnell<br />

wieder aus.<br />

Arbeitsspeicher und Kernel<br />

Nach dem Start stehen für den Userspace<br />

auf dem Keon 406 MByte und auf dem<br />

Peak 384 MByte RAM zur Verfügung. Dies<br />

liegt daran, dass die Geräte Teile des 512<br />

MByte umfassenden Arbeitsspeichers für<br />

die restliche Hardware des Qualcomm-<br />

System-on-Chip (SoC) reservieren, zum<br />

Beispiel für den Open-GL-Grafikpuffer<br />

oder auch für das UMTS-/​GSM-Modem.<br />

Als <strong>Linux</strong>-Kernel kommt auf dem Keon<br />

Version 3.0.8 zum Einsatz, das Peak verwendet<br />

den Kernel 3.0.21.<br />

In der Praxis verhalten sich beide Geräte<br />

sehr ähnlich. Nach nur 21 Sekunden<br />

haben beide den Kaltstart hinter sich<br />

gebracht, es zeigt sich der Gaia-Startbildschirm.<br />

Die Bedienung ist auf beiden<br />

Smartphones sehr fließend und steht<br />

durchschnittlichen Android-Geräten in<br />

nichts nach. Lediglich der Umfang der<br />

Peak<br />

CPU Qualcomm Snapdragon S1 7225AB, 1 GHz Qualcomm Snapdragon S4 8225, 2x 1,2 GHz<br />

UMTS 2100/​1900/​900 (3G HSPA) 2100/​1900/​900 (3G HSPA)<br />

GSM 850/​900/​1800/​1900 (2G EDGE) 850/​900/​1800/​1900 (2G EDGE)<br />

Bildschirm<br />

3,5-Zoll-HVGA (320 x 480 Pixel) mit<br />

Multitouch<br />

4,3-Zoll-QHD (540 x 960 Pixel) mit IPS-<br />

Multitouch<br />

Kamera 3 Megapixel 8 Megapixel (Rückseite), 2 Megapixel<br />

(Front), LED-Blitz<br />

ROM/​RAM 4 GByte (ROM), 512 MByte (RAM) 4 GByte (ROM), 512 MByte (RAM)<br />

Ausstattung<br />

Micro-SD, Wifi (n), Bluetooth 2.1 EDR,<br />

Radio FM, Licht- und Proximity-Sensor,<br />

G-Sensor, GPS, Micro-USB<br />

Batterie 1800 mAh 2020 mAh<br />

Preis 110 Euro 180 Euro<br />

Micro-SD, Wifi (n), Bluetooth 2.1 EDR,<br />

Radio FM, Licht- und Proximity-Sensor,<br />

G-Sensor, GPS, Micro-USB<br />

Firefox OS 08/2013<br />

Hardware<br />

www.linux-magazin.de<br />

69


Hardware<br />

www.linux-magazin.de Firefox OS 08/2013<br />

70<br />

Abbildung 2: Die beiden Firefox-OS-Geräte unterscheiden sich kaum von anderen<br />

modernen Smartphones der unteren Mittelklasse …<br />

Abbildung 3: … nur die Farbe (Weiß beim Peak, Orange beim Keon) und das Logo<br />

auf dem Rücken machen den Unterschied.<br />

einstellbaren Optionen entspricht noch<br />

nicht dem, was der Smartphone-User<br />

heutzutage erwartet.<br />

Schnelle Updates<br />

Doch Mozilla arbeitet auch hier fleißig<br />

weiter: Als die Telefone in der <strong>Magazin</strong>-<br />

Redaktion angeliefert wurden, gab es beispielsweise<br />

weder ein deutsches Tastaturlayout<br />

für die virtuelle Bildschirmtastatur<br />

noch eine deutsche Sprachlokalisierung.<br />

Die lieferte schließlich ein Update kurz<br />

vor Redaktionsschluss.<br />

Der Funktionsumfang dieser ersten Version<br />

entspricht dem, was man heute von<br />

einem Smartphone erwarten kann. Eine<br />

Adressbuchapplikation mit Unterstützung<br />

für ein lokales Adressbuch sowie<br />

eine Importfunktion für Kontakte von<br />

der SIM-Karte und für Facebook-Kontakte<br />

sind vorhanden. Leider lassen sich keine<br />

weiteren Kontaktquellen einbinden.<br />

Der Kalender kann einen lokalen oder<br />

einen Netzwerk-basierten Kalender von<br />

Google, Yahoo oder aus Caldav verwalten.<br />

Die Optionen für Kalendereinträge<br />

sind noch sehr eingeschränkt, beispielsweise<br />

unterstützt die Applikation keine<br />

Terminwiederholungen.<br />

Minimale Software<br />

Auch die restlichen vorinstallierten Anwendungen<br />

wie die Medienwiedergabe,<br />

Kamera und Galerie funktionieren eher<br />

rudimentär, erfüllen aber für den Anfang<br />

ihren Zweck. Allerdings ließen sich auf<br />

dem Keon keine Videos wiedergeben.<br />

Den Ton spielte das Handy zwar ab, aber<br />

das Bild blieb schwarz. Auch ein E-Mail-<br />

Client ist vorhanden, doch unterstützt er<br />

kein SSL für den Verbindungsaufbau zum<br />

Mailserver, weshalb der Einsatz nicht guten<br />

Gewissens zu empfehlen ist.<br />

Als Quelle für weitere Applikationen<br />

bieten sich zwei Optionen an: Zunächst<br />

gibt es eine extern gepflegte Bookmark-<br />

Sammlung mit Dutzenden Links zu<br />

JS-Libraries<br />

for Developers<br />

Security<br />

OEM Libs<br />

OEM Libs<br />

Application Layer (HTML 5, Javascript, CSS)<br />

Utillity Libraries<br />

Building Blocks<br />

Gaia<br />

Core<br />

(Certified Apps)<br />

Webseiten mit Web-Apps, welche die<br />

Entwickler unter Firefox OS getestet haben.<br />

Sie legen Verknüpfungen auf dem<br />

Startbildschirm an, die wie Lesezeichen<br />

auf die eigentlichen Onlinedienste verweisen,<br />

ohne Onlineverbindung sind<br />

sie nicht verwendbar. Als zweite Quelle<br />

gibt es den Firefox OS Marketplace, der<br />

System Apps<br />

Open Web Platform Interfaces<br />

Web-APIs<br />

• Contacts<br />

• Settings<br />

• Web Telephony,<br />

Web SMS, MMS<br />

• NTC, Bluetooth<br />

• Web Activities<br />

• System XHR<br />

• Alarm System Messages<br />

• Camera, Media Storage,<br />

Web RTC<br />

• Open Web Apps APIs<br />

• HTML 5 APIs<br />

Gecko-Runtime<br />

Infrastruktur-Layer (Gonk)<br />

Open Source Libraries<br />

• Input/Touch<br />

• Open GLES<br />

• WiFi Supp<br />

• Audio/Video<br />

• Rild<br />

• Power Management<br />

• Camera<br />

• GPS<br />

• Gyroscope<br />

Betriebssystem<br />

<strong>Linux</strong>-Kernel, OEM Drivers, OEM Modem Firmware<br />

Hot Apps<br />

Trusted<br />

Packaged Apps<br />

• Sensors, Geo Location,<br />

Battery, Vibration<br />

• Network Connections,<br />

UICC<br />

• Most Pay, Trusted UI<br />

• USB<br />

• LEDs, Buttons<br />

• Vibration<br />

• Bluetooth<br />

Abbildung 4: Komplex, aber überwiegend mit bekannten Komponenten – die Architektur von Firefox OS.


als Beispiel für eine mögliche<br />

Implementierung eines App-<br />

Shops gilt. Dort gibt es so<br />

genannte Packaged Applications,<br />

die all ihre Daten lokal<br />

auf dem Telefon installieren<br />

und somit, zumindest prinzipiell,<br />

auch ohne eine aktive<br />

Internetverbindung funktionieren.<br />

Zur Laufzeit ist es für<br />

den Benutzer allerdings fast<br />

nicht unterscheidbar, ob ein<br />

Icon nur ein Lesezeichen oder<br />

eine Packaged-App ist.<br />

Firefox OS 08/2013<br />

Hardware<br />

www.linux-magazin.de<br />

71<br />

Früher Stand und<br />

nicht alles OSS<br />

Abbildung 5: Die Einstellungsdialoge<br />

ähneln denen anderer Systeme.<br />

Abbildung 6: Die Notifications erlauben<br />

den Schnellzugriff auf Daten.<br />

Abbildung 7: Ein einfacher App-Store<br />

ist bereits enthalten.<br />

Auch an weiteren Stellen bemerkt<br />

man den frühen Stand der Entwicklung:<br />

Das deutlich höher auflösende<br />

Display des Peak sorgt beispielsweise in<br />

einigen Applikationen für Probleme, weil<br />

sie Schriften viel zu klein darstellen. Offenbar<br />

wertet Firefox OS die DPI nicht<br />

überall korrekt aus. Auch das Scrollverhalten<br />

wirkt manchmal seltsam: Der zu<br />

scrollende Inhalt wird schneller verschoben,<br />

als sich der Finger auf dem Touchscreen<br />

bewegt. Diese beiden Effekte sind<br />

nur auf dem Peak zu beobachten, nicht<br />

aber auf dem Keon.<br />

Mozilla verspricht, dass Firefox OS auf<br />

offenen Standards und quelloffener Soft-<br />

3 AusgAben für nur 5,90 E<br />

Jetzt bestellen: 3 Hefte zum Preis von einem. Sie sparen 66 %!<br />

Neu!<br />

Kennenlernangebot:<br />

3 AusgAben<br />

für nur 5,90 E<br />

Jetzt bestellen unter:<br />

www.android–user.de/miniabo<br />

Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@android-user.de


Hardware<br />

www.linux-magazin.de Firefox OS 08/2013<br />

72<br />

lich keine Hardwaretreiber entwickeln.<br />

Der Kniff, die existierenden Android-Treiber<br />

zu verwenden, ist in der Tat recht<br />

clever, doch dem Freie-Software-Enthusiasten<br />

wird dieser Umstand sicherlich<br />

etwas unangenehm aufstoßen.<br />

Realistisch betrachtet sollte aber klar sein,<br />

dass ein modernes Smartphone mit völlig<br />

freier Software beim aktuellen Stand der<br />

Entwicklung praktisch nicht umzusetzen<br />

ist. Sobald etwa eine Hardwarebeschleunigung<br />

für die grafische Oberfläche<br />

oder eine Multimedia-Unterstützung ins<br />

Spiel kommen, hat freie Software meist<br />

schlechte Karten.<br />

Ein anschließender Aufruf des »build.<br />

sh«-Skripts zieht zudem über ADB, die<br />

Android Debug Bridge, gut 250 MByte an<br />

Daten von einem angeschlossenen Keonoder<br />

Peak-Telefon. Für das eigenhändige<br />

Kompilieren des Betriebssystems muss<br />

der Entwickler also eines dieser Telefone<br />

besitzen und die Android-Entwicklungswerkzeuge<br />

installiert haben, um per ADB<br />

ware basieren soll. Das ist auch für alle<br />

Schichten ab Gonk aufwärts richtig, doch<br />

darunter sieht es weniger offen aus. Die<br />

Basisquellen für das B2G-Buildsystem<br />

sind auf Github [6] verfügbar. Das darin<br />

enthaltene »config.sh«-Skript setzt<br />

die weiteren Repositories auf und lädt<br />

deren Inhalte herunter – über 13 GByte<br />

Source code! Ein großer Teil dieser Quellen<br />

stammt aus Androids Open-Source-<br />

Projekt – B2G verwendet sie zum Aufbau<br />

des Basis-<strong>Linux</strong>-Systems, zu dem etwa<br />

die Libc oder die Shell gehören.<br />

Innerhalb der ausgecheckten Quelltexte<br />

befindet sich auch ein Unterverzeichnis<br />

»vendor«, das im Falle des Peak knapp<br />

20 MByte Binärdateien enthält, für die es<br />

scheinbar keinen Sourcecode gibt. Diese<br />

implementieren Hardware-nahe Funktionen,<br />

auf die Gonk aufsetzt und die von<br />

Qualcomm ursprünglich für Android entwickelt<br />

und angeboten wurden.<br />

Daraus kann man Mozilla keinen Vorwurf<br />

machen, die Foundation will ja schließdie<br />

Daten zu holen. Immerhin kann er<br />

die Debug Bridge auch zur späteren Applikationsentwicklung<br />

verwenden.<br />

Browser reloaded!<br />

Auf der beschriebenen Hardware läuft ein<br />

einziges Programm, nämlich der Browser.<br />

Die Telefon-Apps, die der Benutzer als<br />

Anwendungen wahrnimmt, sind technisch<br />

betrachtet nur Webseiten, die ein<br />

Klick auf einen Link öffnet. Doch handelt<br />

es sich nicht um statische HTML-Seiten,<br />

sondern um Webanwendungen. Dank<br />

zahlreicher neuer Internetstandards verschwimmen<br />

die Unterschiede zu nativen<br />

Desktop-Programmen inzwischen noch<br />

stärker, als dies bei den Ajax-Anwendungen<br />

der ersten Generation der Fall war<br />

(Abbildung 8). Da sie auch offline funktioniert,<br />

ist die Client-seitige Javascript-<br />

Laufzeitumgebung besonders gefragt,<br />

doch der Einsatz Server-seitiger Programmierung<br />

ist ebenfalls möglich.<br />

Tabelle 2: Neue Webtechnologien in Firefox<br />

Technologie<br />

Multimedia<br />

Sound<br />

Video<br />

Canvas<br />

Web-GL<br />

Storage<br />

Cache-API<br />

Local Storage<br />

File-API<br />

Filehandle-APIs<br />

Indexed DB<br />

Hardware/​Kommunkation<br />

Web-Workers (Threads)<br />

Web-API (Zugriff auf Telefonhardware)<br />

Server-sent Events<br />

Websockets<br />

Open-Web-Apps-Standard<br />

Überblick<br />

Installation<br />

Lokale Installation<br />

Permissions<br />

Browser-Bedienelemente verbergen<br />

Benutzer-Interface<br />

Touch-API<br />

Drag & Drop-API<br />

HTML-5-Forms (etwa bei Datumseingabe)<br />

URL<br />

[https:// developer. mozilla. org/ en‐US/ docs/ Web/ HTML/ Element/ audio]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ Web/ HTML/ Element/ video]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ HTML/ Canvas]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ Web/ WebGL]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ HTML/ Using_the_application_cache]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ Web/ Guide/ DOM/ Storage]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ Web/ Reference/ File_System_API]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ WebAPI/ FileHandle? redirectlocale=en‐US& redirectslug=Web<br />

API%2FFileHandle_API]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ IndexedDB]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ Web/ API/ Worker]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ WebAPI]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ Server‐sent_events]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ WebSockets]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ Web/ Apps], [https:// developer. mozilla. org/ en‐US/ docs/ Web/​<br />

Apps/ Getting_Started]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ Web/ Apps/ JavaScript_API]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ Web/ Apps/ Packaged_apps]<br />

[https:// wiki. mozilla. org/ WebAPI]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ Web/ Apps/ Manifest]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ Web/ Guide/ DOM/ Events/ Touch_events]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ DragDrop/ Drag_and_Drop]<br />

[https:// developer. mozilla. org/ en‐US/ docs/ Web/ HTML/ Forms_in_HTML]


Die HTML 5 zugerechneten Technologien<br />

bieten grafische und multimediale Features,<br />

die sich in HTML 4 nicht ohne Plugins<br />

umsetzen ließen: Freiform-Zeichnen<br />

in Echtzeit (Canvas), Animationen (CSS3,<br />

SVG), Sound ohne Plugins (»audio«‐Tag),<br />

sogar Open-GL-basierte 3-D-Grafik (Web<br />

GL). Moderne Browser speichern auch<br />

lokal (Local Storage, Files-API) Datenmengen,<br />

die weit über die Größe eines<br />

Cookies hinausgehen.<br />

Mit Indexed DB stellen sie sogar eine einfache<br />

NoSQL-Datenbank bereit. Cache-<br />

Manifests weisen den Browser an, Ressourcen<br />

aus dem Internet auch nach Beendigung<br />

der Onlineverbindung verfügbar<br />

zu halten. Außerdem setzen Websockets<br />

und Server-sent-Ereignisse endlich eine<br />

echte, bidirektionale Kommunikation<br />

zwischen Client und Server um. Web-<br />

Worker starten Hintergrund-Threads, die<br />

das GUI nicht blockieren.<br />

Ungeachtet dessen, ob diese neuen APIs<br />

bereits weit genug verbreitet sind, um sie<br />

auf öffentlichen Websites zu benutzen:<br />

Für Apps in Firefox OS stehen sie auf<br />

jeden Fall zur Verfügung. Tabelle 2 listet<br />

die Mozilla-Dokumentationen für die genannten<br />

Technologien auf.<br />

Harte Ware<br />

Webanwendungen, die sich wie normale<br />

Android- oder I-OS-Apps verhalten<br />

sollen, brauchen geregelten Zugriff auf<br />

die Hardware des mobilen Geräts. Das<br />

Geolocation-API des W3C [7], mit dem<br />

ein Browser auf die aktuellen GPS-Koordinaten<br />

zugreift, ist ein Anfang, aber offensichtlich<br />

nicht genug: Die Phone-Apps<br />

benötigen Zugriff auf den Mobilfunk-Status,<br />

die Display-Beleuchtung oder den<br />

Batteriezustand.<br />

Tabelle 3: Frameworks und Bibliotheken<br />

Frameworks<br />

High-Level-Frameworks<br />

Marionette-JS<br />

Thorax<br />

Low-Level-Frameworks<br />

Backbone-JS<br />

Jquery (DOM-Abstraktion)<br />

User-Interface<br />

Jquery-UI<br />

Sencha-Touch<br />

Sproutcore<br />

URL<br />

[http:// marionettejs. com]<br />

Diesen Hardwarezugriff<br />

regelt Mozillas<br />

vorwiegend auf Firefox<br />

OS konzentriertes<br />

Web-API (Abbildung<br />

9, [8]). Ein Manifest<br />

[9] fordert die Berechtigungen<br />

an, die der<br />

Anwender einer bestimmten<br />

Domain<br />

(Anwendung) gewähren<br />

oder verweigern<br />

kann [10].<br />

Manche Berechtigungen<br />

bleiben grundsätzlich<br />

lokal installierten<br />

Apps (Packaged-Apps)<br />

vorbehalten, einige sogar<br />

nur den privilegierten<br />

Apps aus Mozillas<br />

App-Store. Diesen<br />

Status erhalten sie<br />

erst nach einer Prüfung<br />

durch den Store-<br />

Betreiber. Firefox weist<br />

Packaged-Apps bei der<br />

Installation lokal eine<br />

zufällige Pseudo-Domain<br />

zu, die das Rechtemanagement<br />

des<br />

Browsers analog zu<br />

nor malen Internetseiten<br />

handhabt.<br />

Look & Feel<br />

[http:// walmartlabs. github. io/ thorax/]<br />

[http:// backbonejs. org]<br />

[http:// jquery. com]<br />

[http:// jqueryui. com]<br />

[http:// www. sencha. com/ products/ touch]<br />

[http:// sproutcore. com]<br />

Multimedia<br />

• Sound, Video<br />

• Canvas<br />

Storage<br />

• Cache-API<br />

• Local Storage<br />

Hardware / Kommunikation<br />

Open-Web-Apps-Standards<br />

Benutzer-Interface<br />

• Touch-API<br />

• Drag & Drop-API<br />

Webserver (remote)<br />

• Web-Workers (Treads)<br />

• Web-API (Zugriff<br />

auf Telefonhardware)<br />

• lokaler Anwendungsstarter<br />

• Permissions<br />

Server-seitige<br />

Logik<br />

Web-App<br />

lokal<br />

Javascript<br />

Phone<br />

• Web GL<br />

• Kamerazugriff<br />

• File-API<br />

• Indexed DB<br />

• Websockets<br />

• Server-sent Events<br />

• Browser-Bedienelemente<br />

verbergen<br />

• HTML-5-Forms<br />

(z.B. Datumseingabe)<br />

Abbildung 8: Zahlreiche neue Technologien aus dem HTML-5-Umfeld machen<br />

den Browser zu einer potenten Laufzeitumgebung für Phone-Apps.<br />

Auf der obersten Stufe stehen so genannte<br />

zertifizierte Apps, also Firefox-OS-<br />

Systemanwendungen. Sie allein erlangen<br />

kritische Berechtigungen wie das Wählen<br />

einer Telefonnummer. Auch bei ihnen<br />

handelt es sich um Webanwendungen,<br />

deren Rechte der Browser gemäß den<br />

Vorgaben des Web-API<br />

[8] verwaltet.<br />

Trotz Einsatz fortschrittlicher<br />

HTML-<br />

5-Techniken stellt<br />

sich noch kein App-<br />

Feeling ein (Abbildung<br />

10), solange die<br />

Programme in einem<br />

Browserfenster starten.<br />

Der Open-Web-<br />

Apps-Standard [11]<br />

gestattet das Ausblenden<br />

aller Browser-Elemente.<br />

Zugleich erscheint ein Start-Icon<br />

im Startmenü des Gaia-GUI.<br />

Bei Firefox OS landen die Starter-Icons<br />

in einem Homescreen, der sich optisch<br />

nicht von dem anderer Mobilsysteme<br />

(Abbildung 11) unterscheidet. Den Aufbau<br />

von Elementen wie dem Starter-Icon<br />

regelt das bereits erwähnte App-Manifest.<br />

Jede Webseite kann Apps über eine<br />

Javascript-Schnittstelle [12] mit Firefox<br />

OS verknüpfen.<br />

Nicht ganz lokal<br />

In der Folge fühlt sich die Software zwar<br />

wie ein lokales Programm an, doch<br />

gerade das kann täuschen. Unter Umständen<br />

lädt der Browser weiterhin den<br />

gesamten Anwendungscode bei jedem<br />

Start von einem Server aus dem Internet.<br />

Bei den so installierten Apps muss<br />

Firefox OS 08/2013<br />

Hardware<br />

www.linux-magazin.de<br />

73


Hardware<br />

www.linux-magazin.de Firefox OS 08/2013<br />

74<br />

es sich nämlich nicht zwangsläufig um<br />

Packaged-Apps handeln, die Firefox OS<br />

ins lokale Filesystem entpackt. Nur anhand<br />

des Starter-Icon kann der Anwender<br />

lokale Apps bislang nicht von Internetdiensten<br />

unterscheiden.<br />

Auch bleibt die Browser-Runtime, in<br />

der die Anwendung läuft, ein Internetbrowser:<br />

Dieser öffnet Links auf HTML-<br />

Seiten ohne jeden Hinweis darauf, dass<br />

er gerade das lokale Filesystem verlässt.<br />

Ob sich Anwendern mit dieser Aufweichung<br />

der Grenzen zwischen Online- und<br />

Offline-Inhalten wohl fühlen, wird sich<br />

zeigen. Potenziell entstehen dabei neue<br />

Sicherheitsprobleme.<br />

Webentwickler müssen nur wenig dazulernen,<br />

um eine App für Firefox OS zu<br />

entwickeln: Es kommen die gleichen Basistechniken<br />

zum Einsatz wie bei normalen<br />

Webanwendungen. Entwickler dürfen<br />

die Programme sowohl Server- als auch<br />

Client-seitig in Javascript umsetzen.<br />

Die erste spezifische Herausforderung ist<br />

der kleine Bildschirm. Doch in diesem<br />

Punkt unterscheiden sich die Apps kaum<br />

von den lange etablierten Mobilversionen<br />

größerer Websites. Die einzige Voraussetzung<br />

für die Installation als App ist das<br />

Manifest [9], eine einfache Json-Datei.<br />

Natürlich werden die Anwender Clientseitig<br />

programmierte Apps bevorzugen,<br />

die dank Cachemanagement oder lokaler<br />

Installation auch offline nutzbar sind.<br />

Javascript ist ausgereift<br />

Das Handwerk der Client-seitigen Programmierung<br />

in Javascript hat längst<br />

einen gewissen Reifegrad erreicht: Javascript<br />

ist inzwischen so performant wie<br />

Herkunft<br />

certified<br />

(Systemanwendungen)<br />

Berechtigungs-<br />

Level<br />

Hardware-<br />

Zugriffsrechte<br />

per API<br />

Internet<br />

allgemein<br />

(lokal + online)<br />

• Ambient Light Senior<br />

• Battery Status<br />

• Geo Location<br />

• Pointer Lock<br />

• Proximity<br />

• Device Orientation<br />

• Screen Orientation<br />

[...]<br />

viele der klassischen<br />

Skriptsprachen. Die<br />

Browser liefern einen<br />

Debugger mit,<br />

die meisten IDEs<br />

([13], [14]) unterstützen<br />

die Sprache<br />

gut. Es gibt auch<br />

eine reichhaltige<br />

Auswahl an Bibliotheken<br />

und Frameworks,<br />

die oft dem<br />

MVC-Paradigma folgen<br />

(Tabelle 3).<br />

Licht und<br />

Schatten<br />

So manche Animationseffekte, aber<br />

auch funktionale Features eines benutzerfreundlichen<br />

GUI lassen sich zwar<br />

in HTML 5 und CSS 3 leichter umsetzen<br />

als auf der Basis nativer grafischer<br />

Toolkits. Ein Vorteil von Firefox OS liegt<br />

aber darin, dass es mehr potenzielle Programmierer<br />

gibt, als bei Android oder<br />

I-OS: Praktisch jeder Webentwickler kann<br />

ohne größere Einstiegshürden loslegen.<br />

Dem stehen unbestreitbare Nachteile<br />

gegenüber: Javascript bleibt als Skriptsprache<br />

zwangsläufig langsamer als Java<br />

oder C++, was sich auch auf die Akkulebensdauer<br />

auswirkt.<br />

Was die Sicherheit angeht haben Browser<br />

keinen guten Ruf. Javascript ist zwar besser,<br />

als viele C++- oder Java-Entwickler<br />

denken, dennoch haften ihm Mängel<br />

an, zum Beispiel die Beschränkung von<br />

Fließkommazahlen auf 64 Bit. Ob das<br />

Konzept, die Online-​Offline-Grenze zugunsten<br />

einer konsistenten Bedienung<br />

App-Store<br />

priviledged<br />

(Prüfung durch<br />

App-Store erfolgt)<br />

• Contacts<br />

• Device Storage<br />

• TCP Socket<br />

Abbildung 10: Der Browser macht<br />

sich optisch rar: Web-Apps starten<br />

gewöhnlich im Fullscreen-Modus.<br />

Firefox OS<br />

• Bluetooth<br />

• Mobile Connection<br />

• Network Information<br />

• Network Stats<br />

• Telephony<br />

• Web SMS<br />

• WiFi Information<br />

[...]<br />

Abbildung 9: Je nach Herkunft erhalten die Webanwendungen, teilweise erst nach Bestätigung durch den<br />

Benutzer, unterschiedliche Rechte für den Hardwarezugriff.<br />

Abbildung 11: Die Buttons im Homescreen<br />

von Firefox OS sind nur Links<br />

auf HTML-Seiten.<br />

zu verwischen, bei den Benutzern auf<br />

Gegenliebe stößt, muss sich auch erst<br />

zeigen. (mfe) <br />

n<br />

Infos<br />

[1] Boot to Gecko Wiki:<br />

[https:// wiki. mozilla. org/ B2G]<br />

[2] Firefox OS Simulator als Plugin:<br />

[https:// addons. mozilla. org/ de/ firefox/​<br />

addon/ firefox‐os‐simulator/]<br />

[3] Geeksphone:<br />

[http:// www. geeksphone. com]<br />

[4] Ubuntu Touch:<br />

[https:// wiki. ubuntu. com/ Touch/]<br />

[5] Palm (HP) Web OS:<br />

[http:// de. wikipedia. org/ wiki/ HP_webOS]<br />

[6] Boot to Gecko auf Github:<br />

[https:// github. com/ mozilla‐b2g/]<br />

[7] Geolocation-API:<br />

[https:// developer. mozilla. org/ en‐US/​<br />

docs/ WebAPI/ Using_geolocation]<br />

[8] Web-API: [http:// wiki. mozilla. org/ WebAPI]<br />

[9] App-Manifest: [https:// developer. mozilla.​<br />

org/ en‐US/ docs/ Web/ Apps/ Manifest]<br />

[10] Permissions:<br />

[https:// developer. mozilla. org/ en‐US/​<br />

docs/ Web/ Apps/ App_permissions]<br />

[11] Open Web Apps: [https:// developer.​<br />

mozilla. org/ en‐US/ docs/ Web/ Apps]<br />

[12] App-Installation:<br />

[https:// developer. mozilla. org/ en‐US/​<br />

docs/ Web/ Apps/ JavaScript_API]<br />

[13] Netbeans für HTML 5:<br />

[https:// netbeans. org/ features/ html5/]<br />

[14] Eclipse für Javascript:<br />

[http:// www. eclipse. org/ downloads/​<br />

packages/ eclipse‐ide‐javascript‐web<br />

‐developers/ heliosrc2]


MEDIALINX<br />

IT-ACADEMY<br />

IT-Onlinetrainings<br />

Mit Experten lernen.<br />

powered by<br />

n Lernen Sie, wo und wann Sie möchten.<br />

n Sparen Sie Zeit und Kosten.<br />

n Bleiben Sie trotz zeitlicher Engpässe<br />

up-to-date.<br />

LPIC-1 / LPIC-2 Trainings<br />

LPIC-1 (LPI 101 + 102)<br />

mit Ingo Wichmann,<br />

<strong>Linux</strong>hotel<br />

499 €<br />

LPIC-2 (LPI 201 + 202)<br />

mit Marco Göbel,<br />

Com Computertraining GmbH<br />

499 €<br />

– die offiziellen Trainings<br />

mit Marco Welter,<br />

Zarafa Deutschland GmbH<br />

Zarafa Administrator<br />

249 €<br />

Zarafa Engineer<br />

249 €<br />

Effiziente BASH-Skripte<br />

mit Klaus Knopper,<br />

Gründer der Knoppix-Distribution,<br />

knopper.net<br />

199 €<br />

Einfache IMAP-Server mit Dovecot<br />

mit Peer Heinlein,<br />

Heinlein Support GmbH<br />

249 €<br />

Python für Systemadministratoren<br />

mit Rainer Grimm,<br />

science + computing AG<br />

199 €<br />

www.medialinx-academy.de


Forum<br />

www.linux-magazin.de Leserbriefe 08/2013<br />

78<br />

Auf den Punkt gebracht<br />

Leserbriefe<br />

Haben Sie Anregungen, Statements oder Kommentare? Dann schreiben Sie an [redaktion@linux-​magazin.​de].<br />

Die Redaktion behält es sich vor, die Zuschriften und Leserbriefe zu kürzen. Sie veröffentlicht alle Beiträge mit<br />

Namen, sofern der Autor nicht ausdrücklich Anonymität wünscht.<br />

GUI für Httrack<br />

06/​13, S. 46: Ich habe zu dem Artikel<br />

über Archivierung eine kleine Ergänzung.<br />

Unter <strong>Linux</strong> gibt es auch ein GUI<br />

für das Programm »httrack«, das Projekt<br />

heißt Httraqt und verwendet zurzeit Qt 4.<br />

Die Quelltexte findet man unter [http://​<br />

​sourceforge.​net/​projects/​httraqt/].<br />

E. Kalinowski, per E-Mail<br />

Auto Archive<br />

06/​13, S. 54: Das Backuptool Auto Archive<br />

von der DELUG-DVD 06/​2013 lässt<br />

sich zumindest unter Kubuntu 12.04 LTS<br />

nicht verwenden. Zunächst stören die<br />

Copyright-Angaben, und nach dem Entfernen<br />

all dieser Zeilen erzeugt das Skript<br />

immer noch einen Syntaxfehler.<br />

Manfred Rebentisch, per E-Mail<br />

Das Programm Auto Archive, kurz<br />

»aa«, läuft nur mit der Python-Version<br />

3. Ubuntu 12.04 installiert jedoch<br />

standardmäßig nur Python 2.7<br />

und verlinkt es entsprechend nach<br />

»/usr/bin/python«. Python 3 ist aber bereits<br />

im Repository von Ubuntu 12.04 enthalten<br />

und lässt sich mit »apt‐get install<br />

python3« nachinstallieren. Danach können<br />

Sie Auto Archive mit dem Kommando<br />

»python3 ./setup.py install« installieren.<br />

Dabei korrigiert der Installationsvorgang<br />

automatisch die Shebang-Zeile der<br />

Skripte, sodass sie künftig immer korrekt<br />

starten. (Uwe Vollbracht)<br />

Knoppix<br />

04/​13, S. 54: Zu Knoppix 7.1, Medialinx<br />

Cebit-Edition auf der DVD: Bei der Benutzung<br />

von Gparted sehe ich folgende<br />

Fehlermeldung: »Authentication is required<br />

to run the GParted Partition Editor«.<br />

Können Sie helfen?<br />

Nikolaus Hübner, per E-Mail<br />

Ein kleiner Fehler meinerseits. Eigentlich<br />

sollten alle Systemtools automatisch mit<br />

Rootrechten starten, durch ein Update<br />

von Gparted hat sich aber das Verfahren<br />

geändert. Das Programm können Sie in einem<br />

Terminalfenster mit »sudo gparted«<br />

dennoch als Root starten. Oder Sie ändern<br />

die Start-Rechte für das Programm dauerhaft,<br />

indem Sie folgende Einstellungsdatei<br />

bearbeiten:<br />

sudo leafpad /usr/share/polkit‐1/actions/U<br />

com.ubuntu.pkexec.synaptic.policy<br />

und dort alle Vorkommen von »auth_<br />

admin« durch »yes« ersetzen. (Klaus<br />

Knopper)<br />

n<br />

Jahres-dvd<br />

Ubuntu<br />

12.10<br />

Bootmenü mit 8<br />

Ubuntu-Varianten<br />

32+64 Bit<br />

2012<br />

• Zwölf Ausgaben komplett als<br />

HTML und PDF<br />

• Durchdachte Navigation, die<br />

mit jedem Brow ser funktioniert<br />

• Blitzschnelle Volltextsuche<br />

• Alle Listings<br />

Jetzt gleich bestellen!<br />

www.linux-magazin.de/DVD2012 oder 089 - 99 34 11 - 00


Bücher über Ruby sowie über Scipy und Numpy<br />

Tux liest<br />

Bücher 08/2013<br />

Forum<br />

Die Bücherseite widmet sich diesmal Skriptsprachen: Das erste Buch behandelt Ruby für alltagstaugliche Skripte,<br />

das zweite möchte mit Scipy und Numpy auch Wissenschaftler zu Python bringen. Mathias Huber, Hans-Georg Eßer<br />

www.linux-magazin.de<br />

79<br />

Management-Tools wie Puppet zeigen,<br />

dass neben Bash und Perl auch Ruby als<br />

Programmiersprache für Adminstrationsaufgaben<br />

taugt. Wie damit hochwertige<br />

Skripte für die Kommandozeile entstehen,<br />

erklärt David Bryant Copeland auf<br />

Englisch in „Build Awesome Command-<br />

Line Applications in Ruby“.<br />

Tools in Ruby<br />

Kapitel für Kapitel vermittelt der Autor,<br />

was ein gutes Programm ausmacht: Bedienungsfreundlichkeit<br />

für neue wie für<br />

erfahrene Nutzer, sinnvolle Standardeinstellungen<br />

und lesbare Dokumentation.<br />

Dabei lernt der Leser viel über Befehlszeilen-Tools<br />

im Allgemeinen: Kommandos,<br />

Schalter und Argumente gehören<br />

genauso dazu wie Exitcodes, Signale und<br />

die korrekte Benutzung von Standardund<br />

Fehlerausgabe.<br />

Das alles führt Copeland Schritt für<br />

Schritt in Ruby vor, mit zwei Beispielprogrammen,<br />

die einfach beginnen und<br />

im Laufe des Buches zu perfektionierten<br />

Anwendungen reifen.<br />

So vermittelt das Buch, wie die Programmiersprache<br />

mit der Klasse »Option-<br />

Parser« und Bibliotheken wie GLI Argumente<br />

verarbeitet sowie eine Hilfe-Option<br />

und eine Manpage direkt aus dem Anwendungscode<br />

erzeugt. Konfigurationsdateien<br />

im Yaml-Format und die Distribu-<br />

Info<br />

David Bryant Copeland:<br />

Build Awesome<br />

Command-Line Applications<br />

in Ruby<br />

Pragmatic Programmers,<br />

2012<br />

220 Seiten, 27 Euro<br />

ISBN 978-1-93435-691-3<br />

tion des selbst geschriebenen Codes als<br />

Rubygems sind weitere Themen.<br />

Schließlich kämmt der Autor den bisher<br />

produzierten Quelltext noch einmal<br />

durch, um mit Tests dessen Qualität zu<br />

sichern. Diese Reihenfolge ist aber nur<br />

dem Buchaufbau geschuldet: In der Praxis<br />

empfiehlt der Verfasser, die Tests als<br />

Erstes zu schreiben und Test Driven Development<br />

(TDD) zu betreiben.<br />

Copeland sieht Kommandozeilenprogramme<br />

in bester Unix-Tradition als Teile<br />

von Pipelines. Daher fordert er Ausgabeformate<br />

wie etwa CSV, die sich vom<br />

nächsten Tool wieder leicht einlesen lassen.<br />

Dem menschlichen Anwender dagegen<br />

gönnt er eine Pretty-Printing-Option,<br />

die sich angenehm lesen lässt.<br />

Mit seiner gründlichen Darstellung absolviert<br />

das Buch sowohl Pflicht als auch<br />

Kür mit Bravour. Der Anhang stellt weitere<br />

nützliche Frameworks und Gems für<br />

den Ruby-Programmierer vor.<br />

Python für Wissenschaftler<br />

Programmierer, die in Wissenschaft und<br />

Forschung mathematische Probleme mit<br />

großen Datensätzen bearbeiten, setzen<br />

in der Regel auf C und Fortran. Interpretierte<br />

Sprachen wie Python und Perl sind<br />

für diese Zwecke zu langsam. Eli Bresserts<br />

Buch „SciPy and NumPy“ möchte<br />

aber diese Zielgruppe darauf aufmerksam<br />

machen, dass Python dank zweier<br />

Pakete durchaus eine Alternative ist:<br />

Numpy erlaubt den optimierten Umgang<br />

mit mehrdimensionalen Arrays und Matrizen,<br />

Scipy setzt auf Numpy auf und<br />

bietet eine Vielzahl an mathematischen<br />

Funktionen aus verschiedenen Anwendungsbereichen.<br />

Die Einführung in Numpy ist gelungen<br />

und macht auch Neulingen klar, wo die<br />

Vorteile seiner Datentypen gegenüber<br />

klassischen Python-Listen liegen. Anders<br />

sieht es beim Scipy-Teil des Buches aus:<br />

Da selbst Mathematiker nur in wenigen<br />

Spezialgebieten gleichzeitig das nötige<br />

Expertenwissen haben, dürften bei den<br />

meisten Lesern große Teile unverständlich<br />

bleiben. Bressert wirft hier mit Fachbegriffen<br />

um sich, deren Bekanntheit er<br />

voraussetzt.<br />

Auch viele Beispielprogramme bleiben<br />

mangels Erklärungen unverständlich, sodass<br />

sie zwar illustrieren, dass Problemlösungen<br />

mit sehr kompaktem Python-<br />

Code gelingen, aber kaum die Anpassung<br />

an den eigenen Bedarf erlauben. Einige<br />

Abbildungen leiden außerdem darunter,<br />

dass der Autor sie nicht für den Schwarzweißdruck<br />

angepasst hat, so sind etwa<br />

verschiedenfarbige Funktionsgraphen<br />

dank ihres gleichen Grauwerts nicht<br />

mehr unterscheidbar.<br />

Wünschenswert wäre eine deutlich erweiterte<br />

Version des Buches, die mehr<br />

Erklärungen zu der zugrunde liegenden<br />

Mathematik und vor allem eine brauchbare<br />

Dokumentation der Beispielprogramme<br />

enthält. In der vorliegenden<br />

Form nützt es nur Lesern, die bereits mit<br />

den eingesetzten Methoden vertraut sind.<br />

Der Preis von rund 11 Euro erscheint für<br />

ein 60 Seiten dünnes Büchlein gerade<br />

noch akzeptabel, wenn man die recht<br />

kleine Zielgruppe bedenkt. n<br />

Info<br />

Eli Bressert:<br />

SciPy and NumPy<br />

O’Reilly, 2012<br />

60 Seiten<br />

11 Euro<br />

ISBN 978-1-4493-0546-8


Forum<br />

www.linux-magazin.de Recht 08/2013<br />

80<br />

Unternehmensdaten schützen und mit Rechtsmitteln verteidigen<br />

Schutztruppe<br />

Wer seine Unternehmensdaten wirksam schützen will, muss neben der Technik auch wehrhafte Verteidiger<br />

vorhalten. Denn ist der Schaden erst passiert, kann oft nur noch das Gesetz weiterhelfen. Fred Andresen<br />

spricht viel dafür, dass hier kein Versehen<br />

vorliegt, sondern dass die Regelung exakt<br />

so aussehen soll.<br />

Datenschutz ist eine Frage<br />

der Persönlichkeit<br />

© nejron, 123RF.com<br />

Wenn man vom Datenschutz in Unternehmen<br />

hört, denkt man zunächst an<br />

den Schutz personenbezogener Daten<br />

von Kunden oder Mitarbeitern des Unternehmens,<br />

nur selten an die Daten des<br />

Unternehmens selbst. Klar, ist doch stets<br />

die Rede von Personenbezug und so ein<br />

Unternehmen hat schließlich keine Persönlichkeit.<br />

Oder vielleicht doch?<br />

Person oder nicht?<br />

Wenn Unternehmen in unterschiedlichen<br />

Rechtsformen auftreten und – je nachdem,<br />

um welche Form es sich dabei handelt<br />

– auch eigene Rechte erwerben können,<br />

dann spricht man von juristischen<br />

Personen. Das sind Zusammenschlüsse<br />

von anderen Personen oder auch von<br />

bloßem Kapital, es gibt sie im privaten<br />

Bereich ebenso wie im Bereich der öffentlichen<br />

Verwaltung.<br />

Die Vermutung liegt nahe, dass eine juristische<br />

Person auch den Schutz ihrer<br />

Privatsphäre verdient wie der gemeine<br />

Bürger. Dem ist aber nicht so: Nach dem<br />

Wortlaut des Bundesdatenschutzgesetzes<br />

(BDSG, [1]), des Dreh- und Angelpunkts,<br />

wenn es um personenbezogene Daten<br />

geht, genießen nur natürliche Personen<br />

diesen Schutz, also Menschen.<br />

In Paragraf 3 des BDSG steht, dass personenbezogene<br />

Daten Einzelangaben über<br />

persönliche oder sachliche Verhältnisse<br />

einer bestimmten oder bestimmbaren natürlichen<br />

Person sind. Man hätte leicht<br />

durch bloßes Weglassen eines einzigen<br />

Wortes den Datenschutz auch auf jede<br />

andere Art von Personen und damit auch<br />

auf Unternehmen übertragen können –<br />

schließlich gibt es neben natürlichen nur<br />

noch juristische Personen.<br />

Weil der Gesetzgeber das entscheidende<br />

Wort aber explizit dazugeschrieben hat,<br />

Um zu verstehen, worum es sich dreht,<br />

hilft ein Blick in die jüngere Geschichte:<br />

1983 hatte das Bundesverfassungsgericht<br />

in einer wegweisenden Entscheidung<br />

[2] ein Grundrecht auf informationelle<br />

Selbstbestimmung und damit auf den Datenschutz<br />

erkannt.<br />

Dieses Grundrecht, so das Gericht, gewährleiste<br />

es dem Einzelnen, grundsätzlich<br />

selbst über Preisgabe und Verwendung<br />

seiner persönlichen Daten zu bestimmen.<br />

Das bedeutet einen Schutz des<br />

Einzelnen gegen unbegrenzte Erhebung,<br />

Speicherung, Verwendung und Weitergabe<br />

seiner persönlichen Daten.<br />

Das BVerfG hat dieses Grundrecht als<br />

besondere Ausprägung des bereits seit<br />

Langem grundrechtlich geschützten allgemeinen<br />

Persönlichkeitsrechts gesehen,<br />

das aus Artikel 2 Absatz 1 des Grundgesetzes<br />

bekannt ist. Mit anderen Worten:<br />

Jeder, der eine Persönlichkeit hat, hat ein<br />

Recht auf Datenschutz!<br />

Mailen Sie uns Ihre Fragen!<br />

Im monatlichen Wechsel mit aktuellen Fachbeiträgen<br />

lässt das <strong>Linux</strong>-<strong>Magazin</strong> in der Serie<br />

„Rechts-Rat“ Leserfragen durch einen<br />

Rechtsanwalt kompetent beantworten. Was<br />

immer Sie beschäftigt oder ärgert, oder was<br />

Sie einfach nur wissen möchten: Schreiben<br />

Sie eine entsprechende E-Mail an die Adresse<br />

[rechtsrat@linux-magazin. de].<br />

Die Themen dürfen von Software lizenzen bis<br />

zum Hardwarekauf reichen. Die Redaktion<br />

behält es sich vor, abgedruckte Zuschriften<br />

zu kürzen und eventuell enthaltene persönliche<br />

Daten zu ändern.


© Andriy Popov, 123RF.com<br />

Abbildung 1: Gerade weil sich Menschen zu einem Unternehmen zusammenschließen, werden sie vor Gericht<br />

auch oft wie eine juristische Person behandelt.<br />

Die logische Folgefrage muss dann lauten:<br />

Haben Unternehmen eine Persönlichkeit?<br />

Genau diese Frage ist unter<br />

den Juristen aber noch recht umstritten.<br />

Während eine Seite für eine Gleichstellung<br />

mit „echten“ Menschen nicht einmal<br />

einen Grund sieht, erkennen andere<br />

– aus dem unter Juristen kunstgerechten<br />

Herstellen eines Zusammenhangs zwischen<br />

bewährten Paragrafen – logisch<br />

zwingend auf eine Persönlichkeit auch<br />

bloßer Kapitalanhäufungen.<br />

Der Trend geht sicher dahin, auch Unternehmen<br />

so etwas wie Rechtspersönlichkeit<br />

zuzusprechen, was zur Folge haben<br />

dürfte, dass wohl auch der Grundrechtsschutz<br />

dieser Persönlichkeit ein Recht auf<br />

Datenschutz nach sich zieht.<br />

Grundrechte wirken aber primär nur<br />

als Abwehrrechte gegenüber dem Staat<br />

und nicht unmittelbar gegen Dritte. Das<br />

würde bedeuten, dass selbst dann, wenn<br />

ein echtes Datenschutzrecht zugunsten<br />

eines Unternehmens bestünde, es sich<br />

nicht gegen den Datenmissbrauch etwa<br />

eines Konkurrenten darauf berufen<br />

könnte. Weil aber Fundrechte auch in<br />

die Auslegung und Anwendung anderer<br />

Normen einwirken, festigt sich so auf<br />

jeden Fall das Recht der Unternehmen an<br />

den eigenen Daten.<br />

Fein verteilt<br />

Darüber hinaus existiert noch eine ganze<br />

Reihe von Vorschriften in speziellen Einzelgesetzen,<br />

die dieses Recht der Unternehmen<br />

an eigenen Daten regeln. Besonders<br />

wichtig im Bereich von Unternehmensdaten,<br />

gerade bezüglich Konkurrenz<br />

und Wettbewerb, ist das Gesetz gegen<br />

den unlauteren Wettbewerb: In den Paragrafen<br />

3, 17 oder 18 UWG findet man<br />

recht spezifische Schutzvorschriften, die<br />

den Umgang mit „Nachrichten“ und „Informationen“<br />

betreffen, die der Sphäre<br />

des Unternehmens angehören.<br />

Weil Unternehmen als juristische Personen<br />

auch Eigentum und ähnliche<br />

Rechte erwerben können, finden sich<br />

Schutzvorschriften über das „Eigentum“<br />

beziehungsweise die entsprechenden<br />

Immaterialgüterrechte an nicht verkörperten<br />

Daten auch im bürgerlichen<br />

Recht. Zum Beispiel setzen BGB [3] oder<br />

Strafrecht Normen, etwa über die Verletzung<br />

des persönlichen Lebens- und<br />

Geheimbereichs in den Paragrafen 201 ff.<br />

StGB [4]. Bemerkenswert in den Strafrechtsvorschriften<br />

ist, dass etwa bloße<br />

Betriebs- und Geschäftsgeheimnisse explizit<br />

aufgeführt sind – „bloße“ steht hier<br />

nur als Abgrenzung zu den persönlichen<br />

Lebensgeheimnissen, die nur Menschen<br />

haben können.<br />

Schadensersatz ist möglich<br />

Auch wenn die Normen des Strafrechts<br />

regelmäßig keine Schadensersatzansprüche<br />

zwischen Täter und Opfer statuieren,<br />

ist diese Form des Schadensausgleichs<br />

über die gewöhnlichen Zivilrechtsnormen<br />

– und damit auch vor dem Zivilgericht<br />

– möglich.<br />

Das bürgerliche Recht kennt den Anspruch<br />

auf Schadensersatz wegen unerlaubter<br />

Handlung, geregelt in Paragraf<br />

823 BGB. Jeder, der vorsätzlich oder fahrlässig<br />

eine ganze Reihe von Rechten eines<br />

anderen verletzt, ist zum Ersatz des Schadens<br />

verpflichtet. Zu den aufgezählten<br />

gehören Eigentum und „sonstige Rechte“<br />

– gleich im ersten Absatz der Vorschrift,<br />

der subsidiären Norm. Die gleiche Ersatzpflicht<br />

trifft nach Absatz zwei, der<br />

vorrangig anwendbaren Norm, aber auch<br />

den, der gegen ein Gesetz verstößt, das<br />

einen anderen schützen soll.<br />

Vor Gericht wird viel darüber gestritten,<br />

ob es sich bei einzelnen Vorschriften tatsächlich<br />

um ein Schutzgesetz handelt<br />

oder ob sie nur andere Sachen regeln sollen.<br />

Bei strafrechtlichen Normen, die den<br />

persönlichen Lebens- und Geheimbereich<br />

© ginasanders, 123RF<br />

Recht 08/2013<br />

Forum<br />

www.linux-magazin.de<br />

81<br />

Abbildung 2: Datenschutz ist ein Grundrecht, das primär als Abwehrrecht verstanden wird.


Forum<br />

www.linux-magazin.de Recht 08/2013<br />

82<br />

© Sergey Mironov, 123RF.com<br />

zwischen NSA und Internetfirmen wie<br />

Google und Apple aufgeflogen.<br />

Es geht um die alltäglichen, üblichen Berichte,<br />

Gutachten, Stellungnahmen und<br />

anderen Betriebs- und Geschäftsgeheimnisse,<br />

die man im Behördenverkehr selbst<br />

einreicht, weil man muss. Von Angaben<br />

über Giftstoffe, die bei der Produktion<br />

anfallen über die vollständigen Finanzunterlagen<br />

bei der Steuererklärung bis<br />

zu Verbindungsdaten aller Kunden des<br />

IT-Provider-Unternehmensbereichs.<br />

Abbildung 3: Den fairen Umgang zwischen Wettbewerbern regelt das Gesetz gegen unlauteren Wettbewerb.<br />

betreffen, liegt ganz klar ein Schutzgesetz<br />

vor. Stellt sich die Frage, was die Herleitung<br />

eines verfassungsrechtlichen Datenschutzrechts<br />

für Unternehmen bringt,<br />

wenn zivil- und strafrechtliche Normen<br />

ihre Daten bereits ausreichend schützen?<br />

In diesem Fall möge man einmal<br />

an das tatsächliche Bedrohungsszenario<br />

denken: Welche Rechte man an den eigenen<br />

Daten hat, wird vordringlich dann<br />

entscheidend, wenn man diese auf dem<br />

Rechtsweg schützen muss.<br />

Der primäre Schutz ist sicherlich der<br />

technische, der Zugriffsschutz durch<br />

Passwort und Firewall, durch Zugriffsberechtigung<br />

und Datensafe. Das ist<br />

der planbare, der fassbare, der „leichte“<br />

Schutz. Der zweite, der Rechtsschutz,<br />

kommt dann zum Tragen, wenn der erste<br />

versagt – aus welchen Gründen auch immer.<br />

Solange der erste Schutz wirkt, hat<br />

das Unternehmen allein die tatsächliche<br />

Verfügungsgewalt über die Daten. Sind<br />

diese jedoch erst aus diesem Schutzbereich<br />

entzogen, dann hilft allenfalls der<br />

zweite, der Weg zum Gericht (oder die<br />

Drohung damit).<br />

Überschaubarer Täterkreis<br />

aus, echte Hacker-Angriffe von außen<br />

dagegen nur etwa 20 Prozent.<br />

Neben diesen illegalen Beeinträchtigungen<br />

der Datenintegrität gibt es aber noch<br />

die gesetzlich vorgesehenen Pflichten,<br />

zu denen jede Menge Mitteilungs- und<br />

Offenbarungspflichten oder gar die Verpflichtung<br />

zur Einräumung einer unmittelbaren<br />

Zugriffsmöglichkeit durch staatliche<br />

Behörden gehören. Wenn der Staat<br />

auf Unternehmensdaten zugreift, nutzen<br />

zivilrechtliche Abwehr- oder Schadensersatzansprüche<br />

wenig.<br />

Dabei geht es nicht einmal um die geheimen<br />

oder verdeckten Eingriffe, mit denen<br />

eigene und fremde Behörden laufend<br />

Komunikationsdaten ausspähen – wie<br />

zuletzt im amerikanischen Rechtsraum<br />

durch die angebliche Zusammenarbeit<br />

Außer Haus ist ein Problem<br />

Ob freiwillig oder einer gesetzlichen<br />

Pflicht folgend herausgegeben oder durch<br />

Datenklau entwendet: Sind die Daten<br />

erst mal außer Haus, ist die tatsächliche<br />

Verfügungsgewalt flöten und die Justiz<br />

kommt ins Spiel. Wer weiß, wo seine<br />

Daten stecken, kann zumindest rechtliche<br />

Hilfe in Anspruch nehmen, damit der<br />

Dritte damit kein Unheil anrichtet – soll<br />

heißen, damit er sie nicht weitergibt oder<br />

missbraucht. Das klappt aber nur, wenn<br />

man sich auf ein Recht berufen kann.<br />

Gegenüber Ämtern und Behörden stützt<br />

sich so ein Anspruch – oder einer auf<br />

Verweigerung der Datenherausgabe – am<br />

besten auf ein Grundrecht.<br />

Im Grenzbereich entfaltet ein dem Unternehmen<br />

etwa zustehendes Grundrecht,<br />

das allgemeine Persönlichkeitsrecht, beim<br />

bereits bekannten Auffangtatbestand der<br />

unerlaubten Handlung Wirkung: Das<br />

allgemeine Persönlichkeitsrecht ist eines<br />

der in Paragraf 823 Absatz 1 genannten<br />

sonstigen Rechte. Wenn also kein anderer<br />

© Monika Wisniewska, 123RF.com<br />

Die Bedrohungsszenarien sind dabei<br />

vielfältig: Mitarbeiter entwenden Daten<br />

oder ermöglichen Betriebsfremden planwidrigen<br />

Zugang. Solche Verrats- oder<br />

Social-Engineering-Fälle machen nach<br />

glaubhaften Statistiken etwa 80 Prozent<br />

bei den Verletzungen der Datenintegrität<br />

Abbildung 4: Schadensersatz kann es auch geben, wenn eine unerlaubte Handlung vorliegt.


Schutz zuerkannt wird, wäre es hilfreich,<br />

wenn das Unternehmen ein eigenes Datenschutzrecht<br />

in Anspruch nehmen<br />

könnte. Unter dieser Voraussetzung wäre<br />

ein Anspruch auf Schadensersatz fast immer<br />

begründbar, also auch dann, wenn<br />

andere Anspruchsgrundlagen versagen.<br />

Schnelle Hilfe ist die einzig<br />

wahre<br />

Der Zeitfaktor ist kritisch, also ist in beiden<br />

Fällen der vorläufige Rechtsschutz<br />

das Mittel der Wahl. Gegen (bekannte)<br />

Datendiebe und Konkurrenten zieht man<br />

vors Zivilgericht, wo bei nicht auf Geld<br />

gerichteten Ansprüchen ein Antrag auf<br />

eine einstweilige Verfügung nach den Paragrafen<br />

935 ff. ZPO [5] weiterhilft. Der<br />

kann sich auf Nichtweitergabe, Nichtverwendung<br />

oder Löschen der Daten<br />

richten und sollte Erfolg bringen, wenn<br />

der Schutzanspruch besteht und seine<br />

Durchsetzung im normalen Gerichtsverfahren<br />

gefährdet wäre.<br />

Natürlich gibt’s vorläufigen Rechtsschutz<br />

auch im Verwaltungsverfahren, also im<br />

öffentlichen Recht, wenn Behörden einen<br />

zur Herausgabe von Daten auffordern.<br />

Sofern dies per Bescheid geschieht, bieten<br />

die förmlichen Rechtsmittel des Verwaltungsverfahrens<br />

– Widerspruch oder<br />

Anfechtungsklage – regelmäßig bereits<br />

aufschiebende Wirkung.<br />

Wo diese aufschiebende Wirkung vom<br />

Gesetz ausnahmsweise ausgeschlossen<br />

wird, lässt sich jederzeit ein Antrag auf<br />

Wiederherstellung der aufschiebenden<br />

Wirkung stellen. Weil so ein Vorgehen<br />

© Wikimedia Commons, NSA Gallery<br />

Abbildung 6: Gegen normale Datendiebe zieht man vors Zivilgericht, zumindest in Europa.<br />

aber meist auch eine beantragte Genehmigung<br />

oder gar eine laufende Zulassung<br />

gefährdet, wird in der Praxis allenfalls<br />

eine Anordnung auf Nichtweitergabe der<br />

Daten sachgerecht sein.<br />

Ein solcher – vom übrigen Rechtsverkehr<br />

zwischen Behörde und Unternehmen abgekoppelter,<br />

isoliert zu betrachtender Anspruch<br />

– kann auch im Verwaltungsverfahren<br />

vorläufig durch eine einstweilige<br />

Anordnung erwirkt werden. Die Verwaltungsverfahren<br />

sind in länderspezifischen<br />

Gesetzen geregelt, die mehr oder weniger<br />

alle denen der Bundesgesetzgebung entsprechen.<br />

Für den Bereich der Bundesverwaltung<br />

regeln beispielsweise die Paragrafen 80<br />

ff. der Verwaltungsgerichtsordnung [6]<br />

die aufschiebende Wirkung und deren<br />

Wiederherstellung oder Feststellung; die<br />

einstweilige Anordnung ist Thema des<br />

Paragrafen 123 VwGO.<br />

Zugriffsschutz ist wichtig<br />

Der Schutz der Daten des Unternehmens<br />

ist damit zunächst eine Frage des effektiven<br />

Zugriffsschutzes. Ist die Datenintegrität<br />

aber bereits beeinträchtigt, steht gut<br />

da, wer seine Datenschutz-Rechte kennt<br />

und weiß, wie er sie schnellstmöglich<br />

durchsetzen kann. (mfe) <br />

n<br />

Infos<br />

[1] Bundesdatenschutzgesetz: [http:// www.​<br />

gesetze‐im‐internet. de/ bdsg_1990/]<br />

[2] Volkszählungsurteil des BVerfG:<br />

[http:// www. bfdi. bund. de/ DE/ Gesetze<br />

UndRechtsprechung/ Rechtsprechung/​<br />

BDSGDatenschutzAllgemein/ Artikel/ 151283<br />

_VolkszaehlungsUrteil. html? nn= 1236576]<br />

[3] Bürgerliches Gesetzbuch:<br />

[http:// www. gesetze‐im‐internet. de/ bgb/]<br />

[4] Strafgesetzbuch:<br />

[http:// www. gesetze‐im‐internet. de/ stgb/]<br />

[5] Zivilprozessordnung:<br />

[http:// www. gesetze‐im‐internet. de/ zpo/]<br />

[6] Verwaltungsgerichtsordnung:<br />

[http:// www. gesetze‐im‐internet. de/ vwgo/]<br />

Recht 08/2013<br />

Forum<br />

www.linux-magazin.de<br />

83<br />

Abbildung 5: Auch in den USA schlägt man sich aktuell mit Datenschutzproblemen herum.<br />

Der Autor<br />

RA Fred Andresen ist Mitglied<br />

der Rechtsanwaltskammer<br />

München und der Arbeitsgemeinschaft<br />

Informationstechnologie<br />

im Deutschen<br />

Anwaltverein (DAVIT).


68 99<br />

€/Monat<br />

88 99 168 99


68 99


Know-how<br />

www.linux-magazin.de Kern-Technik 08/2013<br />

86<br />

Kernel- und Treiberprogrammierung mit dem <strong>Linux</strong>-Kernel – Folge 69<br />

Kern-Technik<br />

Wer den Minicomputer Raspberry Pi mit eigenen Kernelmodulen und Treibern voll ausschöpfen möchte,<br />

braucht erst einmal einen Eigenbau-Kernel. Mit dem passenden Quelltext und ein paar Kommandos ist der einfach<br />

zu bauen – auf dem PC oder direkt auf dem Pi. Jürgen Quade, Eva-Katharina Kunst<br />

© psdesign1, Fotolia<br />

Theoretisch ist es unerheblich, für welche<br />

Plattform man Kernelcode entwickelt,<br />

ob für ein x86-basiertes PC-System,<br />

ein Board mit ARM-Prozessor, Power PC<br />

oder einem der vielen anderen Prozessortypen,<br />

auf denen <strong>Linux</strong> lauffähig ist. In<br />

der Praxis jedoch sind herkömmliche PC-<br />

Systeme durch ausgereifte Distributionen<br />

wie Ubuntu besser unterstützt und die<br />

Hardware ist zudem deutlich leistungsfähiger<br />

als die eines Embedded-Geräts<br />

– wenngleich nicht so stromsparend und<br />

01 pi@raspberrypi ~ $ sudo su<br />

02 root@raspberrypi:/home/pi# cd /usr/src<br />

03 root@raspberrypi:/usr/src# git clone \<br />

04 https://github.com/raspberrypi/linux.git\<br />

05 ‐b rpi‐3.9.y<br />

06 root@raspberrypi:# cd linux<br />

69<br />

Listing 1: Bauen auf dem Raspberry Pi<br />

07 root@raspberrypi:# make bcmrpi‐defconfig<br />

effizient. Eingebetteten<br />

Systemen wiederum<br />

fehlt häufig ein<br />

Monitorausgang oder<br />

auch ein Tastatureingang;<br />

Speicherplatz<br />

und Rechenleistung<br />

stehen nur in begrenztem<br />

Umfang zur<br />

Verfügung.<br />

In einem solchen Fall<br />

nutzt der Entwickler<br />

häufig den PC als Entwicklungsrechner<br />

und<br />

erzeugt darauf mit<br />

Hilfe von Cross-Development-Werkzeugen<br />

den Code für die Zielplattform.<br />

Abgesehen von der<br />

nicht immer trivialen<br />

Installation der Entwicklungswerkzeuge<br />

muss er den Code<br />

nach dem Übersetzen auf das Target-<br />

System übertragen und dort testen – ein<br />

unter Umständen ebenfalls zeitaufwändiger<br />

Vorgang.<br />

Bemerkenswerter Zwitter<br />

Eine Ausnahme in der Embedded-Landschaft<br />

ist der Raspberry Pi. Der preiswerte<br />

Minicomputer ist mit HDMI-Interface<br />

und USB-Tastatur kaum von einem PC<br />

08 root@raspberrypi:# make menuconfig<br />

09 root@raspberrypi:# make<br />

10 root@raspberrypi:# make modules_install<br />

11 root@raspberrypi:# cp arch/arm/boota/zImage\<br />

12 /boot/linux‐3.9.y<br />

13 root@raspberrypi:# echo "kernel=linux‐3.9.y"\<br />

14 >>config.txt<br />

zu unterscheiden und spielt dank leistungsfähiger<br />

Grafik Videos sogar in Full-<br />

HD-Qualität ab. In puncto Rechenleistung<br />

hinkt er einem aktuellen PC jedoch signifikant<br />

hinterher. Mit dem Raspberry<br />

Pi ist damit eine normale Entwicklung<br />

zwar möglich, für umfangreichere Projekte<br />

empfiehlt sich aber auch hier die<br />

Cross-Entwicklung.<br />

Ob cross-kompiliert oder nativ: Wer einen<br />

Gerätetreiber schreiben oder eigenen Kernelcode<br />

entwickeln möchte, muss im ersten<br />

Schritt einen Kernel kompilieren [2].<br />

Das eröffnet zugleich die Möglichkeit, auf<br />

einen aktuellen Kernel aufzurüsten.<br />

Aktueller Kernel mit Extras<br />

Einfach, aber zeitaufwändig ist die Methode,<br />

den Kernel direkt auf dem Raspberry<br />

Pi zu generieren (siehe Abbildung<br />

1a). Wie auf einem PC installiert der<br />

Anwender dafür die Kernelquellen, konfiguriert<br />

sie und stößt den Übersetzungsvorgang<br />

an. Allerdings ergeben sich im<br />

Detail Unterschiede. Geeignete Kernelquellen<br />

beispielsweise stammen nicht<br />

vom offiziellen Kernel.org, sondern aus<br />

einem besonderen Github-Repository<br />

[3]. Dort bietet die in England ansässige<br />

Raspberry Pi Foundation angepasste Kernelquellen<br />

an.<br />

Der Ein-Platinen-Computer benötigt<br />

nämlich einige Treiber und Patches, die<br />

im Standardkernel nicht vorhanden sind.<br />

Zusätzlich befinden sich im Repository<br />

Jubiläum<br />

Mit der aktuellen Ausgabe geht diese Artikelreihe<br />

in ihr elftes Jahr. Die allererste<br />

Kern-Technik erschien im <strong>Linux</strong>-<strong>Magazin</strong><br />

08/​03 [1] und gab eine <strong>Vorschau</strong> auf den<br />

damals angekündigten Kernel 2.6.


Raspberry Pi Host Raspberry Pi<br />

git clone<br />

git clone<br />

make<br />

make<br />

Host<br />

git clone<br />

make<br />

Raspberry Pi<br />

scp/rsync<br />

Kern-Technik 08/2013<br />

Know-how<br />

Install<br />

Install<br />

Install<br />

SD-Karte<br />

SD-Karte<br />

SD-Karte<br />

SD-Karte<br />

a) native Entwicklung b) Installation auf SD-Karte c) Installation übers Netzwerk<br />

Abbildung 1: So baut man einen Kernel für den Raspberry Pi und installiert ihn auf dem Minicomputer: Direkt auf dem Gerät übersetzt (links) oder auf einem leistungsstarken<br />

Desktoprechner cross-kompiliert und mittels SD-Karte (Mitte) oder per Rsync (rechts) übertragen.<br />

www.linux-magazin.de<br />

87<br />

mehrere leicht anwendbare Default-Konfigurationen.<br />

Git klont<br />

Der Profi installiert die 1,4 GByte Kernelquellen<br />

per »git« (siehe Listing 1, Zeile 3)<br />

auf dem Raspberry Pi unter »/usr/src«,<br />

auf das nur der Superuser schreiben darf.<br />

Nach dem Klonen des Kernelrepository<br />

erfolgt die Konfiguration. Im Verzeichnis<br />

»/usr/src/linux« ruft der Entwickler dazu<br />

»make bcmrpi‐defconfig« auf. Alternativ<br />

stehen die in Tabelle 1 aufgeführten Konfigurationen<br />

zur Verfügung. Per »make<br />

menuconfig« lassen sich die Konfigurationen<br />

noch anpassen, »make« startet<br />

schließlich die Generierung.<br />

Es ist eine gute Idee, diesen Vorgang<br />

abends zu starten, dann sind Kernel und<br />

Module zum Frühstück fertig. Wie gesagt,<br />

diese Methode ist zeitaufwändig:<br />

Das Generieren von Kernel und Modulen<br />

dauert mehrere Stunden.<br />

Die Module und die generierten Firmware-Dateien<br />

installiert man mit »make<br />

modules_install«. Bei der Installation des<br />

ADMIN<br />

Netzwerk & Security<br />

Online-Archiv<br />

Rund 2.000 Seiten Artikel,<br />

Studien und Workshops aus<br />

fünf Jahren Technical Review<br />

+<br />

nur<br />

4,-e*<br />

im Monat<br />

Onlinezugriff auf<br />

Heftartikel aus dem<br />

ADMIN-<strong>Magazin</strong> von<br />

2009 bis 2012!<br />

Volltextsuche<br />

Praxisrelevante Themen<br />

für alle IT-Administratoren<br />

* Angebot gültig nur<br />

für Abonnenten eines<br />

Print- oder vollen<br />

digitalen ADMIN Abos<br />

Bestellen Sie unter: www.admin-magazin.de/archiv


Know-how<br />

www.linux-magazin.de Kern-Technik 08/2013<br />

88<br />

Kernels muss der Bastler etwas Handarbeit<br />

leisten. Er kopiert den Kernel in das<br />

Verzeichnis »/boot« unter dem Namen<br />

»linux‐3.9.y«. Die Bootloader-Konfigurationsdatei<br />

lässt sich beispielsweise durch<br />

Anfügen einer Zeile mit<br />

echo "kernel=linux‐3.9.y" >>U<br />

/boot/config.txt<br />

anpassen. Dabei darf er beim Schlüsselwort<br />

»kernel« statt des Defaultnamens<br />

»kernel.img« auch einen alternativen<br />

Dateinamen für das Kernelimage verwenden.<br />

Beim nächsten Reboot startet<br />

der proprietäre Bootloader den Eigenbau-<br />

Kernel.<br />

Auf der Überholspur<br />

Wer ungeduldig ist oder mit der Kernelkonfiguration<br />

experimentieren möchte,<br />

01 user@host# mkdir /usr/src/arm<br />

02 user@host# cd /usr/src/arm<br />

Listing 2: Befehlsfolge für<br />

Cross-Compile<br />

03 user@host# apt‐get install gcc‐arm‐linux‐gnueabi<br />

ncurses‐dev<br />

04 user@host# git clone https://github.com/raspberrypi/<br />

linux.git<br />

05 user@host# cd linux<br />

06 user@host# git branch ‐a<br />

07 user@host# git checkout ‐b rpi‐3.9.y<br />

08 user@host# make ARCH=arm bcmrpi‐defconfig<br />

09 user@host# make ARCH=arm<br />

CROSS_COMPILE=arm‐linux‐gnueabi‐ ‐j6<br />

Listing 3: Installation auf SD-Karte<br />

01 cp arch/arm/boot/zImage /media/C5*/linux‐3.9.y<br />

02 echo "kernel=linux‐3.9.y" >>/media/C5*/config.txt<br />

03 make ARCH=arm CROSS_COMPILE=arm‐linux‐gnueabi‐ \<br />

04 INSTALL_MOD_PATH=/media/62ba*/lib/modules/<br />

modules_install<br />

05 unmount /media/C522‐EA52<br />

06 unmount /media/62ba9ec9‐47d9‐4421‐aaee‐71dd6c0f3707<br />

Listing 4: Netzwerkinstallation<br />

des Kernels<br />

01 root@raspberry# apt‐get install rsync<br />

generiert den Kernel<br />

per Cross-Compile<br />

auf einem PC. Dank<br />

leistungsfähiger PC-<br />

Hardware mit mehreren<br />

Prozessorkernen<br />

kann man die Generierungszeit<br />

deutlich<br />

verkürzen, im Idealfall<br />

dauert der Vorgang<br />

nur noch einige<br />

Minuten.<br />

Für dieses Vorgehen<br />

installiert der Experimentator<br />

die Kernelquellen<br />

von Github auf dem Desktoprechner,<br />

etwa in dem zu erstellenden<br />

Verzeichnis »/usr/src/arm/«. Außerdem<br />

benötigt er einen geeigneten Cross-Compiler,<br />

der sich beispielsweise unter<br />

Ubuntu einfach per »apt‐get« installieren<br />

lässt (Listing 2, Zeile 3). Zum Konfigurieren<br />

und Kompilieren ruft er »make«<br />

mit dem zusätzlichen Parameter »ARCH<br />

=arm« auf [4]. Der Übersetzungsvorgang<br />

benötigt außerdem noch den zusätzlichen<br />

Parameter »CROSS_COM PILE<br />

=arm‐linux‐gnueabi‐«.<br />

Nun kommen die richtigen Cross-Compile-Werkzeuge<br />

dran, deren Namen sich<br />

aus dem im Parameter angegebenen Namensvorsatz<br />

»arm‐linux‐gnueabi‐« und<br />

dem Werkzeugnamen ergeben. Der Name<br />

des Cross-Compilers lautet demnach<br />

»arm‐linux‐gnueabi‐gcc«. Der in Listing<br />

1, Zeile 9 sichtbare Parameter »‐j6« teilt<br />

»make« übrigens mit, dass es alle sechs<br />

Kerne eines Multicore-Prozessors (Hexacore)<br />

verwenden soll.<br />

Kopierarbeit<br />

Entwicklungsrechner<br />

Raspberry Pi<br />

cd /usr/src/arm/linux<br />

tar cvfz /tmp/rpi kernelquellen.tgz \<br />

`find . maxdepth 1 type f not name *vmlinux*;\<br />

find scripts/ include/; find . name *Kconfig*;\<br />

find arch/arm/include;\<br />

find arch/arm/mach bcm2708/include`\<br />

arch/arm/Makefile<br />

mkdir /usr/src/linux<br />

cd /usr/src/linux<br />

scp user@host:/tmp/rpi kernelquellen.tgz .<br />

tar xvfz rpi kernelquellen.tgz<br />

rm rpi kernelquellen.tgz<br />

make scripts<br />

Abbildung 2: Relevanten Kernelquellcode kopieren – auf dem Entwicklungsrechner<br />

(oben) oder Raspberry Pi (unten).<br />

Ist das Übersetzen abgeschlossen, muss<br />

der Anwender Module, Firmwaredateien<br />

und den Kernel auf den Raspberry Pi<br />

kopieren. Dazu separiert er zunächst<br />

Module und Firmware von den Kernelquellen.<br />

Dazu gibt er dem Kommando<br />

»make modules_install« neben den Parametern<br />

»ARCH=arm« und »CROSS_<br />

COMPILE=arm‐linux‐gnueabi‐« noch<br />

INSTALL_MOD_PATH=/tmp/lib/<br />

mit. Dann kopiert es die Dateien unterhalb<br />

des Verzeichnisses »/tmp/lib/«.<br />

Schiebt man die SD-Karte des Rasp berry<br />

Pi in den Entwicklungsrechner (Abbildung<br />

1b), mountet Ubuntu die Partitionen<br />

automatisch. Bei einem Raspbian der Version<br />

»2013‐02‐09‐wheezy‐raspbian.img«<br />

[5] findet sich das Bootverzeichnis beispielsweise<br />

unter »/media/C522‐EA52«<br />

eingehängt, das Root-Filesystem steht unter<br />

»/media/62ba9ec9‐47d9‐4421‐aaee‐71<br />

dd6c0f3707«.<br />

Listing 3 zeigt die Befehle, die den<br />

Kernel unter dem Namen »linux‐3.9.y«<br />

auf der Bootpartition ablegen, die Bootkonfiguration<br />

um den erwähnten Parameter<br />

»kernel« erweitern und schließlich<br />

Module und Firmware auf der Rootpartition<br />

installieren. Die SD-Karte ist mit<br />

dem neuen Kernel präpariert, man muss<br />

sie jedoch vor dem Umstecken in den<br />

Raspberry Pi noch ordnungsgemäß mit<br />

»umount« aushängen.<br />

Aus der Ferne<br />

Ist der Raspberry Pi per Netzwerk erreichbar,<br />

kann die SD-Karte alternativ auch<br />

in dem Minicomputer stecken bleiben<br />

(Abbildung 1c). In diesem Fall loggt der<br />

02 root@raspberry# scp\<br />

03 Login@Hostname:/usr/src/arm/linux/arch/arm/boot/<br />

zImage\<br />

04 /boot/linux‐3.9.y<br />

05 root@raspberry# rsync ‐av Login@Hostname:/tmp/lib/<br />

/lib/<br />

06 root@raspberry# echo "kernel=linux‐3.9.y" >><br />

/boot/config.txt<br />

Tabelle 1: Vordefinierte Konfigurationen<br />

bcmrpi_defconfig<br />

bcmrpi_cutdown_defconfig<br />

Normale Konfiguration<br />

Auf die wesentlichen Funktionen reduziert: kein Debugging, Tracing<br />

oder Firewalling<br />

bcmrpi_quick_defconfig Schlanker Kernel, kaum Module, wenig Features<br />

bcmrpi_emergency_defconfig Schlanker Kernel für das Notsystem


Anwender sich auf dem Rasp berry Pi ein,<br />

wird mit Hilfe des Kommandos »sudo<br />

su« Root, installiert »rsync« und kopiert<br />

damit Module, Firmware und schließlich<br />

noch den Kernel vom Entwicklungsrechner<br />

auf den Kleinstrechner (siehe Kasten<br />

„Mit Rsync kopieren“).<br />

Dazu sind ein Loginname sowie der<br />

Name oder die IP-Adresse des Hostsystems<br />

erforderlich. Es ist sinnvoll, den<br />

Kernel im Verzeichnis »/boot/« mit dem<br />

Namen »linux‐3.9.y« abzulegen. Natürlich<br />

ist dann auch dieser Dateiname in<br />

die Bootkonfiguration »config.txt« einzutragen<br />

(Listing 4, Zeile 6).<br />

Umzug komplett<br />

Ist der Kernel generiert, installiert und<br />

das System damit gebootet, kopiert der<br />

Anwender die cross-kompilierten Kernelquellen<br />

– rund 2,1 GByte – auf den<br />

Raspberry Pi. Bei einer SD-Karte mit nur<br />

2 GByte Speicherplatz muss er allerdings<br />

etwas sparsamer vorgehen:<br />

Abbildung 2<br />

zeigt die Kommandofolge,<br />

mit der er per<br />

»tar« und »find« die<br />

benötigten Dateien<br />

zusammenpackt, auf<br />

den Raspberry Pi verschiebt<br />

und dort wieder<br />

entpackt.<br />

Kernelskripte<br />

übersetzen<br />

Unabhängig davon, ob<br />

der Bastler den gesamten<br />

Quellcode oder<br />

nur relevante Auszüge<br />

kopiert hat, muss er anschließend<br />

noch die für den PC generierten, zum<br />

Kernel-Buildsystem gehörenden Hilfsprogramme<br />

(»scripts«) auf dem ARM per<br />

»make scripts« im Quellcodeverzeichnis<br />

neu übersetzen. Danach kann er auf dem<br />

Abbildung 3: Sind die Kernelquellen installiert, kann der Anwender den<br />

ersten eigenen Treiber auf dem Raspberry Pi entwickeln.<br />

Minicomputer selbst Kernelcode entwickeln<br />

und testen.<br />

Wer die Geschwindigkeitsvorteile des PC<br />

nutzen will, setzt bei der Kernelprogrammierung<br />

weiterhin auf Cross-Entwicklung.<br />

Damit erspart er sich auch das Ko-<br />

Kern-Technik 08/2013<br />

Know-how<br />

www.linux-magazin.de<br />

89<br />

Einfach auf LinuX umstEigEn!<br />

4 x im Jahr kompaktes <strong>Linux</strong>-Know-how - IMMER mit 2 DVDs<br />

n Easy<strong>Linux</strong> macht den<br />

Umstieg auf <strong>Linux</strong> einfach<br />

n Verständliche<br />

Schritt-für-Schritt-Anleitungen<br />

n Nachvollziehbare<br />

Tipps und Tricks<br />

15%<br />

sparen<br />

EASYLINUX-JAHRES-ABO<br />

NUR 33,30E*<br />

❱<br />

JEtzt gRatis<br />

abo-pRämiE<br />

sichERn!<br />

ich bekomme gratis:<br />

• SoftMaker Office Paket<br />

für <strong>Linux</strong> im Wert<br />

von 69,95 Euro<br />

(solange Vorrat reicht)<br />

*Preise außerhalb Deutschlands siehe www.easylinux.de/abo<br />

JETZT GLEICH BESTELLEN! n tel.: 07131 / 2707 274 n fax: 07131 / 2707 78 601<br />

n E-mail: abo@easylinux.de n uRL: www.easylinux.de/abo


Know-how<br />

www.linux-magazin.de Kern-Technik 08/2013<br />

90<br />

01 ARCH := arm<br />

pieren des Kernel-Quellcodes. Allerdings<br />

ist hierfür ein angepasstes Makefile notwendig,<br />

das die Variablen »ARCH« und<br />

»CROSS_COMPILE« vorbelegt. Listing 5<br />

zeigt ein solches Makefile, das durch den<br />

Aufruf des <strong>Linux</strong>-Kommandos »uname<br />

‐m« erkennt, ob »make« auf dem Entwickler-Host<br />

oder auf dem Raspberry Pi<br />

gestartet wurde. Abhängig davon kompiliert<br />

es ein Kernelmodul (hier »hello.c«)<br />

cross oder nativ.<br />

Listing 6 zeigt den Code für einen einfachen<br />

Treiber zu Demonstrationszwecken,<br />

der beim Laden per »insmod« mit Hilfe<br />

02 UNAME := $(shell uname ‐m)<br />

03 ifeq ($(UNAME),armv6l)<br />

04 KDIR := /usr/src/linux/<br />

05 else<br />

06 CROSS_COMPILE:=arm‐linux‐gnueabi‐<br />

07 KDIR := /usr/src/linux/arm<br />

08 endif<br />

09 <br />

10 ifneq ($(KERNELRELEASE),)<br />

11 obj‐m := gpio.o<br />

12 <br />

Listing 5: Makefile für den Raspberry Pi<br />

13 else<br />

14 <br />

15 default:<br />

von »udev« die Gerätedatei »/dev/hello«<br />

erzeugt. Ein Lesezugriff auf diese Datei<br />

– auf der Konsole beispielsweise mit<br />

»cat /dev/hello« – gibt den bekannten<br />

String „Hello World“ zurück (siehe Abbildung<br />

3). Den Treibercode lässt das<br />

flexible Makefile immer für die Plattform<br />

Raspberry Pi übersetzen.<br />

Ein simpler Treiber<br />

Der Modulcode selbst weist keine Auffälligkeiten<br />

auf. Die Funktion »driver_init()«<br />

wird beim Laden des Moduls aufgerufen<br />

16 $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=<br />

$(CROSS_COMPILE) \<br />

17 ‐C $(KDIR) M=$(PWD) modules<br />

18 endif<br />

19 <br />

20 clean:<br />

21 rm ‐rf *.ko *.o .*.cmd .tmp_versions<br />

Module.symvers<br />

22 rm ‐rf modules.order *.mod.c<br />

und meldet das Modul als Treiber beim<br />

Betriebssystem an. Dazu lässt es sich eine<br />

freie Gerätenummer geben. Durch die Integration<br />

im Sys-Filesystem legt <strong>Linux</strong> automatisiert<br />

eine Datei mit dieser Gerätenummer<br />

als Inhalt an. Udev tritt in Aktion<br />

und erstellt daraufhin die Gerätedatei im<br />

Verzeichnis »/dev/«. Die Funktionen »driver_open()«<br />

und »driver_close()« sind für<br />

dieses Beispiel nicht nötig.<br />

Die Funktion »driver_read()« kommt zum<br />

Aufruf, wenn eine Anwendung – beispielsweise<br />

»cat« – die Gerätedatei »/dev/<br />

hello« öffnet und per »read« liest. Innerhalb<br />

der Lesefunktion stellt die »min«-<br />

Funktion sicher, dass das Betriebssystem<br />

nicht mehr Bytes in den Userspace kopiert,<br />

als Platz im Puffer ist. Die Daten –<br />

hier „Hello World“ – kopiert »copy_to_<br />

user()« dann in den Puffer der Applikation,<br />

und die Anzahl der kopierten Bytes<br />

kommt als Returnwert zurück.<br />

Ausbaufähig<br />

Ob cross-kompiliert oder direkt auf dem<br />

Raspberry Pi übersetzt – mit dem selbst<br />

gebauten Kernel und einem geeigneten<br />

Listing 6: Kernelmodul »hello.c«<br />

01 #include <br />

02 #include <br />

03 #include <br />

04 #include <br />

05 #include <br />

06 <br />

07 static char hello_world[]="Hello World\n";<br />

08 <br />

09 static dev_t hello_dev_number;<br />

10 static struct cdev *driver_object;<br />

11 static struct class *hello_class;<br />

12 static struct device *hello_dev;<br />

13 <br />

14 static ssize_t driver_read(struct file<br />

*instanz,char __user *user,<br />

15 size_t count, loff_t *offset )<br />

16 {<br />

17 unsigned long not_copied, to_copy;<br />

18 <br />

19 to_copy = min( count, strlen(<br />

hello_world)+1 );<br />

20 not_copied=copy_to_user(user,<br />

hello_world,to_copy);<br />

21 return to_copy‐not_copied;<br />

22 }<br />

23 <br />

24 static struct file_operations fops = {<br />

25 .owner= THIS_MODULE,<br />

26 .read= driver_read,<br />

27 };<br />

28 <br />

29 static int __init mod_init( void )<br />

30 {<br />

31 if( alloc_chrdev_region(<br />

&hello_dev_number,0,1,"Hello")owner = THIS_MODULE;<br />

37 driver_object‐>ops = &fops;<br />

38 if( cdev_add(driver_object,<br />

hello_dev_number,1) )<br />

39 goto free_cdev;<br />

40 /* Eintrag im Sysfs, damit Udev die<br />

Geraetedatei erzeugt */<br />

41 hello_class = class_create( THIS_MODULE,<br />

"Hello" );<br />

42 if( IS_ERR( hello_class ) ) {<br />

43 pr_err( "hello: no udev support\n");<br />

44 goto free_cdev;<br />

45 }<br />

46 hello_dev = device_create(hello_class<br />

,NULL,hello_dev_number,<br />

47 NULL, "%s", "hello" );<br />

48 dev_info( hello_dev, "mod_init called\n" );<br />

49 return 0;<br />

50 free_cdev:<br />

51 kobject_put( &driver_object‐>kobj );<br />

52 free_device_number:<br />

53 unregister_chrdev_region(<br />

hello_dev_number, 1 );<br />

54 return ‐EIO;<br />

55 }<br />

56 <br />

57 static void __exit mod_exit( void )<br />

58 {<br />

59 dev_info( hello_dev, "mod_exit called\n" );<br />

60 /* Loeschen des Sysfs‐Eintrags und damit<br />

der Geraetedatei */<br />

61 device_destroy( hello_class,<br />

hello_dev_number );<br />

62 class_destroy( hello_class );<br />

63 /* Abmelden des Treibers */<br />

64 cdev_del( driver_object );<br />

65 unregister_chrdev_region(<br />

hello_dev_number, 1 );<br />

66 return;<br />

67 }<br />

68 <br />

69 module_init( mod_init );<br />

70 module_exit( mod_exit );<br />

71 MODULE_LICENSE("GPL");


Makefile können Bastler eigenen Kernelcode<br />

und Treiber für den preisgünstigen<br />

kleinen Embedded-Rechner entwickeln.<br />

Das ist die Voraussetzung, um effizient<br />

mit den Allzweck-Kontaktstiften (General<br />

Purpose Input/​Output, GPIO), die in<br />

Abbildung 4 vorne rechts zu sehen sind,<br />

auf externe Hardware zuzugreifen.<br />

Eine Menge Zubehör<br />

Mit Schaltern, verschiedenen Sensoren,<br />

Leuchtdioden und Schrittmotoren lassen<br />

sich dank GPIO spannende Hardware-<br />

Eigenbauprojekte umsetzen. Die fertigen<br />

Interfaces und Bibliotheken, die dafür<br />

im Internet zu finden sind, weisen aber<br />

Defizite auf. Abhilfe schafft die nächste<br />

Folge der Kern-Technik. (mhu) n<br />

Kern-Technik 08/2013<br />

Know-how<br />

www.linux-magazin.de<br />

91<br />

Infos<br />

[1] Kern-Technik 1: [http:// www. linux‐magazin.​<br />

de/ Ausgaben/ 2003/ 08/ Kern‐Technik]<br />

[2] „RPi Kernel Compilation“:<br />

[http:// elinux. org/ RPi_Kernel_Compilation]<br />

[3] Kernelrepository der Raspberry Pi Foundation:<br />

[https:// github. com/ raspberrypi/​<br />

linux. git]<br />

[4] Quade, Kunst: Kern-Technik, Folge 59:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 11/​11, S. 96<br />

[5] Raspbian: [http:// www. raspbian. org]<br />

Die Autoren<br />

Eva-Katharina Kunst, Journalistin, und Jürgen<br />

Quade, Professor an der Hochschule Niederrhein,<br />

sind seit den Anfängen von <strong>Linux</strong> Fans von Open<br />

Source. In der Zwischenzeit ist die dritte Auflage<br />

ihres Buches „<strong>Linux</strong> Treiber entwickeln“<br />

erschienen.<br />

Abbildung 4: Programmierbar: Rechts vorne am Raspberry Pi sind die GPIO-Kontaktstifte zu sehen. Mit ihrer<br />

Hilfe können interessierte Hardware-Bastler eigenes Zubehör an den Minicomputer anschließen.<br />

Mit Rsync kopieren<br />

Mit dem Kommando »rsync« lassen sich effizient<br />

Daten lokal, aber vor allem auch über das<br />

Netzwerk kopieren beziehungsweise abgleichen.<br />

Effizient deshalb, weil »rsync« nur jene<br />

Daten transferiert, die im Zielverzeichnis noch<br />

nicht vorhanden sind oder sich geändert haben.<br />

Auch dabei überträgt es nicht zwangsläufig<br />

die ganze Datei, vielmehr kopiert »rsync«<br />

nur deren geänderte Teile.<br />

Rsync folgt dem klassischen Schema für Kopierprogramme<br />

mit Angabe der Optionen, der<br />

Quelle und dem Ziel. Diese dürfen auf einem<br />

anderen Rechner liegen und werden in Form<br />

eines URI (Uniform Resource Identifier) angegeben.<br />

Bei einem Remote-Transfer kommt<br />

»ssh« zum Einsatz, und die Daten auf dem<br />

Raspberry Pi muss man als Root ablegen. Da<br />

der Superuser sich aber nicht remote einloggen<br />

darf, startet »rsync« am einfachsten auf<br />

dem Raspberry Pi. Dort kann der Anwender<br />

»rsync« ohne Weiteres als Root aufrufen und<br />

dann seinen normalen Loginnamen auf dem<br />

Entwicklungsrechner angeben.<br />

Die wichtigste Option für »rsync« ist »‐a«.<br />

Sie schaltet den Archiv-Modus ein, der gewährleistet,<br />

dass Unterverzeichnisse, symbolische<br />

Links, Datei-Attribute, Zugriffsrechte<br />

und Besitzverhältnisse übernommen werden.<br />

Alternativ kopiert »‐r« lediglich rekursiv. Ein<br />

»‐v« für „verbose“ macht das Programm auskunftsfreudiger.<br />

MAGAZIN<br />

ONLINE<br />

<strong>Linux</strong>-<strong>Magazin</strong> newsLetter<br />

Newsletter<br />

informativ<br />

Nachrichten rund um die Themen <strong>Linux</strong> und<br />

Open Source lesen Sie täglich im Newsletter<br />

des <strong>Linux</strong>-<strong>Magazin</strong>s.<br />

kompakt<br />

tagesaktuell<br />

www.linux-magazin.de/newsletter


Programmieren<br />

www.linux-magazin.de Web RTC 08/2013<br />

92<br />

Web RTC: Videotelefonie ohne Browser-Plugin<br />

Direkter Draht<br />

Das Protokoll Web RTC macht den Browser zur Kommunikationszentrale: Ganz ohne Plugins erledigt er<br />

Videochats oder Datei-Übertragungen über Peer-to-Peer-Verbindungen. Andreas Möller<br />

© Danil Chepko, 123RF.com<br />

Wer sich bisher mit Videotelefonie und<br />

anderen Formen der Echtzeitkommunikation<br />

beschäftigte, landete fast automatisch<br />

bei Skype und Konsorten. Im<br />

Webbrowser ging Vergleichbares nur mit<br />

Flash- oder Java-Plugins. In der jüngsten<br />

Browsergeneration hat sich das geändert:<br />

Ergänzend zu HTML 5 bringt Web RTC<br />

(Web Realtime Communication, [1]) die<br />

Echtzeitkommunikation nativ in den<br />

Webbrowser.<br />

Mit dem Protokoll lassen sich Videochats<br />

durchführen oder Anwendungsdaten<br />

austauschen. Die Kommunikation erfolgt<br />

dabei direkt von Browser zu Browser.<br />

Dieser Artikel zeigt anhand eines Internet-Videochats,<br />

wie man Web RTC im<br />

Zusammenspiel von HTML, Javascript,<br />

CSS und Node.js anwendet.<br />

Web RTC tragen die Browserhersteller<br />

Google, Mozilla und Opera gemeinsam.<br />

Obwohl die Spezifikation noch nicht<br />

abgeschlossen ist, unterstützen die<br />

Webbrowser Google Chrome und Mozilla<br />

Firefox ab Version 22 Web RTC bereits<br />

weitestgehend. Es handelt sich um einen<br />

freien Standard, der in einer Reihe von<br />

Dokumenten [2] der IETF beschrieben<br />

ist. Dem W3C liegt ein Entwurf für eine<br />

Programmierschnittstelle [3] für Web<br />

RTC im Browser vor.<br />

Neue Möglichkeiten<br />

Die Möglichkeiten von Web RTC in Kombination<br />

mit weiteren Technologien demonstriert<br />

Mozilla in einem Video [4].<br />

Es zeigt einen Video-Anruf von einem<br />

Firefox-Browser auf ein Mobiltelefon über<br />

das öffentliche Telefonnetz. Web RTC ist<br />

allerdings nicht unumstritten: Microsoft<br />

etwa hält es für zu kompliziert und hat<br />

mit UC-RTC [5] einen eigenen Entwurf<br />

zur Echtzeitkommunikation in Browsern<br />

vorgelegt.<br />

Abbildung 1 zeigt den Datenfluss während<br />

einer Web-RTC-Sitzung. Anwendungs-<br />

und Konfigurationsdaten gehen<br />

getrennte Wege: Der Server fungiert als<br />

Router, der Konfigurationsdaten wie beispielsweise<br />

IP-Adressen oder Angaben<br />

zu Video- und Audioformaten von dem<br />

einem Browser entgegennimmt und an<br />

den anderen weiterleitet. Web RTC nennt<br />

diesen Prozess Signaling. Zur Übertragung<br />

der Konfigurationsdaten bieten sich<br />

die Protokolle Websocket oder HTTP an,<br />

zu ihrer Strukturierung die Javascript Object<br />

Notation (Json).<br />

Nach dem Austausch der IP-Adressen<br />

über den Signaling-Server bauen die<br />

Browser untereinander wie in Abbildung<br />

1 eine Peer-to-Peer-Verbindung auf. Diese<br />

überträgt die Anwendungsdaten mittels<br />

UDP oder TCP direkt zwischen den Browsern,<br />

was Zeit und Datenverkehr spart.<br />

Der Weg durchs Netz<br />

Beim Verbindungsaufbau überwindet<br />

Web RTC zwischengeschaltete NAT-Router<br />

(Network Address Translation) oder<br />

Firewalls durch den Einsatz von ICE<br />

(Interactive Connectivity Establishment,<br />

[6]). ICE beschafft taugliche IP-Adressen<br />

und Ports für das Versenden und Empfangen<br />

von Daten über Peer-to-Peer-Verbindungen.<br />

Zunächst versucht ICE mittels STUN<br />

(Session Traversal Utilities for NAT, [7])<br />

IP-Adresse und Port zu ermitteln. Dazu<br />

sendet es eine Nachricht an einen öffentlichen<br />

STUN-Server und erhält die<br />

Absenderadresse zurück. Verbietet aber<br />

beispielsweise der NAT-Router STUN, so<br />

kommen IP-Adresse und Port von einem


Websocket/HTTP<br />

Server<br />

Konfigurationsdaten<br />

Websocket/HTTP<br />

Web RTC 08/2013<br />

Programmieren<br />

Peer-to-Peer (UDP/TCP)<br />

Browser<br />

Browser<br />

Anwendungsdaten<br />

Abbildung 1: Konfigurations- und Anwendungsdaten<br />

gehen bei Web RTC getrennte Wege: Die Konfigurationsdaten<br />

vermittelt ein zwischengeschalteter Server,<br />

die Anwendungsdaten überträgt das Protokoll<br />

von Peer zu Peer.<br />

Abbildung 2: Saitenblicke: Links das Bild der lokalen Webcam, rechts das der entfernten.<br />

www.linux-magazin.de<br />

93<br />

Relayserver im Internet mittels TURN<br />

(Traversal Using Relays around NAT, [8])<br />

zur Anwendung. ICE meldet die geeigneten<br />

IP-Adressen und Ports an Web RTC,<br />

indem es das Ereignis »onicecandidate«<br />

auslöst. Die Daten sind zusammen mit<br />

dem zu verwendenden Protokoll – UDP<br />

oder TCP – in ein Objekt vom Typ ICE-<br />

Kandidat verpackt.<br />

Beispielanwendung<br />

Die folgende Beispielanwendung verwendet<br />

Web RTC im Browser, um einen<br />

Videochat umzusetzen. Dabei nimmt der<br />

Webbrowser das Bild der Webcam und<br />

den Ton eines Mikrofons und leitet sie<br />

per Web RTC an einen zweiten Browser<br />

weiter. Die Clientanwendung setzt dieser<br />

Artikel in HTML, CSS und Javascript<br />

um. Zum Implementieren des Signaling-<br />

Servers dient Node.js.<br />

Das Beispiel beschränkt sich zunächst<br />

auf den Browser Firefox, lässt sich aber<br />

auch auf Chrome übertragen. Abbildung<br />

2 zeigt die Beispielanwendung beim Einsatz<br />

in Firefox auf Ubuntu <strong>Linux</strong>. Die Gegenstelle<br />

verwendet den freien Browser<br />

auf Windows 7.<br />

Eingang<br />

Medienstrom<br />

Spur<br />

Video<br />

Mit der Programmierschnittstelle »get-<br />

UserMedia()« [9] bieten die aktuellen<br />

Versionen der Browser Firefox, Chrome<br />

und Opera Zugriff auf Webcam und Mikrofon<br />

des lokalen Rechners, fragen den<br />

Anwender aber in einem Popup zuvor<br />

um Erlaubnis. Web RTC vereint die Video-<br />

und Audioströme wie in Abbildung<br />

3 zu einem Medienstrom, um sie zu verarbeiten.<br />

Ein Medienstrom kann beliebig<br />

viele Video- und Audiospuren aufnehmen,<br />

eine Audiospur umfasst zudem<br />

zwei Stereokanäle.<br />

Video- und Audiosignale<br />

Die Listings 1 bis 3 demonstrieren, wie<br />

man das Bild der lokalen Webcam in ein<br />

HTML-Dokument einbindet (Abbildung<br />

4). Das HTML-Dokument in Listing 1<br />

referenziert im Kopfbereich (Zeilen 3 bis<br />

4) zunächst zwei Javascript-Dateien: Die<br />

Datei »core.js« enthält Funktionen für<br />

mehrere Beispiele in diesem Artikel, »mediastream.js«<br />

die für das aktuelle. Im Körper<br />

des HTML-Dokuments aus Listing 1<br />

wartet in Zeile 8 das Video-Element mit<br />

der ID »local« auf die Verbindung mit<br />

einem Medienstrom.<br />

Spur<br />

Audio<br />

links<br />

rechts<br />

Ausgang<br />

<br />

<br />

P2P-Verbindung<br />

Abbildung 3: Der Medienstrom bündelt Video- und Audioströme zur Verwendung in HTML-Video- und Audio-<br />

Elementen sowie in Peer-to-Peer-Verbindungen.<br />

Der Aufruf der Javascript-Methode »moz-<br />

Get UserMedia()« in Listing 2 (Zeilen 2<br />

bis 8) packt die Bilder der Webcam und<br />

den Ton des Mikrofons in einen Medienstrom.<br />

Diesen übergibt der Code in<br />

den Zeilen 4 bis 6 »stream« als Parameter<br />

an die Rückruffunktion. Die Funktion<br />

»connectStream()« in Zeile 5 und in<br />

Listing 3 spielt den Medienstrom im Video-Element<br />

ab. Tritt ein Problem auf, so<br />

kommt in Zeile 7 eine Callback-Funktion<br />

für den Fehlerfall zum Aufruf. Firefox<br />

macht die Angabe einer Rückruffunktion<br />

für diesen Fall obligatorisch.<br />

Listing 3 zeigt die Javascript-Funktion<br />

»connectStream()« für den Browser<br />

Listing 1: HTML mit Video-Element<br />

01 <br />

02 <br />

03 <br />

04 <br />

05 <br />

06 <br />

07 <br />

08 <br />

09 <br />

10 <br />

Listing 2: »mediastream.js«<br />

01 document.addEventListener('DOMContentLoaded',<br />

function() {<br />

02 navigator.mozGetUserMedia(<br />

03 {video:true, audio:true},<br />

04 function(stream) {<br />

05 connectStream(stream, "#local");<br />

06 },<br />

07 error<br />

08 );<br />

09 });


Programmieren<br />

www.linux-magazin.de Web RTC 08/2013<br />

94<br />

Firefox. Zeile 2 wählt mit der Methode<br />

»querySelector()« anhand eines CSS-<br />

Selektors ein Element aus dem HTML-<br />

Dokument aus – vorzugsweise ein Video-<br />

Element. Zeile 4 bindet den Medienstrom<br />

über das Firefox-spezifische Attribut<br />

»mozSrcObject« an dieses Element.<br />

Aufbau einer Peer-to-Peer-<br />

Verbindung<br />

Das nächste Beispiel geht einen Schritt<br />

weiter und überträgt den Medienstrom<br />

mittels Web RTC. Vor der Übertragung<br />

tauschen die beteiligten Browser Sitzungsbeschreibungen<br />

im SDP-Format<br />

(Session Description Protocol, [10]) aus.<br />

Die Beschreibungen enthalten Angaben<br />

über die zu übertragenden Medienströme<br />

sowie die zu benutzenden IP-Adressen,<br />

01 function connectStream(stream, query) {<br />

02 var ele = document.querySelector(query);<br />

03 if (ele) {<br />

04 ele.mozSrcObject = stream;<br />

05 ele.play();<br />

06 }<br />

07 };<br />

01 <br />

02 <br />

03 <br />

04 <br />

05 <br />

06 <br />

07 <br />

08 <br />

09 <br />

10 <br />

11 <br />

12 <br />

Listing 3: »core.js« (Auszug)<br />

Listing 4: Lokaler und übertragener<br />

Medienstrom<br />

Ports und Protokolle. Abbildung 5 zeigt<br />

die Schritte, die eine Anwendung zum Öffnen<br />

einer Peer-to-Peer-Verbindung vollziehen<br />

muss. Zunächst erstellt »create()«,<br />

links oben im Bild, ein Peer-Objekt für<br />

den linken Browser. »stream()« speichert<br />

den lokalen Medienstrom in dem lokalen<br />

Peer-Objekt. »offer()« erzeugt eine<br />

Sitzungsbeschreibung, »keepLoc()« speichert<br />

sie als lokale Sitzungsbeschreibung<br />

ebenfalls im lokalen Peer-Objekt.<br />

»send()« überträgt die Beschreibung an<br />

den rechten Browser.<br />

Beim Eintreffen der Sitzungsbeschreibung<br />

im rechten Browser speichert<br />

»keepRem()« sie als Information über<br />

die Gegenstelle. Anschließend erzeugt<br />

»answer()« eine lokale Sitzungsbeschreibung<br />

für diesen Browser. »keepLoc()«<br />

speichert sie als lokale Sitzungsbeschreibung<br />

und »send()« überträgt sie zurück<br />

an den linken Browser, wo die dortige<br />

»keepRem()«-Funktion sie als entfernte<br />

Sitzungsbeschreibung abspeichert. Damit<br />

ist der Handshake komplett.<br />

Web RTC im lokalen Browser<br />

Die Listings 4 bis 6 übertragen den Medien<br />

strom über eine Peer-to-Peer-Verbindung<br />

nach dem Schema aus Abbildung<br />

5. Damit diese Vorstudie auf einen Signaling-Server<br />

verzichten kann, kommunizieren<br />

nur zwei Video-Elemente im Firefox-Browser<br />

des lokalen Rechners (Abbildung<br />

6). Selbst lokal funktioniert Web<br />

RTC nur mit Netzwerkverbindung.<br />

Listing 4 zeigt das HTML-Dokument des<br />

Beispiels. Ebenso wie Listing 2 bindet es<br />

zwei Javascript-Dateien im Kopfbereich<br />

ein. Der Körper des Dokuments enthält<br />

in Zeile 9 ein Video-Element zur Ausgabe<br />

des lokalen Medienstroms und in<br />

der darauf folgenden Zeile 10 eines zur<br />

Abbildung 4: Erster Erfolg: Firefox spielt das Bild<br />

der lokalen Webcam im Browser ab.<br />

Ausgabe des mit Web RTC übertragenen<br />

Medienstroms.<br />

Listing 5 zeigt den Javascript-Code der<br />

Beispielanwendung aus der Datei »localwebrtc.js«.<br />

Die Abfrage und Konfiguration<br />

des Medienstroms erfolgt wie in Listing<br />

2, jedoch mit einer geänderten Rückruffunktion<br />

in den Zeilen 5 bis 19: Zeile<br />

6 verbindet zunächst den Medienstrom<br />

mit dem Video-Element. Zeile 7 erzeugt<br />

das lokale Peer-Objekt und speichert es<br />

in der Variablen »pcLocal«, Zeile 8 das<br />

entfernte Peer-Objekt in Pcremote. Zeile<br />

9 speichert den lokalen Medienstrom im<br />

Peer-Objekt »pcRemote«.<br />

Die asynchrone Methode »createOffer()«<br />

erzeugt in Zeile 10 die Sitzungsbeschreibung<br />

für den lokalen Kontext und übergibt<br />

sie der Rückruffunktion in den Zeilen<br />

10 bis 17 im Parameter »desc«. Die Methode<br />

»setLocalDescription()« speichert<br />

den Inhalt von »desc« als lokale Sitzungsbeschreibung<br />

im Peer-Objekt »pcLocal«.<br />

Da die Anwendung lokal läuft, sichert die<br />

Methode »setRemoteDescription()« den<br />

Inhalt aus »desc« in Zeile 12 als entfernte<br />

Sitzungsbeschreibung für das entfernte<br />

Peer-Objekt »pcRemote«.<br />

Der Aufruf der asynchronen Methode<br />

»createAnswer()« in Zeile 13 erstellt<br />

Listing 5: »localwebrtc.js«: Web RTC im lokalen Browser<br />

01 document.addEventListener('DOMContentLoaded', function() {<br />

02 var serv = null;<br />

03 navigator.mozGetUserMedia(<br />

04 {video:true, audio:true},<br />

05 function(stream) {<br />

06 connectStream(stream, "#local");<br />

07 var pcLocal = new mozRTCPeerConnection(serv);<br />

08 var pcRemote = new mozRTCPeerConnection(serv);<br />

09 pcLocal.addStream(stream);<br />

10 pcLocal.createOffer(function(desc) {<br />

11 pcLocal.setLocalDescription(desc);<br />

12 pcRemote.setRemoteDescription(desc);<br />

13 pcRemote.createAnswer(function(desc) {<br />

14 pcRemote.setLocalDescription(desc);<br />

15 pcLocal.setRemoteDescription(desc);<br />

16 })<br />

17 });<br />

18 pcRemote.onaddstream = onadd()<br />

19 },<br />

20 error<br />

21 );<br />

22 });


create()<br />

stream()<br />

create()<br />

Web RTC 08/2013<br />

Programmieren<br />

offer()<br />

stream()<br />

keepLoc()<br />

send()<br />

keepRem()<br />

keepRem()<br />

answer()<br />

keepLoc()<br />

send()<br />

www.linux-magazin.de<br />

95<br />

opened<br />

opened<br />

Abbildung 5: Vor dem Öffnen einer Peer-to-Peer-<br />

Verbindung erzeugen die beiden Browser Sitzungsbeschreibungen<br />

und tauschen sie aus.<br />

die lokale Sitzungsbeschreibung für das<br />

entfernte Peer-Objekt »pcRemote« und<br />

übergibt sie der Rückruffunktion aus den<br />

Zeilen 13 bis 16. Zeile 14 speichert die<br />

Sitzungsbeschreibung für das entfernte<br />

Peer-Objekt »pcRemote« als lokale Sitzungsbeschreibung,<br />

Zeile 15 als entfernte<br />

Sitzungsbeschreibung für das lokale Peer-<br />

Objekt »pcLocal«.<br />

Das Ereignis »onaddstream« für das<br />

entfernte Peer-Objekt »pcRemote« wird<br />

in Zeile 18 durch Aufruf der Funktion<br />

»onadd()« aus Listing 6 belegt. Diese gibt<br />

eine Rückruffunktion zurück. Sie verbindet<br />

alle eingehenden Medienströme mit<br />

dem Video-Element mit der ID »remote«<br />

(Listing 4, Zeile 10). Die lokale Kommunikation<br />

ist hergestellt.<br />

Web RTC über das Internet<br />

Abbildung 6: Vorstudie zum Videochat: Zwei Video-Elemente im selben Browserfenster kommunizieren.<br />

Das typische Anwendungsszenario von<br />

Web RTC über das Internet macht einen<br />

Signaling-Server erforderlich. Der leitet<br />

gemäß Abbildung 1 die Konfigurationsdaten<br />

weiter. Das folgende Beispiel verwendet<br />

für diese Daten das Json-Format. Jede<br />

Nachricht entspricht einem Javascript-<br />

Objekt mit zwei Komponenten: »command«<br />

beschreibt den Nachrichtentyp,<br />

»data« nimmt die Nutzdaten auf.<br />

Die Anwendung verwendet drei unterschiedliche<br />

Nachrichtentypen: Zur Eröffnung<br />

einer Peer-to-Peer-Verbindung dient<br />

eine Nachricht des Typs »offer« (Listing<br />

7). Zur Bestätigung der Verbindungseröffnung<br />

schickt die Gegenstelle eine<br />

Nachricht vom Typ »answer« zurück.<br />

Beide Signale enthalten im Datenfeld<br />

die jeweils lokale Sitzungsbeschreibung.<br />

Übermittelt ICE einen neuen Kandidaten,<br />

teilt es dies durch Senden einer Nachricht<br />

vom Typ ICE mit. In diesem Fall enthält<br />

»data« den Kandidaten.<br />

Signaling-Server<br />

Für den Signaling-Server kommt ebenfalls<br />

Javascript zum Einsatz, jedoch<br />

Server-seitig auf Node.js. Eine ausführliche<br />

Einführung in den Node.js-Server<br />

bietet ein Artikel aus einem früheren<br />

<strong>Linux</strong>-<strong>Magazin</strong> [11]. Unter Ubuntu <strong>Linux</strong><br />

installiert man Node.js, aktuell ist Version<br />

0.8, und seinen Paketmanager Npm mit<br />

dem Befehl »sudo apt‐get install nodejs<br />

npm«. Der Signaling-Server benötigt zudem<br />

die Module Connect ab Version 2.7.2<br />

und Websocket ab Version 1.0.8.<br />

Da Websocket seinerseits von »nodegyp«<br />

abhängt, installiert der Anwender<br />

zunächst dieses mit »npm install ‐g<br />

Listing 6: »onadd()«<br />

01 function onadd() {<br />

02 return function(evt) {<br />

03 connectStream(evt.stream, "#remote");<br />

04 }<br />

05 }<br />

Listing 7: Offer im Json-Format<br />

01 {<br />

02 "command":"offer",<br />

03 "data": {<br />

04 "sdp":"v=0\r\no=‐ 3077950714 2 IN IP4 127.0.0.1<br />

[...] \r\n",<br />

05 "type":"offer"<br />

06 }<br />

07 }<br />

Listing 8: Signaling-Server für Node.js<br />

01 #!/usr/bin/env node<br />

02 var http = require('http'),<br />

03 connect = require('connect'),<br />

04 WebSocketServer = require('websocket').<br />

server,<br />

05 channels = [],<br />

06 app = connect().use(<br />

connect.static('../'));<br />

07 <br />

08 var wsServer = new WebSocketServer({<br />

09 httpServer:new http.createServer(app).<br />

listen(6655)<br />

10 });<br />

11 <br />

12 wsServer.on('request', function(req) {<br />

13 var thisChannel = req.accept('webrtc',<br />

req.origin);<br />

14 channels.push(thisChannel);<br />

15 thisChannel.on('message', function(msg) {<br />

16 channels.forEach(function(channel) {<br />

17 if (channel !== thisChannel) {<br />

18 console.log(msg.utf8Data)<br />

19 channel.sendUTF(msg.utf8Data);<br />

20 }<br />

21 });<br />

22 });<br />

23 thisChannel.on('close', function() {<br />

24 channels = channels.<br />

filter(function(channel) {<br />

25 return (channel !== thisChannel)?true:false;<br />

26 });<br />

27 });<br />

28 });


Programmieren<br />

www.linux-magazin.de Web RTC 08/2013<br />

96<br />

01 <br />

02 <br />

node‐gyp« und anschließend Websocket<br />

und Connect mit dem Kommando »sudo<br />

npm install connect websocket«.<br />

Listing 8 zeigt den Code für den Signaling-Server<br />

in Node.js. Die Zeilen 2 bis 4<br />

binden die benötigten Module ein. Die<br />

Variable »channels« (Zeile 5) speichert<br />

die verbundenen Clients in einem Feld.<br />

In der darauf folgenden Zeile nimmt die<br />

Variable »app« eine um das Modul »static«<br />

erweiterte Connect-Anwendung auf.<br />

Static bewirkt, dass Node.js auf HTTP-<br />

Anfragen wie »http:// localhost:6655/​<br />

webrtc. html« die Datei »webrtc.html« aus<br />

dem Verzeichnis »../« zurückgibt.<br />

Der Websocket-Server bindet in Zeile 9<br />

ein HTTP-Server-Objekt ein. Die Variable<br />

»app« als Argument im Aufruf der Methode<br />

»createServer()« übergibt die Anwendungslogik<br />

der Connect-Anwendung<br />

an das HTTP-Server-Objekt. Die Methode<br />

»listen()« lässt den HTTP-Server auf Port<br />

6655 lauschen.<br />

Verbindungsereignisse<br />

Die Rückruffunktion in den Zeilen 12 bis<br />

28 beschreibt die Antwort des Signaling-<br />

Servers beim Aufbau einer Verbindung<br />

über das Websocket-Protokoll. Dazu<br />

bindet in Zeile 12 die Methode »on()«<br />

die Rückruffunktion aus dem zweiten<br />

03 <br />

04 <br />

05 <br />

06 <br />

Listing 9: HTML für Web RTC per Internet<br />

07 <br />

Listing 10: »webrtc.js«: Web RTC per Internet<br />

Argument an das Auftreten<br />

des Ereignisses<br />

»request«. Die Rückruffunktion<br />

speichert<br />

in Zeile 13 eine gültige<br />

Verbindung in der Variablen<br />

»thisChannel«<br />

ab und Zeile 14 fügt<br />

sie der Liste aller bestehenden<br />

Verbindungen<br />

hinzu.<br />

Die Zeilen 15 bis 22 definieren<br />

analog zu den<br />

Zeilen 12 bis 28 eine<br />

Rückruffunktion zum<br />

Verarbeiten einer eingehenden Nachricht.<br />

In der Schleife über alle Verbindungen<br />

(Zeilen 16 bis 21) leitet die »sendUTF()«-<br />

Methode die Nachricht an alle anderen<br />

Verbindungen weiter. Die Zeilen 23 bis<br />

27 entfernen beim Beenden einer Verbindung<br />

den Client aus der Liste.<br />

Wie Abbildung 7 zeigt, kann man dem<br />

Signaling-Server bei der Arbeit zusehen:<br />

Dank »console.log(msg.utf8Data)«<br />

in Zeile 18 schreibt er seine Ausgaben<br />

nämlich auch auf die Konsole.<br />

Soll Web RTC auch über das Internet<br />

arbeiten, versendet man die Sitzungsbeschreibungen<br />

aus Listing 5 per Websocket-Protokoll<br />

und Signaling-Server wie in<br />

den Abbildungen 1 und 5 an die zu ver-<br />

08 <br />

09 <br />

10 <br />

11 <br />

12 <br />

Abbildung 7: Der Signaling-Server leitet nach seinem Start wie ein Router<br />

Nachrichten von einem Client an den anderen weiter.<br />

bindenden Browser. Listing 9 zeigt das<br />

HTML-Dokument des Beispiels. Im Unterschied<br />

zu Listing 4 bindet es »webrtc.<br />

js« statt »localwebrtc.js« ein.<br />

Listing 10 zeigt den Javascript-Code aus<br />

»webrtc.js«: Zeile 8 öffnet eine Verbindung<br />

zum Websocket-Server und speichert<br />

diese in der Variablen »channel«.<br />

Nach dem erfolgreichen Öffnen führt der<br />

Code die Rückruffunktion aus den Zeilen<br />

9 bis 15 aus. Darin erzeugt Zeile 10 ein<br />

neues Peer-Objekt und speichert es in der<br />

globalen Variablen »pc«. Zeile 11 fügt den<br />

Medienstrom »stream« aus der Abfrage in<br />

Zeile 4 mit der Methode »addStream()«<br />

dem Peer-Objekt hinzu.<br />

ICE-Kandidat kommt<br />

Die beiden darauf folgenden Zeilen erzeugen<br />

die Callback-Funktionen für<br />

die Ereignisse »onicecandidate« und<br />

»onaddstream« des Verbindungsaufbaus.<br />

Die Ereignisbehandlung für »onicecandidate«<br />

ist in Zeile 12 durch den Aufruf der<br />

01 document.addEventListener('DOMContentLoaded',<br />

function() {<br />

02 var serv = pc = null,<br />

03 url = 'ws://'+location.host;<br />

04 navigator.mozGetUserMedia(<br />

05 {video:true, audio:true},<br />

06 function(stream) {<br />

07 connectStream(stream, "#local");<br />

08 var channel = new WebSocket(url,<br />

'webrtc');<br />

09 channel.onopen = function() {<br />

10 pc = new mozRTCPeerConnection(serv);<br />

11 pc.addStream(stream);<br />

12 pc.onicecandidate = onice(pc);<br />

13 pc.onaddstream = onadd();<br />

14 pc.createOffer(desc(pc, channel,<br />

"offer"));<br />

15 };<br />

16 channel.onmessage = function(msg) {<br />

17 var sig = JSON.parse(msg.data);<br />

18 switch(sig.command) {<br />

19 case "offer":<br />

20 pc = new<br />

mozRTCPeerConnection(serv);<br />

21 pc.addStream(stream);<br />

22 pc.setRemoteDescription(new<br />

mozRTCSessionDescription(sig.data));<br />

23 pc.onicecandidate = onice(pc);<br />

24 pc.onaddstream = onadd();<br />

25 pc.createAnswer(desc(pc, channel,<br />

"answer"));<br />

26 break;<br />

27 case "answer":<br />

28 pc.setRemoteDescription(new<br />

mozRTCSessionDescription(sig.data));<br />

29 break;<br />

30 case "ice":<br />

31 pc.addIceCandidate(new<br />

mozRTCIceCandidate(sig.data));<br />

32 break;<br />

33 }<br />

34 };<br />

35 },<br />

36 error<br />

37 );<br />

38 });


Funktion »onice()« aus Listing 11 belegt.<br />

Sie gibt wie die Funktion »onadd()« aus<br />

Listing 6 eine Rückruffunktion zurück.<br />

Bei deren Aufruf verschickt die Funktion<br />

»send()« (Listing 13) einen ICE-Kandidaten.<br />

Abschließend erzeugt Zeile 14 von<br />

Listing 10 mittels »createOffer()« eine<br />

Sitzungsbeschreibung und übergibt sie<br />

der Rückruffunktion aus dem Aufruf von<br />

»desc()« (Listing 12). Dabei hinterlegt<br />

Zeile 3 die Sitzungsbeschreibung im Peer-<br />

Objekt »pc«, die folgende Zeile versendet<br />

sie über den Signaling-Server.<br />

Empfangen und senden<br />

Empfängt der Browser über die Websocket-Verbindung<br />

hingegen eine Nachricht<br />

von außen, so tritt die Rückruffunktion<br />

aus den Zeilen 16 bis 34 von Listing<br />

10 in Aktion. Sie verwandelt zunächst<br />

die eingehende Json-Nachricht in ein<br />

Javascript-Objekt, das die anschließende<br />

Switch-Anweisung je nach dem Nachrichtentyp<br />

verarbeitet.<br />

Listing 13 zeigt die Funktion »send()«.<br />

Diese nutzt in Zeile 2 die gleichnamige<br />

Methode des Websocket-Objekts, um eine<br />

Nachricht zu verschicken. Zuvor wandelt<br />

»stringify()« sie in eine Zeichenkette im<br />

Json-Format um.<br />

Datenkanal<br />

Mittels Web RTC lassen sich nicht nur<br />

Medienströme übertragen. Die Funktion<br />

»data()« in Listing 14 erzeugt einen Data-<br />

Channel zur Übertragung von Textnachrichten,<br />

der wie ein Websocket funktioniert.<br />

Zeile 3 öffnet mit der Methode<br />

»createDataChannel()« einen Kanal für<br />

die bestehende Peer-to-Peer-Verbindung<br />

im Peer-Objekt »pc«. Das Ereignis »ondatachannel«<br />

in Zeile 5 tritt beim Öffnen<br />

eines Datenkanals ein. Die Funktion<br />

»config()« ab Zeile 11 definiert die Rückruffunktion,<br />

die beim Eintreffen einer<br />

Textnachricht aktiv wird. Die Methode<br />

»send()« in Zeile 14 versendet Nachrichten<br />

über die bestehende Verbindung.<br />

bringt die Echtzeitkommunikation nativ<br />

in den Browser. Zwei Browser bauen<br />

dazu eine Peer-to-Peer-Verbindung über<br />

das Internet auf, und das auch durch eine<br />

NAT oder eine Firewall hindurch. Web<br />

RTC bietet mit dem Data-Channel nicht<br />

nur den bidirektionalen Austausch von<br />

Anwendungsdaten, sondern überträgt<br />

auch Medienströme.<br />

Die direkte Verbindung der Browser spart<br />

Zeit und Datenverkehr. Damit eröffnet<br />

sie dem Webentwickler Möglichkeiten<br />

für viele neue HTML-5-Anwendungen,<br />

beispielsweise Videochats oder verteilte<br />

Anwendungen wie etwa ein vernetztes<br />

Memoryspiel. (mhu) <br />

n<br />

Der Autor<br />

Dipl.-Phys. Andreas Möller [http:// pamoller. com]<br />

beschäftigt sich seit 2001 mit der Entwicklung<br />

Internet-basierter Software. Dazu zählen Datenbank-<br />

und Webanwendungen sowie Arbeiten auf<br />

dem Gebiet des Single Source Publishing. Zurzeit<br />

ist er als Berater und freier Autor tätig.<br />

Web RTC 08/2013<br />

Programmieren<br />

www.linux-magazin.de<br />

97<br />

Infos<br />

[1] Web RTC: [http:// www. webrtc. org]<br />

[2] Rtcweb Status Pages:<br />

[http:// tools. ietf. org/ wg/ rtcweb/​<br />

draft‐ietf‐rtcweb‐overview/]<br />

[3] Web RTC 1.0 W3C Editor’s Draft: [http:// dev.​<br />

w3. org/ 2011/ webrtc/ editor/ webrtc. html]<br />

[4] Web RTC MWC Phone Demo: [http:// www.​<br />

youtube. com/ watch? v=rWPZZeXK6g4]<br />

[5] UC-RTC:<br />

[http:// html5labs. interoperabilitybridges.​<br />

com/ cu‐rtc‐web/ cu‐rtc‐web. htm]<br />

[6] ICE (Interactive Connectivity Establishment):<br />

[http:// en. wikipedia. org/ wiki/​<br />

Interactive_Connectivity_Establishment]<br />

[7] STUN (Session Traversal Utilities for NAT):<br />

[http:// en. wikipedia. org/ wiki/ STUN]<br />

[8] TURN (Traversal Using Relays around<br />

NAT): [http:// en. wikipedia. org/ wiki/​<br />

Traversal_Using_Relays_around_NAT]<br />

[9] »getUserMedia()«: [http:// dev. w3. org/​<br />

2011/ webrtc/ editor/ getusermedia. html]<br />

[10] SDP-Format (Session Description Protocol:<br />

[http:// tools. ietf. org/ html/ rfc2327]<br />

[11] Andreas Möller, „Schneller knoten: Eigene<br />

Anwendungen mit Node.js und Redis programmieren“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 05/​13, S. 84<br />

[12] Listings zum Artikel:<br />

[http:// www. linux‐magazin. de/ static/​<br />

listings/ magazin/ 2013/ 08/ web‐rtc]<br />

Chrome kann’s auch<br />

Die Beispielanwendung für Firefox lässt<br />

sich mit wenig Aufwand auf den Google-<br />

Browser Chrome übertragen. Dazu ändert<br />

der Programmierer in den Beispielen<br />

das Hersteller-Präfix »moz« in »webkit«.<br />

Die betroffen Ausdrücke lassen sich aber<br />

auch in Funktionen auslagern, die für<br />

jeden Browser die passende Funktion inklusive<br />

Hersteller-Präfix aufrufen. Zu beachten<br />

ist: Die Beispiele funktionieren in<br />

Chrome nur beim Aufruf über das HTTP-<br />

Protokoll, etwa »http:// localhost:6655/​<br />

mediastream. html«.<br />

Mit Web RTC lassen sich auch mehrere<br />

Browser verbinden. Der Topologie der<br />

Peer-to-Peer-Verbindungen sind keine<br />

Grenzen gesetzt, jedoch kommt ein Rechner<br />

beim Abspielen mehrerer Medienströme<br />

rasch an seine Grenzen. Web RTC<br />

Listing 14: Data-Channel<br />

01 function data(pc, opener) {<br />

02 if (opener) {<br />

03 config(pc.createDataChannel("work"));<br />

04 } else {<br />

05 pc.ondatachannel = function(evt) {<br />

06 config(evt.channel);<br />

07 }<br />

08 }<br />

Listing 11: Ereignisbehandlung<br />

01 function onice2(channel) {<br />

02 return function(evt) {<br />

03 if (evt.candidate) {<br />

04 send(channel, {command:"ice", data:evt.candidate});<br />

05 }<br />

06 }<br />

07 }<br />

Listing 12: Sitzungsbeschreibung<br />

01 function desc(pc, channel, comm) {<br />

02 return function(desc) {<br />

03 pc.setLocalDescription(desc);<br />

04 send(channel, {command:comm, data:desc});<br />

05 };<br />

06 }<br />

Listing 13: Objekt serialisieren<br />

01 function send(channel, msg) {<br />

02 channel.send(JSON.stringify(msg));<br />

03 }<br />

09 }<br />

10 <br />

11 function config(channel) {<br />

12 channel.onmessage = function(evt) {<br />

13 console.log(evt.data);<br />

14 channel.send("recived message");<br />

15 }<br />

16 }


23 99


8<br />

CORE<br />

38 99


Programmieren<br />

www.linux-magazin.de C++11 08/2013<br />

Modernes C++ in der Praxis – Folge 11<br />

Starke Ausdrücke<br />

100<br />

Was dem Perl-Programmierer altvertraut ist, fehlte C++ bisher. Der neue Sprachstandard C++11 bringt reguläre<br />

Ausdrücke ins Spiel, mit denen sich Textmuster beschreiben und finden lassen. Rainer Grimm<br />

C++11<br />

asynchrone Aktionen<br />

override<br />

decltype eines enthalten, was das den Klammern<br />

folgende Pluszeichen 4 besagt.<br />

Move-Semantik<br />

Neue Container<br />

auto<br />

Nach dem »@« folgt der Domänenanteil.<br />

Variadic Templates<br />

Dieser beginnt mit mindestens einem<br />

bind Zeichen aus der Menge »\w.‐« gefolgt<br />

Type Traits<br />

von einem Punkt ».«. Der Punkt ist ein<br />

C++11<br />

Alias Templates<br />

Tuple besonderes Zeichen in regulären Ausdrücken,<br />

daher muss ihn der Programmierer<br />

default<br />

function<br />

in diesem Kontext durch einen Backslash<br />

Range-basierte<br />

C++11<br />

5 maskieren, um einen gewöhnlichen<br />

nullptr<br />

For-Schleife<br />

Punkt anzugeben.<br />

Zufallszahlen<br />

Zeitbibliothek Jetzt fehlt nur noch die Top-Level-Do‐<br />

delete<br />

final<br />

main, und schon ist die E-Mail-Adresse<br />

Benutzerdefinierte Literale<br />

Smart Pointer beschrieben. Sie besteht aus einem Wort<br />

Hashtabellen<br />

static_assert<br />

reguläre Ausdrücke<br />

aus kleinen und großen Buchstaben<br />

Threads 6, das nur zwei bis vier Zeichen lang<br />

Lambda-Funktionen<br />

Array<br />

sein darf 7. Zugegeben, dieser reguläre<br />

Ausdruck für eine E-Mail-Adresse<br />

besitzt noch ein paar Ungenauigkeiten,<br />

Reguläre Ausdrücke stellen eine Beschreibungssprache<br />

für Textmuster dar.<br />

C++11 verhilft C++-Entwicklern endlich<br />

zu dem lang vermissten Feature. Dieser<br />

Artikel führt mit einem kleinen Anwendungsbeispiel<br />

vollständig standardkonformer Ausdruck<br />

[2] ist allerdings sehr schwer verdaulich<br />

beispielsweise könnte der Domänenanteil<br />

einen Unterstrich enthalten, aber das<br />

würde der Einfachheit des Beispiels entgegenstehen.<br />

in das Programmieren mit<br />

Regular Expressions (Regex) ein: Ein<br />

Exakte Treffer<br />

E-Mail-Header enthält viele Adressen,<br />

die es herauszuklauben lohnt. Wer das<br />

nicht von Hand tun möchte, schreibt ein<br />

Programm, das diese Arbeit komfortabel<br />

und vor allem automatisch mit regulären<br />

Ausdrücken erledigt.<br />

Sachter Anfang<br />

Selbst die kompliziertesten Suchanforderungen<br />

lassen sich mittels regulärer<br />

Ausdrücke definieren. Zum Einstieg in<br />

des Thema verwendet dieser Artikel aber<br />

einen möglichst einfach gehaltenen Ausdruck,<br />

der eine E-Mail-Adresse beschreibt<br />

(Abbildung 1). Streng genommen müsste<br />

ein regulärer Ausdruck für eine Mailadresse<br />

dem RFC 2822 [1] folgen. Ein<br />

(siehe Abbildung 2).<br />

Wie ist der reguläre Ausdruck zu lesen?<br />

Am einfachsten gelingt dies mit dem<br />

»@«-Zeichen 1 als Ausgangspunkt. Es<br />

trennt den lokalen Teil vom Domänenteil<br />

einer E-Mail-Adresse. Der lokale Anteil<br />

darf verschiedene, durch eckige Klammern<br />

2 zusammengehaltene Zeichen<br />

enthalten. Zum einen sind dies Wortzeichen.<br />

Sie umfassen Zeichen wie Buchstaben,<br />

Zahlen und Unterstriche, die in Wörtern<br />

auftreten können. Da diese Zeichen<br />

sehr häufig zur Anwendung kommen, sehen<br />

die regulären Ausdrücke eine eigene<br />

Zeichenklassen dafür vor: »\w« 3.<br />

Weitere gültige Zeichen im lokalen Anteil<br />

einer E-Mail-Adresse sind der Punkt ».«,<br />

das Prozent- »%«, das<br />

Plus- »+« und das Minuszeichen<br />

»‐«. Von all<br />

diesen Zeichen, also<br />

»\w.%+‐«, muss der<br />

lokale Teil mindestens<br />

Die simpelste Frage, die sich mit einem<br />

regulären Ausdruck beantworten lässt,<br />

ist, ob eine Zeichenkette eine gültige E-<br />

Mail-Adresse darstellt. Diese Aufgabe erledigt<br />

Listing 1.<br />

Um den Sourcecode konform mit dem<br />

neuen C++-Standard zu formulieren,<br />

muss der Programmierer den standardkonformen<br />

Header (Zeile 3) und den Namensraum<br />

(Zeile 8) verwenden. Der vorige<br />

Artikel [3] in dieser Reihe erläutert<br />

ausführlich die Hintergründe. »rainer@<br />

[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,4}<br />

<br />

<br />

Abbildung 1: Vereinfachter regulärer Ausdruck, der auf eine gültige E-Mail-<br />

Adresse passt. Er enthält Zeichen, Zeichenklassen und Klammern.


Abbildung 2: Der reguläre Ausdruck für E-Mail-Adressen ist in<br />

seiner standardkonformen Version kaum zu verstehen.<br />

grimm‐jaud.de« ist die E-Mail-Adresse, die<br />

dem Muster »([\w.%+‐]+)@([\w.‐]+\.<br />

[a‐zA‐Z]{2,4})« entsprechen soll.<br />

Ein scharfer Blick auf den String »reg‐<br />

ExprStr« im Programmcode erzeugt anfänglich<br />

ein wenig Verwirrung, beginnt<br />

er doch mit »R"(«. Das bedeutet, dass ein<br />

Raw-String folgt. Der wiederum bewirkt,<br />

dass C++11 eine Escape-Sequenz wie den<br />

Backslash »\« im String nicht interpretiert.<br />

Dadurch ist es nicht mehr notwendig, das<br />

Abbildung 3: Mit »regex_match()« findet der<br />

Programmierer den exakten Treffer, auf Wunsch in<br />

lokalen und Domänenteil getrennt.<br />

Zeichen durch einen weitere Backslash<br />

zu schützen. Ein Raw-String besitzt in<br />

C++11 die Form »R"(Zeichenkette)"«. Für<br />

reguläre Ausdrücke sollte ihn der C++-<br />

Programmierer wann immer möglich<br />

verwenden.<br />

Der reguläre Ausdruck »regExprStr« unterscheidet<br />

sich in zwei weiteren Punkten<br />

von dem regulären Ausdruck in Abbildung<br />

1. In »regExprStr« ist sowohl der<br />

lokale Anteil als auch der Domänenteil<br />

durch zusätzliche runde Klammern<br />

gekapselt. Dank dieser<br />

weiteren Klammern stehen deren<br />

Inhalte als Erfassungsgruppen<br />

zu Verfügung. Dadurch<br />

kann der Code auf den lokalen<br />

Adressenteil mit »smatch[1]«<br />

und den Domänenteil mit<br />

»smatch[2]« explizit zugreifen.<br />

Dies ist schön in Abbildung 3<br />

zu sehen.<br />

Der Rest von Listing 1 ist schnell erklärt:<br />

Zeile 19 instanziert den regulären Ausdruck<br />

mit Hilfe von »regExprStr«. Zeile 25<br />

fragt ab, ob der String »email« dem regulären<br />

Ausdruck »rgx« entspricht. Das Ergebnis<br />

dieser Abfrage speichert der Code<br />

in der Variablen »smatch« (Zeile 22). Fällt<br />

diese Antwort positiv aus, gibt Zeile 29<br />

den gesamten Treffer mit »smatch[0]«<br />

aus. Das Match-Objekt »smatch« kann<br />

aber noch deutlich mehr als nur den Ge‐<br />

C++11 08/2013<br />

Programmieren<br />

www.linux-magazin.de<br />

101<br />

Listing 1: Exakte Treffer mit »regex_match()«<br />

01 // replace #include <br />

02 // with #include <br />

03 #include <br />

04 <br />

05 #include <br />

06 #include <br />

07 <br />

08 // replace std::tr1:: with std:: in the<br />

source code<br />

09 int main(){<br />

10 <br />

11 std::cout


Programmieren<br />

www.linux-magazin.de C++11 08/2013<br />

102<br />

samttreffer und seine Erfassungsgruppen<br />

(Zeilen 30 und 31) anbieten.<br />

Eine mächtigere Antwort verlangt aber<br />

eine anspruchsvollere Frage. Die Frage<br />

lautet daher nicht mehr, ob der eingegebene<br />

Text einer E-Mail-Adresse entspricht,<br />

sondern ob sich eine E-Mail-Adresse in<br />

einem Text finden lässt.<br />

Im Text suchen<br />

Einfach, aber wirkungsvoll ist die Funktion<br />

»regex_search(emailText,smatch,rgx)« in<br />

Listing 2. Sie tut genau das, was sie<br />

verspricht: Sie sucht in »emailText« nach<br />

dem Text, der dem regulären Ausdruck<br />

»rgx« entspricht, und gibt anschließend<br />

das Ergebnis in dem Match-Objekt<br />

»smatch« zurück.<br />

Interessanter ist schon die »if«-Schleife in<br />

den Zeilen 25 bis 38. Das Match-Objekt<br />

gibt den Text vor (Zeile 29) und mit Zeile<br />

30 dem Treffer zurück. Auch die Länge<br />

des Treffers lässt sich in Zeile 32 ermitteln.<br />

Mit den Ausdrücken »smatch[0]«,<br />

»smatch[1]« und »smatch[2]« stehen<br />

wieder der Gesamttreffer und die Erfassungsgruppen<br />

zur Verfügung. Was das<br />

Match-Objekt sonst<br />

noch zu bieten hat,<br />

ist in [4] übersichtlich<br />

dargestellt. Dabei<br />

ist »smatch« ein Synonym<br />

für »match_results«.<br />

Etwas fehlt noch: Mit<br />

der Funktion »regex_<br />

search()« lässt sich<br />

nur eine einzelne<br />

E-Mail-Adresse aus<br />

dem Text extrahieren.<br />

Damit erfüllt »regex_<br />

search()« aber nicht<br />

die Aufgabenstellung, Abbildung 4: Das Programm iteriert über alle Mailadressen in der Eingabe.<br />

automatisch alle E-<br />

Mail-Adressen aus einem Mailheader zu<br />

extrahieren. Dies ist eine Arbeit für die<br />

Funktion »regex_token_iterator()«. Mit<br />

ihr kann der Programmierer über die<br />

Treffer iterieren.<br />

Im Prinzip wäre dies zwar auch händisch<br />

durch wiederholtes Anwenden von<br />

»regex_search()« möglich. Hier lauern<br />

aber einige Gefahren im Detail, die Pete<br />

Becker in seinem Buch „The Standard<br />

Library Extension“ [5] sehr anschaulich<br />

darstellt. Listing 3 beginnt vertraut, lediglich<br />

der Text »email« in Zeile 19 ist<br />

deutlich länger. Richtig spannend wird es<br />

in Zeile 35. Der Ausdruck »sregex_token_<br />

iterator it(email.begin(),email.end(),rgr)«<br />

definiert einen Token-Iterator. Dabei sind<br />

die Tokens die E-Mails.<br />

Zeile 39 wendet den Iterator an. Das Programm<br />

gibt so lange Tokens aus, bis der<br />

Listing 3: Iterieren über alle Treffer<br />

01 // replace #include with<br />

02 // #include <br />

03 #include <br />

30 "Message‐Id: ;\n";<br />

04 <br />

05 #include <br />

06 #include <br />

07 <br />

08 // replace std::tr1:: with std:: in the source code<br />

09 int main(){<br />

10 <br />

11 std::cout


Iterator »it« den gleichen Wert wie der<br />

End-Iterator »end« besitzt. Dies ist dann<br />

der Fall, wenn keine E-Mail-Adresse mehr<br />

zur Verfügung steht. Der sehr kompakte<br />

Ausdruck »*it++« dereferenziert zuerst<br />

den Wert des Iterators, gibt ihn aus und<br />

geht dann einen Schritt weiter.<br />

Der feine Unterschied zwischen dem Iterator<br />

»it« in Zeile 35 und »itCaptureBegin«<br />

in Zeile 44 besteht in dem Ausdruck<br />

»{{1,2}}«. Dieses optionale Argument für<br />

den Iterator bewirkt, dass er über die<br />

Der Autor<br />

Rainer Grimm arbeitet seit<br />

1999 als Software-Entwickler<br />

bei der Science + Computing<br />

AG in Tübingen. Insbesondere<br />

hält er Schulungen für<br />

das hauseigene Produkt SC<br />

Venus. Im Dezember 2011 ist sein Buch „C++11: Der<br />

Leitfaden für Programmierer zum neuen Standard“<br />

im Verlag Addison-Wesley erschienen.<br />

zweite und die dritte Erfassungsgruppe<br />

der Adresse iteriert. Die erste Komponente<br />

ist wider der lokale Teil, die zweite<br />

der Domänenteil (Abbildung 4).<br />

In den Zwischenräumen<br />

Die Funktion »regex_token_iterator()«<br />

kann aber noch viel mehr [6]. Sie erlaubt<br />

es, den Text zwischen den Treffern<br />

als Erfassungsgruppe mit dem Index ‐1<br />

zu adressieren. Damit lässt sich beispielsweise<br />

leicht ein Algorithmus formulieren,<br />

der aus einer kommaseparierten Liste die<br />

Werte extrahiert, indem er das Komma<br />

als regulären Ausdruck verwendet.<br />

Bestimmen, ob ein Text einem regulären<br />

Ausdruck entspricht oder ob ein regulärer<br />

Ausdruck in einem Text ein- oder<br />

mehrmals vorkommt – all das hat dieser<br />

Artikel gezeigt. Damit ist der Funktionsumfang<br />

der regulären Ausdrücke aber<br />

nicht erschöpft. Sie können den gefundenen<br />

Text nämlich auch ersetzen. Dies ist<br />

das Einsatzgebiet von »regex_replace()«,<br />

dem sich die nächste Folge dieser Reihe<br />

widmen wird. (mhu) <br />

n<br />

Infos<br />

[1] RFC 2822: [http:// tools. ietf. org/ html/​<br />

rfc2822# section‐3. 1]<br />

[2] Beispiele zu Regular Expressions für<br />

E-Mail-Adressen: [http:// www.​<br />

regular‐expressions. info/ email. html]<br />

[3] Rainer Grimm, „Zähl mich!“: <strong>Linux</strong>-<strong>Magazin</strong><br />

06/​13, S. 84<br />

[4] Match-Objekt: [http:// en. cppreference.​<br />

com/ w/ cpp/ regex/ match_results]<br />

[5] Pete Becker, „The Standard Library Extensions:<br />

[http:// www. petebecker. com/​<br />

tr1book/ tr1book. html]<br />

[6] »regex_token_iterator«: [http:// www.​<br />

cplusplus. com/ reference/ regex/ regex_<br />

token_iterator/ regex_token_iterator/]<br />

[7] Listings zu diesem Artikel:<br />

[http:// www. linux‐magazin. de/ static/​<br />

listings/ magazin/ 2013/ 08/]<br />

C++11 08/2013<br />

Programmieren<br />

www.linux-magazin.de<br />

103<br />

IT-Onlinetrainings<br />

Mit Experten lernen.<br />

powered by<br />

MEDIALINX<br />

IT-ACADEMY<br />

Sparen Sie Zeit und Kosten mit unseren<br />

praxisorientierten Onlinetrainings.<br />

Bestimmen Sie Ihr eigenes Lerntempo<br />

und nutzen Sie die flexible Zeiteinteilung.<br />

Effiziente BASH-Skripte<br />

mit Klaus Knopper,<br />

KNOPPER.NET<br />

199 €<br />

Konzentriertes BASH-Wissen<br />

vom Gründer der Knoppix-Live-<br />

Distribution.<br />

Lösen Sie komplexe Aufgaben mit<br />

schnellen Ad-hoc-Lösungen auf der<br />

Kommandozeile. Automatisieren<br />

Sie Ihre System administration mit<br />

Hilfe von Skripten.<br />

www.medialinx-academy.de


Programmieren<br />

www.linux-magazin.de Perl-Snapshot 08/2013<br />

104<br />

Loginsystem, agil entwickelt<br />

Am Anfang war der Test<br />

Test-driven Development mit einer nebenbei generierten Testsuite verspricht Code mit weniger Fehlern.<br />

Michael „Perlmeister“ Schilli betritt gleich den Pfad der Agilität und findet am Wegesrand zufällig ein<br />

passendes, nagelneues CPAN-Modul. Michael Schilli<br />

Um zum Beispiel eine Klasse »User.pm«<br />

für ein Loginsystem zu schreiben, das<br />

später Methoden wie »login()« unterstützen<br />

soll, legt der TDD-Apostel zunächst<br />

einen Testfall an. Der prüft, ob sich die<br />

gewünschte Klasse überhaupt instanzieren<br />

lässt. Listing 1 zeigt die Testdatei für<br />

einfache Testfälle »Basic.pm«. Sie liegt im<br />

Verzeichnis »t«, welches das brandneue<br />

CPAN-Modul Test::Class::Moose nutzt.<br />

Letzteres führt alle Methoden, die mit<br />

dem Präfix »test_« beginnen, mit den darin<br />

enthaltenen Testroutinen aus.<br />

Listing 1 definiert »test_constructor()«<br />

und setzt darin den Befehl<br />

© linkje, Photocase.com<br />

1 package TestsFor::User;<br />

2 use Test::Class::Moose;<br />

3<br />

4 sub test_constructor {<br />

5 can_ok 'User', 'new';<br />

6 }<br />

7<br />

8 1;<br />

Vor einigen Wochen hatte mich mein Arbeitgeber<br />

auf einen Kurs zum Thema Testdriven<br />

Development (TDD) geschickt.<br />

Testgetriebenes Entwickeln zählt zu den<br />

so genannten agilen Methoden. Um mein<br />

gerade erworbenes Wissen in die Praxis<br />

umzusetzen, stelle ich den heutigen<br />

Perl-Snapshot ganz in den Dienst dieses<br />

Prinzips. Schnelle und flexible Entwickler<br />

legen sofort los, ohne auf Details zu achten.<br />

Sie schreiben stets zuerst einen Test,<br />

Listing 1: »Basic.pm«<br />

bevor sie sich an die Implementierung<br />

einer Funktion machen. Darum wächst<br />

die Testsuite automatisch mit relevanten<br />

Tests zu Funktionen des Systems mit.<br />

Unsauberen Code säubern sie später mittels<br />

Refactoring, was dank des durch die<br />

Testsuite bereitgestellten Sicherheitsnetzes<br />

gefahrlos gelingt.<br />

Nichts als Fehler –<br />

und das ist richtig so<br />

Die vor dem Schreiben einer Funktion<br />

entwickelten Tests schlagen naturgemäß<br />

fehl, da das gewünschte Feature zunächst<br />

entweder noch gar nicht existiert oder<br />

nur teilweise oder fehlerhaft implementiert<br />

ist. Steht später der Code, schaltet<br />

die Testsuite auf Grün, was eine Entwicklungsumgebung<br />

wie Eclipse sogar<br />

optisch so anzeigt.<br />

can_ok 'User', 'new';<br />

aus dem Modul Test::More ab. Damit<br />

prüft »test_constructor()«, ob die Klasse<br />

»User« dazu fähig ist, ihren Konstruktor<br />

»new« aufzurufen.<br />

Listing 2 zeigt ein Skript, das die Testsuite<br />

ablaufen lässt. Zunächst lädt es<br />

mittels »Load« alle Perl-Module mit der<br />

Endung ».pm«, die es in den angegebenen<br />

Unterverzeichnissen ».« und »t«<br />

findet. Die Methode »runtests()« durchstöbert<br />

daraufhin alle »test_*«-Routinen.<br />

In dieser Projektphase existiert die Klasse<br />

»User« allerdings noch nicht, und so<br />

schlägt die Testsuite in »test_constructor()«<br />

fehl (Abbildung 1).<br />

Erfolgserlebnisse<br />

Der Test-driven-Entwickler hat dies zweifellos<br />

erwartet und setzt nun alles daran,<br />

Online PLUS<br />

In einem Screencast demonstriert<br />

Michael Schilli das Beispiel: [http://​<br />

www.linux-magazin.de/​plus/​2013/08]


Code hinzuzufügen, bis die Testsuite erfolgreich<br />

durchläuft. Da die Klasse nicht<br />

existiert, legt er eine neue Datei »User.<br />

pm« an und schreibt hinein:<br />

package User;<br />

use Moose;<br />

1;<br />

In Würde ergraute Perlpanther reiben<br />

sich hier vielleicht ungläubig die Augen,<br />

denn das Package »User« definiert keinen<br />

Konstruktor »new()«, der einen Objekthash<br />

»$self« mittels »bless()« mit einem<br />

Paket verschweißt. Das CPAN-Modul<br />

Moose [2] erledigt all dies hinter den<br />

Kulissen, sodass jedes Paket, das Moose<br />

hereinzieht, automatisch einen Konstruktor<br />

»new()« besitzt. Ein erneuter Aufruf<br />

der Testsuite mit »./runtests« liefert:<br />

[...]<br />

ok 1 ‐ TestsFor::User<br />

Die Suite findet also die neue ».pm«-Datei,<br />

die in ihr enthaltene Klasse, und führt den<br />

Konstruktor »new()« erfolgreich aus.<br />

Erneut geht’s hinein ins<br />

agile Getümmel<br />

Abbildung 1: Zunächst schlägt die Testsuite Alarm, denn die Klasse »User« hat noch niemand geschrieben.<br />

Grünes Licht – das Signal für den TDD-<br />

Entwickler, ein neues Feature anzugehen!<br />

Das User-Objekt braucht Methoden, um<br />

die E-Mail-Adresse des Users zu setzen<br />

und abzufragen. Ein konventionell arbeitender<br />

Entwickler würde wohl sogleich<br />

anfangen den scheinbar einfachen Code<br />

einzutippen. Nicht so der TDD-Anhänger,<br />

denn der schreibt zunächst einen Test,<br />

der noch dazu fehlschlägt.<br />

Listing 3 definiert die Methode »test_<br />

accessors()«, die das Testmodul später<br />

ebenfalls aufgrund des Präfixes finden<br />

und aufrufen wird. Sie erzeugt ein neues<br />

Objekt vom Typ »User« und übergibt dem<br />

Konstruktor das Parameterpaar »email<br />

=> 'a@b.com'«. Eine Zeile weiter holt<br />

der noch nicht definierte Accessor den<br />

per Konstruktor gesetzten E-Mail-String<br />

hervor, und die Funktion »is« aus dem<br />

Modul Test::More vergleicht den Wert mit<br />

dem vorher gesetzten. Stimmen beide<br />

Inhalte überein, schreibt »is« den String<br />

»ok« in die TAP-Ausgabe der Testsuite.<br />

Die Suite erkennt dies als erfolgreich ausgeführten<br />

Testfall.<br />

Es folgt ein Test des so genannten Setters,<br />

der mit der Methode »email()« einen<br />

neuen Wert für die E-Mail-Adresse<br />

des Users setzt und später mit dem Accessor<br />

(ebenfalls »email()«, aber ohne<br />

Argument) den gespeicherten Wert wieder<br />

hervorholt und mit dem Original<br />

vergleicht. Doch noch verfügt die Klasse<br />

»User.pm« nicht einmal über den notwendigen<br />

Code – der neue Test schlägt also<br />

sofort fehl.<br />

Getter und Setter<br />

Damit der Konstruktor der Klasse »User«<br />

den Email-String als benamten Parameter<br />

entgegennimmt, eine gleichnamige<br />

Accessor-Methode ihn wieder ausspuckt<br />

und ein Setter neue Werte setzen kann,<br />

musste in der Zeit vor Moose der Perl-<br />

Hacker Dutzende Codezeilen händisch<br />

einfügen. Mit Moose ist dies ein Klacks,<br />

denn dessen Funktion »has« definiert ein<br />

Attribut einer Klasse, das sich gleichzeitig<br />

über einen Konstruktor-Parameter,<br />

einen Getter (»email()«) und einen Setter<br />

(»email( $email )«) ansprechen lässt.<br />

Listing 4 zeigt eine spätere Version der<br />

Klasse »User«, die per »has« das Attribut<br />

»email« definiert. Ihr Parameter »is«<br />

macht mit »rw« den Wert les- und beschreibbar,<br />

»isa« bestimmt ihn als »Str«,<br />

Listing 3: »Accessors.pm«<br />

01 package TestsFor::User;<br />

02 use Test::Class::Moose;<br />

03<br />

04 sub test_accessors {<br />

05<br />

06 my $email1 = 'a@b.com';<br />

07 my $email2 = 'c@d.com';<br />

08<br />

09 my $user = User‐>new(<br />

10 email => $email1,<br />

also als beliebige Zeichenkette. Das erneute<br />

Anstoßen der Testsuite in Abbildung<br />

2 zeigt, dass nun alle drei definierten<br />

Testfälle erfolgreich durchlaufen. Es<br />

kann also weitergehen!<br />

Die Kunden sollen in eine<br />

Datenbank<br />

Als Nächstes schreibt das Pflichtenheft<br />

des Kunden vor, dass User sich unter<br />

ihrer E-Mail in einer Kundendatenbank<br />

registrieren. Getreu den TDD-Prinzipien<br />

definiert Listing 5 zuerst den Testfall mit<br />

der Routine »test_customers()«. Es erzeugt<br />

mit Hilfe des Konstruktors »new()«<br />

der Klasse »Customers« eine neue Kundendatei.<br />

Dann speist es zwei neue User mit ihren<br />

jeweiligen E-Mail-Adressen mit der noch<br />

nicht existierenden Methode »sign_up()«<br />

in die Datenbank ein. In der zweiten For-<br />

Schleife ab Zeile 17 prüft die Testroutine<br />

nun mit »ok« und der zu implementierenden<br />

Methode »user_find_by_email()«, ob<br />

Listing 2: »runtests«<br />

1 #!/usr/local/bin/perl ‐w<br />

2 use Test::Class::Moose::Load qw(t .);<br />

3 Test::Class::Moose‐>new‐>runtests;<br />

11 );<br />

12 is $user‐>email(), $email1;<br />

13<br />

14 <br />

# Setter<br />

15 $user‐>email( $email2 );<br />

16 is $user‐>email(), $email2;<br />

17 }<br />

18<br />

19 1;<br />

Perl-Snapshot 08/2013<br />

Programmieren<br />

www.linux-magazin.de<br />

105


Programmieren<br />

www.linux-magazin.de Perl-Snapshot 08/2013<br />

106<br />

1 package User;<br />

2 use Moose;<br />

3<br />

4 has 'email' =><br />

das Kundendatei-Objekt die gerade registrierten<br />

Kunden auch wiederfindet. In diesem<br />

Fall wird die Methode per Vorschrift<br />

einen wahren Wert zurückliefern.<br />

Als Letztes: Die Fahndung<br />

nach den Usern<br />

Wieder stehen alle Räder still, wenn die<br />

fehlerhafte Testsuite es so will. Um den<br />

Fehler zu beheben, implementiert Listing<br />

6 die Klasse »Customers«, ebenfalls wieder<br />

mit Moose und zwei zusätzlichen<br />

Methoden. Perls Objektsystem übergibt<br />

ihnen wie üblich als erstes Argument<br />

eine Referenz auf das Objekt. Die Klasse<br />

definiert einen globalen Hash »%USERS«,<br />

in dem die Methode »sign_up()« das ihr<br />

übergebene Objekt vom Typ »User« unter<br />

dessen E-Mail-Adresse ablegt.<br />

Die Lookup-Methode »user_find_by_<br />

email()« sieht mit »exists« im globalen<br />

Hash nach und liefert entweder das gefundene<br />

User-Objekt zurück, falls es<br />

schon registriert ist, oder »undef«, falls<br />

5 (is => 'rw', isa => 'Str');<br />

6<br />

7 1;<br />

01 package TestsFor::Customers;<br />

02 use Test::Class::Moose;<br />

03<br />

04 sub test_customers {<br />

05<br />

06 my $customers = Customers‐>new();<br />

07<br />

08 my @users = qw( a@b.com c@d.com );<br />

09<br />

10 for my $email ( @users ) {<br />

11 my $user = User‐>new(<br />

12 email => $email,<br />

Listing 4: »User.pm«<br />

Listing 5: »Register.pm«<br />

13 );<br />

sie den User nicht findet. Sobald der Code<br />

in Listing 6 fehlerfrei ist, leuchtet grünes<br />

Licht auf und ein weiterer Meilenstein im<br />

Projekt ist unter Dach und Fach.<br />

Moose – gefunden, ohne<br />

danach gesucht zu haben<br />

Das CPAN-Modul Test::Class::Moose befindet<br />

sich noch in der Betaphase, und<br />

tatsächlich habe ich von seiner Existenz<br />

erst auf der Perl-Konferenz YAPC [3] Anfang<br />

Juni im texanischen Austin erfahren<br />

– wenige Stunden vor Redaktionsschluss.<br />

Es sieht nach meinem ersten Eindruck<br />

sehr stabil aus, gleichwohl nimmt der Autor<br />

des Moduls Bugreports oder Patches<br />

freudig entgegen.<br />

Der Vorteil der Entwicklung nach der<br />

Test-driven-Development-Methode ist<br />

zweifellos die stets wachsende Testsuite,<br />

die – falls der Entwickler nach Plan<br />

vorgeht – praktisch 100 Prozent Code-<br />

Abdeckung bietet. Kommt der Kunde<br />

mitten im Projekt plötzlich mit Änderungswünschen,<br />

kann der TDD-Werker<br />

diese sorglos einbauen, denn die Testsuite<br />

garantiert, dass sich dabei keine<br />

fatalen Fehler einschleichen.<br />

Agile Entwickler sollten sich auch nicht<br />

zu sehr den Kopf darüber zerbrechen,<br />

was nun die eleganteste Methode ist, ein<br />

bestimmtes Feature zu implementieren.<br />

Ein einfacher Weg genügt, und sobald<br />

14 $customers‐>sign_up( $user );<br />

15 }<br />

16<br />

17 for my $email ( @users ) {<br />

18 ok $customers‐>user_find_by_email(<br />

19 $email<br />

20 );<br />

21 }<br />

22 }<br />

23<br />

24 1;<br />

Abbildung 2: Grünes Licht: Die Testsuite läuft ohne<br />

Fehler durch, die agile Entwicklung darf darum<br />

weiter voranschreiten.<br />

die Testsuite Grün meldet, geht es weiter<br />

zum nächsten Feature.<br />

Nach einiger Zeit der Entwicklung im<br />

Schnell-schnell-Verfahren entstehen naturgemäß<br />

hässliche Codestücke, die alle<br />

paar Iterationen korrigiert gehören, damit<br />

die Software wartbar bleibt: Findet<br />

sich ein dupliziertes Codestück, lässt es<br />

sich meist in eine Funktion auslagern.<br />

Kristallisieren sich Teile des Systems als<br />

bekannte Softwarepatterns heraus, sollte<br />

der Entwickler sie in deren Referenzimplementierungen<br />

umwandeln.<br />

Dieses so genannte Refactoring ist natürlicher<br />

Bestandteil des Verfahrens und<br />

verursacht normalerweise keine Probleme<br />

– ebenfalls dank der seit Beginn<br />

bestehenden Testsuite und ihrer weitflächigen<br />

Code-Abdeckung. Zeigt die Testsuite<br />

grünes Licht, war der Frühjahrsputz<br />

erfolgreich. (jk) <br />

n<br />

Infos<br />

[1] Listings zu diesem Artikel:<br />

[ftp:// www. linux‐magazin. de/ pub/ listings/​<br />

magazin/ 2013/ 08/ Perl]<br />

[2] Test::Class::Moose:<br />

[http:// search. cpan. org/ ~ovid/ Test‐Class‐<br />

Moose‐0. 12/ lib/ Test/ Class/ Moose. pm]<br />

[3] Yet Another Perl Conference:<br />

[http:// www. yapc. org]<br />

Listing 6: »Customers.pm«<br />

01 package Customers;<br />

02 use Moose;<br />

03<br />

04 our %USERS = ();<br />

05<br />

06 sub sign_up {<br />

07 my( $self, $user ) = @_;<br />

08<br />

09 $USERS{ $user‐>email() } = $user;<br />

10 }<br />

11<br />

12 sub user_find_by_email {<br />

13 my( $self, $email ) = @_;<br />

14<br />

15 return exists $USERS{ $email };<br />

16 }<br />

17<br />

18 1;<br />

Der Autor<br />

Michael Schilli arbeitet<br />

als Software-Engineer bei<br />

Yahoo in Sunnyvale, Kalifornien.<br />

In seiner seit 1997<br />

laufenden Kolumne forscht<br />

er nach praktischen Anwendungen<br />

der Skriptsprache Perl. Unter [mschilli@<br />

perlmeister. com] beantwortet er gerne Fragen.


Jetzt<br />

am KiosK<br />

für nur<br />

9,80 euro<br />

•Über 100 Jahre Motorrad-Passion<br />

•Exklusiver Einblick in das Triumph Foto Archiv<br />

•Die Geschichte der legendären Marke im Überblick


Service<br />

www.linux-magazin.de IT-Profimarkt 08/2013<br />

108<br />

PROFI<br />

MARKT<br />

Sie fragen sich, wo Sie maßgeschneiderte<br />

<strong>Linux</strong>-Systeme und kompetente<br />

Ansprechpartner zu Open-Source-Themen<br />

finden? Der IT-Profimarkt weist Ihnen<br />

als zuverlässiges Nachschlagewerk<br />

den Weg. Die hier gelisteten Unternehmen<br />

beschäftigen Experten auf ihrem<br />

Gebiet und bieten hochwertige Produkte<br />

und Leistungen.<br />

Die exakten Angebote jeder Firma entnehmen<br />

Sie deren Homepage. Der ersten<br />

Orientierung dienen die Kategorien<br />

Hardware, Software, Seminaranbieter,<br />

Systemhaus, Netzwerk/TK und Schulung/Beratung.<br />

Der IT-Profimarkt-Eintrag<br />

ist ein Service von <strong>Linux</strong>-<strong>Magazin</strong><br />

und <strong>Linux</strong>User.<br />

Online-Suche<br />

Besonders bequem finden Sie einen<br />

<strong>Linux</strong>-Anbieter in Ihrer Nähe über die<br />

neue Online-Umkreis-Suche unter:<br />

[http://www.it-profimarkt.de]<br />

Informationen<br />

fordern Sie bitte an bei:<br />

Medialinx AG<br />

Anzeigenabteilung<br />

Putzbrunner Str. 71<br />

D-81739 München<br />

Tel.: +49 (0)89/99 34 11-23<br />

Fax: +49 (0)89/99 34 11-99<br />

E-Mail: anzeigen@linux-magazin.de<br />

IT-Profimarkt – Liste sortiert nach Postleitzahl<br />

1 = Hardware 2 = Netzwerk/TK 3 = Systemhaus<br />

4= Fachliteratur 4= Seminaranbieter 5 = Software 5 = Software 6 = Schulung/Beratung 6 = Firma Anschrift Telefon Web 1 2 3 4 5 6<br />

Schlittermann internet & unix support 01099 Dresden, Tannenstr. 2 0351-802998-1 www.schlittermann.de √ √ √ √<br />

imunixx GmbH UNIX consultants 01468 Moritzburg,<br />

0351-83975-0 www.imunixx.de √ √ √ √ √<br />

Heinrich-Heine-Str. 4<br />

Heinlein Support GmbH 10119 Berlin, Schwedter Straße 8/​9b 030-405051-0 www.heinlein-support.de √ √ √ √ √<br />

TUXMAN Computer 10369 Berlin, Anton-Saefkow-Platz 8 030-97609773 www.tuxman.de √ √ √ √ √<br />

Compaso GmbH 10439 Berlin, Driesener Strasse 23 030-3269330 www.compaso.de √ √ √ √ √<br />

elego Software Solutions GmbH 13355 Berlin, Gustav-Meyer-Allee 25 030-2345869-6 www.elegosoft.com √ √ √ √<br />

verion GmbH<br />

16244 Altenhof,<br />

033363-4610-0 www.verion.de √ √ √<br />

Unter den Buchen 22 e<br />

Logic Way GmbH 19061 Schwerin, Hagenower Str. 73 0385-39934-48 www.logicway.de √ √ √ √<br />

Sybuca GmbH 20459 Hamburg, Herrengraben 26 040-27863190 www.sybuca.de √ √ √ √ √<br />

iTechnology GmbH<br />

22083 Hamburg,<br />

040 / 69 64 37 20 www.itechnology.de √ √ √ √<br />

Osterbekstrasse 90b<br />

JEL Ingenieurbuero 23911 Einhaus, Hauptstr. 7 04541-8911-71 www.jeltimer.de √<br />

beitco - Behrens IT-Consulting 26197 Ahlhorn, Lessingstr. 27 04435-9537330-0 www.beitco.de √ √ √ √ √<br />

talicom GmbH<br />

30169 Hannover,<br />

0511-123599-0 www.talicom.de √ √ √ √ √<br />

Calenberger Esplanade 3<br />

primeLine Solutions GmbH<br />

32549 Bad Oeynhausen,<br />

05731/​86940 www.primeline- √ √ √ √<br />

Dornenbreite 18a<br />

solutions.de<br />

teuto.net Netzdienste GmbH 33602 Bielefeld, Niedenstr. 26 0521-96686-0 www.teuto.net √ √ √ √ √<br />

MarcanT GmbH<br />

33602 Bielefeld,<br />

0521-95945-0 www.marcant.net √ √ √ √ √ √<br />

Ravensberger Str. 10 G<br />

LINET Services GmbH 38118 Braunschweig, Cyriaksring 10a 0531-180508-0 www.linet-services.de √ √ √ √ √ √<br />

OpenIT GmbH<br />

40599 Düsseldorf,<br />

0211-239577-0 www.OpenIT.de √ √ √ √ √<br />

In der Steele 33a-41<br />

<strong>Linux</strong>-Systeme GmbH 45277 Essen, Langenbergerstr. 179 0201-298830 www.linux-systeme.de √ √ √ √ √<br />

<strong>Linux</strong>hotel GmbH 45279 Essen, Antonienallee 1 0201-8536-600 www.linuxhotel.de √<br />

OpenSource Training Ralf Spenneberg 48565 Steinfurt, Am Bahnhof 3-5 02552-638755 opensource-training.de √<br />

Intevation GmbH 49074 Osnabrück, Neuer Graben 17 0541-33508-30 osnabrueck.intevation.de √ √ √ √<br />

Sigs Datacom GmbH 53842 Troisdorf, Lindlaustraße 2c 02241-2341-201 sigs-datacom.de √<br />

uib gmbh 55118 Mainz, Bonifaziusplatz 1b 06131-27561-0 www.uib.de √ √ √ √<br />

LISA GmbH 55411 Bingen, Elisenhöhe 47 06721-49960 www.lisa-gmbh.de √ √ √ √ √<br />

GONICUS GmbH 59755 Arnsberg, Moehnestr. 55 02932-9160 www.gonicus.com √ √ √ √ √<br />

saveIP GmbH<br />

64283 Darmstadt,<br />

Schleiermacherstr. 23<br />

06151-666266 www.saveip.de √ √ √ √ √<br />

LAMARC EDV-Schulungen u. Beratung<br />

GmbH<br />

65193 Wiesbaden,<br />

Sonnenberger Straße 14<br />

0611-260023 www.lamarc.com √ √ √ √<br />

ORDIX AG 65205 Wiesbaden, Kreuzberger Ring 13 0611-77840-00 www.ordix.de √ √ √ √ √<br />

IT-Profimarkt listet ausschließlich Unternehmen, die Leistungen rund um <strong>Linux</strong> bieten. Alle Angaben ohne Gewähr. <br />

(S.110)


Markt/Stellenanzeige<br />

Embedded <strong>Linux</strong><br />

Beratung - Schulung - Entwicklung<br />

Imagery: Earth by NASA / The Blue Marble Project - http://visibleearth.nasa.gov | Penguin Variant by Larry Ewing, Simon Budig & Anja Gerwinski<br />

<strong>Linux</strong> Portierung - Web - AJAX - Qt - Echtzeit<br />

www.pengutronix.de<br />

+49 (5121) 20 69 17 - 0<br />

Das Deutsche Zentrum für integrative Biodiversitätsforschung (iDiv) Halle-Jena-Leipzig ist eines<br />

von sieben Forschungszentren der Deutschen Forschungsgemeinschaft (DFG). iDiv widmet sich den<br />

Fragen, wie Biodiversität erfasst werden kann, wie sie im Laufe der Evolution entsteht, welche<br />

Konsequenzen sie für das Funktionieren von Ökosystemen hat und wie sie langfristig erhalten werden<br />

kann. In insgesamt 11 Arbeitsgruppen sowie zentralen Einrichtungen (IT, Öko- und Bioinformatik,<br />

Werkstatt, Gewächshäuser) werden bis zu 200 Mitarbeiter/-innen gemeinsam in einem hoch integrativen<br />

Umfeld arbeiten. Das Zentrum ist in der BioCity Leipzig angesiedelt und wird als zentrale<br />

Einrichtung der Universität Leipzig zusammen mit der Martin-Luther-Universität Halle-Wittenberg<br />

und der Friedrich-Schiller-Universität Jena betrieben sowie in Kooperation mit dem Helmholtz-<br />

Zentrum für Umweltforschung GmbH - UFZ. Zudem erhält es Unterstützung von der Max-Planck-<br />

Gesellschaft, der Leibniz-Gemeinschaft, der Klaus Tschira Stiftung sowie dem Freistaat Sachsen.<br />

Zur Verstärkung unseres General IT-Supports suchen wir zum nächstmöglichen Zeitpunkt eine/-n:<br />

Systemadministrator/-in<br />

zunächst befristet bis 30.09.2016; vorgesehene Vergütung: Entgeltgruppe 11 TV-L<br />

Aufgabengebiete:<br />

- Systemadministration und Betriebsführung in einer Umgebung basierend auf dem Windowsdomänenkonzept<br />

und <strong>Linux</strong> (Ubuntu, RHEL), einschließlich Datensicherung<br />

- Betreuung von bis zu 200 wissenschaftlichen und nichtwissenschaftlichen Arbeitsplätzen und<br />

dazugehörigen IT-Systemen<br />

- Administration der Web- und Mail-Dienste sowie Firewall<br />

- Netzwerkadministration von HPC-Cluster<br />

- Beratung, Planung und Durchführung von Hard- und Softwarebeschaffung einschließlich Ausschreibungen<br />

- Installation und umfassende Betreuung von System- und Anwendungssoftware<br />

- Beratung, Planung und Durchführung von Projekten<br />

Voraussetzungen:<br />

- einschlägiger Bachelorabschluss oder Fachhochschulabschluss bzw. vergleichbare Qualifikation<br />

- langjährige Berufserfahrung bei der Administration von großen System-Umgebungen<br />

- anwendungsbereite Kenntnisse in der Netzwerkadministration sowie von Mail- und Web-Diensten<br />

- gute Englischkenntnisse in Wort und Schrift<br />

- fachspezifische Kenntnisse auf folgenden Gebieten sind von Vorteil:<br />

• Windowsdomänen auf Basis von MS Active<br />

Directory, LDAP, Kerberos<br />

• VMWare Vsphere<br />

• FC basierendes SAN<br />

• Cisco Adaptive Security Device Manager<br />

• Samba / Winbind, NFSv3 und NFSv4<br />

• Programmiersprachen wie PHP, Perl und<br />

VBS<br />

• Zimbra GW-Server / MS Exchange<br />

• relationale Datenbanksysteme wie MySQL<br />

- Erfahrungen in der Projektarbeit (Planung, Umsetzung) auf EDV-technischem Gebiet<br />

- Erfahrungen in der Durchführung von Ausschreibungen bei der Hard- und Softwarebeschaffung<br />

- aufgaben-, serviceorientierte, sachliche und kooperative Arbeitsweise<br />

- Bereitschaft zum autodidaktischen Einarbeiten in neue Sachverhalte<br />

Bewerbungen mit den üblichen Unterlagen werden bevorzugt in elektronischer Form (möglichst in<br />

einer PDF-Datei) unter Angabe der Verfahrenskennziffer 126/2013 bis zum 9. August 2013 erbeten<br />

an: application@idiv-biodiversity.de oder per Post an: Deutsches Zentrum für integrative Biodiversitätsforschung<br />

(iDiv), Halle-Jena-Leipzig, Frau Marlene Rauschenbach, Deutscher Platz 5e,<br />

04103 Leipzig<br />

Eine Bewerbung per E-Mail ist jedoch datenschutzrechtlich bedenklich. Der/Die Versender/-in<br />

trägt dafür die volle Verantwortung. Schwerbehinderte werden zur Bewerbung aufgefordert und<br />

bei gleicher Eignung bevorzugt berücksichtigt.


Service<br />

www.linux-magazin.de Markt 08/2013<br />

110<br />

IT-Profimarkt/Markt<br />

IT-Profimarkt – Liste sortiert nach Postleitzahl (Fortsetzung von S. 108)<br />

Firma Anschrift Telefon Web 1 2 3 4 5 6<br />

<strong>Linux</strong>Haus Stuttgart<br />

70565 Stuttgart, Hessenwiesenstrasse<br />

0711-2851905 www.linuxhaus.de √ √ √ √ √<br />

10<br />

Manfred Heubach EDV und Kommunikation 73728 Esslingen, Hindenburgstr. 47 0711-4904930 www.heubach-edv.de √ √ √ √<br />

Waldmann EDV Systeme + Service 74321 Bietigheim-Bissingen, Pleidelsheimer<br />

07142-21516 www.waldmann-edv.de √ √ √ √ √<br />

Str. 25<br />

in-put Das <strong>Linux</strong>-Systemhaus 76133 Karlsruhe, Moltkestr. 49 0721-6803288-0 www.in-put.de √ √ √ √ √ √<br />

Bodenseo 78224 Singen, Pomeziastr. 9 07731-1476120 www.bodenseo.de √ √ √<br />

<strong>Linux</strong> Information Systems AG 81739 München, Putzbrunnerstr. 71 089-993412-0 www.linux-ag.com √ √ √ √ √<br />

<strong>Linux</strong>Land International GmbH 81739 München, Putzbrunnerstr. 71 089-99341441 www.linuxland.de √ √ √ √ √ √<br />

Synergy Systems GmbH 81829 München, Konrad-Zuse-Platz 8 089-89080500 www.synergysystems.de √ √ √ √ √<br />

B1 Systems GmbH 85088 Vohburg, Osterfeldstrasse 7 08457-931096 www.b1-systems.de √ √ √ √ √<br />

ATIX AG 85716 Unterschleißheim, Einsteinstr. 10 089-4523538-0 www.atix.de √ √ √ √ √ √<br />

Tuxedo Computers GmbH 86343 Königsbrunn , Zeppelinstr. 3 0921-16 49 87 87-0 www.linux-onlineshop.de √ √ √ √<br />

OSTC Open Source Training and Consulting<br />

GmbH<br />

90425 Nürnberg,<br />

Waldemar-Klink-Str. 10<br />

0911-3474544 www.ostc.de √ √ √ √ √ √<br />

Dipl.-Ing. Christoph Stockmayer GmbH 90571 Schwaig, Dreihöhenstr. 1 0911-505241 www.stockmayer.de √ √ √<br />

pascom - Netzwerktechnik GmbH & Co.KG 94469 Deggendorf, Berger Str. 42 0991-270060 www.pascom.net √ √ √ √ √<br />

RealStuff Informatik AG CH-3007 Bern, Chutzenstrasse 24 0041-31-3824444 www.realstuff.ch √ √ √<br />

CATATEC CH-3013 Bern, Dammweg 43 0041-31-3302630 www.catatec.ch √ √ √<br />

Syscon Systemberatungs AG CH-8003 Zürich, Zweierstrasse 129 0041-44-4542010 www.syscon.ch √ √ √ √ √<br />

Würth Phoenix GmbH IT-39100 Bozen, Kravoglstraße 4 0039 0471 56 41 11 www.wuerth-phoenix.com √ √ √ √<br />

IT-Profimarkt listet ausschließlich Unternehmen, die Leistungen rund um <strong>Linux</strong> bieten. Alle Angaben ohne Gewähr. <br />

n<br />

JETZT NEU<br />

AM KIOSK!<br />

196 Seiten<br />

im Pocket-Format<br />

für nur 9,80 Euro<br />

QR-Code scannen und<br />

direkt online bestellen!<br />

www.apps-und-tipps.de


u<br />

Fon (0441) 4 85 15 19<br />

Fax (0441) 9 49 05 82<br />

eMail: post@werbewelten.de<br />

Seminare / Markt<br />

Fernstudium<br />

IT-Sicherheit<br />

Aus- und Weiterbildung zur Fachkraft für<br />

IT-Sicherheit. Ein Beruf mit Zukunft. Kostengünstiges<br />

und praxisgerechtes Studium<br />

ohne Vorkenntnisse. Beginn jederzeit.<br />

NEU:PC-Techniker, Netzwerk-Techniker,<br />

<strong>Linux</strong>-Administrator LPI, Webmaster<br />

Teststudium ohne Risiko.<br />

GRATIS-Infomappe<br />

gleich anfordern!<br />

FERNSCHULE WEBER<br />

-seit 1959-<br />

Postfach 21 61<br />

Abt. C25<br />

26192 Großenkneten<br />

Tel. 0 44 87 / 263<br />

Fax 0 44 87 / 264<br />

www.fernschule-weber.de<br />

tl<br />

a<br />

ta<br />

s<br />

•<br />

n<br />

c<br />

i<br />

e<br />

s<br />

s<br />

h<br />

a<br />

g<br />

el<br />

e<br />

p<br />

g<br />

rü<br />

Fernstudium<br />

f<br />

t<br />

n<br />

d<br />

z<br />

u<br />

UNIX-C-C++ Java<br />

Seminare<br />

in Nürnberg<br />

(oder inhouse)<br />

UNIX/<strong>Linux</strong><br />

UNIX/<strong>Linux</strong>-Aufbau<br />

C, C-Aufbau<br />

C++<br />

OOA/OOD (mit UML)<br />

Java<br />

Perl, XML<br />

weitere Kurse auf Anfrage, Telephonhotline<br />

Dipl.-Ing.<br />

Christoph Stockmayer GmbH<br />

90571 Schwaig/Nbg • Dreihöhenstraße 1<br />

Tel.: 0911/505241 • Fax 0911/5009584<br />

EMail: sto@stockmayer.de<br />

http://www.stockmayer.de<br />

IT-Onlinetrainings<br />

Mit Experten lernen.<br />

MEDIALINX<br />

IT-ACADEMY<br />

Einfache IMAP-Server<br />

mit Dovecot<br />

mit Peer Heinlein,<br />

Heinlein Support GmbH<br />

249 €<br />

www.medialinx-academy.de<br />

IT-Onlinetrainings<br />

Mit Experten lernen.<br />

MEDIALINX<br />

IT-ACADEMY<br />

Python für<br />

Systemadministratoren<br />

mit Rainer Grimm,<br />

science + computing AG<br />

199 €<br />

Vereinfachen Sie Ihren Sysadmin-Alltag<br />

mit Skripting-Know-How für Profis!<br />

www.medialinx-academy.de<br />

IT-Onlinetrainings<br />

Mit Experten lernen.<br />

MEDIALINX<br />

IT-ACADEMY<br />

– die offiziellen Trainings<br />

mit Marco Welter,<br />

Zarafa Deutschland GmbH<br />

Zarafa Administrator<br />

249 €<br />

Zarafa Engineer<br />

249 €<br />

www.medialinx-academy.de<br />

IT-Academy_1-9_Dovecot-Schulung.indd 1<br />

IT-Onlinetrainings<br />

Mit Experten lernen.<br />

LPIC-1 / LPIC-2 Training<br />

LPIC-1 (LPI 101 + 102)<br />

mit Ingo Wichmann,<br />

<strong>Linux</strong>hotel<br />

499 €<br />

LPIC-2 (LPI 201 + 202)<br />

mit Marco Göbel,<br />

Com Computertraining GmbH<br />

499 €<br />

www.medialinx-academy.de<br />

18.03.2013 17:05:11 IT-Academy_1-9_Python-Schulung.indd Uhr<br />

1<br />

MEDIALINX<br />

IT-ACADEMY<br />

Harte Nuss?<br />

Geknackt!<br />

18.03.2013 17:07:32 IT-Academy_1-9_Zarafa-Schulung.indd Uhr<br />

1<br />

n Hilfe für Einsteiger<br />

n Topaktuelle News<br />

n Riesiges Artikelarchiv<br />

www.linux-community.de<br />

Deine tägliche Portion <strong>Linux</strong><br />

IT-Onlinetrainings<br />

Mit Experten lernen.<br />

mit Klaus Knopper,<br />

Gründer der<br />

Knoppix-Distribution,<br />

KNOPPER.NET<br />

199 €<br />

18.03.2013 17:08:02 Uhr<br />

MEDIALINX<br />

IT-ACADEMY<br />

Effiziente BASH-Skripte<br />

Automatisieren Sie komplexe<br />

Aufgaben mit Hilfe effizienter Skripte!<br />

www.medialinx-academy.de<br />

IT-Academy_1-9_LPIC-Schulungen.indd 1<br />

18.03.2013 17:05:57 Uhr<br />

IT-Academy_1-9_Bash-Schulung.indd 1<br />

18.03.2013 17:04:16 Uhr


Service<br />

www.linux-magazin.de Inserenten 08/2013<br />

112<br />

Inserentenverzeichnis<br />

1&1 Internet AG http://​www.einsundeins.de 17<br />

ADMIN http://​www.admin-magazin.de 63, 87, 107<br />

Android Apps & Tipps http://​www.android-user.de 20, 110<br />

Android User http://​www.android-user.de 31, 69<br />

CANDAN THE WEB COMPANY http://​www.canhost.de 43<br />

Easy<strong>Linux</strong> http://​www.easylinux.de 55, 89<br />

embedded projects GmbH http://​www.embedded-projects.net 109<br />

Fernschule Weber GmbH http://​www.fernschule-weber.de 111<br />

Ico Innovative Computer GmbH http://​www.ico.de 25<br />

<strong>Linux</strong> <strong>Magazin</strong>e http://www.linux-magazine.com 41<br />

<strong>Linux</strong>-Community http://​www.linux-community.de 111<br />

M-Promotion http://​www.poland-it.pl 15<br />

Medialinx IT-Academy http://​www.medialinx-academy.de 75,<br />

103, 111<br />

Netways GmbH http://​www.netways.de 51<br />

O’Reilly Verlag GmbH & Co KG http://​www.oreilly.de 7<br />

Open Source Press GmbH http://​www.opensourcepress.de 27<br />

openSUSE Conference https://​conference.opensuse.org 53<br />

Pengutronix e.K. http://​www.pengutronix.de 109<br />

PlusServer AG http://​www.plusserver.de 66, 76, 84, 98<br />

Schlittermann internet & unix support http://​schlittermann.de 109<br />

Spenneberg Training & Consulting http://​www.spenneberg.com 111<br />

<strong>Linux</strong>-Hotel http://​www.linuxhotel.de 9<br />

<strong>Linux</strong>-<strong>Magazin</strong> http://​www.linux-magazin.de 2, 33<br />

<strong>Linux</strong>-<strong>Magazin</strong> Online http://​www.linux-magazin.de 29, 91<br />

<strong>Linux</strong>User http://​www.linuxuser.de 11, 115<br />

Stockmayer GmbH http://​www.stockmayer.de 111<br />

Thomas Krenn AG http://​www.thomas-krenn.com 116<br />

Ubuntu User http://​www.ubuntu-user.de 61<br />

Universität Leipzig http://www.uni-leipzig.de 109<br />

Veranstaltungen<br />

01.-07.07.2013<br />

Europython 2013<br />

Florence, Italy<br />

http://ep2013.europython.eu<br />

18.-22.07.2013<br />

openSUSE Conference<br />

Thessaloniki, Greece<br />

https://conference.opensuse.org<br />

09.09.2013<br />

2013 High Performance Computing for Wall Street<br />

New York, NY, USA<br />

http://www.flaggmgmt.com/hpc/<br />

04.-07.07.2013<br />

Internet of Things and 3D Printer Summer Camp<br />

Zaragoza, Spain<br />

http://www.cooking-hacks.com/index.php/internet-ofthings-and-3d-printing-summer-camp-2013<br />

11.-12.07.2013<br />

Akademy-es 2013<br />

Bilbao, Spain<br />

http://www.kde-espana.es/akademy-es2013<br />

13.-14.07.2013<br />

Bilbao Mini Maker Faire<br />

Bilbao, Spain<br />

http://makerfairebilbao.com<br />

13.-19.07.2013<br />

KDE Akademy 2013<br />

Bilbao, Spain<br />

http://akademy2013.kde.org<br />

01.-08.08.2013<br />

Guadec 2013<br />

Brno, Czech Republic<br />

http://guadec.org<br />

14.-16.08.2013<br />

USENIX Security ’13<br />

Washington, D.C.<br />

https://www.usenix.org/conference/usenixsecurity13<br />

24.-25.08.2013<br />

FrOSCon 2013<br />

Hochschule Bonn-Rhein-Sieg<br />

53757 Sankt Augustin, Deutschland<br />

http://www.froscon.de<br />

03.-05.09.2013<br />

Uplinq 2013 Mobile CodeFest & Hackathon<br />

San Diego, CA<br />

https://www.uplinq.com<br />

23.-24.09.2013<br />

Data Modeling Zone Europe<br />

Hanover, Germany<br />

http://www.datamodelingzone.com<br />

08.-10.10.2013<br />

Data Modeling Zone America<br />

Baltimore, MD<br />

http://www.datamodelingzone.com<br />

11.-13.10.2013<br />

Ubucon 2013<br />

SRH Berufsförderungswerk Heidelberg<br />

69115 Heidelberg, Deutschland<br />

http://www.ubucon.de<br />

16.-18.10.2013<br />

Medientage München<br />

ICM München<br />

http://www.medientage.de<br />

03.-08.11.2013<br />

USENIX LISA ’13<br />

Washington, D.C.<br />

https://www.usenix.org/conference/lisa13


Impressum<br />

<strong>Linux</strong>-<strong>Magazin</strong> eine Publikation der <strong>Linux</strong> New Media, einem<br />

Geschäftsbereich der Medialinx AG<br />

Redaktionsanschrift Putzbrunner Str. 71<br />

81739 München<br />

Tel.: 089/993411-0<br />

Fax: 089/993411-99 oder -96<br />

Internet<br />

www.linux-magazin.de<br />

E-Mail<br />

redaktion@linux-magazin.de<br />

Geschäftsleitung<br />

Chefredakteur<br />

stv. Chefredakteure<br />

Redaktionsltg. Online<br />

Brian Osborn (Vorstand), bosborn@medialinx-gruppe.de<br />

Hermann Plank (Vorstand), hplank@medialinx-gruppe.de<br />

Jan Kleinert (V.i.S.d.P.), jkleinert@linux-magazin.de (jk)<br />

Markus Feilner, mfeilner@linux-magazin.de (mfe)<br />

Mathias Huber, mhuber@linux-magazin.de (mhu)<br />

Mathias Huber, mhuber@linux-magazin.de (mhu)<br />

Print- und Onlineredaktion<br />

Aktuell, Forum, Software, Kristian Kissling, kkissling@linux-magazin.de (kki)<br />

Programmierung Mathias Huber, mhuber@linux-magazin.de (mhu)<br />

Sysadmin, Know-how Markus Feilner, mfeilner@linux-magazin.de (mfe)<br />

Ständige Mitarbeiter Fred Andresen, Zack Brown, Mela Eckenfels, Heike Jurzik (hej),<br />

Charly Kühnast, Martin Loschwitz, Michael Schilli, Tim<br />

Schürmann, Mark Vogelsberger, Uwe Vollbracht, Arnold<br />

Zimprich (azi)<br />

Schlussredaktion<br />

Grafik<br />

Bildnachweis<br />

DELUG-DVD<br />

Chefredaktionen<br />

International<br />

Produktion<br />

Onlineshop<br />

Abo-Infoseite<br />

Abonnenten-Service<br />

ISSN 1432 – 640 X<br />

Jürgen Manthey<br />

Mike Gajer, Judith Erb (Art Director)<br />

xhoch4, München (Titel-Illustration)<br />

123RF.com, Fotolia.de, Photocase.com, Pixelio.de und andere<br />

Thomas Leichtenstern, tleichtenstern@linux-magazin.de (tle)<br />

<strong>Linux</strong> <strong>Magazin</strong>e International<br />

Joe Casad (jcasad@linux-magazine.com)<br />

<strong>Linux</strong> <strong>Magazin</strong>e Poland<br />

Artur Skura (askura@linux-magazine.pl)<br />

<strong>Linux</strong> <strong>Magazin</strong>e Spain<br />

Paul C. Brown (pbrown@linux-magazine.es)<br />

<strong>Linux</strong> <strong>Magazin</strong>e Brasil<br />

Rafael Peregrino (rperegrino@linuxmagazine.com.br)<br />

Christian Ullrich, cullrich@linux-magazin.de<br />

www.medialinx-shop.de<br />

www.linux-magazin.de/Produkte<br />

Gudrun Blanz (Teamleitung)<br />

abo@medialinx-gruppe.de<br />

Tel.: +49-(0)7131-2707-274<br />

Fax: +49-(0)7131-2707-78-601<br />

Preise Print Deutschland Österreich Schweiz Ausland EU<br />

No-Media-Ausgabe 4 6,40 4 7,05 Sfr 12,80 (siehe Titel)<br />

DELUG-DVD-Ausgabe 4 8,50 4 9,35 Sfr 17,— (siehe Titel)<br />

Jahres-DVD (Einzelpreis) 4 14,95 4 14,95 Sfr 18,90 4 14,95<br />

Jahres-DVD (zum Abo 1 ) 4 6,70 4 6,70 Sfr 8,50 4 6,70<br />

Mini-Abo (3 Ausgaben) 4 3,— 4 3,— Sfr 4,50 4 3,—<br />

Jahresabo No Media 4 65,20 4 71,90 Sfr 107,50 4 84,60<br />

Jahresabo DELUG-DVD 4 87,90 4 96,90 Sfr 142,80 4 99,90<br />

Preise Digital Deutschland Österreich Schweiz Ausland EU<br />

Heft-PDF Einzelausgabe 4 6,40 4 6,40 Sfr 8,30 4 6,40<br />

DigiSub (12 Ausgaben) 4 65,20 4 65,20 Sfr 84,80 4 65,20<br />

DigiSub (zum Printabo) 4 12,— 4 12,— Sfr 12,— 4 12,—<br />

HTML-Archiv (zum Abo 1 ) 4 12,— 4 12,— Sfr 12,— 4 12,—<br />

Preise Kombiabos Deutschland Österreich Schweiz Ausland EU<br />

Mega-Kombi-Abo 2 4 143,40 4 163,90 Sfr 199,90 4 173,90<br />

Profi-Abo 3 4 136,60 4 151,70 Sfr 168,90 4 165,70<br />

1<br />

nur erhältlich in Verbindung mit einem Jahresabo Print oder Digital<br />

2<br />

mit <strong>Linux</strong>User-Abo (DVD) und beiden Jahres-DVDs, inkl. DELUG-Mitgliedschaft (monatl.<br />

DELUG-DVD)<br />

3<br />

mit ADMIN-Abo und beiden Jahres-DVDs<br />

Schüler- und Studentenermäßigung: 20 Prozent gegen Vorlage eines Schülerausweises<br />

oder einer aktuellen Immatrikulationsbescheinigung. Der aktuelle Nachweis ist bei<br />

Verlän gerung neu zu erbringen. Andere Abo-Formen, Ermäßigungen im Ausland etc.<br />

auf Anfrage.<br />

Adressänderungen bitte umgehend mitteilen, da Nachsendeaufträge bei der Post nicht<br />

für Zeitschriften gelten.<br />

Pressemitteilungen<br />

Marketing und Vertrieb<br />

Mediaberatung D, A, CH<br />

presse-info@linux-magazin.de<br />

Petra Jaser, pjaser@linux-magazin.de<br />

Tel.: +49 (0)89 / 99 34 11 – 24<br />

Fax: +49 (0)89 / 99 34 11 – 99<br />

Michael Seiter, mseiter@linux-magazin.de<br />

Tel.: +49 (0)89 / 99 34 11 – 23<br />

Mediaberatung USA Ann Jesse, ajesse@linux-magazine.com<br />

und weitere Länder Tel.: +1 785 841 8834<br />

Darrah Buren, dburen@linux-magazine.com<br />

Tel.:+1 785 856 3082<br />

Pressevertrieb<br />

Druck<br />

Es gilt die Anzeigen-Preisliste vom 01.01.2013.<br />

MZV Moderner Zeitschriften Vertrieb GmbH & Co. KG<br />

Ohmstraße 1, 85716 Unterschleißheim<br />

Tel.: 089/31906-0, Fax: 089/31906-113<br />

Vogel Druck GmbH, 97204 Höchberg<br />

Der Begriff Unix wird in dieser Schreibweise als generelle Bezeichnung für die Unixähnlichen<br />

Betriebssysteme verschiedener Hersteller benutzt. <strong>Linux</strong> ist eingetragenes<br />

Marken zeichen von Linus Torvalds und wird in unserem Markennamen mit seiner<br />

Erlaubnis verwendet.<br />

Eine Haftung für die Richtigkeit von Veröffentlichungen kann trotz sorgfältiger Prüfung<br />

durch die Redaktion vom Verlag nicht übernommen werden. Mit der Einsendung von<br />

Manus kripten gibt der Verfasser seine Zustimmung zum Abdruck. Für unverlangt<br />

eingesandte Manuskripte kann keine Haftung übernommen werden.<br />

Das Exklusiv- und Verfügungsrecht für angenommene Manuskripte liegt beim Verlag. Es<br />

darf kein Teil des Inhalts ohne ausdrückliche schriftliche Genehmigung des Verlags in<br />

irgendeiner Form vervielfältigt oder verbreitet werden.<br />

Copyright © 1994 – 2013 Medialinx AG<br />

Impressum 08/2013<br />

Service<br />

www.linux-magazin.de<br />

113<br />

Krypto-Info<br />

GnuPG-Schlüssel der <strong>Linux</strong>-<strong>Magazin</strong>-Redaktion:<br />

pub 1024D/44F0F2B3 2000-05-08 Redaktion <strong>Linux</strong>-<strong>Magazin</strong><br />

<br />

Key fingerprint = C60B 1C94 316B 7F38 E8CC E1C1 8EA6 1F22 44F0 F2B3<br />

Public-Key der DFN-PCA:<br />

pub 2048R/7282B245 2007-12-12,<br />

DFN-PGP-PCA, CERTIFICATION ONLY KEY (DFN-PGP-Policy: 2008-2009)<br />

<br />

Key fingerprint = 39 D9 D7 7F 98 A8 F1 1B 26 6B D8 F2 EE 8F BB 5A<br />

PGP-Zertifikat der DFN-User-CA:<br />

pub 2048R/6362BE8B (2007-12-12),<br />

DFN-PGP-User-CA, CERTIFICATION ONLY KEY (DFN-PGP-Policy: 2008-2009)<br />

<br />

Key fingerprint = 30 96 47 77 58 48 22 C5 89 2A 85 19 9A D1 D4 06<br />

Root-Zertifikat der CAcert:<br />

Subject: O=Root CA, OU=http://www.cacert.org, CN=CA Cert Signing Authority/<br />

Email=support@cacert.org<br />

SHA1 Fingerprint=13:5C:EC:36:F4:9C:B8:E9:3B:1A:B2:70:CD:80:88:46:76:CE:8F:33<br />

MD5 Fingerprint=A6:1B:37:5E:39:0D:9C:36:54:EE:BD:20:31:46:1F:6B<br />

GPG-Schlüssel der CAcert:<br />

pub 1024D/​65D0FD58 2003-07-11 [expires: 2033-07-03]<br />

Key fingerprint = A31D 4F81 EF4E BD07 B456 FA04 D2BB 0D01 65D0 FD58<br />

uid CA Cert Signing Authority (Root CA) <br />

Autoren dieser Ausgabe<br />

Fred Andresen Schutztruppe 80<br />

Zack Brown Zacks Kernel-News 18<br />

Nils Faerber Jungfüchse 68<br />

Rainer Grimm Starke Ausdrücke 100<br />

Rob Knight Volle Ladung 64<br />

Peter Kreußel Jungfüchse 66<br />

Eva-Katharina Kunst Kern-Technik 86<br />

Charly Kühnast Verschenkte Zeit 57<br />

Martin Loschwitz Barrikade 36<br />

Andreas Möller Direkter Draht 92<br />

Markus Opfer Risikobewusst 22<br />

Jürgen Quade Kern-Technik 86<br />

Andrej Radonic Alles fürs Büro 58<br />

Schlomo Schapiro Schließanlage 38<br />

Michael Schilli Am Anfang war der Test 104<br />

Tim Schürmann Anonym im Web? 26<br />

Tim Schürmann Keine Auskunft 48<br />

Uwe Vollbracht Tooltipps 46<br />

Marco Woitschitzky Schließanlage 38


Service<br />

www.linux-magazin.de <strong>Vorschau</strong> 02/2013 09/2013 08/2013 01/2013<br />

114<br />

<strong>Vorschau</strong><br />

09/2013 Dachzeile<br />

Fotoverwaltungen im Test<br />

© Markus Gann, 123RF<br />

Software frisch halten<br />

Eine <strong>Linux</strong>-Distribution mit ihrer eingebauten Paketverwaltung<br />

aktuell halten scheint ein Klacks zu sein. In der professionellen<br />

Praxis bereiten die Automatiken aber zumindest bei<br />

inkonsistenten Repositories ziemliche Probleme. Noch heikler<br />

sind Upgrades angejahrter Distributionen auf neue Versionen,<br />

sollen bewährte Einstellungen erhalten bleiben.<br />

Der nächste Schwerpunkt gräbt sich tief ein in diese unübersichtliche<br />

Problematik, sucht nach nachhaltigen Strategien bei<br />

auftretenden Paketkonflikten, bewertet Mechanismen auf ihre<br />

Enterprise-Fähigkeit, hilft die Besonderheiten bei Kernel- und<br />

Glibc-Updates zu verstehen und berücksichtigt als Spezialität<br />

sogar die Firmware von Embedded-<strong>Linux</strong>-Geräten.<br />

MAGAZIN<br />

Überschrift<br />

Kamerabilder importieren, Raw-Format, Gesichtserkennung,<br />

verschiedene Metadaten und Geotagging, Uploads direkt in Internet-Fotoalben<br />

… Von Fotoverwaltungen wie Corel Aftershot<br />

Pro, Darktable, Digikam, Lightzone und Shotwell verlangen Anwender<br />

wahre Wunder – und schnell arbeiten sollen sie auch.<br />

ARM-Boards debuggen<br />

Viele Wege führen nach Rom, heißt es. Die verwirrende Vielfalt<br />

gilt für das Debuggen von Embedded-Systemen in besonderem<br />

Maße, zumal der Flüsterasphalt im alten Rom noch nicht erfunden<br />

war. Das Reisen per Qemu, Jtag oder »printf()« ist holprig<br />

und mühsam, gelingt aber.<br />

Browser-Krypto oder DRM<br />

Das Web-Cryptography-API verspricht mit Verschlüsselung<br />

mehr Sicherheit und Vertraulichkeit in den Browser zu bringen.<br />

Kritiker warnen, die Anbieter von Internet-Videotheken brächten<br />

damit DRM ins Web. Das <strong>Linux</strong>-<strong>Magazin</strong> erklärt die Technik<br />

und verschafft Einblick in Internet-politische Hintergründe.<br />

Die Ausgabe 09/2013<br />

erscheint am 1. August 2013<br />

© CSPStock, Fotolia<br />

<strong>Vorschau</strong><br />

auf 08/2013<br />

Die nächste Ausgabe erscheint am 18.07.2013<br />

Grafik und Foto<br />

Ein einfacher Pinselstrich macht noch lange keinen Picasso,<br />

aber die zahlreichen Grafikprogramme unter <strong>Linux</strong> helfen Ihnen<br />

zumindest bei den langwierigen Übungen auf dem Weg<br />

zu einem akzeptablen Werk.<br />

Sowohl für die Versuche aus dem Handgelenk als auch die<br />

Aufnahmen aus der Digitalkamera brauchen Sie geeignete<br />

Werkzeuge zum Nachbearbeiten. In der kommenden Ausgabe<br />

geben wir Anregungen, stellen neue Tools und Programme vor<br />

und zeigen in Workshops die Tricks, mit denen die Profis mehr<br />

aus ihrem Bildmaterial herausholen.<br />

Debian-Pakete im Eigenbau<br />

Fehlt die aktuelle Version der Software oder ein dringend benötigtes<br />

Programm in den Repositories von Debian/Ubuntu,<br />

heißt es, selbst Hand anlegen: Wir zeigen, wie Sie Software<br />

paketieren, sodass sie sich nahtlos in ein System einfügt.<br />

Raspi als Druckerserver<br />

Eigentlich sollte der alte USB-Drucker in den Elektroschrott,<br />

aber ein kleiner Server auf Basis des Einplatinen-PC Rasp berry<br />

Pi reaktiviert die Hardware noch einmal und stellt sie gleichzeitig<br />

für alle Clients im Netz bereit.


Probelesen<br />

ohne risiko<br />

Und Gewinnen!<br />

einen von drei Spheros, per Smartphone fernsteuerbare<br />

Roboter-Bälle im Gesamtwert von 389 Euro<br />

wasserfester Kugelroboter, per Bluetooth steuerbar,<br />

Multi-Colour-Changing LEDs, Apps für Android und iOS<br />

induktive Ladestation (3 Std. Ladezeit, 1 Std. Betriebszeit)<br />

gesponsert von<br />

.de<br />

sonderAkTion!<br />

Testen sie jetzt<br />

3 Ausgaben für<br />

nUr 3€*<br />

Telefon: 07131 /2707 274<br />

Fax: 07131 / 2707 78 601<br />

E-Mail: abo@linux-user.de<br />

Mit großem Gewinnspiel unter:<br />

www.linux-user.de/probeabo<br />

* Angebot gilt innerhalb Deutschlands und Österreichs. In der Schweiz: SFr 4,50.<br />

Weitere Preise: www.linux-user.de/produkte


Leistungsstarke Servertechnologie<br />

auf minimalem Raum<br />

VMware zertifiziert<br />

Erweiterbar mit 8<br />

Low Profile Karten<br />

8 Server Nodes<br />

auf 3HE vereint<br />

Microcloud Server bei Thomas Krenn<br />

3HE Intel Single-CPU RI8316M Server<br />

8 leistungsstarke, VMware zertifizierte Single-CPU<br />

Server auf 3 Höheneinheiten vereint.<br />

Mehr Informationen zu diesem Produkt unter:<br />

www.thomas-krenn.com/8316-m<br />

DE: +49 (0) 8551 9150 - 0<br />

CH: +41 (0) 848 207970<br />

AT: +43 (0) 732 - 2363 - 0<br />

Verkauf erfolgt ausschließlich an Gewerbetreibende, Firmen, Freiberufler (Ärzte, Rechtsanwälte etc.), staatliche Institutionen und Behörden. Druckfehler, Irrtümer und Änderungen in Preis und Ausstattung<br />

vorbehalten. Unsere Versandkosten richten sich nach Gewicht und Versandart - mehr unter: www.thomas-krenn.com/versandkosten.Thomas-Krenn.AG, Speltenbach-Steinäcker 1, D-94078 Freyung

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!