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-BenchmarksmitFio<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 />
DerAutor<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 35<br />
48565 Steinfurt<br />
Tel.: 02552 638755<br />
Fax: 02552 638757<br />
Weitere Informationen unter www.ost.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: