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 SchrittfürSchrittAnleitungen 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 HomepageBaukasten<br />
Buchbar schon ab 1.50 € monatlich!<br />
Weitere WebspaceAngebote CMSSysteme ShopSysteme SSLCerts Hosted Exchange SpezialAngebote 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