25.02.2014 Aufrufe

ADMIN Magazin Performance Tuning (Vorschau)

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

SSD: Der sichere Speicher<br />

mit Selbstzerstörung<br />

Zones: Container<br />

<strong>ADMIN</strong><br />

Netzwerk & Security<br />

20 Jahre Linux<br />

Zahlen und Fakten<br />

Scalr: Cloud-Anwendungen<br />

automatisch skalieren<br />

05 2011<br />

Sep. – Okt.<br />

<strong>Performance</strong><br />

<strong>Tuning</strong><br />

Tools und Know-how<br />

Grundlagen richtiger I/O-Benchmarks<br />

PostgreSQL-Datenbank beschleunigt<br />

mit Open Solaris<br />

Auf DVD:<br />

Virtualisierungs-<br />

Starter Kit<br />

MIT EXTrA-BEILAGE<br />

“VIrTuALISIEruNG”<br />

Jetzt:<br />

16 Seiten<br />

mehr<br />

gleicher Preis<br />

E-Mail<br />

Mit Sieve auf dem<br />

Server filtern<br />

High Availability<br />

Artikelreihe zu HA<br />

mit Linux<br />

Wireshark<br />

Fundierte Analyse<br />

des Netz-Verkehrs<br />

www.admin-magazin.de<br />

Xenserver<br />

Automatisierte<br />

Installation<br />

D EUR 9,80<br />

A EUR 10,80 - BeNeLux EUR 11,25<br />

CH sfr 19,60 - E / I EUR 12,75<br />

4 196360 509805 05


Managed<br />

Hosting<br />

sicher, flexibel und<br />

verfügbar<br />

Profitieren Sie von:<br />

aktueller Clustertechnologie<br />

ISO 27001 zertifiziertem<br />

Hochsicherheits-Datacenter<br />

Hosting direkt am DE-CIX<br />

IPv4 und IPv6 Anbindung<br />

24/7 Service und Support<br />

Entdecken Sie den Unterschied<br />

Professionelles Hosting mit persönlichem<br />

und kompetentem Support.<br />

Individuelle Hostinglösungen vom Server<br />

bis zum Clustersystem. Beratung, Planung<br />

und Service 24/7.<br />

Wir bieten über 10 Jahre Erfahrung in<br />

Hosting und Systemadministration.<br />

Für mehr <strong>Performance</strong>, Sicherheit und<br />

Verfügbarkeit, jeden Tag, rund um die Uhr.<br />

www.hostserver.de/hosting<br />

0 30 / 420 200 24 hostserver.de<br />

Berlin Marburg Frankfurt am Main


das kleine zig<br />

e ditoriA l<br />

Das kleine ZIG<br />

Liebe Leserinnen und Leser,<br />

„Das kleine ZIG ist ein Fanal, / mit zwanZIG kommt’s zum erstenmal. / Du find’st<br />

das kleine ZIG recht fein / und möchtest gar noch älter sein.“ (unbekannter Dichter)<br />

Gerade, weil ich eigentlich Lyrik mag, löst diese Art volkstümelnder Pennälerpoesie<br />

bei mir stets ein massives körperliches Unbehagen aus. Ich höre die Wildecker<br />

Herzbuben grüßen, sehe Wackeldackel und gehäkelte Klopapierhüte vor meinem<br />

inneren Auge, und mir wird flau in der Magengegend. Aber in diesem besonderen<br />

Fall verlangt mir das Schicksal vielleicht eine schwere Prüfung in Selbstüberwindung<br />

ab: Linux, der Jubilar feiert einen runden Geburtstag, ist prominent, das<br />

Publikum bunt und würde das mit dem kleinen ZIG nicht doch passen?<br />

Aber halt, vielleicht ja auch nicht. Wie alt werden Betriebssysteme eigentlich?<br />

Wenn man sich unter Zeitgenossen und Altvorderen des Geburtstagskindes umsieht, gewinnt man eher den Eindruck,<br />

Linux sei ein Greis, dem alle Altersgenossen bereits weggestorben sind. OS/ 2 zum Beispiel (1987-1999)<br />

wurde schon mit 12 von seinem glücklosen Dasein erlöst. BeOS (1998-2001), das vorgebliche Multimedia-Betriebssystem,<br />

kam bereits in frühester Jugend nicht mehr mit den Spielgefährten mit und schied im zarten Alter<br />

von vier Jahren von hinnen. Auch seinen Nachfolger Zeta (2003-2007) ereilte der plötzliche Kindstod. Zuvor<br />

hatte CP/ M (1974-1983) immerhin fast eine zweistellige Zahl an Jahren erreicht, die ihm post mortem sogar<br />

zugebilligt werden kann, wenn man die Klone SCP und CP/ A mitrechnet, die noch bis über das Ende der Achtzigerjahre<br />

hinaus in der DDR auf PC 1715 und Konsorten Dienst taten. Auf ein vergleichsweise biblisches Alter<br />

brachte es MS-DOS: Zwischen der ersten (1981) und der letzten Version (DOS 8.0 in Windows ME, 1999) lagen<br />

immerhin 18 Jahre. Aber eben keine 20. Und Windows ist nur dann ein Twen, wenn man viele Ausgaben am Anfang<br />

mitzählt, die eigentlich gar kein Betriebssystem waren, sondern bloß ein grafischer Aufsatz für das dabei<br />

unverzichtbare DOS.<br />

Tatsächlich ältere Betriebssysteme – und hier deutet sich vielleicht ein genetischer Zusammenhang an – finden<br />

sich vor allem im familiären Umfeld von Linux, unter den Unixen. AIX wurde 1986 geboren und erfreut sich heute<br />

als Mitzwanziger noch immer bester Gesundheit. Rechnet man die ersten SunOS-Versionen (gebürtige BSDs)<br />

mit, ist Solaris (verheiratetes System V) noch ein paar Jahre älter. Genauso alt ist HP-UX (*1982). Auch Sinix<br />

(*1984) ist lange kein Teeny mehr, und Irix (*1983) liegt zwar auf dem Sterbebett (abgekündigt für 2013), wird<br />

dann aber immerhin dreiZIG gewesen sein. Noch älter ist BSD (*1977), auch wenn es unter dem jugendlichen<br />

Namen 4.4BSD firmiert.<br />

Auf jeden Fall gibt der Stammbaum Grund zur Hoffnung auf noch ein paar Linux-Jahrzehnte, die die Erfolgsgeschichte<br />

im Rechenzentrum fortsetzen. Desktop-Betriebssysteme gibt es dann, der Cloud sei dank, eh nicht<br />

mehr, und so hat sich auch der Kleinkrieg mit Mac OS um die Brosamen erledigt, die von Microsofts Tisch fallen.<br />

Linux aber lebt.<br />

„Und werden’s hundert Jahr – famos! / – dann bist das ZIG Du wieder los!“<br />

In diesem Sinn: Happy Birthday Linux!<br />

@ leserbriefe@admin-magazin.de<br />

www.facebook.com/adminmagazin www.twitter.com/admagz<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

3


SErvICE<br />

Inhalt<br />

<strong>ADMIN</strong><br />

Netzwerk & Security<br />

05/2011<br />

Software und Know-how für<br />

Benchmarks und <strong>Performance</strong>-<br />

<strong>Tuning</strong> ab S. 48.<br />

Fundierte Netzwerk-<br />

34Wireshark<br />

Analyse mit dem<br />

grafischen Open-Source-Tool.<br />

Login<br />

8 Branchen-News<br />

Neues von Firmen und Projekten.<br />

Netzwerk<br />

30 Bonding<br />

Netzwerke redundant auslegen.<br />

Schwerpunkt: <strong>Performance</strong>-<strong>Tuning</strong><br />

48 Grundlagen<br />

Basics des <strong>Performance</strong>-<strong>Tuning</strong>s.<br />

16 Vorgelesen<br />

Bücher über Linux-Server und<br />

Wireshark.<br />

18 Admin-Story<br />

Tagebuch eines IT-Nomaden.<br />

22 20 Jahre Linux<br />

Zahlen und Fakten zum Geburtstag.<br />

34 Wireshark<br />

Netzwerkanalyse mit Wireshark.<br />

44 IPv6<br />

Im Test: Autokonfiguration von<br />

IPv6-Clients.<br />

54 PostgreSQL<br />

Die SQL-Datenbank aufgebohrt.<br />

58 Windows <strong>Performance</strong> Toolkit<br />

Analyse-Tools von Microsoft.<br />

64 I/O-Benchmarks mit Fio<br />

Storage-Analyse und -<strong>Tuning</strong>.<br />

Security<br />

24 Recht<br />

Ist das Mitschneiden im Netzwerk legal?<br />

Service<br />

3 Editorial<br />

4 Inhalt<br />

6 Heft-DVD<br />

130 Impressum und <strong>Vorschau</strong><br />

74 Phpass<br />

PHP-Bibliothek für Passwortsicherheit<br />

in Webanwendungen.<br />

78 Securedrive<br />

Der sicherste Datenspeicher der Welt.<br />

4 AuSGABE 05-2011 A DMIN WWW. <strong>ADMIN</strong>- MAGAZIN. DE


Inhalt<br />

S E rvICE<br />

Das mutmaßlich<br />

78Securedrive<br />

sicherste SSD-Laufwerk<br />

der Welt zerstört sich im<br />

Notfall selbst.<br />

Availability<br />

Private Linux-<br />

98High<br />

Cloud mit KvM,<br />

Libvirt und Pacemaker.<br />

122Scalr<br />

Cloud-Anwendungen<br />

in der<br />

Server-Farm skalieren.<br />

Know-how<br />

Basics<br />

Test<br />

80 Xenserver<br />

Automatisierte Installation von<br />

Xenserver.<br />

114 Sieve-Mailfilter<br />

Mails filtern mit Sieve.<br />

122 Scalr<br />

Die Cloud-Computing-Plattform Scalr.<br />

86 Active Directory<br />

Überblick über Active Directory:<br />

Geschichte und Funktion.<br />

92 Cloud-Forensik<br />

Forscher untersuchen: Was brauchen<br />

Cloud-Anwender für ihre Sicherheit?<br />

118 Solaris Zones<br />

Erste Schritte mit Open Solaris Zones.<br />

126 Office 365<br />

Office 365 vs Google Apps.<br />

98 HA-Serie, Teil 2<br />

Private Cloud mit Libvirt und KvM.<br />

106 HA-Serie, Teil 3<br />

Schritt für Schritt zum MySQL-Cluster.<br />

Mehr Infos auf Seite 6<br />

WWW. <strong>ADMIN</strong>- MAGAZIN. DE<br />

A DMIN<br />

AuSGABE 05-2011<br />

5


serV ice<br />

Heft-dVd<br />

Heft-DVD<br />

Auf der beiliegenden Heft-DVD befindet sich das Virtualisierungs-Starter<br />

Kit, Edition 2011 von Microsoft:<br />

◗ Aktuelle Vorträge, Case Studies, Tipps und Tricks.<br />

◗ ISO-Image des Hyper-V Servers R2 mit Service Pack 1.<br />

◗ Webcasts zu den Themen Virtualisierung und Cloud Computing.<br />

◗ Datenträger ist eine Ecodisc, die bei der Produktion nur halb<br />

so viel Energie verbraucht wie eine konventionelle DVD.<br />

Wenn Sie auf Windows-Systemen die DVD einlegen, startet<br />

automatisch der Browser und zeigt die Startseite des Starter-<br />

Kits an. Auf Linux und Mac OS X können Sie einfach im<br />

Browser die Datei »default.htm« öffnen.<br />

n<br />

DVD kaputt?<br />

Wir schicken Ihnen kostenlos<br />

eine Ersatz-DVD zu, E-Mail genügt:<br />

info@admin-magazin.de<br />

info<br />

[1] Virtualisierungs-Seite bei Microsoft:<br />

[http://technet.microsoft.com/de-de/virtualization]<br />

[2] Hyper-V-Server:<br />

[http://www.microsoft.com/germany/server/hyper-v-server]<br />

[3] Ecodisc: [http://www.ecodisc.org]<br />

6 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Der perfekte Auftritt<br />

macht unseren Erfolg:<br />

auf dem Laufsteg<br />

und im Web.<br />

Stefan Klos mit Model Janina<br />

www.famepr.de<br />

Erstellt mit dem PowerPlus-Paket<br />

Stefan Klos<br />

STRATO<br />

Hosting<br />

Für Anwender mit hohen Ansprüchen<br />

Hosting PowerPlus L<br />

statt<br />

*<br />

Ihre Website mit echten Profi-Features:<br />

8 Domains und 5.000 MB Speicher im Paket inklusive<br />

Unlimited Traffic und 10 MySQL-Datenbanken nutzbar<br />

Pro-Features: PHP, Perl, Python, Ruby 8, Web-FTP u. v. m.<br />

NEU! Inklusive neu entwickeltem STRATO Communicator<br />

6 Monate für<br />

Aktionsangebot nur<br />

bis zum 30.09.2011<br />

*<br />

€/Mon.<br />

Jetzt bestellen unter: s trato.de / hosting<br />

Servicetelefon: 0 18 05 - 055 055<br />

(0,14 €/Min. aus dem dt. Festnetz, Mobilfunk max. 0,42 €/Min.)<br />

* 6 Monate 0 €/mtl., danach 14,90 €/mtl. Einrichtungsgebühr 14,90 €. Mindestvertragslaufzeit 12 Monate. Preis inkl. MwSt.


Login<br />

news<br />

+++ neueste Nachrichten immer auf http://www.admin-magazin.de +++++ neueste Nachrichte<br />

Neue Software und Produkte<br />

Branchen-News<br />

OpenNMS-Konferenz sucht Referenten<br />

Die OpenNMS User Conference Europe (OUCE), die am 10. und<br />

11. Mai 2012 zum vierten Mal in Fulda stattfinden wird, sucht<br />

noch Vortragende. Die Referate sollten die verschiedenen Facetten<br />

des freien Netzwerk-Management-Tools beleuchten und<br />

dem Erfahrungsaustausch dienen. Als Hauptreferenten stehen<br />

bereits Tarus Balog, CEO der OpenNMS Group, Inc. sowie David<br />

Hustace, President der OpenNMS Group, Inc., fest.<br />

Die Konferenz gliedert sich in einen Best Practice Day am ersten<br />

Tag mit der Zielgruppe Geschäftsführer mit IT-Verantwortung,<br />

IT-Leiter und Administratoren sowie dem bereits bewährten<br />

Bar-Camp am folgenden Tag, das speziell für Anwender und<br />

Administratoren konzipiert ist.<br />

Der Call for Papers bezieht sich auf beide Tage, wobei am ersten<br />

Tag 45-minütige Vorträge mit anschließender viertelstündiger<br />

Diskussion erwartet werden, wogegen die Wortmeldungen<br />

während des Bar-Camps fünf bis zehn Minuten umfassen und<br />

in einer gemeinsamen Diskussion münden sollten. Vorschläge<br />

lassen sich unter der Adresse [http://​www.​opennms‐conference.​info]<br />

einreichen.<br />

Erstmals veranstaltet der Konferenzausrichter NETHINKS GmbH<br />

gemeinsam mit der OpenNMS Group direkt vor der OUCE eine<br />

zweitägige, separat buchbare OpenNMS-Schulung, gegliedert<br />

in eine Basic Session sowie eine Advanced Session. Der erste<br />

Schulungstag richtet sich an Anwender, Administratoren und<br />

interessierte IT-Leiter, die erste praktische Erfahrungen im Umgang<br />

mit OpenNMS sammeln möchten. Am zweiten Tag lassen<br />

sich erweiterte Kenntnisse erwerben, wenn bereits Erfahrungen<br />

im Betrieb von OpenNMS vorhanden sind.<br />

Konsolidierung: Novell zu Zukunftsplänen<br />

Open Cloud Initiative gegründet<br />

Bob Flynn, Präsident und General Manager bei Novell, gibt nach knapp drei<br />

Monaten im Amt einen Ausblick auf die künftige Ausrichtung des Unternehmens<br />

unter den Fittichen von Attachmate.<br />

Flynn spricht in seinem Blogpost [http://​www.​novell.​com/​prblogs/​?​p=3907] vom<br />

verschlankten Produktportfolio und dem auf die Bereiche Collaboration, Dateimanagement,<br />

Netzwerk und Endpoint-Management ausgerichteten Fokus.<br />

Novell werde dafür seine Entwicklungsmannschaft verstärken, kündigt Flynn<br />

an, mit dem Ziel, die Produktzyklen zu beschleunigen. Im vierten Quartal<br />

gäbe es dann bereits Neuerungen bei Groupwise, Open Enterprise Server,<br />

ZENworks und Vibe.<br />

Um Bestandskunden das Upgrade auf neue Versionen zu erleichtern, sei auch<br />

eine Verlängerung und Verbesserung des Supportangebots geplant, damit<br />

Kunden besser entscheiden können, wann der geeignete Zeitpunkt für einen<br />

Umstieg gekommen ist.<br />

Netware 6.5, Groupwise 7, ZENworks 7 werden in diesem Zusammenhang<br />

genannt. Zudem will Novell laut Flynn bestehende Produkte konsolidieren<br />

und verschränken und dafür etwa Funktionen<br />

von Vibe in Groupwise integrieren.<br />

Die auf Collaboration ausgelegte Vibe-Plattform<br />

soll in diesen Planungen die Basis bilden<br />

und wiederum Funktionen von Vibe Cloud<br />

übernehmen. Der Vibe Cloud Service fällt<br />

diesen Umstellungen laut Flynn zum Oper, er<br />

soll Ende September eingestellt werden.<br />

Nach der Übernahme durch Attachmate gibt<br />

es unter dem Dach der gemeinsamen Holding<br />

vier Geschäftseinheiten, die aus Attachmate,<br />

Bob Flynn setzt auf Konsolidierung NetIQ, Novell und Suse bestehen. Suse fällt<br />

und Verschlankung.<br />

dabei das Linux-Enterprise-Portfolio zu.<br />

Auf der Open Source Convention 2011 in Portland<br />

gab die neu gegründete Open Cloud Initiative<br />

OCI ihr Debüt. Ziel sei es, ein gesetzliches<br />

Framework für offenes Cloud Computing zu<br />

erstellen.<br />

Als ersten Ansatz definiert sich die OCI auf<br />

ihrer Webseite [http://​www.​opencloudinitiative.​<br />

​org] als nicht kommerzieller Anwalt des freien<br />

Cloud Computings und stellt die Open Cloud<br />

Principles als „ein Set von Anforderungen für<br />

offene Wolken auf, mit dem die Community<br />

von Cloud-Anwendern und -Providern einen<br />

Konsens erreichen kann.“ Ebenfalls mithilfe<br />

von Community-Prozessen sollen die Prinzipien<br />

dann in Produkten und Diensten Anwendung<br />

finden.<br />

Die verwendeten Standards müssen zwingend<br />

vier Kriterien erfüllen, die da heißen: offen, detailliert<br />

dokumentiert, veröffentlicht und unwiderruflich<br />

kostenfrei verwendbar. Trademarks<br />

sind nur zulässig, wenn sie der Compliance<br />

dienen und nicht diskriminierend eingesetzt<br />

sind. Unter den Client-Implementierungen muss<br />

mindestens eine einer von der Open Source<br />

Initiative (OSI) anerkannten freien Lizenz unterliegen<br />

oder als Public Domain veröffentlicht<br />

werden. Ferner verlangt das Manifest mehrere,<br />

voll funktionsfähige und sorgfältige („faithful“)<br />

Implementierungen von Server und Client.<br />

8 AusgA be 05-2011 Admin<br />

www.A dmin-mAgA zin.de


n immer auf http://www.admin-magazin.de +++++ neues<br />

Eine Million Nutzer – Änderungen bei Ubuntu One<br />

Für Ubuntus Cloud-Lösung Ubuntu One<br />

kündigen die Entwickler Neuerungen an<br />

und feiern einen Meilenstein.<br />

Eine Million Anwender nutzen mittlerweile<br />

den Ubuntu-One-Service. Das schreibt<br />

das Projekt in einer Mitteilung in seinem<br />

Blog. Ob das Canonical etwas Geld in die<br />

Taschen spült, bleibt allerdings offen: Der<br />

Leser erfährt nicht, ob diese Massen die<br />

Gratis- oder Bezahlangebote nutzen.<br />

Im gleichen Zug verbessert das Projekt<br />

die Nutzungsbedingungen: Ubuntu One<br />

Basic heißt nun Ubuntu One Free. Jedem<br />

Nutzer stehen nun kostenlos 5 GByte freier<br />

Speicherplatz zur Verfügung anstatt 2<br />

GByte wie bisher. Auch die Bedingungen<br />

für das kostenpflichtige Musik-Streaming<br />

für iPhones und Androiden haben die<br />

Ubuntu-One-Macher angepasst: Für 4 US-<br />

Dollar im Monat erhält man 20 GByte<br />

Speicherplatz und kann weltweit die<br />

eigene Musiksammlung auf das Smartphone<br />

streamen. Für drei US-Dollar mehr<br />

lässt sich der Speicherplatz jeweils um 20<br />

GByte erweitern.<br />

Nicht zuletzt setzt die Ubuntu-One-Crew<br />

deutlich mehr auf externe Anwendungsentwickler:<br />

Ein eigenes App Developer<br />

Program [https://​one.​ubuntu.​com/​developer/]<br />

soll Interessierten dabei helfen, ihre Tools<br />

an Ubuntu One anzupassen oder neue<br />

Apps zu entwickeln. Die entsprechenden<br />

APIs findet man im App Developer<br />

Program.<br />

STRATO<br />

Hosting<br />

Für Anwender mit<br />

hohen Ansprüchen<br />

Zuwachs bei Open Stack: HP steigt ein<br />

Das ursprünglich von der NASA und dem<br />

Hoster Rackspace initiierte Open-Stack-<br />

Konsortium ist um ein Schwergewicht<br />

der IT-Branche reicher: Hewlett-Packard.<br />

Emil Sayegh, Vizepräsident Cloud Services<br />

bei HP, vermeldet in seinem Blog<br />

die Beteiligung am Open-Source-Cloud-<br />

Computing-Projekt.<br />

Auch HP habe erkannt, dass offene und<br />

interoperable Infrastrukturen für den Erfolg<br />

von Cloud Computing kritisch seien.<br />

Open Stack mit seiner schnell wachsenden<br />

Community und dem Konsortium,<br />

das mittlerweile aus über 90 Firmen oder<br />

Behörden und mehr als 1200 Teilnehmern<br />

bestünde, sei da der richtige Weg.<br />

HP will eine „aktive Rolle“ einnehmen,<br />

auch deshalb tummeln sich bereits Mitarbeiter<br />

auf Launchpad [https://​launchpad.​<br />

​net/​openstack] und im IRC Channel. Darüber<br />

hinaus wolle man auch die beiden<br />

Veranstaltungen Open Stack Design<br />

Summit und Open Stack Conference mitfinanzieren.<br />

Open Stack stellt eine freie Cloud-Computing-Umgebung<br />

bereit und bringt dazu<br />

Dienste fürs Management, die Rechenarbeit<br />

und Storage mit. Geht es nach den<br />

Initiatoren des Projektes, dann soll Open<br />

Stack demnächst der Industriestandard<br />

unter den Cloud Computing Plattformen<br />

werden.<br />

www.famepr.de<br />

Erstellt mit dem PowerPlus-Paket<br />

Hosting<br />

PowerPlus L<br />

6 Monate<br />

für<br />

*<br />

€/Mon.<br />

Gewinner von Open-Source-Förderung stehen fest<br />

Anlässlich der Froscon-Konferenz 2011<br />

in Sankt Augustin wurden die Sieger der<br />

diesjährigen Open-Source-Förderungen<br />

bekanntgegeben: Die Projekte Kanotix,<br />

X2go, Gridcalendar, Coreboot und ReactOS<br />

erhalten Server-Hardware im Gesamtwert<br />

von 6500 Euro. Mit der Aktion<br />

will die Thomas Krenn AG gemeinsam<br />

mit dem Linuxhotel und Univention förderungswürdige<br />

Open-Source- und Community-Projekte<br />

aktiv unterstützen und<br />

bekannt machen. Dazu stellt das firmeneigene<br />

Wiki die Projekte näher vor.<br />

Die Förderaktion fand dieses Jahr zum<br />

zweiten Mal statt, die Preise wurden wieder<br />

von der Thomas Krenn AG gestiftet.<br />

Peter Ganten (Univention / Open Source<br />

Business Alliance), Ingo Wichmann<br />

(Linuxhotel), Jacqueline Rahemipour<br />

(Referentin für Freie Projekte LinuxTag<br />

e.V.) und Werner Fischer (Technology<br />

Specialist bei Thomas Krenn) bildeten<br />

die Jury. Weitere Informationen zur<br />

Open-Source-Förderung sind unter [http://​<br />

​www.​thomas‐krenn.​com/​de/​wiki/​Thomas_Krenn_<br />

Open_Source_Förderung_2011] zu finden.<br />

Aktionsangebot nur<br />

bis zum 30.09.2011<br />

Jetzt bestellen unter:<br />

strato.de<br />

Servicetelefon: 0 18 05 - 055 055<br />

(0,14 €/Min. aus dem dt. Festnetz, Mobilfunk max. 0,42 €/Min.)<br />

www.A dmin-mAgA zin.de<br />

* 6 Monate 0 €/mtl., danach 14,90 €/mtl. Einrichtungsgebühr 14,90 €.<br />

Mindestvertragslaufzeit 12 Monate. Preis inkl. MwSt.


Login<br />

news<br />

+++ neueste Nachrichten immer auf http://www.admin-magazin.de +++++ neueste Nachrichte<br />

Red-Hat-Chef zur Linux-Zukunft<br />

Red Hats CEO Jim Whitehurst, der auf der<br />

kommenden LinuxCon Nordamerika die<br />

Keynote am Eröffnungstag halten wird,<br />

äußerte sich jetzt in einem Gespräch mit<br />

der Linux Foundation zur Zukunft des<br />

freien Betriebssystems.<br />

Auf die Frage, wo er Linux an seinem<br />

20.Geburtstag sehe, sagte Whitehurst:<br />

„Linux ist ganz klar das Betriebssystem<br />

des Web 2.0 und der Cloud. Praktisch<br />

jede neue Applikation und jedes neue<br />

Start-up im Web entwickelt einen Linux-<br />

Stack. Linux wandelte sich von einer<br />

brauchbaren Alternative zu traditionellen<br />

Betriebssystemen zum Standard. Darauf<br />

sollten wir alle sehr stolz sein.“<br />

Weiter ging Whitehurst darauf ein, wie<br />

sich die Erwartungen der Kunden verändert<br />

haben. „Das ist eine schwere Frage“,<br />

Sieht Linux als Betriebssystem des Web 2.0: Red-<br />

Hat-CEO Jim Whitehurst.<br />

sagte er. „Während Linux wuchs und reifte,<br />

haben sich die Anwendererwartungen<br />

stärker auseinanderentwickelt. Da gibt es<br />

einerseits die technisch orientierten Kunden,<br />

die ganz spezielle Anforderungen an<br />

die Skalierbarkeit, Zuverlässigkeit und/<br />

oder Sicherheit haben. Und andererseits<br />

ist da die breite Masse von Kunden, denen<br />

es hauptsächlich darauf ankommt,<br />

dass alles gut funktioniert. Sie wollen,<br />

dass ihre bevorzugten Anwendungen für<br />

Linux zertifiziert werden und dass Partner<br />

Linux-Dienstleistungen anbieten.“<br />

Was ist die bedeutendste Herausforderung<br />

für Linux, wurde Whitehurst weiter<br />

gefragt, und was ist nötig, um ihr zu begegnen?<br />

„Ich glaube, heute wird jeder mit<br />

mir darin übereinstimmen, dass Linux<br />

eine brauchbare Alternative zu anderen<br />

Betriebssystemen ist. Diese Schlacht ist<br />

gewonnen. In den nächsten Jahren muss<br />

es darum gehen, diese Akzeptanz in konkrete<br />

Einsatzfälle umzumünzen.“<br />

Konferenz „Powering the Cloud“ in Frankfurt<br />

Am 2. und 3. November 2011 finden im Kongresszentrum<br />

Frankfurt/Main unter dem Motto „Powering the Cloud“ die<br />

drei Konferenzen SNW Europe, Datacenter Technologies und<br />

Virtualization World statt. Nach der Vorstellung der Veranstalter<br />

reflektiert der Leitspruch den aktuellen Trend zum Cloud Computing,<br />

das als natürliche Weiterentwicklung von Virtualisierungstechnologie<br />

in Form von serviceorientierten Architekturen<br />

beinahe jedes Unternehmen erfasst, unabhängig von dessen<br />

Größe und Art.<br />

Zu den Themen der diesjährigen Konferenzen gehören Datenspeicherung,<br />

Datenverwaltung, Datenschutz und Datensicherheit<br />

für die Cloud, Virtualisierung von Desktop, Server, Speicher<br />

und Netzwerken, konvergierende Netzwerke von Datenzentren<br />

sowie ergänzende Architekturen und Technologie.<br />

Die Themen werden in 130 Vorträgen präsentiert und in Tutorien<br />

und Training Labs vertieft. Mehr Informationen zu<br />

der Veranstaltung finden sich unter der Adresse [http://​www.​<br />

​poweringthecloud.​com].<br />

Microsoft und Suse verlängern Zusammenarbeit<br />

Microsoft und der Linux-Distributor Suse verlängern ihre Zusammenarbeit<br />

um weitere vier Jahre. Microsoft verpflichtet<br />

sich im Rahmen der bis 2016 datierten Kooperation, 100 Million<br />

US-Dollar in neue Suse Linux Enterprise Zertifikate für Kunden<br />

zu investieren, die Linux Support von Suse erhalten. In den<br />

vergangenen fünf Jahren sollen weltweit bereits 725 Kunden<br />

aus allen Branchen von der Zusammenarbeit der beiden Unternehmen<br />

profitiert haben. Ziel ist es dabei, vor allem die<br />

Interoperabilität zu verbessern und Support für beide Welten<br />

aus einer Hand anbieten zu können. Auch mit Blick auf Cloud-<br />

Angebote sind die plattformübergreifenden Dienstleistungen<br />

besonders interessant.<br />

„Unsere Zusammenarbeit mit Suse hilft unseren Kunden, nicht<br />

nur heute erfolgreich zu sein“, sagt Sandy Gupta, General Manager<br />

der Open Solutions Group bei Microsoft. „sie legt auch ein<br />

solides Fundament für die Zukunft. Dank unseres fortgesetzten<br />

Engagements auf der technischen Seite, der außerordentlichen<br />

Supportangebote von Suse und unserer Zusicherungen im Gegenzug<br />

sind wir sicher, unseren Kunden, die gemischte Umgebungen<br />

betreiben, auch in Zukunft – und in der Cloud – zentrale<br />

Werte weitergeben zu können.“<br />

© Microsoft<br />

Lukratives Areal für den Suse-Gecko: Microsofts Campus in Redmond.<br />

10 AusgA be 05-2011 Admin<br />

www.A dmin-mAgA zin.de


n immer auf http://www.admin-magazin.de<br />

Lisog + Live = Open Source Business Alliance<br />

Der Linux-Unternehmerverband Live und der Open-Source-<br />

Verein Lisog tun sich zusammen. Die Mitglieder haben nun dem<br />

seit Längerem geplanten Vorhaben zugestimmt.<br />

Auf ihren Mitgliederversammlungen Ende Juli 2011 haben die<br />

Linux Solutions Group e.V. (Lisog) und Live Linux-Verband e.V.<br />

beschlossen, beide Vereine zu verschmelzen, heißt es in der<br />

gemeinsamen Mitteilung.<br />

Schon Ende 2010 hatten sich die Vorstandsvertreter der beiden<br />

Unternehmervereinigungen auf eine gemeinsame Absichtserklärung<br />

verständigt. Äußeres Zeichen dafür war im November<br />

die Erweiterung des Lisog-Vorstandes durch die Vorstände des<br />

Linux-Verbandes, Elmar Geese, Peter Ganten und Rico Barth.<br />

Der neue gemeinsame Name lautet Open Source Business Alliance<br />

e.V. (OSBA). Der 1997 gegründete Linux-Verband bringt<br />

103 Mitglieder mit, die seit 2005 bestehende Linux Solutions<br />

Group 124.<br />

Die Kooperation bedurfte einiger Vorarbeiten, weil es doppelte<br />

Mitgliedschaften gibt und auch das Vereinsrecht bei einer Fusion<br />

beachtet sein will. Unterschiedliche Interessen und Finanzierungsfragen<br />

taten ein Übriges.<br />

Gemeinsames Ziel ist es, den Einsatz von Linux- und auf Open-<br />

Source basierender Software in Unternehmen und öffentlichen<br />

Einrichtungen zu fördern sowie Open-Source-Anbieter zu vertreten.<br />

Mit der Fusion hofft man auf eine stärkere Position bei<br />

der Interessenvertretung gegenüber Politik und Verwaltung.<br />

Bis zur ersten Mitgliederversammlung der OSBA soll ein aus<br />

den gewählten Vorständen von Live und Lisog bestehendes<br />

Gremium die Leitung des neuen Vereins übernehmen. Sitz der<br />

Open Source Business Alliance sei Stuttgart, eine Repräsentanz<br />

in Berlin sei geplant.<br />

TM<br />

MobyDick<br />

Die Zukunft der Telefonie<br />

Mit der MobyDick Telefonanlage haben Sie alle Fäden selbst in<br />

der Hand. Außerdem verbinden Sie die Features modernster<br />

Telefonie mit den Vorteilen von Voice over IP.<br />

Die Kommunikationslösung für Ihr<br />

Unternehmen<br />

Cent OS 6.0 auch als Live-CD<br />

Der freie Red-Hat-Klon Cent OS ist in Version 6.0 auch als Live-<br />

Distribution verfügbar. Damit unterscheidet sich das Community-Linux<br />

vom Vorbild Red Hat Enterprise Linux, aus dessen<br />

GPL-Quelltext es entsteht. Zum Anfertigen der Live-Medien<br />

kommen die Livemedia-Tools des Fedora-Projekts zum Einsatz.<br />

Die Pakete entstammen dem regulären Cent OS 6.0, darunter<br />

Kernel 2.6.32, Glibc 2.12 und Bash 4.1.<br />

Als Desktop-Umgebung dient Gnome 2.28.0. Die Macher weisen<br />

allerdings darauf hin, dass nicht alle üblichen Desktop-<br />

Anwendungen auf der Live-CD Platz gefunden haben. Unter<br />

anderem sind aber Firefox, Thunderbird, Gimp, Gthumb und<br />

Pidgin an Bord.<br />

Weitere Informationen finden sich in den Release Notes [http://​<br />

​wiki.​centos.​org/​Manuals/​ReleaseNotes/​CentOSLiveCD6.​0] und beim<br />

Cent-OS-Live-CD-Projekt [https://​projects.​centos.​org/​trac/​livecd/].<br />

Die Cent-OS-Live-CD eignet sich beispielsweise unter anderem<br />

auch zur Festplatteninstallation. ISO-Images für x86 und<br />

x86_84 stehen auf den Mirror-Servern [http://​www.​centos.​org/​<br />

​modules/​tinycontent/​index.​php?​id=30] des Projekts zum Download<br />

bereit.<br />

www.A dmin-mAgA zin.de<br />

Unified Communications:<br />

Telefon<br />

Video<br />

VoiceMail<br />

Präsenzmanager<br />

Instantmessaging<br />

FaxEmail Gateway<br />

PrintFax Gateway<br />

Conferencing<br />

Mehr Informationen finden Sie unter:<br />

http://www.pascom.net<br />

http://community.pascom.net<br />

NEU<br />

Kostenlose<br />

Community<br />

Version<br />

erhältlich<br />

pascom<br />

Netzwerktechnik GmbH & Co. KG<br />

Berger Straße 42<br />

94469 Deggendorf<br />

Tel.: +49 991 27006 - 0


Login<br />

news<br />

SmartOS bringt Open Solaris und Linux-<br />

Virtualisierung zusammen<br />

Die Firma Joyent hat das Betriebssystem<br />

SmartOS freigegeben, das<br />

auf Open Solaris und der Linux-<br />

Virtualisierungslösung KVM basiert.<br />

Als Code-Basis diente den<br />

Entwicklern der vom Storage-Hersteller<br />

Nexenta initiierte Open-Solaris-Fork<br />

Illumos. Darauf haben<br />

sie den Linux-Hypervisor KVM<br />

portiert, der als leistungsfähige<br />

Virtualisierungstechnologie seit<br />

einiger Zeit etablierten Lösungen<br />

wie Xen und VMware Konkurrenz<br />

macht.<br />

Beispielsweise basiert auch Red<br />

Hats „Enterprise Virtualization“<br />

auf KVM. SmartOS richtet sich an<br />

jeden Anwender, der einen Server<br />

betreiben möchte, und wird<br />

laut FAQ von Joyent bereits produktiv<br />

im eigenen Datacenter<br />

eingesetzt. Einer der maßgeblichen<br />

Entwickler hinter SmartOS<br />

ist Bryan Cantrill, der früher bei<br />

Sun an Solaris arbeitete, aber nach<br />

der Übernahme durch Oracle das<br />

Unternehmen verließ. Er sieht<br />

großes Potenzial darin, Schlüsseltechnologien<br />

wie ZFS und<br />

DTrace von Solaris und KVM von<br />

Linux in einem fortschrittlichen<br />

Betriebssystem zusammenzubringen.<br />

Diese Rolle soll nun SmartOS<br />

übernehmen, das unter der CDDL<br />

lizenziert ist. In dem Blog-Eintrag<br />

[http://​dtrace.​org/​blogs/​bmc/​2011/​08/​<br />

​15/​kvm‐on‐illumos/] berichtet er von<br />

den Erfahrungen, die sein Team<br />

bei der Portierung von KVM gemacht<br />

hat. Im Joyent-Blog [http://​<br />

​smartos.​org/​blog/] sind einige Hinweise<br />

zu den Downloads sowie<br />

farbige Grafiken über den bisherigen<br />

Zuspruch zu finden.<br />

IT-Arbeitsmarkt wächst<br />

Software- und IT-Services werden in diesem Jahr – wie<br />

schon im vergangenen – einen Jobzuwachs von 4,4<br />

Prozent generieren. Allein in diesem Segment wird es<br />

dann hierzulande über 600 000 Arbeitsplätze geben, wie<br />

der Branchenverband BITKOM jetzt vorrechnet. Mehr<br />

als die Hälfte der Hightech-Firmen wollen in diesem<br />

Jahr neue Mitabeiter einstellen, in der gesamten ITK-<br />

Branche wird eine Zunahme um mehr als 10 000 auf<br />

858 000 Stellen prognostiziert. Gleichzeitig sind nach<br />

einer BITKOM-Untersuchung 29 000 Stellen für Informatiker<br />

in der deutschen Wirtschaft unbesetzt. Diese<br />

Zahl liegt weit über den bei der Bundesanstalt für Arbeit<br />

gemeldeten offenen Stellen, weil viele Personalchefs<br />

Informatiker eher über Stellenbörsen oder Headhunter<br />

zu rekrutieren versuchen. Entsprechend sehen fast 60<br />

Prozent der Unternehmen den Fachkräftemangel als<br />

Wachstumshemmnis an. Innerhalb der Branche zeigt<br />

sich ein uneinheitliches Bild: So verzeichnen Telekommunikation<br />

und Hardware-Produktion leichte Rückgänge<br />

beim Stellenangebot, wogegen Softwarehäuser und<br />

IT-Dienstleister überdurchschnittlich zulegten. Alles in<br />

allem, so BITKOM-Präsident Prof. Dieter Kempf, baue<br />

die Branche ihre Position als zweitgrößter industrieller<br />

Arbeitgeber kurz hinter dem Maschinenbau weiter aus.<br />

Red Hat Enterprise Virtualization 3.0 Beta verfügbar<br />

Red Hat hat die Betaversion von Red Hat Enterprise Virtualization<br />

(RHEV) 3.0 veröffentlicht. Der Red Hat Enterprise Virtualization<br />

Manager ist in der neuen Version eine Java-Anwendung,<br />

die auf der JBoss Enterprise Application Platform läuft. RHEV<br />

unterstützt bis zu 128 logische CPUs, 2 TByte Speicher für Hosts<br />

sowie bis zu 64 virtuelle CPUs und 2 TByte Speicher in Gastsystemen.<br />

Anwender können über ein Webportal virtuelle Maschinen<br />

einrichten, Templates definieren und ihre eigene Umgebung<br />

administrieren. Über eine REST-Webservice-Schnittstelle lassen<br />

sich alle Aspekte der Virtualisierungslösung in eigenen Programmen<br />

und Skripts konfigurieren und steuern.<br />

Zum Einsatz in sehr großen Installationen bietet Red Hat Enterprise<br />

Virtualization neue, mehrstufige Administrationsfunktionen.<br />

Eine standardmäßig integrierte Reporting Engine erlaubt<br />

die Analyse der Nutzung von Applikationen und der Auslastung<br />

virtueller Maschinen. Schließlich profitieren auch Anwender<br />

von Desktop-Virtualisierung von der neuen RHEV-Version durch<br />

WAN- und <strong>Performance</strong>-Optimierungen von SPICE, einschließlich<br />

dynamischer Kompression und einem automatischen <strong>Tuning</strong><br />

der Desktop-Darstellungen. Mehr Informationen zu Red<br />

Hat Enterprise Virtualization finden sich unter [http://​www.​<br />

​red‐hat.​com/​rhev].<br />

Programm für 1. Deutsche Python-Konferenz steht<br />

Vom 4. bis 9. Oktober 2011 findet im Leipziger Kubus die 1.<br />

Deutsche Python-Konferenz (PyCon DE 2011) statt. Nun haben<br />

die Organisatoren das Programm fertiggestellt.<br />

Den Auftakt gibt am 4. Oktober das kostenlose Python-Barcamp.<br />

Gleichzeitig finden die kostenpflichtigen Tutorials statt, in denen<br />

die Dozenten ihr Know-how zu Django, Zope, Plone und<br />

weiteren Themen vermitteln. Auch ein Einsteiger-Tutorial für<br />

Python-Neulinge ist dabei.<br />

Das Kernstück bilden die Vorträge vom 5. bis 7. Oktober. Sie<br />

bieten eine Themenmischung für Anfänger und Fortgeschrittene.<br />

Unter anderem geht es um das Framework Web2py, Python<br />

und Postgresql, Kryptografie mit der Skriptsprache und das Paketieren<br />

von Anwendungen. Zope und Plone sind mit mehreren<br />

Referaten vertreten, außerdem geht es um Django 3000, das<br />

Mischwesen Cython, XML, IPv6-Socketprogrammierung und<br />

die Suchmaschine PyLucene.<br />

Anschließend stehen der 8. und 9. Oktober für Entwickler-<br />

Sprints zur Verfügung, zu denen eine Anmeldung erwünscht,<br />

ein Ticket aber nicht erforderlich ist.<br />

Weitere Informationen zur Veranstaltung sowie Ticket-Preise<br />

finden sich auf der Homepage der Python-Konferenz [http://​de.​<br />

​pycon.​org/​2011/​home/].<br />

12 AusgA be 05-2011 Admin<br />

www.A dmin-mAgA zin.de


news<br />

Login<br />

Oracle reserviert Ksplice für seine Kunden<br />

Nach dem Kauf der Firma Ksplice schließt Oracle seine Konkurrenten von der Nutzung<br />

der Technologie aus. Oracle hat den Abschluss des Kaufs der Firma Ksplice bekanntgegeben,<br />

die die gleichnamige Technologie entwickelt, die das Einspielen von Bugfixes in<br />

den Linux-Kernel ohne Reboot erlaubt. In Zukunft will Oracle den Ksplice-Service im<br />

Rahmen seines Premier-Support-Programms anbieten. Explizit weist Oracle in seinem<br />

Brief an die Kunden darauf hin, dass der Ksplice-Dienst nur Anwendern des eigenen<br />

Unbreakable Enterprise Kernel zur Verfügung steht. Der Support von Red Hat Enterprise<br />

Linux und Suse Enterprise Linux sei<br />

nicht geplant.<br />

In einer Präsentation (PDF) [http://​www.​<br />

​oracle.​com/​us/​corporate/​Acquisitions/​ksplice/​<br />

​general‐presentation‐430138.​pdf] stellt<br />

Oracle die eigene Linux-Variante (die<br />

im Wesentlichen auf Red Hat Enterprise<br />

Linux basiert) dem Produkt von<br />

Red Hat gegenüber und hebt hierbei die<br />

Verfügbarkeit von „Zero Downtime Updates<br />

with Ksplice“ als Vorteil heraus.<br />

Im Forum der IT-News-Site Slashdot<br />

wurden Rufe nach einem Ksplice-Fork, Oracles Vergleich des hauseigenen Linux (links) mit dem<br />

beispielsweise durch Red Hat, laut. von Red Hat (rechts) fällt recht einseitig aus.<br />

Samba 3.6.0 unterstützt<br />

SMB-2-Protokoll<br />

Über SMB 2 sollten alle Features nutzbar<br />

sein, laut den Entwicklern sind<br />

lediglich Modifikationen der Nutzer-<br />

Quotas mit den Windows Quota Management<br />

Tools nicht möglich. SMB<br />

2, seit Windows Vista im Einsatz, ist<br />

allerdings nicht die Default-Einstellung<br />

und muss aktiviert werden.<br />

Samba 3.6.0 bringt zudem mehr<br />

Sicherheit in den Standardeinstellungen,<br />

einen stark überarbeiteten<br />

Druckbereich, vereinfachtes ID-Mapping<br />

und ein neues Modul für die<br />

Traffic-Analyse.<br />

Die Release Notes listen Details und<br />

Änderungen auf. Die Quellen gibt es<br />

auf dem Download-Server des Samba-Projekts<br />

[http://​download.​samba.​org/​<br />

​samba/​ftp/​stable].<br />

1. Lernen Sie!<br />

Ja, ã training-on-the-jobÒ , oft praktiziert, aber nicht<br />

Ÿ berzeugend. Denn die Kollegen haben nie Zeit<br />

fŸ r echte ErklŠ rungen, au§ erdem werden ã NeueÒ<br />

sofort von dem vereinnahmt, was im Unternehmen<br />

schon seit Ewigkeiten tradiert wird. Warum gibt's<br />

seit 2000 Jahren Schulen und UniversitŠ ten?<br />

ã LERNENÒ ist eine vollwertige TŠ tigkeit, auf die<br />

man sich konzentrieren mu§ , die man nicht 'mal<br />

eben so nebenbei tun kann, und die immer auch<br />

eine Prise ã ErneuerungÒ beinhalten sollte!<br />

2. Ineffiziente Arbeit nicht akzeptieren!<br />

Je spezialisierter Sie arbeiten, desto weniger<br />

echte, fachliche Kollegen haben Sie in Ihrem eigenen<br />

Unternehmen. Wir stellen deshalb Gruppen<br />

zusammen, in denen Sie neben hilfsbereiten<br />

Kollegen mit Š hnlichen Kenntnissen an IHREM<br />

Projekt arbeiten. Und stŠ ndig ist ein fachlicher Berater<br />

anwesend.<br />

ã Guided CoworkingÒ nennen wir das, und es<br />

kš nnte DIE Lš sung fŸ r so manches Projekt sein,<br />

das in Ihrer Firma ã haktÒ .<br />

3. Hintergrund<br />

Wer den riesigen OpenSource-Baukasten schnell<br />

beherrschen mu§ , geht zu einer unserer Ÿ ber 100<br />

Schulungen. Wer das bereits kann, aber schneller<br />

mit seinen Projekten vorankommen will, der<br />

kommt mit seiner Arbeit zum Guided Coworking.<br />

Wir sind eine der erfolgreichsten Schulungseinrichtungen<br />

im gesamten Bereich ã OpenSourceÒ<br />

- sowohl fŸ r Admins, als auch fŸ r Entwickler.<br />

Siehe www.linuxhotel.de


«Seitdem ich Microsoft ® Exchange benutze, hindert mich nichts mehr daran,<br />

effizient zu sein, wenn ich unterwegs bin. Ich synchronisiere meine Aufgaben<br />

und meine Kalender und teile sie mit meinen Mitarbeitern.»<br />

1 bis 1000 E-Mail-Accounts pro Domain<br />

25 GB Speicherplatz pro Account<br />

Gemeinsam genutzte Kalender und Aufgaben<br />

Anti-Virus, Anti-Spam<br />

Webmail (OWA), Outlook ®<br />

(MAPI)<br />

Mobile Synchronisation (ActiveSync)


Die professionelle<br />

Groupwarelösung<br />

Hosted 2010<br />

Ihre E-Mail-Accounts mit 25 GB Speicherplatz<br />

TM<br />

3, 96 €<br />

inkl. MwSt. / Monat / Account<br />

Mehr Informationen: www.ovh.de/mail oder 0049 (0) 681 906730<br />

Ortsnetznummer<br />

Europas Webhoster Nr. 1<br />

Quelle NetCraft – Juni 2011<br />

Domains | | E-Mails | | Hosting | VPS | VPS | | Server | | Private Cloud | | Cloud | SMS | SMS | | Telefonie<br />

OVH.DE


Login<br />

bücher<br />

Bücher über Wireshark und Linux-Server<br />

Vorgelesen<br />

ein dicker wälzer will Administratoren von Linux-servern bei ihren täglichen<br />

Aufgaben helfen. das zweite werk ist englischsprachig und vermittelt<br />

die netzwerkanalyse mit wireshark. udo seidel, michael müller<br />

Der Netzwerk-Sniffer Wireshark gehört<br />

schon lange zur Werkzeugkiste des<br />

Admin. Die Vielfalt der Anwendungsmöglichkeiten<br />

kann man inzwischen sogar<br />

in einem offiziellen Trainingsprogramm<br />

erlernen. Das Buch von Laura Chappell<br />

basiert auf diesem Lehrgang, ist im Eigenverlag<br />

erschienen und soll dem Leser<br />

unter anderem helfen, ein „Wireshark<br />

Certified Network Analyst“ zu werden.<br />

Mit rund 800 Seiten wirkt das Buch zunächst<br />

etwas abschreckend, aber schon<br />

ein erstes Durchblättern zeigt, dass der<br />

Umfang durch viele Screenshots zustandekommt.<br />

Dies lässt sich bei einem grafischem<br />

Tool wohl auch kaum vermeiden.<br />

Positiv fällt auf, dass die Autorin die Details<br />

in den Screenshots beschriftet hat.<br />

Eine ernstzunehmende Beschreibung eines<br />

Netzwerk-Analyse-Werkzeugs muss<br />

zumindest den TCP/ IP-Stack besprechen,<br />

besser noch wäre das ISO-OSI-Schichtenmodell.<br />

Laura Chappell behandelt dieses<br />

Thema leider erst nach zirka 40 Prozent<br />

des Buches. Dieser Kritikpunkt wiegt<br />

aber weniger schwer, weil die Autorin<br />

den wichtigsten Netzwerk-Protokollen<br />

wie DNS, DHCP, HTTP(S), FTP, SMTP,<br />

POP, WLANs, und VoIP jeweils ein Kapitel<br />

widmet. Am Ende der Kapitel befinden<br />

sich Fragen, damit der Leser seinen<br />

Wissenszuwachs überprüfen kann.<br />

Das im Buch vermittelte Wissen ist keineswegs<br />

akademisch – die Praxisrelevanz<br />

zeigt sich in vielen Beispielen aus dem<br />

Admin-Alltag, und zu jedem Fall bekommt<br />

der Leser einen Arbeitsplan in die<br />

Hand. An manchen Stellen ist diese Auflistung<br />

aber zu umfangreich und wirkt<br />

dann unübersichtlich. Das volle Potenzial<br />

des Buches erschließt sich dem Leser<br />

erst per Online-Zugabe: Auf der Webseite<br />

[http://​www.​wiresharkbook.​com] finden<br />

sich über 200 MByte an Netzwerk-Traces<br />

begleitend zum Buch.<br />

Laura Chapell bietet dem Leser eine Fülle<br />

an Informationen. Durch sein Konzept<br />

eignet sich das Buch allerdings eher zum<br />

Lernen als zum Nachschlagen. Mit 70<br />

Euro ist der Preis für das Buch recht<br />

stattlich.<br />

Server-Handbuch<br />

Das Buch „Linux-Server“ von Dirk<br />

Deimeke und seinen Mitverfassern reiht<br />

sich nicht zwischen die vielen Bücher<br />

zur Installation und Administration des<br />

Betriebssystems ein. Das Autorenteam<br />

setzt vielmehr solides Grundwissen voraus,<br />

um sich typischen Server-Themen<br />

zu widmen.<br />

Es behandelt Fileserver, Web- und Mailserver,<br />

Druckserver, Hochverfügbarkeit,<br />

Virtualisierung und mehr. Dazu gesellt<br />

sich Grundlegendes wie Bootvorgang<br />

oder Berechtigungen, wozu die Autoren<br />

detailliertes Wissen vermitteln. Dabei<br />

schürfen die Verfasser jedoch nicht derart<br />

tief wie Bücher, die sich auf ein einziges<br />

Thema konzentrieren – der Band ist in<br />

der Lücke zwischen Grundlagen und Spezialthemen<br />

angesiedelt. Am ehesten lässt<br />

er sich mit einem Buch wie dem „Official<br />

Ubuntu Server Book“ vergleichen.<br />

Der erste Teil „Grundlagen“ befasst sich<br />

mit dem Bootvorgang, mit Festplatten,<br />

Dateisystemen und Berechtigungen. Dabei<br />

geht es nicht einfach darum, wie man<br />

einen Bootloader installiert, sondern wie<br />

der Bootvorgang im Detail abläuft und wie<br />

der Administrator Störungen beseitigen<br />

kann. Die weiteren Abschnitte widmen<br />

sich Aufgaben, Diensten, Infrastruktur,<br />

Kommunikation, Automatisierung sowie<br />

Sicherheit, Verschlüsselung und Zertifikaten.<br />

Jeder Teil besteht aus mehreren Kapiteln.<br />

Aus dem Bereich Kommunikation<br />

sei das Netzwerk-Kapitel herausgegriffen:<br />

Hier behandeln die Autoren nicht die üblichen<br />

Tools, sondern deren (noch) nicht<br />

ganz so bekannte Nachfolger wie »ip«<br />

oder »iproute2«. Daneben geht es um<br />

Bonding, Netfilter, Iptables sowie Netzdienste<br />

wie DHCP und DNS.<br />

Das Buch lässt sich angenehm lesen und<br />

verwendet überschaubare Listings. Theorie<br />

und Praxis wechseln einander ab. Den<br />

Schreibstil der Autoren hat das Lektorat<br />

soweit angeglichen, dass Unterschiede<br />

zwar noch erkennbar sind, aber keinen<br />

Bruch im Lesefluss verursachen. An manchen<br />

Stellen wäre etwas mehr Tiefgang<br />

wünschenswert. Doch es wird sicherlich<br />

eine Menge Leser geben, die Gefallen gerade<br />

an der Mischung zwischen Grundwissen<br />

und Spezialthemen finden, die<br />

diesen Band ausmacht. (mhu)<br />

n<br />

Wireshark Network Analysis<br />

Wireshark Network Analysis<br />

Laura Chappell<br />

University, 2010<br />

800 Seiten<br />

70 Euro<br />

ISBN 978-1-893939-99-8<br />

Linux-Server<br />

Linux-Server<br />

Dirk Deimeke, Charly Kühnast,<br />

Stefan Kania, Stefan Semmelroggen,<br />

Daniel von Soest<br />

Galileo Computing 2011<br />

815 Seiten 50 Euro<br />

ISBN 978-3-8362-1469-8<br />

16 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


HOCHVERFÜGBARKEIT<br />

WIRD ENDLICH BEZAHLBAR<br />

Ausfallsicherheit - unkompliziert, sicher und kostengünstig!<br />

IHRE VORTEILE<br />

• Hochverfügbarkeit eingebaut<br />

• Eingebaute Fehlermustererkennung<br />

• Simple WEB-GUI<br />

• eingebaute Virtualisierung<br />

powered by<br />

Rufen sie uns an unter:<br />

Tel: 08551/9150-171<br />

Infos unter:<br />

www.thomas-krenn.com/stratus-tk<br />

Flächendeckendes Händler- und Servicenetz<br />

in der Schweiz: www.thomas-krenn.com/ch<br />

www.thomas-krenn.com<br />

EU: +49 (0) 8551 9150-0 · AT: +43 (0) 7282 20797-3600 · CH: +41 (0) 848 207970<br />

Made in Germany!


LO gin<br />

Admin-story<br />

Tagebuch eines IT-Nomaden<br />

Auf Knopfdruck<br />

webapplikationen unkompliziert in die Cloud schicken: mit dem neuen Paas-service Openshift gelingt dies mit<br />

nur wenigen Handgriffen. Thorsten scherf<br />

Freitag 17 Uhr: Das Notebook ist seit<br />

15 Minuten aus, und ich bin schon fürs<br />

Lauftraining umgezogen, um das Wochenende<br />

einzuläuten, da klingelt das<br />

Telefon. Eine Kollegin und Freundin aus<br />

Kalifornien ruft an und erzählt mir stolz<br />

von einer neuen Perl-Webanwendung,<br />

die sie geschrieben hat. Zum Wochenende<br />

möchte sie diese gerne der Welt<br />

zur Verfügung stellen, hat aber leider keinen<br />

Webspace mehr frei und fragt mich<br />

nun, ob ich ihr aus der Patsche helfen<br />

könne. Genau die richtige Gelegenheit,<br />

um Openshift ein wenig näher an die US-<br />

Westküste zu bringen, denke ich mir, und<br />

vergesse erstmal das Training, um ihr zu<br />

erklären, worum es dabei geht.<br />

Cloud-Service für lau<br />

Openshift ist ein Platform-as-a-Service<br />

(PaaS) Cloud-Service, der diverse Programmiersprachen,<br />

Frameworks und<br />

Datenbanken unterstützt. Der Zugriff ist<br />

auf Basis diverser Level organisiert. Der<br />

Einsteiger-Level nennt sich Express und<br />

ist für jedermann – und frau – frei zugänglich.<br />

Über ein Kommandozeilen-Tool<br />

bietet es die Möglichkeit, eigene Applikationen<br />

in einer Cloud-Umgebung bereitzustellen.<br />

An Programmiersprachen<br />

unterstützt die Express-<br />

Variante Java 6 EE, Ruby,<br />

PHP und Perl. Im Backend<br />

kommen MySQL oder SQLite zum Einsatz.<br />

128 MByte Festplattenplatz und<br />

256 MByte RAM sind die zur Verfügung<br />

stehenden Hardware-Ressourcen in einer<br />

Shared-Hosting-Umgebung.<br />

Wer mehr möchte, muss auf den nächsten<br />

Level „Flex“ upgraden, braucht dafür jedoch<br />

einen Amazon Webservice Account.<br />

Damit erhält der Benutzer wesentlich größere<br />

Kontrolle über die Umgebung, Shell-<br />

Zugriff und er kann seine Java-Applikationen<br />

entweder auf einem JBoss- oder<br />

Tomcat-Applikationsserver bereitstellen.<br />

Der höchste Level „Premium“ steht zurzeit<br />

noch nicht zur Verfügung, soll<br />

aber im Kürze erscheinen.<br />

Hier ist das das komplette<br />

Programm eines<br />

Cloud-Anbieters verfügbar.<br />

Beispielsweise<br />

lassen sich Standalone-Programme<br />

ohne Webfrontend<br />

bereitststellen, ein<br />

Templating-System<br />

für virtuelle Systeme<br />

hilft bei der<br />

Skalierung, und<br />

auch die Anzahl<br />

der unterstützten Programmiersprachen<br />

ist hier größer.<br />

Für meine kalifornische Kollegin und<br />

ihre Perl-Applikation reicht aber erst mal<br />

der Express-Level. Also erkläre ich ihr<br />

alle Schritte, die zum Einstieg notwendig<br />

sind. Als Erstes wäre da die Registrierung<br />

auf der Openshift-Webseite [1]. Um die<br />

notwendigen Client-Tools zu installieren,<br />

fehlt noch ein zusätzliches Software-<br />

Repository. Für Fedora 14/ 15 oder RHEL 6<br />

zeigt Listing 1 die entsprechende Yum-Repository-Datei,<br />

für andere Systeme (auch<br />

Windows oder Mac OS X) finden sich auf<br />

der Openshift-Website Installationsanleitungen.<br />

Die Konfigurationsdatei<br />

ist unterhalb von »/etc/yum.<br />

repos.d/« abzuspeichern,<br />

beispielsweise als »openshift.repo«.<br />

© skvoor; 123RF<br />

18 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Admin-story<br />

LO gin<br />

Schließlich holt »yum install rhc« die<br />

Client-Tools auf den eigenen Rechner.<br />

Damit es richtig losgehen kann, ist im<br />

ersten Konfigurationsschritt ein Domänenname<br />

zu generieren. Dieser wird<br />

nachher Teil der Applikations-URL und<br />

ist innerhalb der Openshift-Umgebung<br />

eindeutig. Man ist also gut beraten, einen<br />

sinnvollen Namen zu wählen. Listing 2<br />

zeigt ein Beispiel.<br />

Nun muss der Cloud-Service nur noch<br />

wissen, wie die eigene Applikation heißt<br />

und in welcher Sprache sie geschrieben<br />

ist. Hier ist neben der Sprache selbst auch<br />

die Version derselbigen anzugeben. Die<br />

Idee dabei ist, dass die Plattform später<br />

einmal mehrere Versionen derselben<br />

Sprache unterstützt, und dann natürlich<br />

wissen muss, welche Version die Applikation<br />

verwendet. Es wäre unschön, wenn<br />

auf der Serverseite beispielsweise Python<br />

2 zum Einsatz käme, das Programm aber<br />

in Python 3 realisiert ist. Wie auch beim<br />

Erzeugen der Domäne reicht auch für<br />

das Anlegen der eigenen Applikation ein<br />

einziger Befehl (Listing 3).<br />

Das war’s auch schon fast. Wie Listing 3<br />

zeigt, ist zum Abschluss nun noch die eigentliche<br />

Applikation auf den Server zu<br />

schieben. Da als Versionkontrollsystem<br />

Git [2] zum Einsatz kommt, stellt auch<br />

dies kein großes Problem dar und gelingt<br />

in wenigen Schritten. Beim Anlegen der<br />

Applikation hat das Tool auch einen Git-<br />

Projektordner erzeugt. Darin enthalten ist<br />

eine vorgeschriebene Directory-Struktur.<br />

Beispielsweise nimmt der Unterodner<br />

»spaceuploader/perl« die eigenen Code-Dateien<br />

auf. In der Datei »deplist.txt «lassen<br />

sich Perl-Module auflisten, die zum Betreiben<br />

der Anwendung notwendig sind, diese<br />

werden dann automatisch installiert.<br />

Eine Readme-Datei gibt Auskunft über<br />

die weiteren Ordner und deren Aufgabe.<br />

Die eigenen Dateien sind schließlich mit<br />

»git commit -a -m "first commit for world<br />

domination"« in das Git-Repository zu<br />

befördern. Ein »git push origin master«<br />

übertragt die Daten vom lokalen in das<br />

entfernte Git-Repository. Somit steht die<br />

Anwendung nun über die oben genannte<br />

URL der ganzen Welt zur Verfügung.<br />

Der Aufruf von »rhc-user-info« zeigt noch<br />

einmal die Details zur Anwendung an,<br />

also beispielsweise die HTTP- und Git-<br />

URL, sowie das verwendete Framework,<br />

in diesem Fall also Perl 5.10. Möchte<br />

man die einmal erzeugte Anwendung im<br />

Nachgang modifizieren, also beispielsweise<br />

eine Datenbank hinzufügen oder<br />

den Webdienst stoppen oder eventuell<br />

auch dauerhaft von der Bildfläche verschwinden<br />

lassen, so gelingt dies mit<br />

dem Tool »rhc-ctl-app«.<br />

Auf die Plätze ...<br />

Geschafft: Die Anwendung ist online,<br />

meine Kollegin ist glücklich und kann<br />

über das Wochenende nach Herzenslust<br />

neue Versionen ihrer Applikation in die<br />

Cloud stellen. Ich bin mir sicher, dass<br />

meine Hilfe dazu nicht mehr notwendig<br />

ist. Ich wünsche viel Spaß und verabschiede<br />

mich von ihr und kann endlich<br />

loslaufen – heute stehen allerdings nur<br />

15 km auf dem Programm, ich sollte also<br />

schnell wieder zurück sein. (ofr) n<br />

Infos<br />

[1] Openshift: [http:// openshift. redhat. com]<br />

[2] Git: [http:// git‐scm. com]<br />

Der Autor<br />

Thorsten Scherf arbeitet als Senior Consultant<br />

für Red Hat EMEA. Er ist oft als Vortragender<br />

auf Konferenzen anzutreffen. Wenn ihm neben<br />

der Arbeit und Familie noch Zeit bleibt, nimmt<br />

er gerne an Marathonläufen teil.<br />

Listing 3: Anlegen der Applikation<br />

01 # rhc‐create‐app ‐a spaceuploader ‐t perl‐5.10<br />

‐l tscherf@gmail.com<br />

02 Password:<br />

03<br />

04 Found a bug? Post to the forum and we'll get<br />

right on it.<br />

05 IRC: #openshift on freenode<br />

06 Forums: https://www.redhat.com/openshift/<br />

forums<br />

07<br />

08 Attempting to create remote application space:<br />

spaceuploader<br />

09 Contacting https://openshift.redhat.com<br />

10<br />

11 RESULT:<br />

12 Successfully created application: spaceuploader<br />

13<br />

14 Checking ~/.ssh/config<br />

15 Contacting https://openshift.redhat.com<br />

16 Adding rhcloud.com to ~/.ssh/config<br />

17 Now your new domain name is being populated<br />

worldwide (this might take a minute)...<br />

18 Pulling new repo down<br />

19 Warning: Permanently added<br />

Listing 1: Yum-Konfiguration für Openshift-Tools<br />

01 [openshift‐express]<br />

02 name=Openshift‐express<br />

03 baseurl=https://openshift.redhat.com/app/repo/<br />

rpms/$releasever/$basearch/<br />

04 failovermethod=priority<br />

05 skip_if_unavailable=1<br />

06 gpgkey=https://openshift.redhat.com/app/repo/<br />

RPM‐GPG‐KEY‐redhat‐beta<br />

07 ggpkey=https://openshift.redhat.com/app/repo/<br />

RPM‐GPG‐KEY‐redhat‐release<br />

08 enabled=1<br />

09 gpgcheck=1<br />

Listing 2: eigene domäne in Openshift<br />

01 # rhc‐create‐domain ‐n tuxgeek ‐l tscherf@gmail.com<br />

02 Password:<br />

03 Generating Openshift Express ssh key to /home/<br />

tscherf/.ssh/libra_id_rsa<br />

04 Generating public/private rsa key pair.<br />

05 Created directory '/home/UserName/.ssh'.<br />

06 Enter passphrase (empty for no passphrase):<br />

07 Enter same passphrase again:<br />

08 Your identification has been saved in /home/<br />

UserName/.ssh/libra_id_rsa.<br />

09 Your public key has been saved in /home/UserName/.<br />

ssh/libra_id_rsa.pub.<br />

10 Creation successful<br />

11<br />

12 You may now create an application. Please make note<br />

of your local config<br />

13 file in /home/tscherf/.openshift/express.conf which<br />

has been created and<br />

14 populated for you.<br />

'spaceuploader‐tuxgeek.rhcloud.<br />

com,174.129.129.190' (RSA) to the list of known<br />

hosts.<br />

20 Enter passphrase for key '/home/tscherf/.ssh/<br />

libra_id_rsa':<br />

21 Confirming application spaceuploader is<br />

available<br />

22 Attempt # 1<br />

23<br />

24 Success! Your application is now published<br />

here:<br />

25<br />

26 http://spaceuploader‐tuxgeek.rhcloud.com/<br />

27<br />

28 The remote repository is located here:<br />

29<br />

30 ssh://df488b98f21847c6907a6b2193bff2dc@<br />

spaceuploader‐tuxgeek.rhcloud.com/~/git/<br />

spaceuploader.git/<br />

31<br />

32 To make changes to your application, commit to<br />

spaceuploader/.<br />

33 Then run 'git push' to update your OpenShift<br />

Express space<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

19


http://www.linuxfoundation.org/


lO gin<br />

Recht<br />

imagesource, 123RF<br />

Was beim Sniffen erlaubt ist und was nicht<br />

Chef hört mit<br />

ein unternehmer möchte Fehlern in seinem netz auf den grund gehen<br />

und den netzwerkverkehr aufzeichnen, um ihn zu analysieren. was aber<br />

sagt das datenschutzrecht dazu? Vilma niclas, elisabeth Opfermann<br />

Jedes Unternehmen ist daran interessiert,<br />

IT-Probleme möglichst zu vermeiden<br />

oder, so schnell es geht, zu beheben.<br />

Soweit dabei das Netzwerk im Spiel ist,<br />

hilft es zuweilen, wenn man analysiert,<br />

was genau übertragen wurde. Je nachdem,<br />

ob man nur einen bestimmten<br />

Rechner oder den gesamten Netzwerkverkehr<br />

überwacht oder mitschneidet,<br />

gelangt man dabei zwangsläufig an die<br />

unterschiedlichsten Protokoll- und/ oder<br />

Benutzungsdaten von Betriebssystemen,<br />

Softwareanwendungen, Online-Abrufen,<br />

Telekommunikationsanlagen, Routern,<br />

E-Mail-Servern, Firewalls, Proxy-Servern<br />

und so weiter. Der Administrator hat Einblick<br />

in E-Mail-Kommunikationen, beispielsweise<br />

wer an wen wann eine E-Mail<br />

versandt hat, sieht E-Mail-Adressen von<br />

Empfängern, etwa von Freunden der Angestellten<br />

und kann auch den Inhalt von<br />

E-Mails einsehen. Auch sämtliche Websites,<br />

die besucht wurden, lassen sich<br />

mitloggen. Es fallen sehr viele sensible<br />

Daten an. Der Chef erfährt so unter Umständen<br />

Sachen, die ihn nichts angehen.<br />

Nicht nur juristisch, auch in technischer<br />

Hinsicht, ist eine uneingeschränkte Netzwerküberwachung<br />

problematisch: Die<br />

anfallende Datenmenge wäre bei einem<br />

kompletten Mitschnitt sehr groß. In der<br />

Praxis wird der Netzwerkverkehr daher<br />

oft nur anlässlich eines konkreten Fehlers<br />

protokolliert oder überwacht. Dies ist<br />

auch in datenschutzrechtlicher Hinsicht<br />

zu empfehlen.<br />

Ist Sniffen erlaubt?<br />

Grundsätzlich gilt: Das Datenschutzrecht<br />

verbietet es, den Netzwerkverkehr uneingeschränkt<br />

und vollständig zu überwachen<br />

oder mitzuschneiden – ohne<br />

Differenzierung für den Einzelfall. Eine<br />

teilweise oder vorübergehende Überwachung<br />

kann aus bestimmten Gründen<br />

erlaubt sein. Es kommt dafür auf den<br />

Zweck der Überwachung und auf die Art<br />

der erfassten Daten an.<br />

Nicht jeder Datensatz ist geschützt. Datenschutzgesetze<br />

wie das Telekommunikationgesetz<br />

(TKG), das Telemediengesetz<br />

(TMG) und das Bundesdatenschutzgesetz<br />

(BDSG) schützen ausschließlich<br />

personenbezogene Daten. Das sind nach<br />

§ 3 BDSG: „Einzelangaben über persönliche<br />

oder sachliche Verhältnisse einer<br />

bestimmten oder bestimmbaren natürlichen<br />

Person“.<br />

Schutzwürdige Daten sind zum Beispiel<br />

Name, Geburtsdatum, Adresse sowie<br />

Kontodaten, Patientenakten, Informationen<br />

über die ethnische Herkunft, die<br />

politische oder sexuelle Orientierung.<br />

Entscheidend ist, ob eine Person anhand<br />

der Daten direkt oder mittelbar zu identifizieren<br />

ist.<br />

Insbesondere bei IP-Adressen scheiden<br />

sich die Geister. Man kann intern leicht<br />

feststellen, wer mit welcher IP-Adresse<br />

an welchem Rechner wo im Internet war.<br />

Darf man diese Daten unbefristet speichern<br />

oder die IP-Adressen der Nutzer der<br />

Website? Das Amtsgericht Berlin-Mitte<br />

24 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


(AZ: 5 C 314/ 06) geht davon aus, dass IP-<br />

Adressen personenbezogene Daten seien<br />

und untersagte dem Bundesministerium<br />

der Justiz (BMJ), die IP-Adressen der Nutzer<br />

der Webseite des BMJ zu speichern.<br />

Diese Ansicht teilten das schweizerische<br />

Bundesgericht im September 2010 sowie<br />

der Düsseldorfer Kreis, eine Expertenrunde<br />

deutscher Datenschützer. Anderer<br />

Meinung ist das Amtsgericht München<br />

(Urteil v. 30.09.08; AZ: 133 C 5677/ 08):<br />

Aufgrund der dynamischen Vergabe von<br />

IP-Adressen sei der Personenbezug nur<br />

temporär, weshalb davon ausgegangen<br />

werden könne, dass IP-Adressen keine<br />

personenbezogenen Daten seien. Dieser<br />

Streit könnte sich lösen, wenn mithilfe<br />

von IPv6 jeder nur noch statisch vergebene<br />

Adressen nutzt. Dann bestünde<br />

der Personenbezug dauerhaft und eine<br />

IP-Adresse würde unumstritten zum personenbezogenen<br />

Datum.<br />

Sind die Mitarbeiter<br />

einverstanden?<br />

Oberstes Gebot im Datenschutz ist die<br />

Datenvermeidung. Es sollen nur so wenig<br />

personenbezogene Daten wie möglich<br />

gespeichert werden. Um so geringer<br />

ist die Missbrauchsgefahr. Ferner dürfen<br />

Daten nur für einen bestimmten Zweck<br />

erhoben und später dann allein dazu verwendet<br />

werden. Darüber hinaus erlauben<br />

es deutsche Datenschutzvorschriften<br />

nur unter engen Voraussetzungen,<br />

personenbezogene Daten zu erheben, zu<br />

verarbeiten oder zu speichern. Voraussetzung<br />

ist: Entweder erlaubt dies ein<br />

Gesetz ausdrücklich, oder derjenige, auf<br />

betriebsrat einbeziehen<br />

Sofern ein Betriebsrat vorhanden ist, ist dieser<br />

bei technischen Maßnahmen wie dem<br />

Mitschneiden des Netzwerkverkehrs darüber<br />

zu informieren und einzubeziehen. Nach § 75<br />

Absatz 2 Betriebsverfassungsgesetz (BetrVG)<br />

sind Betriebsrat und Arbeitgeber verpflichtet,<br />

für die freie Entfaltung der Persönlichkeit der<br />

Arbeitnehmer zu sorgen. Dazu gehört, dass der<br />

Arbeitnehmer selbst bestimmen kann, was mit<br />

seinen Daten passiert – die sogenannte informationelle<br />

Selbstbestimmung. Der Betriebsrat<br />

ist nach § 80 Abs. 1 Nr. 1 BetrVG verpflichtet,<br />

den Arbeitnehmerdatenschutz durchzusetzen.<br />

Er ist mitbestimmungspflichtig bei der Protokollierung<br />

und Auswertung von Arbeitnehmerdaten,<br />

§ 87 Abs. 1 Nr. 6 BetrVG, also bei jeglicher<br />

den sich die Daten beziehen, hat sich<br />

im Vorfeld damit einverstanden erklärt.<br />

Das kann etwa im Arbeitsvertrag erfolgt<br />

sein, einem Annex dazu, einer separaten<br />

Einwilligung zur Datenspeicherung (§ 4 a<br />

BDSG) oder der Arbeitgeber hat in einer<br />

Betriebsvereinbarung die gelegentliche<br />

Netzwerküberwachung geregelt (siehe<br />

Kasten).<br />

Eine Einwilligung muss im Vorfeld,<br />

schriftlich und freiwillig erfolgen. Der Betroffene<br />

muss über den genauen Umfang<br />

der Einwilligung Bescheid wissen. Ändern<br />

sich Umstände, ist die Einwilligung<br />

zu erneuern. Sie gilt immer nur für den<br />

darin jeweils genau formulierten Zweck<br />

der Datenerhebung. Eine Einwilligung<br />

von allen Betroffenen einzuholen, ist oft<br />

kompliziert und zeitaufwendig. Bei einer<br />

E-Mail etwa müssten theoretisch Absender<br />

und Empfänger der Überwachung<br />

zustimmen. Es ist daher immer besser,<br />

wenn das Gesetz eine Speicherung erlaubt.<br />

Je nach konkretem Sachverhalt<br />

gibt es einige Paragrafen, nach denen die<br />

Protokollierung von Unternehmensdaten<br />

zur IT-Sicherheit ohne mühsame Einwilligung<br />

erlaubt ist.<br />

Was erlaubt das Gesetz?<br />

So erlaubt etwa das Telekommunikationsgesetz<br />

in § 100 Absatz 1: „Soweit erforderlich,<br />

darf der Diensteanbieter zum<br />

Erkennen, Eingrenzen oder Beseitigen<br />

von Störungen oder Fehlern an Telekommunikationsanlagen<br />

die Bestandsdaten<br />

und Verkehrsdaten der Teilnehmer und<br />

Nutzer erheben und verwenden.“ Auf<br />

diese gesetzliche Erlaubnis kann sich ein<br />

Einführung von technischen Einrichtungen zur<br />

Überwachung oder Kontrolle der Arbeitnehmer.<br />

Diese dürfen nicht die allgemeinen Persönlichkeitsrechte<br />

des Arbeitnehmers verletzen. Eine<br />

Betriebsvereinbarung sollte die Speicherung,<br />

deren Zweck und auch die Art und Weise sowie<br />

den Umfang der Auswertung von Protokolldateien<br />

eindeutig regeln, etwa Fragen wie: Zu welchem<br />

Zweck wird die Netzwerküberwachung<br />

durchgeführt (etwa zur Fehlerbehebung), wer<br />

hat Zugriff auf die Daten, wie lange werden<br />

diese gespeichert, was sind die Konsequenzen<br />

für Mitarbeiter, die dagegen verstoßen? Ferner<br />

kann darin die private Internetnutzung am Arbeitsplatz<br />

gestattet, verboten und/ oder unter<br />

besondere Voraussetzungen gestellt werden.<br />

stark · schnell · innovativ<br />

www.A dmin-mAgA zin.de


lO gin<br />

Recht<br />

Arbeitgeber jedoch nur beziehen, wenn<br />

er die private Nutzung von Internet und<br />

E-Mail am Arbeitsplatz erlaubt hat und<br />

er damit nach einer Rechtsansicht gleichzeitig<br />

ein Diensteanbieter für seine Angestellten<br />

ist. Aber es spricht vieles dafür,<br />

die private Nutzung von Anlagen den<br />

Arbeitnehmern zu verbieten.<br />

Bestandsdaten sind Daten eines Kunden,<br />

die den Vertrag mit dem Telekommunikationsanbieter<br />

betreffen, wie Name und<br />

Adresse des Vertragskunden. Je nach Art<br />

des Vertrags können weitere Daten dazugehören<br />

wie die E-Mail-Adresse oder<br />

das Geburtsdatum. Diese Daten speichert<br />

jeder Provider zu Abrechnungs- und<br />

Vertragszwecken. Noch sensibler sind<br />

Verkehrsdaten, die im Rahmen der Telekommunikation<br />

erhoben, verarbeitet<br />

oder genutzt werden, also zum Beispiel<br />

wer wann mit wem telefoniert oder mit<br />

welcher E-Mail-Adresse kommuniziert<br />

hat, Nummer oder Kennung der beteiligten<br />

Anschlüsse, Beginn und Ende der<br />

jeweiligen Verbindungen oder die übermittelten<br />

Datenmengen. Zur Speicherung<br />

von Bestands- und Verkehrsdaten nach §<br />

100 TKG entschieden das LG Darmstadt<br />

(Urteil vom 06.06.2007, Az. 10 O 562/ 03)<br />

und das AG Bonn (Urteil vom 5.07.2007,<br />

Az. 9 C 177/ 07): Die Speicherung von<br />

Daten kann bis zu sieben Tage nach dem<br />

Ende der jeweiligen Internetverbindung<br />

erforderlich und zulässig sein, um Störungen<br />

zu beheben. Eine gesetzliche<br />

Grundlage für diese Speicherdauer gibt es<br />

nicht. Oft löschen Provider Verkehrsdaten<br />

sofort oder spätestens nach sieben Tagen<br />

– aufgrund des Urteils des Bundesverfassungsgerichtes<br />

zur Vorratsdatenspeicherung.<br />

Das Gericht hatte die deutschen<br />

Gesetze zur Vorratsdatenspeicherung für<br />

verfassungswidrig erklärt. Die europäischen<br />

Vorgaben sind weiterhin in Kraft,<br />

eine neue gesetzliche Regelung zur Vorratsdatenspeicherung<br />

in Deutschland<br />

steht aus.<br />

Was erlaubt der<br />

Arbeitnehmerdatenschutz?<br />

Während ein Betriebsinhaber sein Netzwerk<br />

vor Fehlfunktionen schützen will,<br />

haben Arbeitnehmer, Kunden oder Dritte<br />

an der Kommunikation Beteiligten, ein<br />

großes Interesse am Schutz ihrer personenbezogenen<br />

Daten.<br />

Das BDSG regelt in § 32 Absatz 1: „Personenbezogene<br />

Daten eines Beschäftigten<br />

dürfen für Zwecke des Beschäftigungsverhältnisses<br />

erhoben, verarbeitet oder<br />

genutzt werden…“ Zwecke des Beschäftigungsverhältnisses<br />

sind der Beginn,<br />

die Durchführung und das Ende eines<br />

Arbeitsverhältnisses. Werden die Daten<br />

also zum Beispiel erhoben, um den Arbeitsvertrag<br />

zu vervollständigen oder den<br />

Lohn zu zahlen, erlaubt das Gesetz dem<br />

Arbeitgeber, die Daten ohne Einwilligung<br />

des Beschäftigten zu erheben. Diese<br />

Rechtsgrundlage hilft aber nicht weiter,<br />

wenn der Arbeitgeber aus rein technischen<br />

Gründen, also zum Beispiel zur<br />

Fehlersuche, die personenbezogenen Daten<br />

wie die private E-Mail-Adresse oder<br />

die Adresse eines flüchtigen Bekannten<br />

des Arbeitnehmers speichert. Dies hat<br />

nichts mit dem speziellen Beschäftigungsverhältnis<br />

zu tun.<br />

Kundendaten speichern?<br />

Daten von Kunden dürfen nach § 28 Absatz<br />

1 Nummer 1 BDSG nur für den jeweiligen<br />

Vertrag gespeichert werden oder<br />

soweit besondere Steuer- oder Archivierungsvorschriften<br />

eine Speicherung vorsehen.<br />

Diese Daten dürfen aufgrund der<br />

engen Zweckbindung jedoch nicht zur<br />

Fehlerbehebung im Netzwerk ausgewertet<br />

oder gar dafür gespeichert werden. Der<br />

Kunde müsste dafür im Vorfeld der Speicherung<br />

seiner Daten zustimmen. Dem<br />

Unternehmer könnte bei der Speicherung<br />

Fragen an den datenschützer<br />

Wir fragten Marco Tessendorf, Geschäftsführer<br />

der procado Consulting, IT- & Medienservice<br />

GmbH in Berlin, der als Datenschutzbeauftragter<br />

für diverse Unternehmen tätig ist.<br />

Darf man als Inhaber eines mittelständischen<br />

Unternehmens den Netzwerkverkehr uneingeschränkt<br />

überwachen?<br />

Tessendorf: Auf gar keinen Fall ist eine uneingeschränkte<br />

Überwachung zulässig. Jedoch muss<br />

er den sicheren Betrieb seiner Infrastruktur<br />

gewährleisten können. § 9 BDSG schreibt dazu<br />

im Detail umzusetzende Kontrollziele vor, dazu<br />

gehört ggf. auch die Überwachung des Netzwerkverkehrs.<br />

Muss ich die Daten anonymisieren? Muss ich<br />

vor einem Mitschnitt den Betriebsrat einbeziehen?<br />

von weiteren Kunden- und Arbeitnehmerdaten<br />

zur Fehlerbeseitigung aber je nach<br />

Sachverhalt gegebenenfalls § 28 Absatz<br />

1 Nummer 2 BDSG helfen. Darin heißt<br />

es: „Das Erheben, Speichern, Verändern<br />

oder Übermitteln personenbezogener<br />

Daten oder ihre Nutzung als Mittel für<br />

die Erfüllung eigener Geschäftszwecke<br />

ist zulässig, ……2. soweit es zur Wahrung<br />

berechtigter Interessen der verantwortlichen<br />

Stelle erforderlich ist und kein<br />

Grund zu der Annahme besteht, dass das<br />

schutzwürdige Interesse des Betroffenen<br />

an dem Ausschluss der Verarbeitung oder<br />

Nutzung überwiegt,….“<br />

Zunächst muss die Datenerhebung erforderlich<br />

sein. Dies ist der Fall, wenn<br />

es keine objektiv zumutbare Alternative<br />

dazu gibt. An zweiter Stelle steht eine<br />

Abwägung zwischen den Interessen des<br />

Unternehmens und denen der von der<br />

Speicherung betroffenen Personen. Ein<br />

zulässiger Netzwerkscan setzt voraus,<br />

dass die Interessen des Unternehmers im<br />

Einzelfall ebenso wichtig sind, wie die<br />

des Betroffenen. Überwiegen schutzwürdige<br />

Interessen des Betroffenen, dessen<br />

Daten gespeichert werden, ist die Maßnahme<br />

nicht erlaubt. Dies könnte der<br />

Fall sein, wenn dessen Recht auf informationelle<br />

Selbstbestimmung etwa durch<br />

eine Profilbildung besonders stark tangiert<br />

wird. Wiegen die Interessen gleich<br />

schwer, wäre die technische Maßnahme<br />

erlaubt. Eine sehr vage Vorschrift zu der<br />

gleichzeitig wenig Rechtsprechung existiert.<br />

Kann der Unternehmer gewährleis-<br />

Tessendorf: Der interne Netzwerkmitschnitt<br />

weist in der Regel nur IP/ MAC-Adressen aus,<br />

keine Benutzernamen. Ohne den zeitlichen Bezug<br />

zur Anmeldung eines Benutzers an einem<br />

Rechner sind die Rohdaten bereits quasi pseudonymisiert.<br />

Das heißt, eine erste Erhebung kann<br />

man auch ohne den Betriebsrat durchführen.<br />

Eine konkrete personenbezogene Auswertung<br />

sollte aber immer mit dem Betriebsrat und dem<br />

Datenschutzbeauftragten abgestimmt werden.<br />

Am besten sollte man die Netzwerküberwachung<br />

in einer Betriebsvereinbarung regeln, vor allem<br />

unter welchen Voraussetzungen eine Netzwerküberwachung<br />

erforderlich ist, wer Zugriff auf<br />

die erhobenen Daten hat, Speicherdauer der<br />

Aufzeichnungen, wie die sichere Aufbewahrung<br />

gewährleistet wird, welche arbeitsrechtlichen<br />

Konsequenzen bei festgestelltem Fehlverhalten<br />

eines Mitarbeiters zu ergreifen sind.<br />

26 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


ten, dass die personenbezogenen Daten bei ihm sicher aufbewahrt<br />

werden, wäre dies ein Pluspunkt für den Unternehmer und könnte<br />

dazu führen, dass die Interessenabwägung zugunsten des Unternehmers<br />

ausfällt. Zur IT-Sicherheit ist jedes Unternehmen ohnehin<br />

verpflichtet, mithin ein guter Grund, das Unternehmen mal wieder<br />

einem IT-Sicherheits-Check-Up zu unterziehen.<br />

IT-Sicherheit gewährleisten<br />

Der Unternehmer muss sich um die IT-Sicherheit in seinem Betrieb<br />

kümmern. Er ist sogar nach dem Gesetz zur Kontrolle und<br />

Transparenz im Unternehmensbereich (KonTraG) ausdrücklich zur<br />

IT-Sicherheit verpflichtet, umgesetzt ist das etwa im Aktiengesetz<br />

in § 91 Absatz 2: „Der Vorstand hat geeignete Maßnahmen zu treffen,<br />

insbesondere ein Überwachungssystem einzurichten, damit<br />

die den Fortbestand der Gesellschaft gefährdenden Entwicklungen<br />

früh erkannt werden.“<br />

Der Vorstand muss dies mit der Sorgfalt eines ordentlichen und<br />

gewissenhaften Geschäftsleiters tun, § 93 Aktiengesetz. Vorstandsmitglieder,<br />

die ihre Pflichten verletzen, sind der Gesellschaft fünf<br />

Jahre lang zum Ersatz des daraus entstehenden Schadens verpflichtet,<br />

§ 93 Absatz 2 Aktiengesetz. Ein Beispiel: Der Vorstand<br />

unterschreibt einen Fernwartungsvertrag ohne die IT-Sicherheit<br />

zu gewährleisten und Dritte greifen daraufhin illegal auf Daten<br />

zu. Ist streitig, ob der Vorstand die Sorgfalt eines ordentlichen<br />

und gewissenhaften Geschäftsleiters angewandt hat, trifft ihn die<br />

Beweislast, § 93 Absatz 2 Aktiengesetz. Die Vorschrift gilt entsprechend<br />

für andere Gesellschaftsformen wie GmbHs, also nicht nur<br />

für Aktiengesellschaften.<br />

Dies bedeutet: Jedes Unternehmen muss sich um die IT-Sicherheit<br />

zwingend kümmern. Sie ist Prüfungsinhalt der Wirtschaftsprüfer.<br />

Das Datenschutzrecht regelt in § 7 BDSG: „Fügt eine verantwortliche<br />

Stelle dem Betroffenen durch eine nach diesem Gesetz oder<br />

nach anderen Vorschriften über den Datenschutz unzulässige oder<br />

unrichtige Erhebung, Verarbeitung oder Nutzung seiner personenbezogenen<br />

Daten einen Schaden zu, ist sie oder ihr Träger dem<br />

Betroffenen zum Schadensersatz verpflichtet. Die Ersatzpflicht<br />

entfällt, soweit die verantwortliche Stelle die nach den Umständen<br />

des Falles gebotene Sorgfalt beachtet hat.“ Die Haftung scheidet<br />

nur aus, wenn das Unternehmen die Integrität und Vertraulichkeit<br />

der gespeicherten personenbezogenen Daten gewährleistet und<br />

dies belegen kann, etwa durch eine Zertifizierung oder durch Dokumente<br />

des Datenschutzbeauftragten.<br />

In § 9 BDSG heißt es zur IT-Sicherheit: „Öffentliche und nicht-öffentliche<br />

Stellen, die selbst oder im Auftrag personenbezogene Daten<br />

erheben, verarbeiten oder nutzen, haben die technischen und<br />

organisatorischen Maßnahmen zu treffen, die erforderlich sind,<br />

um die Ausführung der Vorschriften dieses Gesetzes, insbesondere<br />

die in der Anlage zu diesem Gesetz genannten Anforderungen, zu<br />

gewährleisten.“<br />

Was ist zu kontrollieren?<br />

Nach der Anlage zu § 9 BDSG sind insbesondere folgende Maßnahmen<br />

zu treffen, um die IT-Sicherheit zu gewährleisten:<br />

n Zutrittskontrolle: Unbefugte Personen dürfen keinen Zutritt zu<br />

den Datenverarbeitungsanlagen haben.<br />

www.A dmin-mAgA zin.de<br />

Virtuelle Server<br />

Top-<strong>Performance</strong> zum Tiefpreis!<br />

• bis zu 3 CPU-Kerne<br />

• bis zu 8 GB RAM<br />

• bis zu 95 GB Festplatte<br />

• RAID-10-Datensicherheit<br />

• 5.000 GB Traffic inklusive<br />

• SSL-Zertifikat inklusive<br />

• Root-Zugriff per SSH<br />

• 100 % Backup-Speicher<br />

• 99,9 % garantierte Verfügbarkeit<br />

• 30 Tage Geld-zurück-Garantie<br />

• auch als Managed Server erhältlich<br />

• viele 64-Bit-Betriebssysteme nach Wahl<br />

6 Monate<br />

kostenlos<br />

danach ab 12,99 €*<br />

Jetzt kostenlos informieren unter:<br />

080 0 638 2587<br />

www.netclusive.de/linux<br />

* Aktion „6 Monate kostenlos“ gilt bis 31.10.2011. Nach 6 Monaten regulärer monatlicher Grundpreis:<br />

VPS L 12,99 €, VPS XL 16,99 €, VPS XXL 29,99 €. Die Mindestvertragslaufzeit beträgt wahlweise 12 Monate<br />

(Aktion 6 Monate kostenlos entfällt) oder 24 Monate (6 Monate kostenlos). Abrechnung vierteljährlich. Einmalige<br />

Einrichtungsgebühr 9,99 €. Alle Preise inkl. MwSt. Preisänderungen und Irrtümer vorbehalten.


lO gin<br />

Recht<br />

n Zugangskontrolle: Unbefugte dürfen<br />

die Datenverarbeitungssysteme nicht<br />

benutzen.<br />

n Zugriffskontrolle: Es müssen Zugriffsberechtigungen<br />

für Ordner und Daten<br />

für die berechtigten Nutzer eingerichtet<br />

und unbefugter Zugriff unterbunden<br />

werden.<br />

n Weitergabekontrolle: Personenbezogene<br />

Daten dürfen bei der elektronischen<br />

Übertragung oder während ihres<br />

Transports oder ihrer Speicherung<br />

auf Datenträger nicht unbefugt gelesen,<br />

kopiert, verändert oder entfernt<br />

werden können.<br />

n Eingabekontrolle: Es soll jederzeit<br />

festgestellt werden können, wer wann<br />

welche Daten eingegeben, verändert<br />

oder gelöscht hat.<br />

n Auftragskontrolle: Personenbezogene<br />

Daten dürfen nur entsprechend den<br />

Weisungen des Auftraggebers verarbeitet<br />

werden.<br />

n Verfügbarkeitskontrolle: Die gespeicherten<br />

personenbezogenen Daten<br />

müssen jederzeit abrufbar und gegen<br />

Verlust geschützt sein.<br />

n Verarbeitungskontrolle: Daten, die zu<br />

unterschiedlichen Zwecken erhoben<br />

wurden, dürfen nicht zusammen verarbeitet<br />

werden.<br />

Was ist beim Auswerten<br />

erlaubt?<br />

Darf das Unternehmen die Daten wegen<br />

einer Einwilligung oder eines Gesetzes<br />

speichern, so darf es diese entsprechend<br />

dem darin vorher festgelegten<br />

Zweck auch auswerten. Im Gesetz heißt<br />

es: „Personenbezogene Daten, die ausschließlich<br />

zu Zwecken der Datenschutzkontrolle,<br />

der Datensicherung oder zur<br />

Sicherstellung eines ordnungsgemäßen<br />

Betriebes einer Datenverarbeitungsanlage<br />

gespeichert werden, dürfen nur für diese<br />

Zwecke verwendet werden“ (§31 BDSG).<br />

Das soll etwa verhindern, dass die Daten<br />

zur Leistungs- oder Verhaltenskontrolle<br />

der Mitarbeiter ohne deren vorherige Einwilligung<br />

verwendet werden.<br />

Ganz entscheidend ist also immer der bei<br />

der Erhebung festgelegte Zweck der Speicherung.<br />

Nach § 100 Urheberrechtsgesetz<br />

haftet der Inhaber eines Unternehmens<br />

auch für Verstöße gegen das Urheberrechtsgesetz,<br />

die seine Arbeitnehmer<br />

im Betrieb begangen haben. Es drohen<br />

Abmahnungen, Gerichtsverfahren,<br />

schlimmstenfalls die Beschlagnahmung<br />

der Rechner. In § 32 BDSG heißt es: "Zur<br />

Aufdeckung von Straftaten dürfen personenbezogene<br />

Daten eines Beschäftigten<br />

nur dann erhoben, verarbeitet oder genutzt<br />

werden, wenn zu dokumentierende<br />

tatsächliche Anhaltspunkte den Verdacht<br />

begründen, dass der Betroffene im Beschäftigungsverhältnis<br />

eine Straftat begangen<br />

hat, die Erhebung, Verarbeitung<br />

oder Nutzung zur Aufdeckung erforderlich<br />

ist und das schutzwürdige Interesse<br />

des Beschäftigten an dem Ausschluss der<br />

Erhebung, Verarbeitung oder Nutzung<br />

nicht überwiegt, insbesondere Art und<br />

Ausmaß im Hinblick auf den Anlass nicht<br />

unverhältnismäßig sind."<br />

Die Datenschutzvorschriften sind sehr<br />

komplex. Ein betrieblicher oder externer<br />

Datenschutzbeauftragter sollte bei der<br />

Umsetzung helfen. Den benötigt jedes<br />

Unternehmen, in dem mehr als neun Personen<br />

ständig mit personenbezogenen<br />

Daten befasst sind. § 5 BDSG verlangt,<br />

dass bei der Datenverarbeitung beschäftigte<br />

Personen bei der Aufnahme ihrer<br />

Tätigkeit auf das Datengeheimnis zu verpflichten<br />

sind. Das Datengeheimnis besteht<br />

nach Beendigung der Tätigkeit fort.<br />

Die Auswertung sensibler Daten sollte<br />

möglichst nur im Vier-Augen-Prinzip erfolgen<br />

und mit anonymen Auswertungsmethoden.<br />

Ausblick: Neues Gesetz<br />

geplant<br />

Im August 2010 hat die Bundesregierung<br />

einen vieldiskutierten Gesetzesentwurf<br />

zum „Beschäftigtendatenschutz“ auf<br />

den Weg gebracht. Danach soll das präventive<br />

Scannen von Daten ohne konkreten<br />

Tatverdacht per Gesetz erlaubt<br />

sein. Der Entwurf plant bei verbotener<br />

privater Nutzung, dem Arbeitgeber zu<br />

erlauben, Verkehrsdaten zu speichern,<br />

um Mitarbeiter zu kontrollieren, Vertragsverletzungen<br />

oder Straftaten präventiv<br />

zu verhindern oder aufzudecken. Das<br />

betrifft zum Teil Inhalte der Kommunikation,<br />

sofern keine schutzbedürftigen<br />

Interessen des Beschäftigten entgegenstehen,<br />

es sich etwa um private Inhalte handelt<br />

oder Gespräche mit dem Betriebsrat.<br />

Im Mai 2011 forderten die Justizminister<br />

der Länder und Sachverständige deutliche<br />

Verbesserungen. Unter anderem<br />

müssten Arbeitgeber die Beschäftigten<br />

verpflichtend informieren, welche Daten<br />

erhoben und gespeichert werden. Eine<br />

anlasslose Überwachung müsse dagegen<br />

ausgeschlossen werden.<br />

Der Gesetzesentwurf wird zurzeit überarbeitet.<br />

Würde das Gesetz in dieser Form<br />

in Kraft treten, wäre dies ein Freifahrtschein<br />

für die Überwachung am Arbeitsplatz<br />

und in jedem Fall kein Gesetz zum<br />

Schutz der Arbeitnehmer. Der Entwurf<br />

würde vielmehr die Rechte von Arbeitgebern<br />

verbessern. Er hebelt nämlich<br />

einige der obersten Grundsätze des Datenschutzes<br />

aus, darunter beispielsweise<br />

die Zweckgebundenheit der gespeicherten<br />

Daten.<br />

Als Fazit ergibt sich: Derzeit darf der<br />

Arbeitgeber den Netzwerkverkehr im<br />

Unternehmen nicht uneingeschränkt<br />

überwachen. Trotzdem muss er jedoch<br />

dafür sorgen, dass die Sicherheit seiner<br />

IT gewährleistet ist. Für die Fehlerbehebung<br />

im Netzwerk darf er kurzzeitig den<br />

Netzwerkverkehr mitschneiden. Die dabei<br />

erhobenen personenbezogenen Daten<br />

muss er jedoch nach der Fehlerbehebung<br />

sofort wieder löschen und darf sie insbesondere<br />

in keinem Fall für andere Zwecke<br />

nutzen. (jcb)<br />

n<br />

Der Autor<br />

Die Autorin ist Rechtsanwältin<br />

& Fachjournalistin<br />

für IT-Recht in Berlin. Sie<br />

veröffentlicht seit 1997 in<br />

zahlreichen anderen Medien<br />

zu Fragen des IT-Rechtes.<br />

Darüber hinaus referiert sie regelmäßig zu<br />

aktuellen Fragen des Internetrechtes, gibt<br />

Workshops zum Softwarelizenzrecht oder zur<br />

IT-Sicherheit und unterrichtet als Lehrbeauftragte<br />

für IT-Recht an der Beuth Hochschule für<br />

Technik, Berlin. Ihre Beratungsschwerpunkte<br />

sind das Softwarelizenz- und das Internetrecht,<br />

der Check von Webshops und Webseiten, das<br />

Urheber-, Vertrags- und Markenrecht sowie das<br />

Online-Marketing und Datenschutzfragen als<br />

auch internationales Privat- und Europarecht.<br />

Sie ist Mitglied in der Deutschen Vereinigung für<br />

Gewerblichen Rechtsschutz und Urheberrecht<br />

e.V. (GRUR), der Deutschen Gesellschaft für<br />

Recht und Informatik e.V. (DRGI) sowie im Deutschen<br />

Fachjournalistenverband.<br />

28 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Bla Bla Bla gibt´s bei uns nicht:<br />

Business - Telefonie der outbox AG.<br />

Telefonie ist die Grundlage Ihres Unternehmens.<br />

Ohne sie läuft nichts!<br />

Deshalb konzentriert sich die outbox AG auf das<br />

Wichtigste: Ein funktionierendes Telefonnetz,<br />

praxiserprobte Produkt - Module und einen technisch<br />

versierten Kundensupport.<br />

Überzeugen Sie sich jetzt von unserem<br />

Know - How aus mehr als sieben<br />

Jahren Telefonnetzbetrieb –<br />

Exklusiv für Geschäftskunden.<br />

Auch auf<br />

SIP - Basis und<br />

für Reseller<br />

Infos und Beratung: 0800 / 66 474 640<br />

www.outbox.de/admin


n etzwerK<br />

bonding<br />

© Andrey Khrobostov, 123RF<br />

Netzwerk-Bonding mit Linux<br />

Gebündelt<br />

Für hochverfügbare installationen ist eine redundante netzwerkanbindung<br />

unverzichtbar. dieser Artikel führt die entsprechende Konfiguration<br />

eines Linux-stacks vor. Hannes Kasparick<br />

Viele Anwender und Administratoren<br />

wünschen sich eine möglichst hohe Verfügbarkeit<br />

wichtiger Anwendungen und<br />

Dienste. Neben der Ausfallsicherheit<br />

von Serverhardware und dem möglichen<br />

Clustering von Serverdiensten spielt das<br />

Netzwerk eine elementare Rolle, damit<br />

Anwender die gewünschten Dienste nutzen<br />

können.<br />

Dieser Artikel zeigt Linux-Administratoren<br />

einige Möglichkeiten auf, wie sie mit<br />

möglichst wenig Komplexität ein möglichst<br />

hochverfügbares Netzwerk im Unternehmen<br />

aufbauen können. Dabei geht<br />

es von den Netzwerkkarten der Server,<br />

über die Switches und Router bis hin<br />

zur Firewall ohne die Verwendung von<br />

(Rapid) Spanning-Tree oder ähnlichen<br />

Protokollen.<br />

Listing 1: bonding-device<br />

01 alias bond0 bonding<br />

02 options bonding mode=1 miimon=100<br />

Listing 2: netzwerkkonfiguration<br />

01 auto lo<br />

02 iface lo inet loopback<br />

03<br />

04 auto bond0<br />

05 iface bond0 inet static<br />

06 address 192.168.60.10<br />

07 netmask 255.255.255.0<br />

08 post‐up ifenslave bond0 eth0 eth2<br />

09 gateway 192.168.60.254<br />

Fällt ein Stockwerk-Switch aus, sind im<br />

besten Fall nur wenige Anwender betroffen,<br />

trifft der Ausfall jedoch einen<br />

zentralen Switch im Serverraum, steht<br />

vielleicht gleich bei vielen Nutzern, die<br />

Dienste auf Servern nutzen, die Arbeit<br />

still. Bei Servern mit nur einer aktiven<br />

Netzwerkkarte führt ein Ausfall dieser<br />

zum Totalausfall des Servers aus Sicht<br />

der Anwender. Der Ausfall eines zentralen<br />

Routers würde weite Teile der Firma<br />

lahmlegen, während ein Ausfall der Firewall<br />

zumindest noch die Arbeit mit der<br />

internen IT-Infrastruktur ermöglicht.<br />

Die Anforderungen in Unternehmen sind<br />

immer individuell zu bewerten, sodass<br />

dieser Artikel keine allgemeingültige<br />

Lösung für alle Netzwerke geben kann.<br />

Abbildung 1 zeigt daher schematisch,<br />

wie der Netzwerkadministrator sein<br />

Netzwerk vom Server bis zur Firewall<br />

redundant aufbauen kann. Soll auch der<br />

Ausfall des Internetproviders berücksichtigt<br />

werden, hilft ein zweiter Internetanschluss<br />

zumindest für ausgehende<br />

Verbindungen auf einfache Weise weiter.<br />

Für eingehende Verbindungen ist mehr<br />

Planung nötig, da sich IP-Adressen bei<br />

einem Provider-Failover ändern.<br />

In welcher Reihenfolge das Netzwerk redundant<br />

aufgebaut wird, ist Geschmackssache.<br />

Dieser Artikel beschreibt den Weg<br />

von unten nach oben durch den Netzwerk-Stack<br />

(Abbildung 1).<br />

Administratoren aktueller Linux-Distributionen<br />

haben es leicht, den Server über<br />

mehrere Netzwerkverbindungen redundant<br />

an einen oder sinnvollerweise zwei<br />

Switches anzubinden. Das Zauberwort<br />

heißt Bonding, und die Technik funktioniert<br />

seit vielen Jahren problemlos und<br />

zuverlässig. Der Autor verwendet Ubuntu<br />

10.04 in der 64-Bit-Version, für andere<br />

Distributionen muss man die Befehle anpassen.<br />

Falls nicht bereits installiert, befördert<br />

»aptitude install ifenslave ethtool« die<br />

benötigten Pakete auf die Festplatte. Nun<br />

gilt es, die »/etc/modprobe.d/aliases.<br />

conf« anzupassen oder falls noch nicht<br />

vorhanden zu erstellen. Listing 1 zeigt<br />

eine Active-Standby-Konfiguration, die<br />

alle 100 Millisekunden prüft, ob die Verbindung<br />

zum Switch funktioniert. Der<br />

Mode-Parameter gibt an, auf welche Art<br />

Netzwerkkarten miteinander zusammenarbeiten<br />

sollen (lastverteilt und redundant<br />

oder nur redundant). Unter [1] auf<br />

der Webseite der Linuxfoundation befindet<br />

sich eine detaillierte Beschreibung<br />

der verschiedenen Modi. Die Einstellung<br />

»mode=1« hat sich bei Tests des Autors<br />

als die am einfachsten zu konfigurierende<br />

und unempfindlichste Einstellung erwiesen.<br />

Die Switches müssen dafür keinerlei<br />

besondere Voraussetzungen erfüllen,<br />

im Gegensatz zu »mode=4«, bei dem<br />

der Switch 802.3ad (LACP) unterstützen<br />

muss.<br />

Im letzten Konfigurationsschritt ist die<br />

Konfigurationsdatei »/etc/network/interfaces«<br />

nach dem Vorbild von Listing 2<br />

anzupassen. Dort werden eine Onboard-<br />

Netzwerkkarte (»eth0«) und eine Zusatznetzwerkkarte<br />

(»eth2«) zum logischen<br />

Interface »bond0« zusammengefasst. Ein<br />

Neustart des Netzwerks mittels »/etc/<br />

init.d/networking restart« aktiviert die<br />

Einstellungen. Wer keine Remotekonsole<br />

zu seinem Server hat, sollte vorher die<br />

Konfiguration sorgfältig prüfen, da bei<br />

30 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


onding<br />

n etzwerK<br />

Fehlkonfigurationen die Netzwerkverbindung<br />

abreißt.<br />

Mittels »ifconfig« lässt sich anschließend<br />

prüfen, ob das Interface »bond0« aktiv<br />

ist. Unter »/sys/class/net/bond0/bonding/«<br />

finden sich die entsprechenden<br />

Informationen des Kernels, wie zum Beispiel<br />

die gerade aktive Netzwerkkarte,<br />

die in »active_slave« steht. Man sollte<br />

die erwartete Fehlertoleranz auch einmal<br />

physisch testen, etwa indem man<br />

den Port des Switches deaktiviert oder<br />

das entsprechende Netzwerkkabel zieht.<br />

Funktioniert alles ordnungsgemäß, geht<br />

maximal ein Ping-Paket beim Failover<br />

verloren (siehe Abbildung 2).<br />

Wer bereits Nagios im Einsatz hat, dem<br />

sei das Plugin „check_linux_bonding“<br />

von Trond Hasle Amundsen von der<br />

Universität Oslo empfohlen [2], da ein<br />

einfacher Ping-Check den Ausfall eines<br />

Netzwerklinks nicht mehr feststellen<br />

kann. Das Plugin zeigt im OK-Zustand<br />

den aktiven Link mit einem Ausrufezeichen<br />

an (siehe Abbildung 3) und geht<br />

beim Ausfall eines Links in den Zustand<br />

„Warning“ (siehe Abbildung 4).<br />

Den Wunsch, auch Failovers zu überwachen,<br />

um eventuelle Probleme im Netzwerk<br />

frühzeitig zu erkennen, konnte der<br />

Autor leider nicht erfüllen. Dies ist nicht<br />

möglich, da es im Kernel selbst keine<br />

Informationen über einen vergangenen<br />

Failover gibt und eine Speicherung des<br />

Status seitens des Plugins zu einem<br />

unlösbaren Problem führen würde: Ein<br />

Hin- und Rück-Failover zwischen zwei<br />

Prüfungen des Plugins ist nicht unterscheidbar.<br />

Switches<br />

Nun ist einem Serveradministrator schnell<br />

klar, dass es nicht unbedingt sinnvoll ist,<br />

beide Netzwerkkabel an einen Switch zu<br />

Abbildung 2: Weitgehend ausfallsicher: Nur ein Paket ging verloren.<br />

Abbildung 1: Aufbau des redundant ausgelegten Linux-Netzwerks durch alle Schichten hindurch.<br />

Ziel ist es, (Rapid) Spanning Tree und<br />

andere Implementierungen zur Vermeidung<br />

redundanter Netzwerkpfade nicht<br />

zu verwenden, da dies in vielen Fällen<br />

eher Probleme bereitet als löst. Manche<br />

Administratoren ziehen sogar ein manuelles<br />

Failover (von Hand umstecken) vor.<br />

Das ist an sich nichts Schlechtes und in<br />

vielen Fällen vollkommen ausreichend,<br />

es gibt aber viele Situationen, in denen<br />

dies nicht möglich ist beziehungssweise<br />

zu langen Ausfallszeiten führen würde,<br />

weil zum Beispiel das Rechenzentrum<br />

weit entfernt ist.<br />

Stacking-Funktionen bieten die für den<br />

Unternehmenseinsatz gebauten Switches<br />

aller großen Hersteller, sodass sich die<br />

in diesem Artikel verwendeten Cisco-<br />

Techniken auch auf andere Hersteller<br />

übertragen lassen. Auf OSI Layer 2 kommen<br />

Cisco 2960-S Switches mit Flexstack-<br />

Technologie zum Einsatz. Der Flexstack<br />

wird über ein zusätzliches Modul (siehe<br />

Abbildung 5) auf der Rückseite der Switstecken,<br />

da bei einem Ausfall des Switch<br />

der Server trotzdem offline wäre. Der<br />

Netzwerkadministrator muss nun einen<br />

zweiten Switch bereitstellen und dafür<br />

sorgen, dass dabei keine Ethernet-Loops<br />

entstehen und so das Netzwerk lahmlegen.<br />

Eine sehr einfache und effektive Lösung<br />

für dieses Problem ist das sogenannte<br />

Stacking von Switches. Dabei verhalten<br />

sich zwei oder mehr Switches wie ein einziger.<br />

Der (zweifache) Uplink von diesem<br />

Stack zu weiteren<br />

Switch-Stacks oder<br />

Router-Stacks wird<br />

wiederum mittels<br />

Bonding auf<br />

Switch-Ebene realisiert<br />

(je nach<br />

Hersteller kann<br />

dies zum Beispiel<br />

Link Aggregation,<br />

Etherchannel oder<br />

Trunk heißen).<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

31


n etzwerK<br />

bonding<br />

Abbildung 3: Zurzeit ist beim Bonding-Device alles in Ordnung.<br />

Abbildung 4: Nagios meldet: Ein Fehler ist aufgetreten.<br />

Abbildung 5: Die Cisco-Lösung für die Verbindung zweier Switches ist eine proprietäre Verbindung.<br />

ches mit zwei Cisco-proprietären Kabeln<br />

realisiert. Die Konfiguration ist dabei<br />

denkbar einfach und erfreut den Netzwerkadministrator:<br />

anstecken, ein paar<br />

Minuten warten, fertig.<br />

Die automatische Konfiguration lässt sich<br />

mit »show switch« auf der Konsole des<br />

Switch mitverfolgen. Der Status ändert<br />

sich von »waiting« auf »initializing« zu<br />

»ready« und damit zum einsatzbereiten<br />

Status. Einer der beiden Switches ist Master<br />

des Stacks und sowohl durch ein LED<br />

am Switch selbst als auch auf der Konsole<br />

zu erkennen. Natürlich ist es auch<br />

beim Switch-Stack empfehlenswert, den<br />

Status des Stacks zu überwachen [3].<br />

Dies ist beispielsweise mit dem Skript<br />

»check_snmp_cisco_stack.pl« möglich,<br />

das zwar für den 3750 gedacht ist, aber<br />

auch zum 2960 kompatibel ist.<br />

Routing<br />

Im nächsten Schritt wird der Stack von<br />

zwei Switches mit einem beziehungsweise<br />

zwei Routern / Layer-3-Switches<br />

verbunden. Der Router ist wiederum<br />

als Stack ausgeführt (zum Beispiel zwei<br />

Cisco 3750). Nähme der Netzwerkadministrator<br />

einfach zwei Kabel und verbände<br />

den Switch-Stack mit dem Router-<br />

Stack, würde das zu einem Ethernet-Loop<br />

führen und das Netzwerk massiv beeinträchtigen.<br />

Daher wird auch zwischen<br />

Switch- und Router-Stack mit Bonding<br />

gearbeitet, bei Cisco also Etherchannel.<br />

Um den Ausfall eines Routers und eines<br />

Switches gleichzeitig verarbeiten zu<br />

können, müssen vier Kabel kreuzweise<br />

zwischen Switch- und Routerstack verwendet<br />

werden.<br />

Firewall<br />

Den letzten Außenposten eines Unternehmensnetzwerks<br />

bildet die Firewall.<br />

Auch sie kann einzeln oder im Verbund<br />

verwendet werden, allerdings gibt es hier<br />

keine Out-of-the-Box Lösungen, die nach<br />

wenigen Minuten funktionieren. Das liegt<br />

weniger an der weit höheren Komplexität<br />

von Firewalls, die wesentlich mehr Funktionen<br />

abdecken als Switches. Eine einzelne<br />

Linux-Firewall mit IP-Tables / Netfilter<br />

kann wie zu Beginn des Artikels mit<br />

einem Server und ausreichender Anzahl<br />

Netzwerkkarten leicht realisiert werden.<br />

Allerdings ist in diesem Fall die Firewall-<br />

Hardware und damit der Firewall-Dienst<br />

nicht redundant.<br />

Eine einfache Lösung für höhere Verfügbarkeit<br />

wäre ein zweiter Standby-Server,<br />

der über Remotemanagement (zum<br />

Beispiel iDRAC, iLO, IMM) in Betrieb<br />

genommen werden kann. Der Nachteil<br />

einer spürbaren Downtime liegt bei dieser<br />

Lösung auf der Hand. Diese einfache<br />

Lösung bietet allerdings den Vorteil, dass<br />

man sich nicht um die komplexe Konfiguration<br />

eines ausgewachsenen Clusters<br />

kümmern muss.<br />

Alternativ gibt es in der Open-Source-<br />

Welt mit Carp vom OpenBSD-Projekt<br />

seit Jahren eine Lösung, die in Kombination<br />

mit »pfsync« eine hochverfügbare<br />

Firewall realisiert (siehe [4]). Carp<br />

wurde auch auf Linux portiert, sodass<br />

nicht zwingend OpenBSD zum Einsatz<br />

kommen muss. Anbieter hochwertiger<br />

kommerzieller Firewalls bieten derartige<br />

Hochverfügbarkeitsfunktionen natürlich<br />

ebenfalls.<br />

An dieser Stelle stellt sich fast zwangsläufig<br />

die Frage nach einer redundanten<br />

Internetanbindung, da sich ein einzelnes<br />

„Internetkabel“ nicht an zwei Firewalls<br />

anschließen lässt, es sei denn, es kommt<br />

wieder ein Switch vor den Firewalls zum<br />

Einsatz. Der Provider müsste also zwei<br />

Kabel zum Kunden bereitstellen, die im<br />

Idealfall über verschiedene Wege zum<br />

Peering Point des Providers führen.<br />

Fazit<br />

Hohe Verfügbarkeit im lokalen Netzwerk<br />

muss nicht aufwendig oder kompliziert<br />

sein. Für hochverfügbares Internet muss<br />

der Provider entsprechende Angebote<br />

haben. Open-Source-Betriebssysteme<br />

bringen alle benötigten Features für den<br />

LAN- und WAN-Bereich mit. Wer bisher<br />

Spanning Tree & Co im LAN gemieden<br />

hat, der kann mit Stacks sehr einfach<br />

die Verfügbarkeit erhöhen, ohne Gefahr<br />

zu laufen, durch Fehlkonfigurationen<br />

letztendlich die Verfügbarkeit sogar zu<br />

verringern. (ofr)<br />

n<br />

Infos<br />

[1] Bonding-Howto: [http://www.<br />

linuxfoundation. org/collaborate/<br />

workgroups/ networking/bonding]<br />

[2] Linux Bonded Network Monitoring with<br />

Nagios: [http:// folk.uio.no/trondham/<br />

software/ check_linux_bonding. html]<br />

[3] Status-Check für Cisco 3750: [http://<br />

exchange. nagios. org/directory/<br />

Plugins/Hardware/ Network-Gear/Cisco/<br />

Check-cisco-3750-stack-status/details]<br />

[4] Stephan A. Rickauer, HA-fähige Firewall<br />

mit OpenBSD/ PF, Linux-<strong>Magazin</strong> 12/ 2005,<br />

[http://www. linux-magazin.de/Heft-Abo/<br />

Ausgaben/ 2005/ 12/Wehrhaft-abtauchen]<br />

32 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


1&1 DUAL HOSTING<br />

DOPPELT SICHER!<br />

DOPPELT GUT...<br />

✓<br />

&<br />

1.000 Mitarbeiter!<br />

Maximal sicher:<br />

Paralleles Hosting Ihrer Website<br />

in zwei Hightech-Rechenzentren<br />

an verschiedenen Orten!<br />

✓ Superschnell:<br />

210 GBit/s Anbindung!<br />

✓ Zukunftssicher:<br />

1&1 DUAL HOSTING<br />

VIELE PAKETE JETZT SCHON AB<br />

0,–€/Monat*<br />

Dual Hosting gibt´s nur von 1&1! Kein anderer bietet Ihnen georedundante<br />

Sicherheit und maximale <strong>Performance</strong> für Ihre Projekte.<br />

1&1 DUAL<br />

PERFECT<br />

6 Domains aus .de, .com, .net, .org, .at, .eu<br />

5 GB Webspace<br />

UNLIMITED T r a f fi c<br />

UNLIMITED Click & Build Apps uvm.<br />

0,–<br />

€<br />

In den ersten 3 Monaten,<br />

danach 9,99 €/Monat.*<br />

.DE, .EU, .COM, .NET, .ORG, .AT<br />

0, OHNE EINRICHTUNGSGEBÜHR! 29*<br />

ab<br />

€/Monat<br />

im ersten Jahr<br />

Weitere leistungsstarke<br />

1&1 Dual Hosting-Pakete<br />

und tolle Sparangebote<br />

unter www.1und1.info Ausgabe 08/11<br />

0 26 02 / 96 91<br />

0800 / 100 668 www.1und1.info<br />

&1 * Dual Perfect 1 3 Monate für 0,– €/Monat, danach 9,99 €/Monat. Einrichtungsgebühr 9,60 €. Domains im ersten Jahr .de, .eu 0,29 €/Monat, .com, .net, .org, .at 0,99 €/Monat, danach .de<br />

0,49 €/Monat, .eu , .com, .net, .org 1,49 €/Monat, .at 1,99 €/Monat. Einrichtungsgebühr entfällt. 12 Monate Mindestvertragslaufzeit. Preise inkl. MwSt.


n e Tzwerk<br />

wireshark<br />

© Reinhard Eisele<br />

Netzwerkanalyse mit Wireshark<br />

Hai-teres<br />

Paketeraten<br />

ein Administrator gewinnt nur dann nützliche erkenntnisse aus der<br />

netzwerkanalyse, wenn er die grundlegenden Verfahren und Protokolle<br />

beherrscht. die eben erschienene neue wireshark-Version 1.6 kennt unter<br />

anderem rund 30 neue Protokolle. Thomas drilling<br />

wahlweise an der Standardausgabe dar<br />

oder speichert sie in Dateien, die der Admin<br />

zum Auswerten heranziehen kann.<br />

Tcpdump gefällt vor allem wegen seines<br />

gut bestückten Filter-Sortiments. Diese<br />

Capture-Filter basieren auf der Libpcap,<br />

einer C/ C++-Bibliothek, die den Zugriff<br />

auf die Link-Layer-Ebene von Netzwerkinterfaces<br />

erlaubt. Der Admin steuert<br />

das Verhalten von Tcpdump vollständig<br />

von der Kommandozeile aus durch das<br />

Übergeben von Parametern, dazu gehört<br />

auch das Übergeben der zu verwendenden<br />

Filter.<br />

Etheral und Wireshark<br />

Dass Linux eine Reihe brauchbarer<br />

Tools zur Netzwerkanalyse mitbringt,<br />

ist kein Geheimnis. Viele davon liefern<br />

hervorragende Ergebnisse, die durchaus<br />

mit denen kommerzieller Werkzeuge<br />

mithalten können. Trotzdem schrecken<br />

Windows-Administratoren gelegentlich<br />

vor dem Einsatz von Open-Source-Werkzeugen<br />

zurück, falls diese etwa keine<br />

grafische Benutzeroberfläche bieten. Im<br />

Wesentlichen tut eine Netzwerkanalyse-<br />

Software nichts anderes, als den gesamten<br />

Datenverkehr auf dem angegebenen<br />

Netzwerkinterface aufzuzeichnen, wozu<br />

die Software sämtliche Datenpakete kontinuierlich<br />

abfängt und auf der Festplatte<br />

speichert.<br />

In einem zweiten Schritt dekodiert die<br />

Software die Daten und zeigt sie am Bildschirm<br />

an. Im Unix-Umfeld ist beispiels-<br />

weise das freie Tcpdump ein Klassiker<br />

und dessen Einsatz unter Fachleuten<br />

weitverbreitet. Allerdings besitzt es nur<br />

eine Kommando-Schnittstelle. Tcpdump<br />

gibt es für nahezu alle Unix-Derivate wie<br />

AIX, BSD, Solaris und ist beispielsweise<br />

bei Linux fast immer in den Standardpaketquellen<br />

enthalten und oft auch per<br />

Default installiert. Für Windows gibt es<br />

übrigens die Portierung Windump, die<br />

auf Winpcap basiert. Tcpdump braucht<br />

direkten Zugriff auf die Hardware und<br />

läuft daher in der Regel mit Root-Rechten,<br />

lediglich bei Mac OS X und Solaris<br />

benötigt der Benutzer nur die für die<br />

Gerätedatei der Netzwerkkarte erforderlichen<br />

Rechte.<br />

Tcpdump liest per Default alle Daten, die<br />

das spezifizierte Netzwerkinterface über<br />

das Netzwerk erreichen, und stellt sie<br />

Da die CLI-Steuerung nicht jedem behagt,<br />

gibt es schon relativ lange auch<br />

grafische Lösungen, die ebenfalls auf<br />

der Libpcap-Bibliothek aufsetzen, wie<br />

etwa das seit dem Jahr 2006 verfügbare<br />

Wireshark, das früher Ethereal hieß und<br />

unter diesem Namen vielen Admins bekannt<br />

sein dürfte. Die Umbenennung mit<br />

Veröffentlichung der Wireshark-Version<br />

0.99.1 wurde notwendig, weil der Ethereal-Entwickler<br />

Gerald Combs seinen Arbeitgeber<br />

Ethereal Software verließ. Beim<br />

neuen Arbeitgeber CACE Technologies<br />

startete er ein Nachfolge-Projekt unter<br />

dem Namen Wireshark, mit dessen Erfolg<br />

Ethereal Software die Weiterentwicklung<br />

des Vorgängers einstellte.<br />

Heute wird Wireshark maßgeblich von<br />

der Wireshark-Community entwickelt.<br />

Ethereal und Wireshark sind echte Open-<br />

Source-Projekte, wenngleich sich Ethereal<br />

34 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


wireshark<br />

n e Tzwerk<br />

an Netzwerk-Analyse-Produkten kommerzieller<br />

Hersteller orientiert. Meilensteine<br />

der Wireshark-Entwicklung sind<br />

die seit März 2008 verfügbare Version<br />

1.0 sowie die von einigen Bugs befreite<br />

Version 1.4 vom Sommer 2008, die neben<br />

experimenteller Unterstützung von<br />

Python-Skripten unter anderem auch die<br />

Möglichkeit eröffnet, in der Paketliste mit<br />

einem Rechtsklick auf die Paketdetails<br />

Protokollfelder hinzuzufügen.<br />

Außerdem lassen sich seit Libpcap 1.0.0<br />

die Puffergrößen für die Aufzeichnungen<br />

einstellen und Jpeg-Dateien direkt in<br />

Wireshark öffnen. Anlass dieses Beitrages<br />

ist die im Juli 2011 veröffentlichte Version<br />

1.6, die unter anderem bessere Unterstützung<br />

für große Dateien von mehr als<br />

2 GByte implementiert und ähnlich wie<br />

Text2pcap auch Textdumps importieren<br />

kann. Außerdem haben die Entwickler<br />

die GUI anwenderfreundlicher gestaltet,<br />

sodass man Spalten ausblenden wie<br />

auch maßgeschneiderte Spalten für die<br />

gewünschten Felder anlegen kann.<br />

Hauptmerkmal der neuen Version ist<br />

aber, dass diese über 30 neue Protokolle<br />

unterstützt, darunter auch Json, Wi-Fi<br />

P2P (Wi-Fi Direct) und Fibre Channel<br />

over InfiniBand. Außerdem kann<br />

Wireshark 1.6.0 SSL-Schlüssel und SMB-<br />

Objekte exportieren. Eine weitere Neuerung<br />

in Wireshark 1.6 ist, dass die Software<br />

VLAN-Tags (IEEE 802.1q) direkt im<br />

Ethernet-II-Protokoll-Baum anzeigt.<br />

glossar<br />

n Ein im Promiscuous Mode („freizügiger<br />

Modus“) betriebenes Netzwerkgerät liest<br />

sämtliche am Gerät eintreffenden Daten mit,<br />

auch wenn sie nicht für die Station selbst<br />

bestimmt sind, und leitet sie an das Betriebssystem<br />

weiter. Da die meisten Dienste<br />

im Netzwerk eine Authentifizierung voraussetzen,<br />

kann der Admin im Promiscuous<br />

Mode keine Pakete eines Netzwerks abfangen,<br />

zu denen er keinen Zugang hat. Der<br />

Promiscucous Mode funktioniert außerdem<br />

nicht in geswitchten Netzen.<br />

n Im Non-Promiscuous-Mode analysiert<br />

Wireshark nur Pakete, die an die Station<br />

selbst gerichtet sind, auf der Wirshark installiert<br />

ist oder von dieser versendet wurden.<br />

Sämtliche Datenpakete mit fremder<br />

Empfänger- oder Sender-Adresse werden<br />

verworfen.<br />

n Port Mirroring (Port-Spiegelung) ermöglicht<br />

das Spiegeln des Netzwerkverkehrs<br />

Wireshark ist unter der GPLv2 lizenziert<br />

und lässt sich bei nahezu allen Linux-Distributionen<br />

über das Paketmanagement<br />

installieren. Allerdings bringt selbst ein<br />

leidlich aktuelles Ubuntu Natty nur die<br />

Wireshark-Version 1.4.6 mit.<br />

Auf der Download-Seite unter [1] finden<br />

sich Quellpakete der aktuellen Version<br />

für Unix-Systeme und Binärpakete für<br />

Windows und aktuell (ab 1.6) auch für<br />

Mac OS X. Das Installieren der 32-Bit-<br />

Windows-Version ist selbsterklärend.<br />

Hier genügt das Herunterladen und anschließende<br />

Doppelklicken der Installer-<br />

Datei »wireshark-win32-1.6.1.exe«. Der<br />

Wireshark-Installationsassistent startet<br />

übrigens einen Helfer für die Installation<br />

von WinPcap.<br />

Datenmassen<br />

Einer Netzwerkanalyse mit Wireshark<br />

sollte stets eine vernünftige Planung vorangehen.<br />

Das gilt zwar prinzipiell für<br />

den Einsatz jedes Systemwerkzeugs, bei<br />

der Netzwerkanalyse ist aber in Zeiten<br />

von Gigabit-Ethernet unbedingt darauf zu<br />

achten, dass genügend Systemressourcen<br />

zur Verfügung stehen. Daher sollte sich<br />

der Admin ungefähr über das zu erwartende<br />

Datenvolumen im Klaren sein. Das<br />

hängt wiederum davon an, welchen Datenverkehr<br />

mit welchem Ziel er abhören<br />

möchte, wonach er die zu verwendenden<br />

Filter auswählt. Dabei ist möglicherweise<br />

an einem Switch. Wer Wireshark in einem<br />

geswichten Netz zur Analyse von Daten einsetzen<br />

möchte, die nicht die lokale Station<br />

betreffen, braucht einen Switch mit Port-<br />

Mirror-Funktion, weil sonst jedes Device nur<br />

die Pakete erhält, die auch für es bestimmt<br />

sind. Die Konfiguration von Port Mirroring<br />

passiert normalerweise im Webinterface des<br />

Switches. Es gibt sogar Geräte, die den Datenverkehr<br />

mehrerer Switch-Ports auf einem<br />

Mirror-Port ausgeben können, allerdings ist<br />

dabei die Bandbreite am Zielport zu berücksichtigen,<br />

damit dieser die Datenmengen der<br />

gespiegelten Ports auch bewältigen kann.<br />

Außerdem beeinträchtigt Port-Mirroring die<br />

Switch-<strong>Performance</strong>, weil der Switch für das<br />

Spiegeln sämtliche Pakete duplizieren muss.<br />

Im Übrigen verzerrt ein Switch stets auch<br />

die Ergebnisse von Messungen im Rahmen<br />

der Netzanalyse, weil er automatisch alle<br />

schadhaften Datenpakete verwirft.<br />

auch zu berücksichtigen, dass der verwendete<br />

Sniffer selbst nicht die Messung<br />

beeinflusst, weil er etwa Pakete automatisch<br />

verwirft.<br />

Für das Messen von Netzwerkdaten, die<br />

nicht an den Host gerichtet sind, in dem<br />

das Netzwerkinterface steckt, gibt es im<br />

Wireshare-Konfigurations-Dialog die Option,<br />

das Netzwerkgerät wahlweise im<br />

Promiscuous-Mode oder im Non-Promiscuous-Mode<br />

zu betreiben. Im Non-<br />

Promiscuous-Mode analysiert Wireshark<br />

dann nur solche Pakete, die an den eigenen<br />

Host gesendet oder von diesem versandt<br />

werden. Alle anderen Datenpakete<br />

(mit fremder Empfängeradresse) verwirft<br />

Wireshark.<br />

Im Promiscuous-Mode dagegen kann<br />

Wireshark sämtliche Datenpakete von allen<br />

im Netz existierenden Rechnern analysieren,<br />

weil dieser Modus auch Datenpakete<br />

mit fremden Empfängeradressen akzeptiert.<br />

Sind im Netz sämtliche Ressourcen<br />

ausschließlich über Hubs verbunden,<br />

stellt das Verwenden des Promiscuous-<br />

Mode zum Lesen aller Datenpakete auch<br />

kein Problem dar, weil Hubs sämtliche<br />

Datenpakete an alle Ports versenden.<br />

Pakete spiegeln<br />

Allerdings sind heute schon in kleinen<br />

Heimnetzen Switches sehr verbreitet, von<br />

Unternehmensnetzen ganz zu schweigen.<br />

Der Sinn von geswitchten Netzen besteht<br />

gerade in einer Entzerrung des Datenverkehrs,<br />

sodass eine an einem Switch<br />

angeschlossene Station ohnehin nur noch<br />

solche Datenpakete erhält, die auch für<br />

sie bestimmt sind. Aus diesem Grund<br />

bietet sich für die Analyse in geswitchten<br />

Netzen das Verwenden der bei vielen<br />

Geräten implementierten Port-Mirror-<br />

Funktion an, um die gespiegelten Port-<br />

Daten der zu analysierenden Station der<br />

Netzwerkkarte der lokalen Station, auf<br />

der Wireshark installiert ist, von außen<br />

zuzuleiten. Einzelheiten dazu sind im<br />

Kasten „Glossar“ zu finden.<br />

Vor dem ersten Einsatz ist Wireshark zu<br />

konfigurieren. Im Menü »Capture | Options«<br />

legt der Admin beispielsweise im<br />

Listenfeld rechts oben fest, über welche<br />

Netzwerkschnittstelle Wireshark den Datenverkehr<br />

mitschneidet (Abbildung 1).<br />

Er kann aber auch zuvor im Menü »Capture<br />

| Interfaces«, das sämtliche im Host<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

35


n e Tzwerk<br />

wireshark<br />

auf diese MAC-Adresse beschränken, lautet<br />

die zugehörige Display-Filter-Syntax:<br />

eth.addr==00.25.4b.bd.24.94<br />

Display-Filter sind allerdings deutlich<br />

flexibler. So kann der Admin etwa bei<br />

Display-Filtern nach einzelnen Feldern<br />

in allen unterstützten Pakettypen selektieren<br />

(Abbildung 2).<br />

Die Entscheidung zum Verwenden von<br />

Capture- oder Display-Filtern hängt<br />

von einer Reihe von Faktoren ab. Die<br />

wichtigsten Vor- und Nachteile führt die<br />

Tabelle „Capture-Filter versus Display-<br />

Filter“ auf.<br />

Wireshark konfigurieren<br />

Abbildung 1: Vor dem Start der Protokollierung steht die grundlegende Konfiguration von Wireshark unter<br />

»Capture | Options«.<br />

Um sich mit Wireshark vertraut zu machen,<br />

kann sich der Admin beispielsweise<br />

einen groben Überblick über den<br />

Netzwerkverkehr verschaffen, der beim<br />

gewünschten Host ankommt. Dazu ist<br />

es notwendig, sämtliche bekannten Applikationen,<br />

die regelmäßig über das<br />

Netz kommunizieren, wie Browser,<br />

E-Mail- Clients oder Messenger zunächst<br />

zu schließen. Anschließend wählt er im<br />

Menü »Capture | Options« die betreffende<br />

Netzwerkkarte aus und passt gegebenenfalls<br />

die Puffergröße seinen Wünschen<br />

an. Von der gewählten Puffergröße hängt<br />

es ab, wie viele Pakete Wireshark im<br />

Speicher festhalten kann, bevor das Programm<br />

Daten auf die Festplatte schreiben<br />

muss. Bei Netzen mit extrem hohen Datenaufkommen<br />

empfiehlt sich ein großer<br />

Wert.<br />

Mit der Option »Capture packets in promiscucous<br />

mode« liest das Interface wie<br />

beschrieben den gesamten ankommenden<br />

Datenverkehr mit und gibt die Daten<br />

zum Verarbeiten an das Betriebssystem<br />

weiter. Ein Limitieren der Paketgröße ist<br />

normalerweise nicht erforderlich, weshalb<br />

die entsprechende Option per Deeingebauten<br />

Netzwerkinterfaces zeigt,<br />

bei der gewünschten Netzwerkkarte auf<br />

die Schaltfläche »Options« klicken und<br />

landet dann im gleichen Dialog.<br />

Außerdem kann er hier eine Reihe weiterer<br />

Rahmenbedingungen für die Aufzeichnung<br />

festlegen. So lassen sich im<br />

Feld rechts neben der Schaltfläche »Capture<br />

Filter« eigene Filter definieren. Für<br />

das aufkommende Datenvolumen ist es<br />

entscheidend, wie der zu analysierende<br />

Host mit dem Internet verbunden ist. Ein<br />

Filter kann dann unter anderem dafür<br />

sorgen, dass Wireshark nur den Internet-Datenverkehr<br />

dieses Hosts akzeptiert<br />

oder sich auf Protokolle beschränkt, die<br />

das zu untersuchende Problem auch<br />

wirklich tangieren. Andernfalls müsste<br />

sich der Admin aus einer riesigen Anzahl<br />

von Protokollen oder Broadcasts erst die<br />

relevanten Pakete heraussuchen.<br />

Wireshark kennt zwei Arten von Filtern,<br />

deren Syntax leider unterschiedlich ist,<br />

nämlich Capture-Filter und Display-Filter.<br />

Mit Capture-Filtern legt der Admin fest,<br />

welche Pakete Wireshark überhaupt mitprotokolliert.<br />

Capture-Filter bestimmen<br />

das zu erwartende Datenvolumen und<br />

sind somit für die zur Analyse verfügbare<br />

Datenbasis zuständig. Auf das Ergebnis<br />

der Capture-Filterung kann der Admin<br />

zur weiteren Analyse Display-Filter anwenden.<br />

Capture-Filter benutzen die<br />

Syntax von Libpcap. Das Filtern nach<br />

einer bestimmten MAC-Adresse sieht in<br />

der Libpcap-Syntax so aus:<br />

ether host 00:25:4b:bd:24:94<br />

Möchte der Admin dagegen die Anzeige<br />

Abbildung 2: Wireshark bringt vordefinierte Display-<br />

Filter mit und erlaubt mit seiner Filter-Toolbar auch<br />

das interaktive Erstellen von Display-Filtern.<br />

Tabelle 1: Capture-Filter versus display-Filter<br />

Pro<br />

Contra<br />

Capture-Filter Ein auf das Problem bezogener<br />

Capure-Filter reduziert die Netzlast,<br />

insbesondere wenn sehr viele Pakete<br />

zu speichern sind; bei sehr hoher<br />

Netzlast können ohne Capture-Filter<br />

sogar Pakete verloren gehen.<br />

Dafür ist ein einmal ausgefiltertes<br />

Paket definitiv verloren und lässt sich<br />

nicht mehr zurückholen.<br />

Display-Filter<br />

Alle Pakete einer Session bleiben<br />

erhalten und lassen sich nach<br />

Bedarf ein- und ausblenden.<br />

Bei Änderungen am Display-Filter muss<br />

Wireshark sämtliche Pakete des Datenstroms<br />

neu überprüfen.<br />

36 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


wireshark<br />

n e Tzwerk<br />

Admin das Aufzeichnen mit »Capture<br />

| Stop« anhalten, und Wireshark zeigt<br />

sämtliche eingesammelten Pakete an<br />

(Abbildung 3).<br />

Wireshark praktisch<br />

Abbildung 3: Der komplette, ungefilterte Datenverkehr auf dem gewählten Interface.<br />

fault nicht gesetzt ist. Da der komplette<br />

Datenverkehr analysiert werden soll,<br />

kommt zunächst kein Capture-Filter zum<br />

Einsatz. Im Bereich »Display Options«<br />

empfiehlt es sich außerdem, »Update list<br />

of packets in real time« zu deaktivieren,<br />

damit Wireshark nicht zu viele Systemressourcen<br />

beansprucht.<br />

Außerdem gibt es rechts unten im Bereich<br />

»Name Resolution« noch weitere<br />

wichtige Optionen. Mit »Enable Network<br />

Name Resolution« wandelt Wireshark<br />

sämtliche IP-Adressen mittels DNS in<br />

Namen um, was unter Umständen recht<br />

lange dauern kann, weshalb die Option<br />

per Default zugunsten von »Enable MAC<br />

name resolution« deaktiviert ist.<br />

Im Bereich »Capture Files(s)« kann der<br />

Admin Einfluss auf das Speichern der<br />

Capture-Daten nehmen. Normalerweise<br />

speichert Wireshark sämtliche Capture-<br />

Daten in einer einzigen Datei, die der<br />

Admin an dieser Stelle spezifizieren<br />

kann. Gibt er keine Datei an, speichert<br />

Wireshark die Daten automatisch temporär,<br />

und der Admin kann jederzeit mithilfe<br />

des Menüs »File« wählen, in welcher<br />

Datei er die Daten ablegen möchte.<br />

Mit der Option »Use multiple Files« ist<br />

es aber auch möglich, das Speichern auf<br />

mehrere Dateien zu verteilen. Außerdem<br />

lässt sich deren Größe begrenzen<br />

oder die Datenmenge durch Aktivieren<br />

eines Ringpuffers beschränken, sodass<br />

Wireshark bei einem Überschreiten der<br />

vorgegebenen Größen immer die schon<br />

existierenden Daten<br />

überschreibt.<br />

Mit »Start« beginnt Wireshark<br />

mit dem Aufzeichnen<br />

der Daten.<br />

Zum Protokollieren des<br />

Datenverkehrs für das<br />

ausgewählte Device<br />

genügt es, Wireshark<br />

einfach eine Zeit lang<br />

laufen zu lassen, wobei<br />

das Hauptfenster von<br />

Wireshark permanent<br />

die mitprotokollierten<br />

Pakete in der Paket-<br />

Liste anzeigt.<br />

Mit den Funktionen im<br />

Menü »Go« navigiert<br />

der Admin durch die<br />

Paketliste. Jetzt kann<br />

der Nutzer oder Admin<br />

auch einige typische<br />

Applikationen, etwa<br />

Webanwendungen im<br />

Browser oder VoIP-<br />

Tools, starten.<br />

In der Spalte »Protocol«<br />

lässt sich erkennen,<br />

zu welcher Protokollgruppe<br />

das jeweilige<br />

IP-Paket gehört. Nach<br />

einiger Zeit kann der<br />

Das Ergebnisfenster zeigt hauptsächlich<br />

häufig wiederkehrende Pakete, die stets<br />

zur gleichen Protokoll-Gruppe gehören<br />

wie etwa Cups-Broadcast, IGMP-Pakete,<br />

DHCP-Anforderungen oder ARP-Anfragen,<br />

mit deren Hilfe die Netzwerkinterfaces<br />

die zu einer IP gehörende MAC-<br />

Adresse ermitteln. Außerdem tauschen<br />

Router oder Switches untereinander Informationen<br />

aus, ebenso wie Samba- oder<br />

Windows-Hosts Browser-Nachrichten im<br />

Netz verbreiten: alles Vorgänge, die man<br />

getrost als „normalen“ Netzwerkverkehr<br />

betrachten darf.<br />

Bei diesem einfachen Beispiel fällt aber<br />

auch auf, dass der lokale Host, der im<br />

Beispiel die IP-Adresse 192.168.0.30 hat,<br />

SIP-Pakete an das Ziel 66.151.151.20 sen-<br />

www.A dmin-mAgA zin.de


1&1 DSL: DAS<br />

ÜBERALL VOLLER EMPFANG!<br />

Jetzt bei 1&1: das beste WLAN aller Zeiten! Gemeinsam mit den Profis von AVM hat 1&1 den<br />

neuen 1&1 HomeServer entwickelt. Er ist DSL-Modem, WLAN-Router und Telefonanlage in<br />

einem, als zentrale Schnittstelle für Ihre kabellose Kommunikation in allen Räumen.<br />

Mit mehr Power, mehr Sicherheit und mehr Komfort als je zuvor!<br />

✓ HIGHSPEED-WLAN!<br />

Mit bis zu 300 MBit/s und optimaler<br />

Frequenzwahl.<br />

✓ BESTE REICHWEITE!<br />

Höchste Reichweite und bester Datendurchsatz<br />

dank MIMO Mehrantennentechnik.<br />

✓ ECO-MODE!<br />

Funkleistung nur bei aktiver Datenübertragung,<br />

dadurch geringstmöglicher Stromverbrauch.<br />

✓ SICHERHEIT!<br />

TÜV-geprüfte Firewall und WPA2-Verschlüsselung.<br />

✓ GAST-ZUGANG!<br />

Eigener WLAN-Zugang für Gäste – getrennt von<br />

Ihrem Heimnetzwerk zum Schutz Ihrer Daten.<br />

✓ 100 GB ONLINE-SPEICHER<br />

* 1&1 Surf-Flat 6.000 für 24 Monate 19,99 €/Monat, danach 24,99 €/Monat. Telefonie (Privatkunden): für 2,9 ct/Min. ins dt. Festnetz, Anrufe in alle dt. Mobilfunknetze 19,9 ct/Min.<br />

Hardware-Versand einmalig 9,60 €. In den meisten Anschlussbereichen verfügbar. 24 Monate Mindestvertragslaufzeit.


BESTE WLAN!<br />

NEU!<br />

INTERNET & TELEFON<br />

19, 99<br />

€/Monat*<br />

Für volle 24 Monate,<br />

danach 24,99 €/Monat.<br />

Inklusive 1&1 HomeServer<br />

der nächsten Generation!<br />

Auszeichnungen der<br />

1&1 HomeServer-Familie<br />

30<br />

TAGE<br />

Geld-zurück<br />

G arantie<br />

www.connect.de<br />

Jetzt informieren und bestellen: 0 26 02 / 96 90<br />

www.1und1.de


n e Tzwerk<br />

wireshark<br />

Daher empfiehlt es sich, solche Pakete<br />

mithilfe eines Capture-Filters unmittelbar<br />

bei der Aufzeichnung auszufiltern,<br />

wozu der Admin den Dialog »Capture |<br />

Options« erneut aufruft und rechts neben<br />

der Schaltfläche »Capture-Filter« einen<br />

Capture-Filter gemäß der oben beschriebenen<br />

libpcap-Syntax einträgt. Mit<br />

host IP‐Adresse<br />

beschränkt er das aufkommende Datenvolumen<br />

ausschließlich auf Pakete, die<br />

von oder zum Host mit der angegebenen<br />

IP-Adresse fließen (Abbildung 4).<br />

Möchte er die erwähnten Management-<br />

Pakete ausschließen, genügt ein<br />

host IP‐Adresse and not arp U<br />

and not igmp<br />

Abbildung 4: Capture-Filter lassen sich direkt im Options-Dialog formulieren.<br />

det. Da auf dem betreffenden Rechner<br />

aber keine Internet-Telefonie zum Einsatz<br />

kommt, forschen wir weiter nach.<br />

Ein Doppelklick auf das Paket öffnet ein<br />

neues Wireshark-Fenster mit einer Detailansicht,<br />

dessen Titel aus Quell-IP, Ziel-IP,<br />

Protokoll und Infotext besteht.<br />

Schon aus der Info-Spalte in der Listenansicht<br />

geht hervor, dass SIP-Anfragen an<br />

die Webseite »sip.sightspeed.com« gerichtet<br />

sind. Ein Klick auf das Pluszeichen im<br />

Detailfenster bei »Session Initiation Protocol«<br />

bestätigt den Sachverhalt. Zurück<br />

im Hauptfenster lässt sich per Rechtsklick<br />

auf das betreffende Paket aus dem Kontextmenü<br />

mit »Apply as Filter« direkt ein<br />

Display-Filter erstellen. Sollen alle Pakete<br />

von oder an diesen Host untersucht werden,<br />

ist der Menü-Eintrag »Selected« die<br />

richtige Wahl. Wireshark zeigt die Syntax<br />

des so erstellten Display-Filters in der<br />

Filter-Zeile oben grün hinterlegt an.<br />

ip.src == 192.168.0.30<br />

Wendet man den Filter mit »Apply« an,<br />

zeigt Wireshark nur noch Pakete von<br />

oder zu dieser Station an.<br />

Der Service »sip.sightspeed.com« wird<br />

von der Firma Logitech betrieben, was<br />

nach weiterer Nachforschung den folgenden<br />

Sachverhalt aufdeckte: Der Nutzer<br />

des Arbeitsplatzes hatte vor einiger Zeit<br />

eine Webcam installiert, deren mitgelieferte<br />

Software unter anderem Logitechs<br />

eigene Videotelefonie-Lösung Vid HD<br />

den US amerikanischen Videotelefonie-<br />

Provider Sightspeed nutzt. Zu diesem Fall<br />

ist noch zu bemerken, dass Wireshark im<br />

Menü »Telephony« eine Reihe leistungsfähiger<br />

Funktionen und Filter explizit zum<br />

Analysieren von Telefonie-Problemen<br />

mitbringt.<br />

Filter nutzen<br />

Nutzt der Admin keinen Filter, zeichnet<br />

Wireshark den kompletten Datenverkehr<br />

auf und präsentiert als Ergebnis dann<br />

auch alle Pakete, die für das ganz alltägliche<br />

Management<br />

im Netzwerk<br />

notwendig sind<br />

wie etwa ARP-<br />

Requests, Net-<br />

BIOS- und Cups-<br />

Broadcast sowie<br />

IGMP- und STP-<br />

Pakete (Spanning<br />

Tree Protocol).<br />

Im Bezug auf die<br />

Netzwerkanalyse<br />

sind solche Pakete<br />

meist nicht relevant,<br />

es sei denn<br />

der Admin vermutet<br />

einen Hacker-<br />

Angriff mittels<br />

ARP-Poisoning. zusammenklicken.<br />

Zahleiche weitere nützliche Praxisbeispiele<br />

für Capture-Filter [2] und Display-<br />

Filter [3] finden sich im Wireshark-Wiki<br />

[4]. Ein sehr gutes Handbuch hat außerdem<br />

Ludwig Hein von Lupocom verfasst<br />

[5]. Trotz relativ gut verständlicher und<br />

gut dokumentierter Syntax ist das Erstellen<br />

von Filtern eine komplexe Angelegenheit.<br />

Wireshark unterstützt den Admin<br />

dazu mit einer Filter-Toolbar im Menü<br />

»Analyze | Display Filters«.<br />

Das Tool erlaubt neben der Auswahl einer<br />

ganzen Reihe vordefinierter Display-<br />

Filter mit der »New«-Schaltfläche auch<br />

die direkte Eingabe von Filterausdrücken.<br />

Der Admin kann mit einem Klick<br />

auf die Schaltfläche »Expression« seinen<br />

Wunschfilter so im Dialog-Verfahren zusammenklicken<br />

(Abbildung 5). Zwar<br />

Abbildung 5: Display-Filter lassen sich in Wireshark auch im Dialog-Verfahren<br />

40 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Sie haben Ihre<br />

IT im Griff.<br />

In Zukunft auch<br />

ohne Überstunden?<br />

Abbildung 6: Wireshark kennt eine riesige Anzahl wichtiger Protokolle, die der Administrator in eigenen<br />

Filterausdrücken verwenden kann, um nur relevanten Traffic mitzuschneiden.<br />

gibt es analog für Capture-Filter einen<br />

Menüeintrag »Capture | Capture-Filters«,<br />

dieser bietet allerdings keine Expression-<br />

Schaltfläche.<br />

Der Filter-Dialog zeigt übrigens nicht<br />

nur die verfügbaren Protokollfelder an,<br />

sondern auch die mit dem jeweiligen<br />

Protokoll anwendbaren Operatoren, die<br />

der erfahrene Admin zu individuellen<br />

Ausdrücken kombinieren kann. Mit »OK«<br />

überträgt er den Ausdruck dann in die<br />

Filterliste, um ihn dort auszuwählen und<br />

mit »Apply« anzuwenden.<br />

Weitergehende Analysen<br />

Alle bisher beschriebenen Funktionen<br />

beziehen sich mehr oder weniger nur<br />

auf das Erfassen der zu analysierenden<br />

Daten. Filter dienen im Wesentlichen<br />

dazu, das zu erwartende Datenaufkommen<br />

einzuschränken, aber auch dazu,<br />

die Analyse auf die zu untersuchenden<br />

(möglicherweise verdächtigen) Ports<br />

oder Protokolle einzuschränken.<br />

Darüber hinaus bietet Wireshark aber<br />

auch ein beachtliches Sortiment an Analyse-Funktionen<br />

im Menü »Analyze«.<br />

Neben der erwähnten Toolbar zum Definieren<br />

von Display-Filtern lassen sich<br />

hier auch gezielt einzelne Protokolle deaktivieren<br />

(Abbildung 6).<br />

Sehr nützlich und leistungsfähig ist auch<br />

der Menüpunkt »Analyze | Expert Infos«,<br />

mit dessen Hilfe der Admin sich einen<br />

Überblick über einen ausgewählten Protokollablauf<br />

verschaffen kann, um daraus<br />

für die Fehlersuche nützliche Informationen<br />

zu gewinnen.<br />

Möchte der Admin beispielsweise einen<br />

Authentifizierungs-Handshake im Detail<br />

verfolgen, bietet Wireshark dazu die<br />

Funktion der Stream-Verfolgung unter<br />

»Analyze | Follow TCP Stream« (alternativ<br />

»Follow UDP Stream« und »Follow<br />

SSL Stream«). Die Funktion lässt sich<br />

etwa anhand eines SSH-Logins illustrieren,<br />

wozu der Admin auf einem zweiten<br />

Rechner einen SSH-Server aktiviert und<br />

dann auf dem ersten Rechner Wireshark<br />

sowie ein SSH-Login startet. Zuvor konfiguriert<br />

er Wireshark so, dass ein Protokoll-Filter<br />

dafür sorgt, dass Wireshark<br />

ausschließlich Pakete aufzeichnet, die zu<br />

einer SSH-Sitzung gehören. Dazu muss er<br />

die Aufzeichnung zunächst via Captureoder<br />

Display-Filter auf das SSH-Protokoll<br />

beschränken. Als Capture-Filter sieht das<br />

so aus:<br />

port 22<br />

Dann startet der Administrator die Aufzeichnung,<br />

loggt sich auf der Konsole per<br />

SSH auf dem anderen Rechner ein und<br />

wählt anschließend aus dem Menü »Analyze«<br />

den Punkt »Follow TCP Stream«.<br />

Das Ergebnis sollte etwa so aussehen wie<br />

in Abbildung 7.<br />

NETHINKS unterstützt Sie<br />

als zertifizierter deutscher<br />

OpenNMS-Partner mit:<br />

a Support<br />

a Schulung<br />

a Neukonzeptionen<br />

a Systemoptimierungen<br />

Sprechen Sie uns an!<br />

www.NETHINKS.com<br />

Nächste OpenNMS-Schulung:<br />

26.09. – 30.09.2011<br />

www.admin-magazin.de<br />

NETHINKS GmbH | Bahnhofstr. 16 | 36037 Fulda<br />

T +49 661 25000-0 | info@NETHINKS.com


n e Tzwerk<br />

wireshark<br />

Analyse unter »Telephony | SIP | Stream<br />

Analysis« erzeugt dann für den gewählten<br />

RTP-Stream eine Statistik, die unter<br />

anderem die Ankunftszeit eines Paketes,<br />

den Delay und den Jitter anzeigt.<br />

Fazit<br />

Abbildung 7: Nützlich ist die Option, TCP- oder UDP-Streams Paket für Paket zu verfolgen.<br />

Da SSH die Verbindung verschlüsselt,<br />

kann kein Hacker durch den Einsatz von<br />

Wireshark nennenswerte Informationen<br />

aus der Analyse gewinnen. Das Beispiel<br />

verdeutlicht aber auch, wie einfach sich<br />

mit der Funktion »Follow TCP Stream«<br />

etwa ein Telnet-Login – oder etwas zeitgemäßer<br />

– ein nicht via SSL gesicherter<br />

HTTP-Login mitlesen lässt.<br />

Statistik<br />

Wireshark bietet im Menü »Statistics« außerdem<br />

eine ganze Reihe nützlicher Statistik-Funktionen.<br />

Mit deren Hilfe kann<br />

der Admin beispielsweise Statistiken über<br />

IP-Adressen, Paketlängen, Protokolltypen,<br />

Kommunikations-Endpunkte (Endpoints),<br />

Kommunikationsbeziehungen<br />

rechtslage<br />

Selbstverständlich lässt sich Wireshark auch<br />

hervorragend zur Netzwerk-Analyse im WLAN<br />

nutzen. Allerdings ist das vorsätzliche Abhören<br />

und Protokollieren von fremden Funkverbindungen<br />

in Deutschland verboten, es sei<br />

denn, der Netzbetreiber erlaubt dies explizit.<br />

Der Einsatz von WLAN-Sniffern im eigenen<br />

Funknetz ist zwar unproblematisch, allerdings<br />

geht damit aufgrund der WLAN-Dichte oft<br />

auch ein unbeabsichtigtes Abhören fremder<br />

Netze einher. Dieses „ungewollte Abhören“<br />

ist im deutschen Telekommunikationsgesetz<br />

erlaubt, nicht aber das Speichern, Benutzen<br />

oder Weitergeben der so gewonnenen Daten.<br />

Mehr dazu verrät der Artikel auf S. 24.<br />

(Conversations), Service-Antwortzeiten<br />

und vieles mehr erstellen.<br />

Interessant und nützlich ist auch der<br />

Menüpunkt »Statistics | UDP Multicast-Streams«.<br />

Vermutet der Admin Probleme<br />

im Bereich VoIP beziehungsweise<br />

bei der Internet-basierten Sprachübertragung<br />

im Allgemeinen, sollte er sich auch<br />

im Menü »Telephony« umsehen. Hier<br />

lässt sich der Datenverkehr im Handumdrehen<br />

zum Zwecke der Analyse von<br />

Telefonie-Daten filtern. Bei der Internet-<br />

Telefonie basieren sowohl der Signal-<br />

Traffic (SIP) als auch der Voice-Traffic<br />

(RTP) auf UDP. Das Erstellen von passenden<br />

Filtern und Statistiken ist daher<br />

mithilfe der Menüpunkte »Telephony |<br />

SIP ...« und »Telephony | RTP« schnell<br />

erledigt. Insbesondere Letzterer ist sehr<br />

leistungsfähig.<br />

Mit »Telephony | RTP | Show All Streams«<br />

sind im Nu alle vorhandenen RTP-Streams<br />

gefiltert und visualisiert. Die RTP-Stream-<br />

Farben<br />

Wireshark verfügt über ein umfangreiches<br />

Regelwerk zum Verwenden von Farben in<br />

der Anzeige der Paketliste. Der zugehörige<br />

Profil-Editor ist unter »View | Coloring Rules«<br />

zu finden. Per Default zeigt Wireshark etwa<br />

SMB-Traffic gelb, HTTP-Traffic hellgrün und<br />

ARP-Requents mintgrün an. Eine neue Farbregel<br />

lässt sich wahlweise mit »View | Colorize<br />

Conversation | New Coloring Rule« oder »View<br />

Coloring Rules« erstellen.<br />

Wireshark ist einer der leistungsfähigsten<br />

Paket-Sniffer und kommerziellen Produkten<br />

mindestens ebenbürtig. Allein die unterstützten<br />

Protokolle, die mitgelieferten<br />

Filter und Analyse-Funktionen könnten<br />

Bände füllen. Allerdings wird eine fundierte<br />

Netzwerkanalyse trotz zahlreicher<br />

Assistenten und Filter nicht besser oder<br />

einfacher, wenn das nötige Protokoll-<br />

Wissen fehlt.<br />

Deshalb erfordert der Einsatz von<br />

Wireshark viel Handarbeit, auch wenn<br />

der Werkzeugkasten mit jeder Version<br />

größer wird. Wer nicht über fundiertes<br />

Netzwerk-Fachwissen und das Zusammenwirken<br />

der beteiligten Protokolle<br />

und Dienste verfügt, wird Hacker-Angriffe,<br />

<strong>Performance</strong>-Schwachstellen oder<br />

Konfigurationsfehler auch mit dem Einsatz<br />

von Wireshark nicht schneller aufdecken.<br />

(ofr)<br />

n<br />

Infos<br />

[1] Download Wireshark:<br />

[http:// www. wireshark. org/ download. html]<br />

[2] Beispiele Capture-Filter:<br />

[http:// wiki. wireshark. org/ CaptureFilters]<br />

[3] Beispiele Display-Filter:<br />

[http:// wiki. wireshark. org/ DisplayFilters]<br />

[4] Wireshark-Wiki: [http:// wiki. wireshark. org]<br />

[5] Wireshark-Handbuch<br />

von Ludwig Hein:<br />

[http:// www. lupocom. com/<br />

artikel/ artikel-allgemein/<br />

498-wiresharkhandbuch-teil-1. html]<br />

Der Autor<br />

Thomas Drilling ist seit mehr als zehn Jahren<br />

hauptberuflich als freier Journalist und Redakteur<br />

für Wissenschafts- und IT-<strong>Magazin</strong>e tätig.<br />

Er selbst und das Team seines Redaktionsbüros<br />

verfassen regelmäßig Beiträge zu den Themen<br />

Open Source, Linux, Server, IT-Administration<br />

und Mac OS X. Außerdem arbeitet Thomas<br />

Drilling als Buchautor und Verleger, berät als<br />

IT-Consultant kleine und mittlere Unternehmen<br />

und hält Vorträge zu Linux, Open Source und<br />

IT-Sicherheit.<br />

42 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Virtualisierung<br />

Die besten Virtualisierer und die<br />

Features ihrer Produkte im Vergleich:<br />

• VMware<br />

• Hyper-V<br />

• Oracle VM<br />

• Citrix Xen Server<br />

• Qemu<br />

• ConVirt<br />

• OpenQRM<br />

• Red Hats RHEV<br />

• KVM<br />

• Novell<br />

• Proxmox<br />

Große<br />

Technical Review<br />

Marktstudie<br />

Powered by<br />

www.admin-magazin.de<br />

<strong>ADMIN</strong><br />

Netzwerk & Security<br />

© Dmitry Sunagatov, Fotolia.und Diego Alíes, 123RF<br />

Mehr als<br />

500 Stunden<br />

Recherche, Tests<br />

und Vergleiche<br />

für nur<br />

98 Euro<br />

und andere<br />

Leseprobe mit 10 Seiten unter<br />

www.admin-magazin.de/tr-studie


NetzW erK<br />

IPv6<br />

Im Test: Autokonfiguration von IPv6-Clients<br />

Sitzengeblieben<br />

Die meisten Clients in einem Netz brauchen neben einer Adresse auch Umgebungsinformationen wie einen<br />

Nameserver oder einen Webproxy. Ob aktuelle Betriebssysteme sich in einem reinen IPv6-LAN zurechtfinden,<br />

untersucht dieser Artikel. Konstantin Agouros<br />

Horrormeldungen, dass die IPv4-Adressen<br />

ausgegangen sind, machen seit einiger<br />

Zeit die Runde. Die mittlerweile selbst<br />

schon in die Jahre gekommene Version 6<br />

des Internet Protocol soll Abhilfe schaffen.<br />

Dieser Artikel untersucht, ob IPv6 im<br />

lokalen Netz schon eine vollwertige Alternative<br />

zu IPv4 darstellt. Aller Euphorie<br />

zum Trotz holte die Realität den Autor bei<br />

den ersten Untersuchungen aber schnell<br />

ein, sodass hieraus ein Bericht über einen<br />

Selbstversuch in einem reinen IPv6-Netz<br />

wurde.<br />

Die Theorie<br />

Wie sich ein Rechner in einem IPv6-<br />

Netz zurechtfindet, ist theoretisch<br />

in [1] beschrieben. Der RFC spezifiziert<br />

das Neighbor Discovery<br />

Protocol, das unter anderem<br />

das Address Resolution<br />

Protocol (ARP) ablöst. Es<br />

ist zuständig für die Zuordnung<br />

von MAC-Adressen<br />

zu IP-Adressen, findet<br />

aber auch die zuständigen<br />

Router für<br />

Adressen in anderen<br />

Netzen und<br />

verteilt optio-<br />

nal Adress-Präfixe für das lokale Netz.<br />

Der Ablauf sieht dabei so aus:<br />

n Sobald das Interface aktiv ist, wird<br />

ein Router Solicitation Request an die<br />

Multicast-Adresse »ff02::2« (alle Router<br />

im lokalen LAN-Segment) gesendet.<br />

Alle IPv6-Router in diesem Netz<br />

antworten darauf mit einem Router<br />

Advertisement.<br />

n Abhängig von den Flags im empfangenen<br />

Advertisement konfiguriert der<br />

Client entweder automatisch eine IP-<br />

Adresse im empfangenen Präfix aus<br />

der MAC-Adresse im EUI64-Format<br />

(siehe Kasten „Adressen erzeugen<br />

mit EUI64“) oder in der anonymisierenden<br />

temporären Version [2]. Das<br />

Flag dazu heißt »AdvAutonomous«.<br />

n Wenn das »AdvManagedFlag« gesetzt<br />

ist, dient das „Administered Protocol“<br />

zusätzlich zur Autokonfiguration. Damit<br />

ist DHCPv6 gemeint. Sind beide<br />

Flags gesetzt, bezieht der Client eine<br />

Adresse per DHCP und vergibt sich<br />

selbst die automatisch konfigurierte.<br />

Damit ist der Client im LAN erreichbar<br />

und findet auch seine Nachbarn. Außerdem<br />

kennt der Client die IPv6-Routen,<br />

um auch Rechner jenseits des LANs zu<br />

erreichen. Wenn kein DHCP verwendet<br />

wird, weiß der Client zum jetzigen<br />

Zeitpunkt aber weder, welchen<br />

Nameserver er verwenden soll, noch<br />

wo sich sonstige Netzwerkdienste<br />

befinden. Der RFC [3] definiert<br />

deshalb eine Erweiterung für die<br />

Router Advertisements, die den<br />

Clients auch den Nameserver<br />

mitteilen können.<br />

Es gibt noch ein weiteres<br />

Flag, das hier<br />

eine Rolle spielt:<br />

© Rainer Plendl, 123RF<br />

44 AU sgABe 05-2011 A D m IN WWW. ADm IN-mAgA z IN. D e


IPv6<br />

NetzW erK<br />

wie von den Router<br />

Advertisements vorgegeben:<br />

Alle Flags werden<br />

entsprechend umgesetzt<br />

(Abbildung 1).<br />

RDNSS-Support fehlt<br />

allerdings.<br />

Ist DHCPv6 im Einsatz,<br />

erfährt das Client-System<br />

auch den Nameserver.<br />

Eine Untersuchung<br />

mit Wireshark<br />

förderte zutage, dass<br />

der Client lediglich<br />

nach einem Nameserver<br />

und der Liste der<br />

lokalen Domains fragt.<br />

Außerdem werden<br />

noch Microsoft-spezifische<br />

Optionen abgefragt.<br />

Damit erfährt<br />

der Client alles, was er<br />

im Microsoft-Netz benötigt,<br />

da er über DNS<br />

mittels Service Discovery<br />

(SRV Records für<br />

Dienste) alle Komponenten<br />

findet, die zum<br />

Funktionieren notwendig<br />

sind.<br />

xistest verwendete<br />

der Autor Systeme<br />

mit Linux (Gentoo),<br />

Windows 7<br />

Ultimate und Mac<br />

OS X Snow Leopard.<br />

Windows 7<br />

Das Windows-<br />

Testsystem wurde<br />

als frische Installation<br />

mit Standardeinstellungen<br />

in einer VM mit<br />

Virtualbox aufgesetzt.<br />

Das Netzwerkinterface<br />

der<br />

VM war mit einem<br />

Abbildung 1: Musterschüler Windows 7: Abgesehen von RDNSS werden alle IPv6-<br />

Parameter richtig konfiguriert.<br />

VLAN-Segment<br />

verbunden, in dem<br />

kein IPv4 gesprochen<br />

Das »AdvOtherConfig«-Flag. Laut [1] und<br />

der Manpage des Radvd soll es in [4]<br />

erklärt sein. Die Dokumenthistorie verrät,<br />

wurde (wie bei allen Testsystemen).<br />

Die Adresskonfiguration funktioniert bei<br />

Windows 7 wie erwar-<br />

dass es zwar aus dem RFC entfernt tet beziehungsweise<br />

wurde, aber nicht deprecated, also noch<br />

gültig ist. Die Bedeutung dieses Flags<br />

ist laut Radvd-Dokumentation: „When<br />

set, hosts use the administered (stateful)<br />

protocol for autoconfiguration of other<br />

(non-address) information.“ Also genau,<br />

dass DHCPv6 eingesetzt werden soll, um<br />

Dienste wie Nameserver und so weiter<br />

zu finden.<br />

DHCPv6 verhält sich im Prinzip wie<br />

DHCP für IPv4, mit dem Unterschied,<br />

dass es keine Broadcasts (die es in IPv6 ja<br />

nicht mehr gibt) sondern eine Multicast-<br />

Adresse verwendet, und sich der DHCP-<br />

Server auf Port 547/ UDP bindet. Zum Pra-<br />

Adressen erzeugen mit eUI64<br />

EUI64 wird verwendet, um aus der MAC-Adresse<br />

eines Rechners eine IPv6-Adresse zu<br />

erzeugen. Dazu wird die MAC-Adresse, etwa<br />

»00:11:22:33:44:55«, in der Mitte geteilt<br />

und dort die zwei Byte »FF:FE« eingefügt.<br />

Damit hat man 64 Bit. Wenn als Basis eine<br />

Adresse verwendet wird, die global eindeutig<br />

ist (was bei Ethernet-Adressen der Fall sein<br />

sollte), wird das siebte Bit noch gekippt. Im<br />

Beispiel wären die letzen 64 Bit der Adresse,<br />

die den Host-Anteil in einem üblicherweise<br />

für ein LAN verwendeten 64er-Block bilden,<br />

»02:11:22:FF:FE:33:44:55«.<br />

Im ersten Versuch gab es jedoch eine<br />

kuriose Besonderheit: Über einen WPAD-<br />

DNS-Eintrag wurde die IP-Adresse eines<br />

Webservers bekanntgegeben, der über<br />

die Datei »wpad.dat« eine Proxy-Autokonfigurationsdatei<br />

bereitstellt. In dieser<br />

befand sich der auch mit IPv6-Adresse<br />

auflösbare Webproxy im LAN, der auch<br />

über IPv4 verbunden war, also auf beide<br />

Welten zugreifen kann. Der BITS-Dienst,<br />

den Microsoft für die Patches verwendet,<br />

funktionierte damit auf Anhieb. Ebenso<br />

konnte ein nachinstallierter Firefox-Browser,<br />

der auf Autokonfiguration eingestellt<br />

war, auf den Proxy zugreifen.<br />

Internet Explorer patzt<br />

Der installierte Internet Explorer 8 versagte<br />

aber den Internet-Dienst – der Rest<br />

des Netzes war so konfiguriert, dass<br />

keine direkte IPv6-Verbindung ins Internet,<br />

sondern nur über den Proxy möglich<br />

war. IPv6-fähige Webserver im LAN<br />

konnten vom IE angesprochen werden.<br />

MySQL<br />

aktuell zur Version 5.5 und 5.6<br />

750 S., 2011, mit DVD, 49,90 €<br />

» www.GalileoComputing.de/2533<br />

Admin-Know-how<br />

CouchDB<br />

Das Praxisbuch<br />

303 S., 2011, 34,90 €<br />

» www.GalileoComputing.de/2205<br />

Citrix XenApp 6 und<br />

XenDesktop 5<br />

608 S., 4. Auflage 2011, 59,90 €<br />

» www.GalileoComputing.de/2465<br />

www.GalileoComputing.de<br />

Linux-Server<br />

Bestseller!<br />

815 S., 2011, 49,90 €<br />

» www.GalileoComputing.de/2205<br />

WWW. ADm IN-mAgA z IN. D e<br />

Wissen, wie’s geht.


NetzW erK<br />

IPv6<br />

einträgt. Dazu<br />

wird die Netlink-<br />

Schnittstelle verwendet.<br />

Bei Kernel-Versionen<br />

vor<br />

2.6.24 versucht<br />

der Dienst selbst,<br />

die Advertisements<br />

abzugeifen<br />

und auszulesen.<br />

Der Daemon heißt<br />

»rdnssd« und gehört<br />

zum Ndisc6-<br />

Paket, das weitere<br />

nützliche Werkzeuge<br />

für IPv6-<br />

Abbildung 2: Zur Not lassen sich IPv6-Nameserver unter Mac OS X von Hand<br />

eintragen.<br />

Netzwerke unter<br />

Linux enthält.<br />

Abhilfe schaffte erst das Deaktivieren von DHCPv6-Clients für Linux gibt es etwa<br />

IPv4 in den Netzwerkeigenschaften, womit<br />

dann auch der Internet Explorer den das auch den weitverbreiteten DHCP Ser-<br />

vom Internet Software Consortium (ISC),<br />

Proxy verwendete.<br />

ver bereitstellt oder im Paket »dhcpv6«,<br />

Wenn Windows 7 keine DNS-Server findet,<br />

verwendet es drei Standard-Adressen Pakete erlauben es in mehr oder weniger<br />

das ebenfalls einen Server enthält. Die<br />

als Nameserver: »fec0::1«, »fec0::2« und ausgeprägtem Umfang (die ISC-Version<br />

»fec0::3«. Das Präfix »fec0« war einmal ist da umfassender), neben einer Adresse<br />

als Gegenstück zu den RFC1918-Adressen auch Optionen wie Nameserver oder<br />

gedacht, ist jedoch als Deprecated eingestuft.<br />

Hat man keinen DHCPv6-Server Das Problem im Vergleich zu Windows<br />

NTP-Server abzufragen.<br />

zur Hand, kann man sich aber trotzdem 7 ist, dass man bei der Konfiguration<br />

damit behelfen, dieses Präfix zu verteilen eines Clients wissen muss, ob DHCPv6<br />

und einem Server im Netz ebenfalls eine eingesetzt wird oder nicht. Es gibt keinen<br />

Daemon, der die Managed-Option<br />

der »fec0«-Adressen zu geben, und dort<br />

einen IPv6-fähigen Nameserver wie BIND des Advertisements ausliest und danach<br />

laufen zu lassen.<br />

den DHCP-Client-Prozess startet oder<br />

Was bei Windows 7 im Test nicht funktionierte,<br />

ist das Eintragen in den DNS- Programmierer noch Grundlagenarbeit<br />

eben nicht. Hier kann ein Open-Source-<br />

Server. Ein Mitschnitt der DNS-Pakete, leisten.<br />

die der Client sandte, förderte keine Update-Pakete<br />

zutage, mit denen der Client DHCPv6 über die Advertisments sowohl<br />

Trotzdem lernt Linux beim Einsatz von<br />

seinen Hostnamen und die zugeteilte die Routen wie auch weitere Konfigurationsparameter,<br />

und der Client steht funk-<br />

IP einträgt. Dies ist in Active-Directory-<br />

Umgebungen zumindest hilfreich für das tionstüchtig im Netz. Sollten die Clients<br />

Funktionieren des Clients im Netz. per DHCP sowieso nur den Nameserver<br />

beigebracht bekommen, so reichen auch<br />

Advertisements mit RDNSS-Flag.<br />

Linux<br />

Der Linux-Kernel beherrscht schon seit<br />

Langem IPv6, was die Adresskonfiguration<br />

angeht. Er beachtet auch den Wert<br />

des Autonomous Flags. Damit hört es<br />

aber eigentlich schon fast auf. Seit 2.6.24<br />

unterstützt Linux auch das RDNSS-Flag.<br />

Hierfür benötigt man jedoch einen<br />

Daemon, der im Userspace läuft und aus<br />

den Advertisements den Nameserver ausliest<br />

und in die Datei »/etc/resolv.conf«<br />

Mac OS X 10.6<br />

Apple stellte in diesem Test die größte<br />

Enttäuschung dar, vor allem angesichts<br />

der Tatsache, dass die letzten Betriebssystemversionen<br />

und Anwendungen wie<br />

Mail und Safari IPv6 schon einige Jahre<br />

unterstützen. Auch verwendet Apple für<br />

sein Bonjour-Protokoll zum Auffinden<br />

von Diensten IPv6 mit Linklocal-Adressen<br />

(Präfix »fe80«). Selbst ein iPhone<br />

3G, das im WLAN-Testbetrieb mit Router<br />

Advertisements versorgt wurde, schickte<br />

einen DHCPv6-Request und fragte nach<br />

dem Nameserver.<br />

Jedoch wertet ein Snow-Leopard-Client<br />

lediglich die Flags in den Router Advertisements<br />

aus, Support für RDNSS fehlt.<br />

Und wenn das Managed Flag gesetzt<br />

ist, gibt es keinen DHVPv6-Client, der<br />

die notwendigen Daten bezieht. Es ist<br />

möglich, über die Systemeinstellungen<br />

im Netzwerkbereich IPv6-Adressen als<br />

Nameserver manuell einzutragen (Abbildung<br />

2). Für einen Einsatz im großen Stil<br />

empfiehlt sich diese Praxis jedoch nicht.<br />

Während der Arbeit an diesem Artikel<br />

erschien Apples Version 10.7 „Lion“. Hier<br />

ist nun ein DHCPv6 Client vorhanden<br />

und die Autokonfiguration funktioniert<br />

laut diverser Beiträge in Netzwerkerforen<br />

standardkonform<br />

Fazit<br />

Richtig überzeugen konnten die Ergebnisse<br />

des IPv6-Tests nicht, da immer<br />

noch manuelle Eingriffe notwendig waren.<br />

Eine funktionierende Konfiguration<br />

ist so möglich, bedeutet aber für den<br />

überarbeiteten Administrator mehr Arbeit<br />

als eigentlich nötig.<br />

Der Autor probierte sein Glück mit Linux<br />

(Gentoo), Windows 7 Ultimate und Mac<br />

OS X Snow Leopard. Von diesen Systemen<br />

funktionierte letztlich keines out of<br />

the box. (ofr)<br />

n<br />

Infos<br />

[1] RFC4861 Neighbor Discovery Protocol:<br />

[http://tools. ietf. org/html/rfc4861]<br />

[2] RFC4941 Privacy Extensions for Stateless<br />

Address Autoconfiguration in IPv6:<br />

[http://tools. ietf. org/html/rfc4941]<br />

[3] RFC5006 IPv6 Router Advertisement Option<br />

for DNS Configuration:<br />

[http://tools. ietf. org/html/rfc5006]<br />

[4] IPv6 Stateless Address Autoconfiguration:<br />

[http://tools. ietf. org/html/rfc4862]<br />

Der Autor<br />

Konstantin Agouros arbeitet bei der n.runs AG<br />

als Berater für Netzwerksicherheit. Dabei liegt<br />

sein Schwerpunkt im Bereich Telekommunikationsanbieter.<br />

Sein Buch „DNS/ DHCP“ ist bei<br />

Opensource Press erschienen.<br />

46 AU sgABe 05-2011 A D m IN WWW. ADm IN-mAgA z IN. D e


STRATO PRO<br />

Vergleichen lohnt sich richtig!<br />

Anbieter Hetzner SERVER4YOU<br />

Server EQ4 EcoServer LARGE X5 HighQ-Server SR-7<br />

Monatliche Grundgebühr 49,00 € mtl. 44,99 € mtl. 49,00 € mtl. € mtl.<br />

• Quad-Core<br />

• Quad-Core<br />

• Quad-Core<br />

• 4 x 2,66 GHz • 4 x 2,3 GHz<br />

• 4 x 2,5 GHz<br />

Leistungsda te n<br />

• 8 GB RAM<br />

• 8 GB RAM<br />

• 4 GB RAM<br />

• 2 x 750 GB Storage • 2 x 1.000 GB Storage<br />

• 2 x 500 GB Storage<br />

Vertragslaufzeit 1 Monat 1 Monat 12 Monate<br />

Pauschale für erweiterte Nutzung 15,00 € mtl. 0,00 € mtl. inklusive<br />

Netzunabhängiger Remotezugriff 19,00 € mtl. (KVM) nicht angeboten inklusive (Serielle Konsole)<br />

Setup Netzunabhängiger<br />

149,00 € nicht angeboten inklusive<br />

Remotezugriff (einmalig)<br />

Sofortiger Reboot inklusive 5,00 € mtl. ** inklusive<br />

Sofortige Neuinstallation<br />

inklusive 10,00 € mtl.<br />

mit Wechsel des Betriebssystems<br />

** inklusive<br />

Sofortiges Recovery-System inklusive 10,00 € mtl. ** inklusive<br />

100% FTP-Backupspace nur 100 GB 10,00 € mtl. ** inklusive<br />

ja<br />

7,90 € mtl.<br />

inklusive<br />

Parallels® Plesk Panel<br />

inklusive (30 Domains)<br />

(30 Domains)<br />

(10 Domains)<br />

Inklusiv-Domains 0 0 5 Domains<br />

Kosten für 5 Domains (.de) 4,95 € mtl. 5,10 € mtl. keine Kosten (5 Domains inkl.)<br />

Einrichtungsgebühr 49,00 € 0,00 € keine Einrichtungsgebühr<br />

Einmalige Kosten 198,00 € 0,00 € keine<br />

einmaligen ige<br />

nK<br />

Kosten<br />

Monatliche Kosten<br />

inkl. Features<br />

95 ,85 69 ,09 ,00<br />

€/Mon.<br />

€/Mon.<br />

€/Mon.<br />

3 Monate nur:<br />

Stand: 09.08.11<br />

** Oder Komplett-Paket für 19,00 €/ Mon.inkl. MwSt.<br />

Sie sparen im<br />

ersten Jahr mind.<br />

330,- €<br />

*<br />

€/Mon.<br />

Telefon: 0 18 05 - 00 76 77<br />

(0,14 €/Min. aus dem dt. Festnetz, Mobilfunk max. 0,42 €/Min.)<br />

strato-pro.de<br />

* Mindestvertragslaufzeit 12 Monate. Traffic-Unlimited: Keine zusätzlichen Kosten durch Traffic (bei Traffic-<br />

Verbrauch über 1.000 GB/Monat und danach je weitere 300 GB erfolgt eine Umstellung der Anbindung<br />

auf max. 10 MBit/s. Freischaltung jeweils kostenlos über den Kundenservicebereich). Preise inkl. MwSt.


<strong>Tuning</strong><br />

<strong>Tuning</strong><br />

© Itsallgood, Fotolia<br />

Grundregeln des <strong>Performance</strong>-<strong>Tuning</strong>s<br />

Pimpen nach Plan<br />

Tunen nach Kochrezept ist problematisch, weil oft viele individuelle Faktoren in die Rechnung einzubeziehen<br />

sind. Aber ein paar Leitlinien für das <strong>Performance</strong>-<strong>Tuning</strong> gibt es doch. Jens-Christoph brendel<br />

Wenn es eine goldene Regel des <strong>Tuning</strong>s<br />

gibt, dann lautet sie: Geh planvoll vor!<br />

Wer dies und das willkürlich ausprobiert,<br />

mal an diesem, mal an jenem Schräubchen<br />

dreht, in der Hoffnung, irgendwann<br />

werde sich schon zufällig ein günstiger<br />

Effekt einstellen, der kommt bestimmt<br />

nicht ans Ziel. Denn gerade beim Beschleunigen<br />

von Rechnern gilt: Failing to<br />

plan is planning to fail. Was allein Erfolg<br />

verspricht, ist ein Plan, der sich zum einen<br />

auf ein gutes Verständnis der Mechanismen<br />

stützt, die es zu beschleunigen<br />

gilt, zum anderen auf handfeste Messwerte.<br />

Vor diesem Hintergrund durchläuft<br />

der Tuner den Kreislauf Messen-Analysieren-Ändern<br />

so lange, bis das gewünschte<br />

Ergebnis maximiert ist. Dieser Artikel beleuchtet<br />

Methodik und Tools.<br />

Messen<br />

Anwender sprechen häufig über subjektive,<br />

über gefühlte <strong>Performance</strong>. Das ist<br />

unvermeidlich und deshalb auch berechtigt.<br />

Der Admin aber muss sich bemühen,<br />

eine Aussage wie „Heute ist wieder alles<br />

so langsam …“ zu objektivieren. Er muss<br />

wissen, was genau wie schnell ist, weil<br />

er nur so einen Ansatzpunkt für zielgerichtete<br />

Verbesserungen finden kann.<br />

Dabei liefert ihm das <strong>Performance</strong>-Monitoring<br />

konkrete Messwerte. Auf zwei<br />

Schwierigkeiten stößt er dabei allerdings<br />

ziemlich schnell: Erstens: Was soll man<br />

messen? Es bieten sich sehr viele Möglichkeiten<br />

an. Und zweitens: Was sagt<br />

ein bestimmter Messwert aus? Sind 2417<br />

Pakete pro Sekunde gut oder schlecht?<br />

Liegt der Messwert im Erwartungsbereich,<br />

darunter oder darüber? Markiert<br />

er einen Trend?<br />

Der ersten Schwierigkeit wird man am<br />

besten Herr, wenn man vom Allgemeinen<br />

zum Konkreten absteigt und sich zuerst<br />

einen Überblick verschafft, bevor man<br />

die Details unter die Lupe nimmt. Liegen<br />

zum Beispiel ein paar Gigabyte Hauptspeicher<br />

brach, ist es sinnlos, aufwendig<br />

den Speicherverbrauch einzelner Funktionen<br />

einer Applikation zu untersuchen.<br />

Befindet sich die CPU zu 90 Prozent im<br />

Leerlauf, braucht man nicht mit einzelnen<br />

Takten geizen. In diesen Fällen muss<br />

der Engpass – wenn es denn einen gibt<br />

– woanders zu finden sein.<br />

Beim zweiten Problem, der Einordnung<br />

der Messwerte, hilft es, wenn man ein paar<br />

Eckdaten im Hinterkopf hat: Wie schnell<br />

kann eine Festplatte oder ein 10-GBit-<br />

Netzwerk maximal sein? Vielleicht aber<br />

noch wichtiger ist eine Technik, die sich<br />

auf die konkrete Anwendung bezieht:<br />

Das sogenannte Baselining. Dabei sammelt<br />

man über längere Zeit Vergleichswerte<br />

aus der Beobachtung der eigenen<br />

Applikationen: Welche Antwortzeiten ergeben<br />

sich im Normalbetrieb? Wie viele<br />

Useranfragen werden üblicherweise pro<br />

Zeiteinheit bearbeitet? Und so weiter. Das<br />

ermöglicht später hilfreiche Vergleiche:<br />

Haben sich die Antwortzeiten tatsächlich<br />

verlängert (wenn ja,wie stark?) – oder<br />

hat der Anwender nur den Eindruck? Ist<br />

die Veränderung plötzlich eingetreten<br />

oder schleichend? Ist sie zyklisch? Die<br />

Antworten helfen die Stelle zu finden,<br />

an der man den Hebel ansetzen muss.<br />

48 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


<strong>Tuning</strong><br />

<strong>Tuning</strong><br />

Dagegen nützt eine isolierte, schwer einzuordnende<br />

Version portiert,<br />

Momentaufnahme ohne Ver-<br />

wäre übrigens<br />

gleichsmöglichkeit weitaus weniger. willkommen). Daneben<br />

existieren<br />

Überblick verschaffen<br />

Hilfsmittel, um<br />

Nmon-Daten in<br />

Wer sich einem <strong>Performance</strong>problem<br />

nach der Top-Down-Methode nähert, erkennt<br />

auf der obersten Ebene drei große<br />

Gruppen von Ressourcen, von denen prinzipiell<br />

jede zum Nadelöhr werden kann:<br />

RRD-Datenbanken<br />

zu schleusen. Das<br />

bewerkstelligen<br />

etwa [3] und [4].<br />

Neben Nmon gibt<br />

Die Kapazität der CPU, das Leistungsvermögen<br />

es eine ganze<br />

des I/ O-Systems inklusive des Reihe weiterer<br />

Netzwerks und die Aufnahmefähigkeit Tools, die einen Abbildung 1: Mit Nmon kann sich der Anwender seine <strong>Performance</strong>übersichten<br />

des Hauptspeichers. Eine erste Übersicht Überblick über selbst in einem Terminalfenster zusammenstellen. Rootrechte sind nicht nötig.<br />

über die Auslastung dieser Ressourcen die Systemperformance<br />

liefern generelle <strong>Performance</strong>tools.<br />

Ein brauchbarer Vertreter der Kategorie<br />

Generalistentools fürs <strong>Performance</strong>-Monitoring<br />

ist Nmon [1] (Abbildung 1). Das<br />

Werkzeug liefert in komprimierter Form<br />

viele relevante Daten zu CPU- oder Speicherauslastung,<br />

Filesystemen, Virtual<br />

Memory, Kernel-Statistik, Platten-I/ O<br />

oder Netzwerk. Dabei kann es ein normaler<br />

User starten, es benötigt keine Rootaufgestellten<br />

ermöglichen. Zu den breiter<br />

gehören beispielsweise Top<br />

und seine zahlreichen Derivate. Speziell<br />

für das Baselining aber bietet sich ein<br />

bestimmtes Kommandozeilentool ganz<br />

besonders an: Der System Activity Reporter<br />

(Sar).<br />

Sar kann nicht nur ad hoc sehr detaillierte<br />

<strong>Performance</strong>statistiken ausgeben,<br />

die alle relevanten Ressourcen einschließen,<br />

zen hält und dabei jederzeit über alle<br />

relevanten Parameter auskunftsbereit ist.<br />

Zudem gibt es auch für Sar Auswertungstools,<br />

beispielsweise das kommerzielle<br />

Sarcheck [5], das anhand eines Regelwerks<br />

und hinterlegter Schwellwerte die<br />

Messungen automatisiert beurteilt und<br />

so gezielt Hinweise auf Flaschenhälse<br />

nebst Optimierungsempfehlungen liefert<br />

(Abbildung 2).<br />

Rechte, was oft ein großer Vorteil ist.<br />

sondern es ist darüber hin-<br />

Bis jetzt leider nur für Windows existiert<br />

der Nmon Analyzer [2], der die längere Zeiträume hinweg zu sammeln<br />

aus in der Lage, diese Werte auch über<br />

I/ O im Blick<br />

gesammelten <strong>Performance</strong>daten in einem<br />

Spreadsheet auswerten hilft und<br />

auch grafische Darstellungen erstellt;<br />

(ein Freiwilliger, der das auf Visual Basic<br />

basierende Tool in eine Open-Sourceund<br />

dann automatisch zu Wochen- oder<br />

Monatsübersichten zu verdichten. Damit<br />

lässt sich bequem ein permanentes<br />

<strong>Performance</strong>-Monitoring einrichten, das<br />

seinen Platzbedarf automatisch in Gren-<br />

Wer nach einem ersten Überblick seine<br />

Erkenntnisse über eine bestimmte Ressource<br />

vertiefen möchte, dem bieten sich<br />

viele spezialisierte Monitore und Benchmarks<br />

an. Eine der Schwachstellen, die<br />

dabei am häufigsten in den Blick gerät,<br />

sind die Festplatten.<br />

Das liegt einfach daran, dass sich in<br />

den vergangenen Jahrzehnten die Rechenleistung<br />

der CPU sehr viel schneller<br />

entwickelt hat als die I/ O-Leistung der<br />

Festplatten. Ein Blick in die Computergeschichte<br />

macht das klar: Der Urahn<br />

heutiger CPUs, Intels 8086, erblickte im<br />

Juni 1978 das Licht der Welt und brachte<br />

es anschließend, getaktet mit bescheidenen<br />

4.77 MHz, auf gerade einmal 0,33<br />

MIPS (Million Instructions Per Second).<br />

Eine heutige CPU, etwa Intels Quadcore-<br />

Prozessor Core i7 Extreme Edition 990x,<br />

kommt bei 3,46 GHz auf 59 000 MIPS.<br />

Bei den Festplatten sieht die Lage aber<br />

ganz anders aus. Kurz nachdem der legendäre<br />

Stammvater der Intel-Prozessoren<br />

auf den Markt kam, konstruierte<br />

Seagate seine erste 5,25-Zoll-Festplatte,<br />

Abbildung 2: Sarcheck produziert auf Wunsch einen HTML-Report, der in einfachem Englisch mit Tabellen und<br />

bei Bedarf auch Graphen die Auslastung aller Ressourcen erläutert.<br />

das Modell ST-506. Die aus heutiger Perspektive<br />

winzige 5-MByte-Platte kostete<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

49


<strong>Tuning</strong><br />

<strong>Tuning</strong><br />

Abbildung 3: Latencytop zeigt, auf das Freiwerden welcher Ressourcen ein<br />

Prozess warten musste und womit er selbst die meiste Zeit verbrachte.<br />

stolze 1500 Dollar und brachte es bei<br />

einer Umdrehungsgeschwindigkeit von<br />

3600 RPM auf eine mittlere Lesegeschwindigkeit<br />

von 85 ms. Eine aktuelle<br />

Barracuda 7200.7 (ST-380011A) hat zwar<br />

ihre Kapazität auf vergleichsweise riesige<br />

80 GByte vergrößert, rotiert aber nur doppelt<br />

so schnell und das Lesen dauert hier<br />

immer noch 8,5 ms im Schnitt.<br />

Das heißt: Während die CPU ihre Rechenpower<br />

auf das 178.000-fache steigerte,<br />

stieg die Lesegeschwindigkeit der Platten<br />

nur um das Zehnfache. Der Grund<br />

liegt in den Gesetzen der Mechanik: Die<br />

Rotationsgeschwindigkeit der Platten ist<br />

nicht beliebig steigerbar, unter anderem<br />

weil dann die unvorstellbar hohe Positioniergenauigkeit<br />

der Köpfe nicht mehr<br />

zu gewährleisten wäre, die wiederum die<br />

Voraussetzung für hohe Spurdichten und<br />

damit Kapazitäten ist.<br />

Die enorme Diskrepanz in der Leistungsentwicklung<br />

von CPU und I/ O-Subsystem<br />

ist die häufigste Ursache für <strong>Performance</strong>probleme<br />

überhaupt und das Dilemma<br />

wäre noch sehr viel größer, hätte man<br />

nicht verschiedene Maßnahmen der Gegenwehr<br />

ersonnen. Dazu zählen etwa<br />

Plattenverbünde, die die I/ O-Last auf<br />

viele Spindeln verteilen können, oder<br />

und vor allem Caches, die Plattenzugriffe<br />

durch Hauptspeicherzugriffe substituieren.<br />

Getreu dem Motto: „The only good<br />

fast read is the one you didn’t have to<br />

do.“ Das Lesen aus dem Cache kostet nur<br />

Mikrosekunden, von der Platte mindestens<br />

eine Handvoll Millisekunden, also<br />

wenigstens das Tausendfache.<br />

Damit lässt sich der Leistungsunterschied<br />

zumindest ein wenig angleichen,<br />

allerdings um den Preis einer höheren<br />

Komplexität. Ein Plattenzugriff durch-<br />

läuft auf seinem<br />

Weg von der Applikation<br />

über das<br />

Filesystem den<br />

Page Cache des Betriebssystems,<br />

den<br />

Block I/ O Layer,<br />

den I/ O Scheduler,<br />

den Gerätetreiber,<br />

die Plattenelektronik<br />

bis schließlich<br />

zur Magnetschicht<br />

der Festplatte<br />

zahlreiche Ebenen<br />

(Abbildung 5), die<br />

zwar oft nichts voneinander wissen, unter<br />

Umständen aber gleichwohl jeweils<br />

auf ihre Art versuchen, die <strong>Performance</strong><br />

zu verbessern. Das kann durchaus nach<br />

hinten losgehen. Auch das <strong>Tuning</strong> stößt<br />

hier an Grenzen, weil sich die verschiedenen<br />

Effekte nur sehr schwer einzeln<br />

messen und beeinflussen lassen. Komplexe<br />

Disk-Setups, etwa in einem SAN,<br />

können eine <strong>Performance</strong>prognose fast<br />

unmöglich machen.<br />

Eine der Faustregeln, die es für das Plattentuning<br />

dennoch gibt, heißt Lastverteilung.<br />

Jede einzelne Platte sollte höchstens<br />

zu einem Drittel ausgelastet sein,<br />

wenn man Wert auf Geschwindigkeit<br />

legt. Dann kann sie zwei von drei Leseoder<br />

Schreibanforderungen sofort bedienen.<br />

Außerdem helfen schnelle Platten<br />

und große Caches. Benutzt der Admin<br />

RAID-Konstruktionen, sollte er deren<br />

Auswirkungen auf die <strong>Performance</strong> im<br />

Blick haben. So steigert Striping (RAID<br />

0) oder eine davon abgeleitete Mischform<br />

(RAID 01, RAID 10 und so weiter)<br />

die Transferrate, dagegen bremst RAID 5<br />

das Schreiben wegen der dabei nötigen<br />

Prüfsummenberechnung deutlich.<br />

Zwar kann man auch versuchen, mit Filesystem-Parametern<br />

zu experimentieren<br />

oder mit der Auswahl und Einstellung<br />

des I/ O-Schedulers [6], allerdings ergeben<br />

sich dabei im Zusammenwirken mit<br />

allen anderen Komponenten nicht immer<br />

nachvollziehbare Resultate.<br />

Regeln für den RAM<br />

Hauptspeicher kann man eigentlich nicht<br />

genug haben – wäre er nicht teuer. Wer<br />

sich keinen maximalen Hauptspeicherausbau<br />

zur Prophylaxe leisten kann, für<br />

den kommt es stattdessen darauf an, den<br />

Speicher klug zwischen User-Prozessen,<br />

Shared Memory und Filesystem Cache<br />

auszubalancieren.<br />

Unter Linux kann nicht jeder virtuellen<br />

Speicherseite von Anfang an bereits ein<br />

physisches RAM-Äquivalent gegenüberstehen,<br />

denn es gibt viel mehr virtuellen<br />

als physischen Hauptspeicher. Das Mapping<br />

von virtuellen auf physische Seiten<br />

geschieht deshalb erst zum Zeitpunkt<br />

des ersten Zugriffs (Demand Paging).<br />

Versucht das OS dabei auf eine virtuelle<br />

Speicherseite zuzugreifen, der momentan<br />

kein physischer Speicher zugeordnet ist,<br />

kommt es zu einem sogenannten Page<br />

Fault. Um ihn zu beheben, muss dann<br />

die fragliche physische Seite von der<br />

Festplatte, auf der sie ausgelagert war,<br />

wieder eingelesen und dem virtuellen<br />

Gegenstück zugewiesen werden. Beim<br />

Swapping wird statt einer einzelnen Seite<br />

der gesamte Seitensatz eines Prozesses<br />

ausgelagert oder wieder eingelesen.<br />

Paging ist mithin normal und notwendig,<br />

aber eine zu hohe Pagingfrequenz<br />

oder Swapping können Anzeichen von<br />

zu knappem RAM sein. Der Swapspace<br />

sollte übrigens nicht ausgehen, denn<br />

dann bleibt Linux stehen.<br />

Schließlich ist auch die sogenannte Scan-<br />

Rate ein Indiz. Sie gibt an, wie oft der<br />

freie Speicher in einem bestimmten Zeitintervall<br />

unter den Wert »lostfree« gefallen<br />

ist und sich der Pagescanner deshalb<br />

auf die Suche nach wenig benutzten<br />

Speicherseiten begeben musste, die er<br />

wiederverwenden kann. Unter Solaris<br />

gibt »vmstat« diese Scanrate direkt aus,<br />

unter Linux findet man Vergleichbares<br />

mit »sar -B«. Weiteren Aufschluss über<br />

die Memory-Statistik gibt »vmstat« mit<br />

der Option »-s«.<br />

Rechenzeit<br />

Die CPU-Auslastung ist einer der am einfachsten<br />

zu beobachtenden Leistungsparameter.<br />

Die gebräuchlichste Maßeinheit<br />

ist dabei der sogenannte Load Average,<br />

definiert als die mittlere Anzahl der ausführbaren<br />

Prozesse in der Run Queue der<br />

CPU. Uneinigkeit herrscht hier allerdings<br />

darüber, ob Prozesse, die auf I/ O-Operationen<br />

warten, als ausführbar gezählt werden<br />

oder nicht. Solaris etwa klammert sie<br />

aus, Linux bezieht sie aber ein.<br />

50 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


<strong>Tuning</strong><br />

<strong>Tuning</strong><br />

Als Faustregel kann man sich merken,<br />

dass der Load Average die Anzahl der<br />

CPUs nicht um das Zwei-, unter Linux<br />

vielleicht auch kurzzeitig das Dreifache<br />

übersteigen sollte – andernfalls bildet die<br />

CPU den Flaschenhals, und das System<br />

reagiert nur noch träge. Ein Load Average<br />

von eins bei einer CPU würde bedeuten,<br />

dass ein Prozess den Prozessor belegt<br />

und keiner wartet. Weil Linux nun auch<br />

Prozesse in den Load Average einrechnet,<br />

die warten müssen, bis Platten Daten<br />

liefern, darf man den kritischen Wert hier<br />

etwas höher als eins pro CPU ansetzen.<br />

Doch spätestens wenn die Länge der Run<br />

Queue mehr als das Dreifache der CPU-<br />

Anzahl beträgt, warten zu viele Prozesse<br />

auf die knappe Ressource CPU. Den Load<br />

Average für die letzten ein, fünf und fünfzehn<br />

Minuten geben Tools wie »uptime«<br />

oder »top« aus.<br />

Der Load Average ist allerdings nicht die<br />

einzige CPU-bezogene Metrik. Eine weitere<br />

ist etwa die Anzahl der sogenannten<br />

Context Switches. Damit sind<br />

die Umbauarbeiten gemeint,<br />

die jedes Multitasking-System<br />

ausführen muss, bevor es eine<br />

neue Task der CPU übergibt<br />

– entweder durch den Prozess-Scheduler<br />

oder weil es<br />

eine Interrupt-Service-Routine<br />

ausführt. Damit der unterbrochene<br />

Prozess später an<br />

derselben Stelle wieder fortgesetzt<br />

werden kann, sind im<br />

Zuge des Context Switch der<br />

Program Counter und andere<br />

Register im RAM zu sichern.<br />

Das kostet Zeit, und zwar unverhältnismäßig<br />

mehr als die<br />

Ausführung einer normalen<br />

Instruktion. Sehr viele Context<br />

Switches bremsen also, (Ähnliches<br />

gilt für sehr viele Interrupts, die ihrerseits<br />

auch immer einen Context Switch<br />

erzwingen). Noch teurer ist der Spaß,<br />

wenn der Prozess in einem Mehrprozes-<br />

Abbildung 4: Oprofile sammelt im Hintergrund die Werte<br />

spezieller <strong>Performance</strong> Counter. Neben Entwicklern können auch<br />

Admins von den detaillierten Statistiken profitieren.<br />

sorsystem bei Wiederaufnahme die CPU<br />

wechselt und dadurch seinen Cache verliert.<br />

Moderne Betriebssysteme wie Linux<br />

sind deshalb darauf bedacht, die Anzahl<br />

<strong>ADMIN</strong><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 alle<br />

Heftartikel aus dem<br />

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

der Jahrgänge<br />

2009 bis 2011!<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 <strong>ADMIN</strong> Abos<br />

Bestellen Sie unter: www.admin-magazin.de/archiv


<strong>Tuning</strong><br />

<strong>Tuning</strong><br />

Abbildung 5: Der I/O-Stack von Linux ist ein komplexes Gebilde.<br />

der Context Switches zu optimieren und<br />

Prozesse an eine bestimmte CPU zu binden<br />

(CPU-Affinität).<br />

Will man sich auf Prozessebene ansehen,<br />

wo die Rechenzeit abgeblieben ist, hilft<br />

»time« mit einer groben Übersicht, wie<br />

viel Zeit im User- und im Kernel-Modus<br />

bei der Ausführung eines Programms verbraucht<br />

wurde. Feiner granular sind die<br />

Ausgaben von »latencytop« (Abbildung<br />

3). Voraussetzung dafür ist ein Kernel<br />

der Version 2.6.25 oder höher, in den<br />

die Optionen »CONFIG_HAVE_LATEN-<br />

CYTOP_SUPPORT=y« und »CONFIG_<br />

LATENCYTOP=y« einkompiliert sind.<br />

Danach lässt sich mit dem Userspace-<br />

Tool »latencytop« nachvollziehen, wo genau<br />

eine Verzögerung entsteht. Dies kann<br />

sich der Admin dann sowohl global für<br />

alle Prozesse als auch aufgeschlüsselt pro<br />

Prozess ansehen (Abbildung 3).<br />

Will man noch tiefer einsteigen und wissen,<br />

welche Events nicht nur innerhalb<br />

eines Prozesses, sondern auch im Kernel<br />

wie viel Zeit verbrauchen, hilft der Profiler<br />

»oprofile« weiter, für den es auch<br />

eine GUI gibt (Abbildung 4). Oprofile<br />

benutzt dafür <strong>Performance</strong>counter moderner<br />

CPUs und kann sich auch auf Softwaresymbole<br />

beziehen, sodass für Entwickler<br />

ein Quelltext mit Anmerkungen<br />

des Profilers entsteht. Für eine Offline-<br />

Analyse legt das Werkzeug Archive an.<br />

Analysieren<br />

Hat man Werte erhoben, gilt es, sie zu<br />

bewerten. Wie schon erwähnt, helfen<br />

hier Vergleichsmöglichkeiten weiter.<br />

Auch eine Software wie das<br />

ebenfalls schon erwähnte<br />

Sarcheck mit eingebauter<br />

Einstufung der Messwerte<br />

kann hilfreich sein. Am<br />

Ende der Bewertung sollte<br />

eine Rangfolge der Probleme<br />

stehen, denen man<br />

sich zuwenden will. Selbst<br />

wenn man alle gleichzeitig<br />

angehen könnte – was in<br />

der Regel ausgeschlossen ist<br />

– wären dann die Effekte<br />

der einzelnen Maßnahmen<br />

nicht mehr zu trennen. Deshalb<br />

sollte der Tuner seine<br />

Aufgaben zunächst priorisieren<br />

und dann von der<br />

dringlichsten absteigend immer nur eine<br />

nach der anderen abarbeiten.<br />

Auf das Messen und Bewerten folgt das<br />

Ändern der Konfiguration. Dabei sollte<br />

man sich angewöhnen, von Anfang an<br />

jeden Schritt peinlich genau zu dokumentieren.<br />

Nur so lässt sich am Ende sicher<br />

nachvollziehen, welche Maßnahme<br />

welche Wirkung gehabt hat.<br />

Das Messen, Analysieren, Ändern und<br />

wieder Messen funktioniert allerdings<br />

nur, wenn der Tuner eine gute Vorstellung<br />

von der Funktionsweise des Subsystems<br />

hat, das er beschleunigen will.<br />

Hier gilt es, sich nötigenfalls einzulesen.<br />

Nur wer ein klares Bild davon hat, wie<br />

die Rädchen ineinandergreifen, auf die er<br />

einwirken will, kann einen vernünftigen<br />

Plan entwickeln. Und nur ein vernünftiger<br />

Plan führt zum Erfolg. Für nicht zielgerichtete<br />

Anstrengungen sind heutige<br />

Rechner zu komplex.<br />

Ausblick<br />

Eine unzweckmäßige Konfiguration oder<br />

Fehler in den Applikationen haben sicher<br />

eine größere Auswirkung auf die<br />

<strong>Performance</strong> als das Drehen an einer exotischen<br />

Schraube im Kernel. Ähnliches<br />

trifft beispielsweise auch auf die Optimierung<br />

von SQL-Abfragen im Vergleich zum<br />

Tunen der internen Datenbank-Einstellungen<br />

zu. Eine verkorkste Architektur<br />

oder ungünstige Algorithmen sind mit<br />

Parameter-<strong>Tuning</strong> nicht wettzumachen.<br />

Zudem sind moderne Betriebssysteme<br />

in der Lage, sich verschiedenen Bedingungen<br />

selbstständig und dynamisch anzupassen,<br />

sodass dort keine Justierung<br />

von Hand mehr nötig ist. Ein weithin bekanntes<br />

Beispiel sind etwa die gleitenden<br />

Fenster (Sliding Windows) bei der TCP-<br />

Flusskontrolle, die eine automatische<br />

Anpassung an die Fehlerrate während<br />

der Übertragung ermöglichen. Ähnlich<br />

verhält es sich mit den lastabhängigen<br />

Taktraten moderner CPUs.<br />

Diese Adaptionsfähigkeit bewirkt zugleich<br />

eine erhöhte Komplexität und untergräbt<br />

zum Teil Annahmen, die einfachen<br />

Faustformeln zugrunde liegen, auf<br />

die man sich früher verlassen konnte.<br />

Da rechnete man beispielsweise mit einem<br />

eingeschwungenen Zustand (steady<br />

state), einer konstanten Servicezeit oder<br />

einer zufälligen Verteilung der Anforderungen<br />

über die Zeit. Schwankt nun aber<br />

beispielsweise die Taktrate der CPU oder<br />

bucht ein virtueller Server bei Bedarf<br />

CPUs hinzu, wird die Annahme falsch,<br />

dass eine bestimmte Aufgabe immer eine<br />

reproduzierbare Zeit für ihre Erledigung<br />

braucht. Rechnet man dann beispielsweise<br />

mit einer Auslastung von 30 Prozent<br />

bei 3 GHz, erhält man tatsächlich<br />

70 Prozent Auslastung bei 1,5 GHz, auf<br />

die die CPU zum Stromsparen zurückgeschaltet<br />

hat. Dies exakt vorauszuberechnen<br />

ist bis heute unmöglich.<br />

Trotzdem ist man nicht machtlos. Wer<br />

sich auf die überschaubaren Probleme<br />

beschränkt und diese mit solidem Knowhow<br />

systematisch angeht, wird Leistungsreserven<br />

erschließen können. (jcb) n<br />

Infos<br />

[1] Nmon:<br />

[http:// www. ibm. com/ developerworks/ aix/<br />

library/ au‐analyze_aix/]<br />

[2] Nmon Analyzer:<br />

[http:// www. ibm. com/ developerworks/ aix/<br />

library/ au‐nmon_analyser/]<br />

[3] nmon2rrd:<br />

[http:// www. ibm. com/ developerworks/<br />

wikis/ display/ WikiPtype/ nmon]<br />

[4] nmon2web:<br />

[http:// www. aixtips. com/ AIXtip/ nmon2web.<br />

htm]<br />

[5] sarcheck: [http:// www. sarcheck. com]<br />

[6] I7O‐Scheduler und RAID‐<strong>Performance</strong>:<br />

[http:// www. admin‐magazin. de/<br />

Online‐Artikel/ Technical‐Review/ I‐O<br />

‐Scheduler‐und‐RAID‐<strong>Performance</strong>/<br />

%28language%29/ ger‐DE]<br />

52 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


2. und 3. November 2011<br />

Congress Frankfurt<br />

Wer powert Ihre Cloud?<br />

Durch die Teilnahme an SNW Europe, Datacenter Technologies und Virtualization World<br />

können Sie herausfinden, welche Produkte, Technologien und Serviceleistungen die derzeitig<br />

verfügbaren Public und Private Cloud Lösungen powern. Diese werden Ihnen durch das<br />

Branchenwissen verschiedener Verbände, unabhängiger Analysten und Kommentatoren<br />

sowie Ihrer eigenen IT Kollegen aus ganz Europa vermittelt. Es gibt keinen besseren Ort und<br />

Zeitpunkt, um sich auf die zukünftigen Anforderungen Ihrer IT im Unternehmen vorzubereiten.<br />

“Cloud allows IT to return to innovating for the business”<br />

William Fellows, VP Research EMEA, the 451 Group<br />

Sparen Sie 120€ Eintrittsgebühr!<br />

Kostenloser Eintritt mit<br />

Promocode: D42M11 auf<br />

www.poweringthecloud.com<br />

Platin Sponsoren<br />

VIRTUALIZATION<br />

WORLD<br />

SNW<br />

EUROPE<br />

DATACENTER<br />

TECHNOLOGIES<br />

Die Eigentumsrechte an SNW Europe liegen bei<br />

SNIA und Computerworld. Die Eigentumsrechte<br />

an Datacenter Technologies und Virtualization<br />

World liegen bei SNIA Europe und Angel Business<br />

Communications. Alle drei Konferenzen werden von<br />

Angel Business Communications Ltd organisiert und<br />

von SNIA Europe unterstützt.<br />

Sponsoring Möglichkeiten - Bitte<br />

kontaktieren Sie Carly Stephens:<br />

T: +44 (0)1923 690 223<br />

E: carly.stephens@angelbc.com


<strong>Tuning</strong><br />

PostgresQL-<strong>Tuning</strong><br />

Kirsty Pargeter, 123RF<br />

An welchen Stellschrauben man drehen kann<br />

PostgreSQL tunen<br />

Von dutzenden datenbankparametern sind nicht alle wichtig. dieser beitrag erklärt, welche einstellungen für ein<br />

schnelles PostgresQL am wichtigsten sind. susanne ebrecht, greg smith<br />

„Meine Datenbank ist langsam“ – solche<br />

Hilferufe erreichen den Datenbanksupport<br />

häufig. Dann drängen sich immer<br />

zwei Fragen auf: Was genau ist langsam?<br />

Und: Ist es wirklich die Datenbank? Häufig<br />

wird die Schuld an allem Übel zu<br />

schnell auf die Datenbank geschoben.<br />

Aber selbst die schnellste und bestoptimierte<br />

Datenbank kann keinen unvorteilhaft<br />

gewählten Algorithmus in der<br />

Anwendung wettmachen. Manchmal entpuppt<br />

sich auch das Netzwerk als Übeltäter,<br />

aber das ist heutzutage seltener der<br />

Fall. Als dritte Gruppe von Verdächtigen<br />

kommen schließlich graphische Tools<br />

von Drittanbietern wie PgAdmin, PhpPg-<br />

Admin oder Tora in Betracht.<br />

Prinzipiell findet sich die Ursache für<br />

langsame Datenbanken aber wie gesagt<br />

am häufigsten auf der SQL-Ebene. Ungenügend<br />

durchdachtes Design und wachstumsbedingte<br />

Verwerfungen führen die<br />

Hitliste der Fehler an. Weitere Beispiele<br />

sind: Sich gegenseitig blockierende Statements,<br />

unvorteilhaft formulierte Statements,<br />

Probleme bei Massenimporten,<br />

Probleme mit der Indizierung, langsame<br />

Algorithmen in Funktionen und anderes<br />

mehr. Nun soll es in diesem Artikel zwar<br />

weniger um SQL-Optimierung gehen,<br />

aber es ist wichtig, darauf zu verweisen,<br />

dass hier normalerweise der Schwerpunkt<br />

allen <strong>Tuning</strong>s liegen muss.<br />

Speicher-Stellschrauben<br />

Dieser Artikel wird sich hauptsächlich<br />

mit der Optimierung von Datenbankparametern<br />

auseinandersetzen. Schon die<br />

Vielzahl der Variablen in der Datei »postgresql.conf«<br />

kann dabei dazu führen,<br />

dass der Admin den Überblick verliert,<br />

an welchen Schrauben gedreht werden<br />

sollte. Tröstlich ist: Für viele Installationen<br />

ist nur ein kleiner Bruchteil der<br />

mehr als hundert <strong>Tuning</strong>parameter von<br />

Bedeutung.<br />

In vielen Fällen wichtig ist aber beispielsweise<br />

die Variable »max_connections«,<br />

die die Anzahl zeitgleicher Verbindungen<br />

zum Datenbankserver begrenzt. Ergänzend<br />

legt die Variable »superuser_reserved_connections«<br />

fest, wie viele Verbindungen<br />

von »max_connections« für<br />

Superuser reserviert sind (auch für Replikationen<br />

sind Superuser erforderlich).<br />

Ist der Wert von »max_connections« zu<br />

hoch, geht die <strong>Performance</strong> in den Keller.<br />

Mehr als zwei oder drei aktive Verbindungen<br />

pro Core lassen die CPU ein<br />

Swap-Wettrennen veranstalten, das die<br />

<strong>Performance</strong> herunterschraubt. Besser ist<br />

es hier, über Connection Pooling zwischen<br />

Server und Anwendung nachzudenken.<br />

Gängige Pooler für diesen Zweck<br />

sind PgBouncer und pgpool-II.<br />

54 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


PostgresQL-<strong>Tuning</strong><br />

<strong>Tuning</strong><br />

Das Betriebssystem stellt Pufferspeicher<br />

(Cache) für alle Anwendungen bereit, so<br />

auch für PostgreSQL. Daneben verwaltet<br />

PostgreSQL eigenen Zwischenspeicher<br />

in der mit »shared_buffers« festgelegten<br />

Größe. Dieser Speicher steht ausschließlich<br />

PostgreSQL zur Verfügung.<br />

Die Voreinstellungen sind relativ niedrig,<br />

da die meisten Unix-Kernel für größere<br />

Werte erst angepasst werden müssen.<br />

Danach sollte »shared_buffers« auf mindestens<br />

256 MByte gesetzt werden. Die<br />

obere Grenze liegt unter Windows bei<br />

512 MByte und unter Unix/ Linux bei 8<br />

GByte. Für weniger als 32 GByte RAM gilt<br />

der Daumenwert: 1/ 4 RAM als »shared_<br />

buffers«. Bei 32 GByte und mehr sind 8<br />

GByte für »shared_buffers« üblich. Die<br />

verbleibenden 3/ 4 RAM werden in reinen<br />

Datenbankservern »effective_cache_size«<br />

zugeordnet. Durch diesen Parameter wird<br />

PostgreSQL mitgeteilt, mit wie viel Betriebssystem-Cache<br />

es rechnen kann, um<br />

bei der Query-Planung herauszufinden,<br />

ob größere Indexe in den RAM passen<br />

oder nicht.<br />

Wer »shared_buffers« umkonfigureren<br />

will, muss übrigens unter Umständen<br />

im Linux-Kernel die Maximalgröße eines<br />

Shared-Memory-Segments (SHMAX) anpassen,<br />

was über<br />

sysctl ‐w kernel.shmax=Wert<br />

möglich ist.<br />

Checkpoints<br />

Checkpoints bewirken, dass im Shared-<br />

Buffer-Cache abgelegte, geänderte Daten<br />

in regelmäßigen Abständen auf die Platte<br />

geschrieben werden. Der Vorgabewert<br />

von 5 Minuten (»checkpoint_timeout«)<br />

ist normalerweise ausreichend. Daneben<br />

werden Checkpoints auch ausgelöst,<br />

wenn die Anzahl an geschriebenen WAL-<br />

Dateien (Write Ahead Log) den Wert<br />

von »checkpoint_segments« übersteigt.<br />

WAL-Dateien sind je 16 MByte groß und<br />

»checkpoint_segments« ist mit 3 voreingestellt.<br />

Daraus ergibt sich, dass alle 48<br />

MByte ein Checkpoint initiiert wird. Für<br />

Systeme mit guter Auslastung ist das viel<br />

zu häufig. Auf reinen Datenbankservern<br />

wird »checkpoint_segments« meist auf<br />

einen Wert zwischen 32 und 128 gesetzt.<br />

Bei massiv schreibenden Anwendungen<br />

kann der Zwischenspeicher zum Schrei-<br />

Abbildung 1: Der Logfile-Analyzer PgFouine entlarvt hier lang laufende Queries.<br />

Festplattenköpfe sind deutlich schneller<br />

beim Datenlesen, wenn die Daten direkt<br />

hintereinander auf der Platte liegen, als<br />

wenn sie chaotisch hin- und herspringen<br />

müssen, um die Daten zu finden. Der<br />

Parameter »random_page_cost« gibt der<br />

Datenbank eine ungefähre Vorstellung,<br />

um wie viel langsamer das Lesen zufällig<br />

verteilter Daten ist. Voreingestellt ist<br />

hier der Faktor 4.0. Der Wert sollte nicht<br />

auf den tatsächlichen Unterschied gesetzt<br />

werden, sondern wird in der Praxis<br />

häufig auf einen weitaus kleineren Wert<br />

eingestellt. Der Grund dafür ist, dass die<br />

meisten der gängigen, zufällig verteilten<br />

Daten (etwa sehr häufig genutzte Indexe)<br />

sowieso bereits im RAM liegen. Es ist<br />

durchaus üblich, auf schnellen Systemen<br />

beziehungsweise auf Systemen mit<br />

viel Arbeitsspeicher den Wert für »ranben<br />

von WAL (»wal_buffers«) schnell<br />

überlaufen. Zwischen 1 und 16 MByte<br />

reichen aus, damit »wal_buffers« nicht<br />

die Hauptbremse ist.<br />

Speicher für Wartungsarbeiten an Tabellen<br />

wird durch »maintainance_work_mem«<br />

begrenzt. Das Erzeugen von Indexen und<br />

die Ausführung des Vacuum-Prozesses<br />

sind hier inbegriffen. Meist laufen nicht<br />

mehr als drei oder vier Wartungsprozesse<br />

zeitgleich. »RAM/16« ist dann ein guter<br />

Daumenwert.<br />

Standardmäßig gibt der Server erst ein<br />

Commit an den Client zurück, nachdem<br />

die Informationen auf die Platte geschrieben<br />

wurden. Durch Setzen von »synchronous_commit<br />

(on/off)« kann das Verhalten<br />

selbst im laufenden Betrieb individuell<br />

für jede Sitzung geändert werden. Das<br />

Risiko ist, dass ohne synchronen Commit<br />

bei einer plötzlichen Abschaltung Daten<br />

verloren gehen, die noch nicht auf<br />

die Platte geschrieben wurden. Es gibt<br />

jedoch Anwendungen, bei denen der Geschwindigkeitsvorteil<br />

das Verlustrisiko<br />

überwiegt.<br />

Verfügbarer Speicher<br />

Jede Verbindung kann eine bestimmte<br />

Menge Arbeitsspeicher zur Ausführung<br />

von Queries nutzen. Hauptsächlich<br />

werden hier zu sortierende Daten und<br />

Hash-Tabellen abgelegt, die sowohl zum<br />

Verknüpfen von Tabellen als auch zur<br />

Umsetzung von Klauseln wie »GROUP<br />

BY« verwendet werden. Der Wert wird<br />

mit »work_mem« festgelegt. Zu bedenken<br />

ist, dass der Parameter einschränkt, wie<br />

viel Speicher jede einzelne Sortier- oder<br />

Hashoperation nutzt; einzelne Queries<br />

können durchaus mehrere dieser Operationen<br />

beinhalten. Das heißt, jede Verbindung<br />

kann in Summe ein Vielfaches an<br />

»work_mem« nutzen. Ein guter Startwert<br />

für work_mem ist: »RAM/(max_connections<br />

* 16)«. Da der Wert von der Komplexität<br />

der Queries abhängt, kann er<br />

bei einfachen Queries eventuell sogar um<br />

das Vierfache erhöht werden. Die Variable<br />

»work_mem« lässt sich im laufenden<br />

Betrieb ändern. Getunte Server haben<br />

»work_mem« meist auf einen Wert zwischen<br />

4 und 128 MByte gesetzt. Es ist in<br />

der Praxis durchaus üblich, den Wert für<br />

ein einzelnes, sehr aufwendiges Query<br />

signifikant (bis zu 2 GByte) zu erhöhen.<br />

Random I/ O und Logs<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

55


<strong>Tuning</strong><br />

PostgresQL-<strong>Tuning</strong><br />

Abbildung 2: So skalieren zufällige Suchoperationen<br />

mit steigender Anzahl Threads auf verschiedenen<br />

Speicherlösungen.<br />

dom_page_cost« auf 2.0 zu setzen. Wenn<br />

sicher ist, dass die gesamte Datenbank<br />

oder große Teile von ihr im RAM zwischengelagert<br />

werden, kann der Tuner<br />

»random_page_cost« sogar auf einen sehr<br />

kleinen Wert wie 1.01 setzen.<br />

PostgreSQL unterstützt das Protokollieren<br />

einer Vielzahl von Informationen. Viele<br />

Optionen sind anfangs abgeschaltet. Es<br />

ist ratsam, zu Beginn alle Queries und<br />

auch »autovacuum«-Prozesse, die länger<br />

als eine Sekunde dauern, im Log festzuhalten.<br />

Wenn das zu unübersichtlich<br />

wird, lässt sich die Zeit erhöhen, die der<br />

Prozess mindestens laufen muss. Bei der<br />

Analyse der Protokolldateien kommen<br />

meist externe Tools zum Einsatz. Pg-<br />

Fouine ist gut für kleine und mittlere Log-<br />

Dateien. Um die Protokollierung für die<br />

häufigsten Bremser einzuschalten und sie<br />

auf die Analyse mit PgFouine (Abbildung<br />

1) vorzubereiten, bedarf es der folgenden<br />

Anpassung in »postgresql.conf«:<br />

log_line_prefix='%t[%p]:[%l‐1] U<br />

user=%u,db=%d'<br />

log_min_duration_statement=1s<br />

log_autovacuum_min_duration=1s<br />

log_temp_files=0<br />

log_checkpoints=on<br />

log_lock_waits=on<br />

Festplatten als Bremse<br />

Den Titel „RAM- und I/ O-Sau“ haben<br />

sich Datenbanken durchaus redlich verdient.<br />

Dabei sind Lese- und Schreibgeschwindigkeit<br />

teuer, und genau deshalb<br />

sparen hier Hardwarehersteller gerne. Bei<br />

Hardwarekäufen ist ein gesundes Misstrauen<br />

grundsätzlich angebracht, denn<br />

der Verkäufer verfolgt naturgemäß eigene<br />

Interessen. Eigene Hardware-Benchmarks<br />

sind zwingend erforderlich. Auf<br />

jeden Fall sollte der Käufer darauf<br />

bestehen, dass er Hardware<br />

zurückgeben kann, die nach eigenem<br />

Benchmarking seinen Erwartungen<br />

nicht entspricht.<br />

Spätestens wenn die Datenbank so<br />

groß geworden ist, dass sie nicht<br />

mehr vollständig in das RAM passt<br />

und manchmal sogar schon vorher,<br />

werden die Festplatten zur<br />

Bremse. Daher sollten die Platten<br />

sorgfältig auf vier Faktoren hin getestet<br />

werden:<br />

n sequenzielle Lesegeschwindigkeit<br />

(read),<br />

n sequenzielle Schreibgeschwindigkeit<br />

(write),<br />

n Geschwindigkeit bei zufällig verteilten<br />

Zugriffen (Random I/ O) und<br />

n Commit-Rate.<br />

Die Commit-Rate gibt an, wie schnell Daten<br />

permanent auf die Platte geschrieben<br />

werden. Ist die Geschwindigkeit erheblich<br />

höher als erwartet, ist das ein Zeichen<br />

dafür, dass ein Write-Cache die Daten<br />

zwischenspeichert, was bei Absturz oder<br />

Ausfall des Systems zu Datenverlusten<br />

führen kann. Wenn kein flüchtiger Speicher<br />

vorhanden ist, dann ist die Commit-<br />

Rate der Platte gleich der IOPS-Rate (I/ O<br />

operations per second). Selbst sehr teure<br />

Disk-Array-Hardware wie SAN oder NAS<br />

kann Schwächen in einer der Disziplinen<br />

haben, die für Datenbanken besonders<br />

wichtig sind. Auch hier sind also vorherige<br />

Tests unabdingbar.<br />

Die sequenzielle Lese- und Schreibgeschwindigkeit<br />

lässt sich unter UNIX einfach<br />

mit Tools wie »dd« testen. Um ein<br />

brauchbares Ergebnis zu bekommen,<br />

sollte hierbei natürlich sichergestellt<br />

werden, dass mehr Daten geschrieben<br />

werden, als in den RAM passen. Die<br />

meistverbreitete Anwendung zum Testen<br />

dieser Leistungsfaktoren ist der Benchmark<br />

Bonnie++. Einige der Tests, etwa<br />

das zeichenweise Lesen und Schreiben,<br />

sind aber für Datenbanken belanglos. Dagegen<br />

führt ein Aufruf wie<br />

bonnie++ ‐f ‐n 0 ‐u root<br />

zu einem Ergebnis, das Tests vermeidet,<br />

die für Datenbanken nicht relevant sind.<br />

Die Random-I/ O-Seeks können mithilfe<br />

des Programms »sysbench« getestet<br />

werden. Dieser ursprünglich für MySQL<br />

entworfene Benchmark ist aber für PostgreSQL<br />

erst relativ aufwendig anzupassen..<br />

Drei Vergleichswerte von realen Systemen:<br />

n Ein einfaches 2-Platten RAID1-Array<br />

mit 15000 U/ min SAS Festplatten, 80<br />

MByte/ s sequenzielle Schreibzugriffe<br />

und 110 MByte/ s Lesezugriffe.<br />

n Ein 20-Platten-RAID10-Array mit gleichen<br />

Festplatten, 630 MByte/ s sequenzielle<br />

Schreibzugriffe und 950 MByte/ s<br />

Lesezugriffe.<br />

n Ein SSD der Intel 320 Serie, 120 GByte<br />

Kapazität. 150 MByte/ s sequenzielle<br />

Schreibzugriffe und 250 MByte/ s Lesezugriffe.<br />

Allein durch Testen der sequenziellen<br />

Lese- und Schreibgeschwindigkeiten lassen<br />

sich schon einige Hardwareprobleme<br />

erkennen. Allerdings sind Zugriffe der<br />

Datenbank selten sequenziell, sondern<br />

meist zufällig verteilt. Wie der Suchdurchsatz<br />

mit steigender Threadanzahl<br />

bei Random-I/ O skaliert, zeigt die Abbildung<br />

2.<br />

Lohnen SSDs?<br />

Zu erkennen ist hier, dass die regulären<br />

SAS-Platten nur eine Transferrate von<br />

1,5 MByte/ s bei zufällig verteilten Daten<br />

haben. Bei mehreren zeitgleichen<br />

Zugriffen kann der Plattenkopf mehr<br />

passende Daten beim Überfahren der<br />

Platte einsammeln. Wenn ein Lagerist<br />

beim Durchkämmen des Lagers gleich<br />

Material für mehrere Aufträge zusammenstellt<br />

und in passende Fächer auf<br />

seinen Wagen legt, ist er auch schneller,<br />

als wenn er für jeden Auftrag einzeln<br />

loszieht.<br />

Die Abbildung zeigt, dass bei 20 zeitgleichen<br />

Anfragen das Zwei-Platten-Array<br />

5 MByte/ s und das 20-Platten-Array 10<br />

MByte/ s erreicht. Das ist ein gewaltiger<br />

Unterschied gegenüber der sequenziellen<br />

Suchgeschwindigkeit. Das einzelne<br />

SSD sticht die Mitbewerber in dieser Disziplin<br />

ganz klar aus. Aber das Blatt kann<br />

sich auch schnell wenden. Sobald es<br />

um sequenzielle Zugriffe geht, reichen<br />

schon wenige reguläre Platten in einem<br />

Verbund aus, um das SSD zu übertrumpfen.<br />

Im Vergleich mit großen Arrays gerät<br />

das SSD dabei dann endgültig ins<br />

Hintertreffen.<br />

56 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


PostgresQL-<strong>Tuning</strong><br />

<strong>Tuning</strong><br />

Die Entscheidung zwischen SSD und regulären<br />

Platten ist nicht einfach. Es gilt<br />

hier, zwischen sequenziellen und zufällig<br />

verteilten Zugriffen abzuwägen. SSDs<br />

sind bekannt dafür, gut im Halten von<br />

Datenbankindizes zu sein, da diese meist<br />

zufällig verteilt sind, und es hier zu massiven<br />

zufällig verteilten Schreibzugriffen<br />

bei der Ausführung von Update-Operationen<br />

kommen kann.<br />

Die Auswahl der richtigen Hardware<br />

kann entscheidend sein, um mit PostgreSQL<br />

eine gute Leistung zu erzielen.<br />

Eine weitere, ausschlaggebende Komponente<br />

für gute Schreibgeschwindigkeit ist<br />

der batteriegestützte Schreibpuffer (Write<br />

Cache), der üblicherweise auf RAID-Controller-Karten<br />

zu finden ist. Es ist wärmstens<br />

zu empfehlen, dass das SSD eine<br />

Batterie für den Write Cache hat. Mit einem<br />

guten Write Cache kann PostgreSQL<br />

bis zu hundertmal höhere Transaktions-<br />

Commit-Raten erzielen. Server mit flüchtigem<br />

Write Cache (ohne eine Batterie)<br />

oder Controller, die behaupten, dass die<br />

Daten geschrieben wurden, ohne sicherzustellen,<br />

dass sie sich wirklich auf der<br />

Platte oder im batteriegestützten Cache<br />

befinden, können bei einem Absturz die<br />

Datenbank korrumpieren.<br />

Dateisystemfragen<br />

Für dedizierte PostgreSQL-Datenbankserver<br />

wird meistens Linux als Betriebssystem<br />

verwendet. Dabei gilt es, ein paar<br />

Einstellungen und Optimierungen zu<br />

beachten, um die beste Leistung herauszukitzeln.<br />

Ältere Linuxsysteme nutzen<br />

meist als Dateisystem Ext3, das ist zwar<br />

zuverlässig, aber nicht das schnellste.<br />

Ext4 ist schneller, aber für PostgreSQL<br />

noch nicht gut genug ausgetestet. Bleibt<br />

als guter Kompromiss XFS. Das ist sehr<br />

stabil und gleichzeitig recht schnell. Bei<br />

allen Dateisystemen ist die Nutzung des<br />

Mount-Parameters »noatime« von Vorteil.<br />

Er deaktiviert das Anpassen der<br />

Information, wann auf eine Datei zum<br />

letzten Mal zugegriffen wurde – für Datenbanken<br />

ist das normalerweise nicht<br />

von Bedeutung. Wird Hardware mit batteriegestütztem<br />

Write Cache eingesetzt,<br />

dann brauchen sowohl XFS als auch Ext4<br />

die Mountoption »nobarrier«, um damit<br />

schnell zu sein. Hiermit wird die Kontrolle<br />

des Dateisystems darüber abgestellt,<br />

ob der Platten- oder Controller-<br />

Cache geleert ist. Es ist ratsam,<br />

diesen Job der Hardware zu<br />

überlassen.<br />

Um eine gute Lesegeschwindigkeit<br />

bei sequenziellen Tabellenscans<br />

über große Tabellen<br />

zu erhalten, ist PostgreSQL auf<br />

das Read-Ahead des Betriebssystems<br />

angewiesen. Linux<br />

hat eine hervorragende Read-<br />

Ahead-Implementierung, aber<br />

voreingestellt ist meist eine viel<br />

zu kleine Anzahl an Blöcken<br />

(256). Ein guter Anfangswert<br />

sind 4096 Blöcke. Das lässt sich wie folgt<br />

ändern:<br />

/sbin/blockdev ‐‐setra 4096 /dev/sda<br />

An der Schreibfront erwartet PostgreSQL,<br />

dass das Betriebssystem normale<br />

Schreibaktionen zwischenspeichert und<br />

sie nur dann auf der Festplatte ausführt,<br />

wenn der Checkpoint erreicht ist. Die<br />

Größe des Write Cache war mit alten<br />

Linux-Kerneln (vor 2.6.22) erheblich zu<br />

groß. Der neue Vorgabewert kann in alten<br />

Kerneln durch folgende Befehle eingestellt<br />

werden:<br />

echo 10 > /proc/sys/vm/dirty_ratio<br />

echo 5 > /proc/sys/vm/dirty_background_U<br />

ratio<br />

Damit wird erlaubt, dass 10 Prozent des<br />

RAMs für einen einzelnen Prozess als<br />

Write Cache verwendet werden. Wenn 5<br />

Prozent geänderte Daten im Write Cache<br />

liegen, wird der Auslagerungsprozess<br />

angestoßen. Die Werte können bei Systemen<br />

mit vielen Gigabyte RAM immer<br />

noch zu hoch sein. Seit Linux-Kernel<br />

2.6.29 lassen sich die Werte unter Verwendung<br />

von »dirty_background_bytes«<br />

und »dirty_bytes« noch niedriger setzen.<br />

Anzumerken ist hier, dass einige Massenoperationen<br />

in PostgreSQL, besonders<br />

»VACUUM«, durch eine zu starke Reduzierung<br />

des Linux-Write-Cache signifikant<br />

langsamer werden können.<br />

Monitoring<br />

PostgreSQL kümmert sich weder darum,<br />

wie das Betriebssystem Read-Ahead oder<br />

Write-Caching ausführt, noch verfolgt<br />

es, was auf der Hardware passiert. Eine<br />

separate Überwachung des Systems ist<br />

Abbildung 3: Mit Munin lassen sich relativ einfach Graphen<br />

darstellen, aus denen ein Trend ablesbar ist. Dieser zeigt Zugriffe<br />

auf Datenbanktupel im Tagesverlauf.<br />

deshalb wärmstens zu empfehlen. Am<br />

besten durch eine Anwendung zur Trendermittlung.<br />

Wichtig sind hier vor allem<br />

Trends der CPU-Aktivität, Speicherverbrauch,<br />

Plattenauslastung und Datenbankstatistiken.<br />

Die beiden gängigsten<br />

Open-Source-Pakete, die diese Anforderungen<br />

erfüllen, sind Munin und Cacti.<br />

Munin lässt sich leichter aufsetzen und<br />

beinhaltet mehr Einblicke in PostgreSQL-<br />

Interna. Munins größter Nachteil ist, dass<br />

es bei der Datensammlung einer großen<br />

Anzahl von Servern nicht mehr allzu gut<br />

skaliert. Wie ein typischer Trendgraph<br />

der Datenbankstatistiken in Munin aussieht,<br />

zeigt die Abbildung 3.<br />

Abgebildet ist ein Server, bei dem die<br />

meisten Zugriffe auf Datenzeilen (intern<br />

Tuple genannt) sequenzielle Scans erfordern.<br />

In diesem Beispiel ist das kein<br />

Problem, da viele der Tabellen zu klein<br />

sind, als dass die Verwendung von Indizes<br />

sinnvoll wäre. Allerdings ist es für<br />

das Erkennen von Problemen im Zusammenspiel<br />

mit dem Server und der<br />

Anwendung extrem wichtig, die Unterschiede<br />

zwischen den Statistiken von Index-<br />

gegenüber sequenziellen Zugriffen<br />

zu sehen.<br />

PostgreSQL kommt sehr gut mit einer<br />

Vielfalt an Geschwindigkeitsanforderungen<br />

zurecht. Aber es ist nur eine Komponente<br />

des Baukastens, der auch das<br />

Betriebssystem und Zusatzsoftware von<br />

Connection-Pooling bis hin zur Trendermittlung<br />

enthält. Den Server zu tunen, ist<br />

wichtig. Geschwindigkeitsüberwachung,<br />

das Lesen der Datenbank-Logs und die<br />

Abstimmung des Datenbankdesigns sind<br />

entscheidend, um das gute Geschwindigkeitsniveau<br />

auch dann noch zu halten,<br />

wenn die Datenbank wächst. (jcb) n<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

57


<strong>Tuning</strong><br />

windows<br />

KrishnaKumar Sivaraman, 123RF<br />

Windows <strong>Performance</strong> Toolkit und Windows System State Analyzer<br />

Unter dem Mikroskop<br />

microsoft bietet mit dem windows <strong>Performance</strong> Toolkit eine sammlung von Tools, die dabei helfen, <strong>Performance</strong>-<br />

Probleme bei servern und langsames booten von desktop-systemen zu untersuchen. Thomas Joos<br />

Mit dem kostenlosen Windows <strong>Performance</strong><br />

Toolkit von Microsoft können<br />

Administratoren die Leistung eines<br />

Systems analysieren und anschließend<br />

<strong>Performance</strong>-Probleme beheben. Die<br />

neue Version des Windows <strong>Performance</strong><br />

Toolkits ist für die Verwendung mit Windows<br />

Server 2008/2008 R2 und Windows<br />

Vista/ 7 optimiert, lässt sich aber auch<br />

mit Windows Server 2003 R2 oder XP<br />

SP3 einsetzen.<br />

Mit dem Toolkit lassen sich Leistungsengpässe<br />

sowie Startprobleme und Verzögerungen<br />

von Anwendungen angehen.<br />

Auch Verzögerungen beim Booten<br />

kann man damit untersuchen. Erfahrene<br />

Anwender und Entwickler erhalten mit<br />

dem Toolkit die Möglichkeit, Ressourcenmessungen<br />

von Anwendungen und<br />

Interrupts durchzuführen. Im Gegensatz<br />

zur Windows-internen Leistungsüberwachung<br />

arbeitet das Tool nicht mit Indikatoren,<br />

die man eigens starten muss, sondern<br />

verwendet integrierte Messpunkte.<br />

Der ebenfalls kostenlose Windows System<br />

State Analyzer kann Änderungen am<br />

System überprüfen.<br />

Mit den beiden Tools ist eine effiziente<br />

Überwachung und Analyse von Servern<br />

möglich, die auch Entwicklern dabei<br />

hilft, Auswirkungen ihrer Programme<br />

auf Windows-Servern zu verstehen. Die<br />

beiden Tools erstellen exportierbare Protokolldateien,<br />

sodass sich beide auch für<br />

das Troubleshooting eignen. Dazu muss<br />

der entsprechende Administrator nur die<br />

Messung durchführen und diese dem<br />

Spezialisten zukommen lassen, der den<br />

Fehler analysiert. Auf diesem Weg versucht<br />

unter anderem auch der Microsoft-<br />

Support, Leistungsprobleme von Kunden<br />

zu beheben.<br />

Windows <strong>Performance</strong><br />

Toolkit<br />

Das Windows <strong>Performance</strong> Toolkit ist<br />

Bestandteil des Windows Software Development<br />

Toolkit (SDK), das Sie kostenlos<br />

von [1] herunterladen können.<br />

Sie benötigen für den Betrieb das Dotnet<br />

Framework 4, das Sie unter [2] erhalten.<br />

Wollen Sie Windows 7 oder Windows<br />

Server 2008 R2 mit dem Tool untersuchen,<br />

brauchen Sie das Windows <strong>Performance</strong><br />

Toolkit 4.7, das zum Windows<br />

Software Development Toolkit 7.1 gehört.<br />

Sie müssen auf einem Server aber nicht<br />

das komplette SDK installieren, sondern<br />

können auch einfach aus dem Verzeichnis<br />

»Setup\WinSDK<strong>Performance</strong>Tool-<br />

Kit_amd64« (64-Bit) oder »WinSDK<strong>Performance</strong>ToolKit«<br />

(32-Bit) die Installation<br />

starten. Die Installation besteht lediglich<br />

aus dem Bestätigen einiger Fenster, eine<br />

Konfiguration ist nicht notwendig. Das<br />

Tool installiert auch keine Treiber oder<br />

ständig laufende Hintergrundprozesse.<br />

Lediglich die Messungen (Traces) laufen<br />

im Hintergrund, wenn Sie diese gestartet<br />

haben.<br />

Das Windows <strong>Performance</strong> Toolkit besteht<br />

im Wesentlichen aus den drei Tools<br />

Xperf, Xperfview und Xbootmgr. Leistungsmessungen<br />

nehmen Sie zunächst<br />

mit dem Befehlszeilen-Tool Xperf vor,<br />

dem Sie beim Start verschiedene Optionen<br />

mitgeben. Während der Analyse<br />

speichert es eine Trace-Datei, die Sie<br />

später mit Xperfview analysieren. Die<br />

Analyse selbst findet in einer grafischen<br />

Oberfläche statt, die sehr gute Filtermöglichkeiten<br />

und Zoomstufen bietet.<br />

Mit Xbootmgr können Sie wiederum den<br />

Bootvorgang des Rechners untersuchen<br />

beziehungsweise die entsprechenden<br />

Abläufe nach einem Standby oder dem<br />

58 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


windows<br />

<strong>Tuning</strong><br />

Ruhezustand. Microsoft stellt dazu unter<br />

[3] ein umfangreiches Whitepaper zur<br />

Verfügung. Um Messungen durchzuführen,<br />

müssen Sie sich aber nicht erst durch<br />

Hunderte Seiten Whitepaper quälen, sondern<br />

erhalten nach der Installation recht<br />

schnell ein Messergebnis.<br />

Haben Sie das Windows <strong>Performance</strong><br />

Toolkit installiert, starten Sie eine einfache<br />

Systemanalyse auf folgendem Weg:<br />

n Öffnen Sie eine Eingabeaufforderung<br />

mit Administratorrechten.<br />

n Geben Sie den Befehl »xperf -start -on<br />

diageasy« ein. Alternativ reicht auch<br />

die Eingabe von »xperf -on diageasy«.<br />

n Anschließend läuft das Tool im Hintergrund<br />

und misst die Systemleistung.<br />

n Starten Sie die Programme und Tools,<br />

deren Leistung Sie messen wollen. Im<br />

Hintergrund misst das Tool die Reaktionszeiten<br />

des Computers.<br />

n Haben Sie alle Aufgaben durchgeführt,<br />

die Sie in der Messung berücksichtigen<br />

wollen, geben Sie den Befehl<br />

»xperf -stop« ein, um die Messung<br />

zu beenden. Sie können die Messung<br />

auch mit »xperf -d trace.etl« beenden<br />

und so alle Daten in die Datei »trace.<br />

etl« übernehmen.<br />

Sie erhalten dann die Meldung, dass das<br />

Windows <strong>Performance</strong> Toolkit die Messdatei<br />

»C:\kernel.etl« erstellt hat. Beenden<br />

Sie den Ablauf mit »xperf -d trace.etl«,<br />

liegt die Datei »trace.etl« vor. Um diese zu<br />

öffnen, geben Sie »xperf trace.etl« ein.<br />

Reagiert Windows 7 zum Beispiel beim<br />

Start zu langsam, können Sie verschiedene<br />

Trace-Vorgänge starten. Mit »xperf<br />

-on -f kernel.etl« starten Sie einen Trace-<br />

Vorgang für den Windows-Basisstart. Anschließend<br />

leiten Sie mit »xperf -start User-<br />

Trace -on Microsoft-Windows-Win32k -f<br />

user.etl« einen weiteren Vorgang parallel<br />

zum ersten für die Anmeldung und Messung<br />

der Benutzeraktionen ein. Führen<br />

Sie dann die problematischen Anwendungen<br />

aus und beenden Sie die Trace-<br />

Vorgänge mit den Befehlen »xperf -stop<br />

UserTrace« und »xperf -stop«.<br />

Die beiden ETL-Dateien können Sie später<br />

noch zusammenfügen. Dazu verwenden<br />

Sie »xperf -merge user.etl kernel.etl<br />

Neuedatei.etl«. Diese Datei analysieren<br />

Sie, um festzustellen, warum der Computer<br />

langsam reagiert (Abbildung 1).<br />

Wollen Sie zusätzlich noch den Bootvorgang<br />

und die damit verbundenen<br />

Abbildung 1: Analysieren einer Trace-Datei nach der Messung.<br />

Abläufe messen, verwenden Sie das<br />

Tool Xbootmgr. Geben Sie den Befehl<br />

»xbootmgr -trace boot -resultpath c:\<br />

temp« auf der Befehlszeile an. Anschließend<br />

startet das Tool den Computer neu<br />

und misst den Bootvorgang. Auch hier<br />

speichert das Tool eine ETL-Datei direkt<br />

im Pfad »C:\temp«. Den Pfad können<br />

Sie dabei frei wählen. Sobald der Bootvorgang<br />

abgeschlossen ist, stehen die<br />

ETL-Dateien zur Analyse bereit. Den<br />

Bootvorgang können Sie auch auf Basis<br />

verschiedener anderer Optionen messen<br />

lassen, abhängig von der Umgebung, die<br />

Sie testen wollen. Folgende Beispiele erstellen<br />

vernünftige Analysen:<br />

n Bootvorgang erweitert: »xbootmgr<br />

- trace boot - traceFlags BASE+<br />

CSWITCH+ DRIVERS+POWER -resultPath<br />

C:\temp«<br />

n Herunterfahren: »xbootmgr -trace shutdown<br />

-traceFlags BASE+ CSWITCH+<br />

DRIVERS+POWER -resultPath C:\<br />

temp«<br />

n Standby: »xbootmgr -trace standby<br />

-traceFlags BASE+ CSWITCH+ DRI-<br />

VERS+ POWER -resultPath C:\temp«<br />

n Start nach Ruhezustand: »xbootmgr<br />

-trace hibernate -traceFlags BASE+<br />

CSWITCH+DRIVERS+POWER -resultPath<br />

C:\temp«<br />

Erweiterte Analysen mit<br />

Xperf<br />

Neben der einfachen Standardanalyse,<br />

können Sie mit Xperf auch erweiterte<br />

Messungen durchführen. Alle wichtigen<br />

Optionen des Tools lassen Sie sich mit<br />

dem Befehl »xperf -help start« anzeigen.<br />

Wie Sie die Messvorgänge beenden und<br />

welche Optionen das Windows Perfor-<br />

mance Toolkit dafür zur Verfügung stellt,<br />

verrät der Befehl »xperf -help stop«.<br />

Für Entwickler und erfahrene Administratoren<br />

gibt es auch die Möglichkeit,<br />

mit »xperf -providers k« eine Liste der<br />

Kernel-Flags anzuzeigen, die das Tool<br />

verwendet.<br />

Der erste Ansatz für eine Messung<br />

ist immer der Befehl »xperf -start -on<br />

diageasy«. Dieser erstellt automatisch die<br />

Datei »kernel.etl«. Wollen Sie den Namen<br />

und Pfad der Messdatei selbst bestimmen,<br />

verwenden Sie dafür die Option »-f<br />

Dateiname«.<br />

Messdateien auswerten<br />

Die erstellten Dateien können Sie mit dem<br />

Windows <strong>Performance</strong> Analyzer öffnen,<br />

den Sie in der Programmgruppe „Windows<br />

<strong>Performance</strong> Toolkit“ finden. Um<br />

die Ergebnisse anzuzeigen, öffnen Sie die<br />

Datei »C:\kernel.etl« oder die ETL-Datei<br />

des Bootvorgangs über »File | Open«.<br />

Die Messdateien sind transportabel. Das<br />

heißt, Sie können nach der Leistungsmessung<br />

durch Xperf oder Xbootmgr die<br />

Analyse mit Xperfview auch auf einem<br />

anderen Computer durchführen. In manchen<br />

Fällen erhalten Sie beim Öffnen eine<br />

Fehlermeldung. Starten Sie in diesem Fall<br />

eine Eingabeaufforderung mit Administratorrechten<br />

und tippen Sie den Befehl<br />

»xperfview Datei -tti« ein.<br />

Die Anzeige der verschiedenen Bereiche<br />

filtern Sie über den Menübereich, den<br />

Sie durch Anklicken des linken Fensterteils<br />

einblenden. Klicken Sie dazu auf<br />

das Symbol am linken Rand in der Mitte<br />

des Fensters. An dieser Stelle stehen die<br />

verschiedenen Messbereiche zur Verfügung,<br />

die Sie einblenden lassen können.<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

59


<strong>Tuning</strong><br />

windows<br />

Abbildung 2: Anzeige einer Tabelle der Messdaten.<br />

Entfernen Sie den Haken bei einem Kontrollkästchen,<br />

verschwindet auch das entsprechende<br />

Diagramm im Viewer.<br />

Die Anzeige ist dynamisch, das heißt,<br />

einmal eingeblendete Diagramme können<br />

Sie jederzeit ausblenden und umgekehrt.<br />

So müssen Sie nur die Daten<br />

betrachten, die Sie aktuell analysieren<br />

wollen. Lassen Sie sich zum Beispiel<br />

beim Messen des Bootvorgangs nur »CPU<br />

Usage by Process« anzeigen, sehen Sie,<br />

wie viel CPU-Last die einzelnen Prozesse<br />

verursachen. Mit »Disk I/O« sehen Sie die<br />

Festplattenzugriffe.<br />

Klicken Sie auf die Grafik in einem Diagramm,<br />

können Sie zu Teilen der Anzeige<br />

heranzoomen. Dazu markieren<br />

Sie mit der Maus den Bereich, den Sie<br />

vergrößern wollen, und klicken diesen<br />

mit der rechten Maustaste an. Mit dem<br />

Menübefehl »Zoom to Selection« starten<br />

Sie den Zoomvorgang. Neben Grafiken<br />

können Sie auch Tabellen erstellen, indem<br />

Sie im Kontextmenü die Option<br />

»Summary Table« auswählen. Die Tabelle<br />

zeigt Informationen ähnlich wie<br />

der Task-Manager über den gemessenen<br />

Zeitraum. Sie erkennen auf diese Weise<br />

sehr schnell, welche Prozesse zum Beispiel<br />

über den Messzeitraum die meiste<br />

CPU-Last verursacht haben.<br />

Die Ansicht lässt sich sortieren, indem<br />

Sie auf die entsprechende Spalte der Tabelle<br />

klicken. Markieren Sie verschiedene<br />

Zeilen der Tabelle, können Sie im Kontextmenü<br />

durch Auswahl von »Export<br />

Selection« die Daten in eine CSV-Datei<br />

exportieren. Diese lassen sich später mit<br />

Excel weiterbearbeiten. In diesem Zusammenhang<br />

ist auch ein weiteres Tool<br />

zur Leistungsmessung interessant. Zur<br />

Fehlersuche und Analyse reicht es nicht<br />

immer aus, die Echtzeit-Daten im Task-<br />

Manager oder Zusatztools einzulesen.<br />

Hier stellt die Excel-Tabelle »Taskmanager.xls«<br />

von der Seite [4] eine wertvolle<br />

Hilfe dar. Öffnen Sie die Tabelle in Excel,<br />

können Sie einfach die aktuellen Prozesse<br />

und deren Daten aus dem Task-<br />

Manager einlesen. In die Tabelle können<br />

Sie dann noch die CSV-Dateien des Windows<br />

<strong>Performance</strong> Toolkits importieren,<br />

um zum Beispiel Vergleiche anzustellen<br />

(Abbildung 2).<br />

Eine weitere Möglichkeit der Analyse ist<br />

die Überlagerung von Diagrammen im<br />

Fenster des Viewers. Dazu klicken Sie mit<br />

der rechten Maustaste in das Diagramm,<br />

über das Sie ein anderes Diagramm legen<br />

wollen. Wählen Sie im Kontextmenü<br />

die Option »Overlay Graph« und die gewünschte<br />

Grafik aus, die Sie einblenden<br />

wollen. Auf diesem Weg können Sie zum<br />

Beispiel im Diagramm für die CPU-Messung<br />

noch das Diagramm der Festplattenbenutzung<br />

integrieren.<br />

Benötigen Sie noch detailliertere Informationen,<br />

können Sie zum Beispiel über<br />

das Kontextmenü der Anzeige »Disk I/O«<br />

oder »Disk Utilization« die Option »Detail<br />

Graph« auswählen Mit dieser Option zeigen<br />

Sie genaue Schreib- und Lesezugriffe<br />

Festplattenaktivität<br />

während des Messvorgangs<br />

an. Diese<br />

Daten helfen dabei<br />

zu verstehen, welche<br />

Vorgänge eine<br />

Festplatte aktuell belastet<br />

haben. Für die<br />

Überwachung der<br />

Festplattennutzung<br />

helfen auch andere<br />

Zusatztools von Microsoft<br />

ergänzend<br />

zum Windows <strong>Performance</strong><br />

Toolkit. In<br />

den meisten Fällen<br />

ist es sinnvoll, parallel<br />

weitere Tools<br />

einzusetzen, um die<br />

Messergebnisse besser<br />

analysieren zu<br />

können.<br />

Das freie Tool Diskmon der Microsoft-<br />

Sysinternals [5] zeigt alle Schreib- und<br />

Lesevorgänge der Festplatte in Echtzeit<br />

in einem Fenster an. Das Tool lässt sich<br />

ohne Installation direkt starten. Sie sehen<br />

den physischen Zugriff und die aktuellen<br />

Vorgänge der Festpatte. Das Tool zeigt<br />

die Aktion, Sektor, Zeit, Dauer und auf<br />

welcher Festplatte der Computer aktuell<br />

schreibt. Sie haben die Möglichkeit,<br />

die Ausgabe auch in eine Logdatei zu<br />

speichern.<br />

Aktivieren Sie die Funktion »Minimize<br />

to Tray Disk Light« im Menü »Options«,<br />

minimiert sich das Tool direkt in die Taskleiste<br />

und zeigt die aktuelle Nutzung der<br />

Festplatte an. Auf diese Weise sehen Sie<br />

den Festplattenzugriff in Echtzeit. In<br />

der minimierten Ansicht zeigt das Tool<br />

Schreibzugriffe rot an und Lesezugriffe in<br />

grün. Klicken Sie auf das Symbol, öffnet<br />

sich wieder die ausführliche Ansicht. Wollen<br />

Sie das Tool gleich als Symbol starten,<br />

verwenden Sie die Option »diskmon /l«.<br />

Damit es Daten auslesen kann, müssen<br />

Sie es mit Administratorrechten starten,<br />

wenn Sie die Benutzerkontensteuerung<br />

aktiviert haben.<br />

Windows Server 2008 R2 und Windows<br />

7 blenden das Symbol nach einiger Zeit<br />

aus. Um es dauerhaft einzublenden, klicken<br />

Sie in der Taskleiste auf die zwei<br />

kleinen Pfeile, um auch die ausgeblen-<br />

60 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


windows<br />

<strong>Tuning</strong><br />

deten Symbole anzuzeigen. Wählen Sie<br />

»Anpassen« und dann für das Symbol die<br />

Option »Symbol und Benachrichtigungen<br />

anzeigen«. Um die Echtzeitanzeige zu<br />

deaktivieren, klicken Sie auf die kleine<br />

Lupe. Bewegen Sie die Maus über ein<br />

Symbol, erhalten Sie eine kleine Hilfe zur<br />

entsprechenden Schaltfläche.<br />

Sie können innerhalb des Capture-Fensters<br />

auch nach bestimmten Einträgen suchen.<br />

Mit »History Depth« legen Sie die<br />

maximale Anzahl an Daten fest, die Sie<br />

in der grafischen Oberfläche anzeigen<br />

lassen wollen. Diskmon ermöglicht auch<br />

den Start mehrerer Instanzen zur Überwachung<br />

verschiedener Festplatten im<br />

System. Lassen Sie das Tool zum Beispiel<br />

automatisch als LED minimiert starten,<br />

lässt es sich dennoch noch einmal parallel<br />

starten, sodass die LED aktiv bleibt,<br />

auch wenn Sie mit Diskmon arbeiten.<br />

Systeminformationen<br />

Führen Sie eine Messung mit dem Windows<br />

<strong>Performance</strong> Toolkit an mehreren<br />

Servern durch, ist es auch interessant<br />

zu wissen, wie die Systemkonfiguration<br />

des untersuchten Computers aussieht<br />

und zu welchem Computer die Messdatei<br />

gehört, die Sie aktuell überprüfen.<br />

Diese Informationen speichert das Windows<br />

<strong>Performance</strong> Toolkit ebenfalls in<br />

der ETL-Datei. Klicken Sie im Viewer auf<br />

»Trace | System Configuration«,<br />

öffnet<br />

sich ein neues Fenster,<br />

das ausführliche<br />

Informa tionen zum<br />

Computer liefert.<br />

Das Fenster zeigt den<br />

Namen des Computers,<br />

die Domäne,<br />

das installierte Betriebssystem,<br />

den<br />

Versionsstand, die<br />

Taktung des Prozessors<br />

und die Größe<br />

des Arbeitsspeichers an (Abbildung 3).<br />

Auf verschiedenen Registerkarten erhalten<br />

Sie weitere Informationen, die vielen<br />

Tools zur Systemanalyse in nichts<br />

nachstehen. Auch hier können Sie durch<br />

Markieren und Rechtsklick Daten in CSV-<br />

Dateien exportieren. Auf der Registerkarte<br />

Traces sehen Sie, wann Sie die Messung<br />

genau durchgeführt haben.<br />

In der Befehlszeile aktualisieren Sie die<br />

Systemkonfiguration mit dem Befehl<br />

»xperf -i trace.etl -a sysconfig«. Mit dem<br />

Befehl »systeminfo« in der Befehlszeile<br />

zeigen Sie alle Informationen eines Servers<br />

in der Eingabeaufforderung an, darunter<br />

finden sich Infos über Hotfixes,<br />

Netzwerkkarten, Prozessor, Betriebssystem,<br />

Hersteller und so weiter – sogar<br />

die aktuelle Systembetriebszeit (also wie<br />

lange der Rechner bereits läuft) und das<br />

AZ_WebDevCon_210x107.qxd:Layout 1 23.08.2011 12:14 Uhr Seite 1<br />

Abbildung 3: Anzeigen der Systemkonfiguration eines Servers.<br />

ursprüngliche Installationsdatum lassen<br />

sich anzeigen. Hier empfiehlt sich die<br />

Umleitung in eine Textdatei, wobei Sie<br />

zusätzlich den Parameter »/FO list« angeben<br />

sollten, um die Informationen formatiert<br />

zu speichern. Um alle Infos in die<br />

Textdatei »C:\sysinfo.txt« zu speichern,<br />

verwenden Sie den Befehl »systeminfo<br />

/FO list > C:\sysinfo.txt«. Diese Datei<br />

können Sie anschließend mit der ETL-<br />

Datei des Windows <strong>Performance</strong> Toolkits<br />

zur Analyse verwenden.<br />

Windows System State<br />

Analyzer<br />

Leistungsprobleme auf Computern treten<br />

häufig nach der Installation von Anwendungen<br />

oder Treibern auf. Auch hier<br />

bietet Microsoft ein Tool, das bei der Leis-<br />

web DevCon<br />

Die Konferenz für Web-Entwickler<br />

Themen der Web DevCon sind u.a.:<br />

- Web-Technologien - Web-Architekturen<br />

- JavaScript - PHP<br />

- RIA - Frameworks<br />

- Cloud Computing - Social Web<br />

17.-18. Oktober 2011<br />

InterContinental Hamburg<br />

Teilnahmegebühr<br />

ab € 399,–<br />

präsentiert von:<br />

Partnerkonferenz:<br />

zzgl. MwSt.<br />

Ihr Code:<br />

www.web-devcon.de<br />

web_devcon<br />

#wdc11<br />

PROwdc11lnm


<strong>Tuning</strong><br />

windows<br />

Abbildung 4: Erstellen von Snapshots zum Erkennen von Systemänderungen.<br />

tungsmessung helfen kann. Installieren<br />

Sie eine Anwendung auf einem Computer,<br />

führt sie meistens viele Änderungen<br />

an Systemdateien, Verzeichnissen und<br />

der Registry durch. Als Ergebnis dieser<br />

Änderungen kann ein System mit der Zeit<br />

sehr träge reagieren. Windows System<br />

State Analyzer (WSSA) ist Bestandteil<br />

des Software Certification Toolkit. Dieses<br />

steht in einer 32-Bit- und einer 64-Bit-<br />

Version zur Verfügung [6][7].<br />

Vergleich von Snapshots<br />

Damit Sie mit dem Tool eine Messung<br />

durchführen können, erstellen Sie erst<br />

einen Snapshot, installieren dann die<br />

entsprechende Anwendung und erstellen<br />

einen weiteren Snapshot. Anschließend<br />

haben Sie die Möglichkeit die beiden<br />

Snapshots miteinander zu vergleichen:<br />

n Starten Sie Windows System State<br />

Analyzer.<br />

n Aktivieren Sie die Registerkarte<br />

»Snapshot«.<br />

n Belassen Sie die Option »Create<br />

New«.<br />

n Legen Sie den Pfad fest, in dem Windows<br />

den Snapshot speichern soll.<br />

n Klicken Sie auf »Start«.<br />

Das Tool erstellt einen Schnappschuss<br />

des aktuellen Systemzustandes. Das<br />

kann mehrere Minuten dauern. Sie sehen<br />

den Status im unteren Bereich des<br />

Fensters. Anschließend installieren Sie<br />

die Anwendung, deren Änderungen Sie<br />

überwachen wollen. Dabei lassen Sie<br />

WSSA gestartet. Führen Sie ansonsten<br />

keinerlei Änderungen durch, um das Ergebnis<br />

nicht zu verfälschen. Haben Sie<br />

die Anwendung installiert, klicken Sie<br />

auf der rechten Seite des Tools auf die<br />

Option »Create New«. Wählen Sie auch<br />

hier den Pfad aus.<br />

Ihnen stehen anschließend beide<br />

Schnappschüsse zur Verfügung und Sie<br />

können die Änderungen vergleichen.<br />

Dazu klicken Sie unten im Fenster auf die<br />

Schaltfläche »Compare«. Anschließend<br />

beginnt das Tool die beiden Schnappschüsse<br />

miteinander zu vergleichen und<br />

zeigt die vorgenommenen Änderungen<br />

an. Im neuen Fenster zeigt das Tool<br />

Änderungen strukturiert nach Dateisystem,<br />

Registry, Dienste und Treiber an<br />

(Abbildung 4).<br />

Boot-Zeit<br />

Neben der reinen Leistungsmessung mit<br />

Zusatztools bietet Windows 7 auch interne<br />

Möglichkeiten, um kleinere Messungen<br />

durchzuführen. Nehmen Sie <strong>Tuning</strong>maßnahmen<br />

an Installationen von Windows<br />

7 vor, ist es sinnvoll zu erfahren, wie<br />

sich diese auf den Systemstart auswirken.<br />

Den Zeitraum, den Windows zum Starten<br />

braucht, hält das Betriebssystem in der<br />

Ereignisanzeige fest. Auf folgendem Weg<br />

zeigen Sie den Zeitraum an:<br />

n Geben Sie »eventvwr« im Suchfeld des<br />

Startmenüs ein.<br />

n Navigieren Sie zu »Anwendungs- und<br />

Dienstprotokolle | Microsoft | Windows<br />

| Diagnostics-<strong>Performance</strong> | Betriebsbereit«.<br />

n Ereignisse mit der ID 100 zeigen die<br />

Startdauer an, Ereignisse mit der ID<br />

200 die Dauer zum Herunterfahren.<br />

In Windows Server 2008 R2 fehlt diese<br />

Diagnosemöglichkeit jedoch.<br />

Geben Sie den Begriff Zuverlässigkeit<br />

im Suchfeld des Startmenüs ein, erstellt<br />

Windows 7 einen Bericht, über den Sie<br />

Fehler und Informationen zum Betriebssystem<br />

schnell und einfach anzeigen<br />

können. Sie bekommen einen Index<br />

der Systemleistung angezeigt und erhalten<br />

zusätzliche Informationen, wenn<br />

Sie eine Meldung anklicken. Auch auf<br />

diesem Weg können Sie Änderungen<br />

erkennen und zusammen mit den anderen<br />

erwähnten Tools feststellen, warum<br />

das System zu einem bestimmten<br />

Zeitraum nicht zuverlässig funktioniert<br />

hat. (ofr)<br />

n<br />

Infos<br />

[1] Windows <strong>Performance</strong> Analysis Developer<br />

Center: [http:// msdn. microsoft. com/ de‐de/<br />

performance/ cc752957]<br />

[2] Dotnet Framework Developer Center:<br />

[http:// go. microsoft. com/ fwlink/ ?<br />

LinkID=187668]<br />

[3] Windows On/ Off Transition <strong>Performance</strong><br />

Analysis: [http:// msdn. microsoft. com/<br />

en‐us/ windows/ hardware/ gg463386. aspx]<br />

[4] Blog von Didier Stevens:<br />

[http:// blog. didierstevens. com]<br />

[5] DiskMon für Windows 2.01:<br />

[http:// technet. microsoft. com/ de‐de/<br />

sysinternals/ bb896646]<br />

[6] Software Certification Toolkit 32 Bit:<br />

[http:// go. microsoft. com/ fwlink/ ?<br />

LinkID=140110]<br />

[7] Software Certification Toolkit 64 Bit:<br />

[http:// go. microsoft. com/ fwlink/ ?<br />

LinkID=140109]<br />

Der Autor<br />

Thomas Joos ist freiberuflicher IT‐Consultant<br />

und seit über 20 Jahren in der IT tätig. Neben<br />

seinen Projekten schreibt er praxisnahe Fachbücher<br />

und Fachartikel rund um Windows und<br />

andere Microsoft‐Themen. Online ist er unter<br />

der Adresse [http:// thomasjoos. spaces. live.<br />

com] anzutreffen.<br />

62 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Admin-mAGAZin<br />

im JAhres-Abo<br />

Jede Ausgabe des Admin-<strong>Magazin</strong>s bietet praktisch anwendbares Wissen<br />

von ausgewiesenen Experten und ausführliche Hintergrundberichte für alle<br />

Systemverwalter von Linux, Unix und Windows. Die Schwerpunkte reichen von<br />

Storage und Backup bis hin zu Netzwerk-Themen und Security.<br />

Ein Sonderteil hilft Admins heterogener Welten.<br />

15 % sparen<br />

Jetzt bestellen unter:<br />

www.admin-magazin.de/abo<br />

sichern sie sich ihr<br />

GrAtis Admin t-shirt!<br />

• Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@admin-magazin.de<br />

Mit dem Jahres-Abo erhalten Sie 6 Ausgaben des Admin-<strong>Magazin</strong>s zum Vorzugspreis von E 49,90 * statt E 58,80 *<br />

(Lieferung frei Haus).<br />

* Preise gelten für Deutschland. Schweiz: SFr 99,90; Österreich: E 54,90; anderes Europa: E 59,90


T uning<br />

i/ O-benchmarks<br />

johnjohnson, 123RF<br />

I/​O-Benchmarks​mit​Fio<br />

Blockweise<br />

einfache disk-benchmarks messen oft nur einen bestimmten Anwendungsfall. der flexible i/ O-Tester Fio simuliert<br />

ganz unterschiedliche workloads und misst neben der bandbreite auch die Anzahl der i/ Os pro sekunde,<br />

Latenzen sowie die CPu-Auslastung. martin steigerwald<br />

Der Maintainer der Blockgeräte-Ebene<br />

des Linux-Kernels Jens Axboe entwickelte<br />

Fio, um die <strong>Performance</strong> in unterschiedlichen<br />

Anwendungsfällen zu messen.<br />

Einfache Benchmarks wie »hdparm«<br />

oder »dd« sind zu beschränkt und testen<br />

beispielsweise nur sequenzielles I/ O,<br />

das in üblichen Workloads mit vielen<br />

kleinen Dateien keine große Rolle spielt.<br />

Für jeden Workload ein eigenes Testprogramm<br />

zu schreiben, ist indes ziemlich<br />

aufwendig.<br />

Aktuell ist die Version 1.57. Für Debian<br />

gibt es ein vom Artikel-Autor erstelltes<br />

Paket, das Ubuntu-Entwickler in Ubuntu<br />

übernommen haben. Für Suse-Versionen<br />

ab SLES 9 sowie Open Suse 11.3 stellt<br />

das Benchmark-Repository ein aktuelles<br />

Paket bereit [1].<br />

In Fedora ist Fio ebenfalls enthalten.<br />

Die Quellen aus dem Tarball oder dem<br />

Git-Repository lassen sich mit den Entwicklerdateien<br />

zur »libaio«, bei Debian<br />

und Abkömmlingen als »libaio-dev«, bei<br />

RPM-basierten Distributionen üblicherweise<br />

als »libaio-devel«, mit einem simplen<br />

Make übersetzen [2][3]. Auch unter<br />

verschiedenen BSD-Varianten und Win-<br />

dows lässt sich Fio zum Laufen bringen,<br />

wie die Dokumentation erklärt.<br />

Ein I/ O-Workload besteht aus einem<br />

oder mehreren Jobs. Die Job-Definitionen<br />

nimmt Fio als Parameter auf der Befehlszeile<br />

oder als Job-Dateien in dem von<br />

Windows und KDE bekannten Ini-Format<br />

entgegen.<br />

So richtet Fio mit dem einfachen Aufruf<br />

fio ‐‐name=zufälliglesen ‐‐rw=randreadU<br />

‐‐size=256m<br />

den Job »zufälliglesen« ein und führt<br />

ihn aus: Fio erstellt dazu im aktuellen<br />

Verzeichnis eine Datei mit der Größe<br />

256 MiB und einen Prozess für den Job.<br />

Dieser Prozess liest den gesamten Datei-<br />

Inhalt in zufälliger Abfolge. Fio führt<br />

dabei Buch über bereits gelesene Bereiche<br />

und liest jeden Bereich nur einmal.<br />

Währenddessen misst das Programm die<br />

CPU-Auslastung, die erzielte Bandbreite,<br />

die Anzahl der I/ Os pro Sekunde und die<br />

Latenzen. Das Ganze funktioniert natürlich<br />

auch als Job-Datei:<br />

[zufälliglesen]<br />

rw=randread<br />

size=256m<br />

Von da aus lässt sich der Workload beliebig<br />

erweitern. So definiert<br />

[global]<br />

rw=randread<br />

size=256m<br />

[zufälliglesen1]<br />

[zufälliglesen2]<br />

zwei Jobs, die jeweils eine 256 MiB große<br />

Datei in zufälliger Reihenfolge einlesen.<br />

Alternativ erreicht die Option »numjobs=2«<br />

den gleichen Effekt.<br />

Fio führt standardmäßig alle Jobs aus.<br />

Mit der Option »stonewall« wartet Fio,<br />

bis alle vorher laufenden Jobs fertig sind,<br />

bevor es weitermacht. So liest Fio mit<br />

[global]<br />

rw=randread<br />

size=256m<br />

[zufälliglesen]<br />

[sequenzielllesen]<br />

stonewall<br />

rw=read<br />

zunächst eine Datei zufällig und dann die<br />

zweite Datei sequenziell (Abbildung 1).<br />

Die Optionen in der Sektion »global« gelten<br />

dabei für alle Jobs und lassen sich pro<br />

64 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


i/ O-benchmarks<br />

<strong>Tuning</strong><br />

Job abändern. Möchte man<br />

jeweils zwei Gruppen von<br />

zwei gleichzeitig laufenden<br />

Jobs hintereinander laufen<br />

lassen, muss die Option<br />

»stonewall« beim dritten<br />

Job stehen. Vor dem Ausführen<br />

einer Job-Gruppe<br />

verwirft Fio den Pagecache,<br />

wenn nicht »invalidate=0«<br />

gesetzt ist.<br />

Während Fio den Workload<br />

ausführt, informiert es<br />

über seine Fortschritte:<br />

Jobs: 1 (f=1): [rP] [64.7% U<br />

done] [16948K/0K /s] [4137 /U<br />

0 iops] [eta 00m:06s]<br />

Im Beispiel läuft der erste<br />

Job mit sequenziellem Lesen,<br />

in den eckigen Klammern<br />

markiert als »r«,<br />

während Fio den zweiten<br />

noch nicht initialisiert<br />

hat, markiert als »P«. Der<br />

Buchstabe »R« steht für sequenzielles<br />

Lesen, »w« für<br />

zufälliges Schreiben, »W« für sequenzielles<br />

Schreiben und so weiter (siehe Manpage<br />

unter »OUTPUT«). Das Programm<br />

gibt zusätzlich den prozentualen Fortschritt<br />

der aktuellen Job-Gruppe, dann<br />

die aktuelle Lese- und Schreibgeschwindigkeit,<br />

die aktuellen Lese- und Schreib-<br />

IOPS sowie die voraussichtliche Dauer<br />

des Tests aus.<br />

Sind alle Jobs fertig, präsentiert das Programm<br />

die Ergebnisse. Neben der erreichten<br />

Bandbreite und den IOPS zeigt<br />

Fio unter anderem die CPU-Auslastung<br />

und die Anzahl der Kontext-Switches. Im<br />

Abschnitt »IO« findet sich die prozentuale<br />

Verteilung, wie viele I/ O-Requests Fio in<br />

Bearbeitung hatte (»IO depths«) und wie<br />

lange deren Abarbeitung dauerte (»lat«<br />

für Latenz).<br />

Abbildung 1 zeigt die Ergebnisse eines<br />

Testlaufs auf einem ThinkPad T520 mit ei-<br />

Tabelle 1: iOPs-Richtwerte<br />

Laufwerk<br />

IOPS-Richtwert<br />

SATA-Platte, 7200 RPM 40 - 100<br />

SATA-Platte, 10 000 RPM 100 - 150<br />

SATA-Platte, 15 000 RPM 170 - 220<br />

SATA-300-SSD 400 - 10 000<br />

PCIe-SSD<br />

bis zu eine Million<br />

Abbildung 1: Ein einfacher Testlauf mit zwei Jobs, die Fio hintereinander durchführt.<br />

ner 300 GB Intel SSD 320 und dem Linux-<br />

Kernel 3.0. Bei <strong>Performance</strong>-Messungen<br />

empfiehlt es sich, vorher zu überlegen,<br />

was man misst, und dann nachzuprüfen,<br />

ob die Ergebnisse glaubwürdig sind.<br />

Das Programm verwendete die Standard-<br />

Blockgröße von 4 KiB wie ganz am Anfang<br />

in der Ausgabe bei den Job-Gruppen<br />

zu sehen. Die etwa 16 000 KiB/ s und 4000<br />

I/ O-Operationen pro Sekunde (IOPS) für<br />

zufälliges Lesen liegen im Rahmen des<br />

für eine SSD Möglichen (siehe Tabelle<br />

und Kasten IOPS-Richtwerte). Bei den<br />

über 65 000 IOPS und 260 MiB/ Sekunde<br />

für sequenzielles Lesen hatten jedoch<br />

Readahead und Pagecache ihre Finger<br />

im Spiel.<br />

Motorenvielfalt<br />

Wie Fio die I/ O-Operationen durchführt,<br />

hängt davon ab, welche I/ O-Engine es<br />

mit welchen Einstellungen verwendet. Einen<br />

Überblick über die vielen beteiligten<br />

Komponenten gibt Abbildung 2. Mehrere<br />

Anwendungen lesen und schreiben Daten,<br />

indem sie mit einem oder mehreren<br />

Prozessen und etwaigen Thre ads System-<br />

Funktionen aufrufen. Die System-Routinen<br />

verwenden oder umgehen je nach<br />

iOPs-Richtwerte<br />

Wie viele IOPS ein Laufwerk erreichen kann,<br />

richtet sich nach dessen Leistungsfähigkeit sowie<br />

dem definierten Workload. Der Schnittstellentyp<br />

wie SATA, SAS, Fibre Channel oder PCIe<br />

und der Controller üben ebenfalls einen Einfluss<br />

aus. In der Regel geht es darum, die Geschwindigkeit<br />

beim Arbeiten mit kleinen I/ Os zu testen.<br />

Daher kommt typischerweise eine Blockgröße<br />

von 4 KiB zum Einsatz. In diesem Fall erreicht<br />

eine Festplatte mit 70 IOPS maximal eine Datentransferrate<br />

von 70 * 4 KiB also 280 KiB<br />

pro Sekunde – ein Wert, der deutlich unter der<br />

maximalen sequenziellen Datentransferrate bei<br />

großen Blockgrößen liegt. Die mittlere Zugriffszeit<br />

errechnet sich aus dem Kehrwert der IOPS<br />

und beträgt für die genannten 70 IOPS knapp<br />

14,3 Millisekunden. Eine SSD braucht bei 4000<br />

IOPS circa 0,25 Milli- oder 250 Mikrosekunden<br />

(siehe Abbildung 1).<br />

Einige Messwerte für Festplatten, SSDs und das<br />

PCIe-Flash Fusion ioDrive finden sich unter [4]<br />

und [5]. Bei Festplatten setzt sich die mittlere<br />

Zugriffszeit aus der Spurwechselzeit (seek time)<br />

und der durchschnittlichen Latenz, also der<br />

Dauer einer halben Umdrehung der Festplatte<br />

[6]​zusammen. Bei kleinen I/ O-Größen ist die<br />

Datenübertragungsrate in der Regel vernachlässigbar,<br />

ebenso wie der Controller-Overhead.<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

65


T uning<br />

i/ O-benchmarks<br />

Abbildung 2: Viele Ebenen spielen ineinander, um Daten zu lesen und zu<br />

speichern.<br />

Parameter den Pagecache. Zugriffe auf<br />

Dateien setzt ein Dateisystem in Zugriffe<br />

auf Blöcke um, während systemnahe Programme<br />

wie »dd«, der Linux-Kernel beim<br />

Auslagern auf ein Swap-Gerät sowie entsprechend<br />

konfigurierte Anwendungen<br />

wie einige Datenbanken oder der Newsfeeder/<br />

Reader Diablo direkt auf Blockgeräte<br />

schreiben [7]. Im Block Layer<br />

gibt der gerade laufende I/ O-Scheduler<br />

die Requests nach festgelegten Regeln<br />

an die Gerätetreiber weiter. Der Controller<br />

schließlich spricht das Gerät an,<br />

das ebenfalls einen mehr oder weniger<br />

aufwendigen Controller mit eigener Firmware<br />

besitzt.<br />

Für Ergebnisse von <strong>Performance</strong>-Messungen<br />

ist es ausschlaggebend, ob Requests<br />

asynchron oder synchron verarbeitet<br />

werden. Auch die Länge der Request-<br />

Warteschlange sowie der Einsatz oder<br />

das Überspringen des Pagecaches sind<br />

bedeutsam. Allerdings<br />

gibt es asynchrones<br />

und synchrones Verhalten<br />

sowie Warteschlangen<br />

sowohl<br />

auf der Anwendungsebene<br />

als auch auf der<br />

Geräte-Ebene.<br />

So arbeitet die in<br />

den bisherigen Beispielen<br />

verwendete<br />

I/ O-Engine »sync«, die<br />

die Systemfunktionen<br />

»read«, »write« und<br />

gegebenenfalls »lseek«<br />

verwendet, auf Anwendungsebene<br />

synchron,<br />

ebenso wie<br />

»psync« und »vsync«:<br />

Der Aufruf der Funktion<br />

kehrt erst zurück,<br />

wenn die Daten gelesen<br />

oder zum Schreiben im Pagecache gelandet<br />

sind. Daher ist die Länge der Warteschlange<br />

auf Anwendungsebene immer<br />

eins. Solange der Prozess aber nicht zu<br />

viele Daten auf einmal schreibt, landen<br />

diese erst einmal nicht auf der Platte (Abbildung<br />

3). Der Kernel sammelt sie im<br />

Pagecache und schreibt sie auf Geräte-<br />

Ebene später doch asynchron.<br />

Das Lesen geschieht bei den synchronen<br />

Engines auch auf Geräte-Ebene synchron,<br />

es sei denn, mehrere Prozesse lesen<br />

gleichzeitig. Das ist dann aber nicht so<br />

effizient wie asynchrones I/ O auf der<br />

Anwendungsebene. Wer den Pagecache<br />

umgehen und damit das Gerät selbst<br />

messen möchte, verwendet die Option<br />

»direct=1«. Auf Geräte-Ebene synchrones<br />

und damit unrealistisch langsames<br />

Arbeiten aktiviert die Option »sync=1«,<br />

die bei den meisten Engines der Funktion<br />

»open()« das Flag »O_SYNC« übergibt.<br />

Dann kehrt der System-Aufruf erst zurück,<br />

wenn die Daten auf dem Laufwerk<br />

sind.<br />

Auf der Anwendungsebene asynchron<br />

arbeiten unter anderem die Engines<br />

»libaio«, »posixio«, »windowsaio« und<br />

»solarisaio«[8]. Mit asynchronen I/ Os<br />

setzt die Anwendung mehrere Requests<br />

ab, ohne auf jeden einzelnen Request<br />

zu warten. So rechnet sie mitunter mit<br />

bereits erhaltenen Daten, während weitere<br />

Requests in Bearbeitung (pending)<br />

sind. Wie viele Requests Fio maximal in<br />

Bearbeitung hält, kontrolliert die Option<br />

»iodepth«, wie viele das Programm auf<br />

einmal losschickt »iodepth_batch« und<br />

»iodepth_batch_complete«. Allerdings<br />

funktioniert dies unter Linux nur mit direktem<br />

I/ O, also unter Umgehung des Pagecaches.<br />

Gepuffertes I/ O ist unter Linux<br />

auf Anwendungsebene immer synchron.<br />

Zudem funktioniert direktes I/ O nur mit<br />

einem Vielfachen der Sektorgröße als<br />

Blockgröße.<br />

So ergibt der Job in Listing 1 deutlich<br />

weniger Bandbreite und IOPS für das sequenzielle<br />

Lesen Werte, die näher an den<br />

tatsächlichen Fähigkeiten des Laufwerks<br />

liegen (siehe Abbildung 4). Da die meisten<br />

Anwendungen auf die Vorzüge gepufferten<br />

I/ Os zurückgreifen, machen Tests,<br />

die den Pagecache einbeziehen, durchaus<br />

Listing 1: synchrones i/ O<br />

01 [global]<br />

02 ioengine=sync<br />

03 direct=1<br />

04 rw=randread<br />

05 size=256m<br />

06 filename=testdatei<br />

07<br />

08 [zufälliglesen]<br />

09 [sequentielllesen]<br />

10 stonewall<br />

11 rw=read<br />

Abbildung 3: Knapp 1 GiB/ s und 256000 IOPS sind auch für eine Intel SSD 320 unrealistisch.<br />

66 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


i/ O-benchmarks<br />

<strong>Tuning</strong><br />

Listing 2: Puffer neu füllen<br />

01 [global]<br />

02 ioengine=libaio<br />

03 direct=1<br />

04 filename=testdatei<br />

05 size=2g<br />

06 bs=4m<br />

07<br />

08 refill_buffers=1<br />

09<br />

10 [schreiben]<br />

11 rw=write<br />

12 write_bw_log<br />

13<br />

14 [lesen]<br />

15 stonewall<br />

16 rw=read<br />

17 write_bw_log<br />

Abbildung 4: Direktes I/ O unter Umgehung des Pagecache liegt näher an den tatsächlichen Fähigkeiten des Laufwerks.<br />

Sinn. Für solche ist jedoch eine große Datenmenge<br />

von mindestens zweimal der<br />

RAM-Größe empfehlenswert. Ohnehin<br />

ist es sinnvoll, eine Messung mindestens<br />

dreimal durchzuführen und nach Abweichungen<br />

zu schauen.<br />

Durch die Angabe eines Dateinamens im<br />

allgemeinen Bereich verwenden beide<br />

Tests die gleiche Datei. Durch Jobs erstellte<br />

Dateien löscht Fio nicht. Das Programm<br />

füllt solche Dateien mit Nullen.<br />

Für Festplatten ist das in der Regel okay.<br />

In Zusammenhang mit Dateisystemen<br />

oder SSDs, die komprimieren, wie etwa<br />

SSDs mit neuerem Sandforce-Chipsatz<br />

oder BTRFS mit der entsprechenden<br />

Mount-Option, misst Fio so jedoch, wie<br />

effizient der Komprimier-Algorithmus<br />

Nullen zusammenfasst. Für zufällige Daten<br />

sorgt entweder das vorherige Anlegen<br />

der Datei mit »dd« aus »/dev/urandom«<br />

oder das vorherige Schreiben in die Datei<br />

mit Fio selbst. Die Option »refill_buffers«<br />

weist Fio an, den Schreibpuffer nicht nur<br />

einmal, sondern jedes Mal mit neuen zufälligen<br />

Daten zu füllen (Listing 2).<br />

Die sequenzielle Transferrate bei großen<br />

Blöcken protokolliert Fio mit der Option<br />

»write_bw_log« in »schreiben_bw.log«<br />

oder »lesen_bw.log«, so lange man kein<br />

anderes Präfix angibt. Aus den Protokollen<br />

im aktuellen Verzeichnis erstellt das<br />

kleine Skript »fio_generate_plots« einen<br />

Graphen (Abbildung 5). Als Argumente<br />

nimmt es einen Titel und in der aktuellen<br />

Git-Fassung auch die Auflösung entgegen.<br />

Dieser Workload erreicht mit 54<br />

großen IOPS beim Schreiben ungefähr<br />

220 MiB/ s und mit 68 IOPS beim Lesen<br />

circa 280 MiB/ s und liegt damit<br />

nur knapp unter dem theoretischem<br />

Limit für eine SATA-300-<br />

Schnittstelle. Wichtig: Trotz 20<br />

GBytes pro Tag für minimal 5<br />

Jahre bei einer Intel SSD 320<br />

ist es empfehlenswert, mit SSD-<br />

Schreibtests achtsam zu sein<br />

und die SSD mithilfe des »fstrim«-Befehls<br />

aus einem aktuellen »util-linux«-Paket zu<br />

entlasten [9].<br />

Der Workload aus Listing 3 zum Messen<br />

der IOPS mit einer variablen Blockgröße<br />

von 2 bis 16 KiB verwendet die zuvor angelegte<br />

Datei weiter (Abbildung 6). Am<br />

Leistungslimit ist die SSD damit jedoch<br />

noch nicht, wie die 68 beziehungsweise<br />

Abbildung 5: Ein kleines Skript erstellt Graphen aus Bandbreiten- oder Latenz-Protokollen.<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

67


T uning<br />

i/ O-benchmarks<br />

Um immer noch ein paar zusätzliche<br />

Requests in Bearbeitung zu haben, empfiehlt<br />

sich ein Versuch mit der doppelten<br />

Anzahl. Mit »iodepth=64« steigt<br />

die <strong>Performance</strong> erheblich, Kernel und<br />

SSD-Firmware haben bei längeren Warteschlangen<br />

mehr Spielraum für Optimierungen<br />

(siehe Abbildung 7). Allerdings<br />

braucht die SSD durchschnittlich auch<br />

deutlich länger, um Requests zu beantworten.<br />

Da der Kernel auch mit synchronen I/ O<br />

auf Anwendungsebene beim gepufferten<br />

Schreiben vieler Daten oder beim gleichzeitigen<br />

Lesen und Schreiben durch viele<br />

Prozesse auf Geräte-Ebene ebenfalls viele<br />

Requests in Bearbeitung hält, macht es<br />

durchaus Sinn, mit verschiedenen Warteschlangenlängen<br />

zu testen. Eine einfache<br />

Möglichkeit ist es, in der Job-Datei<br />

»iodepth=$IODEPTH« zu schreiben und<br />

Fio die Länge als Umgebungsvariable<br />

mitzuteilen.<br />

Variation<br />

Abbildung 6: Das mit einer Warteschlangenlänge von eins quasi synchrone I/ O lastet die Intel SSD nur zu etwa<br />

67 Prozent aus.<br />

67 Prozent für »util« für das logische<br />

Laufwerk und die SSD selbst aussagen.<br />

Beim sequenziellen Workload lag die<br />

Auslastung bei 97 Prozent. Die maximale<br />

Laufzeit von 60 Sekunden unterschreitet<br />

die SSD bei einer 2 GiB großen Datei<br />

dennoch bei einigen Tests.<br />

Mit einer Warteschlangenlänge von eins<br />

wartet auch die I/ O-Engine »libaio« auf<br />

jeden Request, bevor sie den nächsten<br />

abschließt. Das lastet bei kleinen Blockgrößen<br />

die Warteschlange auf Geräte-<br />

Ebene nicht aus. Die SSD unterstützt<br />

Listing 3: Variable blockgrößen<br />

01 [global]<br />

02 ioengine=libaio<br />

03 direct=1<br />

04 # Für zufällige Daten über die komplette Länge<br />

05 # der Datei vorher Job sequentiell laufen<br />

lassen<br />

06 filename=testdatei<br />

07 size=2G<br />

08 bsrange=2k‐16k<br />

09<br />

10 refill_buffers=1<br />

11<br />

12 [zufälliglesen]<br />

13 rw=randread<br />

14 runtime=60<br />

Native Command Queuing mit bis zu 32<br />

Requests:<br />

$ hdparm ‐I /dev/sda | grep ‐i queue<br />

Queue depth: 32<br />

* Native Command Queueing (NCQ)<br />

15<br />

16 [sequentielllesen]<br />

17 stonewall<br />

18 rw=read<br />

19 runtime=60<br />

20<br />

21 [zufälligschreiben]<br />

22 stonewall<br />

23 rw=randwrite<br />

24 runtime=60<br />

25<br />

26 [sequentiellschreiben]<br />

27 stonewall<br />

28 rw=write<br />

29 runtime=60<br />

Eine anderer Weg ist, mit vielen Prozessen<br />

gleichzeitig zu testen oder viele Daten<br />

gepuffert zu schreiben. So liefert ein<br />

Test mit »numjobs=64« ebenfalls deutlich<br />

höhere Werte, die die Option »group_<br />

reporting« pro Gruppe zusammenfasst.<br />

Die Befehlszeilen-Option »--eta=never«<br />

schaltet die überlange Fortschrittsanzeige<br />

ab. Hohe Latenzen bei der Reaktion auf<br />

Benutzereingaben selbst auf einem Intel<br />

Sandybridge i5 Dualcore und etwa<br />

770 000 Kontext-Switches zeigen den höheren<br />

Overhead dieser Methode. Doch<br />

immerhin sind auch damit circa 160 bis<br />

180 MB/ s und 18 000 bis 19 000 IOPS<br />

beim Lesen und ungefähr 110 MiB/ s und<br />

12500 IOPS beim Schreiben drin. Die<br />

Messprotokolle stehen auf der <strong>ADMIN</strong>-<br />

Website zum Download bereit.<br />

Damit sind die Möglichkeiten von Fio<br />

noch lange nicht ausgeschöpft. Das<br />

Programm arbeitet auch direkt mit der<br />

Hardware, wie der Beispiel-Job »diskzone-profile«<br />

zeigt, der über die gesamte<br />

Größe eines Laufwerks in Abständen die<br />

Lese-Transferrate misst. Für hardwarenahe,<br />

realistische Messungen ist es bei<br />

Festplatten empfehlenswert, immer das<br />

ganze Laufwerk zu verwenden, da die<br />

Transferrate bei den außen liegenden Sektoren<br />

aufgrund des größeren Zylinderumfangs<br />

höher ist. So ergeben sich bei einer<br />

2,5-Zoll-Hitachi-Platte mit 500 GByte via<br />

eSATA beim zufälligen Lesen von 2 bis 16<br />

KiB-Blöcken mit »iodepth=1« noch etwa<br />

50 IOPS (Abbildung 8). Alternativ verwendet<br />

man nur den Anfang der Platte.<br />

Bei Lese-Tests mit ganzen Laufwerken,<br />

70 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


i/ O-benchmarks<br />

<strong>Tuning</strong><br />

Fio ebenfalls. Ein Blick in die Manpage<br />

und das Howto offenbart die ganze Funktionsvielfalt.<br />

So sehr Workload und Test-Setup gemessene<br />

<strong>Performance</strong>-Werte beeinflussen,<br />

so individuell sind auch die <strong>Tuning</strong>die<br />

wertvolle Daten enthalten,<br />

bietet die Befehlszeilen-Option<br />

»--readonly« zusätzliche<br />

Sicherheit.<br />

Weiterhin simuliert Fio mit der<br />

Engine »mmap« Workloads,<br />

die Dateien in den Speicher<br />

einblenden, während »net«<br />

mit »filename=host/port« Daten<br />

über »TCP/IP« sendet oder<br />

empfängt und »cpuio« CPU-Zeit<br />

verbraucht. Zudem verwenden<br />

die Engines »splice« und »netsplice«<br />

die linux-spezifischen<br />

Kernel-Funktionen »splice()«<br />

und »vmsplice()«, um Kopien<br />

von Pages zwischen User- und<br />

Kernelspace zu vermeiden<br />

(Zero Copy). Auf »splice()«<br />

greift die Funktion »sendfile()«<br />

zurück, die zum Beispiel der<br />

Webserver Apache verwendet,<br />

um statische Dateien schneller<br />

auszuliefern.<br />

Auch typische Workloads mit<br />

vielen gepufferten, asynchronen<br />

Schreibzugriffen und mehr<br />

oder weniger »fsync«-Aufrufen<br />

lassen sich mit den Optionen »fsync«,<br />

»fdatasync« oder gar »sync_file_range«<br />

simulieren. Gemischte Workloads mit<br />

einstellbaren Gewichtungen zwischen<br />

Lesen und Schreiben sowie zwischen unterschiedlichen<br />

Blockgrößen unterstützt<br />

Abbildung 7: Hält Fio bis zu 64 Requests gleichzeitig in Bearbeitung, steigen Auslastung und Latenz.<br />

Möglichkeiten. Allgemein gilt die Regel:<br />

Use the defaults [10] – verwende die<br />

Standardwerte, so lange es keinen Grund<br />

gibt, daran etwas zu ändern. Denn erfahrungsgemäß<br />

bringt ein einfaches Drehen<br />

an Optionen oft nur wenige Prozent und<br />

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

ACADEMY<br />

Online-Training<br />

Monitoring mit Nagios<br />

mit Michael Streb von Netways<br />

Netzwerk überwachen leicht gemacht (Auszug):<br />

❚ das Webfrontend<br />

❚ Überwachung von Windows/Linux/Unix<br />

❚ Strukturieren der Konfiguration<br />

❚ Überwachen von SNMP-Komponenten<br />

❚ Addons Nagvis, Grapher V2, NDO2DB<br />

20%<br />

Treue-Rabatt für<br />

Abonnenten<br />

Mit vielen<br />

Praxisbeispielen<br />

Information und Anmeldung unter: academy.linux-magazin.de/nagios


T uning<br />

i/ O-benchmarks<br />

reduziert mitunter sogar die<br />

<strong>Performance</strong>.<br />

Die sinnvollen Maßnahmen<br />

hängen auch von der Intelligenz<br />

des Storage ab. Bei einem<br />

intelligenten und selbst puffernden<br />

SAN-System empfiehlt es<br />

sich, die Intelligenz im Linux zu<br />

reduzieren. Der I/ O-Scheduler<br />

»noop«, durchaus auch für SSDs<br />

sinnvoll, erspart dem Kernel<br />

das möglicherweise gar nicht<br />

zu den Algorithmen im SAN-<br />

System passende Umsortieren<br />

von Requests (siehe dazu das<br />

Verzeichnis »/sys/block/Gerät/<br />

queue«). Bei Readahead im SAN<br />

ist es mitunter sinnvoll, mit<br />

»blockdev -setra« das Read ahead<br />

auf Linux-Seite zu reduzieren,<br />

jedoch die Länge der Warteschlange<br />

zum SAN hin »find /<br />

sys -name "*queue_depth*"«)<br />

zu vergrößern, so weit das SAN<br />

mit der akkumulierten Wartenschlange<br />

aller Clients zurechtkommt.<br />

Es ist sinnvoll, Partitionen und Dateisysteme<br />

an SANs, RAIDs, SSDs und Festplatten<br />

mit 4-KiB-Sektoren, die alle mit größeren<br />

Datenblöcken als 512 Byte arbeiten,<br />

auszurichten. Hier sind dann durchaus<br />

auch mal Geschwindigkeits-Zuwächse im<br />

zweistelligen Prozentbereich drin. Neuere<br />

Versionen von »fdisk« richten sich<br />

mit »-c« automatisch an 1-MiB-Grenzen<br />

aus. Das ist ein guter Standardwert, da<br />

es sich durch übliche Werte wie 4, 64,<br />

128 und 512 KiB teilen lässt. So verwendet<br />

»mdadm« mittlerweile eine Chunksize<br />

von 512 KiB, frühere Versionen und<br />

Hardware-RAIDs oft 64 KiB. Gängige<br />

Dateisysteme wie Ext3 und 4 sowie XFS<br />

unterstützten entsprechende Parameter<br />

in ihren Mkfs- und Mount-Optionen. Für<br />

Dateisysteme gilt: Die Standardwerte<br />

aktueller Mkfs-Versionen bringen häufig<br />

die besten Ergebnisse. Das komplette<br />

Ausschalten der Atime-Aktualisierung<br />

via Mount-Option »noatime« reduziert<br />

Schreibvorgänge gegenüber »relatime«<br />

mitunter spürbar [11].<br />

Fazit<br />

Dieser Artikel zeigt, wie wichtig es ist,<br />

bei <strong>Performance</strong>-Messungen den beabsichtigten<br />

Workload zu berücksichtigen.<br />

Abbildung 8: Eine 2,5-Zoll-Festplatte via eSATA schafft deutlich weniger IOPS als eine SSD.<br />

Alle Angaben zu erzielten IOPS sind relativ<br />

zum Test-Setup und zum Workload zu<br />

verstehen. Die hier beschriebenen Test-<br />

Szenarien sind am Lesen und Schreiben<br />

von Daten ausgerichtet. Auch wenn Fio<br />

mit »nrfiles« mehrere Dateien für einen<br />

Job verwendet, eignen sich für Metadaten-intensive<br />

Workloads andere Benchmarks<br />

wie »bonnie++« oder »compilebench«<br />

besser. (ofr)<br />

n<br />

Infos<br />

[1] Benchmark-Repository für Suse: [http://<br />

download. opensuse.org/repositories/<br />

benchmark/]<br />

[2] Quelltext-Archive für Fio:<br />

[http://brick. kernel.dk/snaps/]<br />

[3] Git-Repository zu Fio:<br />

[git://git. kernel. dk/ fio.git]<br />

[4] Einige IOPS-Messwerte aus dem Wiki<br />

der Thomas Krenn AG: [http://www.<br />

thomas-krenn. com/de/wiki/I/O_<strong>Performance</strong>_Vergleich_von_Festplatten_mit_<br />

SSDs_und_Fusion-io_ioDrive]<br />

[5] IOPS-Richtwerte für Fusion ioDrive:<br />

[http://kb. fusionio. com/KB/a29/verifyinglinux-system-performance.aspx]<br />

[6] Abschnitt IOPS im Artikel Messen von I/<br />

O-<strong>Performance</strong>:<br />

[http://www. thomas-krenn.com/de/wiki/<br />

Messen_von_I/ O_<strong>Performance</strong>#IOPS]<br />

[7] Newsfeeder/ reader Diablo: [http://www.<br />

openusenet. org/ diablo/]<br />

[8] Kernel Asynchronous I/ O (AIO) Support for<br />

Linux: [http:// lse. sourceforge.net/io/aio.<br />

html]<br />

[9] Intel Solid-State Drive 320 Series Product<br />

Specification, 2.6 Reliability:<br />

[http://www. intel. com/content/<br />

www/us/en/ solid-state-drives/<br />

ssd-320-specification.html]<br />

[10] XFS FAQ, Q: I want to tune my XFS filesystems<br />

for : [http://xfs.org/<br />

index.php/ XFS_FAQ#Q:_I_want_to_tune_<br />

my_XFS_filesystems_for_.3Csomething.3E]<br />

[11] Theodore T’so, SSD’s, Journaling,<br />

and noatime/ relatime: [http://www.<br />

linuxfoundation. org/news-media/blogs/<br />

browse/2009/ 03/ ssd%E2%80%99s-journ<br />

aling-and-noatimerelatime]<br />

Der​Autor<br />

Martin Steigerwald arbeitet als Trainer, Consultant<br />

und Systemadministrator bei der team(ix)<br />

GmbH in Nürnberg. Schwerpunkte seiner Tätigkeit<br />

sind Linux-Schulungen, die Konzeption,<br />

Installation und Wartung solider IT-Infrastruktur<br />

auf Basis von Debian Linux von teamix(ix). Er<br />

hält bei mehreren Schulungsanbietern eine<br />

Schulung zum Thema <strong>Performance</strong>-Analyse<br />

und <strong>Tuning</strong>. Der Autor dankt Jens Axboe für<br />

das Beantworten vieler Fragen und der Teamix<br />

GmbH für das Bereitstellen des Test-Laptops.<br />

72 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


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

ACADEMY<br />

... wir qualifizieren Ihre Mitarbeiter!<br />

IT Trainings Online<br />

Linux und Open Source<br />

Nutzen Sie die Vorteile<br />

der Linux-<strong>Magazin</strong> Academy!<br />

✓<br />

✓<br />

✓<br />

✓<br />

✓<br />

Kompetent: Unsere Dozenten sind ausge wiesene<br />

Profis mit lang jähriger Schulungserfahrung.<br />

Flexibel: Der Schulungsteilnehmer lernt, wann,<br />

wo und sooft er möchte.<br />

Kosteneffizient: Nutzen Sie Einsparungen<br />

gegenüber Vor-Ort-Schulungen.<br />

Übersichtlich: Die komfortable Web- Oberfläche<br />

zeigt gleich zeitig den Trainer und dessen<br />

Arbeitsfläche<br />

Individuell: Jeder Teilnehmer folgt seinem eigenen<br />

Lerntempo.<br />

Trainingspakete:<br />

Monitoring mit Nagios<br />

• WordPress 3.0<br />

www.lpi.org<br />

LPIC-1- / LPIC-2-Training<br />

IT-Sicherheit Grundlagentraining<br />

OpenOffice – Arbeiten mit Vorlagen<br />

Was Teilnehmer über die<br />

Linux-<strong>Magazin</strong> Academy sagen:<br />

„Mit den Videos haben Sie ins Schwarze<br />

getroffen. Es gibt nichts Vergleichbares.“<br />

„Eine hervorragende Anleitung zum<br />

praktischen A rbeiten“<br />

Testen Sie unsere Demovideos:<br />

academy.linux-magazin.de/demo<br />

Präsentiert von:<br />

www.linux-magazin.de<br />

www.linuxhotel.de<br />

Weitere Infos: academy.linux-magazin.de


SecuriT y<br />

Phpass<br />

Passwortsicherheit in Webanwendungen mit Phpass<br />

Nützlicher<br />

Fleischwolf<br />

Wie merkt sich eine Webanwendung ein Passwort? Gar nicht. Sie verwandelt<br />

es in ein Pfund Gehacktes. Dabei hilft Phpass, das in immer mehr bekannten<br />

Webanwendungen für Passwortsicherheit sorgt. Tim Schürmann<br />

Das nigelnagelneue, hochpolierte Content-Management-System<br />

wartet nur<br />

darauf, von zahlreichen Nutzern mit Inhalten<br />

gefüttert zu werden. Damit die<br />

keinen Schabernack treiben, müssen sie<br />

sich vorher mit einem Passwort authentifizieren.<br />

Dessen Überprüfung scheint<br />

zunächst trivial: Die Web-Anwendung<br />

sucht in ihrer Datenbank das zum Benutzer<br />

gehörige Passwort und vergleicht<br />

es mit dem eingegebenen. Dazu müsste<br />

sie jedoch die Passwörter im Klartext in<br />

der Datenbank ablegen – während dem<br />

sicherheitsbewussten Entwickler bei<br />

diesem Gedanken die Haare zu Berge<br />

stehen, knallen bei den Angreifern die<br />

Sektkorken.<br />

Man könnte jetzt selbst geeignete Sicherheitsmaßnahmen<br />

ergreifen – oder besser<br />

gleich zu fertigen Softwarekomponenten<br />

von Sicherheitsprofis greifen. Eine solche<br />

Lösung ist das Passwort Hashing Framework,<br />

kurz Phpass [1]. Es verschlüsselt<br />

Passwörter knacksicher und kommt in<br />

bekannten Webanwendungen wie dem<br />

Content-Management-System Drupal<br />

oder der Blog-Software Wordpress zum<br />

Einsatz – dort teilweise allerdings mit<br />

einigen Einschränkungen (dazu später<br />

mehr). Bevor man Phpass mit wenigen<br />

Handgriffen in die eigene Anwendung<br />

integrieren kann, ist ein kurzer Blick auf<br />

seine Arbeitsweise notwendig.<br />

Hash mich<br />

Phpass steckt jedes übergebene Passwort<br />

in eine spezielle mathematische Funktion.<br />

Wie ein Fleischwolf macht sie aus<br />

dem Passwort ein Pfund gehackte Zeichenkette.<br />

Die Funktion ist so aufgebaut,<br />

dass sie für ein Passwort immer das gleiche<br />

Ergebnis liefert, aus dem sich nur mit<br />

großem Aufwand das originale Passwort<br />

rekonstruieren lässt. Eine solche Funktion<br />

bezeichnet man als Hash-Funktion, die<br />

chaotische Ausgabe als Hash-Wert (oder<br />

auch Fingerabdruck des Passworts).<br />

Die Webanwendung muss jetzt nur noch<br />

diesen unleserlichen Hashwert in der Datenbank<br />

speichern (Abbildung 1). Sobald<br />

sich ein Benutzer später mit seinem Passwort<br />

anmeldet, berechnet Phpass aus der<br />

Zeichenkette erneut den Hashwert und<br />

vergleicht ihn mit dem in der Datenbank<br />

hinterlegten.<br />

Fünf ist Trümpf<br />

© Michael Möller, fotolia<br />

Nach diesem Prinzip arbeiten schon<br />

länger alle großen Web-Anwendungen.<br />

Wie das Content-Management-System<br />

Joomla benutzen sie als Hash-Funktion<br />

allerdings durchweg den Message Digest<br />

Algorithm 5, kurz MD5. Er ist sogar praktischerweise<br />

in jeder PHP-Umgebung mit<br />

einer eigenen Funktion vertreten:<br />

$hashwert =<br />

md5($passwort);<br />

MD5 wurde jedoch von seinen Erfindern<br />

für eine schnelle Verarbeitung optimiert.<br />

74 AuSGAbe 05-2011 A D min WWW. ADmin-mAGAzin.D e


Phpass<br />

SecuriT y<br />

Mit genügend großer<br />

Rechenkraft und ein<br />

paar Tricks lassen<br />

sich mittlerweile aus<br />

den von ihr berechneten<br />

Hash-Werten<br />

die Passwörter herausfinden.<br />

Moderne<br />

Mehrkernprozessoren<br />

oder Grafikchips<br />

(Stichwort GPGPU)<br />

rechnen für ein Passwort<br />

mehrere Millionen<br />

MD5-Hashes pro<br />

Sekunde durch und vergleichen sie mit<br />

dem gespeicherten Hash. Dank Clouds<br />

und billigen Terabyte-Platten kann man<br />

sogar einfach für jedes mögliche Passwort<br />

vorab den zugehörigen Hashwert<br />

berechnen und in einer langen Tabelle<br />

ablegen (sogenannte Rainbow Tables).<br />

Wie in einem Telefonbuch muss man<br />

dann nur nachschlagen, welcher Hashwert<br />

zu welchem Passwort gehört.<br />

Glücklicherweise bietet die PHP-Umgebung<br />

über die etwas umständlich zu nutzende<br />

Funktion »crypt()« noch weitere,<br />

bessere Hashfunktionen an [2]. Welche<br />

dabei tatsächlich zur Verfügung stehen,<br />

hängt von der PHP-Version und dem<br />

Betriebssystem ab. Phpass fährt deshalb<br />

notgedrungen eine mehrstufige Strategie:<br />

Zunächst versucht es den wesentlich sichereren<br />

Bcrypt-Algorithmus zu verwenden,<br />

der wiederum auf dem Blowfish-<br />

Verfahren basiert [3].<br />

Sollte Bcrypt nicht greifbar sein, zieht<br />

Phpass das Extended-DES-Verfahren heran.<br />

Kann es auch dies nicht nutzen, fällt<br />

es als Notlösung auf MD5 mit ein paar<br />

eigenen Sicherheitserweiterungen zurück.<br />

Der Phpass-Entwickler hat Blowfish<br />

und Extended-DES bewusst zu seinen<br />

Favoriten gekürt, da sie in den meisten<br />

Systemen besonders effizient in C implementiert<br />

sind.<br />

Ilsebill salzt nach<br />

Die gewählte Hashfunktion ruft Phpass<br />

mehrfach auf, hängt also mehrere<br />

Fleischwölfe hintereinander. Es dauert<br />

dann wesentlich länger, bis ein Angreifer<br />

einfach alle möglichen Passwörter hintereinander<br />

durchprobiert hat – bei acht<br />

Fleischwölfen bis zum Faktor 8. Ganz<br />

nebenbei verlängert sich auch der Hash-<br />

Abbildung 1: Hat ein Angreifer Zugriff auf die Datenbank, sieht er dort nur kryptische Zeichenketten. Hier gewährt PhpMyAdmin<br />

Einblick in das Content-Management-System Joomla, welches das MD5-Verfahren mit Salt verwendet.<br />

wert, die Fachleute nennen das auch Key<br />

Stretching.<br />

Um die Sicherheit noch weiter zu erhöhen,<br />

bezieht Phpass eine zufällig gewählte<br />

Zeichenkette, das sogenannte<br />

Salt, mit in die Berechnung ein. Für jedes<br />

eingetippte Passwort kommt dabei ein<br />

anderes Salt zum Einsatz. Damit muss<br />

ein Angreifer wesentlich mehr Passwörter<br />

in seiner Rainbow Table ablegen,<br />

was Rechenaufwand und Platzbedarf<br />

beträchtlich erhöht. Als Quelle für das<br />

Salt benutzt Phpass auf Unix-Systemen<br />

»/dev/urandom«. Sollte sie nicht zur<br />

Verfügung stehen, greift es auf einen eigenen<br />

Pseudo-Zufallsgenerator zurück.<br />

Obwohl dieser eigentlich nur für die Erzeugung<br />

von Salt ausgelegt ist, nutzt ihn<br />

das Content-Management-System Drupal<br />

7 in einer abgewandelten Variante auch<br />

noch an anderen Stellen.<br />

Das Salt hängt Phpass offen an den generierten<br />

Hash an. Dies ist notwendig, da<br />

das Salt bei der nächsten Anmeldung des<br />

Besuchers erneut in die Hash-Funktion<br />

einfließen muss – andernfalls käme ein<br />

falscher Hash-Wert heraus. Das ist jedoch<br />

keine Sicherheitslücke, da das Salt lediglich<br />

die Zahl der möglichen Hash-Werte<br />

erhöhen soll.<br />

Sicherheitsklasse<br />

Phpass funktioniert bereits ab PHP 3.0.18.<br />

Möchte man sichergehen, dass Phpass<br />

garantiert Bcrypt als Hashfunktion verwendet,<br />

sollte man mindestens PHP 5.3.0<br />

verwenden. Erst diese Version integriert<br />

Blowfish, Extended-DES und MD5 fest in<br />

den Interpreter. Um das in den Vorversionen<br />

zu erreichen, kann man den Suhosin<br />

Patch einspielen [4] – was in einigen<br />

Linux-Distributionen sowie verschiede-<br />

nen BSD-Systemen bereits geschehen<br />

ist. Für Python existiert übrigens eine<br />

vollständige Portierung, eine abgespeckte<br />

Variante auch noch für Perl [1].<br />

Mittlerweile setzen Phpass unter anderem<br />

Wordpress ab Version 2.5, bbPress<br />

und Vanilla ein. Modifizierte beziehungsweise<br />

auf die MD5-Notfallvariante beschnittene<br />

Versionen stecken zudem in<br />

phpBB3 und Drupal 7. Für Drupal 5 und<br />

6 sowie Typo3 existieren Erweiterungen,<br />

die Phpass in den Content-Management-<br />

Systemen nachrüsten.<br />

Klasse Sache<br />

Phpass besteht im Wesentlichen aus<br />

einer kleinen PHP-Klasse, die sich kinderleicht<br />

in eigene PHP-Anwendungen<br />

einbinden lässt: Zunächst angelt man<br />

sich das Archiv von der etwas unübersichtlichen<br />

Homepage [1], entpackt es<br />

und integriert die Datei »PasswordHash.<br />

php« in das eigene Skript:<br />

require('PasswordHash.php');<br />

Als Nächstes instanziiert man die darin<br />

ausgelieferte Klasse »PasswordHash«:<br />

$hasher = new PasswordHash(8, FALSE);<br />

Der erste Parameter des Konstruktors gibt<br />

an, wie oft Phpass die Hashfunktion aufrufen<br />

soll. Der Wert ist eine Potenz von 2,<br />

im Beispiel würde Phpass also die Hashfunktion<br />

2^8 und somit 256 Mal hintereinander<br />

aufrufen. Der höchstmögliche<br />

Wert ist 31. Steht der zweite Parameter<br />

auf »TRUE«, nutzt Phpass grundsätzlich<br />

immer das alte, wenn auch diesmal gesalzene<br />

MD5-Verfahren. Damit sind die<br />

Ergebnisse zwar portabel und auf älteren<br />

PHP-Installationen lauffähig, im Gegenzug<br />

aber auch etwas weniger sicher. Bei<br />

WWW. ADmin-mAGAzin.D e<br />

A D min<br />

AuSGAbe 05-2011<br />

75


SecuriT y<br />

Phpass<br />

einem »FALSE« versucht Phpass hingegen<br />

zunächst immer erst Bcrypt heranzuziehen.<br />

Web-2.0-Anwendungen, die Phpass<br />

nutzen, erlauben häufig, diese beiden<br />

Einstellungen entweder in einer Konfigurationsdatei<br />

oder direkt in der Administrationsoberfläche<br />

zu ändern. Über<br />

das Objekt »$hasher« lässt man jetzt das<br />

Passwort durchdrehen:<br />

$passwort = "geheim123";<br />

$hashwert = $hasher‐>HashPassword($passwort);<br />

Der Hashwert in »$hashwert« wandert in<br />

die Datenbank. Diese Zeichenkette enthält<br />

übrigens nicht nur den eigentlichen<br />

Hashwert, sondern auch gleich noch alle<br />

Zusatzinformationen, die Phpass später<br />

bei der Passwortprüfung benötigt:<br />

$2a$08$zEIaPFIg...<br />

Die beiden Zeichen hinter dem ersten<br />

Dollarzeichen verraten die verwendete<br />

Hashfunktion. Hier weist »2a« auf Bcrypt<br />

hin. Die Zahl nach dem zweiten Dollarzeichen<br />

gibt an, wie oft diese Hash-Funktion<br />

hintereinander aufgerufen wurde (als<br />

Listing 1: beispiel für den einsatz von phpass<br />

01 <br />

Potenz von 2, im Beispiel also 2^8 = 256<br />

mal). Anschließend folgt das Salt, dessen<br />

Länge vom Hashverfahren abhängt, bei<br />

Bcrypt ist es 16-stellig. Dahinter steht<br />

schließlich der eigentliche Hashwert.<br />

Das von »HashPassword()« ausgespuckte<br />

Ergebnis ist immer mindestens 20 Zeichen<br />

lang. Mit diesem Wissen kann man<br />

ganz nebenbei prüfen, ob die Hashfunktion<br />

erfolgreich war:<br />

if (strlen($hashwert) < 20) echo "Hashing U<br />

schlug fehl!";<br />

Prüfung<br />

Wenn sich der Benutzer später erneut am<br />

System anmeldet, holt man den in der<br />

Datenbank gespeicherten Hashwert, legt<br />

ihn in einer Variablen ab, etwa »$passwortausdb«,<br />

und startet die Prüfung:<br />

$passwort = "geheim123";<br />

$passwortausdb = holeHashAusDB();<br />

$ergebnis = $hasher‐>CheckPassword($passwortU<br />

, $passwortausdb);<br />

Die Funktion »CheckPassword()« liefert<br />

»TRUE« zurück, wenn die beiden Hashwerte<br />

übereinstimmen und somit das<br />

Passwort gültig ist. Listing 1 zeigt noch<br />

einmal ein durchgehendes Beispiel, das<br />

sich ohne Datenbank direkt aufrufen<br />

lässt. Ein noch ausführlicheres Beispiel<br />

liegt dem Phpass-Archiv in der Datei<br />

»test.php« bei.<br />

Horch, was kommt von<br />

draußen rein<br />

Phpass nimmt Entwicklern von Web-<br />

Anwendungen einige Arbeit ab, ist aber<br />

kein Allheilmittel. Ein vom Benutzer aus<br />

Faulheit gewähltes Geburtsdatum als<br />

Passwort kann man schlichtweg erraten,<br />

da nützt dann auch kein noch so gutes<br />

Hashing. Man sollte daher in der eigenen<br />

Webanwendung alle eingegebenen<br />

Passwörter auf ihre Länge und Qualität<br />

abklopfen.<br />

Zudem sollte man die Übertragung der<br />

Passwörter via SSL absichern. Schließlich<br />

nützt es wenig, wenn die Webanwendung<br />

die Passwörter knacksicher verwahrt,<br />

ein Lauscher aber die Kommunikation<br />

zwischen Client und Server mitschneidet<br />

und so das eingetippte Passwort im<br />

Klartext abfängt.<br />

Ein Angreifer könnte zu einem Benutzernamen<br />

einfach alle möglichen Passwörter<br />

durchprobieren. Um ihm dies zu<br />

erschweren, kann man die Zeitspanne<br />

zwischen zwei Anmeldeversuchen mit<br />

jeder Fehleingabe künstlich erhöhen. Ein<br />

normaler Benutzer, der sich nur dreimal<br />

vertippt, bekommt davon nicht viel mit,<br />

ein Programm, das systematisch mehrere<br />

Hundert Passwörter nacheinander<br />

durchprobiert, wird dadurch aber massiv<br />

ausgebremst.<br />

Letztlich ist Passwortsicherheit nur ein<br />

kleiner Baustein einer sicheren Webanwendung.<br />

Unter anderem gilt es, jede Benutzereingabe<br />

auf Schadcode hin abzuklopfen<br />

(Stichwort SQL-Injections [5]).<br />

Fazit<br />

Phpass verhilft einfach und schnell zu einem<br />

sicher gehashten Passwort. Es ist in<br />

der Praxis erprobt, von vielen Augen analysiert<br />

und dank Public-Domain-Lizenz<br />

kostenlos nutzbar. Hinter Phpass steckt<br />

übrigens Solar Designer (alias Alexander<br />

Peslyak), der auch für den bekannten<br />

Passwort-Knacker John the Ripper verantwortlich<br />

ist. Unter [6] gibt er noch<br />

viele weitere Tipps für sichere Webanwendungen,<br />

die über die Verwendung<br />

von Phpass hinausgehen. (ofr) n<br />

Infos<br />

[1] Phpass:<br />

[http:// www. openwall. com/ phpass/]<br />

[2] Informationen zur Crypt-Funktion:<br />

[http:// no2. php. net/ manual/ en/ function.<br />

crypt. php]<br />

[3] Wikipedia-Eintrag zu Bcrypt:<br />

[http:// en. wikipedia. org/ wiki/ Bcrypt]<br />

[4] Suhosin-Patch:<br />

[http:// www. hardened-php. net/ suhosin/]<br />

[5] Wikipedia-Eintrag zu SQL-Injections:<br />

[http:// de. wikipedia. org/ wiki/ SQL-Injection]<br />

[6] Ausführliche Anleitung zu Phpass und Passwort-Sicherheit:<br />

[http:// www. openwall.<br />

com/ articles/ PHP-Users-Passwords]<br />

Der Autor<br />

Tim Schürmann ist selbstständiger Diplom-<br />

Informatiker und derzeit hauptsächlich als<br />

freier Autor unterwegs. Zu seinen Büchern gesellen<br />

sich zahlreiche Artikel, die in Zeitschriften<br />

und auf Internetseiten in mehreren Ländern<br />

veröffentlicht wurden.<br />

76 AuSGAbe 05-2011 A D min WWW. ADmin-mAGAzin.D e


Alle AusgAben der letzten 12 MonAte<br />

Sie haben ein admin verpaSSt? Kein problem!<br />

bei uns können Sie alle ausgaben des admin magazin<br />

der letzten 12 monate ganz einfach und versandkostenfrei<br />

unter www.admin-magazin.de/einzelheft nachbestellen:<br />

admin 05/2010 admin 06/2010 admin 01/2011<br />

Ausverkauft, aber<br />

als PDF verfügbar! Ausverkauft, aber<br />

als PDF verfügbar!<br />

admin 02/2011 admin 03/2011 admin 04/2011<br />

damit Sie keine ausgabe mehr verpassen,<br />

bestellen Sie am besten gleich ein abo<br />

vom admin magazin und sparen:<br />

Telefonisch unter: 07131 / 2707 274,<br />

per Fax: 07131 / 2707 78 601 oder<br />

E-Mail: abo@admin-magazin.de,<br />

Web: www.admin-magazin.de/abo


s ecurity<br />

securedrive<br />

Das sicherste Speichergerät der Welt<br />

SSD 007<br />

ein externer datenspeicher, der sich selbst zerstört, wenn datendiebe<br />

darauf zugreifen wollen? was nach einem geheimdienst-gadget aus dem<br />

Labor von James bonds „Q“ klingt, können auch nicht-Agenten auf dem<br />

freien markt erwerben. Oliver Frommel<br />

© kamphi, 123RF<br />

Als sicher angepriesene Massenspeicher<br />

gibt es viele. Da sind einmal die beliebten<br />

USB-Sticks mit Verschlüsselung, die<br />

ihre Daten nur nach dem Eintippen eines<br />

geheimen Schlüssels wieder freigeben.<br />

Für größere Datenmengen gibt es SSD-<br />

Drives, die ebenfalls mit starker Kryptographie<br />

versuchen, die gespeicherten<br />

Daten zu schützen. So bietet beispielsweise<br />

Digittrade eine SSD mit 128 GByte<br />

Speicherkapazität an, die Daten per 256-<br />

Bit AES-CBC-Standard verschlüsselt und<br />

legitime Benutzer über eine zweistufige<br />

Authentifizierung durch Smartcard und<br />

eine achtstellige PIN verifiziert [1]. Was<br />

aber passiert, wenn ein solches Gerät in<br />

die falschen Hände gerät?<br />

Diese Frage haben sich auch die Entwickler<br />

der Securedrives [2] gestellt, die<br />

noch einen entscheidenden Schritt weiter<br />

gehen: Sie statten ihre SSD-Speicher mit<br />

Sensoren und einem Selbstzerstörungsmechanismus<br />

aus, der jeden unautorisierten<br />

Zugriff endgültig verhindern soll.<br />

Der Hersteller preist sein Produkt als der<br />

Welt sicherstes Speichergerät an (Ab-<br />

Abbildung 1: Das angeblich sicherste Speichergerät der Welt.<br />

bildung 1). Es besitzt Schnittstellen für<br />

USB 3.0 und eSATA bei einer Datenrate<br />

von bis zu 6 Gbps über SATA-3. Wie<br />

das Digittrade-Gerät verwendet es AES-<br />

CBC-Verschlüsselung mit 256 Bit, die ein<br />

Krypto-Prozessor übernimmt, der nach<br />

dem amerikanischen Standard FIPS 140-2<br />

zertifiziert ist [3]. Der zugehörige PIN-<br />

Code für den Zugriffsschutz darf zwischen<br />

acht und 20 Stellen lang sein.<br />

Zum Backup lassen sich zwei Securedrives<br />

ohne weitere manuelle Eingriffe<br />

über das vom Hersteller sogenannte Zero<br />

Touch Backup synchronisieren. Auch bei<br />

der Datenübertragung, die bis zu etwa<br />

130 Mbps schnell ist, kommt wieder<br />

AES-Verschlüsselung zum Einsatz. Das<br />

erfordert allerdings neben einem zweiten<br />

Securedrive noch eine separate Docking-<br />

Station.<br />

Der Clou des Securedrive ist aber seine<br />

Fähigkeit, sich selbst zu zerstören, wenn<br />

es in die falschen Hände gerät. Hierbei<br />

bietet das Gerät mehrere Möglichkeiten.<br />

Der Selbstzerstörungsmechanismus kann<br />

zum Beispiel starten, wenn die Anzahl<br />

der Fehlversuche<br />

bei der Eingabe<br />

des PIN-Codes<br />

einen Wert überschreitet,<br />

den der<br />

legitime Besitzer<br />

vorher festgelegt<br />

hat – möglich sind<br />

hierbei zwischen<br />

zwei und acht<br />

Fehlversuche.<br />

Eingebaute Sensoren<br />

versuchen außerdem<br />

zu erkennen,<br />

ob jemand<br />

das Securedrive<br />

gewaltsam öffnet. Stellen sie das fest,<br />

beginnt die Selbstzerstörung. Da diese<br />

Sensoren logischerweise Strom benötigen,<br />

aber die eingebauten Batterien irgendwann<br />

leer sind, haben die Entwickler<br />

auch diese Lücke geschlossen: Ist das<br />

Gerät entsprechend konfiguriert, zerstört<br />

es sich auch kurz vor dem endgültigen<br />

Stromausfall selbst!<br />

Schließlich bietet das Securedrive auch<br />

noch die Möglichkeit, ein GSM-Funksignal<br />

zu tracken, um den eigenen Aufenthaltsort<br />

zu bestimmen. Verliert es<br />

das Signal, weil ein Dieb es ins Auto<br />

packt und damit davonrast, leitet es die<br />

Selbstzerstörung ein. Alternativ lässt sich<br />

die Selbstzerstörung auch aktiv per GSM<br />

starten.<br />

Selbstzerstörung<br />

Das Unbrauchbarmachen des Securedrive<br />

geschieht nach Herstellerangaben innerhalb<br />

von 300 Millisekunden und läuft in<br />

vier Schritten ab:<br />

n das Securedrive ändert den gespeicherten<br />

Schlüssel, was im Fall des<br />

Falles die nachträgliche Wiederherstellung<br />

des Originalschlüssels erschweren<br />

soll.<br />

n die Partitionstabelle der SSD wird mit<br />

weißem Rauschen überschrieben.<br />

n die eingebauten NAND-Bausteine werden<br />

physisch zerstört! (Abbildung 2,<br />

Abbildung 3). Das soll verhindern,<br />

dass die Speicherbausteine ausgebaut<br />

und in einem anderen Board ausgelesen<br />

werden können.<br />

n auch der Security-Controller wird physisch<br />

zerstört.<br />

Die Preise für das Securedrive bewegen<br />

sich zwischen 375 englischen Pfund für<br />

C<br />

M<br />

Y<br />

CM<br />

MY<br />

CY<br />

CMY<br />

K<br />

78 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


securedrive<br />

s ecurity<br />

nur starke kryptographische Methoden,<br />

sondern auch einen Selbstzerstörungsmechanismus,<br />

der jeden nachträglichen<br />

Zugriff auf die gespeicherten Daten unmöglich<br />

machen soll.<br />

Wer das Gerät entsprechend konfiguriert,<br />

sagt seinen Daten auch dann Lebewohl,<br />

wenn die Batterie zur Neige geht. Ein<br />

solches Maß an Sicherheit ist nicht in jedem<br />

Fall angebracht und hat auch seinen<br />

Preis. (ofr)<br />

n<br />

Abbildung 2: Im Ernstfall zerstört das Securedrive<br />

seine NAND-Speicherbausteine und macht damit<br />

jede Wiederherstellung unmöglich.<br />

die Basis-Version und 420 Pfund für die<br />

Ausführung, die sich auch remote zerstö-<br />

Abbildung 3: Nahaufnahme eines zerstörten<br />

Speicher-Chips.<br />

ren lässt. Im letzteren Fall kommt dazu<br />

noch ein Mobilfunkvertrag, der für 18<br />

Monate 83 Pfund kostet.<br />

Fazit<br />

Der Hersteller preist sein Securedrive<br />

als die sicherste Speichertechnologie<br />

der Welt an. Dazu verwendet er nicht<br />

Infos<br />

[1] Digittrade HS256:<br />

[http:// www. digittrade. de/ shop/<br />

product_info. php/ info/ p323_DIGITTRA‐<br />

DE‐HS256‐128‐GB‐SSD‐High‐Security‐externe‐HDD‐AES‐256‐‐‐Acronis‐Backup‐Software.<br />

html]<br />

[2] Securedrive: [http:// www. securedrives. co.<br />

uk/ products/ psd‐series‐external‐hardrive/]<br />

[3] FIPS 140‐2: [http:// csrc. nist. gov/<br />

publications/ fips/ fips140‐2/ fips1402. pdf]<br />

SCHEDULE OUT NOW!<br />

This years conference topics:<br />

- Mobile computing and communications<br />

- IPv6 (yes, again!)<br />

- Security management and IT governance<br />

- Cloud computing and virtualisation<br />

- Security intelligence<br />

- Topics that have a high impact on IT security<br />

- Design flaws ("defective by design")<br />

WORKSHOPS<br />

CONFERENCE<br />

TH<br />

TH<br />

NOV 15 -16<br />

TH<br />

TH<br />

NOV 17 -18<br />

IN-DEPTH SECURITY


Know-How<br />

Citrix Xenserver<br />

Charles Taylor, 123RF<br />

Automatisierung der Installation von Citrix Xenserver<br />

Automatik<br />

mithilfe weniger basistechnologien lässt sich auch bei der installation des kommerziellen Xenserver-Hypervisors<br />

ein guter Automatisierungsgrad erreichen. mike Adolphs<br />

In hochvirtualisierten Umgebungen<br />

wird oft viel Aufwand für die automatisierte<br />

Installation und Konfiguration<br />

virtueller Maschinen betrieben. So genannte<br />

Konfigurationsmanagement-Tools<br />

wie FAI, Puppet oder Chef haben dabei<br />

diese Aufgabe in den letzten Jahre grundlegend<br />

verändert. Vorbei sind die Zeiten<br />

der „ssh’schen for-Schleife“, heute findet<br />

die Konfiguration von Servern hauptsächlich<br />

im zentralen Subversion- oder Git-<br />

Repository statt.<br />

Dagegen hat sich bei der Installation und<br />

Konfiguration kommerzieller Hypervisoren<br />

auf technischer Ebene wenig getan.<br />

Dennoch lässt sich auch hier mittels<br />

weniger Infrastrukturdienste ein hoher<br />

Automatisierungsgrad erreichen. Dieser<br />

Artikel erklärt, wie Sie Citrix Xenserver<br />

automatisch über einen Server verteilen.<br />

Das Ziel, die Serverinstallation ohne Benutzerinteraktion<br />

abzuschließen, lässt<br />

sich beim Xenserver durch mehrere<br />

Dienste und Protokolle erreichen. Die<br />

notwendigen Elemente hierfür sind ein<br />

DHCP-Server zur automatischen Netzwerkkonfiguration<br />

des Clients sowie ein<br />

TFTP-Server zur Auslieferung eines minimalen<br />

Kernels und der Installationsroutine.<br />

Zusätzlich wird ein NFS-, FTP- oder<br />

HTTP-Server vorausgesetzt, der die zu<br />

installierenden Dateien bereitstellt. Hierfür<br />

ist ein Xenserver-Installationsmedium<br />

erforderlich, das es auf der Xenserver<br />

Website [1] gibt. Dabei ist es unerheblich,<br />

ob die einzelnen Dienste auf unterschiedliche<br />

Server im Netzwerk verteilt oder<br />

alle Dienste zentral von einem Server aus<br />

bereitgestellt werden.<br />

Grundvoraussetzung auf Hardware-Ebene<br />

ist eine PXE-bootfähige (Preboot Execution<br />

Environment [2]) Netzwerkkarte<br />

oder ein Onboard-Netzwerkinterface, bei<br />

dem der PXE-Code bereits Bestandteil<br />

des System-BIOS ist. Dies ermöglicht es<br />

dem Server, beim Starten eine IP-Adresse<br />

vom DHCP-Server zu beziehen und im<br />

Anschluss von einer externen Ressource<br />

zu booten (Abbildung 1).<br />

DHCP-Server-Installation<br />

Als DHCP-Server bietet sich der ISC<br />

DHCP-Server [3] an, der sich auf RPMbasierten<br />

Distributionen mittels »rpm -hvi<br />

dhcp« oder auf Debian-Distributionen via<br />

»apt-get install dhcp3-server« installieren<br />

lässt. Das zu bindende Interface für den<br />

DHCP-Server wird bei Red Hat und dessen<br />

80 AusgA be 04-2011 Admin www.A dmin-mAgA zin.de


Citrix Xenserver<br />

Know-How<br />

Derivaten durch »/etc/sysconfig/dhcpd«<br />

bestimmt. Debian und Ubuntu fragen bei<br />

der Installation explizit nach. Dort befindet<br />

sich die entsprechende Konfiguration<br />

unter »/etc/default/dhcp3-server«.<br />

Die Konfigurationparameter des Servers<br />

stehen in der Datei »/etc/dhcp/dhcpd.<br />

conf« respektive »/etc/dhcp3/dhcpd.<br />

conf«. Im Hinblick auf den angestrebten<br />

PXE-Boot sind die folgenden drei Direktiven<br />

wichtig:<br />

n »allow bootp« sorgt für die notwendige<br />

Unterstützung des Bootstrap-<br />

Protokolls.<br />

n »next-server« definiert den im Bootstrap-Prozess<br />

als Nächstes zu kontaktierenden<br />

Server, der die initiale Datei<br />

zum Booten ausliefert.<br />

n »filename« gibt den Dateinamen des<br />

zu bootenden Kernels an.<br />

Aufgrund der Komplexität der DHCP-<br />

Konfiguration und der Abhängigkeit von<br />

der Netzwerkstruktur ist es schwierig,<br />

ein Patentrezept zur Konfiguration zu<br />

geben. Beispielsweise wäre es möglich,<br />

die PXE-bootenden Clients zu gruppieren<br />

oder in eine eigene Klasse auszulagern<br />

wie in Listing 1 beschrieben.<br />

Klassen sind beim DHCP-Server vor<br />

allem in heterogenen Netzwerken von<br />

Vorteil. In homogenen Umgebungen, in<br />

denen der DHCP-Server zudem mehrere<br />

IP-Adressbereiche und VLANs verwaltet,<br />

bietet es sich an, die Konfiguration in<br />

»shared-network«-Blöcke zu unterteilen.<br />

Hier gilt es, die Konfiguration global<br />

zu strukturieren und die »next-server«-<br />

Direktive in den entsprechenden Block<br />

für alle Hosts des gleichen Netzes unterzubringen.<br />

Die Konfiguration-Syntax können Sie<br />

mit<br />

/usr/sbin/[dhcp|dhcp3] ‐t ‐cf U<br />

/etc/[dhcp|dhcp3]/dhcpd.conf<br />

testen. Kontrolle über den Dämon ermöglicht<br />

service dhcp [start|stop|restart]<br />

oder<br />

/etc/init.d/[dhcp|dhcp3‐server] U<br />

[start|stop|restart]<br />

Für das Einrichten des TFTP-Servers [4]<br />

sind zwei Software-Pakete erforderlich.<br />

Einerseits der TFTP-Server selbst, den<br />

der Befehl »rpm -hvi tftp-server« res-<br />

pektive »apt-get install tftpd« installiert.<br />

Andererseits Syslinux, eine Sammlung<br />

von Bootloadern, die sich über »rpm -hvi<br />

syslinux« oder »apt-get install syslinux«<br />

installieren lässt.<br />

Die Konfiguration des TFTP-Daemons<br />

befindet sich per default unter »inet.d«<br />

beziehungsweise »xinet.d« und muss<br />

zunächst mittels »disable = no« in<br />

»/etc/xinetd.d/tftp« aktiviert werden. Der<br />

Parameter »-s« informiert den Dienst über<br />

das bereitzustellende Verzeichnis. Ein<br />

entsprechender Eintrag der »/etc/inetd.<br />

conf« unter Debian sähe beispielsweise<br />

wie in Listing 3 aus.<br />

Mittels »service xinetd [start|stop|restart]«<br />

respektive »/etc/init.d/xinetd<br />

[start|stop|restart]« oder »/etc/init.d/<br />

tftpd-hpa [start|stop|reload]«, wenn der<br />

»tftpd« als eigenständiger Dienst konfiguriert<br />

ist, lässt sich der Dämon starten<br />

und stoppen. Das grundlegende Setup<br />

der benötigten Dienste ist somit abgeschlossen.<br />

Installationsmedien<br />

Zur Xenserver-Installation fehlen nun<br />

noch die passenden Dateien. Zuerst erstellen<br />

Sie die Verzeichnisstruktur und<br />

legen im Hinblick auf mögliche Software-<br />

Aktualisierungen passende Symlinks an.<br />

Im Anschluss mounten Sie das Image.<br />

Zuletzt kopieren Sie die benötigten Installationsdateien<br />

vom gemounteten Image<br />

in das Verzeichnis. Listing 4 zeigt die<br />

dafür nötigen Schritte.<br />

Liegen die Daten im Verzeichnis, müssen<br />

Sie sich jetzt lediglich noch um deren<br />

Erreichbarkeit kümmern. Am einfachsten<br />

Listing 5: Apache Vhost<br />

01 <br />

02 ServerName install‐xenserver.example.com<br />

03 ServerAdmin webmaster@example.com<br />

04 DocumentRoot /srv/install‐media/xenserver<br />

05<br />

06 <br />

07 Options FollowSymLinks Indexes<br />

08 AllowOverride None<br />

Listing 6: PXe-Konfiguration für manuelle installation<br />

01 default xenserver<br />

02 label XenServer<br />

03 kernel mboot.c32<br />

04 append xenserver‐5.6.1sp2/xen.gz dom0_max_<br />

vcpus=2 dom0_mem=752M com1=115200,8n1 \<br />

geschieht dies mittels HTTP, aber auch<br />

NFS oder FTP sind gangbare Wege.<br />

Zwecks initalem Test können Sie zu<br />

Pythons »SimpleHTTPServer« greifen und<br />

ihn im bereitzustellenden Verzeichnis auf<br />

Port 80 starten:<br />

Listing 1: PXe-Klasse<br />

01 /etc/[dhcp|dhcp3]/dhcpd.conf<br />

02 allow bootp;<br />

03 class "pxeclients" {<br />

04 match if substring(option vendor‐class‐identifier, 0,<br />

9) = "PXEClient";<br />

05 next‐server 10.42.10.42;<br />

06 filename "pxelinux.0";<br />

07 }<br />

Listing 2: shared network<br />

01 /etc/[dhcp|dhcp3]/dhcpd.conf<br />

02 allow bootp;<br />

03 filename "pxelinux.0";<br />

04 shared‐network 42 {<br />

05 subnet 10.42.0.0 netmask 255.255.0.0 {<br />

06 next‐server 10.42.10.42;<br />

07 }<br />

08 }<br />

Listing 3: »/etc/inetd.conf«<br />

01 tftp dgram udp wait root /usr/sbin/<br />

in.tftpd /usr/sbin/in.tftpd ‐s /srv/tftpboot<br />

Listing 4: installationsdateien bereitstellen<br />

01 mkdir /media/xs‐5.6.1sp2<br />

02 mkdir ‐p /srv/install‐media/xs‐5.6.1sp2<br />

03 mount ‐o loop XenServer‐5.6.100‐SP2‐install‐cd.iso /<br />

media/xs‐5.6.1sp2<br />

04 cp ‐R /media/xs‐5.6.1sp2/packages.* /srv/<br />

install‐media/xs‐5.6.1sp2/<br />

05 ln ‐s /srv/install‐media/xs‐5.6.1sp2 /srv/<br />

install‐media/xenserver<br />

09 <br />

10<br />

11 LogLevel warn<br />

12 ErrorLog /var/log/apache2/error.log<br />

13 CustomLog /var/log/apache2/access.log<br />

combined<br />

14 <br />

05 console=com1,vga ‐‐‐ xenserver‐5.6.1sp2/vmlinuz<br />

\<br />

06 xencons=hvc console=hvc0 console=tty0 \<br />

07 ‐‐‐ xenserver‐5.6.1sp2/install.img<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 04-2011<br />

81


Know-How<br />

Citrix Xenserver<br />

Abbildung 1: Schematische Darstellung der Kommunikation zwischen PXE Client<br />

und Server.<br />

Abbildung 2: Mit wenigen Anpassungen an der PXE-Konfiguration lassen sich auch<br />

Boot-Menüs erstellen.<br />

cd /srv/install‐media/xenserver<br />

nohup python ‐m SimpleHTTPServer 80 &<br />

Für eine dauerhafte Installation bietet<br />

sich beispielsweise der Apache-Webserver<br />

an. Hierzu konfigurieren Sie einen<br />

neuen Vhost, der die entsprechenden<br />

Ressourcen unter einer URL wie »http://<br />

install-xenserver.example.com«, bereitstellt.<br />

Eine Beispielkonfiguration zeigt<br />

Listing 5.<br />

Damit die Xenserver-Installation überhaupt<br />

startet, müssen Sie die beiden Da-<br />

Listing 7: Rudimentäres Answer File zur automatisierten installation<br />

01 <br />

02 <br />

03 sda<br />

04 sdb<br />

05 de<br />

Listing 8: Vollautomatische installation<br />

01 default xenserver<br />

02 label XenServer<br />

03 kernel mboot.c32<br />

04 append xenserver‐5.6.1sp2/xen.gz dom0_max_<br />

vcpus=2 dom0_mem=752M com1=115200,8n1 \<br />

05 console=com1,vga ‐‐‐ xenserver‐5.6.1sp2/vmlinuz<br />

Listing 9: PXe-menu-Konfiguration aus »pxelinux.cfg/menu«<br />

01 default menu.c32<br />

02 prompt 0<br />

03 timeout 80<br />

04 menu title PXE Boot Menu<br />

05<br />

06 label xenserver<br />

07 menu label Citrix ^XenServer<br />

08 kernel mboot.c32<br />

09 append xenserver‐5.6.1sp2/xen.gz<br />

watchdog com1=115200,8n1 console=com1,tty<br />

‐‐‐ xenserver‐5.6.1sp2/vmlinuz root=/dev/<br />

06 http://<br />

install‐xenserver.example.com/<br />

07 Europe/Berlin<br />

08 <br />

\<br />

06 xencons=hvc console=hvc0 console=tty0 \<br />

07 answerfile=http://install‐xenserver.example.<br />

com/answer_file \<br />

08 install ‐‐‐ xenserver‐5.6.1sp2/install.img<br />

ram0 console=tty0 console=ttyS0,115200n8<br />

ramdisk_size=32758 answerfile=http://<br />

install‐xen‐server.example.com/answer_file<br />

install ‐‐‐ xenserver‐5.6.1sp2/install.img<br />

10<br />

11 label squeeze‐xen<br />

12 menu label Debian Sq^ueeze Xen<br />

13 IPAPPEND 2<br />

14 append initrd=initrd.img‐2.6.32‐5‐amd64‐xen<br />

root=/dev/nfs boot=live<br />

15 kernel vmlinuz‐2.6.32‐5‐amd64‐xen<br />

teien »mboot.c32« und »pxelinux.0« aus<br />

»/usr/lib/syslinux« in das Verzeichnis<br />

»/srv/tftpboot« kopieren. Im Anschluss<br />

erstellen Sie ein neues Verzeichnis namens<br />

»xenserver-5.6.1sp2« im »tftpboot«-<br />

Verzeichnis, in das Sie die Dateien »install.img«,<br />

»vmlinuz« und »boot/xen.gz«<br />

aus dem Wurzelverzeichnis des Xenserver-Installationsmediums<br />

kopieren.<br />

In »/src/tftpboot« erstellen Sie danach<br />

ein weiteres Verzeichnis namens »pxelinux.cfg«,<br />

in dem die Konfiguration für<br />

den PXE-Boot ihren Platz findet. Der Einfachheit<br />

halber nennen Sie die Konfigurationsdatei<br />

»default«. Mit der Konfiguration<br />

aus Listing 6 wäre jetzt bereits eine<br />

manuelle Installation ohne Einlegen des<br />

Installationsmediums möglich.<br />

Um die Installation vollständig zu automatisieren,<br />

fehlt nur ein weiteres Element:<br />

das so genannte Answer File. Diese<br />

Datei enthält alle Konfigurationsparameter<br />

im XML-Format, die andernfalls manuell<br />

eingegeben werden müssten. Sie<br />

wird wie die anderen zur Installation<br />

gehörenden Dateien auch im Document<br />

Root des Webservers gespeichert. Listing<br />

7 zeigt eine Minimalausführung des Answer<br />

File. Eine Übersicht der möglichen<br />

Konfigurationsparameter liefert die Tabelle<br />

1.<br />

Wenn Sie das Answer File geschrieben<br />

haben und es vom Webserver ausgeliefert<br />

wird, müssen Sie nur noch die PXE-Konfiguration<br />

in »/srv/tftpboot/pxelinux.cfg/<br />

default« anpassen. Wie in Listing 8 zu<br />

sehen ist, referenziert es nun das Answer<br />

File und sorgt für eine vollständig automatisierte<br />

Installation des Xenserver.<br />

Weiterführende Tipps<br />

Mit dem Element »script« im Answer File<br />

lassen sich beliebige Skripte während<br />

oder nach der Installation aufrufen. Weil<br />

der Xenserver auf Cent OS 5 basiert und<br />

dort die Shell in vollem Umfang zugänglich<br />

ist, hat man hier alle Möglichkeiten,<br />

die einem auch in einer klassische Linux-<br />

Distribution zur Verfügung stehen.<br />

So bietet es sich beispielsweise an, via<br />

Skript die SSH Public Keys der Administratoren<br />

auf dem Xenserver zu installieren<br />

82 AusgA be 04-2011 Admin www.A dmin-mAgA zin.de


Citrix Xenserver<br />

Know-How<br />

Mit den hier vorgestellten Techniken lassen<br />

sich Xenserver-Instanzen zentral verwalten<br />

und auf Server im eigenen Netzoder<br />

ihn ins <strong>Performance</strong>-Monitoring via<br />

Munin aufzunehmen, statt die Graphen<br />

im Xencenter zu überwachen. Per Skript<br />

kann man auch leicht ein Root-Passwort<br />

via »pwgen« erzeugen, es mit »passwd<br />

--stdin« setzen und dann die Administratoren<br />

benachrichtigen.<br />

Generell gilt jedoch folgender Grundsatz:<br />

so wenig Fremdsoftware in der Xen-Dom0<br />

wie möglich. Die Hauptaufgabe einer<br />

Dom0 besteht darin, virtuelle Maschinen<br />

zu verwalten und nicht, DNS- oder<br />

DHCP-Anfragen zu beantworten.<br />

Per Default sind auf dem Xenserver alle<br />

Cent-OS-spezifischen Repositories auskommentiert.<br />

Das können Sie leicht beheben,<br />

indem Sie zwei kleine Änderungen<br />

in »/etc/yum.repos.d/CentOS-Base.<br />

repo« vornehmen:<br />

n Einkommentieren von »baseurl«<br />

n »enabled« von 0 auf 1 ändern<br />

Im Anschluss ist die Installation zusätzlicher<br />

Software aus den Cent-OS-Repositories<br />

ohne Weiteres möglich.<br />

Per Default greift der Xenserver für Upgrades<br />

auf die Repositories von Citrix zu.<br />

Möchten Sie dies unterbinden oder die<br />

Zugriffe über einen lokalen Proxy leiten,<br />

müssen Sie »/ etc/yum.repos.d/Citrix.<br />

repo« anpassen.<br />

Auch beim PXE-Bootvorgang lässt sich<br />

noch einiges verbessern. Um beispielsweise<br />

mehr Auswahlmöglichkeiten zu<br />

schaffen, bietet es sich an, einen Bootloader<br />

mit Menü [6] einzubauen, Dieser erlaubt<br />

beim Booten, das zu installierende<br />

System zu wählen (Abbildung 2).<br />

Im Verzeichnis »/srv/tftpboot« müssen<br />

Sie hierfür zunächst den Kernel »mboot.<br />

c32« gegen »menu.c32« aus »/usr/lib/<br />

syslinux« tauschen. Im Anschluss passen<br />

Sie den Dateinamen in der DHCP-Konfiguration<br />

entsprechend an (Listing 9).<br />

Möchten Sie die bestehende Konfiguration<br />

im Verzeichnis »pxelinux.cfg« beibehalten<br />

und die Konfiguration des Menüs<br />

beispielsweise nach »pxelinux.cfg/menu«<br />

auslagern, müssen Sie den DHCP-Server<br />

dahingehend konfigurieren, dass die richtige<br />

Konfiguration beim PXE-Boot geladen<br />

wird:<br />

option pxelinux.configfile U<br />

"pxelinux.cfg/menu";<br />

Fazit<br />

werk verteilen. Dazu braucht es nicht<br />

mehr als einige Standard-Protokolle wie<br />

PXE, DHCP und TFTP. Dank der Skript-<br />

Unterstützung steht Administratoren ein<br />

flexibler Weg offen, solche Installationen<br />

im Detail an die eigenen Wünsche anzupassen.<br />

(ofr)<br />

n<br />

Infos<br />

[1] ISC DHCP:<br />

[https://www. isc. org/software/dhcp]<br />

[2] PXE Wiki: [http://pxe.dev.aboveaverageurl.<br />

com/index. php/ Main_Page]<br />

[3] Citrix Xenserver: [http://www.citrix.de/<br />

produkte/ xenserver/]<br />

[4] tftp-hpa:<br />

[http://freshmeat. net/projects/tftp-hpa/]<br />

[5] Syslinux: [http://syslinux.zytor.com/]<br />

[6] Pxelinux Bootmenu: [http://syslinux.zytor.<br />

com/wiki/ index. php/PXELINUX#Custom_<br />

Menu_Example_with_sub-menus]<br />

Der Autor<br />

Mike Adolphs ist Systemadministrator bei der<br />

XING AG und sorgt dort unter anderem für<br />

einen reibungslosen Betrieb der Ruby-on-Rails-<br />

Applikationen. In seiner Freizeit erkundet er<br />

seine Wahlheimat Schleswig-Holstein mit dem<br />

Motorrad.<br />

Tabelle 1: Konfigurationsparameter im Answer File<br />

Parameter Beschreibung Benötigt<br />

Bezeichnung des Massenspeichers, auf dem die Xenserver „Control Domain“ installiert wird, zum Beispiel »sda« Ja<br />

oder »cciss/c0d0«. Attribut »gueststorage« (»yes« oder »no«) spezifiziert, ob der primäre Massenspeicher auch<br />

virtuelle Maschinen umfasst, zum Beispiel »sda«<br />

Bezeichnung des Massenspeichers zum Speichern der virtuellen Maschinen, zum Beispiel »sdb«<br />

Konfiguration der Tastaturbelegung, zum Beispiel »de« oder »us«, etwa »de« Ja<br />

Vordefiniertes Passwort für Root im Klartext. Wenn kein Wert vorhanden ist, erscheint ein Dialog zum Festlegen Nein<br />

des Root-Passworts beim ersten Boot des Servers nach der Installation, Beispiel: foobar<br />

<br />

Quelle der Installationsmedien, Attribut: »type« (»url«, »nfs« oder »local«), zum Beispiel »http://install-xenserver.example.com/«<br />

Quelle von zusätzlichen Gerätetreibern, Attribut: type (»url«, »nfs« oder »local«), zum Beispiel »http://install-xenserver.example.com/drivers/«<br />

<br />

Quelle für eigene Skripte, die während (»filesystem-populated«) oder nach (»installation-complete«) der Installation<br />

Nein<br />

ausgeführt werden sollen, Attribut: »stage« (»filesystem-populated« oder »installation-complete«), Attri-<br />

but: »type« (»url«, »nfs« oder »local«), zum Beispiel »http://<br />

install-xenserver.example.com/scripts/mail_admin.sh«<br />

Spezifiziert das Netzwerkinterface für die Administration des Servers, Attribut: »proto« (»dhcp« oder »static«). Nein<br />

Attribut: »name« (zum Beispiel »eth0«), Beispiel: »«<br />

Konfiguration der Zeitzone im TZ-Format, zum Beispiel »Europe/Berlin« Ja<br />

Konfiguration des zu benutzenden Nameservers, sofern nicht über DHCP vergeben, Beispiel: »8.8.8.8«<br />

Spezifiziert den »hostname« des Servers, zum Beispiel »xensrv001« Nein<br />

<br />

Spezifiziert, welcher Bootloader benutzt werden soll. Zurzeit stehen zur Auswahl: »extlinux« (Standard) oder<br />

»grub«, zum Beispiel »extlinux«<br />

Nein<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 04-2011<br />

83


KnOw-HOw<br />

Active directory<br />

Überblick über Active Directory<br />

Geordnet<br />

Linux-Admins sehen sich gelegentlich unvermittelt mit Active directory konfrontiert, etwa wenn es darum geht,<br />

Open-source-Lösungen mit einem vorhandenen Verzeichnisdienst zu verheiraten. dieser Artikel erklärt die<br />

grundlagen und stellt neue Funktionen in Active directory 2008 R2 vor. Thomas drilling<br />

Maksym Yemelyanov,123RF<br />

Angesichts der Allgegenwärtigkeit von<br />

Microsoft-Software im Unternehmen gerät<br />

schnell in Vergessenheit, dass Windows<br />

als Server-Betriebssystem noch in<br />

den Neunzigerjahren praktisch keine<br />

Rolle spielte. Hier dominierten Novell<br />

Netware- und Mainframe-Lösungen, zum<br />

Teil auch Unix-Systeme. Zwar besitzt<br />

Windows seit der Einführung von NT<br />

4 theoretisch Eigenschaften, die für den<br />

Einsatz als Server-Betriebssystem unerlässlich<br />

sind (Multiuser-Fähigkeit, Dateisystem<br />

NTFS mit ACLs, Benutzerprofilen,<br />

Rollen, Berechtigungssteuerung), aber<br />

erst Windows 2000 mit dem Verzeichnisdienst<br />

Active Directory machte das<br />

Turnschuhbetriebssystem unternehmenstauglich.<br />

Active Directory basiert wie<br />

Novell Directory Services (NDS) nebst<br />

Nachfolger eDirectory auf LDAP. Ein Verzeichnisdienst<br />

kann die physische Unternehmensstruktur<br />

im Intranet abbilden,<br />

was enorme Vorteile in der Administration<br />

mit sich bringt. Über ihn lassen sich<br />

sämtliche Netzwerkresscourcen zentral<br />

verwalten und die zentrale Authentifizierung<br />

der Benutzer regeln. Dazu führt<br />

er sämtliche Netzwerkressourcen in seiner<br />

Datenbank, etwa Benutzer, Gruppen,<br />

Dienste, Server, Workstations, Freigaben<br />

und Geräte [1].<br />

Stammbaum<br />

Urvater aller Verzeichnisdienste ist LDAP<br />

aus dem Jahr 1993. Im Grunde handelt<br />

es sich bei LDAP nur um ein Protokoll,<br />

das es seinerzeit erlaubte, standardisiert<br />

auf eine DAP-Datenbank zugreifen zu<br />

können, war also ursprünglich ein Frontend<br />

für den X.500-Verzeichnisdienst. Da<br />

X.500 als vollständiger OSI-Stack über<br />

alle sieben Schichten implementiert ist,<br />

ließ sich der X.500-Verzeichnisdienst<br />

nicht flächendeckend implementieren.<br />

LDAP basiert im Gegensatz zu X.500 auf<br />

TCP/ IP, das sich im Lauf der Zeit als<br />

Standard auch im Intranet etabliert hat.<br />

LDAP fungierte dabei quasi als Proxy, der<br />

zwischen X.500 und dem DAP vermittelt.<br />

Mit der Zeit hat sich LDAP insoweit verselbständigt,<br />

dass es als Fundament aller<br />

modernen Verzeichnisdienste zum Einsatz<br />

kommt. Gemeinsamer Nenner aller<br />

Verzeichnisdienste ist, dass Informationen<br />

in einer hierarchischen Struktur abgelegt<br />

sind und LDAP als X.500-Abkömmling<br />

objektorientierte Datenmodelle benutzt.<br />

Somit gelten bei LDAP ähnliche Regeln<br />

wie bei der objektorientierten Programmierung<br />

mit Objekten und Klassen sowie<br />

Mechanismen wie Vererbung und<br />

Polymorphie.<br />

Objekte und Relationen<br />

Die zentrale Aufgabe jedes Verzeichnisdienstes<br />

besteht im Abbilden der Objekte<br />

im LDAP-Verzeichnisbaum und in der<br />

Möglichkeit, solche Objekte miteinander<br />

in Beziehung zu setzen. Ein Objekt im<br />

LDAP-Verzeichnisbaum (DIT: Directory<br />

86 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Active directory<br />

KnOw-HOw<br />

Information Tree) ist ein sogenannter<br />

Verzeichniseintrag mit einem eindeutigen<br />

Namen (DN) im DIT.<br />

LDAP unterscheidet zwischen den Objekttypen<br />

wie Organisational Unit (OU)<br />

und Blattobjekten. Erstere dienen dem<br />

Aufbau der eigentlichen Baumstruktur<br />

und sind Container-Objekte, in denen<br />

sich weitere Objekte erzeugen lassen.<br />

Blattobjekte dienen zur Verwaltung der<br />

eigentlichen Ressourcen im DIT, etwa<br />

User ID (UID) oder Common Name (CN).<br />

Die Bezeichnungen leiten sich aus vorgegebenen<br />

Objektklassen und Schemas ab.<br />

Ein Objekt ist eine im DIT zu verwaltende<br />

Ressource.<br />

Es gibt unterschiedlichste Typen von<br />

Ressourcen, wie Container, Benutzer<br />

oder Gruppen mit jeweils speziellen<br />

Attributen, welche die Eigenschaften<br />

von Objekten beschreiben. Sogenannte<br />

Schemas fassen Objektklassen in Gruppen<br />

zusammen. LDAP kennt eine Reihe<br />

von Standard-Schemas. Zum Einfügen<br />

von Objekten in den DIT benutzt man<br />

sogenannte LDIF-Dateien, in denen der<br />

Admin Objektklassen und Attribute mit<br />

ihren Werten für ein zu erstellendes Objekt<br />

einträgt. Mit LDIF-Dateien lassen<br />

sich viele Objekte auf einmal erstellen.<br />

Das Einspielen von LDAP-Dateien in den<br />

DIT erfolgt mit »ldapadd«.<br />

Bei einer OpenLDAP-Installation unter<br />

Linux kann sich der Admin aus einer<br />

Reihe mitgelieferter Standard-Schemas<br />

bedienen, etwa zum Verwalten von Benutzern<br />

und Gruppen für Posix-Konten,<br />

Benutzern und Gruppen für Samba-Konten<br />

oder Mail-Aliasen für Postfix. Häufig<br />

dient LDAP auch zur Authentifizierung<br />

von Benutzern, beispielsweise am IMAP-<br />

Server oder für geschützte Bereiche am<br />

Webserver. Zusammen mit Kerberos lässt<br />

sich auch ein Single-Sign-On realisieren.<br />

Was vorher geschah …<br />

Im Microsoft-Universum spielen die Begriffe<br />

Domäne und Domain Controller<br />

eine zentrale Rolle. Die Domäne, wie sie<br />

Microsoft definiert, hat nichts mit einer<br />

DNS Domain zu tun, sondern ist eine<br />

organisatorische Verwaltungseinheit in<br />

Windows-Netzen, die bei Windows NT<br />

die einfache Arbeitsgruppe durch ein sicheres<br />

Konzept der Ressourcenverwaltung<br />

im Netzwerk abgelöst hat.<br />

In diesem Kontext ist eine Domäne laut<br />

Microsoft ein lokaler Sicherheitsbereich<br />

mit zentraler Verwaltung der Ressourcen<br />

und stellte außerdem seinerzeit eine<br />

administrative Grenze dar. Ein Domain<br />

Controller (DC) ist dabei ein Server zur<br />

zentralen Authentifizierung und Autorisierung<br />

von Benutzern und Computern<br />

und Benutzern im Netz. In einem Netzwerk<br />

mit Domain Controller lassen sich<br />

Rechner mit dem Betriebssystem Windows<br />

NT und Folgeversionen (dazu gehören<br />

als Clients auch XP, Vista und 7) zu<br />

einer Domäne zusammenschließen.<br />

Zentralisiert<br />

Im Gegensatz zu den Workgroups von<br />

Windows 9x legt der Administrator am<br />

Domain Controller zentral Benutzer und<br />

Gruppen fest [2]. Jede Änderung gilt<br />

dann für alle Computer, die Mitglied der<br />

Domäne sind. Bei Windows NT gab es<br />

immer nur einen sogenannten primären<br />

Domänencontroller (PDC), der das alleinige<br />

Schreibrecht in der Domäne besaß.<br />

Seine Datenbank replizierte er optional<br />

auf einen oder mehrere Backup Domain<br />

Controller (BDC), die eine nur lesbare<br />

Sicherheitskopie der User- und Anmeldedaten<br />

enthielten und regelmäßig vom<br />

PDC aktualisiert wurden.<br />

BDC dienten allerdings nicht nur dazu,<br />

im Failover-Fall zum PDC heraufgestuft<br />

zu werden, sondern fungierten im Regelbetrieb<br />

als vollwertiger DC für alle Anfragen,<br />

bei denen Lesezugriff ausreichte.<br />

Diese recht übersichtliche Struktur mit<br />

nur einem primären Domänencontroller<br />

pro Domäne führte über die Zeit bei großen<br />

Netzen zu einem unkontrollierbaren<br />

Domänen-Wildwuchs mit gezwungenermaßen<br />

flacher Struktur. Unternehmen<br />

konnten damit ihre meist hierarchische<br />

Struktur nicht in der Organisation ihres<br />

Netzwerks abbilden.<br />

Gab es mehrere Standorte oder Subunternehmen<br />

mit jeweils eigenen Domänen,<br />

ließen sich zwar Vertrauensstellungen<br />

zwischen Domänen herstellen, die daraus<br />

resultierende Struktur glich aber<br />

eher einem Spinnennetz als einem geordnetem<br />

Verzeichnisbaum, wie ihn LDAP<br />

oder AD vorsehen. Das Active Directory<br />

übernimmt allerdings deutlich mehr Aufgaben<br />

als LDAP in den meisten Unix-<br />

Umgebungen. Neben Benutzerkonten<br />

und Authentifizierungsdaten speichert<br />

das AD nämlich sämtliche Eigenschaften<br />

und Attribute einer oder mehrerer<br />

Domänen.<br />

Das mit Windows 2000 eingeführte Active<br />

Directory ermöglichte es dem Windows-<br />

Administrator erstmals, Domänen mit<br />

einer hierarchischen Struktur anzulegen,<br />

wozu unter anderem der Domain Name<br />

Service (DNS) zum Einsatz kommt. Das<br />

Active Directoy kann mit der Unternehmenshierarchie<br />

und Netzstruktur mitwachsen,<br />

basiert aber trotzdem nicht auf<br />

einer Cluster-Architektur, sondern auf einem<br />

intelligenten Replikationsmechanismus<br />

zwischen den verschiedenen Typen<br />

von Domänencontrollern, die Strukturmerkmale<br />

wie die Netztopologie samt<br />

Subnetzen oder Standorte kennen.<br />

Das Active Directory besteht organisatorisch<br />

aus drei Bestandteilen, nämlich<br />

Schemas, Konfigurationen und Domänen.<br />

Das Schema ist wie bei LDAP<br />

ein Template für alle Active-Directory-<br />

Einträge (Benutzer, Rechner, Drucker)<br />

und definiert Objekttypen nebst deren<br />

Klassen und Attributen, aber auch die<br />

Attributsyntax und wird von allen Domänencontrollern<br />

einheitlich verwendet.<br />

Welche Objekttypen im Active Directory<br />

verfügbar sind, kann der Admin durch<br />

das Definieren neuer Typen beeinflussen,<br />

wozu er wie bei LDAP gegebenenfalls ein<br />

neues Schema mit Objekten und Attributen<br />

definiert. Eine Konfiguration bedeutet<br />

im Microsoft-Vokabular die Struktur<br />

C13<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

87


KnOw-HOw<br />

Active directory<br />

Abbildung 1: Beim Heraufstufen zu einem Domänencontroller hat<br />

der Admin die Wahl, ihn als zusätzlichen Domain Controller für einen<br />

existierenden AD-Forest zu verwenden oder einen komplett neuen<br />

Directory-Tree aufzusetzen.<br />

des Active-Directory-Forest mit all seinen<br />

Bäumen. Die Domäne schließlich speichert<br />

die eigentlichen Informationen über<br />

alle in der Domäne erstellten Objekte.<br />

Hinsichtlich der Replikation ist wichtig,<br />

dass nur Schemas und Konfigurationen<br />

zwischen allen Domänencontrollern repliziert<br />

werden. Die Grenze einer vollen<br />

Domänen-Replikation ist die Domäne<br />

selbst.<br />

Im Gegensatz zu Windows NT gib es<br />

aber nur einen sogenannten globalen Katalog,<br />

der eine wichtige Rolle im Active<br />

Directory spielt. Der globale Katalog ist<br />

die Menge aller Objekte in einer AD-Gesamtstruktur.<br />

Ein globaler Katalogserver<br />

ist ein Domänencontroller, der eine vollständige<br />

Kopie aller Objekte im Verzeichnis<br />

für die dazugehörige Host-Domäne<br />

sowie eine schreibgeschützte Teilkopie<br />

aller Objekte für alle anderen Domänen<br />

in der Gesamtstruktur speichert. So gab<br />

es bei Windows 2000 beispielsweise das<br />

Problem, dass Schema-Updates stets zu<br />

einer Re-Ininitialisierung des globalen<br />

Katalogs führten. Im Gegensatz zu Windows<br />

NT besitzen nämlich ab Windows<br />

2000 alle Domänencontroller im AD eine<br />

beschreibbare Kopie der Active Directory-<br />

Datenbank. Das Ändern eines Attributs<br />

auf einem der DCs wird in regelmäßigen<br />

Abständen auf alle anderen DC repliziert,<br />

damit sich alle DCs, abgesehen von den<br />

sogenannten Betriebsmaster-Funktionen<br />

auf dem gleichen Stand befinden. Solche<br />

Flexible Single Master Operations (FSMO)<br />

sind im Microsoft-Vokabular<br />

spezielle Aufgaben für Domain<br />

Controller, die sich<br />

zwar auch auf verschiedene<br />

Server verteilen lassen, aber<br />

nicht auf mehreren Servern<br />

gleichzeitig zur Verfügung<br />

stehen dürfen. Beim AD ist<br />

der Ausfall eines DC unproblematisch<br />

für die Active Directory-Datenbank,<br />

weil aufgrund<br />

der Redundanz keine<br />

Informationen verloren gehen<br />

können. Lediglich beim<br />

Ausfall eines Betriebsmasters<br />

muss der Admin schnellstmöglich<br />

die FSMO-Rollen an<br />

einen oder mehrere andere<br />

DCs zuweisen.<br />

Übrigens kann nicht nur ein<br />

Windows-Server einen AD-<br />

Verzeichnisdienst zur Verfügung stellen,<br />

auch ein Linux-Server mit Samba 4 ist<br />

dazu in der Lage. Ab Microsoft Windows<br />

Server 2008 hat Microsoft zudem das<br />

Konzept des Read Only Domain Controller<br />

(RODC) eingeführt, welches im Prinzip<br />

an den Backup Domain Controller<br />

von Windows NT erinnert. Der RODC ist<br />

ein Domain Controller ohne Schreibberechtigung<br />

und ohne sicherheitsrelevante<br />

Daten und lässt sich damit an potenziell<br />

unsicheren Standorten nutzen.<br />

Hierarchie<br />

Die Hierarchie der Active-Directory-Datenbank<br />

ist anders strukturiert als bei<br />

LDAP. Beim AD steht an der Wurzel des<br />

Verzeichnisdienstes der Active Directory<br />

Forest, der die Gesamtstruktur sämtlicher<br />

Objekte im AD inklusive der zugehörigen<br />

Attribute, Regeln und Container enthält.<br />

Der Wald kann mehrere transitiv verknüpfte<br />

Bäume enthalten, wobei jeder<br />

Baum eine oder mehrere Domänen in je<br />

einem Verzeichnis verwaltet, die in der<br />

Hierarchie ebenfalls transitiv verknüpft<br />

sind [4].<br />

Dabei benutzt das Active Directory zur<br />

Benennung der Domänen das DNS-<br />

System mit seinem definierten Namensraum.<br />

In der Domäne gibt es wiederum<br />

Organisationseinheiten (OU). Das sind<br />

Container-Objekte zum Gruppieren anderer<br />

Objekte im AD. Eine OU kann neben<br />

Objekten auch andere OUs enthalten. Ein<br />

weiteres Organisationsmerkmal im Active<br />

Directory sind Standorte, eine physische<br />

Gruppierung eines oder mehrerer logischer<br />

IP-Subnetze. Standorte dienen im<br />

AD vor allem der Optimierung der Replikation,<br />

weil sie physisch mit unterschiedlichen<br />

Unternehmensstandorten korrespondieren,<br />

die untereinander durch langsame<br />

Netzwerktechnologien wie WAN<br />

oder VPN verbunden sind. Dabei können<br />

Domänen Standorte enthalten, aber auch<br />

Standorte Domänen.<br />

Die Planung der AD-Struktur ist entscheidend<br />

für die Funktion des Verzeichnisdienstes,<br />

insbesondere weil spätere Änderungen<br />

einen hohen Aufwand bedeuten.<br />

In der Praxis hat sich eine Aufteilung<br />

nach geografischen Standorten, Aufgaben<br />

oder IT-Rollen beziehungsweise eine<br />

Kombination aus diesen Modellen bewährt.<br />

Weitere Bestandteile<br />

Active Directory basiert nicht nur auf<br />

LDAP und DNS, sondern auch auf CIFS<br />

und Kerberos. Bei CIFS handelt es sich<br />

um ein Protokoll für Druck- und Dateidienste,<br />

das in der Unix-Welt beispielsweise<br />

von Samba implementiert wird.<br />

Kerberos dient im AD zur Authentifizierung<br />

und vergibt dazu Ticket Granting<br />

Tickets (TGT). Ein TGT autorisiert einen<br />

Benutzer zum Erhalt eines Service<br />

Tickets für einen Netzwerkdienst. Der<br />

gesamte Authentifizierungs-Vorgang läuft<br />

dabei nach einmaliger Passwortabfrage<br />

im Hintergrund ab.<br />

Microsofts DNS-Implementierung nutzt<br />

SRV-Records. Mit dem SRV-Service (Service<br />

Resource Records) lässt sich über<br />

das DNS kommunizieren, welche IPbasierenden<br />

Dienste (Services) in einer<br />

Domain angeboten werden. Außerdem<br />

liefert der SRV-Record zu jedem Dienst<br />

zusätzliche Informationen wie etwa den<br />

betreffenden Server-Namen.<br />

Active Directory speichert sämtliche Informationen<br />

in einer Jet-Blue-Datenbank,<br />

die der Microsoft Jet Engine entstammt,<br />

einem transaktionsorientierten relationalen<br />

RDBMS, das Write-Ahead-Logging<br />

benutzt. Die Datenbankdatei »NTDS.DIT«<br />

enthält die drei Haupttabellen »schema<br />

table« zum Speichern der Schemas, »link<br />

table« für die Objekt-Struktur und »data<br />

table« für die eigentlichen Daten. Dabei<br />

88 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Active directory<br />

KnOw-HOw<br />

ADFS): Windows Server 2008 verwendet<br />

ADFS zur webbasierten Authentifizierung<br />

von Benutzern, die sich<br />

außerhalb der ADDS-Infrastruktur<br />

befinden.<br />

n Active Directory Rights Management<br />

Services (Active Directory Rechteverwaltungsdienste,<br />

ADRMS): Die<br />

ADRMS stellen kryptografische Methoden<br />

zum Schutz der AD-Ressourcen<br />

zur Verfügung.<br />

n Active Directory Certificate Services<br />

(Active Directory-Zertifikatsdienste,<br />

ADCS): Die ADCS stellen eine Public-<br />

Key-Infrastruktur bereit.<br />

Zum Bearbeiten der Attribute des Schemas<br />

diente bis Windows Server 2003<br />

ausschließlich die Microsoft Management<br />

Console (MMC). Mit Windows Server<br />

2008 R2 hat Microsoft mit dem AD-<br />

Verwaltungscenter ein leistungsfähigeres<br />

Werkzeug eingeführt, das den Anforderungen<br />

in Enterprise-Umgebungen mit<br />

vielen Domänen besser gewachsen ist.<br />

Außerdem hat Microsofts Skriptsprache<br />

Powershell über die Jahre an Bedeutung<br />

gewonnen, auch in Bezug auf die Zusammenarbeit<br />

mit dem AD, sodass heute eine<br />

ganze Reihe leistungsfähiger Kommandozeilen-Tools<br />

dafür bereitstehen. Darüber<br />

hinaus gibt es zahllose von Administratoren<br />

entwickelte Skripte sowie externe<br />

Tools und Kommandos wie etwa [5].<br />

Microsoft hat seinem Verzeichnisdienst<br />

von Anfang mit einer Reihe interessanter<br />

Funktionen ausgestattet, die nicht unmitsorgt<br />

die ESE98-Datenbank-Engine (Extensible<br />

Storage Engine) dafür, die hierarchischen<br />

AD-Daten in ein relationales<br />

Datenmodell umzusetzen.<br />

AD einrichten<br />

Eine AD-Domäne lässt sich einrichten,<br />

indem man einen Domänencontroller<br />

aufsetzt. Das geschieht entweder schon<br />

bei der Installation des Windows-Servers<br />

oder durch Heraufstufen eines gewöhnlichen<br />

Member Servers mit dem Tool<br />

»dcpromo.exe« (Abbildung 1). Wurde<br />

die Domäne einmal erstellt, lassen sich<br />

weder der Server noch die Domäne wieder<br />

umbenennen. Das Ändern des Server-Namens<br />

funktioniert nur nach dem<br />

Herabstufen mit »dcpromo.exe«, was bei<br />

Windows 2000 stets mit dem Verlust aller<br />

aktuellen Einstellungen und Benutzerkonten<br />

einherging.<br />

Wer einen neuen Windows Server aufsetzt,<br />

kommt durch Auswahl einer Server-<br />

Rolle automatisch in den Genuss einer<br />

funktionierenden Grundstruktur für das<br />

AD. Außerdem unterstützen die Arbeitsplatzbetriebssysteme<br />

XP, Vista und 7 die<br />

Anmeldung am AD. Übrigens heißt Microsofts<br />

Verzeichnisdienst ab Windows<br />

Server 2008 offiziell Active Directory<br />

Domain Services (ADDS). Serverseitig<br />

stehen auf einem aktuellen Windows Server<br />

2008 folgende Rollen im Kontext des<br />

Active Directory zur Verfügung (Abbildung<br />

2):<br />

n Active Directory Domain Services<br />

(Active Directory Domänen Verzeichnisdienst,<br />

ADDS): Die aktuelle Version<br />

des ursprünglichen Verzeichnisdienstes<br />

AD spielt die zentrale Rolle für<br />

Microsofts Domänen- und Ressourcenverwaltung.<br />

n Active Directory Lightweight Directory<br />

Services (Active Directory Lightweight<br />

Verzeichnisdienst, ADLDS):<br />

Eine funktional eingeschränkte Version<br />

des ADDS zum Anbinden von<br />

Anwendungen oder Diensten, die auf<br />

LDAP-konforme Informationen aus<br />

dem Verzeichnis angewiesen sind.<br />

Diese Rolle wurde erstmals in Windows<br />

Server 2003 implementiert, hieß<br />

aber dort Active Directory Application<br />

Mode (ADAM).<br />

n Active Directory Federation Services<br />

(Active Directory Verbunddienste,<br />

telbar mit der Kerntechnologie zu tun<br />

haben. Dazu zählen die sogenannten<br />

Gruppenrichtlinen (GPO), die sich im<br />

Active Directory mit Standorten, Domänen<br />

und Organisationseinheiten (OU)<br />

verknüpfen lassen. Gruppenrichtlinien<br />

bilden ab Windows 2000 das Fundament<br />

einer benutzerfreundlichen Verwaltung<br />

von Rechten und lösten die Kombination<br />

von Konten und Systemrichtlinien bei<br />

Windows NT ab. Letztere ließen sich<br />

nämlich nur auf Domänen-Ebene anwenden,<br />

und die jeweiligen Einstellungen<br />

waren permanent im Benutzerprofil<br />

beziehungsweise Computer und damit<br />

in der Registry gespeichert. Damit gab<br />

es bei Systemrichtlinien auch kein Policy<br />

Tattoing, der entsprechende Registry-<br />

Eintrag blieb also für immer vorhanden.<br />

Daran änderte selbst das Löschen der<br />

Datei »ntconfig.pol« nichts, weil sie in<br />

der Registry des jeweiligen Objekts eingetragen<br />

war.<br />

Systemrichtlinien wirkten sich stets auf<br />

Benutzer, Sicherheitsgruppen und Computer<br />

aus und galten zudem als unsicher,<br />

weil sie jeder Benutzer mit Zugriff<br />

auf die Registry editieren konnte. Mit<br />

Gruppenrichtlinien lassen sich Server<br />

und Clients komfortabel konfigurieren,<br />

unter anderem weil sie die jeweilige<br />

Hardware, Systemrolle und den Benutzertyp<br />

berücksichtigen.<br />

Mit Windows Server 2003 spendierte<br />

Microsoft seinem Serverbetriebssystem<br />

dann ein leistungsfähiges grafisches<br />

Abbildung 2: Auswahl der entsprechenden Server-Rollen im Servermanager bei der Installation.<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

89


KnOw-HOw<br />

Active directory<br />

Server 2008 erstmals umfangreiche Verwaltungsfunktionen<br />

über die Powershell.<br />

Highlight von Windows-Server 2008 ist<br />

aber die erwähnte »Gruppenrichtlinienverwaltungskonsole<br />

(GPM)«, die das zentrale<br />

Verwalten von Clients und Servern<br />

fest im Betriebssystem verankert.<br />

Außerdem hält Windows Server 2008 ein<br />

Schmankerl für Unternehmen parat, die<br />

sich immer noch nicht vom alten WINS-<br />

Dienst zur lokalen Namensauflösung<br />

trennen können. So kennt die überarbeitete<br />

DNS-Version in Windows Server<br />

2008 Global Name Zones, die eine zonenübergreifende<br />

Auflösung von Kurznamen<br />

ermöglichen.<br />

Windows Server 2008 R2<br />

Abbildung 3: Den Gruppenrichtlinieneditor hat Microsoft bereits mit Windows Server 2003 eingeführt.<br />

Group Policy Management Tool, die<br />

Gruppenrichtlinienverwaltungskonsole<br />

(Abbildung 3).<br />

Bis zu Windows Server 2008 R2 hat Microsoft<br />

Active Directory stetig weiterentwickelt<br />

und dabei Erfahrungen aus dem<br />

Einsatz in Großunternehmen einfließen<br />

lassen. So durften etwa bei Windows<br />

2000 Gruppen nur maximal 5000 Mitglieder<br />

haben, weil der Replikationsmechanismus<br />

nicht besonders gut für den Einsatz<br />

in Großunternehmen geeignet war.<br />

Der Grund für die Größenbeschränkung<br />

lag darin, dass ein Windows 2000 Domänencontroller<br />

immer sämtliche Gruppen<br />

auf einmal replizierte, was zu einer Belastungsobergrenze<br />

der Datenbank führte.<br />

Erst Windows Server 2003 kennt die sogenannte<br />

Linked Value Replication, bei<br />

der der DC nur noch die Änderungen<br />

repliziert. Außerdem enthielt Windows<br />

Server 2003 zahlreiche weitere Verbesserungen<br />

im Algorithmus zur Berechnung<br />

der Replikationstopologie. So muss Windows<br />

Server 2003 beispielsweise nicht<br />

mehr sämtliche Sicherheitseinstelllungen<br />

mehrfach mit jedem AD-Objekt speichern,<br />

sondern bedient sich intelligenter<br />

Verknüpfungen, was die Datenbankgröße<br />

im AD minimiert. Weiter ermöglichte<br />

Windows Server 2003 erstmals strukturübergreifende<br />

Vertrauensstellungen, sogenannte<br />

Forest Trusts.<br />

Außerdem kann ein Windows Server<br />

2003 DNS-Namensräume unabhängig<br />

von Domänen-Grenzen replizieren. Zur<br />

Vereinfachung der Administration erhielt<br />

der Windows Server 2003 zusätzliche<br />

Kommandotools, wie »DSquery« oder<br />

»DGet« und kennt gespeicherte Abfragen<br />

im MMC-Modul »AD-Benutzen und<br />

Computer«. Windows Server 2008 basierte<br />

bei Markteinführung gleich auf<br />

dem SP1, damit das Sevice Pack für den<br />

schon vorab veröffentlichten Client Vista<br />

gleichzeitig erscheinen konnte, brachte<br />

aber hinsichtlich des Active Directory nur<br />

noch Detailverbesserungen wie den oben<br />

erwähnten Read Only Domain Controller<br />

(RODC). Der RODC repliziert Änderungen<br />

nur auf sich selbst und gibt sie nicht<br />

weiter. Außerdem enthält er eine lokale<br />

Kopie des AD, aber ohne Benutzer- oder<br />

Computerpasswörter.<br />

Außerdem ermöglichte Windows Server<br />

2008 erstmals ganz ohne Zusatztools<br />

unterschiedliche Passwortrichtlinien für<br />

unterschiedliche Nutzergruppen (Fine<br />

Grained Password Policies). Darüber hinaus<br />

ließ sich Active Directory bei Windows<br />

Server 2008 wie alle anderen Server-Rollen<br />

mithilfe des Servermanagers<br />

einrichten und verwalten, der nebenbei<br />

zahlreiche Verbesserungen an der Benutzeroberfläche<br />

erfahren hatte. Mithilfe von<br />

Active Directory Snap-Ins war es erstmals<br />

auch möglich, Schnappschüsse des AD zu<br />

jedem beliebigen Zeitpunkt zu erstellen.<br />

Der Admin kann solche Snapshots vergleichend<br />

auswerten oder mit ihrer Hilfe<br />

Änderungen dokumentieren. Außerdem<br />

implementierte Microsoft bei Windows<br />

Die aktuelle Windows Server-Version<br />

2008 R2 bietet zahlreiche interessante<br />

und nützliche Funktionen für den Admin-Alltag,<br />

darunter auch einige, die das<br />

Active Directory betreffen, wie das neue<br />

AD-Verwaltungscenter (Abbildung 4),<br />

den Papierkorb für AD-Objekte oder den<br />

Offline-Domänenbeitritt. Highlight ist das<br />

neue AD-Verwaltungscenter.<br />

Das neue AD Verwaltungscenter ist unabhängig<br />

von der Management Console<br />

und eine eigenständige Applikation, die<br />

im Unterbau auf Powershell-Skripten basiert.<br />

Besonders herauszustellen ist der<br />

intuitiv bedienbare und flexible Navigationsbereich<br />

links, mit dessen Hilfe der Admin<br />

sehr schnell durch die AD-Struktur<br />

navigieren kann.<br />

Das alte MMC-Modul »AD-Benutzer und<br />

Computer« startete mit der Navigation<br />

stets beim Domänen-Knoten, sodass sich<br />

die Benutzbarkeit im Prinzip auf eine Domäne<br />

beschränkte. Beim neuen AD-Verwaltungscenter<br />

lässt sich der Startpunkt<br />

des Navigationsbereiches innerhalb des<br />

gesamten Verzeichnisbaums frei definieren.<br />

Zudem kennt der Navigationsbereich<br />

zwei verschiedene Darstellungsarten. Neben<br />

der traditionellen Konsolenansicht,<br />

in der der Admin Knoten per Mausklick<br />

ein- und ausblendet, gibt es auch eine<br />

Listendarstellung.<br />

Der größte Vorteil besteht aber darin, dass<br />

sich die Anwendung der GUI nicht mehr<br />

auf eine Domäne beschränkt, sondern<br />

die gesamte AD-Struktur berücksichtigt.<br />

Außerdem haben sich die Entwickler die<br />

Effizienz beim Suchen und Navigieren in<br />

90 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Active directory<br />

KnOw-HOw<br />

extrem großen Verzeichnissen verbessert.<br />

So arbeitet die globale Suche ausschließlich<br />

mit dem Navigationsknoten, der zum<br />

Zeitpunkt der Benutzung im Navigationsfenster<br />

eingeblendet ist. Gefundene Objekte<br />

lassen sich via Mehrfachselektion<br />

auf einmal bearbeiten, auch über Domänen-Grenzen<br />

hinweg. Außerdem hat der<br />

Admin die Möglichkeit, die Anzeige im<br />

Detailbereich mithilfe aufgabenbasierter<br />

Filter weiter einzugrenzen.<br />

Papierkorb<br />

Ebenfalls neu im Windows Server 2008<br />

R2 ist der von vielen Admins bisher<br />

schmerzlich vermisste Papierkorb für<br />

AD-Objekte. Dieser macht es möglich,<br />

gelöschte (als „tombstoned“ bezeichnete)<br />

Objekte wiederherzustellen. Mit<br />

dem neuen Papierkorb für AD-Objekte<br />

kennzeichnet Windows Server das Objekt<br />

vorerst nicht als tombstoned. Vielmehr<br />

verbleibt es per Default 180 Tage im Papierkorb.<br />

Erst nach Ablauf der Tombstone-Lifetime<br />

entfernt Windows Server<br />

sämtliche Backlinks. Allerdings taucht<br />

der Papierkorb nicht in der grafischen<br />

Oberfläche eines der verfügbaren grafischen<br />

AD-Tools auf, sondern lässt sich<br />

ausschließlich über das Cmdlet »Restore-<br />

ADObject« bedienen.<br />

Ein weiteres neues Feature im Active<br />

Directory 2008 R2 ist der sogenannte Offline-Domänenbeitritt.<br />

Bisher war nämlich<br />

eine bestehende Netzwerkverbindung<br />

unbedingte Voraussetzung, wollte sich<br />

ein Client an einer AD-Domäne anmelden.<br />

Problematisch ist das insbesondere<br />

dann, wenn der Domänenbeitritt schon<br />

während der Installation von Windows<br />

Vista oder Windows 7 erfolgen sollte, das<br />

Netzwerk aber nicht konfiguriert ist. Mit<br />

dem neuen Offline-Domänenbeitritt kann<br />

der Admin den Domänenbeitritt einfach<br />

auf den Zeitpunkt des ersten Rechnerstarts<br />

verschieben und die Installation des<br />

Clients fortsetzen, wozu das Tool »djoin.<br />

exe« dient, das eine Konfigurationsdatei<br />

für den Client erstellt und Metadaten<br />

für ein Computerkonto im AD anlegt.<br />

Neben diesen bedeutenden Neuerungen<br />

verfügt das AD-Modul für die Powershell<br />

über eine große Anzahl neuer Cmdlets.<br />

Eine Übersicht liefert:<br />

Get‐Command *‐AD*<br />

Abbildung 4: Das neue AD-Verwaltungscenter bietet neben der hierarchischen Ansicht auch eine flache<br />

Listendarstellung des Directory-Tree.<br />

Wer sich eine Übersicht sämtlicher neuer<br />

AD-Funktionen im Windows Server<br />

2008R2 verschaffen möchte, dem stehen<br />

im MS Technet unter [3] etliche Step-by-<br />

Step-Anleitungen zur Verfügung, die anhand<br />

praktischer Beispiele mit den neuen<br />

Funktionen vertraut machen.<br />

Fazit<br />

Ein Verzeichnisdienst ist unverzichtbar<br />

für die Ressourcenverwaltung in großen<br />

Netzen. Während das im Open-Source-<br />

Umfeld verbreitete OpenLDAP zwar in<br />

dieser Hinsicht unendlich flexibel ist, nutzen<br />

die meisten Distributionen LDAP maximal<br />

zum Authentifizieren von Posix-,<br />

Cyrus oder Samba-Nutzern, gelegentlich<br />

auch für Computerkonten. Eine Linux-<br />

Distribution, die LDAP intensiv nutzt und<br />

ein Domänen-Konzept mit zugehörigen<br />

Rollen für Server und Clients umsetzt,<br />

ist der im letzten Heft vorgestellte Univention<br />

Corporate Server [6].<br />

Bei Microsofts Server-Betriebssystem<br />

spielt das Konzept der Domäne zur Verwaltung<br />

sämtlicher Ressourcen im Unternehmens-Intranet<br />

eine zentrale Rolle,<br />

die sich zur Zeit seiner Entstehung durch<br />

LDAP nur schwer füllen ließ. Seit Windows<br />

2000 hat sich Active Directory stetig<br />

weiterentwickelt und es in Windows<br />

Server 2008 R2 unter der Bezeichnung<br />

ADDS zu beachtlicher Reife gebracht, die<br />

selbst das Verwalten hunderttausender<br />

Objekte möglich macht. Besonders überzeugend<br />

sind die grafischen Verwaltungswerkzeuge,<br />

wenngleich selbst Microsoft<br />

in jüngster Zeit wieder die Vorteile der<br />

Kommandozeile entdeckt hat und die<br />

neue Powershell zu einem zentralen<br />

Werkzeug im derzeit fortschrittlichsten<br />

Verzeichnisdienst erhebt. (ofr) n<br />

Infos<br />

[1] Active-Directory-Grundlagen: [http://<br />

www. microsoft. com/ germany/ technet/<br />

datenbank/ articles/ 600092. mspx]<br />

[2] Gruppenrichtlinien-Forum: [http:// social.<br />

technet. microsoft. com/ Forums/ de-DE/<br />

gruppenrichtliniende/ threads]<br />

[3] Step-by-Step-Guides zu neuen Funktionen:<br />

[http:// technet. microsoft. com/ de-de/<br />

library/ dd378801(WS. 10). aspx]<br />

[4] Active-Directory-Architektur: [http://<br />

technet. microsoft. com/ en-us/ library/<br />

bb727030. aspx]<br />

[5] Thirdparty-Tools: [http:// www. quest. com/<br />

powershell/ activeroles-server. aspx]<br />

[6] Thomas Drilling, Univention Corporate Server<br />

im Test, <strong>ADMIN</strong> 03/ 2011, S. 106<br />

Der Autor<br />

Thomas Drilling ist seit mehr als zehn Jahren<br />

hauptberuflich als freier Journalist und Redakteur<br />

für Wissenschafts- und IT-<strong>Magazin</strong>e tätig.<br />

Er verfasst regelmäßig Beiträge zu den Themen<br />

Open Source, Linux, Server, IT-Administration<br />

und Mac OS X.<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

91


Know-How<br />

Cloud-Forensik<br />

Neue Ansätze für die Forensik in Cloud-Umgebungen<br />

Wolkige Aussichten<br />

digifuture, 123RF<br />

wie sicher sind die daten in der Cloud? sehr sicher, sagen die einen, denn hier rentieren sich spezialisten und<br />

Hightech. Aber der Anwender verliert jede Kontrolle, sagen die anderen, denn die Cloud ist eine blackbox, und<br />

auf die werbesprüche der Provider kann man nichts geben. dominik birk, Christoph wegener<br />

Eigentlich liegt auf der Hand, dass computerforensische<br />

Untersuchungen auch<br />

oder gerade in einer Cloud nötig sind,<br />

um das Risiko eines Angriffs zutreffend<br />

zu beurteilen und sich gegen Angriffe<br />

wirksam wappnen zu können. Doch<br />

die Wissenschaft hat das Problem der<br />

Forensik in Cloud-Umgebungen bisher<br />

vernachlässigt. Interessanterweise hatten<br />

einige Autoren bereits 2009 darauf hingewiesen<br />

[1], und weitere Publikationen<br />

[2,3] bestätigten das. Trotzdem wird<br />

das Thema immer noch stiefmütterlich<br />

behandelt, und es gibt nach wie vor gerade<br />

im Bereich des Incident Handlings<br />

in Cloud-Umgebungen noch jede Menge<br />

Arbeit [8].<br />

Gleichzeitig investieren viele Firmen bereits<br />

massiv in neue Cloud-Umgebungen<br />

und die Umstellung auf Dienste in der<br />

Cloud. Sicherheits- und Datenschutz werden<br />

zwar zunehmend diskutiert, stehen<br />

aber oftmals hinter den scheinbaren Vorteilen<br />

für den Anwender zurück.<br />

Ein altes Problem der Forensik ist die<br />

Tatsache, dass Beweisspuren im Allgemeinen<br />

fragil und flüchtig sind. Gerade<br />

bei der Erfassung von neuen Beweisen<br />

muss man deshalb sehr darauf achten,<br />

potenzielle Beweise nicht zu verändern<br />

oder gar zu zerstören. Diese Problematik<br />

ist nicht nur auf die digitale Welt beschränkt,<br />

sondern gilt etwa auch für die<br />

Gerichtsmedizin. Der Vorteil der digitalen<br />

Beweiserfassung war bisher, dass der<br />

Untersucher in vielen Szenarien vor der<br />

Analyse der Beweise eine 1:1-Kopie des<br />

Datenträgers erstellen konnte. Dadurch<br />

konnte er wirksam verhindern, dass die<br />

Analyse potenzielle Beweise zerstörte. In<br />

Cloud-Umgebungen ist dies in aller Regel<br />

aber nicht mehr so einfach.<br />

Abhängig vom verwendeten Service-Modell<br />

(SaaS, PaaS oder IaaS, für die Details<br />

siehe [4]) und der Zusammenarbeit mit<br />

dem Cloud Service Provider (CSP) kann<br />

der Anwender zwar auf potenzielle Beweisquellen<br />

zugreifen, die für eine Untersuchung<br />

unbedingt notwendig sind.<br />

Allerdings ist die Menge dieser Beweise<br />

meist sehr beschränkt und verhindert<br />

somit eine vollständige Aufklärung der<br />

Tatumstände.<br />

Ein weiteres Problem stellt der Kontext<br />

der Beweismittel dar. Für den externen<br />

Forensiker ist auf den ersten Blick vielleicht<br />

nicht gleich ersichtlich, inwiefern<br />

vorhandene Beweise aus verschiedenen<br />

Komponenten des Cloud-Systems miteinander<br />

zusammenhängen könnten. Dies<br />

gilt zwar auch in traditionellen IT-Systemen,<br />

allerdings erschwert die Cloud<br />

durch ihre internationalen und länderübergreifenden<br />

Strukturen die Analyse<br />

und Bewertung zusätzlich.<br />

Beweispflicht<br />

Zudem ist es schwierig, die sogenannte<br />

„Chain of Custody“ für die Beweise zu<br />

erhalten. Der CSP übergibt die potenziellen<br />

Beweise an den Anwender: Wie<br />

kann dieser aber feststellen, dass es sich<br />

bei diesen Belegen auch wirklich um valide<br />

Beweise handelt und diese nicht von<br />

Dritten bösartig untergeschoben wurden?<br />

In diesem Kontext ist auch der Begriff<br />

der „Data Provenance“ von großer Bedeutung.<br />

Damit ist gemeint, welchen Ursprung<br />

ein Datum hat und wie es eventuell<br />

modifiziert wurde, also wer beispielsweise<br />

ein Datum zu welchem Zeitpunkt<br />

eingesehen oder verändert hat.<br />

Des Weiteren kann in heutigen Cloud-<br />

Umgebungen nicht oder nur schwer mit<br />

automatisierten Tools für die Forensik gearbeitet<br />

werden. Jeder Vorfall muss ein-<br />

92 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Cloud-Forensik<br />

Know-How<br />

zeln betrachtet und bearbeitet werden, da<br />

es an Standards mangelt. Selbst wenn es<br />

die gäbe, würden sie höchstwahrscheinlich<br />

auch nur bedingt durch die CSP umgesetzt.<br />

Zu groß ist die Gefahr, die eigene<br />

Monopolstellung am Markt zu verlieren.<br />

Forensik in SaaS-<br />

Anwendungen<br />

SaaS-Anwendungen erfreuen sich einer<br />

immer größeren Beliebtheit. Populäre<br />

Angebote wie die Google Cloud-Offers<br />

mit Gmail und GoogleDocs, aber auch<br />

Angebote aus dem Hause Salesforce zeigen,<br />

wie effizient und einfach Anwendungen<br />

in die Cloud ausgelagert werden<br />

können. Auch in Bezug auf die Sicherheit<br />

der Anwendung verstehen CSP zunehmend,<br />

dass Anwender Wert auf sichere<br />

Implementierung und Authentifizierung<br />

legen [6]. Paradoxerweise wird das Incident<br />

Handling bisher noch von kaum einem<br />

CSP offen angesprochen. Man kann<br />

vermuten, dass auf die gegenwärtigen<br />

Beteuerungen zur Cloud-Sicherheit eine<br />

Phase folgen wird, in der der Anwender<br />

schmerzlich erkennen muss, dass seine<br />

Daten in der Cloud doch nicht hundertprozentig<br />

sicher waren.<br />

Im Klartext: Derzeitige SaaS-Anwendungen<br />

bieten so gut wie keine Möglichkeit,<br />

eine forensische Untersuchung durchzuführen.<br />

Dies soll im Folgenden anhand<br />

eines Beispiels veranschaulicht werden,<br />

das zwar fiktiven Charakter hat, dennoch<br />

derzeitigen praktischen SaaS-Anwendungen<br />

nicht fern ist.<br />

Ein Beispiel<br />

Firmen können ihren E-Mail-Dienst in die<br />

Cloud zu einem SaaS-Provider auslagern.<br />

Dies hat diverse Vorteile: So muss ein<br />

eigener E-Mail-Server weder angeschafft<br />

noch gepflegt werden. Das spart sowohl<br />

Anschaffungs- als auch Personalkosten.<br />

Auch für die Sicherheit der Anwendung<br />

ist von nun an der CSP und nicht mehr<br />

der eigene Administrator verantwortlich,<br />

dieser muss lediglich per Schnittstelle<br />

seine Nutzer verwalten. Die Firmen-Mitarbeiter<br />

konfigurieren ihre E-Mail-Clients<br />

anschließend so, dass per SSL/ TLS die<br />

E-Mails direkt vom CSP geholt und auch<br />

über dessen E-Mail-Server in der Cloud<br />

versendet werden. Zudem besteht die<br />

Möglichkeit, das Web-Frontend des CSP<br />

als Web-Mailer zu nutzen.<br />

Leider werden PC-Arbeitsplätze von Mitarbeitern<br />

aber auch trotz des Einsatzes von<br />

Anti-Malware-Lösungen immer wieder<br />

von Malware befallen, die beispielsweise<br />

das Passwort für den Zugang zum E-Mail-<br />

Dienst der SaaS-Cloud ausspäht und an einen<br />

Angreifer übermittelt. Solche Vorfälle<br />

sind nichts Besonderes, sondern an der<br />

Tagesordnung. Der Mitarbeiter bekommt<br />

von alledem nichts mit und wird im Regelfall<br />

keinen Verdacht schöpfen, da sein<br />

E-Mail-Client nach wie vor reibungslos<br />

funktioniert. Auch wenn der Angreifer die<br />

Für Leser des <strong>ADMIN</strong>-<strong>Magazin</strong>s:<br />

Gutschein für 3 Storage-Kompendien gratis.<br />

Einfach unter www.searchstorage.de/registrierung anmelden und den Aktionscode „admin“<br />

verwenden.<br />

Sie gehen keine Verpflichtungen ein und bekommen die drei Ausgaben automatisch zugeschickt:<br />

• Storage-Konsolidierung: Intelligentes Sparen<br />

• Cloud Storage im Business-Fokus<br />

• Skalierbarer Storage für den Mittelstand<br />

Der Gutschein ist bis zum 31. Juli 2011 gültig.<br />

NEU!<br />

Jetzt Gutschein einlösen:<br />

www.SearchStorage.de/<br />

registrierung


Know-How<br />

Cloud-Forensik<br />

© Johan Swanepoel, 123RF<br />

Abbildung 1: Um Spurensicherung geht es auch in der Computerforensik – in der Cloud ist das aber nicht einfach.<br />

gestohlenen Zugangsdaten nutzt, um sich<br />

über das Web-Frontend in das Mailkonto<br />

des Opfers einzuloggen, bekommt dieses<br />

davon nichts mit, da in der Regel keine<br />

entsprechenden Logging-Mechanismen<br />

eingerichtet sind, die es dem Anwender<br />

ermöglichen würden, solche Vorfälle zu<br />

erkennen. Bei manchen CSP werden zwar<br />

die letzten IP-Adressen angezeigt, die auf<br />

das Mailkonto zugegriffen haben – das<br />

setzt allerdings voraus, dass der Nutzer<br />

sich über das Web-Frontend anmeldet und<br />

zudem noch erkennt, dass hier nicht nur<br />

seine ihm zugeordnete IP-Adresse verzeichnet<br />

ist. Wenn es sich um einen internen<br />

Angreifer im gleichen Netz handelt<br />

oder der Nutzer die Information schlichtweg<br />

überhaupt nicht interpretieren kann,<br />

kann der Angriff so nur schwer detektiert<br />

werden (Abbildung 1).<br />

Erst wenn der Angreifer bemerkbare Spuren<br />

auf dem E-Mailkonto des Opfers hinterlässt,<br />

könnte dieses Verdacht schöpfen.<br />

Dies wäre beispielsweise dadurch<br />

gegeben, dass der Angreifer eine E-Mail<br />

aus dem Posteingang löscht oder merklich<br />

verändert. Das Opfer würde sich in<br />

solch einem Fall wundern, letztendlich<br />

könnte aber auch der CSP aufgrund von<br />

technischen Problemen schuld sein. Der<br />

Anwender hätte keine Möglichkeit, diese<br />

These zu bestätigen oder zu widerlegen.<br />

Es fehlt hier also zusätzlich an Verfahren,<br />

um die Accountability von Cloud-Services<br />

zu gewährleisten. Sollte der Anwender<br />

dennoch den Verdacht schöpfen, Unbe-<br />

fugte könnten seine Mails manipulieren,<br />

so hätte er jedoch keine Möglichkeit, das<br />

selbst forensisch zu untersuchen. Seine<br />

einzige Möglichkeit bestünde hingegen<br />

darin, die Hotline des CSP zu kontaktieren<br />

und entsprechende Anträge zur Untersuchung<br />

des Vorfalls zu stellen. Je nach<br />

Vorgehen des CSP wird sich hierbei letztendlich<br />

herausstellen, dass der Account<br />

kompromittiert wurde.<br />

Was aber wäre dann die Folge? Der Anwender<br />

hat keine Möglichkeit festzustellen,<br />

welche Daten nun genau vom Angreifer<br />

eingesehen wurden, denn ein entsprechendes<br />

Logging ist nicht einsehbar.<br />

Im schlimmsten Fall wurde das komplette<br />

Konto kopiert und gar im Netz verfügbar<br />

gemacht. Eine weitere Möglichkeit wäre<br />

auch, dass der Angreifer die Daten an die<br />

Konkurrenz verkauft. Hierüber kann der<br />

Anwender nur spekulieren.<br />

Ein weiteres Problem stellen die ausgehenden<br />

E-Mails dar: Man kann nämlich<br />

nur sehr schwer nachvollziehen, welche<br />

fälschliche Korrespondenz mit potenziellen<br />

Geschäftspartnern geführt wurde, da<br />

ausgehende und eingegangene E-Mails<br />

von einem aufmerksamen Angreifer umgehend<br />

gelöscht werden könnten. Das<br />

heißt, der Angreifer könnte, im Namen<br />

des Mitarbeiters der betroffenen Firma,<br />

Systeme der Geschäftskunden oder von<br />

Kollegen angreifen. Genauso gut könnte<br />

er gefälschte Angebote im Namen der<br />

Firma potenziellen Interessenten unterbreiten<br />

oder er könnte Kontodaten verfälschen.<br />

Dies alles sind zwar Angriffsszenarien,<br />

die mit einem traditionellen<br />

selbst betriebenen E-Mail-Service auch<br />

möglich wären. In diesem Fall wäre allerdings<br />

die nachgelagerte Untersuchung<br />

entsprechend einfacher, da Systeme und<br />

Prozesse etabliert werden könnten, die<br />

forensische Untersuchungen ermöglichen<br />

oder vereinfachen. Im hier aufgezeigten<br />

Beispiel ist der Anwender primär auf<br />

die Zusammenarbeit mit dem CSP angewiesen.<br />

Ein Umstand, der bei global<br />

agierenden CSPs zudem zu erheblichen<br />

rechtlichen Problemen oder Verzögerungen<br />

führen kann.<br />

Neue Ansätze für die<br />

Cloud-Forensik<br />

Grundlegend müssten bei Untersuchungen<br />

in Cloud-Umgebungen drei verschiedene<br />

Komponenten in die Untersuchung<br />

einbezogen werden: Das Client-System<br />

des Nutzers, das mit dem Cloud-Service<br />

in Verbindung steht, die Netzwerkschicht<br />

über die die Daten zwischen Nutzer und<br />

Cloud ausgetauscht werden, und die<br />

virtualisierte Cloud-Instanz und zwar<br />

unabhängig vom Service Modell. Die Beweisquellen<br />

aus allen drei Komponenten<br />

müssten miteinander korreliert und in<br />

einen gemeinsamen Kontext gebracht<br />

werden. Erst dann ist eine vollständige<br />

Aufklärung des Tathergangs eventuell<br />

möglich. Leider ist dies in realen Szenarien<br />

derzeit nur schwer machbar, da es<br />

der ermittelnden Partei meist an entsprechendem<br />

Beweismaterial fehlt.<br />

Wie das obige Beispiel zeigt, sind traditionelle<br />

Methoden der Digitalen Forensik<br />

in virtuellen Cloud-Umgebungen nicht<br />

mehr oder nur noch teilweise einsetzbar.<br />

Wo früher bei einem Vorfall beispielsweise<br />

zunächst eine 1:1-Kopie des Datenträgers<br />

erstellt wurde, kann in heutigen<br />

virtualisierten Umgebungen nicht mehr<br />

auf solche Methoden zurückgegriffen<br />

werden. Hauptproblem dabei ist, dass<br />

der Forensiker in aller Regel gar nicht so<br />

genau weiß, wo genau die vom Vorfall<br />

betroffenen Daten lokalisiert sind. Dies<br />

gilt auch für das obige SaaS-Szenario:<br />

Der genaue Speicherort der E-Mails ist für<br />

den Endnutzer nicht einsehbar und der<br />

Versuch, ihn zu ermitteln, führt neben Sicherheitsproblemen<br />

möglicherweise auch<br />

zu Problemen mit dem Datenschutz.<br />

94 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Außerdem wird der zuständige CSP keinen<br />

physikalischen Zugriff auf den betroffenen<br />

Datenträger gewähren, denn<br />

dieser könnte zusätzlich Daten von anderen<br />

Anwendern beinhalten, die nicht<br />

für das Auge von Dritten bestimmt sind.<br />

Um solche Fälle zu vermeiden, sollte<br />

eine entsprechende Klausel in die Service<br />

Level Agreements (SLA) aufgenommen<br />

werden. Allerdings ist den Autoren<br />

bis heute kein CSP bekannt, der eine<br />

entsprechende Regelung in seinen SLA<br />

anbietet.<br />

Ansätze für IaaS-<br />

Umgebungen<br />

In IaaS-Szenarien hat die zunehmende<br />

Virtualisierung der Maschinen aber auch<br />

Vorteile: Per Snapshot-Technologie können<br />

mit einem Klick vollständige Abbilder<br />

der virtuellen Maschinen erzeugt<br />

werden, was gerade für die Digitale Forensik<br />

einen enormen Vorteil darstellt. Allerdings<br />

bleibt die Frage offen, inwiefern<br />

das Abbild auch wirklich valide erzeugt<br />

wurde. Das lässt sich vom Anwender<br />

nicht auf einfache Art und Weise überprüfen.<br />

Hilfreich ist hier sicherlich die<br />

Dokumentation der technischen Prozesse<br />

im Rahmen eines Snapshot-Vorgangs, da<br />

viele CSP mit einer modifizierten Version<br />

des Hypervisors arbeiten und man sich<br />

daher nicht auf die Prozessdokumentation<br />

des Herstellers verlassen sollte.<br />

Des Weiteren bleibt dem Kunden des<br />

IaaS-Services der Zugriff auf Netzwerkkomponenten<br />

verwehrt. So kann bei einer<br />

Untersuchung nicht auf die Logfiles<br />

von Routern, Switches, Firewall und so<br />

weiter zugegriffen werden und es steht<br />

somit von Seiten der Netzwerkschicht<br />

keinerlei Beweismaterial zur Verfügung.<br />

Diesen Zustand könnte nur der CSP<br />

ändern.<br />

Eine Schnittstelle, die es einem Kunden<br />

ermöglicht, diese Beweisquelle anzuzapfen<br />

wäre sicherlich ein erster Schritt<br />

in die richtige Richtung. Auf den Netzwerkkomponenten<br />

könnten individuelle<br />

Logfiles erstellt werden, die gerade in<br />

IaaS-Szenarien auf die virtuelle Instanz<br />

zugeschnitten sind. Dies bedeutet, dass<br />

lediglich Ausschnitte des Netzwerkverkehrs<br />

zur und von der virtuellen Instanz<br />

aufgezeichnet werden, die der Kunde<br />

anschließend, eventuell sogar gegen<br />

www.A dmin-mAgA zin.de<br />

eine entsprechende finanzielle Aufwendung,<br />

erhält. Des Weiteren könnte der<br />

CSP diese Logfiles dem Kunden nur für<br />

einen beschränkten Zeitraum zur Verfügung<br />

stellen, um unnötigen Verbrauch<br />

von Speicherplatz zu vermeiden. Essenziell<br />

wäre allerdings, dass der Kunde nur<br />

Beweismaterial für seine virtuellen Instanzen<br />

erhält und nicht die der benachbarten<br />

Instanz.<br />

Für den Kunden hätte dies aber einen entscheidenden<br />

Vorteil: Bei einer Kompromittierung<br />

wäre es nun möglich, Beweismaterial<br />

vom Client mit der Netzwerkschicht<br />

und dem Server (IaaS-Instanz)<br />

zu korrelieren, unter der Voraussetzung,<br />

dass Logfiles der IaaS-Instanz in regelmäßigen<br />

Abständen auf einen externen<br />

Logfile-Server geschrieben werden. Ansonsten<br />

könnte ein Angreifer nach erfolgreichem<br />

Eindringen in die IaaS-Instanz<br />

die entsprechenden Logfiles löschen oder<br />

verändern.<br />

Um solche Angriffe zu verhindern, wäre<br />

auch ein Service mittels Virtual Introspection<br />

vonseiten des CSP möglich.<br />

Hierbei würde sich der Kunde damit einverstanden<br />

erklären, dass der CSP mit<br />

automatisierten Werkzeugen über den<br />

Hypervisor in regelmäßigen Abständen<br />

den Systemzustand der virtuellen Instanz<br />

überprüft und entsprechende Log-<br />

Einträge erstellt. Diese könnten selbst<br />

von einem Angreifer nur über eine vollständige<br />

Kompromittierung des Hypervisors<br />

verfälscht werden [9].<br />

Ansätze für SaaS-<br />

Umgebungen<br />

In SaaS-Umgebungen kann der Kunde<br />

lediglich über eine vorgefertigte API mit<br />

dem Service kommunizieren. Oftmals<br />

wird dies direkt über eine Web-Schnittstelle<br />

realisiert. Dies kann Vor- und<br />

Nachteile haben – ausschlaggebend ist<br />

allerdings, dass der Kunde sich nicht um<br />

die Sicherheit der Anwendung kümmern<br />

muss, die in den Händen des CSP liegt.<br />

Allerdings ist er im Gegenzug sehr eingeschränkt,<br />

was die Flexibilität der Anwendung<br />

angeht: Funktionen, die der CSP<br />

nicht implementiert hat, kann er nicht<br />

selbst nachreichen. Ein Beispiel hierfür<br />

ist die Machbarkeit von forensischen<br />

Untersuchungen in SaaS-Szenarien,<br />

wie das obige Beispiel aufgezeigt hat.<br />

http://www.netways.de/osmc<br />

REGISTER NOW!<br />

OPEN SOURCE<br />

MONITORING CONFERENCE<br />

DIE Konferenz rund um Open Source Monitoring.<br />

Als europaweit richtungsweisende Veranstaltung zum<br />

Thema Open Source Monitoring bietet die OSMC<br />

ein optimales Forum um mit führenden Open Source<br />

Spezialisten ins Gespräch zu kommen und sich zu<br />

eigenen Erfahrungen und Best Practices untereinander<br />

auszutauschen.<br />

MIT DABEI<br />

Michael Medin:<br />

Distributed monitoring using NSClient++<br />

Mike Adolphs:<br />

Cucumber-Nagios - insights into behavioral<br />

driven infrastructure<br />

Reinhard Scheck:<br />

Cacti Graphing Solution<br />

Remo Rickli:<br />

NeDi - Network Discovery<br />

u. v. m.<br />

28. November 2011<br />

(Vortag der Konferenz)<br />

sponsored by:<br />

MAGAZIN<br />

1-Tages-Intensiv-Workshops:<br />

· SLA Reporting für Nagios & Icinga mit Jasper<br />

· Icinga Kickstart<br />

· Konfigurationsmanagement mit Puppet<br />

presented by:<br />

NETWAYS ®


Know-How<br />

Cloud-Forensik<br />

Allerdings gibt es Möglichkeiten, diese<br />

Situation zu ändern: Der CSP könnte<br />

eine zusätzliche Forensik-Schnittstelle<br />

anbieten, mit deren Hilfe der Anwender<br />

spezifische Zugriffe auf Datensätze in der<br />

SaaS-Anwendung nachvollziehen könnte.<br />

Diese Datensätze könnten beispielsweise<br />

aus E-Mails, Kundendaten und Finanzdaten<br />

bestehen und es ist daher für den<br />

Kunden des Cloud-Dienstes erforderlich,<br />

nachzuprüfen, wer wann und wie auf<br />

diese Daten zugegriffen hat. Eine solche<br />

Forensik-Schnittstelle wäre Teil eines größeren<br />

Provenance-Frameworks, das alle<br />

lesenden und schreibenden Zugriffe auf<br />

Datensätze protokolliert. Im Verdachtsfall<br />

kann der Anwender somit die API nach<br />

entsprechenden Zugriffen befragen und<br />

könnte Angriffe wie im obigen Szenario<br />

schneller erkennen. Zudem könnten auch<br />

automatisierte Evaluierer dafür sorgen,<br />

dass keine unrechtmäßigen Fremdzugriffe<br />

stattfinden. Für den CSP gestaltet sich die<br />

Implementierung einer solchen Schnittstelle<br />

einfacher als bei anderen Service-<br />

Modellen, da der Kontext der schützenswerten<br />

Daten klar ersichtlich ist. Wird<br />

beispielsweise bei einem PaaS-Dienst eine<br />

API-Funktion für das Speichern einer Datei<br />

angesprochen, kann durch Protokollierung<br />

des Function Calls erst einmal nur festgestellt<br />

werden, dass eine Datei gespeichert<br />

wurde. Der weitere Kontext der Datei ist<br />

für den CSP unklar. Bei einem SaaS-Dienst<br />

ist dies anders: Der Kontext der Daten ist<br />

für den CSP klar ersichtlich.<br />

Das Datenformat einer solchen Schnittstelle<br />

könnte sich bereits bestehende Datenformate<br />

zunutze machen, um so eine<br />

Interoperabilität zwischen verschiedenen<br />

Tools und Frameworks zu gewährleisten.<br />

Ein bekanntes Format ist beispielsweise<br />

DFXML von Simson Garfinkel [11], bei<br />

welchem es sich um ein XML-Format<br />

zur Beschreibung forensischer Informationen<br />

handelt. Die Verwendung eines<br />

offenen Datenformats hätte den Vorteil,<br />

dass bestehende Forensik-Projekte an<br />

diese Schnittstelle mit angeschlossen<br />

werden könnten. Im Idealfall wäre es<br />

dem Kunden somit möglich, firmeninterne<br />

Forensik-Frameworks lediglich um<br />

den Cloud-Service zu erweitern.<br />

Um weitere Anforderungen wie Integrität,<br />

Authentizität und Vertraulichkeit zu<br />

gewährleisten, ließen sich im Falle von<br />

DFXML bestehende XML-Frameworks<br />

zum Signieren und Verschlüsseln nutzen.<br />

Dies bedeutet, dass die Log-Informationen<br />

in Form von XML über eine<br />

API an den Kunden ausgegeben werden<br />

und zusätzlich vom CSP signiert oder bei<br />

Bedarf auch verschlüsselt werden können.<br />

Pauschal ist allerdings nicht zu sagen,<br />

welche konkrete Informationen der<br />

Kunde für eine eventuelle Untersuchung<br />

benötigt – dies hängt sehr stark vom jeweiligen<br />

Szenario ab.<br />

Zuletzt wäre noch zu klären, wie lange<br />

der CSP die Daten zur Verfügung stellen<br />

soll. Auch dies ließe sich individuell im<br />

SLA festhalten. Zudem besteht für den<br />

Kunden die Möglichkeit, die Daten direkt<br />

aus der Schnittstelle zu extrahieren und<br />

in eigene Logging-Server zu integrieren.<br />

Fazit<br />

Die rapide Zunahme an neuen Cloud-<br />

Services und deren Beliebtheit wird in<br />

der Zukunft häufiger dazu führen, dass<br />

Systeme, Applikationen oder Accounts in<br />

der Cloud kompromittiert werden. Denn<br />

auch die Angreifer gehen mit der Zeit und<br />

haben unlängst das Potenzial von Cloud-<br />

Umgebungen entdeckt [10]. Deshalb gilt<br />

es nun auch für Cloud-Umgebungen,<br />

forensische Prozesse zu ermöglichen –<br />

hierfür bedarf es der Zusammenarbeit<br />

zwischen dem Kunden und dem CSP.<br />

Die in diesem Artikel aufgezeigten Probleme<br />

zeigen, dass gerade in Hinsicht auf<br />

die forensische Untersuchung in Cloud-<br />

Umgebungen traditionelle Methoden<br />

und Verfahren der Digitalen Forensik<br />

überdacht werden müssen. Es ist primär<br />

die Aufgabe der Wissenschaft, neue Methoden<br />

und Prozesse zu entwickeln, um<br />

das Problem der Forensik in der Cloud<br />

zu adressieren.<br />

Allerdings besteht auch aufseiten des<br />

CSP viel Nachholbedarf. Leider sehen<br />

derzeitige CSP noch nicht das Potenzial,<br />

das in einer entsprechenden Schnittstelle<br />

für den Nutzer steckt. Es ist weniger das<br />

Problem der technischen Umsetzbarkeit,<br />

sondern vielmehr eines der potenziellen<br />

Mehrkosten für den CSP. Dabei könnten<br />

die Kosten für solch eine Entwicklung<br />

im Notfall eben auf den Kunden umgewälzt<br />

werden – wer entsprechende<br />

Schnittstellen möchte, muss dafür bezahlen.<br />

Es ist wie so oft: Sicherheit kostet<br />

Geld und bringt dem CSP primär nichts<br />

ein. Solange die Nutzer es aber mit sich<br />

machen lassen, wird sich nichts ändern.<br />

Erst wenn die CSP wieder abhängig von<br />

den Nutzern sind und nicht umgekehrt,<br />

wird es eventuell zu einem Umdenken<br />

kommen. Bis dahin bleibt allertdings<br />

lediglich zu hoffen, dass die Sicherheitsmechanismen<br />

des CSP und die des Kunden<br />

ausreichen. (jcb)<br />

n<br />

Infos<br />

[1] N. Beebe, Digital Forensic Research: The<br />

Good, the Bad and the Unaddressed,<br />

Advances in Digital Forensics V, 2009<br />

[2] B. Grobauer and T. Schreck, Towards Incident<br />

Handling in the Cloud: Challenges<br />

and Approaches, in Proceedings of the<br />

2010 ACM Cloud Computing Security Workshop<br />

(CCSW ’10), 2010<br />

[3] S.D. Wolthusen, Overcast: Forensic Discovery<br />

in Cloud Environments, Fifth International<br />

Conference on IT Security Incident<br />

Management and IT Forensics (IMF ’09),<br />

2009<br />

[4] P. Melland, T. Grance, The NIST Definition<br />

of Cloud Computing, Version 15, 2009<br />

[5] L. Rongxing, L. Xiaodong, L. Xiaohui and S.<br />

Sherman, Secure Provenance: The Essential<br />

of Bread and Butter of Data Forensics<br />

in Cloud Computing, in Proceedings of<br />

the 5th ACM Symposium on Information,<br />

Computer and Communications Security<br />

(ASIACCS ’10), 2010<br />

[6] Google, A more secure cloud for millions<br />

of Google Apps users, [http://<br />

googleenterprise. blogspot. com/ 2010/ 09/<br />

more‐secure‐cloud‐for‐millions‐of. html]<br />

[7] A. Haeberlen, A Case for the Accountable<br />

Cloud, in Proceedings of the 3rd ACM<br />

SIGOPS International Workshop on Large‐<br />

Scale Distributed Systems and Middleware<br />

(LADIS’09), 2009<br />

[8] D. Birk, C. Wegener, Technical Issues of Forensic<br />

Investigations in Cloud Computing<br />

Environments, IEEE/ SADFE 2011, Oakland,<br />

CA, USA, 2011<br />

[9] B. Hay and K. Nance, Forensics Examination<br />

of Volatile System Data using Virtual<br />

Introspection, ACM SIGOPS Operating<br />

Systems Review, 2008<br />

[10] Attackers Using Amazon Cloud to Host<br />

Malware – [http:// threatpost. com/ en_us/<br />

blogs/ attackers‐using‐amazon‐cloud‐hostmalware‐060611]<br />

[11] S. Garfinkel, Digital Forensics XML and the<br />

DFXML Toolset, 2011<br />

96 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


POWERHOUSE<br />

PERL<br />

11 cool projects!<br />

FREE DVD inside:<br />

openSUSE 11.2<br />

Linux Mint 8.0<br />

■ Math Tricks: Solve math problems with Perl<br />

■ Daily Tip: Perl with an SQLite database<br />

■ AJAX: Add dynamic updates to web pages<br />

■ isp-switch: Switch your computer to<br />

another ISP if your connection goes down<br />

■ MAC Addresses: Monitor your network for<br />

unfamiliar MAC addresses<br />

■ Multimeter: Read and interpret data from<br />

an external device<br />

■ Google Chart: Create custom graphs<br />

■ Twitter: Help your scripts send Tweets<br />

■ Webcam: Control a web camera with Perl<br />

■ Perl Gardening: Water your house plants<br />

with a little help from Perl<br />

■ GPS: Extract data from a GPS device and<br />

plot it on a Yahoo! Map<br />

New to Perl? Perl expert Randal L. Schwartz provides an in-depth<br />

introduction to the principles of the versatile Perl language.<br />

Then Perlmeister Mike Schilli explains how to speed up and debug your<br />

scripts. Also inside: Get hands-on with a collection of some of the Perlmeister’s<br />

best columns!<br />

ORDER ONLINE AT linux-magazine.com/Special


Know-How<br />

Pacemaker, Libvirt, KVm<br />

kbuntu, 123RF<br />

Pacemaker, Libvirt und KVM<br />

Eigene Clouds<br />

Virtualisierung ist ein integraler bestandteil der Cloud – Pacemaker verhilft zur eigenen<br />

Privatwolke dank Libvirt-integration von martin Loschwitz<br />

Kaum ein anderes Thema dominiert die<br />

IT-Landschaft augenblicklich so stark<br />

wie Cloud Computing. Amazon & Co.<br />

haben es vorgemacht: Rechenleistung<br />

für verschiedene Aufgaben schnell und<br />

unkompliziert zur Verfügung zu haben,<br />

ist gerade für viele mittelständische Unternehmen<br />

sehr reizvoll. Und sogar die<br />

ganz großen Unternehmen verlagern ihre<br />

Prozesse in die Wolke.<br />

Dabei verbinden sich mit Begriff Cloud<br />

durchaus verschiedene Dinge – gemein<br />

ist allen Definitionen, dass auf irgendeine<br />

Weise schnell und ohne große Umschweife<br />

Rechenleistung zur Verfügung<br />

gestellt werden kann.<br />

Virtualisierung ist einer der Grundpfeiler<br />

von Cloud Computing. Es gibt wenig,<br />

was leichter ist, als eine neue virtuelle<br />

Maschine zu erstellen und sie einem Kunden<br />

zu überantworten. Das Framework<br />

im Kernel, sei es im Fall von Linux Xen<br />

oder KVM, kümmert sich um alles und<br />

sorgt dafür, dass die Benutzer tatsächlich<br />

nur ihren Bereich der Wolke sehen.<br />

Thema Hochverfügbarkeit<br />

Wenn sich ein Unternehmen dafür entscheidet,<br />

die Cloud zu verwenden, so gibt<br />

es damit einen großen Teil der Kontrolle<br />

über dieses System in fremde Hände.<br />

Als Cloud-Kunde nutzt man Dienste und<br />

vertraut darauf, dass der eigene Cloud-<br />

Anbieter sich um die technischen Begebenheiten<br />

im Hintergrund kümmert.<br />

Daraus ergeben sich für Cloud-Provider<br />

einige Probleme – wie ist beispielsweise<br />

mit fehlerhafter Hardware umzugehen?<br />

Kunden werden sich kaum begeistert zeigen,<br />

wenn ihre Cloud-Dienste nicht zur<br />

Verfügung stehen, weil ein Server den<br />

Geist aufgegeben hat. Und genau deshalb<br />

ist der Cloud-Anbieter auf Hochverfügbarkeit<br />

angewiesen – die verschiedenen<br />

HA-Ansätze sind wichtige Faktoren bei<br />

Cloud-Setups. Die Komponenten des<br />

Linux Cluster Stacks kommen da wie gerufen:<br />

Bereits aus zwei Servern ist mit<br />

Pacemaker und unter Einsatz der Libvirt<br />

eine Cloud möglich, die mit den größten<br />

Widrigkeiten zurechtkommt. Dieser Artikel<br />

widmet sich der Frage, wie aus zwei<br />

Servern mit Pacemaker und Libvirt eine<br />

private Mini-Cloud mit verschiedenen Erweiterungsmöglichkeiten<br />

wird.<br />

Libvirt als Segen<br />

Die bisherigen Teile des Pacemaker-<br />

Workshops haben deutlich gemacht, dass<br />

Pacemaker im Grunde jede Applikation<br />

verwalten kann, solange die Möglichkeit<br />

für Pacemaker besteht, mit dieser<br />

Applikation zu kommunizieren. Auch<br />

eine virtuelle Maschine auf einem System<br />

ist letztlich nichts anderes als eine<br />

ganz normale Applikation – doch wäre<br />

es kaum hilfreich, müsste Pacemaker auf<br />

einem System tatsächlich selbst Qemu<br />

mit allen Konfigurationseigenschaften<br />

selbst aufrufen, um virtuelle Maschinen<br />

lauffähig zu machen. Wer schon mal<br />

eine Qemu-Kommandozeile gesehen hat,<br />

weiß, dass diese schnell mehrere Zeilen<br />

lang werden und eher kryptisch aussehen<br />

kann.<br />

Das ist aber glücklicherweise gar nicht<br />

nötig. Denn auf Linux-Systemen steht<br />

ein Framework zur Verfügung, das die<br />

Verwaltung virtueller Maschinen sehr<br />

angenehm gestaltet – ganz gleich, ob der<br />

Einsatzzweck Pacemaker ist oder der Betrieb<br />

als einzelner Server vonstatten gehen<br />

soll, der ein paar virtuelle Maschinen<br />

hostet. Die Rede ist von Libvirt.<br />

Libvirt wirbt für sich selbst damit, dass es<br />

mit den meisten verfügbaren Hypervisor-<br />

Implementierungen für Linux gut zurechtkommt<br />

– darunter mit den Platzhirschen<br />

KVM und Xen, aber auch mit weniger<br />

verbreiteten Lösungen wie OpenVZ, User<br />

Mode Linux oder VirtualBox. Sogar mit<br />

den VMWare-Hypervisors von VMWare<br />

ESX/ GSX und VMWare Workstation<br />

kommt das Libvirt-Framework klar.<br />

Der Vorteil, der sich für Admins aus der<br />

Benutzung von Libvirt ergibt, liegt auf<br />

der Hand: Einerseits erhalten Admins<br />

98 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Pacemaker, Libvirt, KVm<br />

Know-H ow<br />

ein generisches Interface, das ihnen die<br />

Pflege verschiedener virtueller Maschinen<br />

auf einem System ermöglicht. Die<br />

Konfigurationsdateien, die Libvirt verwendet,<br />

kommen im XML-Format daher.<br />

Die Syntax ist damit für jede Maschine<br />

die gleiche und das Anlegen einer neuen<br />

virtuellen Maschine geht einfach von der<br />

Hand. Selbst zwischen unterschiedlichen<br />

Hypervisor-Typen ergeben sich nur<br />

sehr kleine Unterschiede hinsichtlich der<br />

Libvirt-XML-Konfigurationsdateien. Die<br />

Administration von virtuellen Maschinen<br />

für den Admin funktioniert immer gleich.<br />

Wenn Libvirt zum Einsatz kommt, stoppt<br />

ein Admin auf einem System Xen-VMs<br />

mit den gleichen Befehlen, mit denen er<br />

auf anderen Systemen etwa KVM-VMs<br />

stoppen würde. Last but not least bietet<br />

die Libvirt einen überaus wichtigen<br />

Vorteil: Für sie existiert eine vollständige<br />

und funktionierende Integration in den<br />

Pacemaker Cluster-Manager. Die Komponenten,<br />

die für eine private Mini-Cloud<br />

notwendig sind, stehen damit fest: Zwei<br />

VT-fähige Server mit entsprechender Anbindung,<br />

DRBD, Libvirt und Pacemaker.<br />

Libvirt installieren<br />

Das Beispiel geht von zwei Servern aus,<br />

die noch nicht für Virtualisierung eingesetzt<br />

waren und auf denen folglich die<br />

entsprechende Software fehlt. Bei allen<br />

gängigen Distributionen kommen aktuelle<br />

Libvirt-Pakete mit. Zusammen mit<br />

Libvirt müssen natürlich auch die Komponenten<br />

für KVM den Weg aufs System<br />

finden – es steht vorab also die Entscheidung<br />

an, welcher Hypervisor zum Einsatz<br />

kommen soll. Dieser Artikel geht von<br />

einer Virtualisierung mit KVM aus.<br />

Um auf Debian-Systemen KVM zu betreiben,<br />

genügt das Paket »qemu-kvm«.<br />

Die Installation eines eigenen Kernel-<br />

Modul-Paketes ist nicht mehr nötig, die<br />

KVM-Module sind fixer Bestandteil des<br />

Kernels. Nach der Installation des genannten<br />

Paketes empfiehlt es sich, die<br />

Module »kvm-amd« oder »kvm-intel«<br />

mittels »modprobe« zu laden – je nach<br />

verwendeter CPU. Funktioniert das Laden<br />

problemlos, ist der Rechner startklar<br />

für KVM. Kommt hingegen eine<br />

Fehlermeldung, ist vermutlich im BIOS<br />

des Systems die Virtualisierungsfunktion<br />

deaktiviert. Nachdem das geändert ist,<br />

Abbildung 1: Im Ordner /etc/ libvirt/ qemu liegen die Konfigurationsdateien der virtuellen Maschinen, die<br />

Libvirt kennt.<br />

sollten die KVM-Module klaglos geladen<br />

werden. Um sich die Libvirt aufs System<br />

zu holen, installieren Admins auf Systemen<br />

mit Debian oder Ubuntu das Paket<br />

»libvirt-bin«. Für Debian-Admins lohnt<br />

sich möglicherweise ein Blick in das<br />

Backports-Repository, denn hier finden<br />

sich üblicherweise wesentlich aktuellere<br />

Versionen der Bibliothek, als im »stable«-<br />

Zweig zu finden sind. Ist die Libvirt auf<br />

beiden Clusterknoten installiert, steht der<br />

Virtualisierung nichts mehr im Wege.<br />

Die Libvirt-Architektur<br />

Nach der Libvirt-Installation findet sich<br />

im Konfigurationsordner »/etc« das Verzeichnis<br />

»libvirt«. In diesem Ordner liegt<br />

die Konfiguration von Libvirt – viel zu<br />

ändern gibt es an den Default-Einstellungen<br />

aber in den meisten Fällen nicht.<br />

Interessant ist vor allem der Ordner<br />

»qemu« (Abbildung 1), in dem die Konfigurationsdateien<br />

für virtuelle Maschinen<br />

landen. Ab Werk hat der Ordner lediglich<br />

einen weiteren Unterordner namens »networks«.<br />

Darin liegt eine Datei namens<br />

»default.xml« – sie enthält die Konfiguration<br />

für die Libvirt-Netzwerkinfrastruktur.<br />

Veränderungen sind hier mit Sorgfalt<br />

und Vorsicht zu erledigen.<br />

Ein Storage-Device für eine<br />

virtuelle Maschine<br />

Im Grunde könnte es nun mit der ersten<br />

virtuellen Maschine losgehen, aber dafür<br />

fehlt noch eine wichtige Zutat: Ein<br />

Storage-Device, auf dem die Daten der<br />

virtuellen Maschine lagern. Es bieten sich<br />

zwei Ansätze an: Qemu kann einerseits<br />

mit Image-Dateien umgehen. Das sind<br />

Files im Dateisystem, die Qemu dann<br />

quasi als Festplatte betrachtet. Solche<br />

Images haben manchen Vorteil, zum<br />

Beispiel den, dass das Qcow2-Format, in<br />

dem Images meistens vorliegen, komprimieren<br />

kann und ein Gast-Betriebssystem<br />

so weniger Plattenplatz vom Host abzwackt,<br />

als es in der Innenansicht benötigt.<br />

Gerade im Cluster-Kontext bietet<br />

eine Image-basierte Lösung aber auch<br />

einige Nachteile.<br />

Denn zunächst erhöht die Variante, virtuelle<br />

Maschinen in Form von Images<br />

OpenSource Training Ralf Spenneberg<br />

Schulungen direkt vom Autor<br />

Wege aus der Lizenzfalle mit Samba 4<br />

3 Tage 04.10. ­ 06.10.2011<br />

Spam Lösungen<br />

3 Tage 04.10. ­ 06.10.2011<br />

OpenVPN ­ Die IPsec Alternative<br />

3 Tage 04.10. ­ 06.10.2011<br />

Linux Storage Lösungen<br />

2 Tage 10.10. ­ 11.10.2011<br />

High Availability and Load Balancing mit Linux<br />

2 Tage 12.10. ­ 13.10.2011<br />

Sourcefire 3D System<br />

4 Tage 18.10. ­ 21.10.2011<br />

Apache 2.x Webserver Administration<br />

4 Tage 17.10. ­ 20.10.2011<br />

Modsecurity<br />

3 Tage 17.10. ­ 19.10.2011<br />

SELinux Administration<br />

2 Tage 24.10. ­ 25.10.2011<br />

Freie Distributionswahl:<br />

Opensuse, Fedora, Debian Squeeze,<br />

CentOS oder Ubuntu LTS<br />

Ergonomische Arbeitsplätze<br />

Umfangreiche Schulungsunterlagen mit<br />

Übungen<br />

Am Bahnhof 3­5<br />

48565 Steinfurt<br />

Tel.: 02552 638755<br />

Fax: 02552 638757<br />

Weitere Informationen unter www.os­t.de<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

99


Know-How<br />

Pacemaker, Libvirt, KVm<br />

zu verwenden, den Cluster-Aufwand beträchtlich.<br />

So müssen in Pacemaker für<br />

jedes Image, das zur Verfügung stehen<br />

soll, entsprechende Ressourcen in die<br />

Cluster-Konfiguration eingetragen werden.<br />

Wird stattdessen nur ein Device mit<br />

allen Image-Files benutzt, müsste dieses<br />

wiederum mit NFS exportiert und auf<br />

beiden Clusterknoten gemountet werden<br />

– sonst könnten nur alle VMs zu einem<br />

Zeitpunkt auf dem gleichen Host laufen.<br />

Beide Varianten nagen außerdem an der<br />

<strong>Performance</strong> einer virtuellen Maschine:<br />

Das Dateisystem mit seinem Page Cache<br />

drosselt die maximale Leistung genauso,<br />

wie es NFS nochmals täte.<br />

Es hat sich deshalb eingebürgert, Block-<br />

Devices direkt als Storage-Device für<br />

virtuelle Maschinen einzusetzen. Qemu<br />

unterstützt diese Funktion und in einem<br />

Zwei-Knoten-Cluster steht auch das passende<br />

Werkzeug zur Verfügung, um die<br />

Daten auf beiden Knoten aktuell zu haben:<br />

DRBD. Der erste Schritt auf dem Weg<br />

zu einer privaten Cloud mit Libvirt und<br />

Pacemaker besteht also darin, ein DRBD-<br />

Laufwerk anzulegen, das die Daten der<br />

virtuellen Maschine aufzunehmen vermag.<br />

Das geschieht analog zum DRBD-<br />

Artikel im letzten Admin-<strong>Magazin</strong>. Der<br />

Artikel geht im weiteren Verlauf davon<br />

aus, dass ein DRBD-Laufwerk vorhanden<br />

ist, das im System über den Device-<br />

Abbildung 2: Der Virt-Manager ist ein praktisches Werkzeug, um eine<br />

grafische Übersicht über die VMs eines Hosts zu bekommen.<br />

Knoten »/dev/drbd/by-res/kvm-alice/0«<br />

anzusprechen ist. Übrigens: Nachdem die<br />

DRBD-Ressource angelegt ist, ist es nicht<br />

ratsam, ein Dateisystem auf dem DRBD<br />

anzulegen – dieses würde ohnehin von<br />

der Installationsroutine des Betriebssystems<br />

später überschrieben.<br />

Ist die DRBD-Ressource angelegt, empfiehlt<br />

es sich, sie vorerst noch nicht in<br />

den Cluster-Manager zu integrieren,<br />

wie in Teil 2 des Workshops erklärt. Der<br />

nächste logische Schritt ist stattdessen,<br />

eine virtuelle Maschine mit KVM einzurichten,<br />

sodass die virtuelle Maschine<br />

grundsätzlich lauffähig ist.<br />

Eine virtuelle Maschine in<br />

die Libvirt einpflegen<br />

Libvirt sucht im Verzeichnis »/etc/libvirt/qemu«<br />

nach Dateien, die auf ».xml«<br />

enden – aus diesen liest es<br />

die Definitionen für VMs.<br />

Die meisten Einträge dieser<br />

Maschinendefinitionen<br />

sind generisch und ändern<br />

sich nicht und lassen sich<br />

so für neue VMs recyclen.<br />

Das Listing 1 zeigt<br />

ein vollständiges Konfigurationsfile<br />

für eine virtuelle<br />

Maschine namens<br />

»debian-i386-alice«.<br />

Im Kasten sind die zu adaptierenden Teile<br />

besonders hervorgehoben. Der erste Eintrag<br />

ist »name« – er legt fest, wie die<br />

virtuelle Maschine in Libvirt intern heißt.<br />

»uuid« ist freilich eine UUID; jede UUID<br />

darf innerhalb einer Libvirt-Installation<br />

bloß einmal vorkommen. Am leichtesten<br />

generieren Admins eine UUID mit dem<br />

Werkzeug »uuidgen« auf der Kommandozeile.<br />

»memory« legt den Speicher fest,<br />

der der virtuellen Maschine zur Verfügung<br />

steht. Im Beispiel sind das 512MB.<br />

Der Eintrag »vcpu« legt fest, wie viele<br />

virtuelle CPUs den virtuellen Maschinen<br />

zur Verfügung stehen.<br />

»source dev=...« legt das Storage-Device<br />

fest, das Libvirt als Festplatte für die virtuelle<br />

Maschine verwendet. Im Beispiel<br />

zeigt der Eintrag auf die zuvor angelegte<br />

DRBD-Resource. Übrigens: Die Domänen-Definition<br />

hat auch ein virtuelles<br />

Listing 1: Konfigurationsdatei für Vm<br />

01 <br />

02 debian‐i386‐alice<br />

03 7bf8dd80‐bb0b‐3c49‐01c9‐8c8d15f5cc79<br />

04 524288<br />

05 1<br />

06 <br />

07 hvm<br />

08 <br />

09 <br />

10 <br />

11 <br />

12 <br />

13 <br />

14 <br />

15 <br />

16 destroy<br />

17 restart<br />

18 restart<br />

19 <br />

20 /usr/bin/kvm<br />

21 <br />

22 <br />

23 <br />

24 <br />

25 <br />

26 <br />

27 <br />

28 <br />

29 <br />

30 <br />

31 <br />

32 <br />

33 <br />

34 <br />

35 <br />

36 <br />

37 <br />

38 <br />

39 <br />

40 <br />

41 <br />

42 <br />

43 <br />

44 <br />

45 <br />

46 <br />

47 <br />

48 <br />

49 <br />

50 <br />

51 <br />

52 <br />

53 <br />

54 <br />

55 <br />

56 <br />

57 <br />

58 <br />

59 <br />

100 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Pacemaker, Libvirt, KVm<br />

Know-how<br />

Listing 2: debian-i386-alice mit Virtualdomain-Ra<br />

01 primitive res_virtdom_puppet<br />

ocf:heartbeat:VirtualDomain \<br />

02 params config="/etc/libvirt/qemu/<br />

debian‐i386‐alice.xml" force_stop="false" \<br />

03 op monitor interval="30s" timeout="90s" \<br />

04 op start interval="0" timeout="90s" \<br />

05 op stop interval="0" timeout="5min"<br />

Abbildung 3: Der acpid ist in Linux-VMs notwendig, damit Libvirt das System von außen mittels virtuellem<br />

Knopfdruck herunterfahren kann.<br />

CD-Laufwerk, das auf eine ».iso«-Datei<br />

in »/tmp« verweist. Der Eintrag ist nicht<br />

verpflichtend und kann, wenn als Installationsquelle<br />

für die VM ein anderes Medium<br />

zur Verfügung steht, entfallen. Soll<br />

aber die CD zum Einsatz kommen, ist der<br />

Wert »dev« beim Parameter »boot« oben<br />

noch von »hd« auf »cdrom« zu ändern.<br />

Häufig stellt sich die Frage, welche Architektur<br />

ein Gastsystem nutzen soll.<br />

Nachdem die VM im Beispiel insgesamt<br />

bloß 512 MByte RAM hat, ist die Frage<br />

hier irrelevant. Soll aber eine 64bit-VM<br />

mit mehr RAM zum Einsatz kommen,<br />

genügt es, die Zeile »hvm«<br />

so zu ändern: »hvm«.<br />

Die VM starten<br />

Wenn die VM-Konfiguration fertig ist,<br />

sollte die Konfigurationsdatei ihren Weg<br />

auch auf den anderen Clusterknoten finden.<br />

Danach genügt ein »virsh define/<br />

etc/libvirt/qemu/File«, um die Ressourcen-Definition<br />

in die Libvirt zu laden. Die<br />

»virsh« ist die hauseigene Shell der Libvirt,<br />

die das Starten, Stoppen und Modifizieren<br />

virtueller Maschinen ermöglicht.<br />

Wer es etwas bunter mag, installiert auf<br />

seiner Workstation den »virt-manager«<br />

(Abbildung 2) und erhält so nach dem<br />

Einrichten einer Verbindung mit dem<br />

Zielsystem ein GUI, das die virtuellen<br />

Maschinen verwalten kann.<br />

Nun fehlt eigentlich bloß noch der erste<br />

Start der virtuellen Maschine, um sie<br />

zu konfigurieren. Das erledigt entweder<br />

der Befehl »virsh start Name « auf der<br />

Kommandozeile des Servers oder ein<br />

entsprechender Klick im »virt-manager«.<br />

Achtung: Weil die DRBD-Ressource noch<br />

nicht von Pacemaker verwaltet wird,<br />

muss das händische Starten der virtuellen<br />

Maschine auf genau dem Host passieren,<br />

auf dem die DRBD-Ressource gerade<br />

im »Primary«-Modus läuft. Hat alles<br />

funktioniert, kann die Installation und<br />

Konfiguration der VM losgehen.<br />

Übrigens: Damit Pacemaker später über<br />

seinen VM-Resource-Agent mit Libvirt<br />

und den virtuellen Maschinen kommunzieren<br />

kann, muss die VM in der Lage<br />

sein, ACPI-Befehle zu interpretieren. Libvirt<br />

initiiert den Shutdown<br />

einer VM durch<br />

ein entsprechendes<br />

ACPI-Signal. Damit das<br />

Gast-Betriebssystem<br />

damit umgehen kann,<br />

muss es ACPI können.<br />

Unter Linux lässt sich<br />

das Problem bereits<br />

dadurch aus der Welt<br />

schaffen, den »acpid«<br />

(Abbildung 3) zu installieren.<br />

Dieser tut ab<br />

Werk bei einem Druck<br />

auf den Power-Knopf –<br />

nichts anderes ist das<br />

Signal, welches Libvirt<br />

an eine VM für den<br />

Shutdown schickt – bereits<br />

das Richtige.<br />

Die Integration<br />

in Pacemaker<br />

Wenn die virtuelle Maschine<br />

fertig konfiguriert<br />

ist und läuft, ist<br />

noch sicherzustellen,<br />

dass der Start nahtlos<br />

auf beiden Rechnern<br />

funktioniert. Dazu<br />

sollte wie bereits erwähnt<br />

zumindest die<br />

».xml«-Konfiguration der VM auf beiden<br />

Rechnern vorhanden und identisch<br />

sein. Ob die VM problemlos auf beiden<br />

Rechnern lauffähig ist, lässt sich am<br />

leichtesten dadurch testen, dass sie auf<br />

dem aktuellen Rechner heruntergefahren<br />

wird, um danach einen Rollentausch<br />

der DRBD-Ressource (Wechsel Primary<br />

und Secondary) zu machen und dann<br />

auf dem anderen Clusterknoten ebenfalls<br />

die VM zu starten. Kommt sie problemlos<br />

hoch, ist die Libvirt-Konfiguration in<br />

Ordnung und es geht daran, Libvirt in<br />

Pacemaker zu integrieren.<br />

www.admin-magazin.de


Know-How<br />

Pacemaker, Libvirt, KVm<br />

Abbildung 4: Dieser Cluster ist für den Betrieb dreier virtueller Maschinen eingerichtet und funktioniert wie<br />

gewünscht.<br />

Dazu muss zunächst die vorhandene<br />

DRBD-Ressource ihren Weg in die CIB<br />

finden. Wie das geht, das wurde im zweiten<br />

Teil der HA-Serie detailliert erklärt.<br />

Colocation- oder Order-Constraints sind<br />

zu diesem Zeitpunkt noch unnötig, denn<br />

es fehlt im Moment noch die virtuelle<br />

Maschine selbst.<br />

Der Resource-Agent für die Anbindung<br />

von Pacemaker an die Libvirt heißt<br />

»ocf:heartbeat:VirtualDomain«. Der Code<br />

stammt ursprünglich aus der Feder von<br />

Florian Haas, gehört mittlerweile allerdings<br />

zur OCF-Sammlung des Linux-HA-<br />

Projektes und ist somit Bestandteil jeder<br />

HA-Installation. Seine Verwendung dokumentiert<br />

das Exempel in Listing 2.<br />

Das Beispiel lässt sich so übernehmen,<br />

anzupassen sind lediglich die Parameter.<br />

Der erste Parameter »config« zeigt auf die<br />

Konfiguration der virtuellen Maschine,<br />

der zweite Parameter »force_stop« legt<br />

fest, ob die Domäne von Pacemaker getötet<br />

werden soll, wenn sie nach einem<br />

per ACPI übermittelten Shutdown-Request<br />

nicht selbstständig herunterfährt.<br />

Im Normall sollte »force_stop« auf den<br />

Wert »false« gesetzt sein. Bei virtuellen<br />

Maschinen mit Windows-Betriebssystem<br />

Listing 3: dual-Primary-dRbd<br />

resource VirtDom1 {<br />

volume 0 { device /dev/ drbd0; disk /dev/ system/ r0; metadisk<br />

internal; }<br />

net { after‐sb‐0pri discard‐zero‐changes; after‐sb‐1pri<br />

discard‐secondary; after‐sb‐2pri disconnect;<br />

allow‐two‐primaries; }<br />

on alice { address 192.168.0.1:7899; }<br />

on bob { address 192.168.0.1:7899; } }<br />

kann es aber unter Umständen notwendig<br />

sein, diese Funktion doch zu aktivieren.<br />

Das Pacemaker-Setup<br />

abschließen<br />

Damit ist die DRBD-Konfiguration in<br />

Pacemaker ebenso vorhanden wie die<br />

Konfiguration der virtuellen Maschine.<br />

Es gilt noch, die beiden Ressourcen miteinander<br />

so zu verbinden, dass sie stets<br />

auf dem gleichen Host laufen. Das geht<br />

mit einem Colocation- und einem Order-<br />

Constraint. Angenommen, die DRBD-<br />

Master-Slave-Ressource hieße »ms_drbd_<br />

VirtDom1« und die Resource für die VM<br />

selbst hieße »res_VirtDom1«, wäre ein<br />

passendes Setup dieses:<br />

colocation c_virtdom1_on_drbd inf: U<br />

res_VirtDom1 ms_drbd_VirtDom1:Master U<br />

order o_drbd_before_virtdom1 inf: U<br />

ms_drbd_VirtDom1:promote res_VirtDom1:start<br />

Damit ist die virtuelle Maschine vollständig<br />

in Pacemaker integriert. Ob das Setup<br />

funktioniert, testen Admins, indem sie<br />

einen der beiden Knoten in den Standby-<br />

Modus setzen – idealerweise den, auf<br />

dem die VM gerade läuft – und nachvollziehen,<br />

ob die Maschine auf dem anderen<br />

Knoten gestartet wird (Abbildung 4).<br />

Live-Migration<br />

Die verwendeten Komponenten dieses<br />

Setups bringen ab Werk alles mit, was es<br />

für Live-Migration braucht. Damit DRBD<br />

selbst diese Aufgabe erfüllen kann, sind<br />

im Vergleich zum Standard-Setup aber<br />

kleine Änderungen der Ressource zu erledigen.<br />

Denn damit Live-Migration funktionieren<br />

kann, muss DRBD sich im Dual-<br />

Primary-Modus befinden (Abbildung 5).<br />

Unter normalen Umständen ist unbedingt<br />

davon abzuraten, DRBD im Dual-Primary-<br />

Modus zu betreiben. Ein Tech-Guide von<br />

LINBIT [1], verfasst vom Autor dieses<br />

Artikels, listet die Nachteile dieses Setups<br />

auf. Im konkreten Beispiel führt an einer<br />

Lösung, in der die DRBD-Ressource<br />

auf beiden Seiten im Dual-Primary-Mode<br />

und damit beschreibbar ist, aber kein<br />

Weg vorbei. Denn für die Live-Migration<br />

muss KVM zumindest zwischenzeitlich<br />

auf beiden Seiten schreibend auf das Device<br />

zugreifen können. Eine vollständige<br />

Ressourcen-Konfiguration für diesen Einsatzzweck<br />

finden Sie in Listing 3. Die<br />

außergewöhnlichen Teile sind hervorgehoben.<br />

Zusätzlich zu den Änderungen an<br />

der DRBD-Ressource ist auch die Regel<br />

für die Master-Slave-Ressource in Pacemaker<br />

zu ändern:<br />

ms ms_drbd_VirtDom1 res_drbd_VirtDom1 U<br />

meta master‐max=“»2«“ master‐node‐U<br />

max=„1“ clone‐max=„2“ clone‐node‐max=„1“ U<br />

notify=„true“<br />

Schließlich ist für die VirtualDomain-<br />

Ressource in Pacemaker noch ein Meta-<br />

Parameter zu setzen. Diese komplette<br />

Zeile heißt »allow-migrate= "true"« und<br />

wird in die vorhandene Konfiguration<br />

eingefügt.<br />

Nach diesen Änderungen ist das DRBD<br />

auf beiden Seiten des Clusters permanent<br />

primär. Der »crm resource migrate«-<br />

Befehl tut dann für die jeweilige virtuelle<br />

Maschine das Nötige. Aber Achtung: Der<br />

Befehl »migrate« tut nichts anderes, als<br />

in der CIB einen negativen Location-<br />

Constraint für den Host zu setzen, auf<br />

dem die Ressource bis zum Befehl gelaufen<br />

ist. Solange dieser Constraint in der<br />

CIB steht, kann die Ressource auf dem<br />

Ursprungsknoten deshalb nicht mehr gestartet<br />

werden. Mittels »crm configure<br />

edit« lässt sich der Constraint aber beseitigen;<br />

alternativ hilft auch »crm resource<br />

unmigrate«.<br />

Vorsicht vor<br />

Overcommitment<br />

Die Warnung klingt banal, sollte aber<br />

aus der Erfahrung des Autors heraus an<br />

102 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Pacemaker, Libvirt, KVm<br />

Know-H ow<br />

dieser Stelle nicht fehlen: Oft passiert es,<br />

dass im Laufe der Zeit eine VM nach der<br />

anderen hinzukommt, ohne dass der Admin<br />

die Hardware-Kapazitäten der Knoten<br />

des Clusters im Auge behält. Solange<br />

beide Clusterknoten laufen und sich die<br />

Last teilen, funktioniert das gut – doch<br />

wehe, einer der Knoten fällt aus: Der<br />

verbliebene Knoten kann dann die Last<br />

aller VMs dann oft nicht mehr alleine<br />

schultern. Der ganze Cluster ist overcommitted<br />

oder zu Deutsch: Er ist überlastet.<br />

Von Hochverfügbarkeit kann dann kaum<br />

noch die Rede sein. Es sollten deshalb<br />

zu jedem Zeitpunkt immer nur so viele<br />

Ressourcen im Cluster vorhanden sein,<br />

wie auch ein einzelner Clusterknoten tatsächlich<br />

alleine betreiben kann.<br />

Die Erweiterung dieses<br />

Setups<br />

Das vorgestellte Setup führt zu einer<br />

Mini-Cloud, die aus nur zwei Rechnern<br />

besteht. Es bietet aber vielfältige Möglichkeiten<br />

zur späteren Erweiterung. Der<br />

nächste logische Schritt bestünde vermutlich<br />

darin, die Zahl der verfügbaren<br />

Server zum Betrieb virtueller Maschinen<br />

zu erhöhen. DRBD stößt hier allerdings<br />

an seine Grenzen. Deshalb baucht das<br />

Konzept dann eine grundlegende Änderung:<br />

Mithilfe von iSCSI kann aus einem<br />

Cluster mit zwei Knoten ein vollständiger<br />

SAN-Ersatz werden, der Daten über<br />

das Netzwerk für typische Virtualisierungsfrontends<br />

zur Verfügung stellt. Die<br />

Anzahl der Server, auf denen virtuelle<br />

Maschinen laufen, ist in diesem Fall<br />

dann letztlich nur durch die Leistung des<br />

Storage-Clusters eingeschränkt. Mit dem<br />

Aufsetzen eines iSCSI-Clusters für genau<br />

diesen Zweck beschäftigt sich der vierte<br />

Teil des HA-Workshops, der im nächsten<br />

Heft veröffentlicht wird. (jcb) n<br />

Abbildung 5: Live-Migration setzt voraus, dass die DRBD-Ressource wie hier zu sehen auf beiden Knoten im<br />

Primary-Modus läuft.<br />

Infos<br />

[1] Manifest gegen den Dual-Primary-<br />

Betrieb von DRBD:vi [http://www.<br />

linbit.com/ en/ education/tech-guides/<br />

dual-primary-think-twice/]<br />

Barcamp<br />

IronPython<br />

Datenbanken<br />

PyCon DE 2011<br />

Sprints<br />

Schule<br />

GUIs Systemintegration<br />

Universität<br />

Leipzig<br />

Vorträge<br />

Tutorials<br />

Open-Source<br />

PyPy Content-Management Systeme<br />

Community Embedded Python<br />

Wissenschaft<br />

Jython Web-Entwicklung<br />

1. Deutsche<br />

Social Event<br />

Cloud Computing<br />

Datenbanken<br />

Python<br />

Konferenz<br />

4. – 9. Oktober 2011<br />

Leipziger KUBUS<br />

Jetzt anmelden!<br />

http://de.pycon.org<br />

Oktober 2011<br />

4. 5. – 7. 8. – 9.<br />

Tutorials<br />

Barcamp<br />

PyCon DE 2011<br />

1. Deutsche Python-Konferenz<br />

Vorträge<br />

Sprints


Know-how<br />

Pacemaker und mysQL<br />

Slawomir Kruz, 123RF<br />

Pacemaker und MySQL<br />

Rettungsschirm<br />

für Datenbanken<br />

der zweite Teil des workshops zum Cluster-manager Pacemaker wendet die in der letzten Folge gewonnenen<br />

erkenntnisse praktisch auf eine mysQL-datenbank an. martin Loschwitz<br />

Der erste Teil des Workshops vermittelte<br />

die grundsätzlichen Fakten zum Thema<br />

Hochverfügbarkeit mit Linux und stellte<br />

den Pacemaker-Cluster-Manager vor, der<br />

zwei Server in einen Cluster verwandeln<br />

kann. Fällt einer der beiden Knoten aus,<br />

wandern alle seine Dienste automatisch<br />

auf den überlebenden Knoten. Pacemaker<br />

– auch das diskutierte der vorangegangene<br />

Beitrag – kennt zwei verschiedene<br />

Möglichkeiten, mit anderen Clusterknoten<br />

zu sprechen: Corosync und Heartbeat.<br />

Außerdem wurde ein sogenannter<br />

Resource Agent vorgestellt, der im Beispiel<br />

für die Übernahme von IP-Adressen<br />

zuständig war.<br />

Der zweite Teil greift die bereits vorhandene<br />

Konfiguration auf und erweitert sie<br />

zum ersten Mal so, dass der Cluster für<br />

einen echten Dienst ein Fail Over gewährleistet.<br />

Dabei kommt auch DRBD zum<br />

Einsatz, das die redundante Speicherung<br />

der MySQL-Daten erledigt. Schließlich<br />

zeigt der vorliegende Artikel, wie man<br />

einen echten Aktiv-Aktiv-Cluster baut,<br />

der zwei Instanzen von MySQL im Cluster<br />

betreibt und dafür sorgt, dass sie stets<br />

auf getrennten Hosts laufen.<br />

DRBD für MySQL<br />

Am Anfang eines hochverfügbaren<br />

MySQL-Clusters steht natürlich die Installation<br />

von MySQL. Alle relevanten<br />

Distributionen bringen MySQL in paketierter<br />

Form mit, sodass das problemlos<br />

gelingen sollte.<br />

Der Betrieb einer redundanten MySQL-<br />

Datenbank [1] [2] setzt voraus, dass auf<br />

beiden Clusterknoten jeweils die gleichen<br />

Daten für MySQL zur Verfügung stehen.<br />

Der Artikel zum Thema DRBD im letzten<br />

Admin-<strong>Magazin</strong> [3] geht auf diese<br />

Prob lematik ausführlich ein und erläutert<br />

detailliert, wie sich DRBD einrichten<br />

und konfigurieren lässt. Dieser Artikel<br />

setzt voraus, dass DRBD anhand dieser<br />

Anleitung bereits installiert und so konfiguriert<br />

ist, dass eine Ressource namens<br />

»mysql« mit mindestens 128 Megabyte<br />

Größe vorhanden ist Abbildung 1. Sie<br />

sollte auch bereits auf einem der beiden<br />

Cluster-Knoten im Primary-Modus<br />

laufen. Außerdem sollte mittels »mkfs«<br />

bereits ein Dateisystem angelegt sein.<br />

Eben diese DRBD-Ressource wird später<br />

die Dateien der Datenbanken und Tabellen<br />

der MySQL-Datenbank enthalten.<br />

Um das zu ermöglichen, muss im ersten<br />

Schritt ein Mountpoint her: In der Praxis<br />

hat sich »/mnt/mysql « bewährt. Das<br />

Verzeichnis muss natürlich auf beiden<br />

Clusterknoten existieren. Sobald es angelegt<br />

ist, lässt sich nun zum ersten Mal<br />

die angelegte DRBD-Ressource »mysql«<br />

auf dem Knoten, auf dem eben sie gerade<br />

106 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Pacemaker und mysQL<br />

Know-how<br />

Primary ist, unter diesen Mountpoint in<br />

das System einhängen.<br />

Basisdatenbank anlegen<br />

Allerdings präsentiert sich das Dateisystem<br />

auf der DRBD-Ressource nach dem<br />

Mounten jungfräulich. Damit MySQL hier<br />

später benutzbare Daten findet, ist mittels<br />

»mysql_install_db --datadir=/mnt/<br />

mysql« die grundlegende MySQL-Datenbankstruktur<br />

anzulegen. Im Anschluss<br />

sind die Permissions des Ordners so anzupassen,<br />

dass MySQL problemlos darauf<br />

zugreifen kann: Der Befehl »chown<br />

-R mysql:mysql /mnt/mysql« sorgt dafür,<br />

dass der Ordner dem MySQL-Benutzer<br />

und der MySQL-Gruppe gehört. Der Befehl<br />

ist übrigens auf beiden Clusterknoten<br />

auszuführen – auch auf dem, auf<br />

dem derzeit die DRBD-Ressource nicht<br />

gemountet ist. Schließlich setzt »chmod<br />

-R og+rwx /mnt/mysql« die Lese- und<br />

Schreibberechtigungen passend.<br />

Im Hinblick auf DRBD ist damit alles<br />

erledigt, was für den Betrieb von MySQL<br />

notwendig ist. Im nächsten Schritt steht<br />

die Integration dieser DRBD-Ressource<br />

in den Pacemaker Cluster-Manager an.<br />

DRBD-Ressourcen unterscheiden sich<br />

von herkömmlichen Ressourcen in Pacemaker<br />

dadurch, dass sie aus zwei Teilen<br />

bestehen.<br />

Einerseits gehört zu einem DRBD-Laufwerk<br />

in Pacemaker nämlich eine ganz<br />

normale »primitive«-Ressource, wie sie<br />

bereits aus dem ersten Teil des Workshops<br />

bekannt ist. Andererseits ist allerdings<br />

das dazugehörende Master-Slave-Setup<br />

unverzichtbar.<br />

Welcher Zustand auf<br />

welchem Clusterknoten?<br />

Master-Slave-Setups sind als Funktion in<br />

Pacemaker seit einiger Zeit vorhanden,<br />

werden aber bisher fast ausschließlich<br />

von DRBD verwendet. Sie tragen dem<br />

Umstand Rechnung, dass eine Ressource<br />

nicht automatisch auf einem Clusterknoten<br />

gestartet und auf dem anderen Clusterknoten<br />

gestoppt sein muss. Bei einem<br />

DRBD-Laufwerk ist das so: Die Ressource<br />

ist im Normalfall auf beiden Clusterknoten<br />

gestartet, hat aber auf den einzelnen<br />

Knoten jeweils unterschiedliche Zustände<br />

– nämlich »Primary« und »Secondary«.<br />

Abbildung 1: Der Befehl »mysql_install_db« legt die wichtigsten Files für eine MySQL-Datenbank an, sodass<br />

diese gestartet werden kann.<br />

Um mit DRBD sinnvoll arbeiten zu können<br />

– Stichwort Rollentausch – muss<br />

Pacemaker wissen, welchen Zustand die<br />

Ressource auf welchem Knoten hat. Genau<br />

hier kommen die erwähnten Master-<br />

Slave-Setups ins Spiel.<br />

DRBD fit für Pacemaker<br />

Das folgende Beispiel geht davon aus,<br />

dass ein Cluster mit Pacemaker vorhanden<br />

ist, der anhand der Anleitung im<br />

ersten Workshop-Teil bereits grundlegend<br />

konfiguriert ist. Die CRM-Shell ist das<br />

Mittel der Wahl, um eine DRBD-Ressource<br />

in Pacemaker zu konfigurieren.<br />

Mittels »crm configure « öffnet sich das<br />

Konfigurationsmenü der CRM-Shell. Die<br />

Ressource gelangt so in die CIB:<br />

primitive res_drbd_mysql U<br />

ocf:linbit:drbd \<br />

params drbd_resource="mysql" \<br />

op monitor interval="10s" role="Master" \<br />

op monitor interval="20s" role="Slave" \<br />

op start interval="0" timeout="240" \<br />

op stop interval="0" timeout="240"<br />

Der Code scheint komplizierter als er ist:<br />

n »primitive« legt fest, dass es um eine<br />

normale Ressource des Typs »primitive«<br />

geht, um welche die Clusterkonfiguration<br />

wächst.<br />

n »res_drbd_mysql« bezeichnet den Namen<br />

der Ressource in Pacemaker.<br />

n »ocf:linbit:drbd« bezeichnet den Resource-Agent<br />

der Ressource; es handelt<br />

sich um einen Agent der OCF-<br />

Klasse vom Anbieter »linbit« mit dem<br />

Namen »drbd«.<br />

Die Zeile mit »params« legt die Parameter<br />

für die Ressource fest. Grundsätzlich<br />

braucht der DRBD-Resource-Agent nur<br />

den Namen der Ressource, wie er in der<br />

Konfigurationsdatei derselben steht – im<br />

Beispiel also »mysql«.<br />

Die beiden Zeilen mit »op monitor« am<br />

Anfang definieren wie gehabt Monitoring-Operationen,<br />

die Pacemaker in regelmäßigen<br />

Abständen dazu bringen, den<br />

Zustand der Ressource zu überprüfen.<br />

Zwei Operationen sind nötig, weil sich<br />

die Intervalle für die Einträge »Master«<br />

und »Slave« bei »role« unterscheiden<br />

müssen. Pacemaker würde sonst die beiden<br />

Operationen zusammenlegen und<br />

den Parameter »role« ignorieren, was zu<br />

unzuverlässigen Resultaten führt.<br />

»op start« und »op stop« legen schließlich<br />

längere Timeouts für das Starten und<br />

Stoppen der Ressource fest, um Problemen<br />

vorzubeugen, wenn einer der Vorgänge<br />

länger dauert als erwartet.<br />

Das Master-Slave-Setting<br />

Damit die DRBD-Ressource tatsächlich<br />

von Pacemaker gesteuert wird, fehlt noch<br />

das bereits erwähnte Master-Slave-Setting.<br />

Die Syntax einer solchen Regel ist<br />

diese:<br />

ms Name der Master‐Slave‐RessourceU<br />

Name der Ressource, auf die sie sich U<br />

bezieht meta‐Attribute<br />

Ein funktionierendes Master-Slave-Setup<br />

für die vormals konfigurierte DRBD-Primitive-Ressource<br />

wäre diese:<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

107


Know-how<br />

Pacemaker und mysQL<br />

primitive res_fs_mysql<br />

ocf:heartbeatU<br />

:Filesystem \<br />

params device="/dev/drbd/U<br />

by‐res/mysql/0" U<br />

directory="/mnt/mysql" U<br />

fstype="ext3"<br />

options="noatime" \<br />

op start interval="0" U<br />

timeout="180s" \<br />

op stop interval="0" U<br />

timeout="300s" \<br />

op monitor interval="60s"<br />

Abbildung 2: Constraints sorgen in Pacemaker dafür, dass die Ressourcen, die zusammengehören, auch zusammen auf dem<br />

gleichen Knoten laufen.<br />

ms ms_drbd_mysql res_drbd_mysql U<br />

meta clone‐max="2" master‐max="1" U<br />

master‐node‐max="1" clone‐node‐max="1" U<br />

notify="true" target‐role="Master"<br />

»ms_drbd_mysql« legt dabei den Namen<br />

der Master-Slave-Resource fest, und<br />

»res_drbd_mysql« legt fest, dass sich die<br />

Master-Slave-Regel auf die DRBD-Ressource<br />

»res_drbd_mysql« bezieht. Die<br />

»meta«-Paramater scheinen konfus, sind<br />

aber treffend:<br />

n »clone-max« legt fest, dass die Ressource<br />

zu jedem Zeitpunkt auf höchstens<br />

zwei Knoten im Cluster gleichzeitig<br />

laufen darf.<br />

n »master-max« legt fest, dass es zu jeder<br />

Zeit nur einen Knoten im Cluster<br />

geben darf, auf dem die Ressource im<br />

»Master«-Modus läuft.<br />

n »master-node-max« legt fest, dass auf<br />

diesem Knoten jeweils nur eine Instanz<br />

der Ressource im Master-Modus<br />

laufen darf.<br />

n »clone-node-max« sorgt dafür, dass<br />

auf einem Clusterknoten nur eine Kopie<br />

dieser Ressource vorhanden sein<br />

darf.<br />

An dieser Stelle wird deutlich, dass<br />

Master-Slave-Setups eigentlich für umfangreichere<br />

Aufgaben vorgesehen sind,<br />

als sich mit einer DRBD-Ressource bewerkstelligen<br />

lassen. »master-node-max«<br />

und »clone-node-max« sind im Falle von<br />

DRBD eigentlich überflüssig, müssen<br />

aber trotzdem angegeben werden<br />

Wenn die »primitive«-Ressource für<br />

DRBD sowie die dazu gehörende »Master-Slave-Ressource«<br />

in der CRM-Shell<br />

hinzugefügt sind, katapultiert »commit«<br />

im »configure«-Abschnitt der CRM-Shell<br />

die Änderungen in den Cluster. Ein »crm_<br />

mon -rf« zeigt die Ressourcen an – das<br />

Ergebnis sollte dann aussehen wie in<br />

Abbildung 2. Damit ist die Konfiguration<br />

von DRBD für Pacemaker abgeschlossen.<br />

Der Clustermanager wird ab sofort versuchen,<br />

die DRBD-Ressource jederzeit<br />

auf einem der beiden Cluster-Knoten im<br />

Modus »Primary« zu betreiben.<br />

Automatisch mounten<br />

Für das Beispiel dieses Artikels ist es<br />

mit DRBD allein allerdings noch nicht<br />

getan. Denn auch, wenn Pacemaker die<br />

DRBD-Ressource auf einem Knoten ordnungsgemäß<br />

in den »Primary«-Modus<br />

schaltet, fehlt noch immer der automatische<br />

Mount-Vorgang, um das Dateisystem<br />

tatsächlich verwenden zu können.<br />

Zusätzlich zur DRBD-Ressource samt<br />

Master-Slave-Setup muss deshalb auch<br />

eine Ressource für eben diesen Mount in<br />

die Clusterkonfiguration. Der für Mountvorgänge<br />

vorhandene Ressource-Agent<br />

entstammt der OCF-Klasse, kommt vom<br />

Anbieter Heartbeat und heißt Filesystem.<br />

Somit könnte eine brauchbare Filesystem-Ressource<br />

für das »mysql«-DRBD so<br />

aussehen:<br />

In der »params«-Zeile bezeichnet<br />

»device« das Device,<br />

welches gemountet werden<br />

soll – im Beispiel also die<br />

DRBD-Ressource. »directory«<br />

legt den Mountpoint fest,<br />

»fstype« und »options« funktionieren<br />

analog zu den Parametern<br />

»-t« sowie »-o« bei<br />

»mkfs«. Nachdem die Zeile<br />

oben so in der CRM-Shell eingetippt ist,<br />

aktiviert »commit« sie im Cluster. Die<br />

DRBD-Ressource ist damit vorhanden –<br />

es fehlen noch die passenden Constraints,<br />

um die beiden Ressourcen auf denselben<br />

Knoten des Clusters zu zwingen.<br />

Constraints in Pacemaker<br />

Ressourcen in einem Pacemaker-Cluster-<br />

Setup können auf verschiedene Arten<br />

voneinander abhängen. Dabei kann es<br />

sich einerseits um Abhängigkeiten handeln,<br />

die ein Administrator festlegt. Ein<br />

typisches Beispiel wäre der Wunsch,<br />

dass verschiedene Dienste immer auf<br />

dem gleichen Host laufen sollen, um so<br />

ein klassisches Aktiv-Passiv-Setup mit<br />

einem „Standby-Knoten“ zu erreichen.<br />

Aber auch intrinsische Abhängigkeiten<br />

sind denkbar: Sind wie im Beispiel eine<br />

DRBD-Ressource und dazugehöriges<br />

Dateisystem vorhanden, dann muss das<br />

Dateisystem stets auf dem Knoten gestartet<br />

werden, auf dem auch das DRBD-<br />

Laufwerk im »Primary«-Modus ist – denn<br />

nur dort kann es überhaupt gemountet<br />

werden. In Pacemaker lassen sich solche<br />

Abhängigkeiten mit den sogenannten<br />

Constraints abbilden. Zur Verfügung stehen<br />

Order-Constraints, Colocation-Constraints<br />

und Location-Constraints.<br />

Die drei Begriffe sind Umschreibungen<br />

für sehr komplexe Vorgänge, die in Pacemaker<br />

ablaufen, um festzulegen, wo eine<br />

108 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Pacemaker und mysQL<br />

Know-how<br />

Ressource laufen soll. Pacemaker bringt<br />

eine eigene Komponente mit, die sich<br />

ausschließlich dieser Frage widmet: Die<br />

Policy Engine, die in der Prozesstabelle<br />

als »pengine« zu finden ist. Die Policy<br />

Engine arbeitet intern mit Punktwerten.<br />

Geht es um die Frage, wo eine spezifische<br />

Komponente laufen soll, spielt eben diese<br />

Policy Engine alle denkbaren Szenarien<br />

durch und nutzt schließlich die Option<br />

mit der höchsten Punktzahl. Der Admin<br />

hat durch das händische Setzen von Constraints<br />

die Möglichkeit, selbst Punkte zu<br />

verteilen und damit die Entscheidung im<br />

Punktewettkampf zu beeinflussen.<br />

Colocation-Constraints<br />

Mittels Colocation-Constraints legt der<br />

Administrator fest, dass zwei Ressourcen<br />

auf dem gleichen Host laufen müssen,<br />

sollen oder nicht laufen dürfen. Die<br />

Syntax eines Colocation-Constraints ist<br />

grundsätzlich diese:<br />

colocation Name Punktzahl: U<br />

Ressource, die folgt Ressource,U<br />

die grundsätzlich startbar sein muss<br />

Obwohl es sich bei Colocation-Constraints<br />

nicht um typische Ressourcen<br />

handelt – das Gleiche trifft übrigens auf<br />

Orders und Locations ebenso zu – brauchen<br />

auch diese Einträge einen eindeutigen<br />

Namen in der CIB. Dieser ist per<br />

»Name« festzulegen. »Punktzahl:« kann<br />

grundsätzlich jeder beliebige Zahlenwert<br />

sein. In der Praxis finden sich hier aber<br />

meistens die Einträge »inf:« und »-inf:«.<br />

Entsprechend ist dann auch die Rede von<br />

»Infinity-Colocations« und »Minus-Infinity-Colocations«.<br />

Legt der Admin den<br />

Wert auf »inf:« fest, bedeutet das, dass<br />

zwei Ressourcen stets auf dem gleichen<br />

Host zu starten sind – kann eine Ressource<br />

nicht gestartet werden, so darf auf<br />

dem Host auch die andere nicht laufen.<br />

»inf:« ist die zweithöchste Punktzahl, die<br />

ein Admin vergeben kann. Über »inf:«<br />

rangiert bloß noch »-inf:«, was das genaue<br />

Gegenteil bewirkt: Es besagt, dass<br />

zwei auf diese Weise voneinander ausgeschlossene<br />

Ressourcen unter keinen<br />

Umständen auf dem gleichen Rechner<br />

laufen dürfen.<br />

Die beiden Argumente für den Colocation-Constraint<br />

bezeichnen die zwei<br />

Ressourcen, die miteinander verbunden<br />

werden. Die angegebene Reihenfolge ist<br />

wichtig, denn das zweite Argument bezeichnet<br />

jeweils die Ressource, die auf<br />

einem Cluster-Knoten laufen können<br />

muss, bevor Pacemaker überhaupt prüft,<br />

ob die andere Ressource dort ebenfalls<br />

zu starten ist. Sprachlich hilft die Formulierung<br />

„Die erste angegebene Ressource<br />

folgt der zweiten angegebenen<br />

Ressource“ als Eselsbrücke; doch ist der<br />

Merksatz unpräzise, denn zunächst trifft<br />

eine Colocation keine Aussage darüber,<br />

in welcher Reihenfolge zwei Ressourcen<br />

auf einem Knoten zu starten sind. In<br />

der Praxis wirkt sich die hier verwendete<br />

Reihenfolge insbesondere bei Colocation-<br />

Constraints mit dem Punktwert »-inf:«<br />

aus: Pacemaker sorgt dann nämlich dafür,<br />

dass die im Colocation-Constraint an<br />

zweiter Stelle stehende Ressource jedenfalls<br />

auf einem Cluster-Knoten gestartet<br />

wird, die andere aber auf dem gleichen<br />

Knoten keinesfalls. Analog dazu ist die<br />

Eselsbrücke bei »-inf:«-Constraints auch<br />

„Die erste angegebene Ressource folgt<br />

der zweiten angegebenen Ressource nie“.<br />

Ist in einer solchen Situation kein zweiter<br />

Cluster-Knoten mehr vorhanden, bleibt<br />

die erste angegebene Ressource dann einfach<br />

gestoppt.<br />

Colocations in der Praxis<br />

Ein typischer Colocation-Constraint, um<br />

das im Beispiel angelegte DRBD mit dem<br />

ebenfalls vorhandenen Dateisystem in<br />

Pacemaker zu verbinden, sieht so aus:<br />

colocation co_res_fs_mysql_always_with_ms_U<br />

drbd_Master inf: res_fs_mysql ms_drbd_U<br />

mysql:Master<br />

Das Beispiel zeigt sehr deutlich, dass<br />

DRBD-Ressourcen in Pacemaker stets<br />

über ihre Master-Slave-Regel zu steuern<br />

sind. Der Colocation-Constraint legt<br />

fest, dass »res_fs_mysql« nur dort laufen<br />

kann, wo auch die »Master«- Instanz von<br />

»ms_drbd_mysql« läuft.<br />

Location- und Order-<br />

Constraints<br />

Location-Constraints verbinden nicht<br />

einzelne Ressourcen miteinander, sondern<br />

legen fest, dass einzelne Ressourcen<br />

mit erhöhter Präferenz auf einem<br />

bestimmten Cluster-Knoten laufen sollen.<br />

Location-Constraints spielen in Clustern<br />

üblicherweise eine untergeordnete Rolle<br />

und sind aufgrund sehr vieler Konfigurationsoptionen<br />

eher umfangreich. Eine<br />

ausführliche Hilfe finden Interessierte im<br />

Hilfetext zum Befehl in der CRM-Shell,<br />

der mittels »crm configure help location«<br />

einzusehen ist.<br />

Order-Constraints legen fest, in welcher<br />

Reihenfolge zwei Ressourcen auf einem<br />

Host zu starten oder zu stoppen sind.<br />

Sie treten üblicherweise in Verbindung<br />

mit den schon erwähnten Colocation-<br />

Constraints auf. Ihre Syntax ist:<br />

order Name Punktzahl Ressource, die U<br />

zuerst gestartet wird Ressource, die U<br />

danach gestartet wird<br />

Je nach Art der angegebenen Ressourcen<br />

ist an den Namen der String » :start« oder<br />

»:promote« anzuhängen. Als Punktwert<br />

fungiert in den allermeisten Fällen »inf:«.<br />

Im Beispiel des Artikels, in dem sichergestellt<br />

sein soll, dass das Dateisystem<br />

erst startet, nachdem DRBD schon primär<br />

ist, wäre ein passender Order-Constraint<br />

dieser:<br />

order o_res_fs_mysql_always_after_ms_U<br />

drbd_mysql inf: ms_drbd_mysql:promote U<br />

res_fs_mysql:start<br />

Gruppen<br />

Gruppen sind in Pacemaker eine adminfreundlichere<br />

Methode, um Ressourcen,<br />

die stets auf dem gleichen Host laufen<br />

und in einer bestimmten Reihenfolge gestartet<br />

werden müssen, miteinander zu<br />

verbinden. Die Syntax ist<br />

group Name Resource 1 Resource 2 ...<br />

Master-Slave-Setups lassen sich nicht in<br />

Gruppen integrieren, werden bei Bedarf<br />

aber mittels Colocation- und Order-Constraints<br />

mit diesen verbunden. Denkt man<br />

sich im Beispiel des Artikels die Ressource<br />

für MySQL mit dem Namen »res_mysql«<br />

hinzu, so könnte eine Gruppe dafür so<br />

aussehen:<br />

group g_mysql res_fs_mysql res_mysql<br />

Die Resource-Stickiness<br />

Die in früheren Zeiten durchaus beliebte<br />

Auto-Fail-Back-Funktion fristet heute eher<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

109


Know-how<br />

Pacemaker und mysQL<br />

ein Nischendasein. Schließlich bringt es<br />

keinen Mehrwert, einen Dienst, der auf<br />

einem Clusterknoten tadellos funktioniert,<br />

grundlos auf einen anderen Server<br />

zu migrieren. In der Standard-Konfiguration<br />

ist das Feature in Pacemaker trotzdem<br />

aktiv – über einen Umweg, der mit<br />

dem schon erwähnten Punktesystem zu<br />

tun hat. Denn auch die Frage, ob eine<br />

Ressource auf dem Knoten eines Clusters,<br />

auf dem sie gerade läuft, weiterlaufen<br />

soll, wird über die schon erwähnte<br />

Policy-Engine beantwortet.<br />

Grundsätzlich gilt: Pacemaker ist ab<br />

Werk darauf ausgelegt, dass ein von<br />

ihm verwalteter Cluster symmetrisch ist.<br />

Das heißt, dass die anfallende Last der<br />

Ressourcen möglichst gleichmäßig auf<br />

die verfügbaren Knoten zu verteilen ist.<br />

Ohne besondere Voreinstellung bekommt<br />

eine Ressource deshalb dafür, dass sie auf<br />

Knoten A oder auf Knoten B läuft, keine<br />

Punkte. Pacemaker startet eine Ressource<br />

1 auf Knoten A und eine Ressource 2 auf<br />

Knoten B. Fällt Knoten B aus, wandert<br />

die Ressource 2 auf Knoten A. Kommt<br />

Knoten B zurück<br />

in den Cluster,<br />

hat Pacemaker<br />

die Möglichkeiten<br />

„Lassen, wo<br />

es ist“ oder „Auf<br />

den anderen Knoten<br />

verschieben“.<br />

Beide Varianten<br />

haben gleich viele<br />

Punkte – 0 ab<br />

Werk – und Pacemaker<br />

verschiebt<br />

die Ressource.<br />

Um des Problems<br />

Herr zu werden,<br />

empfiehlt sich das<br />

Setzen des Attributes<br />

»resource-stickiness«. Der Wert legt<br />

fest, wie viele Punkte eine Ressource dafür<br />

bekommt, dass sie auf einem Cluster-<br />

Knoten bereits läuft. Wenn der Wert auf<br />

200 gesetzt ist, bekäme die Variante „Lassen,<br />

wo es ist“ aus dem Beispiel gerade<br />

200 Punkte und die Variante „Auf den anderen<br />

Knoten verschieben“ immer noch<br />

Abbildung 3: Dieses Setup ist ein klassisches MySQL-Setup, das zwar nie einen<br />

Eintrag verliert, möglicherweise aber beim Fail-Over sehr lange braucht.<br />

0 Punkte – das Verschieben wäre verhindert.<br />

Der Wert »resource-stickiness« lässt<br />

sich für alle Ressourcen im Cluster mit<br />

diesem Befehl festlegen:<br />

rsc_defaults resource‐stickiness="200"<br />

Damit ist der automatische Fail-Back<br />

dauerhaft unterbunden.<br />

hochverfügbares mysQL<br />

Die im Artikel beschriebene Vorgehensweise,<br />

um eine MySQL-Datenbank hochverfügbar zu<br />

machen, geht vom Standard-Beispiel aus: Ein<br />

simpler Fail-Over-Cluster, in dem MySQL die<br />

Hauptanwendung ist. In der Praxis funktioniert<br />

dieses Prinzip zwar sehr verlässlich, bringt<br />

allerdings auch ein großes Problem mit sich.<br />

Der Grund hierfür liegt tief in den Strukturen<br />

der InnoDB-Engine, die MySQL standardmäßig<br />

verwendet und welche die mit Abstand meistgenutzte<br />

Engine überhaupt ist. Im Anschluss<br />

an einen Crash prüft MySQL die vorhandenen<br />

Datenbanken auf ihre Konsistenz und nimmt falls<br />

nötig entsprechende Korrekturen vor. Je größer<br />

die vorhandene Datenmenge ist, desto länger<br />

dauert dieser Vorgang. Dem Cluster-Manager<br />

vermeldet der Resource-Agent für MySQL zwar<br />

kurz nach dem Aufruf mit »start« den erfolgreichen<br />

Start, bis die Datenbank aber tatsächlich<br />

wieder auf Anfragen antwortet, dauert es bisweiligen<br />

einige Minuten. Obwohl der Clusterstack<br />

selbst also in kurzer Zeit einen brauchbaren<br />

Zustand wiederherstellt, dauert es sehr viel<br />

länger, bis die durch einen Fail-Over verursachte<br />

Downtime endet.<br />

Es lohnt sich durchaus, die Frage zu stellen, ob es<br />

im Falle eines Falles tatsächlich eine Datenbank<br />

braucht, bei der unter allen Umständen sicher<br />

ist, dass niemals auch nur ein einzelner Eintrag<br />

verloren geht. Es stehen sich zwei grundlegende<br />

Betriebsmuster gegenüber: Eine Fail-Over-<br />

Lösung wie oben beschrieben, die tatsächlich<br />

„transaction safe“ ist, also vor Datenverlust im<br />

Falle eines Ausfalls schützt (Abbildung 3). Ist<br />

es andererseits denkbar, dass im Rahmen eines<br />

Ausfalls eines Servers einzelne Records verloren<br />

gehen, ist die Situation entspannter. Beispiele<br />

aus der Praxis sind Webstores oder Foren: Hier<br />

können Admins es meistens eher verschmerzen,<br />

dass Einträge verloren gehen, die kurz vor dem<br />

Crash erstellt worden sind, als dass eine Datenbank<br />

wegen InnoDB-Recoverys 20 oder mehr<br />

Minuten gar nicht zur Verfügung steht.<br />

Master-Slave-Architektur von MySQL<br />

Beide Szenarien lassen sich mit Pacemaker<br />

abbilden. Die sichere Lösung war im Rahmen<br />

dieses Artikels bereits Thema – das berühmte<br />

Schema F mit einem von Pacemaker verwalteten<br />

MySQL auf DRBD. Aber auch die Variante<br />

2 lässt sich mit Pacemaker realisieren. Auch<br />

für diese Variante braucht es mindestens zwei<br />

Server. Der Unterschied zur Standard-Variante:<br />

Durch die Möglichkeit, dass einzelne Datensätze<br />

verloren gehen, erkauft sich der Admin die Möglichkeit<br />

des nahezu sofortigen Fail-Overs ohne<br />

lange Wartezeit. Denn in diesem Szenario gibt<br />

es einen MySQL-Master und einen MySQL-Slave,<br />

die ihren Inhalt auf MySQL-Ebene permanent<br />

synchron halten. Fällt der aktuelle Master aus,<br />

„befördert“ pacemaker den verbliebenen Knoten<br />

vom Slave zum Master ( Abbildung 4 und<br />

5). So steht sofort ein neuer Masterserver zur<br />

Verfügung. Anstelle von DRBD kommt in diesem<br />

Szenario also vor allem die in MySQL vorhandene<br />

Replikationsfunktion zum Einsatz.<br />

Dieses Szenario ist nicht auf zwei Server beschränkt,<br />

sondern kann letztlich aus beliebig<br />

vielen MySQL-Slave-Servern bestehen. Pacemaker<br />

hilft bei der Administration: Mittels »clone«-<br />

Ressourcen weiß es zu jedem Zeitpunkt, auf welchen<br />

Mitgliedern eines Clusters ein MySQL läuft<br />

und welche Rolle – Master oder Slave – dieses<br />

MySQL gerade hat. Fällt der aktuelle Master-Server<br />

aus, befördert Pacemaker automatisch einen<br />

anderen Slave zum Master. indem eine Service-<br />

IP jeweils mittels »Colocation-Constraint« auf<br />

den Rechner fixiert wird, auf dem auch die aktuelle<br />

Master-Instanz von MySQL läuft. So gibt<br />

es immer ein funktionierendes MySQL, das auf<br />

der definierten IP-Adresse lauscht.<br />

Hilfe<br />

Die genaue Beschreibung eines Master-Slave-<br />

Setups mit Pacemaker und MySQL hätte den<br />

Rahmen dieses Artikels gesprengt. Wer Interesse<br />

an einem solchen Setup hat, richtet zunächst<br />

zwei MySQL-Datenbanken mit Replikation<br />

ein – eine Anleitung dazu findet sich in der Doku<br />

von MySQL unter [1]. Anschließend fehlt noch<br />

die passende Konfiguration für Pacemaker, die<br />

auf der Wiki-Seite des »mysql«-OCF-RAs unter<br />

[2] zu finden ist.<br />

110 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Pacemaker und mysQL<br />

Know-how<br />

Abbildung 4: In diesem Szenario kommen hingegen dynamische MySQL Master<br />

und Slaves zum Einsatz. Stirbt ein Master-Server, übernimmt ein anderer die<br />

Rolle …<br />

Constraints in Pacemaker sind sehr komplex.<br />

Die zuvor gegebenen Erklärungen<br />

reichen zwar für alltägliche Einsatzszenarien<br />

in Pacemaker, kratzen ansonsten<br />

aber bloß an der Oberfläche. Wer sich mit<br />

den Interna genauer befassen möchte,<br />

funktio nierenden HA-Cluster mit MySQL<br />

fehlen noch zwei Dinge, nämlich die<br />

Datenbank selbst sowie die Service-IP,<br />

unter der die Datenbank erreichbar sein<br />

soll. Die Einrichtung einer IP-Adresse<br />

geschieht analog zur Erklärung im ersfindet<br />

in Andrew Beekhofs Dokumentation<br />

[6] genauere Informationen.<br />

Bisher besteht die Cluster-Konfiguration<br />

aus der »primitive«-Ressource für DRBD,<br />

der dazu gehörenden Master-Slave-Regel<br />

sowie dem Dateisystem. Für einen<br />

Abbildung 5: … und verliert dabei möglicherweise einzelne Einträge, bietet dafür<br />

aber nahezu sofortigen Fail-Over.


Know-how<br />

Pacemaker und mysQL<br />

ten Teil des Workshops. Wenn auf den<br />

beiden Cluster-Knoten die IP-Adressen<br />

192.168.0.1 sowie 192.168.0.2 sind und<br />

die Service-IP 192.168.0.3 sein soll, genügt<br />

in Pacemaker diese primitive Ressource:<br />

primitive res_ip_mysql ocf:heartbeat:U<br />

IPaddr2 params ip="192.168.0.3" U<br />

cidr_netmask="24" op monitor interval="20s"<br />

Der MySQL-Resource-Agent<br />

Im letzten Schritt findet auch MySQL<br />

selbst Eingang in die CIB und wird so zur<br />

von Pacemaker verwalteten Ressource.<br />

Der Resource-Agent für MySQL ist ein<br />

OCF-Agent vom Provider »heartbeat«<br />

namens »mysql«. Besondere Bedeutung<br />

haben die Parameter, die der Resource-<br />

Agent kennt – sie erlauben es, wichtige<br />

Parameter für MySQL unmittelbar in<br />

Pacemakers CIB zu definieren.<br />

Das folgende Beispiel geht von einem Debian-System<br />

aus, bei dem sich »mysqld.<br />

sock und mysql.pid« im Ordner»/var/run/<br />

mysql« befinden. Das Log-Verzeichnis ist<br />

»/var/log/mysql«. Die Konfigurationsdatei<br />

heißt »/etc/mysql/my.cnf« – das<br />

ist wichtig, weil der MySQL-OCF-RA sie<br />

defaultmäßig in »/etc/my.cnf« erwartet<br />

und außer einer Fehlermeldung keinen<br />

Mucks von sich gibt, wenn er die angegebene<br />

Konfigurationsdatei nicht findet.<br />

Das MySQL-Binary ist »/usr/sbin/mysqld«.<br />

Das »datadir«, in dem MySQL nach<br />

seinen Datenbanken sucht, ist wie schon<br />

erwähnt »/mnt/mysql«. Unter diesen Voraussetzungen<br />

ergibt sich bei Debian diese<br />

Ressourcen-Definition für MySQL:<br />

primitive res_mysql ocf:heartbeat:mysqlU<br />

params \<br />

config="/etc/mysql/my.cnf" \<br />

datadir="/mnt/mysql" \<br />

log="/var/log/mysql/mysql.log" \<br />

pid="/var/run/mysqld/mysqld.pid" \<br />

socket="/var/run/mysqld/mysqld.sock" \<br />

additional_parameters="‐‐bind‐address=U<br />

192.168.0.3" \<br />

op start interval="0" timeout="60s" \<br />

op stop interval="0" timeout="60s" \<br />

op monitor interval="60s"<br />

Alle notwendigen Ressourcen sind damit<br />

in Pacemaker vorhanden. Wie jedoch weiter<br />

oben bereits beschrieben ist noch dafür<br />

zu sorgen, dass die tatsächlich zueinander<br />

gehörenden Ressourcen auch auf dem<br />

gleichen Host und außerdem in der richtigen<br />

Reihenfolge starten: Zunächst steckt<br />

der Admin die Ressourcen »res_fs_mysql«,<br />

»res_ip_mysql« sowie »res_mysql« in eine<br />

gemeinsame Gruppe namens »g_mysql«:<br />

group g_mysql res_fs_mysql res_ip_mysql U<br />

res_mysql<br />

Danach verbindet ein Colocation Constraint<br />

in Kombination mit einem Order<br />

Constraint diese Gruppe mit dem Knoten,<br />

auf dem die DRBD-Ressource »ms_drbd_<br />

mysql« im Primary-Modus läuft:<br />

colocation co_g_mysql_always_with_ms_drbdU<br />

_mysql inf: g_mysql ms_drbd_mysql:Master<br />

order o_g_mysql_always_after_ms_drbd_mysqlU<br />

inf: ms_drbd_mysql:promote g_mysql:start<br />

Wenn alle diese Zeilen im »configure«-<br />

Abschnitt der CRM-Shell eingetippt<br />

Aktiv-Aktiv-mysQL-setup<br />

01 primitive res_drbd_mysql ocf:linbit:drbd \<br />

02 params drbd_resource="mysql" \<br />

03 op monitor interval="10s" role="Master" \<br />

04 op monitor interval="20s" role="Slave" \<br />

05 op start interval="0" timeout="240" \<br />

06 op stop interval="0" timeout="240"<br />

07 primitive res_drbd_mysql2 ocf:linbit:drbd \<br />

08 params drbd_resource="mysql2" \<br />

09 op monitor interval="10s" role="Master" \<br />

10 op monitor interval="20s" role="Slave" \<br />

11 op start interval="0" timeout="240" \<br />

12 op stop interval="0" timeout="240"<br />

13 primitive res_fs_mysql ocf:heartbeat:Filesystem \<br />

14 params device="/dev/drbd/by‐res/mysql/0" directory="/mnt/mysql"<br />

fstype="ext3" options="noatime" \<br />

15 op start interval="0" timeout="180s" \<br />

16 op stop interval="0" timeout="300s" \<br />

17 op monitor interval="60s"<br />

18 primitive res_fs_mysql2 ocf:heartbeat:Filesystem \<br />

19 params device="/dev/drbd/by‐res/mysql2/0" directory="/mnt/<br />

mysql2" fstype="ext3" options="noatime" \<br />

20 op start interval="0" timeout="180s" \<br />

21 op stop interval="0" timeout="300s" \<br />

22 op monitor interval="60s"<br />

23 primitive res_ip_mysql ocf:heartbeat:IPaddr2 \<br />

24 params ip="192.168.122.113" cidr_netmask="24" \<br />

25 op monitor interval="20s"<br />

26 primitive res_ip_mysql2 ocf:heartbeat:IPaddr2 \<br />

27 params ip="192.168.122.114" cidr_netmask="24" \<br />

28 op monitor interval="20s"<br />

29 primitive res_mysql ocf:heartbeat:mysql \<br />

30 params config="/etc/mysql/my.cnf" datadir="/mnt/mysql" \ log="/<br />

var/log/mysql/mysql.log" pid="/var/run/mysqld/mysqld.pid" socket="/var/<br />

run/mysqld/mysqld.sock" additional_parameters="‐‐bind‐address=192.168.<br />

122.113" \<br />

31 op start interval="0" timeout="60s" \<br />

32 op stop interval="0" timeout="60s" \<br />

33 op monitor interval="60s"<br />

34 primitive res_mysql2 ocf:heartbeat:mysql \<br />

35 params config="/etc/mysql/my.cnf" datadir="/mnt/mysql2" log="/<br />

var/log/mysql/mysql2.log" pid="/var/run/mysqld/mysqld2.pid" socket="/<br />

var/run/mysqld/mysqld2.sock" additional_parameters="‐‐bind‐address=192.<br />

168.122.114" \<br />

36 op start interval="0" timeout="60s" \<br />

37 op stop interval="0" timeout="60s" \<br />

38 op monitor interval="60s"<br />

39 group g_mysql res_ip_mysql res_fs_mysql res_mysql<br />

40 group g_mysql2 res_ip_mysql2 res_fs_mysql2 res_mysql2 \<br />

41 ms ms_drbd_mysql res_drbd_mysql \<br />

42 meta clone‐max="2" master‐max="1" master‐node‐max="1"<br />

clone‐node‐max="1" notify="true" target‐role="Master"<br />

43 ms ms_drbd_mysql2 res_drbd_mysql2 \<br />

44 meta clone‐max="2" master‐max="1" master‐node‐max="1"<br />

clone‐node‐max="1" notify="true" target‐role="Master"<br />

45 colocation co_g_mysql2_always_with_ms_drbd_mysql2 inf: g_mysql2 ms_drbd_<br />

mysql2:Master<br />

46 colocation co_g_mysql_always_with_ms_drbd_mysql inf: g_mysql ms_drbd_<br />

mysql:Master<br />

47 colocation co_mysql2_never_follows_mysql ‐inf: ms_drbd_mysql2:Master<br />

ms_drbd_mysql:Master<br />

48 order o_g_mysql2_always_after_ms_drbd_mysql2 inf: ms_drbd_mysql2:promote<br />

g_mysql2:start<br />

49 order o_g_mysql_always_after_ms_drbd_mysql inf: ms_drbd_mysql:promote<br />

g_mysql:start<br />

112 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Pacemaker und mysQL<br />

Know-how<br />

Praktisch verhindert dieser Colocation-<br />

Constraint, dass die DRBD-Ressource<br />

»mysql2« dort Primary wird, wo die Ressource<br />

»mysql« bereits Primary ist. Fällt<br />

ein Clusterknoten aus, bleibt nur die Dasind,<br />

beendet »commit« den Kraftakt.<br />

Ein Blick in den Cluster-Status mit<br />

»crm_mon -rf« auf der Kommandozeile<br />

verrät, ob der Versuch erfolgreich war.<br />

Das Ergebnis sollte aussehen wie in<br />

Abbildung 6. Jedenfalls müssen sämtliche<br />

angelegten Ressourcen auf dem<br />

gleichen Clusterknoten laufen. Tauchen<br />

im Cluster-Monitor Ressourcen auf, die<br />

als »failed« markiert sind, so empfiehlt<br />

es sich, mit »crm resource cleanup<br />

Name der Resource« diese Ressourcen<br />

aufzuräumen. Bei DRBD-Ressourcen ist<br />

der Cleanup-Befehl grundsätzlich auf<br />

das MS-Setting anzuwenden, beispielsweise<br />

»crm resource cleanup ms_drbd_<br />

mysql«.<br />

Sinnvolle Nutzung<br />

Das Pacemaker-Setup wie beschrieben<br />

führt zu einem klassischen Aktiv-Passiv-<br />

Cluster. Auf einem der beiden Clusterknoten<br />

läuft das MySQL mit allem, was<br />

dazugehört – der andere Server langweilt<br />

sich. Das ist weder sinnvoll noch besonders<br />

umweltfreundlich – es besteht<br />

durchaus die Option, auch dem anderen<br />

Clusterknoten zu Arbeit zu verhelfen.<br />

Ein Beispiel wäre ein Szenario, in dem<br />

es eine Produktiv-Datenbank und eine<br />

Test-Datenbank gibt.<br />

Im Alltag wird das Hauptaugenmerk<br />

darauf liegen, die Produktivdatenbank<br />

lauffähig zu halten. Solange beide Clusterknoten<br />

verfügbar sind, soll auf dem<br />

jeweils anderen Knoten eine Test-Datenbank<br />

laufen. Stürzt ein Clusterknoten ab,<br />

bleibt nur die Produktiv-Datenbank übrig.<br />

Pacemaker würde in diesem Falle entweder<br />

die Test-Datenbank auf dem Knoten<br />

nicht starten, oder die Test-Datenbank –<br />

falls sie auf dem noch laufenden Knoten<br />

rennt – stoppen und an ihrer Stelle die<br />

Produktivdatenbank starten. Das Setup<br />

ist sehr leicht zu erreichen.<br />

Ein zweites MySQL<br />

Analog zur Konfiguration des ersten My-<br />

SQLs braucht es eine komplette zweite<br />

MySQL-Datenbank – auch in Pacemaker.<br />

Eine etwaige DRBD-Ressource kann<br />

»mysql2« heißen und der dazugehörige<br />

Mountpoint »/mnt/mysql2«. Die Pacemaker-Ressourcen<br />

inklusive Master-Slave-<br />

Setup vom schon vorhandenen MySQL<br />

Abbildung 6: Fertig – der MySQL-Cluster läuft im Aktiv-Aktiv-Modus; fällt ein Knoten aus, bleibt nur die<br />

Datenbank „mysql“ übrig.<br />

lassen sich analog übernehmen, lediglich<br />

die verwendeten Namen und Parameter<br />

sind anzupassen. Indem eine zweite<br />

Service-IP definiert wird, zum Beispiel<br />

192.168.0.4, erhält die Test-Datenbank<br />

eine Adresse. Auch die IP- sowie die<br />

Filesystem-Ressource sind analog zu<br />

übernehmen. Statt »g_mysql« heißt die<br />

zweite Gruppe »g_mysql2«. Die Parameter<br />

der zweiten MySQL-Ressource namens<br />

»res_mysql2« sind freilich ebenfalls<br />

anzupassen, hier könnte das PID-File<br />

»/var/run/mysqld/mysqld2.pid« und<br />

das Socket-File »/var/run/mysqld/mysqld2.sock«<br />

heißen. Datadir wäre freilich<br />

»/mnt/mysql2«. Mittels Colocation und<br />

Order wird die zweite DRBD-Ressource<br />

mit »g_mysql2« verknüpft.<br />

Versicherung gegen<br />

Umsturz<br />

Wenn auch die zweite MySQL-Datenbank<br />

läuft und vollständig in Pacemaker<br />

integriert ist, fehlt bloß noch ein Colocation-Constraint<br />

mit Punktwert »-inf:«,<br />

um die beiden Datenbanken voneinander<br />

zu trennen. Im Beispiel sähe dieser<br />

so aus:<br />

colocation co_mysql2_never_follows_mysqlU<br />

‐inf: ms_drbd_mysql2:Master ms_drbd_mysql:U<br />

Master<br />

tenbank »mysql« übrig. Die komplette<br />

Konfiguration für ein solches Setup mit<br />

Befehlen der CRM-Shell findet sich im<br />

Kasten Aktiv-Aktiv-Setup.<br />

DRBD und Pacemaker kommen jeweils<br />

mit Werkzeugen daher, die jede Menge<br />

verschiedene Parameter verstehen. Eine<br />

übersichtliche Referenz auf zwei Din-A4-<br />

Seiten, verfasst vom Autor dieses Artikels,<br />

finden Sie auf der Homepage von<br />

LINBIT unter [4] und [5]. (jcb) n<br />

Infos<br />

[1] MySQL-Replikation einrichten: [http://<br />

dev.mysql. com/ doc/refman/5.5/en/<br />

replication-howto. html]<br />

[2] Master-Slave-Konfiguration von MySQL in<br />

Pacemaker: [http://www.linux-ha.org/wiki/<br />

Mysql_(resource_agent)]<br />

[3] Admin-<strong>Magazin</strong> 5/ 11, Seite 80<br />

Martin Loschwitz: Storage für HA-Cluster<br />

[4] DRBD Quick Reference Guide: [http://<br />

www.linbit. com/ en/ education/tech-guides/<br />

drbd-quick-reference/]<br />

[5] Pacemaker Quick Reference Guide: [http://<br />

www.linbit. com/ en/ education/tech-guides/<br />

pacemaker-quick-reference/]<br />

[6] Andrew Beekhof, Cluster from Scratch:<br />

[http://theclusterguy.clusterlabs.org/post/<br />

193226662/ clusters-from-scratch]<br />

Der Autor<br />

Martin Gerhard Loschwitz ist freier Journalist<br />

und seit über drei Jahren im High-Availability-<br />

Umfeld aktiv. Er hilft dabei, den gesamten<br />

Linux-Cluster-Stack für Debian GNU/ Linux zu<br />

pflegen.<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

113


Asics<br />

sieve<br />

zu überfluten. Um von dieser Masse<br />

nicht erschlagen zu werden, bedarf es<br />

eines ausgeklügelten Filtersystems, das<br />

Nachrichten automatisch in die richtigen<br />

Ordner sortiert.<br />

Für gewöhnlich richten sich Anwender<br />

diese Filter direkt im E-Mail-Client ein,<br />

denn sowohl Desktop-Applikationen wie<br />

Mozilla Thunderbird oder Kmail als auch<br />

Webmailer wie Roundcube oder Squirrel<br />

Mail, bieten mehr oder weniger umfassende<br />

Möglichkeiten dafür an. Diese<br />

Variante ist mit Abstand am einfachsten<br />

– solange man E-Mails nur von einem<br />

System aus abruft.<br />

Kommen mehrere Geräte ins Spiel, wird<br />

es hingegen schwierig. Mit IMAP ist zwar<br />

der Mailbestand überall identisch, doch<br />

Filterregeln kennt das Protokoll nicht.<br />

Zwar lassen sich theoretisch die Einstellungen<br />

zwischen den Clients hin- und<br />

herkopieren, doch das ist äußerst mühselig.<br />

Spätestens, wenn sich noch Smartphones<br />

und Tablet-PCs dazugesellen,<br />

wird es endgültig kompliziert.<br />

Mehr Komfort mit Sieve<br />

Mails filtern mit Sieve<br />

Versiebt<br />

wer täglich mit einem ganzen berg von e-mails konfrontiert wird, ist auf<br />

intelligente Filter angewiesen. mit sieve steht dabei eine serverseitige<br />

Lösung zur Verfügung, die für Anwender wie für Administratoren einfach<br />

einzurichten und zu warten ist. Florian effenberger<br />

Das Ausmaß des E-Mail-Verkehrs in heutigen<br />

Zeiten stellt Administratoren wie<br />

auch Endanwender vor große Probleme.<br />

Längst landen nicht nur private Nachrichten<br />

in Postfächern, sondern auch<br />

ein Großteil der geschäftlichen Korrespondenz,<br />

selbst die Kommunikation mit<br />

Behörden, erfolgt zumeist elektronisch.<br />

Mailinglisten und Newsletter tun ihr Übriges,<br />

um das Postfach mit allerlei Mails<br />

© Scott Griessel , Fotolia<br />

Wer als Administrator eines IMAP-Servers<br />

seinen Nutzern etwas Gutes tun will,<br />

bietet ihnen daher einen Sieve-Filter an.<br />

Damit lassen sich, ähnlich wie etwa bei<br />

Procmail, Filterregeln für eingehende<br />

Nachrichten festlegen. Der große Vorteil<br />

dabei ist, dass die Filterung direkt am<br />

Server erfolgt und somit automatisch für<br />

alle Clients unabhängig vom Betriebssystem<br />

greift. Am Thunderbird-Desktop<br />

werden sie ebenso abgebildet wie am<br />

Android-Mobiltelefon und am Tablet-PC<br />

– wenn man so will, ist Sieve quasi die<br />

„IMAP-Art“, Mails zu filtern.<br />

Aus Administratorensicht positiv ist, dass<br />

Sieve direkt als Plugin im Mail Delivery<br />

Agent (MDA) eingebaut und dadurch sehr<br />

performant ist. Procmail hingegen wird<br />

in der Regel als eigenständiges Skript<br />

aufgerufen und verursacht entsprechend<br />

höhere Last. Zudem ist die Sieve-Syntax<br />

wesentlich einfacher als die in die Jahre<br />

gekommene, eher kryptisch anmutende<br />

Procmail-Sprache. Dabei steht Sieve für<br />

eine Vielzahl von IMAP-Servern zur<br />

Verfügung und beherrscht nicht nur das<br />

Verschieben von Nachrichten in Unterordner,<br />

sondern unter anderem auch<br />

n das Weiterleiten von Nachrichten an<br />

Dritte<br />

n das Löschen von Nachrichten, die<br />

als Spam oder Virus gekennzeichnet<br />

sind<br />

n das Versenden von Bounces (welches<br />

allerdings mit Vorsicht zu genießen<br />

ist)<br />

n das Setzen von Labels und IMAP-<br />

Markierungen<br />

n das Versenden von Urlaubs- bezie-<br />

114 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


sieve<br />

bAsics<br />

hungsweise Abwesenheitsbenachrichtigungen<br />

Sowohl Aktionen als auch Abfragekriterien<br />

lassen sich beliebig kombinieren.<br />

So ist das Kennzeichnen, Weiterleiten<br />

und automatische Beantworten einer bestimmten<br />

E-Mail in Abhängigkeit von Absender<br />

und Betreff mit nur wenigen Zeilen<br />

möglich. Alle Elemente werden dabei<br />

in einer einfach zu verstehenden Syntax<br />

abgebildet. Aus Sicherheitsgründen unterstützt<br />

Sieve jedoch im Gegensatz zu<br />

Procmail nicht die Ausführung externer<br />

Skripte. Dafür sieht es jedoch Plugins vor,<br />

die einzelne Funktionen ergänzen.<br />

Die richtige Stelle in Postfix<br />

Unser Testsystem besteht aus der aktuellen<br />

LTS-Version von Ubuntu 10.04 (Lucid<br />

Lynx) und dem darin enthaltenen Postfix<br />

2.7 samt Dovecot 1.2. Im Folgenden gehen<br />

wir davon aus, dass beide Komponenten<br />

bereits installiert und einsatzfähig sind,<br />

und die einzelnen Benutzerkonten aus<br />

der Datei »/etc/passwd« kommen – LDAP<br />

oder MySQL sind also nicht im Spiel. Zur<br />

Installation von Postfix genügt dafür die<br />

Kommandozeile »apt-get install postfix«,<br />

Dovecot findet mit »apt-get install dovecot-imapd«<br />

den Weg aufs System.<br />

Verständnisprobleme bereitet zunächst<br />

die Frage, an welcher Stelle Sieve zum<br />

Zug kommt. Da es eingehende Nachrichten<br />

filtert, liegt der Gedanke nahe, dass<br />

es eine Komponente des SMTP-Servers<br />

ist, in diesem Fall also Postfix – doch weit<br />

gefehlt. Zwar wird Sieve durch Postfix<br />

aufgerufen, die Implementation ist aber<br />

Bestandteil des IMAP-Servers.<br />

Das Prinzip dahinter ist einfach: Postfix<br />

nimmt wie gewohnt die E-Mails als<br />

SMTP-Server entgegen und arbeitet seine<br />

Konfiguration komplett ab: Adressauflösung,<br />

Virenscanner, Spamfilter, Greylisting<br />

und vieles mehr. Erst wenn Postfix<br />

die Mail akzeptiert hat und nach Durchlauf<br />

sämtlicher eigener Filter bereit ist,<br />

sie ins Postfach des Nutzers zu legen,<br />

kommt der sogenannte MDA, der Mail<br />

Delivery Agent, ins Spiel, der die Nachricht<br />

dann auch zustellt. Diese Aufgabe<br />

übernimmt eine Sieve-fähige Dovecot-<br />

Komponente [1].<br />

Dieser Ablauf hat zwei entscheidende<br />

Vorteile: Zum einen wird der Filter nur<br />

mit Mails belastet, die nicht von vorn-<br />

herein zurückgewiesen werden. Anders<br />

ausgedrückt: Nachrichten, die direkt<br />

beim Einliefern als Spam zurückgewiesen<br />

werden, bekommt Sieve gar nicht<br />

zu Gesicht, was die Ressourcen schont.<br />

Zum anderen kann Sieve somit auch auf<br />

Kopfzeilen zugreifen, die erst durch die<br />

Postfix-Konfiguration hinzugefügt wurden,<br />

beispielsweise die Einträge von<br />

Spamassassin, ClamAV oder dem Policy-<br />

Daemon [2].<br />

Konfiguriert wird der MDA über die Option<br />

»mailbox_command« in der Datei<br />

»/etc/postfix/main.cf«. Auf dem Testsystem<br />

sah die korrekte Anbindung von<br />

Sieve an Postfix so aus wie in Listing 1.<br />

Nach der Änderung lädt Postfix die Konfiguration<br />

mit »postfix reload« neu.<br />

Dovecot-Konfiguration<br />

Die Nutzung von Dovecots »deliver« als<br />

MDA allein genügt jedoch noch nicht, um<br />

Sieve zu aktivieren, denn das Protokoll<br />

will zunächst noch konfiguriert werden.<br />

Auch hier gehen wir davon aus, dass die<br />

grundsätzliche Dovecot-Installation bereits<br />

funktionsfähig ist und Mails korrekt<br />

in die IMAP-Postfächer verteilt werden.<br />

Die Konfiguration des Servers befindet<br />

sich unter Ubuntu in »/etc/dovecot/<br />

dovecot.conf«. Zwei wichtige Optionen<br />

befinden sich im Abschnitt »lda«, der zunächst<br />

aktiviert werden muss. Die dortige<br />

Option namens »postmaster_address« benennt<br />

den technischen Ansprechpartner<br />

für den Mailserver, der unter anderem<br />

in Bounces und Systemnachrichten angezeigt<br />

wird. Da es ohnehin sinnvoll ist,<br />

einen dedizierten Alias namens »postmaster«<br />

anzulegen, sollte dieser auch<br />

seinen Weg in die Konfiguration finden.<br />

In der Option »mail_plugins« wird die<br />

Sieve-Filterung schlussendlich aktiviert,<br />

denn Dovecot lädt die Erweiterung nur<br />

dann nach, wenn der Administrator dies<br />

explizit wünscht. Ein vollständiger »lda«-<br />

Abschnitt sieht so aus:<br />

protocol lda {<br />

postmaster_address = postmaster@firma.tld<br />

mail_plugins = sieve<br />

}<br />

Mit »/etc/init.d/dovecot restart« liest der<br />

Server die Konfiguration neu ein.<br />

Die Arbeit des Administrators ist an dieser<br />

Stelle eigentlich getan, denn sind alle<br />

Schritte erfolgreich umgesetzt, so steht<br />

Sieve jedem Nutzer des IMAP-Servers zur<br />

Verfügung. Im Folgenden soll daher gezeigt<br />

werden, wie jeder Anwender seine<br />

Filterregeln verwaltet und wie die Sieve-<br />

Syntax aufgebaut ist.<br />

Grundsätzlich bringt jeder IMAP-Server<br />

seine eigene Sieve-Implementation mit,<br />

die sich in Details durchaus unterscheiden<br />

kann, beispielsweise im Dateinamen<br />

für die Filterbefehle oder im Namen der<br />

Plugins. In ihren Grundlagen ist die Sprache<br />

jedoch spezifiziert, und die wesentlichen<br />

Regeln sollten sich daher auch bei<br />

einem Wechsel des Mailservers prob lemlos<br />

übernehmen lassen. Die folgenden Ausführungen<br />

beziehen sich auf die Sieve-<br />

Implementation von Dovecot 1.2,1 wie es<br />

Ubuntu 10.04 als Paket mitliefert.<br />

Standardmäßig liegen alle Sieve-Kontrolldateien<br />

im Home-Verzeichnis des jeweiligen<br />

Benutzers. Für einen ersten Test sollte<br />

am besten ein dedizierter Benutzer verwendet<br />

werden, um den regulären Mailbetrieb<br />

nicht zu gefährden, beispielsweise<br />

durch versehentlich gelöschte oder in falsche<br />

Ordner verschobene E-Mails. Generell<br />

ist Sieve zwar sehr anwenderfreundlich<br />

– so verhindert eine fehlerhafte Filterregel<br />

nicht etwa die Zustellung von E-Mails,<br />

sondern die Filterdatei wird in diesem Fall<br />

gar nicht geladen, und die Mails werden<br />

ungefiltert zugestellt. Bei einem hohen<br />

Mailaufkommen kann bereits das jedoch<br />

schon zu unschönen Effekten führen.<br />

Protokoll<br />

Bei der Dovecot-Implementation gibt es<br />

mehrere relevante Dateien. Zentral ist die<br />

Regeldatei ».dovecot.sieve« (mit Punkt<br />

am Anfang), in der alle Filterregeln gespeichert<br />

sind. Sie wird bei Änderungen<br />

automatisch mit dem Eintreffen der<br />

nächsten E-Mails als ».dovecot.svbin«<br />

vorcompiliert, damit die Abarbeitung beschleunigt<br />

wird. Wichtig ist zudem die<br />

Protokolldatei ».dovecot.sieve.log«, denn<br />

dort schreibt das Filtersystem standardmäßig<br />

seine Fehlermeldungen hinein,<br />

wenn Probleme auftreten. Im Fall von<br />

Listing 1: Postfix-Konfiguration<br />

01 mailbox_delivery_lock = dotlock, fcntl<br />

02 virtual_mailbox_lock = dotlock, fcntl<br />

03 home_mailbox = Maildir/<br />

04 mailbox_command = /usr/lib/dovecot/deliver<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

115


Asics<br />

sieve<br />

Gerade beim Einsortieren von Mailinglisten<br />

spielt Sieve seine Stärken aus. Während<br />

viele Mailclients und insbesondere<br />

Webmail-Systeme nur anhand des Betreffs<br />

oder Empfängers filtern, ermöglicht<br />

Sieve eine saubere Erkennung von Mailinglisten<br />

über die Kopfzeilen List-ID oder<br />

List-Post, wie sie beispielsweise standardmäßig<br />

von Mailman hinzugefügt werden.<br />

So lässt sich zuverlässig erkennen, ob<br />

eine Nachricht wirklich über die Liste<br />

verschickt wurde oder der Empfänger sie<br />

direkt erhalten hat. Zwei Beispiele dazu<br />

zeigt Listing 4.<br />

Die erste Regel sorgt dafür, dass Mails<br />

der deutschsprachigen LibreOffice-<br />

Announcement-Liste in einen Ordner<br />

unterhalb der Inbox verschoben werden,<br />

wogegen die zweite Regel sich der Mails<br />

für die Listenmoderatoren annimmt. Ordner<br />

und Unterordner werden dabei IMAPtypisch<br />

durch einen Punkt getrennt.<br />

Hier wird auch der Unterschied zwischen<br />

den Suchmodi »:contains« und »:matches»<br />

klar. Während bei Ersterem der angegebene<br />

Text lediglich irgendwo in der jeweiaktiven<br />

Urlaubsbenachrichtigungen existiert<br />

auch noch ».dovecot.lda-dupes«, die<br />

über alle verschickten Auto-Replies Buch<br />

führt.<br />

Einen ersten Überblick über den Dateiaufbau<br />

liefert das folgende einfache Beispiel<br />

in Listing 2.<br />

Zunächst werden alle benötigten Erweiterungen<br />

geladen: in diesem Fall »fileinto«,<br />

was für das Verschieben von Nachrichten<br />

in andere Ordner verantwortlich zeichnet.<br />

Im zweiten Teil folgen die einzelnen<br />

Regeln, die Sieve nacheinander abarbeitet,<br />

wobei eine Raute Kommentarzeilen<br />

einleitet. In oben stehendem Beispiel<br />

werden Nachrichten, in deren Kopfzeile<br />

»X-Spam-Flag« das Wort »YES« enthalten<br />

ist, in den Junk-Ordner verschoben, was<br />

sich beispielsweise zum automatischen<br />

Verschieben von durch Spamassassin erkannten<br />

Werbenachrichten eignet. Um<br />

diese Regel zu testen, genügt eine E-Mail<br />

Listing 2: sieve-beispiel<br />

01 # ‐‐ Laden der Plugins ‐<br />

02<br />

03 # zum Verschieben von Nachrichten in andere Ordner<br />

04 require "fileinto";<br />

05<br />

06 # ‐‐ Filterregeln ‐<br />

07<br />

08 if header :contains "X‐Spam‐Flag" "YES" {<br />

09 fileinto "Junk";<br />

10 }<br />

Listing 3: bedingungen und Aktionen<br />

01 require ["fileinto", "imap4flags"];<br />

02 if anyof (header :contains "X‐Spam‐Flag" "YES",<br />

03 header :contains "Subject" "",<br />

04 header :contains "Subject" "[SPAM]") {<br />

05 setflag "\\Seen";<br />

06 fileinto "Junk";<br />

07 stop;<br />

08 }<br />

Listing 4: Listenmails filtern<br />

01 require "fileinto";<br />

02 if header :matches "List‐Id" "" {<br />

03 fileinto "INBOX.announce@de‐libo";<br />

04 stop;<br />

05 }<br />

06 if allof (header :matches "From" "*+owner@*",<br />

07 header :matches "Subject" "Moderation<br />

für*gebraucht") {<br />

08 fileinto "INBOX.Moderation";<br />

09 stop;<br />

10 }<br />

Abbildung 1: Sieve verschickt auf Wunsch auch Urlaubsbenachrichtigungen.<br />

mit dem sogenannten GTUBE-Muster2.<br />

In der Datei »/var/log/mail.log« wird<br />

sogleich der erfolgreiche Filtervorgang<br />

angezeigt:<br />

Aug 2 10:15:51 mail dovecot: deliverU<br />

(sieve): sieve: msgid=: stored mail into mailbox 'U<br />

Junk'<br />

In der Sieve-Sprache wird also zunächst<br />

die Bedingung genannt, der dann die<br />

durchzuführende Aktion folgt. Sowohl<br />

Bedingungen als auch Aktionen lassen<br />

sich kombinieren, wie das Beispiel in<br />

Listing 3 zeigt.<br />

Zunächst werden innerhalb von runden<br />

Klammern drei Bedingungen festgelegt,<br />

die durch die Option »anyof« jeweils<br />

einzeln gültig sind. Anders ausgedrückt:<br />

Kommt auch nur eine der drei Kopfzeilen<br />

mit entsprechendem Inhalt vor, greift<br />

die Regel bereits. Die damit verbundenen<br />

Aktionen stehen darunter innerhalb<br />

geschweifter Klammern. Im obenstehenden<br />

Beispiel würden als Spam erkannte<br />

Nachrichten wieder in den Junk-Ordner<br />

verschoben, aber zudem als bereits gelesen<br />

gekennzeichnet werden. Den dazu<br />

nötigen Befehl »setflag« stellt die oben<br />

in der Datei geladene imap4flags-Erweiterung<br />

bereit.<br />

Nützlich ist auch der abschließende Stop-<br />

Befehl, denn er besagt, dass – sofern<br />

die entsprechende Regel greift – keine<br />

weitere Aktion mehr für diese Nachricht<br />

abgearbeitet wird. Das ist unter anderem<br />

dann hilfreich, wenn Nachrichten von<br />

Mailinglisten oder Newslettern gekennzeichnet<br />

werden und für diese keine Urlaubsbenachrichtigung<br />

(siehe weiter unten)<br />

verschickt werden soll.<br />

Sauber sortiert<br />

116 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


sieve<br />

bAsics<br />

ligen Kopfzeile vorkommen muss, lässt<br />

sich mit Letzterem die Suche noch verfeinern,<br />

denn damit muss der Text exakt so<br />

vorkommen, wie er genannt wird, wobei<br />

der Stern als Platzhalter dient. Ebenfalls<br />

neu im Beispiel ist die Option »allof«, die<br />

dafür sorgt, dass nicht nur mindestens<br />

eine der Bedingungen zutreffen muss,<br />

sondern alle – konkret müssen sowohl<br />

der Absender als auch der Betreff stimmen,<br />

damit die Regel greift. Suchtexte<br />

mit Anführungszeichen werden bei Sieve<br />

durch einen Backslash gekennzeichnet,<br />

wie in Listing 5 deutlich wird.<br />

Die Aufgabe dieses Filters besteht übrigens<br />

darin, von älteren Symbian-Geräten<br />

verschickte Mails in den Gesendet-Ordner<br />

zu kopieren. Viele dieser Geräte beherrschen<br />

nur die Funktion, eine Kopie an<br />

sich selbst zu versenden. Daher fragt der<br />

Filter zunächst Absender und Mailclient<br />

ab und verschiebt dann die Mails.<br />

Ab in den Urlaub<br />

Bei Veröffentlichung dieses Artikels<br />

dürfte die Urlaubszeit für die meisten<br />

zwar schon vorbei sein, aber der nächste<br />

Urlaub kommt bestimmt – und Sieve hilft<br />

dabei. Über den Sinn und Unsinn von Urlaubsbenachrichtigungen<br />

mag man sich<br />

streiten, in manchen Bereichen sind sie<br />

jedoch nicht mehr wegzudenken. Häufig<br />

greifen Nutzer dafür auf waghalsige<br />

Skripts zurück, die mehr Schaden anrichten<br />

als sie nutzen. Die große Herausforderung<br />

dabei ist, nur auf persönliche<br />

Mails zu antworten – Autoresponder, die<br />

auf Newsletter oder Mailinglisten antworten<br />

sind mehr als lästig.<br />

Wirklich zum Problem werden automatische<br />

Antworten dann, wenn ihr Empfänger<br />

ebenfalls mit einem Auto-Reply<br />

reagiert: Schlecht konfigurierte Mailsysteme<br />

schicken sich dann gegenseitig permanent<br />

Mails zu, die in kürzester Zeit<br />

das ganze System lahmlegen können.<br />

Saubere Implementationen wie Sieve<br />

prüfen daher verschiedenste Kriterien<br />

wie Envelope Sender, Listen-Header und<br />

vieles mehr, bevor sie überhaupt eine<br />

Benachrichtigung verschicken.<br />

Zudem führen sie eine Liste jeder verschickten<br />

Benachrichtigung und sorgen<br />

dafür, dass Empfänger nur einmal innerhalb<br />

eines bestimmten Zeitraums angeschrieben<br />

werden und nicht bei jeder<br />

neuen Nachricht noch einmal. Sinnvoll<br />

ist es, in der Filterdatei zunächst alle<br />

Mailinglisten, Newsletter und andere automatisierte<br />

E-Mails zu verschieben und<br />

mit dem oben erwähnten Stop-Befehl die<br />

Bearbeitung zu beenden. Nur Nachrichten,<br />

auf die keiner dieser Filter passt,<br />

werden dann automatisch beantwortet.<br />

Die Implementation der Urlaubsbenachrichtigung<br />

ist in wenigen Zeilen erledigt,<br />

wie Listing 6 zeigt.<br />

Zunächst wird wieder das benötigte Modul<br />

geladen, in diesem Fall »vacation«.<br />

Mittels »days« wird angegeben, wie oft<br />

eine Benachrichtigung verschickt wird,<br />

im Beispiel alle 14 Tage. Wichtig ist auch<br />

die Angabe der Empfängeradressen, denn<br />

Sieve verschickt nur dann eine Nachricht,<br />

wenn eine dieser Adressen im An- oder<br />

Cc-Feld genannt ist (Abbildung 1). Lediglich<br />

die Angabe des Betreffs ist optional.<br />

Sieve kann noch viel mehr<br />

Neben den vorgestellten Funktionen beherrscht<br />

Sieve noch einiges mehr, das<br />

jedoch den Rahmen dieser Einführung<br />

sprengen würde. Wer die Grundlagen der<br />

Sprache versteht, der kann sich mithilfe<br />

von zahlreichen im Netz verfügbaren Beispielskripts<br />

[3] und Tutorials [4] schnell<br />

umfangreiche Filterregeln erstellen. Um<br />

nicht alle Skripts lokal testen zu müssen,<br />

bietet sich die Nutzung eines Web-<br />

Validators [5] an. Hilfreich ist es auch,<br />

die zum jeweiligen IMAP-Server gehörige<br />

Dokumentation für produktspezifische<br />

Hinweise zu lesen.<br />

Eine Frage bleibt zum Schluss noch offen:<br />

Wie finden die Skripte ihren Weg<br />

auf den Server? Während auf kleineren<br />

Installationen die Anwender entweder<br />

per FTP (unsicher!), WebDAV oder gar<br />

SSH auf ihr Homeverzeichnis zugreifen,<br />

bietet sich für größere Netzwerke<br />

die Nutzung des Manage-Sieve-Dienstes<br />

[6] an. Er ermöglicht Mailclients und<br />

Webmail-Systemen, die Filter auch ohne<br />

direkten Systemzugang über ein eigenes<br />

Protokoll einzuspielen. (ofr)<br />

n<br />

Infos<br />

[1] Dovecot Sieve plugin:<br />

[http://wiki. dovecot.org/LDA/Sieve]<br />

[2] Generic Test for Unsolicited Bulk Email:<br />

[http://spamassassin.apache.org/gtube/]<br />

[3] Sieve-Beispiele: [http://de.wikipedia.org/<br />

wiki/Sieve# Beispiel]<br />

[4] Sieve-Tutorial: [http://www.tty1.net/blog/<br />

2011-07-16-sieve-tutorial_en.html]<br />

[5] Liebsieve-PHP: [http://libsieve-php.<br />

sourceforge. net]<br />

[6] Manage Sieve: [http://wiki.dovecot.org/<br />

ManageSieve]<br />

Der Autor<br />

Florian Effenberger engagiert sich seit vielen<br />

Jahren ehrenamtlich für freie Software. Er ist<br />

Gründungsmitglied und Mitglied des Steering<br />

Committee der Document Foundation. Zuvor<br />

war er fast sieben Jahre im Projekt OpenOffice.<br />

org aktiv, zuletzt als Marketing Project Lead.<br />

Zudem schreibt er regelmäßig für zahlreiche<br />

deutsch- und englischsprachige Fachpublikationen.<br />

Kontakt und weitere Informationen unter<br />

[floeff@documentfoundation.org]<br />

Listing 5: suche<br />

01 require ["fileinto", "imap4flags"];<br />

02 if allof (header :matches "From" "\"Florian<br />

Effenberger\" ",<br />

03 header :matches "X‐Mailer" "EPOC Email<br />

Version 2.10") {<br />

04 setflag "\\Seen";<br />

05 fileinto "Sent";<br />

06 stop;<br />

07 }<br />

Listing 6: im urlaub<br />

01 require "vacation";<br />

02 vacation<br />

03 :days 14<br />

04 # bei mehreren Adressen in der Form ["adresse1",<br />

"adresse2", "adresse3"]<br />

05 :addresses "floeff@meinefirma.tld"<br />

06 :subject "Out of office / Zurzeit nicht anwesend"<br />

07 "This is an automatically generated message.<br />

08 Dies ist eine automatisch erstellte Nachricht.<br />

09<br />

10 I am out of the office until September 5th, 2011.<br />

Your e‐mail will not be<br />

11 forwarded, but replied to after my return. In case of<br />

an emergency,<br />

12 please call our headquarters. This message will only<br />

be sent out once.<br />

13<br />

14 Ich bin bis einschließlich 5. September 2011 nicht im<br />

Büro. Ihre Nachricht<br />

15 wird nicht weitergeleitet, sondern nach meiner<br />

Rückkehr beantwortet. Im<br />

16 Notfall rufen Sie bitte unsere Firmenzentrale an.<br />

Diese Nachricht wird<br />

17 nur einmalig versendet.";<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

117


AsiCs<br />

solaris zones<br />

Erste Schritte mit Open Solaris und Zones<br />

Containerfracht<br />

© Ulrich Müller; 123RF<br />

mit Open solaris zones hat der Admin eine leistungsstarke und dabei einfach zu administrierende Virtualisierungslösung<br />

an der Hand, die kaum <strong>Performance</strong>einbußen zur Folge hat und sehr viele Container nebeneinander<br />

verkraftet. dieser Artikel assistiert bei den ersten schritten. Ken Hess<br />

Open Solaris ist wie Linux ein ambitioniertes<br />

Betriebssystem-Projekt, das eine<br />

Plattform bereitstellt, auf der sich Applikationen<br />

entwickeln und ausführen lassen.<br />

Ursprünglich von Sun Microsystems<br />

ins Leben gerufen und nun zu Oracle<br />

gehörig, läuft Open Solaris auf einem<br />

breiten Spektrum von PC-Hardware [1].<br />

Eines der beeindruckendsten Features ist<br />

die eingebaute Virtualisierungslösung<br />

Solaris Zones.<br />

Virtualisierungsexperten messen die Effizienz<br />

als Funktion der <strong>Performance</strong> und<br />

der Anzahl möglicher virtueller Maschinen<br />

pro Host. In beiden Disziplinen ist<br />

Solaris Zones ungeschlagen: Die Perfor-<br />

Listing 1: Create a zone named web1<br />

01 root@opensolaris:~# zonecfg ‐z web1<br />

02<br />

03 web1: No such zone configured<br />

04 Use 'create' to begin configuring a new zone.<br />

05 zonecfg:web1> create<br />

06 zonecfg:web1> set zonepath=/zones/web1<br />

07 zonecfg:web1> set autoboot=true<br />

08 zonecfg:web1> add net<br />

09 zonecfg:web1:net> set address=192.168.1.40/24<br />

10 zonecfg:web1:net> set physical=e1000g1<br />

11 zonecfg:web1:net> set defrouter=192.168.1.254<br />

mance der Zonen ist nativ und es können<br />

Hunderte Instanzen auf einem Host<br />

nebeneinander existieren.<br />

Die Zonen, oft auch Container genannt,<br />

sind eine erweiterte Abart der Chroot-<br />

Jails. Wie Jails bieten sie eine sichere<br />

und isolierte Umgebung, aus der heraus<br />

Prozesse, Applikationen und Services gestartet<br />

werden können. Alle Zonen eines<br />

Solaris-Systems beziehen sich auf einen<br />

gemeinsamen Kernel. Obwohl sich verschiedene<br />

Linux-Distributionen in einer<br />

Open-Solaris-Zone installieren lassen<br />

(Red Hat und CentOS), ist es empfehlenswert,<br />

stattdessen bei Open Solaris für<br />

alle Zonen zu bleiben.<br />

12 zonecfg:web1:net> end<br />

13 zonecfg:web1> add attr<br />

14 zonecfg:web1:attr> set name=comment<br />

15 zonecfg:web1:attr> set type=string<br />

16 zonecfg:web1:attr> set value="Apache Web Server<br />

1"<br />

17 zonecfg:web1:attr> end<br />

18 zonecfg:web1> verify<br />

19 zonecfg:web1> commit<br />

20 zonecfg:web1> exit<br />

Wer sich mit einer Zone über ihre IP-<br />

Adresse oder einen Hostnamen verbinden<br />

will, dem erscheinen die Zonen wie<br />

alleinstehende Rechner. Der gelegentliche<br />

Nutzer wird zwischen einer Zone,<br />

einem voll virtualisierten und einem physischen<br />

Rechner keinerlei Unterschiede<br />

bemerken. Jede Zone kann ihren eigenen<br />

Administrator, ihre eigenen User und<br />

Passworte haben.<br />

Voraussetzungen<br />

Für praktische Experimente mit Solaris<br />

Zones müssen ein paar Voraussetzungen<br />

erfüllt sein. Zunächst ist die aktuellste<br />

Open-Solaris-Version nötig, installiert auf<br />

einem PC. Hardware, die sich für Linux<br />

eignet, sollte auch für Solaris passen.<br />

Viele Zonen-Hosts verfügen über 2 GByte<br />

RAM, was für einen effizienten Betrieb<br />

auch mit vielen Zonen reicht: Weil es nicht<br />

um vollvirtualisierte Maschinen geht,<br />

ist nicht so viel RAM nötig. Jede Zone<br />

braucht zudem ausreichend Plattenplatz,<br />

wobei sie die gesamte freie Diskkapazität<br />

des Host als nutzbar ansieht. Zeitgemäße<br />

118 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


solaris zones<br />

bAsiCs<br />

Dual-Core- und Quad-Core-Prozessoren<br />

haben keine Schwierigkeiten mit Solaris<br />

Zones, besondere Anforderungen gibt es<br />

nicht – es sei denn, man möchte Linux in<br />

den Zonen laufen lassen. Dann braucht<br />

man Intel-Prozessoren.<br />

Die letzte Voraussetzung ist ZFS, das leistungsstarke,<br />

sich selbst verwaltende Filesystem<br />

von Open Solaris. Open Solaris an<br />

sich kommt auch mit UFS klar, aber die<br />

Zonen benötigen ZFS.<br />

Zonen auf der<br />

Kommandozeile<br />

Zwei einfache Informationen über Open<br />

Solaris Zones können einem Frustration<br />

und stundenlanges Googlen ersparen.<br />

Erstens: Man muss für Zonen ZFS verwenden<br />

[2]. Zweitens: Das Verzeichnis,<br />

das die Zonen beherbergen soll, muss<br />

zuerst existieren.<br />

Im folgenden Beispiel benutzen wir<br />

der Einfachheit halber den Hostnamen<br />

»opensolaris«. Alle Kommandos für das<br />

Zonenmanagement erfordern Rootrechte.<br />

Von diesem Punkt an unterstellt der Text,<br />

dass der Beispielnutzer als Root angemeldet<br />

ist, es sei denn, es wird ausdrücklich<br />

etwas anderes gesagt.<br />

Zuerst soll eine Zone angelegt werden.<br />

Das übergeordnete Verzeichnis kann<br />

zwar beliebig heißen, aber das Beispiel<br />

verwendet den Namen »zones«.<br />

root@opensolaris:~# mkdir /zones<br />

Eine neue Zone einzurichten, ist einfach.<br />

Open Solaris benötigt dafür nur wenige<br />

Informationen: Einen Namen, den Pfad<br />

zum Homedirectory der Zonen und ein<br />

Netzwerk-Setup (IP-Adresse, physisches<br />

Interface und Default Rooter). Zwar lassen<br />

sich noch viele weitere Parameter<br />

angeben, doch sind sie in den meisten<br />

Fällen nicht notwendig. Das Beispiel<br />

(Lis ting 1) gibt noch eine Beschreibung<br />

an, aber die ist optional.<br />

Im nächsten Schritt wird die Zone installiert.<br />

Dabei erzeugt die Software an-<br />

Listing 2: installation einer zone<br />

01 # zoneadm ‐z web1 install<br />

02<br />

03 A ZFS file system has been created<br />

for this zone.<br />

04 Publisher: Using opensolaris.<br />

org (http://pkg.opensolaris.org/<br />

release/).<br />

05 Image: Preparing at /zones/<br />

web1/root.<br />

06 Cache: Using /var/pkg/<br />

download.<br />

07 Sanity Check: Looking for 'entire'<br />

incorporation.<br />

08 Installing: Core System (output<br />

follows)<br />

09 DOWNLOAD<br />

PKGS FILES XFER (MB)<br />

10 Completed<br />

20/20 3021/3021 42.55/42.55<br />

11<br />

12 PHASE<br />

ACTIONS<br />

13 Install Phase<br />

5747/5747<br />

14 Installing: Additional Packages<br />

hand des Konfigurationsfiles »/etc/<br />

zones/web1.xml« die Standardverzeichnisse,<br />

legt Links an, kopiert Dateien in<br />

das Verzeichnis der Zone und erzeugt<br />

das Systemlayout (Listings 2 und 3).<br />

Die Installation legt auch das gesicherte<br />

Zonenverzeichnis »/zones/web1« an und<br />

setzt die passenden Rechte (»root:root<br />

drwx------«).<br />

Danach ist die Zone »web1« fertig und<br />

man kann sich vom Hostsystem oder einem<br />

anderen Rechner aus via SSH in<br />

(output follows)<br />

15 DOWNLOAD<br />

PKGS FILES XFER (MB)<br />

16 Completed<br />

37/37 5598/5598 32.52/32.52<br />

17<br />

18 PHASE<br />

ACTIONS<br />

19 Install Phase<br />

7329/7329<br />

20<br />

21 Note: Man pages can be<br />

obtained by installing SUNWman<br />

22 Postinstall: Copying SMF seed<br />

repository ... done.<br />

23 Postinstall: Applying workarounds.<br />

24 Done: Installation<br />

completed in 411.387 seconds.<br />

25<br />

26 Next Steps: Boot the zone, then<br />

log into the zone console<br />

27 (zlogin ‐C) to<br />

complete the configuration process<br />

28<br />

29 # zoneadm ‐z web1 boot<br />

Listing 3: interaktive Konfigurationssession<br />

01 # zlogin ‐C web1<br />

19<br />

02 [Connected to zone 'web1' console]<br />

20 Host name for e1000g1:1: web1<br />

69/69<br />

21<br />

03 Reading ZFS config: done.<br />

04 Mounting ZFS filesystems: (6/6)<br />

05<br />

06 What type of terminal are you using?<br />

07 1) ANSI Standard CRT<br />

08 2) DEC VT100<br />

09 3) PC Console<br />

10 4) Sun Command Tool<br />

11 5) Sun Workstation<br />

12 6) X Terminal Emulator (xterms)<br />

13 7) Other<br />

14 Type the number of your choice and press Return: 2<br />

15<br />

16 Creating new rsa public/private host key pair<br />

22 Configure Kerberos Security: No<br />

23<br />

24 Name service: DNS<br />

25<br />

26 Domain name: blah.com<br />

27<br />

28 Server's IP Address: 192.168.1.254<br />

29<br />

30 Use NFSv4: Yes<br />

31<br />

32 Continents and Oceans: Americas<br />

33<br />

34 Location: US<br />

35<br />

36 Time zones: Central<br />

17 Creating new dsa public/private host key pair<br />

37<br />

18 Configuring network interface addresses: e1000g1.<br />

38 Root password: xxxxxxxx<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

119


AsiCs<br />

solaris zones<br />

zum Beispiel alle konfigurierten Zonen<br />

sehen, unabhängig davon, ob sie laufen<br />

oder nicht, braucht es den Switch »-c«:<br />

$ zoneadm list ‐c<br />

global<br />

web1<br />

web2<br />

web3<br />

Abbildung 1: Die Zonenliste von Open Solaris im Webmin-Interface.<br />

sie einloggen. Sollte das scheitern, gilt<br />

es entweder, Root-Logins für die Zone<br />

zu ermöglichen oder in ihr andere User-<br />

Accounts anzulegen. Aber wie soll das<br />

gehen, wenn man sich nicht als Root<br />

einloggen kann? Die Lösung heißt Zone<br />

Login.<br />

Zonen-Login<br />

Drei auf Zonen bezogene Kommandos<br />

sollten jedem Admin vertraut sein. Das<br />

erste, »zlogin«, erlaubt ein Root-Login in<br />

jeder Zone ohne Passwort.<br />

# zlogin web1<br />

root:@web1:~#<br />

Hat man sich auf diese Weise in die Zone<br />

web1 eingeloggt, lässt sich dort ein User-<br />

Account erstellen, über den dann ein SSH-<br />

Login möglich ist. Via »zlogin« kann man<br />

sich mithilfe des Switches »>-l« auch als<br />

beliebiger User einloggen.<br />

ration nachträglich zu ändern. Zonecfg<br />

ist interaktiv. Die Listings 4 und 5 zeigen,<br />

wie sich Parameter ändern und Teile<br />

der Konfiguration ergänzen oder löschen<br />

lassen.<br />

Zonen-Administration<br />

Sobald man eine Zone kreiert hat, kann<br />

man sie mit dem Kommando »zoneadm«<br />

administrieren, das heißt booten, rebooten,<br />

auflisten, überprüfen, deinstallieren,<br />

klonen, verschieben, fertigstellen<br />

oder zuweisen. Außer dem Auflisten erfordern<br />

alle anderen Operationen Root-<br />

Privilegien.<br />

$ zoneadm list<br />

global<br />

web1<br />

web2<br />

Per Default zeigt das Kommando so nur<br />

laufende Zonen an. Will man dagegen<br />

Eine erweiterte Ausgabe produzieren die<br />

Schalter »-c« und »-v« (für verbose) im<br />

Verbund (Listing 6).<br />

Die Zone web3 ist hier installiert, sie läuft<br />

aber nicht. Um sie zu starten, genügt das<br />

Kommando:<br />

# zoneadm ‐z web3 boot<br />

Das Gegenteil würde<br />

# zoneadm ‐z web3 halt<br />

bewirken. Das Kommando »halt« versetzt<br />

die Zone in den Zustand »installiert« und<br />

schaltet sie ab. Der zu bevorzugende<br />

Weg, um eine Zone herunterzufahren,<br />

ist aber<br />

# zlogin web3 shutdown<br />

Manchmal ist es notwendig, eine Zone<br />

aus Platzmangel, wegen Wartungsarbeiten<br />

oder nach einem Systenabsturz zu<br />

verlagern. Das geht so:<br />

# zoneadm ‐z web3 halt<br />

# zoneadm ‐z web3 move /zones2/web3<br />

# zoneadm ‐z web3 boot<br />

zlogin ‐l khess web1<br />

khess@web1:~$<br />

Zlogin kann schließlich auch Kommandos<br />

innerhalb einer Zone ausführen,<br />

ohne dass man sich dafür in einer Shell<br />

einloggen muss. Das ist besonders für<br />

Scripts praktisch:<br />

zlogin web1 uname ‐a<br />

SunOS web1 5.11 snv_111b i86pc i386<br />

Zonen-Konfiguration<br />

Das Kommando »zonecfg« erzeugt eine<br />

Zone, erlaubt es aber auch, ihre Konfigu-<br />

Listing 4: Ändern der iP-Adresse<br />

01 # zonecfg ‐z web1<br />

02 zonecfg:web1> select net address=192.168.1.40/24<br />

03 zonecfg:web1:net> set net address=192.168.1.50/24<br />

04 zonecfg:web1:net> end; verify; commit; exit<br />

Listing 5: interaktive Konfiguration<br />

01 # zonecfg ‐z web1<br />

02 zonecfg:web1> remove net address=192.168.1.50/24<br />

03 zonecfg:web1:net> end; verify; commit; exit<br />

04<br />

05 # zonecfg ‐z web1<br />

06 zonecfg:web1> add net<br />

07 zonecfg:web1:net> set address=192.168.1.30/24<br />

08 zonecfg:web1:net> set physical=e1000g1<br />

09 zonecfg:web1:net> set defrouter=192.168.1.254<br />

10 zonecfg:web1:net> end; verify; commit; exit<br />

Listing 6: zonenliste<br />

01 $ zoneadm list ‐cv<br />

02 ID NAME STATUS PATH BRAND IP<br />

03 0 global running / native<br />

shared<br />

04 1 web1 running /zones/web1 ipkg<br />

shared<br />

05 2 web2 running /zones/web2 ipkg<br />

shared<br />

06 ‐ web3 installed /zones/web3 ipkg<br />

shared<br />

120 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Abbildung 2: Die Webmin-Seite für die grundlegende Konfiguration einer Zone.<br />

Wer die Konfigurationsarbeiten auf der<br />

Kommandozeile scheut, für den ist vielleicht<br />

Webmin ein Ausweg, das es auch<br />

für Open Solaris gibt. Das Tool enthält<br />

auch ein Zonen-Modul, das man in der<br />

Webmin Systemgruppe findet. Wählt<br />

man es aus, landet man auf einer Seite<br />

mit einer Zonenliste. Konfigurieren muss<br />

man dafür nichts.<br />

Webmin<br />

Die Seite mit der Zonenliste ermöglicht<br />

es, Zonen anzulegen, herunterzufahren,<br />

zu booten oder zu deinstallieren (Abbildung<br />

1).<br />

Klickt man auf den »Add zone«-Link, landet<br />

man auf der Konfigurationsseite (Abbildung<br />

2), wo die wichtigsten Attribute<br />

der Zone wie Name, Zonenverzeichnis,<br />

IP-Adresse oder Netzwerk-Interface einzugeben<br />

sind.<br />

Ist alles eingetragen, klickt der Konfigurator<br />

auf den Button »Create Now«, um<br />

den Installationsprozess anzustoßen. Die<br />

so erzeugte und installierte Zone kann<br />

danach interaktiv weiter mit »zlogin -C<br />

web3« konfiguriert werden. Webmin<br />

hält ein reichhaltiges Interface bereit,<br />

das manchem vielleicht eher liegt als die<br />

Arbeit auf der Kommandozeile. Wo man<br />

allerdings das Erzeugen einer Zone automatisieren<br />

will, ist man auf die Kommandozeilenversion<br />

angewiesen.<br />

Fazit<br />

Wer die hier vorgestellten grundlegenden<br />

Handgriffe zum Einrichten einer Zone<br />

einmal ohne großen Aufwand ausprobieren<br />

möchte, der kann sich leicht Open<br />

Solaris in einer virtuellen Maschine installieren.<br />

Am besten eignet sich dafür<br />

Oracles Virtual Box mit einer virtuellen<br />

Platte von wenigstens 20 GByte. Zonen<br />

können auch auf einer separaten virtuellen<br />

Disk angelegt werden, die aber ebenfalls<br />

mit ZFS eingerichtet sein muss.<br />

Open Solaris ist ein weiteres freies Betriebssystem<br />

neben Linux. Mit ihm gesammelte<br />

Erfahrungen lassen sich auch<br />

leicht auf Oracles Solaris auf der Sparc-<br />

Plattform übertragen. (jcb)<br />

n<br />

Infos<br />

[1] Open Solaris: [http://www.opensolaris.org]<br />

[2] ZFS-Dateisystem:<br />

[http://www. sun. com/bigadmin/topics/zfs]<br />

[3] Webmin: [http://www.webmin.com]<br />

www.A dmin-mAgA zin.de


TesT<br />

scalr<br />

Die Cloud-Computing-Plattformen Scalr und Rightscale<br />

Auf dem Bauernhof<br />

BamRob, photocase.com<br />

in der Theorie funktioniert in der Cloud alles von selbst. in der Praxis skalieren Anwendungen aber nicht so ohne<br />

weiteres. dienste wie scalr und Rightscale wollen dabei helfen. dan Frost<br />

Als die neue Mode des Cloud Computing<br />

auf einmal in aller Munde war, probierten<br />

die meisten die neue Technologie auf<br />

Amazons EC2 aus. Dabei war es nicht<br />

schwer, mehr Speicherplatz zu bekommen<br />

oder auch einmal eine neue Instanz<br />

hinzuzubuchen, um ein neues Feature<br />

auszuprobieren. Automatisch skalieren<br />

ließen sich die eigenen Anwendungen<br />

damit aber nicht.<br />

Dabei besteht der Witz des Cloud Computing<br />

gerade darin, dass sich Anwendungen<br />

quasi selbstständig und automatisch<br />

skalieren. Die erste Generation von<br />

Cloud-Diensten stellte aber eher einzelne<br />

Server-Instanzen zur Verfügung, deren<br />

Management noch einmal einen extra<br />

Aufwand bedeutete.<br />

Automatik-Cloud<br />

Cloud-Ressourcen hinzu oder ziehen sie<br />

wieder ab, wenn sie gerade nicht mehr<br />

gebraucht werden.<br />

Scalr überwacht die einzelnen Server und<br />

ersetzt ausgefallene Knoten selbstständig.<br />

Um Datenverlust zu verhindern, legt<br />

es selbstständig Backups im Amazon-Storage<br />

EBS an. Schließlich hilft Scalr auch<br />

Kosten sparen, indem es bei geringer<br />

Auslastung nicht gebrauchte Server abschaltet.<br />

Mit anderen Worten: Scalr stellt<br />

Anwendern ein einheitliches virtuelles<br />

System zur Verfügung, im Scalr-Jargon<br />

auch Farm genannt.<br />

Damit lassen sich selbst geschriebene<br />

Skripte ersetzen, die häufig eher schlecht<br />

als recht diese Aufgabe übernehmen. Anwender<br />

können sich also auf ihren eigenen<br />

Code konzentrieren statt auf das Management<br />

der Cloud. Dabei skaliert Scalr<br />

nicht nur den Webserver, sondern auch<br />

die Datenbank, was nach Meinung des<br />

Herstellers der am schwierigsten zu skalierende<br />

Teil einer Webanwendung ist.<br />

Software wie Scalr [1] und Rightscale<br />

[2] verschaffen in dieser Hinsicht mehr<br />

Komfort. Anders als die Low-Level-APIs<br />

und -Tools von Amazon, Rackspace und<br />

anderen ermöglichen Scalr und Rightscale<br />

das Management einer Cloud als<br />

Einheit, ohne sich um die einzelnen Elemente<br />

kümmern zu müssen. Je nach den<br />

aktuellen Anforderungen, fügen sie dabei<br />

Abbildung 1: Über Rollen lassen sich einzelnen Farmen spezifische Funktionen zuweisen.<br />

122 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


scalr<br />

TesT<br />

Scalr ist eine Open-Source-Anwendung<br />

[3], aber auch als Service erhältlich.<br />

Wenn Sie Scalr ausprobieren möchten,<br />

sollten Sie sich einen Entwickler-Account<br />

besorgen [4].<br />

Gehöft<br />

Mit einem Account ausgestattet, kann<br />

es losgehen. Zuerst legen Sie über den<br />

Menüpunkt »Server Farms« im Webinterface<br />

eine neue Farm an. Wählen Sie einen<br />

Speicherort in der Amazon-Cloud EC2<br />

und drücken Sie auf »Next«. Scalr erlaubt<br />

es, vordefinierte Rollen auszuwählen, die<br />

bestimmten Einsatzzwecken der jeweiligen<br />

Cloud entsprechen. Sie stehen auf<br />

der folgenden Seite zur Verfügung (Abbildung<br />

1). Nach dem Speichern lässt sich<br />

die Cloud einfach starten. Denken Sie dabei<br />

daran, dass Amazon den Betrieb jeder<br />

Instanz in Rechnung stellt, auch wenn sie<br />

nur ein paar Minuten läuft!<br />

Eine Scalr-Instanz sieht aus wie ein Server,<br />

verhält sich wie ein Server, ist aber<br />

eben kein Server. Die Instanzen sind nur<br />

flüchtig und verbrauchen nur so wenig<br />

Ressourcen wie nötig. Wenn eine Instanz<br />

abstürzt, brauchen Sie sich darum nicht<br />

zu kümmern. Die Idee dahinter ist, eine<br />

virtuelle Maschine von der Stange zu<br />

nehmen, darauf mit eigenen Skripten die<br />

gewünschte Software zu installieren und<br />

sie dann in der Cloud laufen zu lassen.<br />

Ein einfaches Skript legen Sie bei Scalr<br />

mit »Scripts« und dann »Add New« an.<br />

Nennen Sie das Skript beispielsweise<br />

»Tell me your name« und geben Sie den<br />

folgenden Code ein:<br />

#!/bin/bash<br />

echo "I am a %role_name%" | mail U<br />

E‐Mail‐Adresse ‐s "Checking in"<br />

Mit »OK« schließen Sie das Ganze ab.<br />

Ist das Skript gespeichert, wählen Sie im<br />

Skript-Menü »View All« und dann »Execute«<br />

aus dem »Options«-Dropdown auf<br />

der rechten Seite. Auf der Ausführungsseite<br />

klicken Sie auf »Execute«, um das<br />

Skript auf der Farm auszuführen. Einen<br />

Augenblick später sehen Sie die Ausgabe<br />

im Log, und wenn es Probleme damit<br />

gab, die Mails zu verschicken, können<br />

Sie das auch hier nachlesen.<br />

Im nächsten Schritt soll das Skript eine<br />

etwas sinnvollere Aufgabe übernehmen.<br />

Ändern Sie es dazu folgendermaßen ab:<br />

www.A dmin-mAgA zin.de<br />

#!/bin/bash<br />

apt‐get ‐y install apache2<br />

echo "I am a %role_name% and I have apache U<br />

installed now"| mail E‐Mail‐Adresse U<br />

‐s "Installed Apache"<br />

Zurück im Farm-Menü öffnen Sie im Navigationsbaum<br />

»Shared Roles« und dann<br />

»Application Servers«. Wählen Sie dort<br />

»app64« aus. Die dabei angezeigten Reiter<br />

beziehen sich auf diese Rolle. Öffnen<br />

Sie das »Scripting«-Tab und dann den<br />

Eintrag »OnHostUp« (Abbildung 2).<br />

Wenn die Farm schon läuft, starten Sie sie<br />

neu und lassen Sie sich von jeder Instanz<br />

ihre Identität mitteilen. Wie der Name<br />

nahelegt, laufen die unter »OnHostUp«<br />

hinterlegten Aktionen ab, wenn ein Knoten<br />

startet. Wenn Sie beispielsweise dem<br />

Apache-Webserver eine bestimmte Konfiguration<br />

geben wollen, können Sie das<br />

so machen:<br />

cat


TesT<br />

scalr<br />

In diesem Fall hilft bei der dynamischen<br />

Änderung der DNS-Einträge der Dienst<br />

DNS Made Easy [5]. Zu diesem Zweck<br />

gibt es eine Reihe von Alternativen im<br />

Internet. Gewiefte Administratoren können<br />

dynamische Updates auch auf dem<br />

eigenen Server konfigurieren und müssen<br />

dazu unter anderem kryptographische<br />

Schlüssel erzeugen.<br />

Das Start-Skript für die Datenbank sieht<br />

fast genauso aus wie das des Webservers,<br />

enthält aber noch eine zusätzliche Zeile<br />

(Listing 2). Es installiert MySQL, lädt die<br />

SQL-Dateien herunter, installiert sie und<br />

startet den MySQL-Server neu. Schließlich<br />

aktualisiert es den Nameserver-Eintrag,<br />

damit der Webserver sich mit der<br />

Datenbank verbinden kann.<br />

Beruhigend an diesem Aufbau ist, dass<br />

auch dann nichts Gravierendes passiert,<br />

wenn der Datenbank-Master-Server ausfällt.<br />

Selbst wenn er abstürzt, ist die Farm<br />

schlimmstenfalls ein paar Minuten lang<br />

nicht mehr erreichbar.<br />

Skalar<br />

Abbildung 2: Ein Skript für den Systemstart wählen Sie im Menüpunkt »OnHostUp« aus.<br />

wo sie sich einfach herunterladen lässt.<br />

Schreiben Sie dann ein Skript, das etwa<br />

so aussieht wie Listing 1.<br />

Binden Sie beim Booten den Dienst an<br />

die Rolle »app« und starten Sie die Farm<br />

neu. Alternativ zur obigen Methode können<br />

Sie den Website-Code auch sicher<br />

mit Amazons S3-Dienst speichern und<br />

ihn mit »s3cmd« herunterladen:<br />

s3cmd get s3://your‐bucket/your‐code.tgz<br />

Die meisten Anwendungen müssen noch<br />

ein bisschen angepasst werden, bevor sie<br />

einfach aus einem Tar-Archiv ausgepackt<br />

funktionieren. Achten Sie darauf, alle<br />

absoluten Konfigurationsparameter, wie<br />

etwa IP-Adressen, Pfade und so weiter,<br />

durch relative zu ersetzen. Stellen Sie sicher,<br />

dass die Webanwendung von jedem<br />

Ort aus funktioniert, dann wird sie auch<br />

laufen, wenn sich eine Instanz ändert.<br />

Listing 1: webserver-Konfiguration<br />

01 apt‐get ‐y install apache2<br />

02 cd /tmp<br />

03 wget ‐O your‐code.tgz http://www.example.com/<br />

your‐code.tgz<br />

04 cd /var/www/vhosts/<br />

05 tar xzf /tmp/your‐code.tgz<br />

06 service apache2 restart<br />

Listing 2: datenbank-start<br />

01 apt‐get ‐y install mysql‐server<br />

02 #... grab your SQL from somewhere and install it.<br />

03 service mysql restart<br />

04 # Now update the IP address for 'database.cluster.<br />

example.com<br />

05 curl 'http://www.dnsmadeeasy.com/servlet/updateip?<br />

username=myuser&password=mypassword&id=99999999&i<br />

p=123.231.123.231'<br />

Dynamisches DNS ist ein leistungsfähiges<br />

Werkzeug für elastische, selbstheilende<br />

Cloud-Installationen. Weil eine<br />

neue Instanz eine neue IP-Adresse erhält,<br />

kann es leicht zu Problemen beim Datenbankzugriff<br />

kommen. Woher sollen zum<br />

Beispiel replizierte Slaves wissen, wie die<br />

IP-Adresse eines neuen Masters lautet?<br />

Die Lösung besteht darin, dem Master einen<br />

Hostnamen zu geben, beispielsweise<br />

»db.cloud.example.com«, diesem aber im<br />

DNS einen A-Record für die interne IP-<br />

Adresse zuzuweisen. Dann können sich<br />

alle Slaves und Clients mit »db.cloud.<br />

example.com« verbinden. Dynamisches<br />

DNS kommt dann ins Spiel, wenn sich<br />

die IP-Adresse ändert. Wenn eine Instanz<br />

beendet wird und eine neue startet, soll<br />

sich der A-Record ändern. Das lässt sich<br />

mit einer einzigen Zeile bewerkstelligen:<br />

curl 'http://www.dnsmadeeasy.com/servlet/U<br />

updateip?username=myuser&password=mypasswordU<br />

&id=99999999&ip=123.231.123.231'<br />

Scalr lässt den Anwender entscheiden,<br />

wann und wie die eigene Cloud skaliert.<br />

Neben der Möglichkeit, abhängig vom<br />

Load Average neue Knoten zu starten,<br />

bietet Scalr auch an, abhängig von Tageszeit<br />

oder Wochentag sowie der Anzahl<br />

von API-Aufrufen zu skalieren.<br />

Steht die skalierbare Cloud-Konfiguration,<br />

besteht der nächste Schritt darin,<br />

die eigenen Skripte anzupassen. Bei Scalr<br />

und Rightscale lassen sich die gleichen<br />

Skripte auf unterschiedlichen Farmen<br />

einsetzen, man kann sie also auf einer<br />

Testinstallation ausprobieren, bevor man<br />

sie auf die Produktions-Cloud loslässt.<br />

Zum Beispiel könnte man an der Verfeinerung<br />

der Memcached-Konfiguration<br />

arbeiten. Wenn die Cloud-Konfiguration<br />

einmal stabil ist, wäre es ein Leichtes, die<br />

Skripte zwischen Test- und Produktions-<br />

Cloud auszutauschen.<br />

Das Gute daran, eine Cloud mit programmiertechnischen<br />

Mitteln zu managen, ist,<br />

dass man einer typischen Falle entgeht:<br />

Server und Dienste zu installieren und<br />

dann einfach zu hoffen, dass sie funktionieren.<br />

Wer dagegen das Server-Management<br />

programmiert, kann so lange mit<br />

der Konfiguration experimentieren, bis<br />

sie sich wirklich als zuverlässig erweist.<br />

Scalr funktioniert mit dem Cloud-Dienst<br />

von Amazon, arbeitet aber daran, dass<br />

es auch mit Rackspace klappt. Rightscale<br />

ist bereits kompatibel mit Amazon und<br />

Rackspace. (ofr)<br />

n<br />

Infos<br />

[1] Scalr: [http:// scalr.net]<br />

[2] Rightscale: [http://www.rightscale.com]<br />

[3] Scalr-Code:<br />

[http://code. google.com/p/scalr]<br />

[4] Entwickler-Login für Scalr:<br />

[http://development.scalr.net]<br />

[5] DNS Made Easy:<br />

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

124 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


JETZT<br />

MiT dVd!<br />

MAGAZIN<br />

SondErAkTion<br />

Testen Sie jetzt<br />

3 Ausgaben<br />

für 3 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 />

GEwinnEn SiE... EinE Von fünf rEwind Mini hd<br />

kAMErAS iM GESAMTwErT Von fAST 400 Euro!<br />

Einsendeschluss ist der 15.12.2011<br />

zur Verfügung gestellt von<br />

.de


TesT<br />

Office 365 vs. google Apps<br />

Office 365 und Google Apps im Vergleich<br />

Schwerelos<br />

mit Office 365 bietet microsoft seit Kurzem eine Cloud-Lösung für e-mail, Termine und Kontakte sowie echtzeitzusammenarbeit<br />

für das gesamte unternehmen, die mit google Apps konkurriert. björn bürstinghaus<br />

pino, 123RF<br />

Bereits im Frühjahr dieses Jahres konnten<br />

interessierte Unternehmen die Betaversion<br />

von Microsofts neuem Cloud-<br />

Service Office 365 testen und sich einen<br />

ersten Eindruck der verschiedenen Cloud-<br />

Dienste Exchange Online, Sharepoint Online<br />

inklusive der Office Web Apps und<br />

Lync Online verschaffen. Gerade für kleine<br />

Unternehmen stellt Office 365 eine interessante<br />

Alternative dar, da die gesamte<br />

Administration sehr einfach gehalten ist,<br />

und die Cloud-Dienste für den Benutzer<br />

im bekannten Office Look & Feel zur Verfügung<br />

stehen (Abbildung 1).<br />

Office 365<br />

beginnen, die globalen Unternehmenseinstellungen<br />

für die Verwendung der<br />

verschiedenen Cloud-Dienste über die<br />

Administrationsoberfläche einzurichten.<br />

Abhängig von der Größe des Unternehmens<br />

können Sie neue Benutzer manuell<br />

oder per CSV-Datei als Massenimport<br />

zum Beispiel aus einem vorhandenen<br />

Active Directory anlegen, was bei einer<br />

Vielzahl an Benutzern eine Menge Zeit<br />

spart. Nach erfolgreicher Einrichtung eines<br />

Benutzers erhält der Administrator<br />

eine E-Mail mit den Zugangsdaten sowie<br />

einem temporären Passwort, das der<br />

Nutzer bei der Erstanmeldung über das<br />

Webportal ändern muss.<br />

Neben der Benutzerverwaltung lassen<br />

sich über den Administrationsbereich von<br />

Office 365 sämtliche erworbenen Abonnements<br />

verwalten und für neue Nutzer<br />

auch weitere hinzufügen. Bei Schwierigkeiten<br />

mit einem der Cloud-Dienste<br />

sind im Supportbereich der Status sämtlicher<br />

Dienste sowie Informationen zu<br />

geplanten Wartungen einsehbar. Darüber<br />

hinaus ist es möglich, bei Problemen<br />

Die Einrichtung von Office 365 [1] setzt<br />

lediglich eine vorhandene Domain bei<br />

einem Provider Ihrer Wahl voraus. Diese<br />

weisen Sie im ersten Schritt über die webbasierte<br />

Administrationsoberfläche (siehe<br />

Abbildung 2) für die Verwendung mit Office<br />

365 zu. Ist die Legitimierung der hinzugefügten<br />

Domain durch das manuelle<br />

Anlegen eines CNAME-Eintrags beziehungsweise<br />

Hinzufügen eines weiteren<br />

MX-Eintrags überprüft (abhängig von Provider<br />

und DNS-Konfiguration kann dies<br />

bis zu 24 Stunden dauern), können Sie<br />

Abbildung 1: Arbeiten in gewohnter Umgebung: die Outlook Web App von Office 365.<br />

126 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Office 365 vs. google apps<br />

TesT<br />

dung 4) zugewiesen<br />

wird. Auch Google fordert<br />

wie Office 365 dafür<br />

eine Legitimierung<br />

durch das Anlegen eines<br />

DNS-Eintrags.<br />

Im Gegensatz zum Administrationsbereich<br />

von Office 365 bieten<br />

die Google Apps eine<br />

Vielzahl an Einstellungsmöglichkeiten,<br />

was allerdings besonders<br />

zu Anfang sehr<br />

überladen wirkt. Ein<br />

Vorteil von Google ist<br />

der integrierte und<br />

über die letzten Jahre<br />

stark gewachsene<br />

Marktplatz, über den<br />

man Zusatzanwendungen<br />

von Drittanbietern<br />

erwerben kann, um<br />

beispielsweise eine E-<br />

Mail-Archivierung oder<br />

auch eine webbasierte<br />

CRM-Lösung zu integrieren.<br />

Genau wie bei der Verwendung<br />

einer normalen<br />

Google-Mailadresse<br />

können Sie mit Google-<br />

App-Konten die Webeine<br />

direkte Serviceanfrage an das Office<br />

365-Support-Team oder auch eine Frage<br />

innerhalb des geschlossenen Community<br />

Forums zu stellen.<br />

Instant Messaging und Video<br />

Für die Echtzeitzusammenarbeit im Unternehmen<br />

bietet Office 365 mit Lync<br />

Online einen Kommunikationsdienst, der<br />

neben Onlinebesprechungen mit anderen<br />

Mitarbeitern und Kollegen auch die Kommunikation<br />

mit Kontakten außerhalb der<br />

Organisation ermöglicht. So können über<br />

Lync Online Windows-Live-Messenger<br />

Kontakte hinzugefügt und mit diesen<br />

auch Chats, Audio- und Videogespräche<br />

geführt werden. Die Nutzung aller Funktionen<br />

von Lync Online setzt allerdings<br />

den Lync Client (Abbildung 3) voraus,<br />

der zurzeit nur für Windows zur Verfügung<br />

steht. Laut Microsoft sollen bis<br />

Ende dieses Jahres entsprechende mobile<br />

Anwendungen von Lync für verschiedene<br />

Smartphone-Plattformen folgen. Auch in<br />

der Outlook Web App ist Lync integriert,<br />

bietet allerdings nur die Möglichkeit,<br />

Chat-Nachrichten zu schreiben.<br />

Zusammenarbeit im Web<br />

Die in Office 365 enthaltene Teamwebsite<br />

auf Basis von Sharepoint Online ermöglicht<br />

es, Dokumente zentral an einem Ort<br />

abzuspeichern und über die integrierten<br />

Office Web Apps neue Dokumente<br />

oder auch Tabellen in der webbasierten<br />

Version der Office-Anwendungen von jedem<br />

PC aus zu bearbeiten und für die<br />

Zusammenarbeit mit anderen Nutzern<br />

freizugeben. Zusätzlich kann man die<br />

Teamwebsite auch als Homepage für die<br />

eigene Domain so einrichten, dass nicht<br />

angemeldete Besucher eine normale Unternehmenswebsite<br />

sehen. Diese lässt<br />

sich durch den Office-365-Administrator<br />

oder andere Anwender mit entsprechenden<br />

Rechten leicht an das Design des<br />

Unternehmens anpassen.<br />

Google Apps im Überblick<br />

Mit Google Apps für Unternehmen [5]<br />

bietet der Suchmaschinengigant bereits<br />

seit vier Jahren seine Dienste Google<br />

Mail, Kalender, Kontakte, Chat, Sites sowie<br />

Text und Tabellen für die Verwendung<br />

www.admin-magazin.de<br />

Abbildung 2: Erste Schritte mit der webbasierten Administrationsoberfläche von Office 365.<br />

mit einer eigenen Domain an. Genau wie<br />

Office 365 setzt das lediglich eine bereits<br />

vorhandene Domain voraus, die nach der<br />

Registrierung bei Google Apps über das<br />

Administrationsdashboard (siehe Abbil-<br />

oberfläche (siehe Abbildung 5) für das<br />

Senden, Empfangen und Verwalten von<br />

E-Mails sowie Anlegen und Bearbeiten<br />

von Aufgaben und Kontakten verwenden.<br />

Ähnlich wie die Einbindung von<br />

IT_administrator_05_11:SIGS_2_9_Seminar_JS_01_10.qxd 05.08.11 11:37 S<br />

WISSENSVERMITTLUNG aus 1. Hand<br />

■ Secure Coding mit Java EE<br />

Entwicklung einbruchssicherer Webanwendungen unter Java EE<br />

Mirko Richter<br />

26. – 27. September 2011, München,<br />

21. – 22. November 2011, München 1.590,- € zzgl. MwSt.<br />

■ Die ultimative Ethical Hacking-Akademie<br />

Erfolgreiche Abwehr von Hacker-Angriffen und sicherer Schutz Ihres Netzwerks<br />

Klaus Dieter Wolfinger<br />

05. – 07. Oktober 2011, Frankfurt/Main 2.150,- € zzgl. MwSt. inkl. 3 Übernachtungen<br />

■ SAML, WS-Security, XACML & Co.<br />

Sicherheit in einer WebService-Welt<br />

Jörg Bartholdt<br />

10. – 11. Oktober 2011, München 1.590,- € zzgl. MwSt.<br />

■ Flow in der Produktentwicklung<br />

Produktentwicklung planen, durchführen und genießen!<br />

Matthias Bohlen<br />

27. – 28. September 2011, Köln<br />

29. – 30. November 2011, Köln 1.590,- € zzgl. MwSt.<br />

Kontakt: Anja Keß, Lindlaustraße 2c, D-53842 Troisdorf,<br />

Tel.: +49 (0) 22 41 / 23 41-20, Fax: +49 (0) 22 41 / 23 41-199<br />

Email: anja.kess@sigs-datacom.de<br />

WWW.SIGS‐DA TA COM.DE


TesT<br />

Office 365 vs. google Apps<br />

Abbildung 3: Echtzeitkommunikation mit Windows-Live-<br />

Kontakten in Lync.<br />

Lync in die Outlook Web App integriert<br />

die Mail-Weboberfläche die Google-Chat-<br />

Funktion, die auch Audio- und Videogespräche<br />

sowie weltweite Telefonate über<br />

jeden Browser ermöglicht, was bei Lync<br />

nur über den Windows-Client möglich<br />

ist. Doch auch Google Chat bietet einen<br />

Windows-Client und ist auf allen<br />

Android-Geräten bereits installiert und<br />

ermöglicht ab der Android-Version 2.3.4<br />

die Unterstützung für Videotelefonie per<br />

Smartphones und Tablets. Was Google<br />

Mail bislang noch fehlt, ist eine Integration<br />

der Kalenderfunktion, die sich über<br />

eine separate Weboberfläche aufrufen<br />

lässt.<br />

Google Sites ist eine weitere Kernkomponente<br />

in Google Apps. Über die Sites<br />

lassen sich Vorlagen für die Erstellung<br />

von Websites für die Zusammenarbeit an<br />

Projekten oder auch die Erstellung eines<br />

Intranets realisieren, was wie erwähnt<br />

bei Office 365 über Sharepoint Online<br />

möglich ist. So bietet auch Google Apps<br />

die Möglichkeit, Dokumente, Tabellen<br />

oder auch Bilder für alle Nutzer an einem<br />

zentralen Ort bereitzustellen.<br />

Wenn es um die Zusammenarbeit an Dokumenten,<br />

Tabellen und Präsentationen<br />

geht, darf Googles „Text und Tabellen“<br />

nicht unerwähnt bleiben. Unter dem Namen<br />

Google Docs gestartet, bietet Text<br />

und Tabellen eine betriebssystemunabhängige<br />

Lösung für die browserbasierte<br />

Zusammenarbeit in Dokumenten oder<br />

Tabellenkalkulation in Echtzeit. So können<br />

Sie beispielsweise live sehen, wenn<br />

ein anderer Nutzer Änderungen inner-<br />

halb eines Dokuments vornimmt<br />

oder Kommentare anfügt.<br />

Umzug in die Cloud<br />

Für viele Administratoren ist die<br />

Migration vom lokalen Mailserver<br />

in die Cloud ein interessantes<br />

Thema. Wie von Microsoft nicht<br />

anders zu erwarten, erlaubt Office<br />

365 die einfache Migration einer<br />

vorhandenen Exchange-Infrastruktur<br />

nach Exchange Online. Dabei<br />

ist, abhängig von der verwendeten<br />

Exchange-Version, auch eine temporäre<br />

Parallelnutzung der lokalen<br />

Exchange-Infrastruktur und Office<br />

365 möglich, inklusive einer Synchronisation<br />

zwischen den Benutzerpostfächern<br />

beider Systeme. Wer ein<br />

anderes E-Mailsystem einsetzt, kann vorhandene<br />

Mailboxen per IMAP ebenfalls in<br />

die Cloud migrieren. Auch Google Apps<br />

bietet diese Migrationsmöglichkeiten und<br />

stellt darüber hinaus mit Directory Sync<br />

Abbildung 5: Das Dashboard im Administrationsbereich von Google Apps.<br />

eine automatische Synchronisation von<br />

Benutzern und Gruppen aus bereits selbst<br />

vorhandenen LDAP-Systemen wie dem<br />

Active Directory bereit. Diese Funktion<br />

ist auch bei Office 365 möglich, wird dort<br />

allerdings nur in der teuren Version für<br />

mittelständische und große Unternehmen<br />

angeboten. Abhängig von der Anzahl der<br />

zu migrierenden Postfächer und Postfachgrößen<br />

kann das Kopieren sämtlicher Daten<br />

mehrere Stunden oder auch länger<br />

dauern.<br />

Integration in die Office-Welt<br />

Bereits seit einigen Versionen lässt Microsoft<br />

seine Office-Produkte für Clients<br />

und Server mehr und mehr verschmelzen<br />

und hat bei der Verwendung von Office-<br />

Anwendungen wie Word, Excel, Power-<br />

Point und Outlook klar die Nase vorn.<br />

Doch auch Google integriert mit Google<br />

Sync für Outlook und Google Cloud Connect<br />

(automatische Synchronisation mit<br />

Google Docs für Texte, Tabellen und Prä-<br />

Abbildung 4: Die Teamwebsite bietet viele Möglichkeiten zur webbasierten Zusammenarbeit.<br />

128 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


Office 365 vs. google Apps<br />

TesT<br />

sentationen) seine Produkte in die Office-<br />

Suiten von Microsoft. Allerdings bieten<br />

die Google-Tools an vielen Stellen nicht<br />

die gleiche Funktionalität, wie man sie<br />

bisher von Office gewohnt ist. So können<br />

mit Google Sync in Outlook keine E-Mails<br />

aus angehängten PST-Dateien in einen<br />

Outlook-Ordner wie den Posteingang<br />

kopiert beziehungsweise verschoben<br />

werden. Auch die Synchronisation von<br />

Notizen wie dies bei Exchange möglich<br />

ist, fehlt hier.<br />

Jederzeit und überall<br />

In Zeiten von Smartphones und Tablets<br />

spielt die Anbindung mobiler Endgeräte<br />

für Unternehmen jeglicher Größe eine<br />

wichtige Rolle. Durch die automatische Ermittlung<br />

der Servereinstellungen (Autodiscover)<br />

von Exchange Online bietet Office<br />

365 bei der Einrichtung der Synchronisation<br />

von E-Mail, Kontakten und Terminen<br />

eine benutzerfreundlichere Lösung als<br />

Google Apps. So verlangt Office 365 lediglich<br />

E-Mailadresse sowie das Passwort und<br />

ermittelt sämtliche Serverdetails automatisch.<br />

Dies geschieht über einen simplen<br />

DNS-Eintrag (»autodiscover.ihredomain.<br />

de«), der als Ziel die Autodiscover-Funktion<br />

[3] von Exchange Online nutzt und<br />

von Android, iOS und Windows Phone 7<br />

unterstützt wird. Auch mit Google Apps<br />

ist die Anbindung mobiler Geräte möglich,<br />

hierfür muss der Anwender allerdings<br />

die Servereinstellungen selbst eingeben.<br />

Lediglich bei der Verwendung von Android-Geräten<br />

genügt bei Google Apps die<br />

Eingabe von E-Mailadresse und Passwort.<br />

Da beide Lösungen das von Microsoft entwickelte<br />

Active-Sync-Protokoll unterstützen,<br />

werden E-Mails, Terminanfragen oder<br />

auch neue, in Outlook angelegte Kontakte<br />

Abbildung 6: Google Mail für die eigene Domain.<br />

sofort und nahezu in Echtzeit mit den<br />

mobilen Endgeräten synchronisiert (Abbildung<br />

6).<br />

Fazit<br />

Gerade für kleine und mittelständische<br />

Betriebe mit wenig eigenem IT-Personal<br />

ist der Umstieg auf Microsofts neuen<br />

Cloud-Service leichter umzusetzen als<br />

auf Google Apps. Die Kosten dafür sind<br />

zwar höher, aber die Anwender müssen<br />

sich bei Office 365 aufgrund der gewohnten<br />

Optik weniger umgewöhnen.<br />

Für große Unternehmen ist Google Apps<br />

dank höherer Flexibilität und geringerer<br />

Kosten derzeit der beste Weg für die Auslagerung<br />

der digitalen Kommunikation<br />

und Zusammenarbeit. Beide Produkte<br />

stehen vor der Migration in die Cloud als<br />

kostenlose Testversion zur Verfügung. So<br />

können Sie sich leicht ein Bild machen,<br />

welche Lösung für Ihren Zweck am besten<br />

geeignet ist. (ofr)<br />

n<br />

Infos<br />

[1] Microsoft Office 365:<br />

[http://www. microsoft.com/de-de/<br />

office365/ online-software.aspx]<br />

[2] Einrichtung von Office 365:<br />

[http://www. microsoft.com/de-de/<br />

office365/ deployment-support.aspx]<br />

[3] Exchange Autodiscover: [http://www.<br />

msxfaq.de/ e2007/ autodiscover.htm]<br />

[4] Kostenloses E-Book zu Office 365:<br />

[http://download. microsoft.com/download/<br />

1/2/F/12F1FF78-73E1-4714-9A08-6A76FA3D<br />

A769/656949ebook.pdf]<br />

[5] Google Apps für Unternehmen:<br />

[http://www. google.com/apps/intl/de/<br />

business/index. html]<br />

Der Autor<br />

Björn Bürstinghaus ist Systemadministrator bei<br />

der simyo GmbH in Düsseldorf. In seiner Freizeit<br />

betreibt er Bjoerns Windows Blog, ein Blog rund<br />

um Windows-Themen, zu finden unter [http://<br />

blog.buerstinghaus.net].<br />

Tabelle 1: Office 365 und google Apps business im direkten Vergleich<br />

Office 365 (Plan P1) Office 365 inkl. Office Pro Google Apps<br />

Speicher für E-Mail, Kalender und Kontakte 25 GB 25 GB 25 GB<br />

E-Mailarchivierung Nein Ja Optional buchbar<br />

Anti-Virus/ Aselbstnti-SPAM Ja Ja Ja<br />

Mobiler Zugriff Ja (Active-Sync) Ja (Active-Sync) Ja (Active-Sync)<br />

Echtzeitkommunikation mit Audio- und Videoübertragung Ja (Lync Online) Ja (Lync Online) Ja (Google Chat)<br />

Browserbasiertes Arbeiten an Dokumenten, Tabellen und Präsentationen Ja (Office Web Apps) Ja (Office Web Apps) Ja (Google Docs)<br />

Eigene Webseite für die Zusammenarbeit Ja (SharePoint) Ja (SharePoint) Ja (Google Sites)<br />

Active-Directory-Synchronisation Nein Ja Ja<br />

MS Office Professional Softwarelizenz Nein Ja Nein<br />

Preis pro Monat 9,00 Euro 22,75 Euro 4,00 Euro<br />

www.A dmin-mAgA zin.de<br />

Admin<br />

AusgA be 05-2011<br />

129


s e RVi C e<br />

impressum und <strong>Vorschau</strong><br />

Impressum ISSN 2190-1066<br />

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

eine Publikation der Linux New Media AG<br />

Redaktionsanschrift Putzbrunner straße 71<br />

81739 münchen<br />

Tel.: 0 89/99 34 11-0<br />

Fax: 0 89/99 34 11-99 oder -96<br />

internet<br />

www.admin-magazin.de<br />

e-mail<br />

redaktion@admin-magazin.de<br />

Geschäftsleitung b rian Osborn (Vorstand), bosborn@linuxnewmedia.de<br />

Hermann Plank (Vorstand), hplank@linuxnewmedia.de<br />

Chefredakteure Oliver Frommel (V.i.s.d.P.),<br />

ofrommel@admin-magazin.de (ofr)<br />

Redaktion<br />

news/Report<br />

software/Test<br />

security/networking<br />

ständige mitarbeiter<br />

Produktionsleitung<br />

Grafik<br />

Abo-Infoseite<br />

Abonnenten-Service<br />

Jens-Christoph brendel<br />

jcb@admin-magazin.de (jcb)<br />

ulrich bantle (Ltg.), ubantle@linuxnewmedia.de (uba)<br />

mathias Huber, mhuber@linuxnewmedia.de (mhu)<br />

marcel Hilzinger, mhilzinger@linuxnewmedia.de, (mhi)<br />

Kristian Kißling, kkissling@linuxnewmedia.de, (kki)<br />

markus Feilner, mfeilner@linuxnewmedia.de (mfe)<br />

Thomas Leichtenstern, tleichtenstern@linuxnewmedia.de (tle)<br />

elke Knitter (schlussredaktion),<br />

Carsten schnober, Tim schürmann<br />

Christian ullrich, cullrich@linuxnewmedia.de<br />

Judith erb, Kristina Fleischer<br />

Titel: Judith erb, illustration: fp interactive (www.fp-interactive.de)<br />

www.admin-magazin.de/abo<br />

Lea-maria schmitt<br />

abo@admin-magazin.de<br />

Tel.: 07131/27 07 274, Fax: 07131/27 07 78 601<br />

Preise Print Deutschland Österreich Schweiz Ausland EU<br />

einzelheft € 9,80 € 10,80 sfr 19,60 (siehe Titel)<br />

mini-Abo (2 Ausgaben) € 9,80 € 10,80 sfr 19,60 (siehe Titel)<br />

Jahres-dVd (einzelpreis) € 14,95 € 14,95 sfr 18,90 € 14,95<br />

Jahres-dVd (zum Abo 1 ) € 6,70 € 6,70 sfr 8,50 € 6,70<br />

Jahresabo € 49,90 € 54,90 sfr 99,90 € 59,90<br />

Preise Digital Deutschland Österreich Schweiz Ausland EU<br />

Heft-PdF einzelausgabe € 9,80 € 9,80 sfr 10,71 € 9,80<br />

digisub (6 Ausgaben) € 44,90 € 44,90 sfr 49,05 € 44,90<br />

digisub (zum Printabo) € 6,— € 6,— sfr 6,— € 6,—<br />

HTmL-Archiv (zum Abo 1 ) € 48,— € 48,— sfr 48,— € 48,—<br />

Preise Kombiabos<br />

Profi-Abo 2 € 136,60 € 151,70 sfr 259,90 € 165,70<br />

1<br />

nur erhältlich in Verbindung mit einem Jahresabo Print oder digital<br />

2<br />

mit Linux-magazin-Abo und beiden Jahres-dVds<br />

Schüler- und Studentenermäßigung: 20 Prozent gegen Vorlage eines schülerausweises oder einer aktuellen<br />

immatrikulationsbescheinigung. der aktuelle nachweis ist bei Verlängerung neu zu erbringen. Andere Abo-<br />

Formen, ermäßigungen im Ausland etc. auf Anfrage.<br />

Adressänderungen bitte umgehend mitteilen, da nachsendeaufträge bei der Post nicht für zeitschriften gelten.<br />

Pressemitteilungen info@admin-magazin.de<br />

Anzeigen/Repräsentanz<br />

es gilt die Anzeigenpreisliste vom 01.01.2010<br />

National<br />

Petra Jaser<br />

Tel.: 089/99 34 11 24, Fax: 089/99 34 11 99<br />

e-mail: anzeigen@admin-magazin.de<br />

Pressevertrieb mzV, moderner zeitschriften Vertrieb gmbH<br />

breslauer straße 5, 85386 eching<br />

Tel.: 089/31906-0, Fax: 089/31906-113<br />

Druck<br />

Vogel druck und medienservice gmbH<br />

97204 Höchberg<br />

der begriff unix wird in dieser schreibweise als generelle bezeichnung für die unix-ähnlichen betriebssysteme<br />

verschiedener Hersteller, zum beispiel eurix (Comfood), ultrix (digital equipment), HP/uX (Hewlett-Packard) oder sinix<br />

(siemens) benutzt, nicht als die bezeichnung für das Trademark von X/Open. Linux ist eingetragenes marken zeichen von<br />

Linus Torvalds und wird in unserem markennamen mit seiner erlaubnis verwendet. Alle anderen marken sind eigentum<br />

der jeweiligen inhaber. eine Haftung für die Richtigkeit von Veröffentlichungen kann trotz sorgfältiger Prüfung durch<br />

die Redaktion vom Verlag nicht übernommen werden. mit der einsendung von manu s kripten gibt der Verfasser seine<br />

zustimmung zum Abdruck im Admin-magazin. Für unverlangt ein gesandte manuskripte kann keine Haftung übernommen<br />

werden. die Redaktion behält sich vor, Artikel zu kürzen. das exklusiv- und Verfügungsrecht für angenommene<br />

manuskripte liegt beim Verlag. es darf kein Teil des inhalts ohne ausdrückliche schriftliche genehmigung des Verlags in<br />

irgendeiner Form vervielfältigt oder verbreitet werden. Copyright © 1994–2011 Linux new media Ag<br />

Inserentenverzeichnis<br />

1&1 Internet AG http:// www.einsundeins.de 33, 38<br />

<strong>ADMIN</strong> http:// www.admin-magazin.de 43, 51, 63, 77<br />

<strong>ADMIN</strong> <strong>Magazin</strong>e UK http://cloudage.admin-magazine.com 97, 131<br />

Angel Business Communications Ltd http:// poweringthecloud.com 53<br />

DZUG e.V http:// de.pycon.org 103<br />

Fernschule Weber GmbH http:// www.fernschule-weber.de 87<br />

Galileo Press http:// www.galileo-press.de 45<br />

German Unix User Group (GUUG) e.V. http:// www.guug.de 121<br />

GNE http:// www.gne.de 37<br />

Hetzner Online AG http:// www.hetzner.de 132<br />

Hostserver GmbH http:// www.hostserver.de 2<br />

In-Depth Security Conference http://deepsec.net 79<br />

Linux-Hotel http:// www.linuxhotel.de 13<br />

Linux-<strong>Magazin</strong> http:// www.linux-magazin.de 125<br />

Linux-<strong>Magazin</strong> Academy http:// academy.linux-magazin.de 71, 73<br />

Netclusive GmbH http:// www.netclusive.de 27<br />

NETHINKS GmbH http:// www.nethinks.com 41<br />

netways GmbH http:// www.netways.de 95<br />

Netzwerktotal http:// www.netzwerktotal.de 101<br />

Neue Mediengesellschaft Ulm mbH http:// www.web-devcon.de 61<br />

OpenRheinRuhr http:// www.openrheinruhr.de 111<br />

outbox AG http:// www.outbox.de 29<br />

OVH GmbH http:// www.ovh.de 14<br />

pascom - Netzwerktechnik GmbH & Co.KG http:// www.pascom.net 11<br />

PlusServer AG http:// www.plusserver.de 20, 68, 84, 104<br />

REINER Kartengeräte GmbH und Co. KG http:// www.reiner-sct.com 123<br />

Sigs Datacom GmbH http:// www.sigs-datacom.de 127<br />

Spenneberg Training & Consulting http:// www.spenneberg.com 99<br />

Strato AG http:// www.strato.de 7, 9, 47<br />

Thomas Krenn AG http:// www.thomas-krenn.com 17<br />

Vogel IT-Medien GmbH http:// www.vogel.de 93<br />

Vollmar.net http:// www.vollmar.net 25<br />

Einem Teil dieser Ausgabe liegt eine Beilage der Firma Microsoft GmbH (http:// www.<br />

microsoft.com/ germany) bei. Wir bitten unsere Leser um freundliche Beachtung.<br />

Autoren dieser Ausgabe<br />

Mike Adolphs Automatik 80<br />

Konstantin Agouros Sitzengeblieben 44<br />

Dominik Birk Wolkige Aussichten 92<br />

Björn Bürstinghaus Schwerelos 126<br />

Thomas Drilling Geordnet 86<br />

Thomas Drilling Hai-teres Paketeraten 34<br />

Susanne Ebrecht PostgreSQL tunen 54<br />

Florian Effenberger Ausgesiebt 114<br />

Dan Frost Auf dem Bauernhof 122<br />

Ken Hess Containerfracht 118<br />

Thomas Joos Unter dem Mikroskop 58<br />

Hannes Kasparick Gebündelt 30<br />

Martin Loschwitz Eigene Clouds 98<br />

Martin Loschwitz Rettungsschirm für Datenbanken 106<br />

Vilma Niclas Chef hört mit 24<br />

Thorsten Scherf Auf Knopfdruck 18<br />

Tim Schürmann Nützlicher Fleischwolf 74<br />

Greg Smith PostgreSQL tunen 54<br />

Martin Steigerwald Blockweise 64<br />

Christoph Wegener Wolkige Aussichten 92<br />

VORs CHAu<br />

Andrea Danti, 123RF<br />

A dmin 06/2011 eR s CHeinT A m 10.nOVembeR 2011<br />

Datenbanken<br />

duell der datenbanken: in einem<br />

shootout messen sich mysQL und PostgresQL,<br />

jeweils von experten optimal<br />

eingestellt, anhand eines komplexen<br />

benchmarks. daneben widmet sich die<br />

Redaktion auch dem aktuellen Thema<br />

nosQL-datenbanken.<br />

Samba-<strong>Tuning</strong><br />

Für datei- und druckdienste<br />

in heterogenen netzen führt<br />

an samba kein weg vorbei.<br />

wir verraten, was sie tun können,<br />

wenn der Fileserver mal<br />

wieder im schneckentempo<br />

arbeitet.<br />

Anna Omelchenko, 123RF<br />

130 AusgA be 05-2011 Admin www.A dmin-mAgA zin.de


GoinG to the<br />

Cloud?<br />

how will you get there?<br />

the cloud portal for it<br />

specialists – up close,<br />

all technical, all cloud.<br />

cloudage.admin-magazine.com<br />

Powered by:

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!