25.02.2014 Aufrufe

ADMIN Magazin Monitoring (Vorschau)

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

LVM: Der Logical Volume SSH: Tunnels, Port Forwarding Perl: GUIs auf<br />

Manager von Linux<br />

und VPNs mit der Secure Shell der Konsole<br />

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

Netzwerk & Security<br />

Auf DVD:<br />

01 2012<br />

Jan. – Feb.<br />

6.1<br />

16 zum gleichen Preis!<br />

Seiten mehr Inhalt<br />

<strong>Monitoring</strong><br />

Rechner und Dienste überwachen<br />

<strong>Monitoring</strong>-Software unter der Lupe:<br />

Benchmarks, Vergleiche, Tests<br />

pfSense<br />

Leistungsfähige<br />

BSD-Firewall<br />

Neu: UCS 3.0<br />

Der Univention Corporate<br />

Server ersetzt mit Samba 4<br />

jetzt Active Directory<br />

High Availability<br />

n Cluster-Agents im Eigenbau<br />

n GFS mit DRBD und Pacemaker<br />

Upstart<br />

Workshop zum Nachfolger<br />

des Linux-Init-Systems<br />

Expect<br />

Skripting interaktiver<br />

Programme<br />

www.admin-magazin.de<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 01


Sven Stornebel<br />

STRATO Hosting-Kunde<br />

www.stornebel.de<br />

Power Hosting<br />

schon ab<br />

€/Mon.*<br />

Jetzt starten und 6 Monate<br />

die Grundgebühr sparen!<br />

Den Kopf voller Ideen?<br />

Mit STRATO werden daraus erfolgreiche Websites!<br />

Bis zu 12 Domains, 30 MySQL-Datenbanken und unlimited Traffic<br />

NEU! Mehr Leistung: Bis zu 20.000 MB Speicher und 2 GB E-Mailspace<br />

1-Klick-Installation: Wordpress, Typo3, Joomla!, xt:Commerce, Contao<br />

NEU! Günstige Partnerangebote für individuelle Text- und Designkreation<br />

Hosting-Pakete | Online-Speicher | Webshops | V-Server<br />

* Preisaktion bis 31.01.2012: Alle PowerWeb-Pakete 6 Monate 0 €/mtl., danach ab 5,90 €.<br />

Einmalige Einrichtungsgebühr 14,90 €. Mindestvertragslaufzeit 12 Monate. Preise inkl. MwSt.<br />

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

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


Davids Chance<br />

Editorial<br />

Davids Chance<br />

Liebe Leserinnen und Leser,<br />

dieses Jahr, so prognostizieren die Analysten von IDC, wird sich die Schlacht<br />

um die Marktführerschaft beim Cloud Computing dramatisch verschärfen. Denn<br />

mehr als 80 Prozent aller neuen, kommerziellen Unternehmensanwendungen,<br />

schätzen die Experten, sollen auf Cloud-Plattformen eingeführt werden. Dabei<br />

geht es um sehr viel Geld: Allein Amazon Web Services wird für 2012 ein Umsatz<br />

von einer Milliarde Dollar mit Cloud-Diensten vorausgesagt. Und andere – etwa<br />

Google, Salesforce oder VMware – sind ebenfalls auf dem Sprung.<br />

Zu den kriegsentscheidenden Vorteilen wird es gehören, die eigenen Standards<br />

durchzusetzen. Noch ist das Rennen offen, aber die Kombattanten haben in den einschlägigen Gremien bereits<br />

ihre Geschütze in Stellung gebracht. Überall gibt es Arbeitsgruppen für Cloud-Standards: Bei der DMTF mit namhaften<br />

Mitgliedern wie Cisco, EMC, IBM oder Microsoft, bei der Cloud Security Alliance (mit Google, Intel, Oracle<br />

und 100 anderen), bei der mächtigen Storage Networking Industry Association (SNIA), beim Open Grid Forum<br />

mit 400 Mitgliedern und so weiter und so fort. Und bei der OSBF. Einem Verein vorwiegend mittelständischer<br />

Firmen aus Deutschland, viele mit regionaler Bekanntheit. Dort gibt es seit Kurzem eine Open Cloud Business<br />

Initiative. Ist das Größenwahn?<br />

Saul aber sprach zu David: Du kannst nicht hingehen wider diesen Philister, mit ihm zu streiten; denn du bist ein<br />

Knabe, dieser aber ist ein Kriegsmann von seiner Jugend auf.<br />

Welche Chance haben offene Standards in einem Multimilliarden-Poker? Kann ein relativ kleiner, nationaler Verein<br />

internationalen Goliaths Paroli bieten? Oder wenigstens etwas Nützliches beitragen? Nein?<br />

Im Moment schauen wir zu, wie Flash von Tag zu Tag an Bedeutung verliert und HTML 5, ein offener Standard,<br />

den Stich macht. Als offen müssen auch die anderen Standards des W3C gelten, und sie haben sich ebenfalls<br />

durchgesetzt: CSS etwa oder XML. Auch viele der in Tausenden RFCs beschriebenen Standards der IETF sind<br />

ebenso offen wie erfolgreich: zum Beispiel TCP/​IP, um nur einen herauszugreifen. Dasselbe kann man von vielen<br />

ISO-Normen sagen, beispielsweise ISO/​IEC 9075:2008, das ist SQL. Kurz: Offene Standards sind häufig ein Erfolgsmodell.<br />

Der Versuch, sie auch im Cloud Computing zu etablieren, ist eine lohnende Sache.<br />

Und David tat seine Hand in die Tasche und nahm einen Stein daraus und schleuderte und traf den Philister an<br />

seine Stirn, dass der Stein in seine Stirn fuhr und er zur Erde fiel auf sein Angesicht.<br />

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

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

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

3


Service<br />

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

Netzwerk & Security<br />

Inhalt<br />

01/2012<br />

Server und Dienste immer im<br />

Blick, mit unseren Artikeln zum<br />

Thema "<strong>Monitoring</strong>" ab S. 42.<br />

Eine Übersicht freier<br />

42<strong>Monitoring</strong>-Vergleich<br />

Software fürs <strong>Monitoring</strong><br />

von Rechnern und Ressourcen.<br />

Login<br />

Netzwerk<br />

<strong>Monitoring</strong><br />

8 Branchen-News<br />

Neues von Firmen und Projekten.<br />

12 Vorgelesen<br />

Von Shell-Skripting und Wordpress 3.<br />

14 Admin-Story<br />

Tagebuch eines IT-Nomaden.<br />

28 Not-Lösung<br />

Remote-Shell-Zugriff über den<br />

Webbrowser.<br />

32 Schlüsselwächter<br />

SSH-Tipps für den Alltag: von Port<br />

Forwarding bis zum VPN.<br />

42 Unter Überwachung<br />

Freie <strong>Monitoring</strong>-Systeme für den Mittelstand<br />

im Überblick.<br />

50 Zwillingsforschung<br />

Von Nagios abgeleitetete<br />

<strong>Monitoring</strong>-Lösungen im<br />

Vergleich.<br />

16 Leserbriefe<br />

Kommentare und Meinungen.<br />

18 Think Twice<br />

Warum wird ständig alles neu erfunden?<br />

20 <strong>Monitoring</strong> a la mode<br />

Notizen von der vierten Open Source<br />

<strong>Monitoring</strong> Conference (OSMC).<br />

22 Wann ist Software geschützt?<br />

Eine juristische Perspektive.<br />

Service<br />

3 Editorial<br />

4 Inhalt<br />

6 Heft-DVD<br />

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

56 Kontrollzentrale<br />

Der Nagios-Ableger Open IT-Cockpit im<br />

Praxis-Kurztest.<br />

60 Aus einem Guss<br />

Das über Jahre gereifte freie <strong>Monitoring</strong>-Paket<br />

Zabbix bietet im praktischen<br />

Einsatz einige Vorteile.<br />

66 Zieleinlauf der Kontrolleure<br />

<strong>Monitoring</strong>-Lösungen auf Nagios-Basis<br />

im Benchmark-Test.<br />

4 Ausgabe 01-2012 Admin www.admin-magazin.de


Inhalt<br />

Service<br />

Was bringt Version<br />

80Univention<br />

3.0 des Univention<br />

Corporate Server?<br />

86pfSense<br />

Die BSD-basierte<br />

Firewall schützt das<br />

eigene Netzwerk.<br />

96OCF<br />

Cluster-Agents für<br />

eigene Applikationen<br />

selber programmieren lernen.<br />

Test<br />

72 Heiter bis wolkig<br />

Die Firma Kamp bietet mit ihrem Produkt<br />

"Virtual Core" eine private Cloud<br />

mit einfacher Verwaltung.<br />

74 Ausgepackt<br />

Microsofts System Center Operations<br />

Manager 2012 managt auch Linux.<br />

76 Testlabor<br />

Fedora 16 mit Cloud- und Virtualisierungs-Technologien.<br />

80 Runderneuert<br />

Der Univention Corporate Server 3.0 eignet<br />

sich dank Samba 4 auch als Ersatz<br />

für Active Directory.<br />

Security<br />

86 Schutzschild<br />

Die auf BSD basierende Firewall- und<br />

Router-Distribution pfSense.<br />

94 Abwehrverhalten<br />

Mit Apachebench lassen sich einfache<br />

Webangriffe bewerkstelligen. Eine Firewall<br />

mit IPTables wehrt sie ab.<br />

Know-how<br />

96 Agentenausbildung<br />

HA-Serie, Teil 8: OCF-Agenten selber<br />

programmieren.<br />

Basics<br />

112 Start me up<br />

Wie Upstart Linux-Distributionen bootet<br />

und man dafür eigene Skripte schreibt.<br />

Programmieren<br />

120 Fern gesteuert<br />

Mit Expect und Tcl können Administratoren<br />

interaktive Sitzungen skripten.<br />

106 Nichts exklusiv<br />

HA-Workshop, Teil 7: GFS mit DRBD und<br />

Pacemaker.<br />

118 Tortenstück<br />

Mit dem Logical Volume Manager (LVM)<br />

lässt sich Storage leicht nachträglich<br />

vergrößern und verkleinern.<br />

126 Old School<br />

Mit dem Perl-Modul Curses::UI sind textbasiere<br />

Benutzerschnittstellen auf der<br />

Konsole schnell erstellt.<br />

Mehr Infos auf Seite 6<br />

6.1<br />

n 64-Bit-Version zur Installation auf Festplatte<br />

n Community-Distribution, basierend auf<br />

Red Hat Enterprise Linux<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

5


SErvice<br />

Heft-DVD<br />

Heft-DVD<br />

Auf dem beiliegenden Datenträger finden Sie die Server-<br />

Ausgabe der neuesten CentOS-Version 6.1:<br />

◗ 64-Bit-Version für AMD 64 und Intel EM 64 T zur Installation<br />

auf Festplatte.<br />

◗ Freie Community-Distribution, basierend auf dem Code<br />

von Red Hat Enterprise Linux.<br />

◗ Sieben Jahre lang Support (Security-Updates).<br />

◗ Per Continuous Release auf die jeweils neueste Version<br />

aktualisierbar.<br />

Legen Sie einfach die DVD ins das Laufwerk ein und starten<br />

Sie den Rechner. Möglicherweise müssen Sie noch im BIOS<br />

die richtige Boot-Reihenfolge einstellen, damit das DVD-<br />

Laufwerk vor der Festplatte an die Reihe kommt. n<br />

DVD kaputt?<br />

Wir schicken Ihnen kostenlos eine<br />

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

info@admin-magazin.de<br />

Info<br />

[1] Projektseite: [http://www.centos.org]<br />

[2] Howtos: [http://wiki.centos.org/HowTos]<br />

[3] Continuous Release: [http://wiki.centos.org/AdditionalResources/Repositories/CR]<br />

6 Ausgabe 01-2012<br />

Admin www.admin-magazin.de


VIRTUAL POWER &<br />

VOLLER ROOTZUGRIFF<br />

Virtual Server von HOST EUROPE<br />

Profitieren Sie von garantierten Hardware-Ressourcen, vollem<br />

Root-Zugriff sowie dem Webinterface Parallels® Plesk Panel für<br />

die komfortable Server-Administration.<br />

Virtual Server Linux<br />

Betriebssyteme<br />

Garantierte CPU-Power<br />

Garantiertes RAM<br />

Speicherplatz (RAID10)<br />

Snapshot Backups<br />

Debian, CentOS, Ubuntu<br />

bis zu 4 x 1,5 GHz<br />

bis zu 8 GB<br />

bis zu 500 GB<br />

inklusive<br />

Vollständige Webserverumgebung:<br />

Apache 2, MySQL 5 und PHP5 sind für Sie<br />

bereits vorinstalliert.<br />

Host Europe SSL-Zertifikat gratis**<br />

Mehr Sicherheit inklusive: Bei der Bestellung<br />

eines Virtual Server erhalten Sie das Zertifikat<br />

Host Europe SSL kostenlos.<br />

Virtual Server Linux ab<br />

€12, 99<br />

mtl.*<br />

Keine Setupgebühr<br />

www.hosteurope.de<br />

*Monatlich. Die Mindestvertragslaufzeit beträgt einen Monat. Keine Setupgebühr. Der Abrechnungszeitraum ist monatlich. Die Kündigungsfrist beträgt 4 Wochen zum Vertragsende. Wird der Vertrag<br />

nicht fristgerecht gekündigt, verlängert er sich jeweils um eine weitere Mindestvertragslaufzeit. Alle angegebenen Preise inklusive MwSt..**Das Host Europe SSL-Zertifikat für eine Laufzeit von<br />

12 Monaten können Sie innerhalb von 3 Monaten nach Bestellung eines Virtual Server 4.0 mit Linux-Betriebssystem kostenlos hinzubuchen.


Login<br />

News<br />

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

Neue Software und Produkte<br />

Branchen-News<br />

EMEA: Servermarkt stagniert – Linux wächst<br />

Die Marktforscher von IDC bescheinigen<br />

dem Servermarkt der EMEA-Region<br />

(Westeuropa, Naher Osten, Afrika) im<br />

dritten Quartal 2011 ein bescheidenes<br />

Umsatzwachstum von 0,6 Prozent im<br />

Jahresvergleich.<br />

Damit beträgt der Quartalsumsatz 3,2 Milliarden<br />

US-Dollar für 546883 ausgelieferte<br />

Geräte. Die Zahl der Server ist gegenüber<br />

dem Vorjahresabschnitt um ein Prozent<br />

gesunken. Für den sehr bescheidenen Zuwachs<br />

macht IDC den schlechten Umsatz<br />

Die Herstellerrangliste im EMEA-Servermarkt.<br />

im westeuropäischen Gebiet verantwortlich,<br />

der mit einem Minus von 1,4 Prozent<br />

gegenüber Q3 2010 unterdurchschnittlich<br />

gewesen sei. Mit einem Anteil von rund<br />

75 Prozent am EMEA-Markt notieren die<br />

US-Marktforscher das bislang schlechteste<br />

Ergebnis für Westeuropa, seitdem<br />

IDC den Servermarkt statistisch aufbereitet.<br />

In Deutschland sei der Umsatz um<br />

3,6 Prozent gesunken, Frankreich und<br />

Großbritannien verzeichnen ein leichtes<br />

Wachstum.<br />

Bei den Geräten selbst erweisen sich die<br />

x86-Server als stärkste Triebkraft. Mehr<br />

als 98 Prozent der ausgelieferten Server<br />

seien x86-Systeme gewesen, so IDC. Der<br />

Umsatzanteil der x86-Systeme beträgt<br />

im Q3 2011 2,3 Milliarden US-Dollar. Der<br />

Umsatz von Nicht-x86-Servern dagegen<br />

ist unter die Milliardengrenze abgefallen<br />

und bei 875,5 Millionen US-Dollar<br />

gelandet.<br />

Windows-Server dominieren bei den Betriebssystemen<br />

mit einem Anteil von 53<br />

Prozent, verzeichnen aber ein vergleichsweise<br />

moderates Wachstum von 3,7 Prozent.<br />

Linux profitiert dagegen vom Trend<br />

hin zu den x86-Systemen und wächst<br />

bei den Betriebssystemen am schnellsten<br />

(plus 5,1 Prozent). Die Leidtragenden der<br />

x86-Welle sind Unix (minus 5,8 Prozent<br />

und z/​OS (minus 15 Prozent). Hewlett-<br />

Packard verkauft seit nunmehr 15 Quartalen<br />

die meisten Server und hält so die<br />

Position eins vor IBM, Dell, Oracle und<br />

Fujitsu.<br />

ODF: OB Ude schreibt an EU-Kommissarin<br />

Münchens Oberbürgermeister Christian Ude hat sich in einem<br />

Brief an Neelie Kroes, EU-Kommissarin für die Digitale Agenda,<br />

für offene Dokumentenformate in der EU-Verwaltung ausgesprochen.<br />

Der Rathauschef schreibt „Im Namen vieler Städte und regionaler<br />

Behörden Deutschlands möchte ich Sie als Präsident<br />

des Deutschen Städtetages und Oberbürgermeister der Stadt<br />

München bitten, sich weiterhin für die Verbreitung von ,Offenen<br />

Standards’ in der Bürokommunikation und ,Freier und quelloffener<br />

Software’ einzusetzen.“ Als Argumente für seine Forderung<br />

an die EU-Verwaltung führt er Arbeitserleichterung<br />

und wegfallende Lizenzkosten für proprietäre Software wie<br />

Microsoft Office an. Das englischsprachige Schreiben ist in der<br />

Rathaus-Umschau 230 [http://​www.​muenchen.​info/​pia/​RSS/​230.​pdf]<br />

(PDF-Dokument) in deutscher Übersetzung nachzulesen.<br />

Die Münchner Stadtverwaltung verwendet intern Open Office,<br />

das sie durch das freie Vorlagensystem Wollmux erweitert hat.<br />

In der Kommunikation mit den Bürgern setzt die Kommune auf<br />

das Open-Document-Format, RTF und PDF.<br />

Zugangserschwerungsgesetz erledigt<br />

Der Bundestag hat das umstrittene Zugangserschwerungsgesetz,<br />

das weitgehend nutzlose Internetsperren vorsah, nun<br />

zurückgenommen.<br />

Zu diesem Zweck wurde ein Aufhebungsgesetz [http://​dipbt.​<br />

​bundestag.​de/​dip21/​btd/​17/​066/​1706644.​pdf] (PDF) zum Zugangserschwerungsgesetz<br />

fraktionsübergreifend verabschiedet. Damit<br />

ist das erst im Februar 2010 in Kraft getretene Gesetz wieder<br />

kassiert, das vorsah, Seiten mit gesetzeswidrigen Inhalten auszufiltern.<br />

Gegen dieses Verfahren hatte es von verschiedenen<br />

Seiten und von Anfang an Einwände gegeben, weil diese<br />

Maßnahme sehr leicht zu umgehen ist. Durchgesetzt haben<br />

sich nun die Verfechter der Strategie „Löschen statt sperren“.<br />

„Die Internetbranche setzt sich seit Jahren erfolgreich für die<br />

fortlaufende Verbesserung der Löscherfolge ein. Hierzu gehört<br />

neben der Sicherung sämtlicher Beweise für die Strafverfolgung<br />

die internationale Zusammenarbeit. Inzwischen bekommen<br />

wir illegale Inhalte in wenigen Tagen aus dem Netz“, so Oliver<br />

Süme, Vorstand des Verbands der deutschen Internetwirtschaft<br />

eco für Recht, Regulierung und Politik.<br />

8 Ausgabe 01-2012 Admin www.admin-magazin.de


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

Red Hat Developer Conference in Tschechien<br />

Red Hat Tschechien lädt interessierte<br />

Linux- und JBoss-Entwickler zu seiner<br />

Developer Conference vom 17. bis 18.<br />

Februar 2012 ins tschechische Brno ein.<br />

Besucher aus dem benachbarten Ausland<br />

brauchen die Sprachbarriere offenbar<br />

nicht zu fürchten: Die Wiki-Seite zur Veranstaltung<br />

verzeichnet etliche Vorträge in<br />

englischer Sprache, die Themen reichen<br />

vom Deltacloud API über GTK+ 3 bis hin<br />

zum Test von Java-EE-Anwendungen.<br />

Die Teilnahme an der Konferenz in der<br />

Masaryk-Universität ist kostenlos und<br />

erfordert keine Voranmeldung.<br />

Wer sich allerdings ein Konferenz-T-Shirt<br />

und den Eintritt zur After-Party sichern<br />

möchte, muss sich mit der tschechischen<br />

Registrierungsseite auseinandersetzen.<br />

Alle weiteren Informationen zur<br />

Veranstaltung gibt es auf einer Seite im<br />

Fedora-Wiki [http://​fedoraproject.​org/​wiki/​<br />

​DeveloperConference2012].<br />

Managed<br />

Hosting<br />

Rangliste der illegalen Praktiken von Admins<br />

Security-Anbieter Balabit hat für eine Studie<br />

über 200 IT-Mitarbeiter zu verbotenen<br />

Aktivitäten auf den ihnen anvertrauten<br />

Systemen befragt.<br />

Auf Platz 1 liegt, nach prozentualem Anteil,<br />

der Download von illegalem Content<br />

am Arbeitsplatz (54 Prozent). Es folgt die<br />

Änderung von Sicherheitseinstellungen<br />

(etwa Firewalls) mit 48 Prozent. Ziel der<br />

letztgenannten Praktik ist es, sich Zugriff<br />

auf IT-Ressourcen im Unternehmen zu<br />

verschaffen, etwa per Remote-Access. Die<br />

Beschaffung von firmeninternen Informationen<br />

(29 Prozent) folgt auf Platz drei.<br />

Der neugierige Blick in Gehaltslisten und<br />

Personalunterlagen und sonstige vertrauliche<br />

Geschäftsunterlagen nimmt Platz<br />

vier ein (25 Prozent). Mit 16 Prozent<br />

der Nennungen liegt das Mitlesen von<br />

Kollegen-Mails auf Platz fünf. Das Sextett<br />

vervollständigt die Manipulation von<br />

Log-Dateien (15 Prozent) und dies meist<br />

zum Zweck, eine der fünf vorgenannten<br />

Aktivitäten zu verschleiern.<br />

Befragt wurden rund 200 IT-Mitarbeiter<br />

zwischen Juli und Oktober 2011. 74 Prozent<br />

der IT-Fachleute räumten ein, dass<br />

sie bereits mindestens einmal IT-Systeme<br />

des Unternehmens auf unerlaubte Weise<br />

genutzt hätten. Rund 51 Prozent der Befragten<br />

sind für Großunternehmen tätig,<br />

17 Prozent für mittelständische und 25<br />

Prozent für kleine Firmen. Die Mehrzahl<br />

der Unternehmen ist im Bereich IT und<br />

Telekommunikation aktiv (53 Prozent),<br />

24 Prozent im Finanzsektor. In Behörden<br />

arbeiten 12 Prozent der befragten IT-Fachleute,<br />

im Bereich Handel und Dienstleistungen<br />

7 Prozent und in Fertigungsbetrieben<br />

4 Prozent. Die Studie [http://​www.​<br />

​balabit.​com/​popular‐prohibited‐activities] ist<br />

bei Balabit verfügbar.<br />

Profitieren Sie von:<br />

aktueller Clustertechnologie<br />

ISO 27001 zertifiziertem<br />

Hochsicherheits-Datacenter<br />

DE-CIX Direktanbindung<br />

IPv4 und IPv6 Unterstützung<br />

24/7 Service und Support<br />

Professionelles Hosting<br />

Hosting mit persönlichem und<br />

kompetentem Support.<br />

Individuelle Hostinglösungen vom<br />

Server bis zum Clustersystem. Beratung,<br />

Planung und Service 24/7.<br />

Für mehr Performance, Sicherheit<br />

und Verfügbarkeit, jeden Tag, rund um<br />

die Uhr.<br />

hostserver.de/hosting<br />

Managed Hosting<br />

zertifiziert nach<br />

ISO 9001 : 2008<br />

Sündenfall: die Verbotsüberschreitungen der IT-Mitarbeiter aufgeschlüsselt.<br />

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

Berlin Marburg Frankfurt am Main<br />

www.admin-magazin.de<br />

Ausgabe 01-2012<br />

9


Login<br />

News<br />

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

KDE-Konferenz Akademy 2012 in Estland<br />

Die KDE-Entwicklerkonferenz Akademy wird vom 30. Juni bis<br />

6. Juli in der estnischen Hauptstadt Tallinn stattfinden. Der<br />

angenommene Vorschlag für den Veranstaltungsort stammt von<br />

dem 26-jährigen Netzwerkadministratoren Laur Mõtus. Er wird<br />

die Koordination des lokalen Teams übernehmen, aus Berlin unterstützt<br />

ihn Claudia Rauch, Business-Managerin des KDE e.V.<br />

Auf dem KDE-Nachrichtenportal Dot gibt es ein Interview [http://​<br />

​dot.​kde.​org/​2011/​11/​24/​akademy‐2012‐tallinn‐estonia] mit Laur, der über<br />

seine Motivation, sein Open-Source-Engagement sowie über die<br />

Stadt Tallinn spricht.<br />

Datentransfer-Weltrekord<br />

Physiker des amerikanischen California Institute of Technology<br />

(Caltech) haben einen neuen Weltrekord in der Disziplin<br />

Datentransfer aufgestellt. Die neue Rekordmarke liegt nun bei<br />

kombinierten 186 Gigabit pro Sekunde für eine Datenübertragung<br />

in zwei Richtungen und übertrifft den alten Rekord aus<br />

dem Jahr 2009 um rund 50 Prozent. Diese Geschwindigkeit<br />

würde ausreichen, um pro Tag 100 000 komplette Blu-ray-Discs<br />

zu transferieren. Der Versuch fand auf der International Conference<br />

for High Performance Computing, Networking, Storage<br />

and Analysis, SC11 in Seattle statt.<br />

Novell veröffentlicht OES 11<br />

Novell hat den Open Enterprise Server 11 freigegeben, der auf<br />

dem Suse Linux Enterprise Server 11 SP 1 (SLES) basiert, aber<br />

mehr Optionen bietet. Insbesondere die File- und Printservices<br />

wurden ausgebaut, beispielsweise das Apple Filing Protocol<br />

(AFP), was ihn für gemischte Linux-/Windows-/Mac-Umgebungen<br />

empfiehlt. Mit der Dynamic Storage Technology ist eine<br />

Technik an Bord, die seltener genutzte Inhalte auf billigeren<br />

und langsameren Speicher verschiebt und im Gegenzug häufig<br />

verwendete Dateien auf schnellen, aber teureren Medien lagert.<br />

Applikationen, die Microsofts Active Directory für die Authentifizierung<br />

nutzen, können mit dem OES stattdessen Novells<br />

eDirectory verwenden. Im Vergleich zum SLES11 wurden außerdem<br />

die verfügbaren Support-Optionen ausgebaut.<br />

Zarafa und LPI gemeinsam zertifiziert<br />

Zarafa und das Linux Professional Institute (LPI) haben bekanntgegeben,<br />

dass sie ein gemeinsames Trainings- und Zertifizierungsprogramm<br />

in Benelux, Deutschland, Österreich und<br />

in der Schweiz starten. Zarafa integriert das Zertifizierungsprogramm<br />

des LPI, wobei sich Zarafa Certified Engineers offiziell<br />

auf der Webseite des LPI für ihre LPI-Zertifizierungen anmelden.<br />

Vom 1. Januar 2012 an ist die Zertifizierung LPIC-1 oder<br />

alternativ der RHCSA von Red Hat eine Voraussetzung, um<br />

Zarafa Certified Engineer werden zu können.<br />

Die Übersicht über Zarafa-Schulungen ist unter [http://www.<br />

zarafa.com/trainings] verfügbar. Mehr Informationen zur LPIC-1-<br />

Zertifizierung gibt es unter [http://www.lpi.org/linux‐certifications/<br />

programs/lpic‐1].<br />

Neustart: OSBF stellt EOS Directory online<br />

Die Open Source Business Foundation<br />

(OSBF) hat das überarbeitete Enter prise<br />

Open Source Directory (EOS) online<br />

gestellt. Das Webportal soll Anlaufstelle<br />

rund um Open-Source-Produkte und<br />

Dienstleistungen für Interessierte aus<br />

Deutschland, Österreich und der Schweiz<br />

sein. Unter dem EOS-Dach<br />

stecken nach Angaben des<br />

Betreibers OSBF rund 400<br />

Open-Source-Produkte sowie<br />

qualifizierte Dienstleister und<br />

System-Integratoren.<br />

In der Datenbank landen laut<br />

OSBF nur Projekte, die ein Expertengremium<br />

als businesstauglich<br />

bewertet hat. Michael<br />

Kienle, der verantwortliche<br />

Vorstand der OSBF, sagt dazu:<br />

„Oberstes Ziel war es, Projekte<br />

und passende Systemintegratoren<br />

zu identifizieren,<br />

die häufig vorkommende<br />

Unternehmensanforderungen<br />

adressieren. Dabei haben wir nur solche<br />

Projekte und Produkte in das EOS-<br />

Directory aufgenommen, die sich schon<br />

im Markt bewährt haben und ein recht<br />

vollständiges Feature-Set aufweisen.“<br />

Neben der Projektdatenbank ist im überarbeiteten<br />

EOS-Directory [http://​www.​<br />

Das EOS-Directiory hat wieder geöffnet.<br />

​eosdirectory.​com] auch ein Blog zu finden.<br />

Interessierte Anbieter finden dort auch<br />

Kontaktadressen zur OSBF. Die OSBF<br />

sucht überdies auch Sponsoren für das<br />

Verzeichnis.<br />

Die Open Source Business Foundation<br />

(OSBF) hatte das Portal im Mai übernommen.<br />

Ende 2006 gestartet<br />

und im Jahr 2007 von Optaros<br />

dann online eingeführt, ging<br />

das EOS später an den Open-<br />

Source-Consultant Bruno von<br />

Rotz, der dem Verzeichnis<br />

von Open-Source-Projekten<br />

und ‐Anbietern mit dem „Advisory<br />

and Expert Board“, ein<br />

Komitee von Ratgebern und<br />

Experten zur Seite stellte. Der<br />

neue Besitzer OSBF hatte im<br />

Mai angekündigt, das Portal<br />

zur Anlaufstelle und Informationsplattform<br />

für den<br />

deutschsprachigen Raum zu<br />

machen.<br />

10 Ausgabe 01-2012 Admin www.admin-magazin.de


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

Programm für DFN-CERT-Workshop 2012<br />

Das Programm des DFN-CERT-Workshops „Sicherheit in vernetzten<br />

Systemen“ am 21. und 22. Februar 2012 in Hamburg ist<br />

nun im Netz einsehbar.<br />

Der 19. DFN-CERT-Workshop wird sich wieder vielen interessanten<br />

Themen rund um die Computersicherheit zuwenden.<br />

Angekündigt sind unter anderem Vorträge zur Speicheranalyse<br />

unter Linux, zu den Risiken von URL-Verkürzungsdiensten, zur<br />

Sicherheit in HPC-Umgebungen, zum Schutz vor Innentätern in<br />

Universitätsrechenzentren oder zu Sicherheitsproblemen von<br />

IPv6 in lokalen Netzen. Das vollständige Programm findet sich<br />

hier [http://​www.​dfn‐cert.​de/​veranstaltungen/​workshop.​html].<br />

TM<br />

MobyDick<br />

D i e Z u k u n f t 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 />

End of Life für Debian Lenny naht<br />

Der Security-Support für die Debian-Release 5.0 alias Lenny<br />

endet Anfang Februar 2012. Das hat Moritz Mühlenhoff vom<br />

Security-Team der Linux-Distribution auf dessen Mailingliste<br />

mitgeteilt. Der End-of-Life-Termin errechnet sich daraus, dass<br />

die jüngste Debian-Version 6.0 (Squeeze) am 6. Februar 2011<br />

veröffentlicht wurde, und die Anwender ein Jahr Zeit für das<br />

Upgrade bekommen.<br />

Nach dem Stichtag wird es keine neuen Security-Fixes mehr<br />

geben. Die bis dahin bereitgestellten Ausbesserungen bleiben<br />

aber über das Security-Repository verfügbar.<br />

Univention Corporate Server 3.0 fertig<br />

Die Bremer Firma Univention hat Mitte Dezember die Version<br />

3.0 ihres Corporate Servers freigegeben. Das auf Debian<br />

„Squeeze“ 6.0.3 basierende Server-Produkt wurde gegenüber<br />

der Vorgängerversion in den Bereichen Bedienung, Funktionsund<br />

Leistungsfähigkeit grundlegend überarbeitet. So wurde<br />

zum Beispiel die Usability der Univention Management Console<br />

verbessert. Der Univention Corporate Server (UCS) kann<br />

nun, dank der Integration von Samba 4, die Aufgaben eines<br />

Active-Directory-Domänencontrollers übernehmen. Die Virtualisierungstechnologie<br />

Xen ist nun in Version 4.1 enthalten. Der<br />

Linux-Hypervisor KVM wird ebenfalls unterstützt und bietet<br />

Snapshot- und Suspend-Funktionen. Die <strong>Monitoring</strong>software<br />

Nagios wurde auf Version 3 aktualisiert.<br />

Seine Preislisten hat der Hersteller noch nicht aktualisiert.<br />

Bisher schlägt das UCS-Basissystem inklusive Maintenance<br />

mit jährlich 290 Euro zu Buche, zuzüglich knapp 26 Euro<br />

im ersten Jahr beziehungsweise knapp 9 Euro in Folgejahren<br />

pro Client und Nutzer. Module wie Groupware, Thin Client<br />

Services, Desktop-Virtualisierung und der Corporate Desktop<br />

werden separat berechnet. Kunden, die UCS in den letzten zwölf<br />

Monaten erworben haben und Kunden mit einem laufendem<br />

Maintenance-Vertrag können ihre Installation kostenlos auf das<br />

aktuelle UCS-Release aktualisieren.<br />

Mehr Informationen zum aktuellen Release und einen Ausblick<br />

auf kommende Neuerungen gibt die Univention-Website. Ein<br />

ausführlicher Test findet sich in diesem Heft auf S. 80.<br />

www.admin-magazin.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<br />

Admin<br />

Ausgabe 01-2012<br />

11


Login<br />

Bücher<br />

Bücher über Shellprogrammierung und zu Wordpress 3<br />

Vorgelesen<br />

In diesem Monat unter der Leselupe: ein enzyklopädischer Ratgeber zur<br />

Shellprogrammierung und ein umfassendes Handbuch zur Blogging-Software<br />

Wordpress. Jens-Christoph Brendel, Oliver Frommel<br />

Was als Erstes ins Auge fällt ist der<br />

enorme Umfang: Patrick Ditchens Buch<br />

über Shell-Skript-Programmierung ist mit<br />

über 820 Seiten ein kiloschwerer Wälzer.<br />

Das liegt zum einen an der gründlichen<br />

und systematischen Herangehensweise<br />

und den ausführlichen Erklärungen, die<br />

auch ohne Vorbildung verständlich sind.<br />

Zum anderen ist es aber auch das Resultat<br />

einer eher ärgerlichen Redundanz.<br />

Eine Kostprobe: S. 25: „Enthält eine<br />

Zeichenkette Leer- oder Sonderzeichen,<br />

muss sie in Anführungszeichen eingeschlossen<br />

werden.“ S. 51: „Zeichenketten,<br />

die Leer- oder Sonderzeichen enthalten,<br />

müssen Sie in Anführungszeichen schreiben.“<br />

S. 53: „Strings, die Leerzeichen<br />

oder Sonderzeichen enthalten, müssen<br />

Sie in Quotes setzen.“ S. 296: „Zeichenketten,<br />

die Leer- und Sonderzeichen enthalten,<br />

müssen in Anführungszeichen<br />

gesetzt werden.“ S. 298: „Sobald in einer<br />

Zeichenkette Leerzeichen oder Sonderzeichen<br />

enthalten sind, muss sie in Anführungszeichen<br />

gesetzt werden.“ Und<br />

das sind nur die Fundstellen, die beim<br />

ersten Überfliegen ins Auge sprangen.<br />

Das Buch führt in grundlegende Programmierkonzepte<br />

und die Syntax von Bourne-<br />

Shell, Bash und Korn-Shell ein. Dabei<br />

berücksichtigt es sowohl die Verhältnisse<br />

unter Solaris wie unter Linux und deckt<br />

damit ein breites Anwendungsgebiet ab.<br />

Außerdem werden die wichtigsten Tools<br />

besprochen, die Shellprogrammierer häufig<br />

einsetzen: etwa sed, grep und in einem<br />

eigenen ausführlichen Kapitel awk.<br />

Zahlreiche Beispiele im dritten Teil des<br />

Werkes liefern nützliches Anschauungsmaterial.<br />

Trotz der Materialfülle gelingt es jedoch<br />

nicht, das Thema erschöpfend zu behandeln.<br />

Vergeblich sucht man beispielsweise<br />

ein Kapitel über die oft vernachlässigte<br />

Sicherheit von Shell-Skripten.<br />

„Sicherheit“ oder „Security“ sind nicht<br />

mal einen Eintrag im Index wert.<br />

Wordpress<br />

Wordpress hat sich in den letzten Jahren<br />

vom einfachen Blog-System zum ausgewachsenen<br />

Content-Management-System<br />

entwickelt. Zwar dreht es sich im Kern<br />

noch immer um eine Blog-Struktur mit<br />

Artikeln und festen Seiten. Über 10 000<br />

Plugins machen es aber mittlerweile<br />

vielfältig verwendbar, etwa zum Aufbau<br />

eines eigenen Webshops, von News-Sites<br />

und vieles mehr.<br />

Alexander Hetzel hat zu Wordpress 3 nun<br />

ein Buch verfasst, das der Galileo-Verlag<br />

als „umfassendes Handbuch“ vermarktet.<br />

Diesem Titel und dem im Vorwort<br />

formulierten Anspruch, eine möglichst<br />

breite Zielgruppe zu erreichen, wird es<br />

gerecht. Es beginnt bei der Installation<br />

und schließt dabei das Aufsetzen einer<br />

PHP/​Apache/​MySQL-Umgebung unter<br />

Windows ein. Lediglich etwas mehr Informationen<br />

über die Installation unter<br />

Linux, was etwa bei einem Internet-Provider<br />

meist die Regel ist, wären wünschenswert.<br />

Ausführlich widmet sich der Autor dann<br />

der Administration von Wordpress über<br />

die Weboberfläche, bevor er zu fortgeschrittenen<br />

Themen wie der Programmierung<br />

eigener Themes und Plugins<br />

kommt. Eine kurze Übersicht wichtiger<br />

und nützlicher fertiger Plugins hilft Nicht-<br />

Programmierern. Auch ein Kapitel über<br />

die Absicherung des gelegentlich durch<br />

Sicherheitslücken auf sich aufmerksam<br />

machenden Wordpress ist enthalten. Auf<br />

knapp zehn Seiten deckt es immerhin die<br />

wichtigsten Maßnahmen ab. Für fortgeschrittene<br />

Administratoren gibt es hier<br />

sicher noch unerwähntes Potenzial, etwa<br />

zur Härtung des Betriebssystems.<br />

„Wordpress 3“ ist empfehlenswert für<br />

jeden, der mit dem Gedanken spielt,<br />

eine dynamische Website aufzubauen.<br />

Es deckt alle Aspekte rund um Wordpress<br />

ab, von der Installation, Verwaltung und<br />

Bedienung bis hin zur Entwicklung eigener<br />

Plugins und Themes. Allgemeine Kapitel<br />

zu Vermarktung, Benutzer-Tracking<br />

und Suchmaschinenoptimierung runden<br />

den Allzweck-Ratgeber ab. Am nützlichsten<br />

ist es somit für denjenigen, der selbst<br />

eine Wordpress-basierte Website installieren<br />

und sie dann auch regelmäßig mit<br />

Inhalt füllen will.<br />

Das Buch beschäftigt basiert auf der eben<br />

erschienenen Wordpress-Version 3.2 und<br />

dürfte somit noch einige Zeit lang Gültigkeit<br />

besitzen. <br />

n<br />

Shell-Skript-Programmierung<br />

Patrick Ditchen<br />

Shell-Skript-Programmierung<br />

832 Seiten<br />

4. Auflage<br />

mitp 2011<br />

44,95 Euro<br />

ISBN 978-3-8266-9134-8<br />

Wordpress 3<br />

Alexander Hetzel<br />

Wordpress 3<br />

597 Seiten<br />

Galileo Press 2012<br />

29,90 Euro<br />

ISBN 978-3-8362-1727-9<br />

12 Ausgabe 01-2012 Admin www.admin-magazin.de


„Kennen Sie<br />

unser Thomas<br />

Krenn Wiki?“<br />

Schauen Sie doch mal in unserem Thomas Krenn Wiki vorbei.<br />

Hier finden Sie die neuesten Beiträge zu DDR-SDRAM und vieles mehr!<br />

Werner Fischer,<br />

Technical Specialist<br />

MEHR ALS NUR EIN WIKI<br />

• IT Know-how der Server-Experten<br />

• Konkrete Problemlösungen<br />

• Über 700 Artikel und Hintergrundinfos<br />

zu Servertechnologien<br />

• Installations- und Konfigurationsanleitungen<br />

Beiträge unserer Experten unter:<br />

www.thomas-krenn.com/tk_wiki<br />

Thomas Krenn steht für Server made in Germany. Wir<br />

assemblieren und liefern europaweit innerhalb von 24<br />

Stunden. Unter www.thomas-krenn.com können Sie<br />

Ihre Server individuell konfi gurieren.<br />

Unsere Experten sind rund um die Uhr für Sie unter<br />

+49 (0) 8551 9150-0 erreichbar<br />

(CH: +41 (0) 848207970, AT +43 (0) 7282 20797-3600)<br />

Made in Germany!<br />

Verkauf erfolgt ausschließlich an Gewerbetreibende, Firmen, Freiberufler (Ärzte, Rechtsanwälte etc.), staatliche Institutionen und Behörden. Druckfehler, Irrtümer und Änderungen in Preis und Ausstattung vorbehalten.<br />

Unsere Versandkosten richten sich nach Gewicht und Versandart. Genaue Preisangaben finden Sie unter: www.thomas-krenn.com/versandkosten. Thomas-Krenn.AG, Speltenbach-Steinäcker 1, D-94078 Freyung


Login<br />

Admin-Story<br />

© Pedro Antonio Salaverrà a Calahorra, 123RF<br />

Aus dem Tagebuch eines IT-Nomaden<br />

Geflickt<br />

Das neue Spielzeug liegt auf dem Tisch, nur leider funktioniert es mit der<br />

aktuell eingesetzten Linux-Distribution nicht. Was tun? Ein eigenes RPM-<br />

Paket bringt die passende Software auf den Rechner. Die neueste Folge<br />

der Admin-Story verrät, wie das geht. Thorsten Scherf<br />

Am Ende wurde auch ich ein Opfer des<br />

Marketings und entschloss mich, mir ein<br />

iPad zuzulegen. Ein paar Leute werden<br />

jetzt sicherlich den Kopf schütteln und<br />

fragen, wieso es denn ausgerechnet ein<br />

Apple-Produkt sein musste, schließlich<br />

gibt es auch sehr nette Tablets mit Android.<br />

Um mich nicht in endlose Diskussionen<br />

zu verstricken – die habe ich bereits<br />

hinter mir – stelle ich den Kauf einfach<br />

mal als Fakt dar.<br />

Da ich sehr viel unterwegs bin, habe ich<br />

das Tablet meistens bei mir und nutze es<br />

oft, um Fotos direkt ins Netz oder auf den<br />

Computer zu übertragen. Das klappt mit<br />

iOS-Geräten, dank Libimobiledevice [1],<br />

auch ganz hervorragend. Mit der Library<br />

ist es problemlos möglich, alle Arten von<br />

Media-Dateien zwischen dem Tablet und<br />

Linux-Geräten zu synchronisieren, sogar<br />

die Aktivierung von iPhones funktioniert<br />

damit reibungslos.<br />

Vor einiger Zeit war es wieder so weit,<br />

es hatten sich jede Menge Bilder und<br />

Podcasts auf dem iPad angesammelt, und<br />

ich wollte diese gerne auf mein Desktop-<br />

System übertragen. Für die Bilder benutze<br />

ich Shotwell, bei Audiodateien hat<br />

sich Banshee bewährt. Beide Tools sind<br />

mittels Libimobiledevice in der Lage, die<br />

Dateien vom Tablet zu synchronisieren<br />

und zu verwalten. Nach dem Anschluss<br />

des Gerätes werde ich diesmal jedoch bitterlich<br />

enttäuscht. Nautilus meldet, dass<br />

es Probleme beim Einbinden des Gerätes<br />

gibt. Auch manuelle Versuche führen<br />

nicht zum gewünschten Erfolg. Was war<br />

geschehen? Ein schneller Blick in das<br />

Libimobiledevice-Forum bestätigt meinen<br />

Verdacht: Das kurz zuvor durchgeführte<br />

Update auf iOS 5 war schuld.<br />

Bei einem kurzen Zwischenstop im IRC-<br />

Kanal der Software bestätigen mir die<br />

Entwickler, dass das Git-Repository zwar<br />

schon Patches für iOS 5 enthält, diese<br />

aber noch nicht als Teil einer Archiv-<br />

Datei, geschweige denn in Form eines<br />

fertigen Installationspaketes verfügbar<br />

sind. Soll ich etwa so lange warten, bis<br />

die Maintainer des entsprechenden RPM-<br />

Paktes die Patches einbauen oder lieber<br />

selbst aktiv werden und ein eigenes Paket<br />

bauen?<br />

Ersteres hätte den Vorteil, dass ich nicht<br />

in der Paketverwaltung meines Systems<br />

herumfusche und eventuelle Probleme<br />

beim nächsten Paket-Update provoziere,<br />

allerdings könnte ich dann nicht mehr<br />

auf mein Tablet zugreifen und müsste<br />

so lange warten, bis ein neues Paket mit<br />

den notwendigen Patches zur Verfügung<br />

steht. So lange will ich jedoch nicht warten<br />

und entschließe mich doch, ein eigenes<br />

Paket zu bauen.<br />

Ausgecheckt<br />

Libimobiledevice setzt als Versionskontrollsystem<br />

Git ein. Um an die aktuellen<br />

Patches zu kommen, ist es am einfachsten,<br />

sich den kompletten Source-Baum<br />

aus dem Git-Repository des Projektes<br />

zu laden. Natürlich darf auch Rpmbuild<br />

nicht fehlen. Wenn die nötigen Entwicklungswerkzeuge<br />

und Bibliotheken auf einem<br />

Fedora-System noch fehlen, hilft der<br />

Aufruf von »yum groupinstall Development<br />

Libraries Development Tools« wei-<br />

14 Ausgabe 01-2012 Admin www.admin-magazin.de


Admin-Story<br />

Login<br />

ter. Wer erst einmal nachsehen möchte,<br />

welche Software er sich auf das eigene<br />

System holt, dem sei die Yum-Option<br />

»groupinfo« ans Herz gelegt.<br />

Bevor es ans Bauen eines neuen RPM-<br />

Paketes geht, ist zuerst das aktuellste<br />

Source-Paket aus dem Respository der<br />

Distribution zu laden:<br />

yumdownloader ‐‐source libimobiledevice<br />

Mittels »rpm ‐i libimobiledevice*.rpm«<br />

packt RPM das Paket aus und speichert<br />

die Source Dateien unterhalb von<br />

»~/rpmbuild/SOURCES«. Das Specfile,<br />

also der Bauplan für das Paket, liegt<br />

in »~/rpmbuild/SPECS«. Im Specfile<br />

findet sich ein Hinweis darauf, welche<br />

Version der Software in dem Paket zum<br />

Einsatz kommt, in diesem Fall ist es die<br />

Version 1.1.1.<br />

Parallel zu den Sourcen des RPM-Paketes,<br />

sind nun ebenfalls die aktuellen Sourcen<br />

aus dem Git-Repository des Software notwendig,<br />

schließlich suche ich die aktuellen<br />

Patches, um mein iOS-5-Problem zu<br />

beheben. Mittels Git hole ich diese also<br />

auf meinen eigenen Rechner:<br />

git clone git://git.sukimashita.com/U<br />

libimobiledevice.git<br />

Hierdurch entsteht der Unterordner<br />

»libimobiledevice«, in dem sich die<br />

Quellcode-Dateien befinden. Mit ein<br />

bisschen Git-Kung-Fu erhält man schnell<br />

einen Überblick über das Projekt. Mittels<br />

»git tag ‐l« zeigt Git beispielsweise die<br />

bekannten Tags auf. Das sind einfache<br />

Label, mit denen man auf bestimmte<br />

Snapshots der Software zurückgreifen<br />

kann. Tags werden gerne eingesetzt, um<br />

Release-Stände mit einem Label zu versehen.<br />

Das letzte Tag lautet 1.1.1, das<br />

deutet also darauf hin, dass dies wirklich<br />

das letzte Release der Software war. Das<br />

letzte verfügbare Tar-Archiv auf der Webseite<br />

trägt ebenfalls diese Versionsnummer.<br />

Jedoch heißt dies natürlich nicht,<br />

dass die Entwicklung seitdem stillsteht.<br />

Der folgende Git-Aufruf bestätigt, dass<br />

seit dem 1.1.1-Release einiges im Repository<br />

los war (Listing 1).<br />

Es wurden also 51 Zeilen im Programmcode<br />

hinzugefügt und 34 entfernt, das<br />

Ganze verteilt auf sieben Dateien. Mich<br />

interessieren natürlich die Commit-Messages,<br />

die jede Änderung dokumentieren<br />

(Listing 2).<br />

Das sieht doch sehr vielversprechend<br />

aus: Gleich zwei Patches enthalten einen<br />

Hinweis auf iOS-5-spezische Änderungen<br />

(Zeilen 2 und 6). Die will ich haben. Da<br />

es nichts schaden kann, auch die anderen<br />

Patches mit in mein eigenes Paket aufzunehmen,<br />

schreibe ich alle verfügbaren<br />

Änderungen in eine Patchdatei. Das geht<br />

mit einem Aufruf von<br />

git diff 1.1.1..HEAD > ~/rpmbuild/U<br />

SOURCES/ios5.patch<br />

Bevor ich weitermache, schaue ich mir jedoch<br />

erst einmal die Änderungen an. Da<br />

keine bösen Überraschungen zu erwarten<br />

sind, editiere ich das zuvor heruntergeladene<br />

Specfile von Libimobiledevice und<br />

führe die Patch-Datei in der Preamble<br />

mittels »Patch1: ios5.patch« auf.<br />

Paketbau<br />

In der »prep«-Sektion sorgt die Anweisung<br />

»%patch1 ‐p1« dafür, dass die Patches<br />

auch wirklich auf die Quellen der<br />

Software angewendet werden und die<br />

Änderungen nach dem Bauen des Paketes<br />

zur Verfügung stehen. Das klappt<br />

übrigens ohne große Probleme mittels:<br />

rpmbuild ‐bb ~/rpmbuild/SPECS/U<br />

libimobiledevice.spec<br />

Vor dem Aufruf ist es erst einmal notwendig,<br />

die Release-Nummer im Specfile zu<br />

erhöhen, damit der RPM-Paketmanager<br />

das Paket auch wirklich als Update erkennt.<br />

Mit dem so erzeugten Paket aktualisiere<br />

ich schließlich mein System<br />

per »yum update libimobiledevice«. Die<br />

Listing 2: Kommentare<br />

01 # git log ‐‐pretty=one 1.1.1..HEAD<br />

Spannung steigt, als ich mein iPAD erneut<br />

an den Rechner anschließe.<br />

Anschluss<br />

Wie erhofft, meldet Nautilus nun, dass<br />

ein neues Gerät gefunden wurde und<br />

hängt es auch gleich ein. Der Zugriff<br />

auf meine Media-Dateien ist nun wieder<br />

ohne Prob leme möglich. Auch meine<br />

Frau freut sich, hat sie ihren Mac nun<br />

wieder ganz für sich allein, ohne ständig<br />

von jemandem genervt zu werden, der<br />

mal eben sein Tablet syncen will. (ofr) n<br />

Infos<br />

[1] Libimobiledevice:<br />

[http:// www. libimobiledevice. org]<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 er<br />

gerne an Marathonläufen teil.<br />

Listing 1: Repository-Status<br />

01 # git diff 1.1.1..HEAD ‐‐stat<br />

02 configure.ac | 2 +‐<br />

03 src/idevice.c | 17 +++‐‐‐‐‐‐‐‐‐‐‐‐‐‐<br />

04 src/lockdown.c | 31<br />

+++++++++++++++++++++++‐‐‐‐‐‐‐‐<br />

05 src/notification_proxy.c | 4 +++‐<br />

06 tools/idevicebackup2.c | 18<br />

+++++++++++++‐‐‐‐‐<br />

07 tools/ideviceimagemounter.c | 1 ‐<br />

08 tools/ideviceinfo.c | 12 ++++++++‐‐‐‐<br />

09 7 files changed, 51 insertions(+), 34 deletions(‐)<br />

02 e855f246b3d869a60375207fde1294bbe761fe23 lockdown: iOS 5: handle 'Error' key in lockdown_check_result<br />

03 d2db9b97b0487e3e0c65cca0e0dd02a747a61113 Fix memory leak in idevice_device_list_free<br />

04 d51431edc3987cb9e595fdec874cdf869935d21d idevicebackup2: plug another memory leak<br />

05 c90fc4c934ac7b024c1fc1813bb3cffb5333e18f lockdown: move writing of device uuid to client struct inside<br />

lockdownd_client_new()<br />

06 f0487376671ffd6ac3fc121657f1fbd0acea3cb0 lockdown: fix support for iOS 5<br />

07 f8f3f299a56aeccce1b978fed7620137f7072518 idevicebackup2: plug a small memory leak<br />

08 ceae1d897597c66c19c2ed30b3049ce09db78233 ideviceimagemounter: remove bogus g_free()<br />

09 565b5901d666de3bfe538be27aebb9f443de98f0 notification_proxy: use free() instead of g_free()<br />

10 5c10f12e408b11afbd7c3cc93ddf7d85f1527417 ideviceinfo: fix possible segmentation fault when parsing<br />

empty data nodes<br />

11 27d0da3bc196d28c1095e7c74054f5a6efb7ccf2 idevicebackup2: fix restore command option handling<br />

12 f20cf2b4f14b66f38984e21dbed41da27c03e23a idevicebackup2: Add typedef for GStatBuf for backwards<br />

compatibility<br />

13 6dccecddf012a0a404d121cc2c42ddce7c485fb7 Remove deprecated gnutls_*_set_priority() and use gnutls_<br />

priority_set_direct()<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

15


Login<br />

Leserbriefe<br />

Leser-Feedback<br />

Leserbriefe<br />

Haben Sie Anregungen, Kritik oder Kommentare? Dann schreiben Sie<br />

an [leserbriefe@admin‐magazin.​de]. Die Redaktion behält es sich vor, die<br />

zuschriften und Leserbriefe zu kürzen. Sie veröffentlicht alle Beiträge<br />

mit Namen, sofern der Autor nicht ausdrücklich Anonymität wünscht.<br />

alexwhite, 123RF<br />

Datenbankvergleich<br />

06/​2011, S. 40: Bei den Benchmarks der<br />

von PostgreSQL und MySQL ist einiges<br />

unklar: Zum einen sollte man immer die<br />

Rahmenbedingungen angeben: Auf welcher<br />

Hardware liefen die Benchmarks,<br />

war es identische Hardware, welches OS,<br />

welcher Kernel und welches Dateisystem<br />

wurden genutzt? Gab es ein RAID? Ist<br />

es ein reiner SQL-Server? Und liegen die<br />

Daten auf verschiedenen Platten/​Partitionen?<br />

Warum wurde nicht die Mount-<br />

Option »noatime« gesetzt? Desweiteren<br />

war der Benchmark relativ einseitig, da<br />

es überwiegend DML (Update, Insert,<br />

Delete) war. Jedoch hätten Sie auch<br />

DQL(Select)-Abfragen nehmen sollen.<br />

Grafikkarten testet man ja auch nicht<br />

nur mit einem Benchmark.<br />

In der vorigen Ausgabe vergleichen Sie im<br />

PostgreSQL-Artikel ein 20-Disk-RAID10-<br />

Array mit einer SSD. Finden sie nicht,<br />

dass der Vergleich etwas hinkt? Ein fairer<br />

Vergleich wäre gewesen, entweder gleich<br />

viele Platten zu nehmen oder soviele zu<br />

verwenden, dass der gleiche Preis dabei<br />

herauskommt.<br />

Stefan Krüger (auf Google+)<br />

Beim Datenbank-Benchmark ist die Hardware<br />

auf S. 42, erste Spalte unten, klar<br />

beschrieben und es steht auch unzweideutig<br />

da, dass alle Messungen auf derselben<br />

Hardware liefen. In diesem Punkt kann<br />

ich die Kritik nicht nachvollziehen.<br />

Der Benchmark deckt nur einen bestimmten<br />

Aspekt ab, im vorliegenden Fall nur<br />

einen OLTP-Workload. Selbstverständlich<br />

gibt es auch andere Aspekte, die man<br />

Für Kommentare und Anregungen können Sie mit der Redaktion auch über die Facebook-Seite in Kontakt<br />

treten, die Sie unter [http://​www.​facebook.​com/​adminmagazin] finden.<br />

testen könnte, nur ist es leider unmöglich<br />

alle denkbaren Szenarien in einem einzigen<br />

Artikel unterzubringen.<br />

Der Vergleich verschiedener Disk-Arrays<br />

mit einer SSD in Heft 5 ist auch nicht<br />

unfair, sondern aus meiner Sicht recht<br />

erhellend. Aus Kostengründen bildet man<br />

nun mal normalerweise keine Arrays mit<br />

20 SSDs, sondern nimmt dafür in der<br />

Regel die vergleichsweise billigen Festplatten.<br />

Diese Variante hat ihre Vorteile – und<br />

SSDs haben andere Vorteile. Das arbeitet<br />

der Beitrag klar heraus, sodass man sich<br />

in jeder Situation für die optimale Lösung<br />

entscheiden kann. (Jens-Christoph<br />

Brendel)<br />

Archipel<br />

06/​2011, S. 62: Die Virtualisierungs-GUI<br />

Archipel macht zwar optisch einen guten<br />

Eindruck, aber wieder einmal handelt<br />

es sich nur um Beta-Software, die sich<br />

für den praktischen Einsatz kaum eignet.<br />

Warum gibt es immer wieder Tests von<br />

offensichtlich unausgegorenen Programmen?<br />

Martin Binser (per E-Mail)<br />

In den Anwendungsfeldern Virtualisierung<br />

und Cloud Computing vollzieht sich<br />

die Entwicklung in rasender Geschwindigkeit.<br />

Das <strong>ADMIN</strong>-<strong>Magazin</strong> versucht<br />

deshalb, seine Leserinnen und Leser<br />

auch über interessante Projekte auf dem<br />

Laufenden zu halten, die noch nicht völlig<br />

ausgereift sind. Daneben nehmen wir<br />

selbstverständlich auch immer wieder<br />

bewährte und stabile Software unter die<br />

Lupe. (Oliver Frommel)<br />

n<br />

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

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

16 Ausgabe 01-2012 Admin www.admin-magazin.de


NUR 3,56€ *<br />

pro vServer in der Customer Cloud<br />

Endlich mit der Cloud<br />

mal richtig sparen!<br />

Die Private Cloud, die sich jedes Unternehmen leisten kann. Sparen Sie Ressourcen,<br />

Manpower und Budget: Ab 15,45 €* pro Monat können Sie sich Ihre eigene Virtual- Core®<br />

Customer Cloud ins Unternehmen holen. Gestalten Sie Ihre IT-Infrastruktur durch eine<br />

moderne und intelligente Virtualisierung so flexibel wie noch nie!<br />

Jetzt: 6 Monate kostenlos testen unter www.virtual-core.de<br />

* Preise inkl. MwSt.<br />

Virtual-Core® ist eine eingetragene Marke der Firma KAMP Netzwerkdienste GmbH – www.kamp.de


Login<br />

Think Twice<br />

Warum müssen Open-Source-Programmierer ständig das Rad neu erfinden?<br />

Vergebliche<br />

Liebesmüh<br />

Braucht die Menschheit wirklich 315 Linux-Distributionen? Die ewige Neuerfindung des Gleichen wird gerne als<br />

Vorzug der Open-Source-Welt gepriesen. Tatsächlich führt sie aber nur zu einem Wildwuchs unausgegorener<br />

Software. Oliver Frommel<br />

Als im letzten <strong>ADMIN</strong>-Heft mein Kollege<br />

Brendel die Vielfalt an Open-Source-<br />

Software lobte, war ich, vorsichtig gesagt,<br />

etwas überrascht. Denn der Schwerpunkt<br />

dieses Heftes zeigt, wohin das führt: Mehr<br />

als ein Dutzend Ableger des <strong>Monitoring</strong>-<br />

Paketes Nagios gibt es mittlerweile, da<br />

drängt sich doch schnell die Frage auf,<br />

wem dieses Chaos nützen soll.<br />

Heute existieren über 300 Linux-Distributionen<br />

mit mindestens vier verschiedenen<br />

Paketmanagement-Systemen [1].<br />

Neuerdings fangen die Linux-Entwickler<br />

an, verschiedene Init-Systeme wie System-V,<br />

Upstart, Systemd und so weiter zu<br />

verwenden. Jetzt muss sogar ein neues<br />

Logging-Subsystem her, meint Lennart<br />

Poettering, der sich schon durch die Neuerfindung<br />

von Linux-Audio per Pulseaudio<br />

einen Namen gemacht hat.<br />

Natürlich haben Hersteller und Systemhäuser<br />

Interesse daran, Geld zu verdienen.<br />

Da mag es naheliegen, sich ein<br />

freies Software-Paket zu nehmen, es ein<br />

bisschen anzupassen und dann mit dem<br />

eigenen Stempel zu versehen. Doch auch<br />

sonst scheint die Neigung weit verbreitet<br />

zu sein, einen Fork oder gleich ein komplett<br />

neues Projekt zu starten. Prinzipiell<br />

gibt es dagegen wenig zu sagen, schließlich<br />

leben wir in einem freien Land, und<br />

jeder kann mit seiner Zeit anfangen, was<br />

er will. Wer beispielsweise anfängt, das<br />

Programmieren zu lernen, findet nur<br />

schwer ein Anwendungsfeld, das noch<br />

gänzlich unberührt ist. Außerdem<br />

ist es für Anfänger fruchtbar, ein<br />

Projekt von Grund auf zu entwickeln<br />

– auch wenn es Vergleichbares<br />

schon gibt.<br />

Not Invented Here<br />

© Igor Zakowski, 123RF<br />

Jenseits solcher Fälle neigen<br />

aber auch gestandene Programmierer<br />

bei freien und<br />

kommerziellen Linux-Distributionen<br />

dazu, Dinge zu programmieren,<br />

die es eigentlich<br />

schon gibt. Oft drängt sich der<br />

Eindruck auf, der Grund dafür sei<br />

einfach, dass das Bestehende von<br />

jemand gemacht wurde, der nicht<br />

zum eigenen Team gehört. Im englischsprachigen<br />

Raum ist das als „Not<br />

Invented Here“ (NIH) bekannt: Wenn es<br />

nicht von uns ist, muss es schlecht sein,<br />

also neu gemacht werden. Dabei läge<br />

der Sinn von freier Software doch eher<br />

darin, gemeinsam an einem Projekt zu<br />

arbeiten, Fehler zu finden, zu beheben<br />

18 Admin www.admin-magazin.de


und es damit Stück für Stück ein bisschen<br />

besser zu machen. Vorbilder dafür finden<br />

sich im Bestand der GNU-Software, etwa<br />

der GNU-Compiler, der Editor Emacs und<br />

der zahllosen Bibliotheken und kleinen<br />

Tools, die teilweise mehr als 20 Jahre alt<br />

und entsprechend ausgereift sind.<br />

Heute hat sich die Situation umgekehrt:<br />

Kleinste Unstimmigkeiten führen sofort<br />

zur Neugründung eines Projektes, wie<br />

man es etwa bei Google beobachten kann,<br />

das sich das Motto „Don’t be evil“ auf<br />

die Fahnen geschrieben hat. Existierende<br />

Open-Source-Webbrowser wie Firefox<br />

waren nicht gut genug, also musste das<br />

eigene Chrome her. Betriebssysteme für<br />

Mobiltelefone gab es ebenfalls schon als<br />

freie Software, sogar auf Linux basierend,<br />

doch Google wollte lieber Android<br />

neu erfinden, einschließlich einer neuen<br />

Runtime-Umgebung, die aber Java doch<br />

so ähnlich ist, dass Google nun darüber<br />

mit Oracle im Patentstreit liegt.<br />

Neuerfinder Google<br />

Seit Neuestem stößt sich Google auch<br />

an Javascript, das mittlerweile auf eine<br />

mehr als 10-jährige Geschichte mit entsprechend<br />

ausgereiften Tools, Standardisierung<br />

durch die ECMA und Know-how<br />

von Entwicklern zurückblicken kann.<br />

Jetzt soll es die Neuerfindung „Dart“ richten,<br />

denn schließlich leistet man sich mit<br />

Milliardenbudget nicht umsonst Sprachentwickler<br />

wie Gilad Bracha. Dass Dart<br />

[2] sich wieder nur minimal von anderen<br />

Programmiersprachen unterscheidet,<br />

muss nicht stören. Vermutlich lassen sich<br />

die anstehenden Probleme eines Web 3.0<br />

nur damit lösen. Die ebenfalls schon bei<br />

Google von Rob Pike und Ken Thompson<br />

entwickelte Programmiersprache Go fristet<br />

derweil ein Nischendasein.<br />

Vom Ubuntu-Hersteller Canonical erreicht<br />

uns die Nachricht, man verabschiede<br />

sich demnächst von der NoSQL-<br />

Datenbank CouchDB, weil diese nicht<br />

wie gewünscht skaliere. Man rechne für<br />

den eigenen Subskriptionsdienst Ubuntu<br />

One mit einem Wachstum bis zu Millionen<br />

Benutzern, und das könne CouchDB<br />

nicht stemmen. Die Lösung für das Problem<br />

sieht Canonical aber nicht etwa darin,<br />

eine der mehr als 20 existierenden<br />

NoSQL-Datenbanken auf dem Markt<br />

oder eine gute alte SQL-Datenbank mit<br />

Sharding (verteilt über viele Rechner) zu<br />

verwenden. Damit kommen zwar Top-<br />

Ten-Websites wie Twitter und Facebook<br />

zurecht, bei Canonical soll es aber lieber<br />

eine Eigenentwicklung mit dem Arbeitstitel<br />

U1DB richten.<br />

Was bringt es?<br />

Die Vorteile der chaotischen Entwicklung<br />

sind fragwürdig. Natürlich müssen<br />

gelegentlich Pakete oder Subsysteme<br />

komplett erneuert werden, sonst gäbe<br />

es keinen technischen Fortschritt. Andererseits<br />

ist die Schrotflintenmethode<br />

auch dafür nur eingeschränkt geeignet:<br />

Jeder entwickelt munter vor sich hin,<br />

und irgendwann wird sich schon zeigen,<br />

was brauchbar ist. Problematisch wird<br />

dieses Verhalten dann, wenn es sich, wie<br />

etwa in der Linux-Welt, auf den Zustand<br />

des Gesamtsystems auswirkt. Zu viel Zersplitterung<br />

wird zur Zumutung für den<br />

Anwender oder Administrator, der sich<br />

einem riesigen Angebot gegenübersieht,<br />

aus dem er auswählen muss. Gleichzeitig<br />

leidet die Kompatibilität von Systemen<br />

wie Ubuntu und Red Hat immer mehr:<br />

Nicht nur das Paketmanagement unterscheidet<br />

sich, auch für das Init-System<br />

oder den Bootloader muss der Administrator<br />

komplett umlernen.<br />

Kollege Brendel führt im letzten <strong>ADMIN</strong>-<br />

Heft als Vorteil die Auswahl an, die dem<br />

Anwender durch die Vielzahl an Software<br />

für den gleichen Zweck zu Verfügung<br />

steht. Meistens ist die große Auswahl<br />

aber eher Bürde als Chance. Wie soll<br />

denn ein Anwender aus den 40 <strong>Monitoring</strong>-Systemen<br />

auswählen, die es auf dem<br />

freien und kommerziellen Markt gibt?!<br />

Der Psychologe Barry Schwartz hat in<br />

seinem Buch „The Paradox of Choice –<br />

Why More is Less“ dargelegt, wieso ein<br />

Überangebot die Unzufriedenheit steigert.<br />

Wenigstens für die IT-<strong>Magazin</strong>e und<br />

‐Websites hat die Sache ein Gutes, so<br />

lässt sich sarkastisch anfügen: Solange<br />

der Wildwuchs an freier Software weitergeht,<br />

gibt es für uns etwas zu schreiben.<br />

<br />

n<br />

Infos<br />

[1] Linux-Distributionen: [http:// distrowatch.​<br />

com/ dwres. php? resource=popularity]<br />

[2] Dart: [http:// www. dartlang. org]<br />

&<br />

www.admin-magazin.de<br />

Ausgabe 01-2012<br />

19


Login<br />

OSMC<br />

Notizen von der vierten Open Source <strong>Monitoring</strong> Conference (OSMC)<br />

<strong>Monitoring</strong><br />

à la mode<br />

Die OSMC ist mittlerweile ein fixer Termin im Kalender vieler Admins, die sich mit Überwachung von Soft- und<br />

Hardware auseinandersetzen. Auch in diesem Jahr führte die vom Nürnberger IT-Dienstleister Netways GmbH<br />

ausgerichtete Veranstaltung wieder viele Experten nach Franken. Jens-Christoph Brendel<br />

Abbildung 1: Olivier Jan während seines Vortrags „<strong>Monitoring</strong> solutions for the next decade“ auf der OSMC.<br />

Gute Ideen setzen sich durch. Das<br />

konnte man nicht zuletzt während der<br />

vierten Ausgabe der bewährten Nürnberger<br />

<strong>Monitoring</strong>-Konferenz bestätigt<br />

finden: Verteiltes <strong>Monitoring</strong>, Geschäftsprozessüberwachung,<br />

moderne Benutzeroberflächen<br />

– das sind nur einige der<br />

Trends, die sich nach und nach in jeder<br />

der verschiedenen Überwachungslösungen<br />

durchsetzen und deshalb in vielen<br />

Referaten auftauchten.<br />

Geteilte Last ist halbe Last<br />

Beispiel Lastverteilung: Eine einzelne<br />

Instanz für das Starten der Checks und<br />

die Verarbeitung der Rückgaben funktioniert<br />

in kleinen und mittleren Umgebungen<br />

tadellos. Muss man aber sehr<br />

viele Hosts überwachen – das haben<br />

viele schmerzlich mit dem klassischen<br />

Nagios gelernt – gelangt man mit dieser<br />

Architektur an eine Grenze. Moderne<br />

Entwicklungen wie etwa Shinken setzen<br />

deshalb von vornherein auf Lastverteilung:<br />

Jede der grundlegenden Aufgaben<br />

wie das Auslösen der Checks, das Abarbeiten<br />

von Plugins, die Benutzerbenachrichtigung<br />

und das Event-Handling oder<br />

die Rückgabeverarbeitung können hier<br />

auf jeweils beliebig viele Instanzen verteilt<br />

werden. Damit bewältigt Shinken in<br />

Benchmarks viermal so viele Checks wie<br />

der originale Nagios Core.<br />

OpenNMS konnte Ähnliches schon immer.<br />

Zumindest für das Scheduling von<br />

Checks rüstet mod_gearman das im klassischen<br />

Nagios nach, und auch Icinga hat<br />

ein solches Konzept zumindest in der<br />

Schublade. Dort soll Zero-MQ das künftige<br />

Fundament verteilter Verarbeitung<br />

bilden (Abbildung 1).<br />

Beispiel Geschäftsprozessüberwachung.<br />

Den Boss interessiert die Nummer des<br />

streikenden Routerports nicht, wohl<br />

aber welche Konsequenzen der Ausfall<br />

für Kunden und Mitarbeiter hat. Schon<br />

vor Jahren kam man darauf, das Nagios<br />

alleine mit seiner technisch orientierten<br />

Darstellung dem ungenügend gerecht<br />

wird. Seitdem blühen die Business Process<br />

Plugins. Allen voran das Business<br />

Process AddOn von Bernd Strößenreuther<br />

für Nagios, das jetzt mit seiner Hilfe noch<br />

tiefer in Incinga integriert werden soll.<br />

Aber auch Shinken verfügt seit Jahresanfang<br />

über ein ähnliches Regelwerk.<br />

Nun wartet auch Check_MK mit einer<br />

eigenen Implementation auf. Die großen<br />

kommerziellen Suiten konnten das eh<br />

schon länger.<br />

Beispiel moderne GUI. Hier geht es längst<br />

nicht mehr nur um ein paar Kurven für<br />

Messwerte-Zeitreihen. Dashboards mit<br />

frei anordenbaren Widgets sind state of<br />

the art. Icinga hat hier viele neue Ideen<br />

zu bieten, aber auch die Mitbewerber<br />

schlafen nicht: Ableger wie Centreon,<br />

Opsview oder OP5 hatten sich schon länger<br />

vom klassischen Nagios-Look&Feel<br />

gelöst, aber auch Check_MK fällt einem<br />

hier wieder ein.<br />

Gut ins Bild gesetzt<br />

Einen so umfassenden projektübergreifenden<br />

Überblick wie auf der OSMC<br />

erhält man anders nicht so leicht. Und<br />

die perfekte Organisation, das freundliche<br />

Tagungshotel oder der gemeinsame<br />

Abend in einer anregenden Location versüßen<br />

einem den Aufenthalt in Nürnberg<br />

zusätzlich.<br />

n<br />

20 Ausgabe 01-2012 Admin www.admin-magazin.de


Europe’s No.1<br />

Information Security Event<br />

SECURE THE FUTURE OF YOUR BUSINESS ASSETS,<br />

WHERE IT MATTERS<br />

>> Stay connected to your peers and network face-to-face<br />

>> Clearly navigate and understand increasingly complex legislation<br />

>> Keep up-to-date with the latest product and service solutions showcased<br />

at the event<br />

>> Source new suppliers<br />

>> Access thought-leading content through the extensive education<br />

programme<br />

For more information visit www.infosec.co.uk. If you are interested in<br />

exhibiting call +44 (0) 20 8910 7718/7991/7047<br />

or for US companies +1 203 840 5821<br />

Organised by:<br />

®<br />

24-26 April 2012<br />

Earls Court, London UK<br />

infosec.co.uk


Login<br />

Softwareschutz<br />

© braverabbit, 123RF<br />

Das gilt für Programme und Programmiersprachen<br />

Wann Software<br />

unter Schutz steht<br />

Darf man fremde Software ändern, wenn sie auch Open-Source-Code<br />

enthält? Wann ist Software patentierbar? Dieser Beitrag berichtet über<br />

die aktuelle Rechtsprechung und versucht, etwas Licht in das komplexe<br />

Softwarerecht zu bringen. Vilma Niclas<br />

Es ist nicht in jedem Fall verboten,<br />

fremde Software zu ändern. Stattdessen<br />

kann das zum einen erlaubt sein, wenn<br />

die Ursprungssoftware Open-Source-<br />

Komponenten enthält und insgesamt<br />

unter die GPL fällt. Zum anderen ist das<br />

aber auch deshalb erlaubt, weil die fragliche<br />

Software erst gar nicht urheberrechtlich<br />

geschützt ist.<br />

AVM, Hersteller des DSL-Routers Fritzbox,<br />

hatte die Cybits AG verklagt, die<br />

die Jugendschutzsoftware Surfsitter<br />

DSL vertreibt. Das Programm nutzt die<br />

Fritzbox als Plattform, rief zunächst die<br />

Original-Firmware auf und modifizierte<br />

sie dann so, dass einige Funktionen der<br />

Fritzbox deaktiviert wurden, was Nachteile<br />

mit sich brachte. Der Nutzer sah<br />

dadurch aber beispielsweise trotz aktivem<br />

Internetzugang die Statusmeldung<br />

„Nicht verbunden“. Zudem wurde die<br />

Original-Kinderschutzfunktion fälschlicherweise<br />

als aktiv bezeichnet und die<br />

Firewall deaktiviert. Neben der Fritzbox-Oberfläche<br />

erschien eine Surfsitter-<br />

Benutzeroberfläche.<br />

Rufschädigend<br />

AVM sah dies als eine nicht bestimmungsgemäße<br />

Nutzung der Firmware<br />

und wollte es unterbinden, denn viele<br />

Kunden hätten sich beim Support von<br />

AVM beschwert, da angeblich die Software<br />

nicht mehr richtig funktioniere. Die<br />

angeblichen Fehlfunktionen der Fritzbox<br />

seien jedoch auf die Installation von Surfsitter<br />

zurückzuführen. AVM verklagte das<br />

Unternehmen wegen Urheberrechtsverletzung,<br />

einem Wettbewerbsverstoß und<br />

Markenrechtsverletzung aufgrund der<br />

Produktveränderung.<br />

Die Firmware sei ein von angestellten Programmierern<br />

komplex erstelltes System<br />

mit zahlreichen Software-Modulen, deren<br />

Programmierung jeweils komplex sei. Mit<br />

der ausschließlich als Ganzes vertriebenen<br />

Fritzbox hätte AVM eine aufeinander<br />

abgestimmte Einheit aus Hardware und<br />

darauf optimierter Firmware geschaffen,<br />

in der sowohl Open-Source-Software als<br />

auch proprietäre Software enthalten sei.<br />

Dies sei insgesamt ein urheberrechtlich<br />

geschütztes Sammelwerk, heißt es in der<br />

Klage. Die Cybits AG vervielfältige mit<br />

der Software Surfsitter auch die in der<br />

Firmware enthaltene proprietäre Software<br />

von AVM. Die Entfernung einiger Dateien<br />

der Firmware sei eine nicht zulässige<br />

Umarbeitung, wobei leider nicht ganz<br />

klar aus dem Urteil hervorgeht, welche<br />

Teile der Software nun tatsächlich genau<br />

modifiziert worden waren. AVM störte<br />

sich im Wesentlichen aber nicht an der<br />

Umarbeitung, sondern daran, dass der<br />

Verbraucher die durch die Installation<br />

von Surfsitter ausgelösten Fehlfunktionen<br />

AVM zuordne. Dies beeinträchtige<br />

seinen guten Ruf und die Garantie für die<br />

Geräte und sei ein wettbewerbswidriges<br />

Verhalten.<br />

Die Cybits AG wies darauf hin, dass Nutzer<br />

von Surfsitter mit einem Häkchen<br />

22 Ausgabe 01-2012 Admin www.admin-magazin.de


Softwareschutz<br />

Login<br />

bestätigen müssten, dass die Installation<br />

von Surfsitter bewirke, dass die<br />

Onlinestatusanzeige der Fritzbox ohne<br />

Funktion sei, die Kindersicherung nicht<br />

mehr verwendet werden könne und<br />

die Firwall durch eine Linux Standard<br />

Firewall ersetzt sei. Die Cybits AG stellte<br />

ihre Verteidigung dann aber im Wesentlichen<br />

auf urheberrechtliche Aspekte<br />

ab und meinte, die Firmware genieße<br />

keinen selbstständigen, über den Schutz<br />

ihrer Bestandteile hinausgehenden eigenen<br />

urheberrecht lichen Schutz, der Bearbeitungen<br />

verbiete. Da die Firmware<br />

Open-Source-Software enthalte, würde<br />

die GPL für die gesamte Firmware als<br />

Sammelwerk gelten. Dem Verfahren war<br />

aufseiten der Cybits AG ein Linux-Programmierer<br />

beigetreten, vertreten durch<br />

den Open-Source-Experten Rechtsanwalt<br />

Dr. Till Jaeger.<br />

Infektion mit der GPL<br />

Das Landgericht Berlin (AZ 16 O 255/10)<br />

entschied über den Fall am 8. November<br />

2011: Der mit der Klage geltend gemachte<br />

urheberrechtliche Unterlassungsanspruch<br />

habe keinen Erfolg. Bei der Firmware<br />

handle es sich um ein Sammelwerk, das<br />

aus zahlreichen einzelnen Dateien bestünde.<br />

Diese seien Grundlage der einzelnen<br />

Funktionen der Firmware, etwa für<br />

die Telefonie, das WLAN oder die Kindersicherung.<br />

Teil dieses Sammelwerkes sei<br />

der Kernel, der auf dem Linux-Betriebssystem<br />

basiere und der als sogenannte<br />

Open-Source-Software den Bedingungen<br />

der GPLv2 unterliege. Hiernach sei jedem<br />

Nutzer die Benutzung und Bearbeitung<br />

nach der eingeräumten Lizenz gestattet.<br />

Allerdings sei jeder Nutzer wiederum<br />

verpflichtet nach dem sogenannten Copyleft-Prinzip,<br />

seine Bearbeitungen ebenfalls<br />

der GPL zu unterstellen, andernfalls<br />

entfalle die Nutzungslizenz. Für Sammelwerke<br />

regle § 2 GPLv2, dass Werke,<br />

die Open-Source-Software enthalten, als<br />

Ganzes den Bedingungen der GPL unterliegen.<br />

Derjenige Nutzer der von der<br />

Software profitiere, solle sich ebenfalls<br />

an den Bedingungen der GPL festhalten<br />

müssen. Das Gericht führt aus: „Die Infizierung<br />

eines Sammelwerks insgesamt<br />

bei Verwendung von Open-Source-Software<br />

in einzelnen Teilen eines Sammelwerks<br />

begegnet keinen Bedenken, da das<br />

Sammelwerk eine einheitliche Funktionalität<br />

aufweist und maßgeblich von den<br />

Open-Souce-Bestandteilen abhängt. Danach<br />

stehen den Klägern an der Firmware<br />

als Ganzes – und so sind ihre Anträge<br />

zu verstehen – keine urheberrechtlichen<br />

Unterlassungsansprüche zu.“<br />

Nach Ansicht der Autorin hätte das Gericht<br />

vielleicht anders entschieden, wenn<br />

klar festgestanden hätte, dass Surfsitter<br />

separat abgrenzbare proprietäre Computerprogramme<br />

von AVM geändert hatte.<br />

Das Gericht verneinte auch den Markenrechtsverstoß<br />

und eine gezielte Behinderung.<br />

Dennoch war die Klage teilweise<br />

erfolgreich, da die Installation der Software<br />

Surfsitter Fehlfunktionen verursache<br />

und dies die Interessen von AVM<br />

spürbar beeinträchtige. Die Funktionen<br />

würden nachteilig beeinflusst, und der<br />

Nutzer könne nicht ausmachen, auf wen<br />

dies zurückzuführen sei, besonders wenn<br />

© Paulo Cruz, 123RF<br />

Wer ist der Urheber?<br />

Ob man als angestellter Programmierer arbeitet<br />

oder als selbstständiger Auftragnehmer<br />

– Urheber bleibt dennoch immer der Programmierer<br />

oder das Team. Der Unternehmer, der<br />

den Programmierer angestellt hat, erhält das<br />

ausschließliche Nutzungsrecht, soweit im Arbeitsvertrag<br />

nichts anderes geregelt ist. Bei<br />

freien Programmierern kommt es darauf an,<br />

was vereinbart wurde. Wenn nichts geregelt<br />

ist, schützt das Gesetz den Urheber. Danach<br />

werden die Rechte nur so weit übertragen, wie<br />

es der Vertragszweck erfordert. Möglicherweise<br />

behält der Entwickler noch Rechte.<br />

er die Software nicht selbst installiert<br />

habe. Dies sei eine rufschädigende Entwertung<br />

des Produktes von AVM. Das<br />

Urteil war zum Redaktionsschluss noch<br />

nicht rechtskräftig.<br />

Ohne Garantie<br />

Deutlich wird: Die GPL kann ein Grund<br />

sein, warum man Software verändern<br />

darf. Jedoch kann das Wettbewerbsrecht<br />

dies verbieten. Anders liegt der Fall,<br />

wenn man als Anbieter von ergänzender<br />

Software klar deutlich macht, dass<br />

durch die Installation der Software gegebenenfalls<br />

der Garantieanspruch gegen<br />

den Hardwareanbieter erlischt. So<br />

heißt es etwa bei Freetz, einer anderen<br />

Firmware-Erweiterung und Modifikation<br />

für den Fritzbox-Router: „Die Original-<br />

Firmware des Herstellers wird um zusätzliche<br />

Funktionen erweitert und mit<br />

einer individuellen Zusammenstellung<br />

von Programmen ergänzt … Freetz ist<br />

freie Software und wird von Oliver Metz,<br />

Alexander Kriegisch und Team entwickelt<br />

… . WARNUNG: Die Installation einer<br />

modifizierten Firmware führt zum Verlust<br />

der Gewährleistung des Herstellers!“<br />

Gänzlich erfolglos endete der Fall Facebook<br />

gegen StudiVZ, entschieden am<br />

16.06.2009 vom Landgericht Köln (AZ 33<br />

O 374/​08): Facebook hatte Studi VZ vorgeworfen,<br />

das Look-and-Feel der Website<br />

übernommen zu haben. Hier verneinte<br />

das Gericht sowohl einen Urheber- als<br />

auch einen Wettbewerbsverstoß. Es wies<br />

Abbildung 1: Reine Daten ohne Programmanweisungen sind urheberrechtlich nicht geschützt, dasselbe gilt in<br />

aller Regel übrigens auch für Webseiten.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

23


Login<br />

Softwareschutz<br />

darauf hin, dass grundsätzlich Nachahmungsfreiheit<br />

bestünde. Zwar sei es nicht<br />

zu übersehen, dass sich beide Plattformen<br />

hinsichtlich der grafischen und funktionalen<br />

Gestaltung der Bildschirmoberflächen<br />

ähnelten oder übereinstimmten. Jedoch<br />

habe Facebook nicht beweisen können,<br />

dass PHP-Code übernommen worden sei.<br />

Es lägen keine besonderen Umstände vor,<br />

die das Nachahmen als wettbewerbswidrig<br />

erscheinen ließen. Das Look-and-Feel,<br />

also das Design einer Website ist sehr<br />

selten geschützt, es sei denn die einzelnen<br />

Elemente, wie Texte oder Bilder<br />

genießen Urheberrechtsschutz oder aber<br />

das Design ist so kreativ, dass es Schöpfungshöhe<br />

erreicht.<br />

Schutzlose Software<br />

Es kann aber auch sein, dass Software<br />

übernommen werden darf, weil sie nicht<br />

urheberrechtlich geschützt ist. Das Urheberrechtsgesetz<br />

schützt Computerprogramme<br />

als Sprachwerke und auch<br />

bereits das Entwurfsmaterial. Auch Darstellungen<br />

wissenschaftlicher oder technischer<br />

Art, wie Zeichnungen, Pläne,<br />

Karten, Skizzen, Tabellen und plastische<br />

Darstellungen genießen Urheberrechtsschutz,<br />

sofern diese persönliche geistige<br />

Schöpfungen sind, also individuellen<br />

Charakter haben.<br />

Geschützt sind nach dem Gesetz alle<br />

Ausdrucksformen eines Computerprogramms,<br />

also sowohl Objektcode als<br />

auch Source Code sowie in Hardware<br />

integrierte Software, etwa Firmware.<br />

In § 69 Urheberrechtsgesetz heißt es:<br />

„(1) Computerprogramme im Sinne dieses<br />

Gesetzes sind Programme in jeder<br />

Gestalt, einschließlich des Entwurfsmaterials.<br />

(2) Der gewährte Schutz gilt für alle<br />

Ausdrucksformen eines Computerprogramms.<br />

Ideen und Grundsätze, die einem<br />

Element eines Computerprogramms<br />

zugrundeliegen, einschließlich der den<br />

Schnittstellen zugrundeliegenden Ideen<br />

und Grundsätze, sind nicht geschützt.“<br />

Damit einher geht § 69 d Absatz 3 des<br />

Gesetzes. Danach darf man das Funktionieren<br />

eines Programms beobachten, untersuchen<br />

oder testen, um die einem Programmelement<br />

zugrundeliegenden Ideen<br />

und Grundsätze zu ermitteln, wenn dies<br />

durch Handlungen zum Laden, Anzeigen,<br />

Ablaufen, Übertragen oder Speichern des<br />

Programms geschieht, zu denen der Nutzer<br />

berechtigt ist.<br />

Die Gedanken sind frei<br />

Geschützt sind aber eben nur Ausdrucksformen.<br />

Das Urheberrecht will keine bestimmten<br />

Programmfunktionen monopolisieren.<br />

Wie sich Idee und Ausdruck<br />

voneinander abgrenzen, verrät das Gesetz<br />

nicht. Frei sind auch allgemeingültige<br />

wissenschaftliche Lehren, abstrakte<br />

Lehrsätze, Rechenregeln, mathematische<br />

Formeln oder Grundsätze des Fachgebietes,<br />

wenn diese einem Programm<br />

zugrunde liegen. Es kommt also immer<br />

drauf an, was genau ein Algorithmus beinhaltet.<br />

Wird nur die reine technische,<br />

im Fachgebiet vorgegebene wissenschaftliche<br />

Lehre umgesetzt beziehungsweise<br />

fest standardisierte Betriebsabläufe, ohne<br />

dass der Programmierer dabei einen eigenen<br />

Gestaltungsspielraum hat, spräche<br />

dies gegen einen Schutz. Zur Frage wann<br />

Algorithmen geschützt sind, gibt es allerdings<br />

sehr vielfältige Rechtsansichten.<br />

Nicht geschützt sind ferner reine Daten,<br />

solange in ihnen keine Folge von Befehlen<br />

liegt, die das Programm zur Kontrolle<br />

oder Steuerung des Programmablaufes<br />

nutzt.<br />

Die WIPO, die World Intellectual Property<br />

Organisation, definiert den Begriff Computerprogramm<br />

in § 1 (i) der Mustervorschriften<br />

der WIPO wie folgt: „… eine<br />

Folge von Befehlen, die nach Aufnahme<br />

in einem maschinenlesbaren Träger fähig<br />

sind zu bewirken, dass eine Maschine mit<br />

informationsverarbeitenden Fähigkeiten<br />

eine bestimmte Funktion oder Aufgabe<br />

oder ein bestimmtes Ergebnis anzeigt,<br />

ausführt oder erzielt.“<br />

HTML reicht nicht<br />

Es gibt kaum Rechtsprechung zu den einzelnen<br />

technischen Arten von Computerprogrammen.<br />

Nur bei HTML-Code ist die<br />

Rechtsprechung eindeutig. Er reicht als<br />

reine Auszeichnungssprache nicht aus,<br />

um in den Genuss des urheberrechtlichen<br />

Schutzes zu gelangen, es sei denn andere<br />

Komponenten mit Kontrollstrukturen im<br />

Code, wie JAVA-Script oder PHP sind<br />

sehr eng mit dem HTML verzahnt. Dies<br />

könnte theoretisch bei Webseiten der Fall<br />

sein, die auf HTML5 basieren, weil es<br />

dort zu einer technischen Verflechtung<br />

zwischen JavaScript und HTML kommt.<br />

Solange der Code aber im Wesentlichen<br />

nur Daten über die Formatierung der<br />

Seite enthält und nur Texte und Grafiken<br />

sichtbar macht, ist dieser nicht als Computerprogramm<br />

geschützt. Andererseits<br />

nahm das OLG Rostock den Schutz einer<br />

HTML-Seite ausnahmsweise an, weil<br />

der Code eine textbasierte Suchmaschinenoptimierung<br />

enthielt, die als Sprachwerk<br />

urheberrechtlichen Schutz genoss.<br />

Es kommt also sehr auf den Einzelfall an.<br />

Soweit das Programm Kontrollstrukturen<br />

oder Steuerbefehle enthält wie bei Java,<br />

Abbildung 2: Das Dekompilieren, also das Rückverwandeln maschinensprachlicher Anweisungen in<br />

menschenlesbaren Quellcode, ist unter bestimmten Bedingungen erlaubt.<br />

24 Ausgabe 01-2012 Admin www.admin-magazin.de


Softwareschutz<br />

Login<br />

C+ oder C++ sind die Anforderungen<br />

an Computerprogramme aber nicht mehr<br />

allzu hoch.<br />

Schutz nur für<br />

Anspruchsvolles?<br />

Im Gesetz heißt es: „Computerprogramme<br />

sind nur dann geschützt, wenn<br />

sie individuelle Werke in dem Sinne darstellen,<br />

dass sie das Ergebnis der eigenen<br />

geistigen Schöpfung ihres Urhebers sind.<br />

Zur Bestimmung ihrer Schutzfähigkeit<br />

sind keine anderen Kriterien, insbesondere<br />

nicht qualitative oder ästhetische,<br />

anzuwenden.“<br />

Die Anforderungen an die Schöpfungshöhe<br />

von Computerprogrammen sind seit<br />

Umsetzung der Europäischen Richtlinie<br />

über den Rechtsschutz von Computerprogrammen<br />

im Urheberrechtsgesetz nicht<br />

mehr allzu hoch. Früher war das Können<br />

eines Durchschnittsprogrammierers,<br />

also die rein handwerksmäßige Umsetzung,<br />

die mechanisch-technische Aneinanderreihung<br />

und Zusammenfügung<br />

des Materials, nicht geschützt. Dies ist<br />

heute anders. Es bedarf weder einer überdurchschnittlichen<br />

Individualität noch einer<br />

besonderen technischen Qualität. Es<br />

muss von einem Menschen geschaffen<br />

sein und auf eine schöpferische Leistung<br />

zurückgehen. Der Programmierer muss<br />

Gestaltungsspielraum gehabt und diesen<br />

ausgenutzt haben.<br />

Softwarepatente<br />

Software ist nur dann patentierbar, wenn sie<br />

eine neue technische Erfindung ist, die auf einer<br />

erfinderischen Tätigkeit beruht und gewerblich<br />

anwendbar ist. Das deutsche Patentgesetz<br />

nimmt Computerprogramme ausdrücklich<br />

vom Schutz aus, auch das europäische Recht.<br />

„Computerprogramme als solche“ sind nicht<br />

patentfähig. Nur computerimplementierte Erfindungen<br />

sind patentierbar. Dies ist der Fall,<br />

wenn Software zur Lösung eines technischen<br />

Problems eingesetzt wird und die Lösung darin<br />

Das sind Indizien für eine individuelle<br />

und damit schutzwürdige Leistung des<br />

Programmierers: Nutzt der Programmierer<br />

seine analytisch-konzeptionellen<br />

Fähigkeiten, sein Geschick, seinen Einfallsreichstum<br />

und sein planerisch-konstruktives<br />

Denken? Ausgenommen sind<br />

nur noch ganz triviale Programmierleistungen,<br />

also routinemäßige und allgemein<br />

angewandte Programmierungen,<br />

die jeder Programmierer auf ähnliche<br />

Art und Weise so umsetzen würde. Auch<br />

eine Aneinanderreihung von allgemein<br />

bekannten Programmbausteinen wäre<br />

demnach schutzlos. Nach dem Bundesgerichtshof<br />

wird bei komplexen Computerprogrammen<br />

die Individualität der<br />

Programmgestaltung sogar vermutet,<br />

wenn der Rechteinhaber dazu kurz etwas<br />

vorträgt. Nur wenn die Gegenseite<br />

darlegt, dass es sich um eine nur triviale<br />

Programmierleistung handelt, wird der<br />

besteht, eine Software so auszugestalten, dass<br />

diese auf die technischen Gegebenheiten der<br />

Hardware Rücksicht nimmt. Das Programm muss<br />

etwa die internen Funktionen der Hardware verbessern,<br />

also zum Beispiel dazu führen, dass<br />

der Arbeitsspeicher besser ausgenutzt wird,<br />

was kürzere Speicherzugriffszeiten bewirkt.<br />

Wenn also Hard- und Software unmittelbar aufeinander<br />

einwirken, kann ein Schutz gegeben<br />

sein. Auch hier besteht also ein erheblicher<br />

Auslegungsspielraum.<br />

Sachverhalt näher untersucht. Es ist im<br />

Ganzen also eine Ausnahme, dass ein<br />

Programm nicht geschützt ist.<br />

Sind Programmiersprachen<br />

geschützt?<br />

Umstritten ist bislang, ob eine Programmiersprache<br />

urheberrechtlich geschützt<br />

ist. Dem Europäischen Gerichtshof liegt<br />

dazu aktuell ein Fall vor. Er betrifft die<br />

Programmiersprache SAS (Statistical Analysis<br />

System). Die World Programming<br />

Limited (WPL) schuf eine alternative<br />

Software, das World Programming System<br />

(WPS). Es bildet einen großen Teil<br />

der Funktionalitäten von SAS-Komponenten<br />

nach. Die Programme der Kunden<br />

sollen, wenn sie mit WPS betrieben werden,<br />

genauso funktionieren, wie wenn<br />

sie mit den SAS-Komponenten betrieben<br />

würden. WPL richtete das Programm da-<br />

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

ACADEMY<br />

Online-Training<br />

IT-Sicherheit Grundlagen<br />

mit Tobias Eggendorfer<br />

Themen (Auszug):<br />

❚ physikalische Sicherheit<br />

❚ Sicherheitskonzepte<br />

❚ Sicherheitsprüfung<br />

❚ logische Sicherheit<br />

• Betriebssystem<br />

• Netzwerk<br />

20%<br />

Treue-Rabatt für<br />

Abonnenten<br />

Deckt in Teilbereichen auch das Prüfungswissen für LPIC-303-Inhalte ab.<br />

Inklusive Benutzer- und Rechteverwaltung, Authentifizierung,<br />

ACLs sowie wichtige Netzwerkprotokolle und mehr!<br />

Das Grundlagentraining für IT-Sicherheit richtet sich an Systemadministratoren und solche, die es<br />

werden wollen ebenso wie an ambitionierte Heimanwender. Nur 299 E inkl. 19 % MwSt.<br />

@Kirsty Pargeter, 123RF<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

Informationen und Anmeldung unter: academy.linux-magazin.de/sicherheit<br />

25


Login<br />

Softwareschutz<br />

Abbildung 3: Das Projekt Freetz – hier die Homepage – verweist klar auf den Garantieverlust in seiner Folge.<br />

her so ein, dass es das SAS-Datenformat<br />

versteht und interpretieren kann.<br />

Es gab keine Anhaltspunkte dafür, dass<br />

WPL Zugang zum Quellcode der SAS-<br />

Komponenten gehabt oder diesen kopiert<br />

haben könnte. Dem gleichnamigen Softwarehersteller<br />

gefiel dies nicht, und er<br />

verklagte den Konkurrenten wegen Urheberrechtsverletzung.<br />

Der High Court of<br />

Justice, der über den Fall zu entscheiden<br />

hat, legte dem EuGH mehrere spannende<br />

Fragen zur Auslegung der Europäischen<br />

Computersoftwarerrichtlinie in puncto<br />

Interoperabilität, Dekompilierung und<br />

der Frage vor, wann Programmiersprachen<br />

geschützt seien. In seinen Schlussanträgen<br />

meint der Generalanwalt, Programmiersprachen<br />

an sich seien nicht<br />

schutzfähig nach dem Urheberrecht. Die<br />

Programmiersprache sei ein Element, mit<br />

dem der Maschine Befehle erteilt werden<br />

könnten. Die Programmiersprache<br />

sei aber nur das Mittel, um sich auszudrücken,<br />

nicht aber die Ausdrucksform<br />

selbst und damit nicht geschützt.<br />

Er schreibt weiter: Ließe man zu, dass<br />

eine Funktionalität eines Computerprogramms<br />

als solche geschützt sei, dann<br />

würde dies dazu führen, Ideen zu monopolisieren.<br />

Dies würde wiederum dem<br />

technischen Fortschritt und der industriellen<br />

Entwicklung schaden. Allerdings<br />

könnten die jeweils eingeschlagenen<br />

Wege durchaus urheberrechtlich geschützt<br />

sein, auf denen man zu einer<br />

Konkretisierung der Funktionalitäten eines<br />

Programms gelange. Die Kreativität,<br />

das Können und der Erfindungsgeist des<br />

Programmieres kämen in der Art und<br />

Weise zum Ausdruck, wie das Programm<br />

ausgearbeitet sei.<br />

Interoperabilität ist<br />

erwünscht<br />

Im deutschen Gesetz, welches auf der<br />

Europäischen Richtlinie beruht, heißt es,<br />

die den Schnittstellen zugrunde liegenden<br />

Ideen und Grundsätze seien frei. Nur<br />

der Code, der die Schnittstelle umsetzt,<br />

könne im Einzelfall Urheberrechtsschutz<br />

genießen. Das Ziel des Gesetzgebers war<br />

Interoperabilität. § 69 e Urheberrechtsgesetz<br />

erlaubt daher die Dekompilierung,<br />

wenn diese unerlässlich ist, um die erforderlichen<br />

Informationen zur Herstellung<br />

der Interoperabilität eines unabhängig<br />

geschaffenen Computerprogramms mit<br />

anderen Programmen zu erhalten.<br />

Dies muss sich jedoch auf die Teile des<br />

ursprünglichen Programms beschränken,<br />

die notwendig sind, die Interoperabilität<br />

herzustellen. Ferner muss dies durch<br />

jemanden geschehen, der als Lizenznehmer<br />

oder anders zur Nutzung des<br />

Programms berechtigt ist und dem die<br />

für Interoperabilität notwendigen Informationen<br />

nicht ohne Weiteres vorliegen.<br />

Die so gewonnenen Informationen dürfen<br />

auch nicht zu anderen Zwecken als<br />

zur Herstellung der Interoperabilität des<br />

unabhängig geschaffenen Programms<br />

verwendet und nicht an Dritte weitergegeben<br />

werden, es sei denn, dass dies<br />

für die Interoperabilität des unabhängig<br />

geschaffenen Programms notwendig ist.<br />

In der Praxis trennt man oft das Dekompilierungs-<br />

vom Entwicklungsteam, um<br />

dies sicherzustellen. Wichtig: Die so gewonnenen<br />

Informationen dürfen nicht<br />

für die Entwicklung, Herstellung oder<br />

Vermarktung eines Programms mit im<br />

Wesentlichen ähnlicher Ausdrucksform<br />

oder für irgendwelche anderen das Urheberrecht<br />

verletzenden Handlungen verwendet<br />

werden. Bei der Auslegung des<br />

Gesetzes ist jeweils darauf zu achten,<br />

dass dies weder die normale Auswertung<br />

des Werkes beeinträchtigt, noch die berechtigten<br />

Interessen des Rechtsinhabers<br />

unzumutbar verletzt.<br />

Diese Normen sind vielen Entwicklern<br />

nicht bekannt und zugegeben sehr<br />

schwammig formuliert. Das Urteil des<br />

EuGH wird einige offene Fragen in Sachen<br />

Interoperabilität klären. Sollte das<br />

Gericht dem Generalanwalt folgen, wäre<br />

dies ein sehr positives Signal für kleinere,<br />

alternative Softwareanbieter und könnte<br />

Innovationen fördern.<br />

Fazit<br />

Grundsätzlich gilt: Die Ideen und Gedanken<br />

sind frei, und die Nachahmung ist<br />

erwünscht, nur Copy und Paste ist unerwünscht.<br />

Die Grenze zwischen Nachbau<br />

und Eigenschöpfung kann man leider oft<br />

nicht trennscharf ziehen, und letztendlich<br />

kommt es immer darauf an, ob es gelingt,<br />

die Übernahme von Code zu beweisen.<br />

Open-Source-Software ist – obwohl der<br />

Code offenliegt – auch urheberrechtlich<br />

geschützt, und ihr Anwender muss die<br />

GPL beachten, wenn er sie nicht ausschließlich<br />

nutzen, sondern bearbeiten<br />

möchte. Verstößt er dagegen, entfällt das<br />

Nutzungsrecht. Die Anforderungen an<br />

den Softwareschutz sind grundsätzlich<br />

gering, nur Auszeichnungssprachen fallen<br />

nicht darunter. (jcb)<br />

n<br />

Die Autorin<br />

Die Autorin ist Rechtsanwältin und Fachjournalistin<br />

für IT-Recht in Berlin. Sie veröffentlicht<br />

seit 1997 in zahlreichen Medien zu Fragen des IT-<br />

Rechts und unterrichtet als Lehrbeauftragte für<br />

IT-Recht an der Beuth Hochschule für Technik. Zu<br />

ihren Beratungsschwerpunkten<br />

gehören das Softwarelizenz-<br />

und das Internetrecht,<br />

das Urheber-, Vertrags- und<br />

Markenrecht sowie Datenschutzfragen.<br />

26 Ausgabe 01-2012 Admin www.admin-magazin.de


1&1 SERVER<br />

NEXT GENERATION<br />

WELTNEUHEIT EXKLUSIV BEI 1&1:<br />

2 X 16 CORE<br />

AMD OPTERON PROZESSOR 6272<br />

Sicher:<br />

Modernste Rechenzentren,<br />

über 99,9 %<br />

Erreichbarkeit<br />

Einfach:<br />

Parallels ® Plesk 10.4<br />

unlimited enthalten<br />

DAS NEUE 1&1 DEDICATED SERVER PORTFOLIO:<br />

NEU: 1&1 SERVER MIT<br />

INTEL-PROZESSOREN!<br />

SERVER<br />

4i<br />

AKTION: JETZT 3 MONATE<br />

SPARPREIS SICHERN!<br />

SERVER<br />

XL 6<br />

EXKLUSIV BEI 1&1: DER WELT-<br />

SCHNELLSTE HOSTING-SERVER!<br />

SERVER XXL<br />

32 CORE<br />

Flexibel:<br />

Umfangreiche Betriebssystem-<br />

und Featureauswahl<br />

Schnell:<br />

Traffic Flatrate<br />

und über 275 GBit/s<br />

Anbindung<br />

■ Intel ® Xeon ® E3-1220<br />

■ 4 Cores bis zu 3,4 GHz<br />

■ 12 GB ECC RAM<br />

■ 1.000 GB RAID 1 mit<br />

2 x 1.000 SATA HDD<br />

79, 99<br />

€/Monat*<br />

■ AMD Hexa-Core Prozessor<br />

■ 6 Cores bis zu 3,3 GHz<br />

■ 16 GB ECC RAM<br />

■ 1.000 GB RAID 1 mit<br />

2 x 1.000 SATA HDD<br />

JETZT: 3 MONATE<br />

FÜR 0,– € *<br />

99, 99<br />

€/Monat*<br />

€/Monat*<br />

■ 2 x 16-Core AMD<br />

Opteron Prozessor 6272<br />

(„Interlagos”)<br />

■ 2 x 16 Core bis zu 3,0 GHz<br />

■ 64 GB ECC RAM<br />

■ 2.400 GB RAID 6 mit<br />

6 x 600 SAS HDD<br />

499, 99<br />

€/Monat*<br />

Fragen?<br />

Kostenloser Support<br />

rund um die Uhr<br />

Weitere 1&1 Server<br />

im Internet<br />

Jetzt informieren<br />

und bestellen:<br />

0 26 02 / 96 91<br />

0800 / 100 668<br />

www.1und1.info<br />

* Server 4i: 79,99 €/Monat. Server XL 6: 3 Monate 0,– €/Monat, danach 99,99 €/Monat. Server XXL 32 Core: 499,99 €/Monat. Einmalige Einrichtungsgebühr 99,- € (entfällt bei Server 4i und<br />

Server XXL 32 Core). Mindestvertragslaufzeit 12 Monate. Preise inkl. MwSt.


Netzwerk<br />

Shell im Browser<br />

Mehr Sicherheit<br />

Das verschlüsselte Abspeichern des Passworts<br />

mithilfe von »pwhash.php« verhindert zwar<br />

unberechtigte Logins, falls einem Angreifer<br />

die Konfigurationsdatei in die Hände fallen<br />

sollte. Sie sollten PHP Shell aber grundsätzlich<br />

über eine per SSL verschlüsselte Verbindung<br />

(HTTPS) aufrufen – andernfalls könnte ein<br />

Angreifer die eingegebenen Kommandos und<br />

Ausgaben im Klartext mitlesen.<br />

© Dorota C., 123RF<br />

Shell-Zugriff per Webbrowser<br />

Not-Lösung<br />

Eine Shell im Browser? PHP Shell und Shell in a Box machen es möglich<br />

und erleichtern damit das Verwalten von Webservern auch ohne SSH-<br />

Zugang – beispielsweise aus dem nächsten Internet-Café. Wolfgang Dautermann<br />

Die Verwaltung eines externen Webservers<br />

gestaltet sich per Secure Shell<br />

einfach, dank X-Forwarding kann man<br />

bei entsprechender Netzanbindung sogar<br />

grafische Programme zur Verwaltung<br />

am heimischen Rechner bedienen.<br />

Oft steht aber zur Administration nur<br />

ein Rechner zur Verfügung, auf dem<br />

man keine zusätzliche Software installieren<br />

kann oder darf. Häufig agiert auch<br />

die Firewall so restriktiv, dass außer<br />

HTTP(S) nichts hindurchkommt. PHP<br />

Shell und Shell in a Box ermöglichen in<br />

diesem Fall trotzdem den Shell-Zugriff<br />

auf den Server.<br />

PHP Shell<br />

PHP Shell ermöglicht den Shell-Zugang<br />

zu Servern, wo die Firewall den Zugang<br />

blockiert oder Sie keine Software<br />

im Dateisystem installieren können. Ein<br />

PHP-fähiger Webserver genügt, um Shell-<br />

Befehle auszuführen. Dazu darf der Safe-<br />

Mode von PHP nicht aktiviert sein, der<br />

dazu dient, PHP durch Einschränkungen<br />

gewisser Befehle sicher zu machen.<br />

Die Installation von PHP Shell funktioniert<br />

recht einfach: Sie laden die aktuelle<br />

Version von der PHP-Shell-Homepage [1]<br />

herunter und entpacken das ZIP-Archiv<br />

in ein Verzeichnis auf dem Webspace.<br />

Dann setzen Sie ein Passwort, wozu Sie<br />

die URL »http://Server/phpshell/pwhash.<br />

php« aufrufen. Dort geben Sie die gewünschte<br />

Kombination von Benutzernamen<br />

und Passwort ein. Sie erhalten als<br />

Ausgabe eine Zeile, die Sie im Abschnitt<br />

»[users]« der Konfigurationsdatei »config.php«<br />

eintragen. Bei Bedarf können<br />

Sie auch mehrere Benutzer anlegen. Neben<br />

Benutzernamen und Passwort lassen<br />

sich in »config.php« noch Shell-Aliases<br />

sowie ein Home-Verzeichnis für PHP<br />

Shell festlegen.<br />

In Grenzen<br />

Nun steht PHP Shell zum Einsatz bereit.<br />

Sie rufen es über die URL »https://Server/phpshell/phpshell.php«<br />

auf, melden<br />

sich mit Benutzernamen und Passwort<br />

an – und die Shell-Sitzung im Webbrowser<br />

kann beginnen. Sie geben nun<br />

Kommandos im PHP-Shell-Fenster ein<br />

(Abbildung 1). Nach dem Betätigen von<br />

[Eingabe] oder einem Klick auf »Execute<br />

Command« werden diese ausgeführt, das<br />

Ergebnis erscheint wiederum im Shell-<br />

Fenster.<br />

Die Kommandozeile, die PHP Shell im<br />

Browser zur Verfügung stellt, unterliegt<br />

dabei einigen Einschränkungen:<br />

n Jeder Befehl muss ohne weitere Benutzereingabe<br />

auskommen, interaktive<br />

Programme lassen sich nicht<br />

bedienen.<br />

28 Ausgabe 01-2012 Admin www.admin-magazin.de


Shell im Browser<br />

Netzwerk<br />

G Abbildung 2: Shell in a Box wirkt auf den ersten Blick wie die echte<br />

Kommandozeile.<br />

F Abbildung 1: PHP Shell ist unschwer als Webanwendung zu erkennen.<br />

n Jedes Kommando muss in eine Zeile<br />

passen. PHP Shell erkennt nicht, dass<br />

ein Kommando noch fortgesetzt werden<br />

müsste. So gelingt beispielsweise<br />

die Eingabe einer For-Schleife in mehreren<br />

Zeilen (wie in der normalen<br />

Shell) nicht.<br />

n Die Befehle müssen innerhalb einer<br />

bestimmten Zeitspanne abgearbeitet<br />

sein, üblicherweise binnen 30 Sekunden.<br />

Hier handelt es sich jedoch nicht<br />

um eine durch PHP Shell bedingte Einschränkung:<br />

Sowohl der Webserver<br />

(meist Apache) als auch PHP brechen<br />

nach einer gewissen Zeit die Verarbeitung<br />

ab. Sie konfigurieren die entsprechenden<br />

Limits in Apache über die<br />

»Timeout«-Direktive, in PHP mittels<br />

der Einstellung »max_execution_time«<br />

in »php.ini«.<br />

PHP-Shell führt die Kommandos unter<br />

der User- und Group-ID des Webservers<br />

aus, wie sich unschwer mit dem »id«-<br />

Kommando überprüfen lässt. Das kann<br />

Kommando<br />

Tabelle 1: Funktionen von Shell in a Box<br />

»shellinaboxd ‐s<br />

/:LOGIN«<br />

»shellinaboxd ‐s /:SSH«<br />

»shellinaboxd ‐s<br />

/Bezeichner/:SSH:host.<br />

example.com«<br />

»shellinaboxd ‐s<br />

/systemstatus/:User:<br />

Gruppe:/:Programm«<br />

Funktion<br />

zuweilen recht nützlich sein – etwa, wenn<br />

man ein Verzeichnis anlegen möchte, in<br />

das nur der Webserver schreiben darf.<br />

Das klappt via FTP meist nicht, da man<br />

in diesem Fall unter einer anderen User-<br />

ID operiert und daher oft lediglich global<br />

beschreibbare Verzeichnisse anlegen<br />

kann. Mit PHP Shell klappt das dagegen<br />

problemlos.<br />

Geschichte<br />

PHP Shell bietet eine<br />

einfache History-Funktion,<br />

über die Sie mit<br />

den Cursor-Tasten in<br />

den zuletzt ausgeführten<br />

Kommandos vorund<br />

zurückblättern.<br />

Weitere History-Funktionen<br />

wie eine Suche<br />

unterstützt PHP Shell<br />

aber nicht. Die Größe<br />

des „Shell-Fensters“<br />

Stellt eine Login-Shell am lokalen System unter<br />

dem Pfad »http://localhost:4200/« zur Verfügung.<br />

Stellt ein SSH-Login am lokalen System unter dem<br />

Pfad »http://localhost:4200/« zur Verfügung. Dazu<br />

muss ein SSH-Server (zumindest am Loopback-<br />

Device) laufen.<br />

Stellt ein SSH-Login für den entfernten Rechner<br />

»host.example.com« am lokalen System unter dem<br />

Pfad »http://localhost:4200/Bezeichner/« zur Verfügung.<br />

Dazu muss ein SSH-Server laufen. Auf diese<br />

Weise lässt sich Shell in a Box auch als Gateway zu<br />

sonst unerreichbaren Rechnern verwenden.<br />

Lässt unter »http://localhost:4200/systemstatus/«<br />

ein Programm mit den Rechten des angegebenen<br />

Users und der Gruppe laufen. Als Arbeitsverzeichnis<br />

dient das Wurzelverzeichnis.<br />

ändern Sie gegebenenfalls via »Size:«<br />

rechts unterhalb des Eingabebereichs.<br />

Dort tragen Sie einfach die gewünschten<br />

Werte ein und führen dann den nächsten<br />

Befehl aus.<br />

Die PHP Shell enthält auch einen einfachen<br />

Editor (»editor Datei«), mit dessen<br />

Hilfe Sie alle Dateien ändern können,<br />

für die die Benutzer-ID des Webserver<br />

Schreibrechte besitzt.<br />

E<br />

Jetzt<br />

anrufen<br />

und Termin<br />

sichern!<br />

Linux Schulungen 2012 – Nicht verpassen!<br />

• Python Programmierung für Check_MK: 23.4.<br />

• Linux - Crashkurs für Administratoren: 5.3., 21.5., 2.7.<br />

• Linux Administration für Fortgeschrittene: 26.3., 11.6.<br />

• Shellprogrammierung mit der BASH: 16.4.<br />

• Linux als Server im Internet und Intranet: 25.6.<br />

• Nagios für Einsteiger: 07.05.<br />

• Fortgeschrittenes <strong>Monitoring</strong> mit Nagios & Check_MK:<br />

19.3., 18.6.<br />

Gerne machen wir Inhouse-Schulungen direkt bei unseren Kunden vor<br />

Ort. Fragen Sie uns nach einem Angebot zu Ihrem Wunschthema.<br />

Tel.: 089 / 18 90 42 10<br />

www.admin-magazin.de<br />

Admin<br />

mk@mathias-kettner.de<br />

Ausgabe 01-2012 www.mathias-kettner.de<br />

29


Netzwerk<br />

Shell im Browser<br />

Verschlüsselung und Zertifikate<br />

Die Verschlüsselung von Passwörtern und Daten zwischen Sender und Empfänger sorgt dafür,<br />

dass kein Unberechtigter mitlesen kann. Dazu braucht man Zertifikate, wie man sie von diversen<br />

Webseiten (oder auch Mailservern) kennt – meist nimmt man sie erst dann wahr, wenn der Browser<br />

ein Zertifikatsproblem meldet. Diese Zertifikate sollen sicherstellen, dass der Server auf der Gegenseite<br />

auch tatsächlich derjenige ist, für den er sich dem Client gegenüber ausgibt. Anderenfalls<br />

könnte sich ein Angreifer zum Abfangen des Datenverkehrs einfach als berechtigte Gegenstelle<br />

ausgeben.<br />

Zertifikate bekommt man einerseits von kommerziellen, kostenpflichtigen Zertifizierungsstellen:<br />

Sie verifizieren die Identität des Antragstellers und geben dann ein Zertifikat für einen Hostnamen<br />

aus. Der Browser erkennt das dann automatisch als korrekt: Er vertraut bestimmten eingebauten<br />

Zertifizierungsstellen. Eine Alternative bietet die Community-Lösung CACert [3].<br />

Schließlich besteht die Möglichkeit, mithilfe von OpenSSL selbst signierte Zertifikate [4] auszustellen<br />

– Listing 1 führt die dazu notwendigen Schritte auf. Wenn Sie solche verwenden (Abbildung 3)<br />

und von anderen Rechnern aus über das Internet auf derart gesicherte Dienste zugreifen, sollten<br />

Sie sich dabei auf jeden Fall das Zertifikat anschauen und die zugehörigen MD5/​SHA1-Fingerprints<br />

vergleichen.<br />

Shell in a Box (Abbildung 2) eignet sich<br />

dann, wenn Sie zwar Shell-Zugang zum<br />

Server haben und dort eigene Programme<br />

einrichten können, aber als Client einen<br />

Webbrowser verwenden wollen oder<br />

müssen.<br />

Das Projekt stellt neben dem Quellcode<br />

auf seinen Webseiten [2] auch Debian-<br />

Pakete zur Verfügung. Benutzer von Debian<br />

und dessen Derivaten sowie Ubuntu-<br />

User installieren die Binärpakete bequem<br />

über den Paketmanager. Verwenden Sie<br />

eine andere Distribution, entpacken Sie<br />

nach dem Herunterladen den Quellcode-<br />

Tarball in ein beliebiges Verzeichnis und<br />

übersetzen ihn dort mittels »./configure<br />

; make«. Anschließend installieren Sie<br />

Shell in a Box mit dem Befehl »make<br />

install« als Root. Der Aufruf richtet das<br />

Programm unterhalb des Verzeichnisses<br />

»/usr/local« ein.<br />

Shell in a Box bringt anders als PHP Shell<br />

einen eigenen Webserver mit, der per<br />

Default auf Port 4200 lauscht. Dabei kann<br />

das Programm eine Reihe von Diensten<br />

zur Verfügung stellen, die Sie nach dem<br />

Schema<br />

shellinaboxd ‐s Webpfad:Dienst<br />

starten. Für erste Versuche können Sie<br />

dabei mit der zusätzlichen Option »‐t«<br />

oder in der Langform »‐‐disable‐ssl« die<br />

Verschlüsselung via SSL (dazu später<br />

mehr) vorläufig deaktivieren. Welche<br />

grundsätzlichen Möglichkeiten es gibt,<br />

führt die Tabelle „Funktionen von Shell<br />

in a Box“ auf. Ein »shellinaboxd«-Prozess<br />

kann dabei durchaus mehrere Services<br />

zur Verfügung stellen, wie beispielsweise<br />

das Login zu mehreren Rechnern:<br />

shellinaboxd ‐s /host1/:SSH:host.example.comU<br />

‐s /host2/:SSH:host2.example.com<br />

So verbinden Sie sich unter der URL<br />

»http://localhost:4200/host1/« zu »host.<br />

example.com« verbinden, unter der URL<br />

»http://localhost:4200/host2/« öffnen<br />

Sie eine SSH-Verbindung zum Rechner<br />

»host2.example.com«.<br />

Anders die PHP Shell, bei der eine Zeile<br />

komplett eingegeben, diese dann verarbeitet<br />

und das<br />

Ergebnis wieder<br />

an den Browser<br />

zurückgeschickt<br />

wird, ermöglicht Shell in a Box das<br />

textbasierte interaktive Arbeiten, beispielsweise<br />

mit einem Editor wie Vi. Die<br />

Performance bleibt dabei etwas hinter<br />

jener im „normalen“ Terminal zurück,<br />

meist spürt man jedoch keine großen Einschränkungen.<br />

Shell in a Box stellt noch<br />

eine ganze Reihe weiterer Optionen zur<br />

Verfügung, ein Blick in die Dokumentation<br />

beziehungsweise auf die Webseite<br />

[2] lohnt sich.<br />

Während erste Experimente mit Shell<br />

in a Box am lokalen Rechner durchaus<br />

ohne Verschlüsselung erfolgen können,<br />

empfiehlt es sich dringend, im produktiven<br />

Einsatz alle Verbindungen mittels<br />

SSL abzusichern. Dazu benötigen Sie ein<br />

Zertifikat, das sich im entweder im aktuellen<br />

Verzeichnis befinden muss oder<br />

dessen Speicherort Sie durch die Option<br />

»‐‐cert=Verzeichnis« angeben. Näheres<br />

erläutert der Kasten „Verschlüsselung<br />

und Zertifikate“. (jlu/​ofr)<br />

n<br />

Infos<br />

[1] PHP Shell:<br />

[http:// phpshell. sourceforge. net]<br />

[2] Shell in a Box:<br />

[http:// code. google. com/ p/ shellinabox/]<br />

[3] CACert: [http:// www. cacert. org]<br />

[4] Eigenes SSL-Zertifikat: Florian Effenberger,<br />

„Brief und Siegel“, LU 06/​2009, S. 31,<br />

[http:// www. linux‐community. de/ 18025]<br />

Der Autor<br />

Der Systemadministrator Wolfgang Dautermann<br />

hat neben vielen Linux-Varianten auch schon<br />

diverse Unixe gebändigt, darunter Solaris, Irix<br />

und Tru64. Er zählt zu den Organisatoren der<br />

Grazer Linux-Tage.<br />

Listing 1: SSL-Schlüssel<br />

Key erzeugen:<br />

# openssl genrsa ‐des3 ‐out server.key 1024<br />

Certificate Signing Request (CSR) erzeugen:<br />

# openssl req ‐new ‐key server.key ‐out server.csr<br />

Passwort vom Schlüssel entfernen:<br />

# cp server.key server.key.org<br />

# openssl rsa ‐in server.key.org ‐out server.key<br />

CSR signieren und Zertifikat erzeugen:<br />

# openssl x509 ‐req ‐days 365 ‐in server.csr ‐signkey server.key ‐out server.crt<br />

cat server.crt server.key > certificate.pem<br />

Abbildung 3: Ein selbst signiertes Zertifikat im Webbrowser.<br />

30 Ausgabe 01-2012 Admin www.admin-magazin.de


globalBusiness:<br />

weltweit mehr<br />

als 4.000 Orte<br />

verfügbar<br />

New York – Berlin zum Ortstarif:<br />

globalBusiness verbindet Sie mit der Welt.<br />

Und so geht’s: Sie erhalten von der outbox AG<br />

eine lokale Rufnummer z.B. aus New York.<br />

Alle Anrufe darauf werden umgehend auf Ihre<br />

Festnetznummer in Berlin – oder auf jedes<br />

andere beliebige Ziel – weitergeleitet. So sind<br />

Sie in Ihrem Büro in Deutschland für internationale<br />

Kunden zu deren Ortstarif erreichbar.<br />

Bieten Sie Ihren Kunden und Interessenten mit<br />

globalBusiness diese persönliche und günstige<br />

Kontaktmöglichkeit und sichern Sie sich Ihren<br />

Wettbewerbsvorteil. Alle verfügbaren Länder<br />

und Vorwahlen im Web: www.outbox.de/admin<br />

Infos und Beratung: 0800 / 66 474 640<br />

www.outbox.de/admin


Netzwerk<br />

SSH-Tipps<br />

© Pei Ling Hoo, 123rf.com<br />

SSH-Tipps für den Alltag<br />

Schlüsselwächter<br />

SSH wird meist dazu verwendet, eine verschlüsselte Verbindung zur Shell auf einem entfernen Host aufzubauen,<br />

um diesen zu administrieren. SSH kann aber mehr, zum Beispiel Dateien übertragen, Ports weiterleiten oder gar<br />

ein echtes VPN aufsetzen. Thomas Drilling<br />

Das Kürzel SSH („Secure Shell“) steht<br />

im allgemeinen Sprachgebrauch sowohl<br />

für das so bezeichnete Netzwerkprotokoll,<br />

als auch für ein Paket von Tools,<br />

mit deren Hilfe sich der Admin über eine<br />

verschlüsselte Netzwerkverbindung auf<br />

einem entfernten Gerät einloggen kann.<br />

Mit „der SSH“ deckt der Admin neben<br />

Remote Login eine ganze Reihe weiterer<br />

Remote-Anwendungen mit einem Tool<br />

ab, darunter auch Remote Execute, Remote<br />

Copy, Remote X11 Client sowie eine<br />

Reihe von Port-Forwarding-Szenarien.<br />

Insgesamt kann SSH mit den im SSH-<br />

Paket enthaltenen Tools ssh, slogin, scp<br />

und sftp die klassischen Unix-Befehle<br />

zum Ausführen von Befehlen auf entfernten<br />

Hosts »rsh«, »rlogin«, »rcp« und<br />

»telnet« vollständig durch Varianten mit<br />

Verschlüsslung und Authentifizierung<br />

ersetzen.<br />

Jedes dieser Kommandos führt eine Shell<br />

auf dem entfernten Host aus und erlaubt<br />

dem Benutzer das Aufrufen von Befehlen.<br />

Da jeder Client ein Benutzerkonto<br />

auf dem Host benötigt, auf dem er einen<br />

Befehl ausführen möchte, führen alle genannten<br />

Kommandos einen Authentifizierungsprozess<br />

durch.<br />

Während die klassischen r-Varianten dabei<br />

lediglich Benutzernamen und Passwörter<br />

ohne Verschlüsslung austauschen,<br />

verwenden alle SSH-Befehle eine Public-<br />

Key-Cryptography-Infrastruktur. Ebenfalls<br />

zum SSH-Paket gehören die Tools/​<br />

Kommandos »ssh‐keygen«, »ssh‐agent«<br />

und »ssh‐add« zur Unterstützung von<br />

Authentifizierungsvorgängen. Die vollständige<br />

Syntax inklusive aller möglichen<br />

Optionen liefert das Eingeben von<br />

»ssh« ohne Parameter oder der Aufruf<br />

von »man ssh«.<br />

SSH interaktiv<br />

Hat der Admin eine SSH-Verbindung aufgebaut,<br />

im einfachsten Fall etwa mit<br />

ssh ‐l Benutzer Remote‐Host<br />

gefolgt vom Nutzer-Passwort auf dem<br />

entfernten Host, leitet SSH sämtliche<br />

Tastatureingaben an den Remote-Host<br />

weiter. Weniger<br />

bekannt ist, dass<br />

sich über Escape-<br />

Sequenzen auch<br />

SSH selbst steuern<br />

lässt. Das Tilde-<br />

Zeichen zu Beginn<br />

einer neuen Zeile<br />

leitet bei SSH standardmäßig<br />

eine<br />

Escape-Sequenz<br />

ein; erst das folgende<br />

Zeichen kennzeichnet den Befehl:<br />

So zeigt »~#« sämtliche offenen SSH-<br />

Verbindungen, und »~« beendet die aktuelle<br />

Verbindung, was nützlich ist, wenn<br />

die Shell nicht mehr reagiert. Eine Liste<br />

aller möglichen Befehle liefert »~?«. Mithilfe<br />

der Option »‐e« ist es möglich, SSH<br />

ein anderes Zeichen zum Einleiten einer<br />

Escape-Sequenz mitzugeben.<br />

Wer selten mit Escape-Sequenzen arbeitet,<br />

mag vielleicht folgenden Hinweis<br />

nützlich finden: Je nach Tastatur-Layout<br />

kann es unter Umständen erforderlich<br />

sein, etwa unter Ubuntu, die Tastensequenz<br />

[AltGr][+] zum Erzeugen der<br />

Tilde (~) zweimal hintereinander einzugeben,<br />

gefolgt vom gewünschten Befehlszeichen.<br />

Die in der folgenden Abbildung<br />

sichtbare Zeichenfolge »~?« wurde so<br />

nicht eingegeben. Wollte der Admin diese<br />

Abbildung 1: SSH lässt sich auch über Escape-Sequenzen steuern.<br />

32 Ausgabe 01-2012 Admin www.admin-magazin.de


SSH-Tipps<br />

Netzwerk<br />

Abbildung 2: Die Abbildungen zeigen den Inhalt des gleichen Verzeichnisses<br />

»/root« auf dem entfernten Server »www.thomas‐drilling.de«, einmal via SSH<br />

und einmal lokal eingebunden via »sshfs«.<br />

Abbildung 3: Auch der Midnight Commander kann via SSH auf entfernte<br />

Verzeichnisse zugreifen.<br />

Zeichenfolge sichtbar eingeben, müsste<br />

er nach einmaligen Eingeben der Tilde-<br />

Sequenz [AltGr][+] die Leertaste drücken,<br />

was dann keine Escape-Sequenz,<br />

sondern reiner Text ist.<br />

Dateitransfer<br />

SSH lässt sich mithilfe des Kommandos<br />

»scp« auch zum Übertragen von Dateien<br />

nutzen. Da viele Admins lieber das ungleich<br />

mächtigere »rsync« verwenden,<br />

gerät diese Möglichkeit mitunter in Vergessenheit,<br />

obwohl sie für die meisten<br />

Zwecke ausreicht. Die komplette Syntax<br />

liefert wie üblich »man scp«. Im einfachsten<br />

Fall genügt:<br />

scp Datei1 User@Host:Datei2<br />

oder in umgekehrter Richtung<br />

scp User@Host:Datei1 Datei2<br />

Ganze Verzeichnisbäume lassen sich rekursiv<br />

mit dem Schalter »‐r« kopieren.<br />

Noch eleganter ist das Einbinden des entfernten<br />

Dateisystems via SSH, was sich<br />

mit dem Tool »sshfs« bewerkstelligen<br />

Wer es noch bequemer haben will, kann<br />

in Nautilus auch den Assistenten »Datei |<br />

Mit Server verbinden« benutzen, im Listenauswahlfeld<br />

»Typ« im Bereich »Serlässt.<br />

Dank der durch SSH gewährleisteten<br />

Authentifizierung und Verschlüsselung<br />

der übertragenen Daten ist »sshfs«<br />

eine sehr komfortable Variante für sichere<br />

Datentransfers über das Internet.<br />

Sshfs erlaubt einem nicht privilegierten<br />

Benutzer, ein fernes Dateisystem via SSH<br />

einzubinden, setzt allerdings auf Client-<br />

Seite das FUSE-Module (Filesystem in<br />

Userspace, [2]) voraus. Auf der Server-<br />

Seite dagegen braucht »sshfs« lediglich<br />

einen SSH-Server mit SFTP-Subsystem.<br />

Installiert der Admin auf Client-Seite das<br />

Paket »sshfs«, sorgt das Paketmanagement<br />

automatisch für die Installation von<br />

»fuse‐utils« und »lib‐fuse2«. Die Syntax<br />

von »sshfs« lautet im einfachsten Fall:<br />

sshf User@Host:Pfad U<br />

Lokaler‐Mountpoint [Optionen]<br />

Grafische Clients<br />

Im Übrigen können auch einige Dateimanager<br />

wie etwa Midnight Commander<br />

über eine SSH-Verbindung auf das Dateisystem<br />

eines entfernten Hosts zugreifen<br />

(Abbildung 3). Zwar setzt die Methode<br />

via »mc« keine Kernel-Unterstützung auf<br />

dem Client voraus, ist dann aber auch<br />

nur in »mc« verfügbar. FUSE-basierte<br />

Dateisysteme sind wie jedes herkömmliche<br />

Dateisystem mit jedem Programm<br />

verwendbar.<br />

Auch der Gnome-Dateimanager Nautilus<br />

unterstützt das SSH-Protokoll, wozu der<br />

Admin lediglich die gewünschte Adresse<br />

in der Form »ssh://Rechnername/Pfad«<br />

in der Adressleiste eingeben muss. Da<br />

die aktuelle Nautilus-Version 3.2.1 in<br />

Gnome 3 die Adressleiste per Default<br />

nicht mehr anzeigt, muss man sie erst<br />

mit [Strg]+[L] einschalten (Abbildung<br />

4), womit Nautilus den SSH-Anmelde-<br />

Dialog zeigt (Abbildung 5).<br />

Selbstverständlich kann man sich auch<br />

mit einem anderen Benutzernamen am<br />

SSH-Server anmelden:<br />

ssh://Benutzer@Hostname/Pfad<br />

Abbildung 4: Nautilus 3.2.1 erfordert ein manuelles Zuschalten der Adressleiste mit [Strg]+[L] bei Bedarf.<br />

Abbildung 5: Der Sftp-Zugriff via Nautilus gestaltet<br />

sich komfortabel.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

33


Netzwerk<br />

SSH-Tipps<br />

Abbildung 6: Nautilus ermöglicht Gelegenheitsnutzern<br />

neben der direkten URL-Eingabe auch die komfortable<br />

Anmeldung an einem entfernten Server via<br />

SSH mithilfe des Dialogs »Mit Server verbinden«.<br />

Abbildung 7: Auch KDEs Dateimanager Dolphin erlaubt komfortable Sftp-Transfers.<br />

verdetails« des Dialogs »Mit Server verbinden«<br />

den Eintrag »ssh« wählen und<br />

die Authentifizierungsdaten über die<br />

zugehörigen Felder im Dialog eintragen<br />

(Abbildung 6). Ganz nebenbei funktioniert<br />

diese Art SFTP-/​SSH-Anmeldung<br />

auch in den meisten anderen Gnome-<br />

Anwendungen.<br />

Auch in KDE ist SSH-Unterstützung<br />

schon länger vorhanden, allerdings lautet<br />

die zugehörige Adresseingabe-Syntax<br />

in Dolphin oder Konqueror: »fish://Rechnername/Pfad«<br />

beziehungsweise »fish://<br />

Benutzer@Rechnername/Pfad«. Auch<br />

Dolphin zeigt in aktuellen Versionen<br />

die URL-Eingabeleiste per Default nicht<br />

mehr an, allerdings findet der Nutzer die<br />

zugehörige Funktion schnell im Menü<br />

»Ansicht | Adresse | Editierbare Adressleiste«.<br />

Dolphin präsentiert dann unmittelbar<br />

den Dialog zur Benutzer-Authentifizierung,<br />

allerdings ist hier zunächst der<br />

momentan gültige lokale Benutzername<br />

als Default eingetragen, der daher in den<br />

meisten Fällen mit dem entfernten Benutzernamen<br />

zu überschreiben ist (Abbildung<br />

7).<br />

Darüber hinaus können KDE-Nutzer in<br />

Dolphin auch unter »Orte | Netzwerk«<br />

mit »Netzwerkordner hinzufügen« einen<br />

SSH-Netzwerkordner als Bookmark hinzufügen<br />

(Abbildung 8).<br />

Übrigens funktioniert die beschriebene<br />

Fish-Syntax zum Zugriff auf entfernte<br />

Dateien im gesamten KDE-Kontext und<br />

damit auch aus den meisten KDE-Anwendungen<br />

heraus mit »Datei | Öffnen« (Abbildung<br />

9). Allerdings muss der Nutzer<br />

im KDE-Dateiselektor ebenfalls die per<br />

Default abgeschaltete editierbare Adress-<br />

Eingabe einschalten, wozu er direkt in<br />

der Dateiauswahl mit einem Rechtsklick<br />

neben der aktuellen Pfadanzeige das<br />

Kontextmenü des Dateiselektors aufruft<br />

und dort statt der Default-Option »Navigieren«<br />

auf »Bearbeiten« umstellt.<br />

Kompression nutzen<br />

SSH unterstützt übrigens auch Kompression,<br />

was besonders dann nützlich ist,<br />

wenn sich das Netz als Engpass erweist.<br />

Das Komprimieren der Kommunikation<br />

zwischen »ssh« und »sshd« erfordert zwar<br />

auf beiden Seiten etwas mehr Rechenzeit,<br />

dafür muss SSH aber nur etwa 50<br />

Prozent der Pakete übertragen. Baut der<br />

Admin die Kompression auf Server-Seite<br />

mithilfe der Zeile »Compression yes« permanent<br />

in der Datei »/etc/ssh/sshd_config«<br />

ein, lassen sich langsame DSL- oder<br />

gar ISDN-Übertragungsstrecken etwa in<br />

Verbindung mit Port Forwarding spürbar<br />

beschleunigen.<br />

Auf Client-Seite lässt sich eine permanente<br />

Kompression analog mit »Compression<br />

yes« in »$HOME/.ssh/config«<br />

festlegen. Zum temporären Einschalten<br />

einer komprimierten Übertragung genügt<br />

der Parameter »‐C«, nicht zu verwechseln<br />

mit »‐c« für die Cipher-Spezifikationen<br />

der Verschlüsselung.<br />

Der sogenannte Master Mode erlaubt es<br />

dem Admin, durch eine physische Verbindung<br />

weitere logische SSH-Verbindungen<br />

aufzubauen, wozu er eine SSH-Verbindung<br />

als Master startet. Jetzt lassen sich<br />

alle weiteren SSH-Verbindungen zum<br />

gleichen Host mit dem gleichen User auf<br />

der Gegenseite über diese Master-Verbindung<br />

schicken, ohne eine neue physische<br />

Verbindung aufbauen zu müssen.<br />

Dazu verbindet sich der Client mithilfe<br />

eines Unix-Socket auf den Master und<br />

nicht unmittelbar zum Server auf der<br />

Gegenseite, wozu allerdings ein entsprechender<br />

Master-Socket anzugeben ist.<br />

Das Übertragen mehrere Sitzungen über<br />

einen einzigen Master-Kanal kann ebenfalls<br />

einen signifikanten Latenz-Vorteil<br />

bringen. Zum Konfigurieren von „opportunistic<br />

sharing“ ergänzt man die Datei<br />

»$HOME/.ssh/config« beispielsweise um<br />

folgende Zeilen:<br />

Abbildung 8: Dolphin erlaubt auch die Einrichtung eines auf SSH basierenden Netzwerkordners.<br />

34 Ausgabe 01-2012 Admin www.admin-magazin.de


SSH-Tipps<br />

Netzwerk<br />

Abbildung 9: Unter KDE kann der Admin aus so ziemlich jeder Anwendung via Fish-Adresse eine Sftp-Sitzung<br />

öffnen und auf Dateien des entfernten Rechners zugreifen.<br />

Host *<br />

ControlPath ~/.ssh/master‐%l‐%r@%h:%p<br />

ControlMaster auto<br />

»Host *« sorgt dafür, dass die folgende<br />

Konfiguration für Verbindungen von jedem<br />

Host gilt; alternativ ließe sich ein<br />

fixer Hostname eintragen. Mit »ControlMaster<br />

auto« verwendet SSH wenn<br />

möglich eine existierende Verbindung für<br />

den Master Mode. Andernfalls öffnet SSH<br />

eine neue Verbindung. Der Eintrag<br />

ControlPath ~/.ssh/master‐%l‐%r@%h:%p<br />

gibt an, wo SSH das Socket-File anlegen<br />

soll, das die Master-Verbindung repräsentiert.<br />

Dabei wird »%r« durch den<br />

Login-Namen ersetzt, »%h« durch den<br />

Hostnamen und »%p« durch die Port<br />

Nummer. Das Initiieren der Master-<br />

Verbindung erfolgt dann mit »ssh ‐M ‐S<br />

$HOME/.ssh/Socket User@Host«. Der<br />

Aufbau aller weiteren Verbindungen zum<br />

gleichen Host mit gleichem User erfolgt<br />

dann mit »ssh ‐S $HOME/.ssh/Socket<br />

User@Host«<br />

X11-Forwarding<br />

Das sogenannte X11-Forwarding (Abbildung<br />

10) erlaubt es, Programme mit<br />

grafischer Oberfläche via SSH auf einem<br />

entfernten Rechner zu starten, die Ein-<br />

und Ausgaben aber auf dem lokalen<br />

Desktop anzeigen zu lassen. Das funktioniert<br />

prinzipiell sogar unabhängig vom<br />

Betriebssystem des entfernten Rechners,<br />

sofern sich das Programm an den X11-<br />

Standard hält, womit sich die Auswahl<br />

in der Praxis auf Linux, BSD und Unix<br />

beschränkt.<br />

Zwar gib es heute ein ganzes Bündel<br />

leistungsfähiger grafischer Fernzugriffs-<br />

Lösungen, SSH ist aber bei jedem Linux-<br />

System gratis an Bord, wenn auch nicht<br />

sonderlich schnell. Für den gelegent lichen<br />

Einsatz, etwa zur Systemadministration,<br />

reicht X11-Forwarding aber allemal. Zum<br />

Aktivieren von X11-Forwarding dient die<br />

Option »‐X«, nicht zu verwechseln mit<br />

»‐x« zum Deaktivieren von Port-Forwarding.<br />

Die Option gewährt dem auf dem<br />

entfernten Rechner zu startenden Programm<br />

nur eingeschränkte Rechte am<br />

lokalen Display, was bei der einen oder<br />

anderen Anwendung zu einem Abbruch<br />

führen kann. In diesem Fall kann der<br />

Admin dem Programm immer noch mit<br />

der Option »‐Y« volle Rechte einräumen,<br />

was aber nur in Ausnahmefällen zu empfehlen<br />

ist.<br />

Tabu ist die Option »‐Y«, wenn der Admin<br />

dem Administrator des entfernten<br />

Hosts nicht vertraut, weil die Option<br />

einen Tunnel installiert, der sich von<br />

böswilligen Zeitgenossen auch in umgekehrter<br />

Richtung für einen Angriff auf<br />

das eigene Display nutzen ließe. Übrigens<br />

kann der Admin SSH als Alternative zum<br />

Parameter »‐X« auch mit dem Parameter<br />

»‐o« aufrufen und diesem den Wert<br />

»ForwardX11=yes« mitgeben. Wahlweise<br />

ist es auch möglich, in »$HOME/.ssh/<br />

config« die Zeile »ForwardX11 yes« einzutragen.<br />

Tunnelbau mit SSH<br />

Abbildung 10: Die Abbildung zeigt zweimal den grafischen GNOME-Editor Gedit unter Ubuntu 11.10, links via<br />

X11-Forwarding auf einem Server im lokalen Netz gestartet, rechts lokal gestartet.<br />

Mit SSH lassen sich sogar (beinahe) beliebige<br />

andere Protokolle absichern, etwa<br />

das alte POP3-Protokoll oder eine unsichere<br />

VNC-Verbindung. Mit Port Forwarding<br />

kann der Admin einzelne Ports<br />

durch eine sichere SSH-Verbindung umleiten,<br />

wobei SSH selbst quasi als Proxy<br />

fungiert, der auf der einen Seite des SSH-<br />

Tunnels die Verbindung entgegennimmt<br />

und auf der anderen Seite mit dem adressierten<br />

Server, dem Verbindungsendpunkt,<br />

verbindet.<br />

E<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

35


1&1 WEBHOSTING<br />

Das beste Hosting für Profi-Websites:<br />

Maximale Verfügbarkeit:<br />

Georedundanter Betrieb – parallel in<br />

räumlich getrennten Rechenzentren!<br />

Superschnell:<br />

275 GBit/s Anbindung!<br />

Umweltschonend:<br />

Grüner Strom!<br />

Zukunftssicher:<br />

1.000 Entwickler bei 1&1!<br />

1&1 DOMAINS<br />

■ Domain-Umzug<br />

■ Schnelle Domain-<br />

Aktivierung<br />

■ DNS-Verwaltung<br />

■ Domain-Umleitung<br />

■ E-Mail-Adresse<br />

zur Weiterleitung<br />

0, 49<br />

€/Monat*<br />

.de<br />

.eu<br />

0, 29<br />

€/Monat*<br />

.de-Domain 1 Jahr für 0,29 €/Monat,<br />

danach ab 0,49 €/Monat.*<br />

Weitere Domains mit<br />

Sparvorteil unter<br />

1und1.info<br />

1&1 DUAL PERFECT<br />

■ 6 DOMAINS INKLUSIVE<br />

■ 5 GB Webspace<br />

■ UNLIMITED Tr a f fi c<br />

■ 20 FTP-Accounts<br />

■ 10 MySQL-Datenbanken (je 1 GB)<br />

9, 99<br />

€/Monat*<br />

■ UNLIMITED Click & Build Apps (Auswahl aus 65 Applikationen)<br />

■ Zend Framework<br />

■ PHP6 (beta), PHP5, Perl, Python<br />

■ 24/7 Profi-Hotline<br />

0,–€/Monat*<br />

1&1 Dual Perfect 6 Monate 0,– €,<br />

danach 9,99 €/Monat.*<br />

Weitere Pakete mit<br />

6-Monats-Sparvorteil<br />

unter 1und1.info<br />

* .de und .eu Domain 12 Monate 0,– €/Monat, danach .de 0,49 €/Monat, .eu 1,49 €/Monat. 1&1 Dual Perfect und 1&1 Perfect Shop 6 Monate 0,– €/Monat, danach 1&1 Dual Perfect 9,99 €/Monat,<br />

1&1 Perfect Shop 19,99 €/Monat. Einmalige Einrichtungsgebühr 9,60 € (entfällt bei Domain-Paketen). 12 Monate Mindestvertragslaufzeit. Preise inkl. MwSt.


DAS SICHERSTE<br />

HOSTING<br />

6 MONATE0,–,–€/Monat*<br />

1&1 PERFECT SHOP<br />

■ 1.000 ARTIKEL<br />

■ 100 Warengruppen<br />

■ Marketing-Tools<br />

■ PayPal<br />

■ eBay-Tool<br />

■ UNLIMITED Click & Build Apps<br />

(Auswahl aus 65 Applikationen)<br />

19,<br />

99<br />

0,–€/Monat*<br />

1&1 Perfect Shop 6 Monate 0,–€,<br />

danach 19,99 €/Monat.*<br />

€/Monat*<br />

Weitere E-Shops mit<br />

6-Monats-Sparvorteil<br />

unter 1und1.info<br />

1&1 bietet alles rund ums Thema<br />

Hosting bequem aus einer Hand:<br />

Domains<br />

Hosting<br />

E-Shops<br />

Online Office<br />

Suchmaschinen-<br />

Werbung<br />

Online Speicher<br />

MailXchange u. v. m.<br />

Jetzt informieren<br />

und bestellen:<br />

0 26 02 / 96 91<br />

0800 / 100 668<br />

www.1und1.info


Netzwerk<br />

SSH-Tipps<br />

SSH kennt zwei unterschiedliche Betriebsarten,<br />

nämlich Local Port Forwarding,<br />

und Remote Port Forwarding, oft auch<br />

als ausgehender und eingehender Tunnel<br />

bezeichnet, wobei Local Port Forwarding<br />

weitaus häufiger zum Einsatz kommt. Die<br />

Richtung des Tunnels-Aufbaus, also Local<br />

oder Remote Port Forwarding, geben die<br />

Parameter »‐L« und »‐R« an. Local Port<br />

Forwarding leitet eine Verbindung, die bei<br />

einem frei wählbaren lokalen Client-Port<br />

eintrifft, durch den sicheren SSH-Kanal<br />

auf einen Port eines entfernten Servers<br />

weiter – ein klassischer „ausgehender“<br />

Tunnel. Die allgemeine Syntax für Local<br />

Port Forwarding lautet:<br />

ssh remoteuser@remotehost ‐L localportU<br />

:remotehost:remoteport<br />

Das folgende Beispiel tunnelt eine unsichere<br />

FTP-Verbindung mit Standard-<br />

Port 21 über eine gesicherte SSH-Verbindung,<br />

wobei auf dem Rechner »www.<br />

thomas‐drilling.de« ein FTP-Server läuft<br />

und der Client-Rechner »ws1‐kubu« die<br />

sichere SSH-Verbindung aufbaut sowie<br />

anschließend in einer separaten Terminal-Sitzung<br />

den FTP-Client startet, und<br />

zwar mit der Zieladresse »localhost« auf<br />

dem Port 4444.<br />

drilling@ws1‐kubu:~$ sudo ssh dilli@U<br />

www.thomas‐drilling.de ‐L 4444:www.thomas‐U<br />

drilling.de:21<br />

Mit dem Befehl baut der Admin am SSH-<br />

Client eine sichere SSH-Verbindung als<br />

Benutzer »dilli« zum entfernten Rechner<br />

»www.thomas‐drilling.de« auf und<br />

lauscht außerdem auf sämtliche Anfragen,<br />

die auf dem lokalen Port 4444<br />

von »ws1‐kubu« eingehen, um sie dem<br />

entfernten Rechner »www.thomas‐drilling.de«<br />

auf Port 21 weiterzuleiten, wobei<br />

die Kommunikation über die zuvor<br />

aufgebaute SSH-Verbindung läuft. Jetzt<br />

kann der Admin am lokalen Rechner<br />

»ws1‐kubu« seine FTP-Verbindung wie<br />

folgt aufbauen (Abbildung 11):<br />

drilling@ws1‐kubu:~$ sudo ftp localhost 4444<br />

Leider ist die Syntaxbeschreibung zum<br />

Port Forwarding in der Manpage etwas<br />

missverständlich: »ssh ‐L [bind_address:]<br />

port:host:port user@remotehost«. Die Parameter<br />

»host« und »remotehost« dieser<br />

Syntax-Schreibweise stehen im obigen<br />

Beispiel für den gleichen entfernten Server,<br />

weil »host« aus der Sicht des betreffenden<br />

Systems anzugeben ist. Daher<br />

könnte man in der praktischen Umsetzung<br />

statt »www.thomas‐drilling.de:21«<br />

auch »localhost:21« schreiben, weil sich<br />

»localhost« dann auf die Perspektive des<br />

Remote Host bezieht.<br />

Bei der Wahl des Einstiegsports (SSH) ist<br />

zu beachten, dass die Verwendung von<br />

privilegierten Ports kleiner 1024 nur Root<br />

gestattet ist. Daher nutzt man für Local<br />

Port Forwarding normalerweise höhere<br />

Ports. Der zweite Port-Parameter gibt<br />

schließlich an, auf welchen Port auf Remotehost<br />

(sshd) beziehungsweise »host«<br />

die Weiterleitung führen soll und hängt<br />

demnach vom zu tunnelnden Dienst ab.<br />

Möchte der Admin nur die Port-Weiterleitung<br />

nutzen, aber remote keine Shell<br />

starten, kann er den Parameter »‐N« anhängen<br />

(Abbildung 12).<br />

Möchte er etwa einen<br />

POP3-Mailserver<br />

auf seinem virtuellen<br />

Server über<br />

eine verschlüsselte<br />

Verbindung abfragen,<br />

richtet er mittels Local Port Forwarding<br />

einen verschlüsselten SSH-Tunnel<br />

für Port 110 auf seinen Vserver ein:<br />

ssh Benutzer@Remotehost ‐L 20110:U<br />

Remotehost:110<br />

Jetzt muss er nur noch in seinem Mailclient,<br />

etwa Thunderbird, den Host »localhost«<br />

mit der Portnummer 4444 als<br />

POP-Server konfigurieren, und Mails lassen<br />

sich ab sofort verschlüsselt übertragen,<br />

ohne das der Mailserver selber SSL<br />

unterstützt (Abbildung 13).<br />

Remote Port Forwarding funktioniert übrigens<br />

genau umgekehrt zu Local Port<br />

Forwarding, das heißt, die Verbindung<br />

kommt an einem Port auf dem Host an,<br />

auf dem »sshd« läuft. Dieser leitet die<br />

Daten dann durch den SSH-Tunnel an<br />

einen beliebig wählbaren Port am Client.<br />

Die Syntax lautet:<br />

ssh Remoteuser@Remotehost ‐R Remoteport:U<br />

localhost:Localport<br />

Dynamic Forwarding<br />

Mit der Dynamic-Option »‐D« kann sich<br />

ein SSH-Client auch wie ein Socks-Server<br />

(Socks-Proxy) verhalten und den automatisierten<br />

Zugriff auf entfernte Rechner<br />

durch einen sicheren SSH-Tunnel<br />

ermöglichen. Dynamic Port Forwarding<br />

ist ebenfalls nützlich, wenn man etwa<br />

von einem öffentlichen WLAN Hotspot<br />

über einen gesicherten Tunnel auf einen<br />

Dienst seines Heim- oder Firmen-Servers<br />

zugreifen möchte.<br />

Es muss sich lediglich um einen Dienst<br />

handeln, für den es einen passenden<br />

Socks-Client gibt, was auf jeden Fall für<br />

Webbrowser zutrifft. In dessen Verbindungs-Optionen<br />

ist lediglich der lokale<br />

SSH-Client als SOCKS-Proxy mit der frei<br />

wählbaren Portnummer einzutragen. Da<br />

G Abbildung 12: Der Parameter »‐N« verhindert beim Local Port Forwarding,<br />

dass auf dem entfernten System eine Shell gestartet wird.<br />

F Abbildung 11: Die Abbildung demonstriert den Aufbau eines SSH-Tunnels für<br />

das an sich unsichere FTP-Protokoll. Der Admin kann die jetzt gesicherte FTP-<br />

Verbindung vom Client aus komfortabel über den selbst gewählten lokalen Port<br />

aufbauen.<br />

38 Ausgabe 01-2012 Admin www.admin-magazin.de


SSH-Tipps<br />

Netzwerk<br />

Seit der Version 4.3 von OpenSSH ist<br />

es mithilfe der Option »‐w« sogar möglich,<br />

ein richtiges VPN als Layer 2- oder<br />

Layer-3-Tunnel mit virtuellen Netzwerk-<br />

Adaptern (TUN/​TAP-Interfaces) aufzuan<br />

öffentlichen WLAN Hotspots die Übertragung<br />

der Daten vom Client-Rechner<br />

zum WLAN-Router unverschlüsselt ist<br />

und daher von jedem beliebigen Netzwerk-Sniffer<br />

mitgelesen werden kann,<br />

bietet sich dieses Verfahren immer an,<br />

wenn beim Webzugriff auf den eigenen<br />

Server Login- oder andere sensible Daten<br />

übertragen werden. Der Aufbau des<br />

Tunnels zum entfernten »sshd« erfolgt<br />

dann mit<br />

ssh ‐D Port Nutzer@Remotehost<br />

terschied besteht darin, dass sämtlicher<br />

Datenverkehr innerhalb der benutzen<br />

Applikationen SSH-Tunnel läuft, nicht<br />

aber DNS-Anfragen, sodass sich der SSH-<br />

Tunnel unter anderem nicht zum anonymen<br />

Surfen eignet.<br />

Sollen andere Programme oder Dienste<br />

außer HTTP via SSH getunnelt werden,<br />

ist unter Linux zu beachten, dass manche<br />

Programme keine SOCKS-Proxies<br />

unterstützen. Ist dies der Fall, kann der<br />

Nutzer unter Linux den Wrapper »tsocks«<br />

installieren und für unser Beispiel mit folgender<br />

Konfigurationsdatei »/etc/socks/<br />

tsocks.conf« bestücken:<br />

server = localhost<br />

server_port = 12222<br />

server_type = 4<br />

bauen. Allerdings erfordert dies, dass der<br />

Admin auf Server- und Client-Seite die<br />

entsprechenden TUN/​TAP-Devices durch<br />

Laden der zugehörigen Kernel-Module<br />

mittels »modprobe« einrichtet. Das Verfahren<br />

eignet sich also nicht zur Adhoc-<br />

Verwendung etwa im geschilderten Internet-Café-Szenario.<br />

Das Aufsetzen der<br />

zugehörigen virtuellen Netzwerk-Adapter<br />

auf Server und Client erfolgt auf dem<br />

Client mit:<br />

ifconfig tun0 10.0.2.1 netmask 255.255.255.252<br />

Auf dem Server sieht die Konfiguration<br />

dann so aus:<br />

ifconfig tun0 10.0.2.2 netmask 255.255.255.252<br />

route add ‐host Ziel‐Host dev eth0<br />

Erst danach kann der Nutzer ausgehend<br />

vom Client einen VPN-Tunnel aufbauen:<br />

ssh ‐l Benutzer ‐p Sshd‐port ‐w0:0 Ziel‐Host<br />

Damit das funktioniert, muss in der zugehörigen<br />

Sshd-Konfiguration auf dem<br />

Cloud mal anders:<br />

Samba<br />

Alfres co Nagios<br />

Djigzo OTRS<br />

I<br />

P<br />

N<br />

U<br />

-<br />

T<br />

Schulungen<br />

Installationen<br />

Hardware Support<br />

Softw are C onsulting<br />

Ubuntu<br />

Debian SUSE<br />

CentOS Red Hat<br />

OpenSUSE<br />

Asterisk<br />

MobyDick<br />

snom<br />

AASTRA<br />

Jetzt muss der Admin nur noch den lokalen<br />

SSH-Client als SOCKS-Proxy mitsamt<br />

dem angegeben Port in seine Browser-<br />

Einstellungen eintragen, im Bild am Beispiel<br />

Firefox (Abbildung 14).<br />

Auch in diesem Beispiel sorgt die Option<br />

»‐N« dafür, dass der Client zwar den Tunnel<br />

aufbaut, auf dem Server aber keine<br />

Shell startet. Der SSH-Tunnel als SOCKS-<br />

Proxy kommt einem ausgewachsenen<br />

VPN schon recht nahe. Der einzige Unin-put<br />

powered by linux since 1896<br />

Moltkestrasse 49 D-76133 Karlsruhe<br />

Tel.: 0721 / 6803288-0 Fax 0721 / 6803288-3<br />

www.admin-magazin.de<br />

www.in-put.de kontakt@in-put.de<br />

Admin<br />

Ausgabe 01-2012<br />

39


Netzwerk<br />

SSH-Tipps<br />

Linux-Server die Option »PermitTunnel<br />

yes« aktiviert sein.<br />

Firewall durchbohren<br />

Schon die bisher gezeigten Verfahren<br />

sollten die Leistungsfähigkeit von SSH<br />

vor allem im Bereich Port Forwarding<br />

eindrucksvoll demonstriert haben. Dabei<br />

waren sämtliche Beispiele auch im Sinne<br />

des Erfinders. Ssh lässt sich in gewissen<br />

Grenzen aber auch zweckentfremden.<br />

Blockt etwa die firmeneigene Firewall<br />

den SSH-Port 22, der Admin möchte aber<br />

von zu Hause sicher auf Daten seines<br />

Firmenrechners zugreifen, kann er sich<br />

mit folgendem Trick behelfen, bei dem<br />

unter anderem Remote Portforwarding<br />

ins Spiel kommt.<br />

Dazu muss am Firmen-Rechner ein<br />

OpenSSH-Server laufen, auch wenn die<br />

Abbildung 14: Beim Dynamic Portforwarding<br />

fungiert der SSH-Client als SOCKS-Proxy. So muss<br />

ihn der Nutzer lediglich als »localhost« mit der<br />

angegebenen Portnummer in sein Browser-Setting<br />

eintragen.<br />

Firewall Anfragen<br />

auf Port 22<br />

unterbindet. Zum<br />

Verfügungstellen<br />

eines SSH-Servers kann der Admin neben<br />

dem Paket »openssh‐client« auch die<br />

Server-Komponenten für SSH in Form des<br />

Paketes »ssh« installieren. Waren vorher<br />

weder SSH-Client noch Server installiert,<br />

können Debian- und Ubuntu-Admins<br />

auch »tasksel« von der Kommandozeile<br />

starten und dann die Paket-Gruppe<br />

»OpenSSH server« auswählen.<br />

Das Nachvollziehen folgender Vorgehensweise<br />

empfiehlt sich selbstverständlich<br />

nur dann, wenn der Admin auch Administrator<br />

des entfernten Servers beziehungsweise<br />

Netzes ist oder ein etwaiger<br />

Versuch mit ihm abgesprochen ist, denn<br />

er verletzt mit Sicherheit firmeninterne<br />

Sicherheits-Policies. Zu Hause muss der<br />

Admin dann dafür sorgen, dass auch<br />

der Heimrechner SSH-Verbindungen<br />

annimmt, wozu gegebenenfalls neben<br />

OpenSSH-Client ebenfalls die Server-<br />

Pakete zu installieren sind.<br />

Außerdem muss der Heim-Rechner über<br />

eine DnyDNS-Adresse von außen erreichbar<br />

sein. Läuft der SSH-Server am Heimrechner,<br />

baut der Admin am Heimrechner<br />

einen SSH-Tunnel vom Typ Remote Port<br />

Forwarding für den Port 22 vom Firmenrechner<br />

zum Sshd am Heimrechner auf,<br />

allerdings unter Zuhilfenahme der öffentlich<br />

zugänglichen DynDNS-Adresse.<br />

ssh Benutzer@Firmenrechner ‐R U<br />

4444:Heimrechner:22<br />

F Abbildung 13:<br />

Via Local Port<br />

Forwarding lässt sich<br />

beispielsweise auch<br />

das unsichere POP3-<br />

Protokoll zum Abfragen<br />

eines entfernten<br />

Mailservers via SSH<br />

absichern, auch wenn<br />

der POP-Server kein<br />

SSL unterstützt.<br />

Dann lässt er diesen Tunnel schlicht stehen<br />

und baut mit »ssh Benutzer@Heimrechner<br />

‐p 4444« durch diesen Tunnel<br />

hindurch einen weiteren Tunnel zum<br />

Firmenrechner unter Verwendung der<br />

beim Remote Port Forwarding angegebenen<br />

Portnummer (4444) auf. Das Bei-<br />

spiel demonstriert zwar das Prinzip des<br />

doppelten Tunnels, wird aber dem selbst<br />

gesteckten Szenario selbstverständlich<br />

noch nicht gerecht, weil ja die Firmen-<br />

Firewall definitionsgemäß Anfragen<br />

auf Port 22 nicht passieren lässt. Die<br />

meisten Firmen-Firewalls sind aber so<br />

konfiguriert, dass Anfragen auf Port 80<br />

(HTTP) erlaubt sind.<br />

Es spricht also in diesem Beispiel nichts<br />

dagegen, den SSH-Server zu Hause auf<br />

einem anderem Port lauschen zu lassen,<br />

beispielsweise auch den eigentlich für<br />

HTTP reservierten Port 80. Trotzdem an<br />

dieser Stelle noch einmal der Hinweis,<br />

dass ein solches Vorgehen arbeits- oder<br />

gar strafrechtliche Konsequenzen haben<br />

kann.<br />

Fazit<br />

SSH gibt es seit 1995, OpenSSH mindestens<br />

seit der Jahrtausendwende, und es<br />

hat sich zu einem der wichtigsten Werkzeuge<br />

für Administratoren entwickelt.<br />

Dabei schöpfen viele Systemverwalter die<br />

Möglichkeiten des Tools nicht aus, weil<br />

sie nicht wissen, dass es weit mehr kann,<br />

als eine entfernte Shell zu öffnen.<br />

Wer sich mit seinen Fähigkeiten eingehend<br />

befasst, stellt fest, dass SSH unter<br />

anderem proprietäre VPN-Lösungen und<br />

Software für sichere Dateitranfer obsolet<br />

macht. Dafür bietet SSH – aktuelle<br />

Versionen von Server und Client vorausgesetzt<br />

– zeitgemäße Sicherheit mit Authentifizierung<br />

und Verschlüsselung nach<br />

standardisierten Verfahren, auf die somit<br />

auch externe Werkzeuge aufsetzen können.<br />

(ofr)<br />

n<br />

Infos<br />

[1] OpenSSH-Webseite: [http:// openssh. org]<br />

[2] FUSE: [http:// fuse. sourceforge. net]<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. Er<br />

selbst und das Team seines Redaktionsbüros verfassen<br />

regelmässig Beiträge zu den Themen Open<br />

Source, Linux, Server, IT-Administration und Mac<br />

OSX. Außerdem arbeitet Thomas Drilling als Buchautor<br />

und Verleger, berät als IT-Consultant kleine<br />

und mittlere Unternehmen und hält Vorträge zu<br />

Linux, Open Source und IT-Sicherheit.<br />

40 Ausgabe 01-2012 Admin www.admin-magazin.de


Open Source goes<br />

Präsentieren auch Sie sich auf der größten Sonderausstellung<br />

der CeBIT 2012 zum Thema Linux und freie Software –<br />

hervorragend platziert in Halle 2!<br />

Kleine und mittlere Unternehmen treffen hier auf hochrangige Entscheider.<br />

Nirgendwo sonst finden Sie eine bessere Business-Umgebung für Ihre<br />

Open-Source-Lösungen.<br />

Ein rundum perfekter Messeauftritt ‒<br />

maximaler Erfolg mit minimalem Aufwand:<br />

• individuelle Standgrößen ab 4 m²<br />

• Alles-inklusive-Service (Standbau, Catering, Konferenzräume, u.v.m.)<br />

• direkte Ansprache zahlreicher Neukunden<br />

• ausgewählte Fachvorträge und Keynotes im Open Source Forum<br />

• Kontakt zur internationalen Open Source Community<br />

Jetzt anmelden!<br />

www.open-source-park.de<br />

oder 0 26 1 - 20 16 902<br />

In Kooperation mit:<br />

Veranstalter:<br />

pluspol.de<br />

Marketing Kommunikation Internet


<strong>Monitoring</strong><br />

<strong>Monitoring</strong>-Vergleich<br />

<strong>Monitoring</strong> für den Mittelstand im Vergleich<br />

Unter<br />

Überwachung<br />

<strong>Monitoring</strong> ist ein Problem der Backup-Klasse: Das Ob steht außer Frage, das Wie kann kompliziert sein. Die<br />

Lösung des Problems liegt in einer guten Strategie mit den richtigen Prioritäten, aber auch bei den passenden<br />

Tools. Aus diesem Grund hat das <strong>ADMIN</strong>-<strong>Magazin</strong> für diese Ausgabe wieder einmal eine kleine Bestandsaufnahme<br />

gängiger <strong>Monitoring</strong>-Tools zusammengetragen. Jens-Christoph Brendel<br />

Die Crux bei jeder Art von tabellarischen<br />

Software-Vergleichen im Sektor <strong>Monitoring</strong><br />

wie anderswo ist: Die wichtigsten<br />

Features beherrschen alle einigermaßen<br />

ausgereiften Lösungen. Einerseits kann<br />

man unmöglich jedes denkbare Leistungsmerkmal<br />

vergleichen, fragt man<br />

aber andererseits nur das Vorhandensein<br />

der Wichtigsten ab, dann ergeben sich<br />

kaum Unterschiede: In 97 Prozent der<br />

Tabellenzeilen erscheint das Häkchen. Im<br />

Ergebnis würde sich dann zum Beispiel<br />

der irreführende Eindruck vermitteln,<br />

Icinga sei der Papierform nach dasselbe<br />

wie Tivoli – obwohl beide für denkbar<br />

unterschiedliche Ansätze stehen. Wer<br />

nun den Ausweg im Detail sucht,<br />

der muss sich von den einfachen<br />

Tabellen mit Ja-/​Nein-Antworten<br />

lösen und gerät in Gefahr, die<br />

Übersicht zu verlieren. Dieser<br />

Artikel versucht sich deshalb<br />

an einem Kompromiss: Wir<br />

haben zwar Fragebögen<br />

verschickt, aber um<br />

beschreibende Antworten<br />

in Textform<br />

gebeten, die wir<br />

hier teils gekürzt<br />

einfließen lasen.<br />

Unvergleichlich<br />

© arcady3, 123RF<br />

größer ist der potenzielle Vorteil ihrer<br />

Integration unter einem Dach. Vergleicht<br />

man dagegen nur die relativ begrenzte<br />

Untermenge der <strong>Monitoring</strong>-Optionen<br />

mit einem Produkt, das ausschließlich<br />

in diesem einen Punkt Ähnliches bietet,<br />

dann verflüchtigt sich Tivolis Integrationsvorteil<br />

und es bleibt eine zu komschließt.<br />

Je mehr Module ich aus dem<br />

Tivoli-Portfolio benötige – etwa Asset-,<br />

Storage-, Sicherheits- und Vertragsmanagement,<br />

Bestandsverwaltung, Beschaffungswesen,<br />

Arbeitsmanagement, desto<br />

Außerdem haben wir uns bemüht, keine<br />

Äpfel mit Birnen zu vergleichen. Das<br />

schon erwähnte Tivoli etwa ist IBMs<br />

integrierte Lösung für das System- und<br />

Service-Management, die unter anderem<br />

auch Überwachungsfunktionen ein-<br />

plexe und zu teure Konstruktion, die immer<br />

zwei Nummern zu groß ist. Derartige<br />

Software haben wir deshalb diesmal<br />

nicht berücksichtigt.<br />

Andere Produkte hätten wir dagegen<br />

gerne aufgenommen, trafen aber auf das<br />

Desinteresse der Hersteller. So leitete die<br />

deutsche Dependance der Firma Quest<br />

Software, Hersteller von Big Brother,<br />

unseren Fragebogen zwar angeblich an<br />

die Marketingabteilung weiter, die aber<br />

ging daraufhin auf Tauchstation. Spätere<br />

Nachfragen von uns blieben unbeantwortet<br />

– möglicherweise war ja nach dem<br />

Studium unserer Fragen das Vertrauen<br />

ins eigene Produkt geschwunden …<br />

Neben Fragen zu einzelnen Features<br />

hatten wir auch die nach dem Unique<br />

Selling Point gestellt: Warum sollte<br />

man sich als Kunde gerade für<br />

diese oder jene Lösung entscheiden?<br />

Das bekamen wir<br />

zur Antwort:<br />

OpenNMS<br />

OpenNMS [1] betont<br />

besonders<br />

seine Skalierbarkeit:<br />

Von Umgebungen<br />

mit 200 Systemen<br />

bei einem kleineren Mittelständler<br />

bis zu solchen mit 70 000 Interfaces im<br />

Enterprise-Bereich sei OpenNMS problemlos<br />

einsetzbar. In jedem Fall seien dabei<br />

die vorkonfigurierten Elemente und die<br />

offenen Schnittstellen ein großer Vorteil,<br />

weil damit direkt nach der Installation<br />

bereits Standardmonitore für die wich-<br />

42 Ausgabe 01-2012 Admin www.admin-magazin.de


<strong>Monitoring</strong>-Vergleich<br />

<strong>Monitoring</strong><br />

Tabelle 1: Rahmendaten<br />

Name OpenNMS Zabbix Icinga Nagios<br />

URL http://​www.opennms.org http://​www.zabbix.com https://​www.icinga.org http://​www.nagios.org<br />

Version 1.8.x 1.8.6 1.6 3.3.1<br />

Lizenz GPL V2 GPL V2 GPL V2 Core: GPL V2, Nagios XI: Commercial<br />

License<br />

Unterstützte<br />

Plattformen<br />

Davon in Paketform/​Installer<br />

Linux, Windows, Solaris, Mac<br />

OS X<br />

Windows, Linux (Deb oder<br />

RPM)<br />

Zabbix-Server und ‐Proxy:<br />

Linux, Solaris AIX, HP-UX,<br />

FreeBSD, OpenBSD, NetBSD,<br />

andere Unix-Plattformen. Zabbix<br />

Agent: zusätzlich Windows<br />

Im Repository von Debian,<br />

Ubuntu, Fedora; Zudem Pakete<br />

für Open Suse/​SLES, RHEL,<br />

CentOS, Slackware.<br />

Linux, Solaris, HP UX, AIX,<br />

Gentoo, BSD, Mac OS X<br />

Ubuntu, Debian, Red Hat,<br />

CentOS, SLES, Solaris, Mac<br />

Div. Unix-Derivate, Linux, BSD<br />

In nahezu allen Linux-Distributionen<br />

enthalten<br />

Erstes öffentliches 2000 2001 2009 1999 (als NetSaint)<br />

Release<br />

Preis Lizenzkostenfrei Lizenzkostenfrei Lizenzkostenfrei Core: kostenfrei. Kommerziell:<br />

50 Nodes ab 1300 US-Dollar<br />

Hardwarevoraussetzungen<br />

CPU: Ab 1 GHz Ab 200 MHz ARM, i386 Die einzige Voraussetzung für<br />

Nagios Core ist eine Maschine<br />

mit Linux oder einer Unix-<br />

Variante, Netzwerkzugriff und<br />

einem C-Compiler (sofern aus<br />

den Sourcen intalliert werden<br />

soll).<br />

RAM: Minimal 512 MByte Ab 16 MByte für die Applikation<br />

Ab 32 MByte (ARM-CPU) Keine Angabe<br />

Disk Space: Minimal 8 GByte Ab 32 MByte, abhängig von Ab 50 MByte<br />

Keine Angabe<br />

der Menge gesammelter<br />

Daten<br />

Softwarevoraussetzungen<br />

Datenbanken PostgreSQL MySQL, PostgreSQL, Oracle,<br />

SQLite, DB2<br />

MySQL, PostgreSQL, Oracle Optional MySQL<br />

Architekturmodell<br />

Skalierbarkeit<br />

Support<br />

Grundsätzlich agentenlos,<br />

aber mit offenen Schnittstellen,<br />

die auch eine Implementierung<br />

von Agenten<br />

ermöglichen. TCP, ICMP, WMI;<br />

SNMP kann in den Versionen<br />

V1, V2c und V3 abgefragt<br />

werden. Die Nagios-Agenten<br />

NRPE und NSClient++ Lassen<br />

sich vollständig nutzen.<br />

Die Skalierbarkeit ist grundsätzlich<br />

nicht durch die Softwarearchitektur<br />

beschränkt.<br />

Es existieren Installationen<br />

mit 70 000 IP-Interfaces<br />

und 800 000 Performancendaten,<br />

die alle 5 Minuten<br />

gesammelt werden. Einzelne<br />

Daemons (Poller, Datacollection,<br />

etc.) lassen sich auf<br />

eigene Hardware auslagern.<br />

Kommerzieller Support verfügbar.<br />

Agentenloses <strong>Monitoring</strong> mit<br />

verschiedenen Methoden<br />

(TCP-Checks, ICMP Ping,<br />

SNMP, IPMI, andere), zusätzlich<br />

nativer Agent für alle<br />

Plattformen.<br />

Dank verschiedener Techniken<br />

zur Performancesteigerung<br />

(z.B. Caching) kann ein<br />

Zabbix-Server Tausende Hosts<br />

überwachen, auch verteiltes<br />

<strong>Monitoring</strong> ist möglich.<br />

Support durch Hersteller und<br />

Partner verfügbar.<br />

Icinga unterstützt sowohl<br />

agentenloses <strong>Monitoring</strong> via<br />

TCP, SNMP, WMI als als auch<br />

die Verwendung von Agenten<br />

wie NRPE oder auch NSClient++<br />

für Windows-Systeme.<br />

Im Interesse einer guten<br />

Skalierbarkeit lassen sich<br />

verschiedene Systeme in<br />

verteilten Umgebungen konfigurieren<br />

und zentral über<br />

ein Interface steuern. Desweiteren<br />

können die einzelnen<br />

Komponenten wie Core,<br />

Datenbank und Webinterface<br />

auf verschiedene Systeme<br />

verteilt werden. Ein zentrale<br />

Konfiguration und Steuerung<br />

der entfernten Systeme wird<br />

durch Addons und Icinga-Web<br />

unterstützt.<br />

Support ist vielen Varianten<br />

durch Dienstleister verfügbar.<br />

Grundsätzlich agentenlos,<br />

wenn Prüfungen über das<br />

Netzwerk sowie per SNMP<br />

als hinreichend angesehen<br />

werden.<br />

Weitergehende Prüfungen<br />

über Agenten (NSClient++<br />

unter Windows, Nagios NRPE<br />

unter Linux/Unix/​BSD) sind<br />

möglich.<br />

Verteilte Installationen von<br />

Nagios sind möglich, sei es<br />

aus Performancegründen,<br />

aber auch um Daten verschiedener<br />

Nagios Installation<br />

zentral zu aggregieren.<br />

Community Support und zahlreiche<br />

Dienstleister für die<br />

kommerzielle Version durch<br />

Nagios Inc.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

43


<strong>Monitoring</strong><br />

<strong>Monitoring</strong>-Vergleich<br />

tigsten Dienste bereitstehen – darunter<br />

HTTP, SMTP, POP3 oder DNS. OpenNMS<br />

kann dank eines integrierten SNMP-Trapund<br />

Syslog-Receivers ein zentralisiertes<br />

Logging realisieren. Performancedaten<br />

lassen sich via SNMP, WMI, HTTP, JMX,<br />

JDBC oder NSClient++ sammeln.<br />

Die OpenNMS-Experten der Firma<br />

Nethinks, einem zertifizierten OpenNMS-<br />

Partner und Ausrichter der europäischen<br />

OpenNMS User Conference, unterstreichen:<br />

„Ein weiterer Vorteil liegt darin,<br />

dass OpenNMS auch ohne die Nutzung<br />

von Agenten die IT-Infrastruktur hervorragend<br />

überwachen kann. Nichtsdestotrotz<br />

kann OpenNMS natürlich auch<br />

programmierte Anwendungen über einen<br />

Scripting-Monitor mit einbinden. Für<br />

die NRPE- und NSClient++-Agenten<br />

von Nagios existiert in OpenNMS sogar<br />

ein spezieller Monitor. All das macht<br />

OpenNMS zu einem professionellen,<br />

komfortablen und sicheren Netzwerkmanagement-System<br />

aus einem Guss – für<br />

kleine und mittlere Unternehmen bis in<br />

den Enterprise-Bereich – das ohne die<br />

Nutzung von Plugins alle Bereiche des<br />

FCAPS-Modells (Fault, Configuration,<br />

Accounting, Performance und Security<br />

Management) abdeckt.“ OpenNMS sei<br />

ein starker Konkurrent aus dem Open-<br />

Source-Bereich zu kommerziellen Enterprise<br />

Produkten wie HP Openview oder<br />

IBM Tivoli.<br />

Zabbix<br />

Zabbix [2] wirbt ebenfalls mit hoher Skalierbarkeit:<br />

Bis zu 100 000 überwachte<br />

Geräte mit bis zu einer Million verschiedener<br />

Metriken sollen laut Auskunft des<br />

Herstellers kein Problem sein. Dazu kann<br />

die Software Tausende Checks pro Sekunde<br />

verarbeiten.<br />

Ein weiterer Vorteil von Zabbix ist die<br />

leichte Konfigurierbarkeit mit einer zentralen<br />

Datenbank. Fortgeschrittene Features<br />

wie Performance-Diagramme oder<br />

Maps erfordern mit anderen Lösungen<br />

zunächst oft einen höheren Einarbeitungsaufwand,<br />

bis sie ähnliche Ergebnisse<br />

produzieren. Verglichen mit Nagios<br />

punktet Zabbix außerdem mit einem<br />

Auto-Discovery (wie OpenNMS).<br />

Icinga<br />

Abbildung 1: RRD-Grafen wie im Bild einer zur CPU-Auslastung lassen sich leicht in Zabbix konfigurieren.<br />

Auch dem Nagios-Fork Icinga [3] fällt<br />

es nicht schwer, mit eigenen Vorteilen<br />

zu werben. So ist die Software im Unterschied<br />

zur kommerziellen Spielart von<br />

Nagios zu 100 Prozent Open Source. Dabei<br />

unterstützt sie dank eines eigenen<br />

Datenbanklayers nicht nur MySQL und<br />

PostgreSQL, sondern auch das weitverbreitete<br />

Oracle. Icinga beinhaltet Dutzende<br />

Bugfixes, die Nagios fehlen. Ein<br />

besonderer Hingucker ist das neue, moderne<br />

Webinterface, das deutlich über<br />

die schon etwas altbackene klassische<br />

Nagios-Ansicht hinausgeht. Daneben<br />

gibt es eine <strong>Monitoring</strong>-App für Smartphones.<br />

Icinga wird mit festen Release-<br />

Zyklen und einer öffentlich einsehbaren<br />

Roadmap ständig weiterentwickelt und<br />

ist dennoch rückwärtskompatibel zu Nagios,<br />

dessen großen Vorrat an Plugins es<br />

so ebenfalls nutzen kann.<br />

In Icinga ist ein leistungsfähiges Reporting<br />

(auf der Basis von Jasper Reports) bereits<br />

integriert. Es erlaubt im Unterschied zu<br />

Nagios Core eine Authentifizierung auch<br />

via LDAP oder Active Directory. Icinga<br />

kommt mit IPv6 klar – das klassische<br />

Nagios nicht. Es unterstützt mehr als 20<br />

Sprachen und hat im Detail noch zahlreiche<br />

weitere Vorteile zu bieten.<br />

Nagios<br />

Nagios [4] ist stolz auf seine lange Geschichte<br />

und große Verbreitung. Sein<br />

Erfinder und Chefentwickler Ethan Galstad<br />

meint: „Organisationen vertrauen<br />

Nagios wegen seiner Flexibilität, langen<br />

Geschichte, der weltweiten Community<br />

und der Fülle freier Addons. Deshalb<br />

gab es mehr als drei Millionen neuer<br />

Nagios-Installationen in den letzten 12<br />

Monaten weltweit. Deshalb ist Nagios<br />

heute der Industriestandard für das <strong>Monitoring</strong>.<br />

… Nagios hat eine sehr viel<br />

größere Community als andere Projekte.<br />

Das verspricht Firmen eine mehr Unterstützung,<br />

eine bessere Dokumentation<br />

und mehr Addons.“<br />

Prinzipiell muss man bei Nagios allerdings<br />

die freie und kostenlose Community<br />

Edition (Core) – um die es hier<br />

hauptsächlich geht – vom kostenpflichtigen<br />

Nagios XI unter einer proprietären<br />

Lizenz unterscheiden. Letzteres beschert<br />

dem zahlenden Anwender diverse Zusatz-Features<br />

wie Mandantenfähigkeit,<br />

verschiedene APIs zur Integration mit<br />

Applikationen, Trendberechnungen und<br />

andere Daten für das Capacity Management<br />

oder eine besser an eigene Wünsche<br />

anpassbare GUI.<br />

E<br />

44 Ausgabe 01-2012 Admin www.admin-magazin.de


<strong>Monitoring</strong>-Vergleich<br />

<strong>Monitoring</strong><br />

Tabelle 2: Checks<br />

OpenNMS Zabbix Icinga Nagios<br />

Verfügbarkeitschecks<br />

Services Weil OpenNMS IP-Interfaces mittels SNMP<br />

zu einem Gerät zusammenfassen kann,<br />

ergeben sich besondere Unterscheidungsmöglichkeiten:<br />

Ist ein Dienst nicht mehr<br />

erreichbar, signalisiert OpenNMS einen<br />

»nodeLostService«. Ist ein kritischer<br />

Dienst nicht mehr erreichbar, wird unterschieden<br />

in »interfaceDown« und »node-<br />

Down«. Letzteres wird nur dann ausgelöst,<br />

wenn das System über keines seiner Interfaces<br />

erreichbar ist.<br />

Hosts<br />

Ein weiterer Vorteil von OpenNMS ist die<br />

Konfigurierbarkeit eines adaptiven Pollings.<br />

Per Default wird ein Service alle 5<br />

Minuten überprüft. Im Fehlerfall reduziert<br />

sich das Intervall aber auf 30 Sekunden.<br />

Ja, Besonderheit: Anstelle<br />

fester Schwellwerte lassen<br />

sich so genannte Trigger<br />

einrichten, die verschiedenste<br />

Werte verarbeiten<br />

und beispielsweise den<br />

Load Average auf dem<br />

NFS-Server mit der Verfügbarkeit<br />

des Webservers in<br />

Bezug setzen können.<br />

Ja, mittels Plugin check_ping.<br />

Ja Ja, mittels Plugin check_ping. Ja<br />

Performancechecks<br />

CPU-Auslastung Vorkonfiguriert Eingebauter Agent. Ja, mittels Plugin check_cpu. Ja<br />

I/​O Vorkonfiguriert Eingebauter Agent. Ja, mittels Plugin check_io. Ja<br />

Memory Vorkonfiguriert Eingebauter Agent. Ja, mittels Plugin check_mem. Ja<br />

Netz Vorkonfiguriert Eingebauter Agent. Ja, mittels Plugin check_interfaces.<br />

Automatisches<br />

Baselinening und<br />

Drift Detection<br />

SNMP-Checks<br />

Die Datacollection verfügt hierzu über<br />

die Möglichkeit Langzeitwerte via SNMP,<br />

WMI, NSClient++, JMX, HTTP und JDBC zu<br />

beziehen.<br />

SNMP-Checks über den SNMP-Monitor<br />

durchführbar. Es lassen sich selbst ganze<br />

Tabellen durchgeben. Dabei kann man<br />

unterscheiden, ob ein Wert der Tabelle,<br />

jeder Wert oder eine bestimmte minimale<br />

oder maximale Anzahl an Werten mit dem<br />

Vergleichswert übereinstimmen.<br />

Ja, (Versionen 1, 2c, 3).<br />

Wird von Addons bereitgestellt.<br />

Ja, mittels Plugin check_snmp<br />

und verschiedenen SNMP-Plugins<br />

für die diversen Hersteller wie<br />

Cisco, HP, Juniper usw.<br />

Checks via Hardware-Schnittstellen<br />

SMART Ja Ja Ja Ja<br />

IPMI / LOM / ILO Ja Ja, eingebaut. Ja, mittels Plugin check_ipmi. Ja, via Plugins.<br />

Mit Hilfe von Triggern nachbildbar.<br />

End-to-End-<br />

Checks<br />

Flap-Detection<br />

(wiederholte Statusänderungen)<br />

Anomalieerkennung<br />

Derzeit existieren mit dem Mail Transport<br />

Monitor und dem Page Sequence Monitor<br />

zwei Monitore für eine End-to-End Messung.<br />

Der Mail Transport Monitor zeichnet<br />

auf, wie lange die Mailübermittlung dauert.<br />

Der Page Sequence Monitor misst Abläufe<br />

in Webanwendungen. Weitergehend ist es<br />

durch die Integration von Hyperic möglich,<br />

die Werte aus einem agentenbasierten<br />

Netzwerkmanagement System zu ermitteln<br />

und zu verarbeiten.<br />

Flapping erkennt der Vacuum Daemon.<br />

Er generiert er ein Event, das OpenNMS<br />

protokolliert.<br />

OpenNMS bietet Anbindungsmöglichkeiten<br />

für Systeme, die Anomalien erkennen.<br />

Zusätzlich verfolgt die NETHINKS GmbH<br />

gemeinsam mit der Hochschule Fulda mit<br />

dem Forschungsprojekt secMONET einen<br />

Ansatz, der genau diese Anforderung erfüllen<br />

soll.<br />

User-Verhalten lässt sich in<br />

Grenzen nachbilden.<br />

Ja, mit Hilfe von Triggern<br />

nachbildbar.<br />

Ja, mit Hilfe von Triggern<br />

nachbildbar.<br />

Dies ist mittels verschiedener<br />

Erweiterungen möglich. Ein<br />

konkretes Beispiel hierfür ist<br />

die Verwendung des Automatisierungswerkzeugs<br />

Auto-IT und<br />

dessen Anbindung an Icinga unter<br />

Verwendung von check_autoit.<br />

So können komplexe Client-<br />

Workflows getestet werden. Für<br />

die Automatisierung von Web-<br />

Workflows werden u. a. Selenium<br />

und Cucumber unterstützt.<br />

Ja<br />

Anhand von Baselining.<br />

Ja<br />

Ja<br />

Nein<br />

Ja<br />

Gegebenenfalls über<br />

verteilte Nagios-<br />

Installationen realisierbar.<br />

Ja<br />

Keine über die Flap-<br />

Detection hinausgehende.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

45


<strong>Monitoring</strong><br />

<strong>Monitoring</strong>-Vergleich<br />

Abbildung 2: Das Auto-Discovery von OpenNMS hat einen neuen Node gefunden.<br />

Was wie überwacht werden soll und wer<br />

gegebenenfalls wann zu benachrichtigen<br />

ist, das muss der Admin der <strong>Monitoring</strong>software<br />

sagen. Wie einfach, schnell<br />

und sicher ihm das gelingt, ist ein wesentliches<br />

Qualitätskriterium. Die Unterschiede<br />

kommen hier ganz besonders in<br />

großen Umgebungen zum Tragen: Im Fall<br />

des klassischen Nagios muss jeder Host<br />

händisch und mit einer speziellen Syntax<br />

in Textfiles der Konfiguration hinterlegt<br />

werden. Das ist bei Tausenden Hosts ein<br />

immenser Aufwand. Andere Lösungen<br />

wie OpenNMS verfügen stattdessen über<br />

ein eingebautes Auto-Discovery, das<br />

Netzwerke scannt und die dort gefundenen<br />

Rechner automatisch in die Überwachung<br />

integriert. Der Fairness halber<br />

muss man allerdings ergänzen, dass auch<br />

das kommerzielle Nagios XI eine Autodiscovery-Komponente<br />

hat und es für die<br />

freie Version entsprechende Plugins gibt.<br />

Außerdem existiert Software, die die Resultate<br />

des Netzwerkscanners NMap in<br />

Nagios übernehmen kann.<br />

Einrichtung<br />

OpenNMS: OpenNMS bietet das schon<br />

erwähnte Auto-Discovery (Abbildung2),<br />

geht aber auch darüber noch hinaus. So<br />

gibt es auch eine semi-automatische Erfassung<br />

von Systemen, die beim Eintreffen<br />

eines SNMP-Traps oder einer Syslog-<br />

Nachricht überprüft, ob das Gerät bereits<br />

in der Datenbank aufgenommen wurde.<br />

Ist dies nicht der Fall, wird das System<br />

integriert und dabei daraufhin überprüft,<br />

welche der vordefinierten Dienste es<br />

möglicherweise bereitstellt. Durch den<br />

Provisioning-Daemon ist es auch möglich,<br />

Geräte manuell oder über Schnittstellen<br />

(HTTP, XML, DNS und REST) anzulegen.<br />

Insbesondere die Möglichkeit,<br />

Geräte über einen Webservice (REST)<br />

oder in Form einer XML-Datei in das System<br />

aufzunehmen, bietet hervorragende<br />

Möglichkeiten, vorhandene CMDBs an<br />

OpenNMS anzubinden.<br />

Mittels SNMP ist OpenNMS außerdem in<br />

der Lage, IP-Interfaces zu Nodes zusammenzuführen.<br />

Die IP-Interfaces werden<br />

dabei nicht als einzelne Geräte dargestellt,<br />

sondern als ein Gerät mit mehreren<br />

IP-Interfaces erkannt.<br />

Zabbix: Auch Zabbix kennt ein Auto-Discovery<br />

und die automatische Aufnahme<br />

von Geräten in die Überwachung, die<br />

anhand ihrer IP-Adresse oder via SNMP<br />

erkannt wurden. Daneben ist eine manuelle<br />

Erfassung genauso möglich.<br />

Icinga: Bei Icinga werden die zu überwachenden<br />

Systeme wie beim Altvorderen<br />

Nagios zunächst einmal prinzipiell manuell<br />

erfasst. Das automatische Durchsuchen<br />

von Netzen kann über ein Nagios-<br />

Plugin nachgerüstet werden.<br />

Nagios: Nagios hat ein Auto-Discovery-<br />

Modul in der kommerziellen Version. Die<br />

Community-Edition lässt sich wie Icinga<br />

durch ein Plugin aufrüsten.<br />

Konfiguration<br />

Neben der Aufnahme zu überwachender<br />

Objekte gilt es auch darauf zu achten,<br />

wo und wie sie abgelegt werden.<br />

Eine zentralisierte Konfiguration ist hier<br />

selbstverständlich, aber interessant ist<br />

beispielsweise, ob die Objekte in einer<br />

leicht durchsuchbaren Datenbank oder<br />

nur in Plaintext-Files landen. Auch das<br />

Webinterface entscheidet über die Usability<br />

der Konfiguration, wenngleich ein<br />

objektiver Vergleich hier schwieriger ist.<br />

OpenNMS: OpenNMS speichert seine<br />

Konfiguration in Form von XML-Dateien.<br />

Konfigurationsänderungen erfolgen<br />

hauptsächlich über das Webinterface.<br />

Das direkte Editieren der XML-Dateien<br />

ist aber ebenfalls möglich, was etwa für<br />

ein Mass-Deployment wichtig ist.<br />

Zabbix: Zabix legt nur einige grundlegende<br />

Einstellungen für seinen Daemon<br />

in Textfiles ab und speichert alle Informationen<br />

über die überwachten Systeme in<br />

einer Datenbank. Dafür kommen MySQL,<br />

PostgreSQL, Oracle, SQLite2 oder DB2<br />

infrage.<br />

Icinga: Icingas Konfiguration findet sich<br />

in klassischen ASCII-Dateien mit proprietärer<br />

Syntax. Allerdings gibt es einen<br />

Workaround: Unterschiedliche Add-ons,<br />

darunter NagiosQL, LConf oder Nconf,<br />

können Nagios-Konfigurationsfiles erzeugen,<br />

und diese Addons greifen dafür<br />

dann ihrerseits auf Datenbanken oder<br />

einen LDAP-Server zurück.<br />

Nagios: Für Nagios gilt im Prinzip dasselbe<br />

wie für Icinga.<br />

Checks<br />

Als Nächstes stellt sich die Frage, was<br />

überwacht werden kann. Hier sind die<br />

Unterschiede nicht so groß, die grundlegenden<br />

Services haben alle Lösungen outof-the-box<br />

im Blick. Spezielle Anforderungen<br />

lassen sich im Zweifelsfall mit einem<br />

Plugin abdecken. Im Detail zeichnen sich<br />

manche Lösungen aber aus, etwa wenn<br />

OpenNMS die für manche Fehler typischen<br />

dauernden Statuswechsel erkennt<br />

(Flap Detection), während man sich mit<br />

Zabbix dafür etwas selbst stricken nuss.<br />

Auch Nagios oder Icinga bringen einen<br />

entsprechenden Mechanismus mit.<br />

Benachrichtigung<br />

Wurde eine Störung erkannt, muss der<br />

Benutzer davon erfahren. Was so einfach<br />

klingt, ist tatsächlich deutlich komplizierter.<br />

Denn es ergeben sich zahlreiche<br />

Ausnahmen und Sonderfälle: Während<br />

46 Ausgabe 01-2012 Admin www.admin-magazin.de


<strong>Monitoring</strong>-Vergleich<br />

<strong>Monitoring</strong><br />

einer geplanten Auszeit etwa möchte<br />

man keine Nachrichten erhalten, nachts<br />

nur im Notfall, beispielsweise ab einem<br />

bestimmten Schweregrad. Der Chef soll<br />

erst angefunkt werden, wenn die Sache<br />

eskaliert oder kein Mitarbeiter bestätigt<br />

hat, dass er das Problem bearbeitet. An<br />

Sonn- und Feiertagen sollen andere Regeln<br />

gelten als werktags. Manchmal soll<br />

ein Einzelner zu Hilfe gerufen werden,<br />

manchmal eine Gruppe. Der eine ist am<br />

besten via E-Mail erreichbar, ein zweiter<br />

via SMS, der Dritte per Telefon oder Piepser.<br />

Wenn klar ist, was der Auslöser des<br />

Problems ist, sollen etwaige Folgefehler<br />

nicht auch noch Alarme initiieren. Und<br />

so weiter und so fort.<br />

OpenNMS: OpenNMS kann Benachrichtigung<br />

sowohl an Benutzer und Gruppen<br />

als auch an vordefinierte Rollen verschicken.<br />

Dabei lassen sich ganze Benachrichtigungsketten<br />

an unterschiedliche<br />

Personen, Gruppen und Rollen über unterschiedlichste<br />

Medien wie SMS, Ins-<br />

tant Messaging oder E-Mail aufbauen.<br />

Die Ketten können auf Wunsch durch<br />

eine Bestätigung unterbrochen werden.<br />

Innerhalb geplanter Auszeiten können<br />

das Polling, die Benachrichtigung, das<br />

Thresholding und die Data Collection<br />

deaktiviert werden. Um Folgefehler zu<br />

unterdrücken, ist die Konfiguration von<br />

Path Outages möglich, die Alarme für<br />

abhängige Nodes unterdrücken.<br />

Zabbix: Wiederholte Benachrichtigungen,<br />

beliebig viele Eskalationsstufen,<br />

automatische Mitteilungen bis zur Problembeseitigung<br />

und im Erfolgsfall – auch<br />

Zabbix beherrscht das ganze Arsenal<br />

der Notifications. Mithilfe seiner Trigger,<br />

zwischen denen auch Abhängigkeiten<br />

definiert werden können, erlaubt Zabbix<br />

auch das Unterdrücken von Folgefehlern.<br />

Das geht in seinem Fall sogar mehrstufig:<br />

Ein lokaler Host kann beispielsweise von<br />

einem Switch an seinem Standort und<br />

zugleich von einem entfernten Router<br />

und zugleich von einem zentralen Router<br />

abhängen und würde dann nicht als defekt<br />

gemeldet, wenn tatsächlich eine der<br />

übergeordnete Komponente die eigentliche<br />

Ursache ist.<br />

Icinga: Bei der Vielfalt der Benachrichtigungsformen<br />

steht auch Icinga nicht<br />

zurück, es beherrscht ebenfalls etwa die<br />

mehrstufige Eskalation, und es unterdrückt<br />

abgeleitete Fehler, nachdem sie<br />

einmal bestätigt wurden. Eine Spezialität<br />

von Icinga sind Voice-Notifications,<br />

die sogar Menüs enthalten können, mit<br />

denen sich etwa die Ansage wiederholen<br />

oder der Erhalt der Nachricht auch fern<br />

von einer Tastatur bestätigen lässt. Daneben<br />

ist auch Icinga in der Lage, durch vorher<br />

festgelegte Eltern-Kind-Beziehungen<br />

die bloße Nichterreichbarkeit von einem<br />

tatsächlichen Ausfall zu unterscheiden.<br />

Nagios: Schließlich kann in dieser Sparte<br />

auch das klassische Nagios überall sein<br />

Kreuzchen machen. Im Wesentlichen beherrscht<br />

es dieselben Benachrichtigungstechniken<br />

wie die Konkurrenz. E<br />

Kann eine<br />

Schulungseinrichtung<br />

für mehr als EINEN<br />

Themenbereich<br />

berühmt werden?<br />

Das Linuxhotel ist bekannt für erstklassige Open-Source-Schulungen. In den letzten Jahren kamen Java<br />

und andere Programmiersprachen hinzu - wie immer in Kooperation mit führenden Spezialisten, und in<br />

abgeschiedener, konzentrierter, aber auch ziemlich verspielter Umgebung. Es ist so naheliegend, auch<br />

Entwicklerthemen bei den OpenSource‘lern zu lernen, weil man dort schon immer sehr „unter die<br />

Haube“ guckte und mit viel Freude intensivst arbeitet. Das weiss ein Großteil der deutschen Admins, nur<br />

unter Entwicklern hat's sich noch nicht so ganz herumgesprochen.<br />

Mehr siehe www.linuxhotel.de<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

47


<strong>Monitoring</strong><br />

<strong>Monitoring</strong>-Vergleich<br />

Das Benutzerinterface – in der Regel eine<br />

Weboberfläche – bestimmt die Usability<br />

entscheidend mit. Das klassische Vorbild<br />

bringt Nagios mit: Die Ampeldarstellung<br />

haben später viele Nachfahren<br />

übernommen. Mittlerweile wirkt das<br />

Design allerdings ein wenig antiquiert.<br />

Heutzutage erwartet man eher ein Dashboard<br />

mit frei platzierbaren Elementen,<br />

die Visualisierung von Zeitreihen durch<br />

Diagramme, eingebettete Karten und<br />

Grundrisszeichnungen oder Grafiken, die<br />

die Auswirkungen auf Business-Prozesse<br />

illustrieren.<br />

Benutzerinterfaces<br />

In dieser Disziplin hat sich besonders<br />

Icinga (Abbildung 3) mit einem innovativen<br />

Konzept hervorgetan. Ob es dafür<br />

nun gleich der Wortneuschöpfung<br />

„Cronk“ für ein GUI-Element bedurft<br />

hätte oder nicht – das Webinterface von<br />

Icinga ist innovativ und voller praktischer<br />

Lösungen. So kann man alle Spalten der<br />

Status-Übersichten beliebig gruppieren<br />

und nach jeder Spalte sortieren, es gibt<br />

zahlreiche Filter- und Suchmöglichkeiten.<br />

Zudem lassen sich einzelne Kommandos<br />

gleichzeitig an eine Auswahl von<br />

Hosts verschicken. Der Admin kann sich<br />

Views vorkonfigurieren oder auch an andere<br />

weitergeben – dank des flexiblen<br />

Berechtigungskonzepts wahlweise auch<br />

als Nur-Lese-Ansicht.<br />

Das freie Nagios ist davon, wie gesagt,<br />

recht weit entfernt, auch wenn sich<br />

das eine oder andere dort noch über<br />

ein Plug in nachträglich einfügen lässt.<br />

Wesentlich näher dran ist da schon<br />

OpenNMS, das ebenfalls benutzerspezifische<br />

Sichten kennt und bei dem sich<br />

die Benutzerrechte auch fein justieren<br />

lassen. Eine weitere Gemeinsamkeit von<br />

OpenNMS und Icinga sind die teils bereits<br />

vorgefertigten Reports, die besonders das<br />

Management beeindrucken.<br />

Damit sieht es bei Zabbix nicht ganz<br />

so gut aus, aber immerhin RRD-Diagramme<br />

oder Maps gehören auch dort<br />

zum Standard.<br />

Performance und<br />

Skalierbarkeit<br />

Der Performance widmet sich ein eigener<br />

Beitrag dieses Themen-Schwerpunkts,<br />

deshalb soll an dieser Stelle nicht ausführlich<br />

darauf eingegangen werden.<br />

Generell gilt: In kleinen und auch noch<br />

in mittelgroßen Umgebungen ist das<br />

selten ein Thema, in größeren dagegen<br />

schon. Denn hier potenzieren sich die<br />

Zeiten, die für das Auslösen der Checks<br />

und die Verarbeitung der Rückgaben benötigt<br />

werden. Das kann dazu führen,<br />

dass ein Check noch nicht abgearbeitet<br />

ist während der nächste Zyklus schon<br />

wieder fällig wäre. So kann sich unter<br />

Umständen ein nicht mehr abbaubarer<br />

Stau aufschaukeln, der das <strong>Monitoring</strong><br />

zum Erliegen bringt.<br />

Das Zauberwort bei Performanceproblemen<br />

heißt: verteiltes Arbeiten. Die<br />

Möglichkeit für eine solche Lastverteilung<br />

bringt Nagios nicht von Haus aus<br />

mit. Allerdings existieren eine Reihe<br />

von Add-ons, die Verteilungsfunktionen<br />

nachrüsten. OpenNMS dagegen kann von<br />

vornherein einzelne Daemons auf verschiedenen<br />

Servern laufen lassen. Auch<br />

Icinga macht das mit Icinga-Web besser<br />

und gestattet das Auslagern von Core,<br />

Datenbank und Webinterface auf verschiedene<br />

Systemen. Zudem hat es mit<br />

IcingaMQ ein modernes Framework für<br />

das verteilte <strong>Monitoring</strong> der Zukunft in<br />

der Schublade. Auch Zabbix beherrscht<br />

das verteilte <strong>Monitoring</strong> bei sehr vielen<br />

Nodes.<br />

Fazit<br />

Für die Auswahl der individuell besten<br />

<strong>Monitoring</strong>lösung gibt es kein Patentrezept,<br />

aber einen Rat kann man geben:<br />

Ausprobieren! Alle Lösungen lassen sich<br />

relativ problemlos installieren, von einigen<br />

findet man auch fertige VMs wie beispielsweise<br />

das Icinga-Starterkit [5] oder<br />

die Zabbix-Appliance bei VMware [6].<br />

Ansonsten ist auch die Installation aus<br />

Paketen oder Sourcen in der Regel nicht<br />

schwer, nur Zabbix kann ein kleines Problem<br />

sein, weil es ein PHP mit einkompiliertem<br />

Modul »bcmath« voraussetzt. Wo<br />

das fehlt, wird es umständlich. (jcb) n<br />

Abbildung 3: Icinga, hier mit dem Plugin Business Process View, bietet eine moderne und innovative Web-<br />

Benutzeroberfläche.<br />

Infos<br />

[1] OpenNMS: [http:// www. opennms. org]<br />

[2] Zabbix: [http:// www. zabbix. com]<br />

[3] Icinga: [http:// www. icinga.org]<br />

[4] Nagios: [http:// www. nagios. org]<br />

[5] Icinga-Starterkit: [https:// www. icinga. org/​<br />

2010/ 09/ 22/ starter‐kit‐icinga‐virtualappliance/]<br />

[6] Zabbix-Appliance: [http:// www. vmware.​<br />

com/ appliances/ directory/ 353]<br />

48 Ausgabe 01-2012 Admin www.admin-magazin.de


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 01/2011 admin 02/2011 admin 03/2011<br />

admin 04/2011 admin 05/2011 admin 06/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


<strong>Monitoring</strong><br />

Nagios-Ableger<br />

© Alena Ozerova, 123RF<br />

Von Nagios abgeleitete <strong>Monitoring</strong>-Lösungen im Vergleich<br />

Zwillingsforschung<br />

Wie man sie auch bewerten mag – als überflüssige Dubletten, als kurzlebige Konkurrenz oder als wertvolle Bereicherung<br />

– Tatsache ist: Im Nagios-Umfeld hat sich eine bunte Palette aus oft ähnlichen Abkömmlingen und<br />

Nachfolgern, verschiedenen Integrationsprojekten und Erweiterungen entwickelt. Jens-Christoph Brendel<br />

Im Vergleich mit seinen vielen Verwandten<br />

versucht sich Nagios [1] als das Original<br />

zu positionieren, das in einer langen<br />

Entwicklungszeit zu unschlagbarer Reife<br />

und Stabilität gefunden und die größte<br />

Community auf sich verschworen hat. Ob<br />

es dabei auch mit Blick auf die Features<br />

tatsächlich die Nase vorn hat oder ins<br />

Hintertreffen geraten ist, das lässt sich<br />

insofern nicht pauschal beantworten,<br />

als einige der fraglichen Features zwar<br />

der Nagios Community-Edition fehlen,<br />

im kommerziellen und kostenpflichtigen<br />

Nagios XI aber verfügbar wären. Manchmal<br />

kommt man mit einem Nagios-Derivat<br />

aber immerhin unentgeltlich in den<br />

Genuss der Erweiterungen – manchmal<br />

werden aber auch für Enterprise-Varianten<br />

der Klone stolze Summen fällig.<br />

Eine verwandte Problematik ergibt sich<br />

durch Plugins, die jeden Nagios-Ableger<br />

um eine vermisste Funktion nachrüsten.<br />

Etliche Probanden heben sich hier dadurch<br />

ab, dass sie zum Vorteil für den<br />

Nutzer einen sinnvollen Mix dieser Addons<br />

bereits vorinstalliert haben. Andere<br />

gibt es als Software- oder Hardware-<br />

Appliance für den Plug-and-Play-Betrieb.<br />

Wie sehen sich die Nagios-Spielarten nun<br />

aber selbst? Was meinen sie besser zu<br />

können als das Vorbild? Wo sehen sie<br />

ihren Unique Selling Point? Wir haben<br />

bei einer ganzen Reihe solcher Projekte<br />

nachgefragt: Warum sollte man ihre<br />

Nagios-Version dem Original vorziehen?.<br />

Und das erhielten wir zur Antwort:<br />

Groundwork<br />

Groundwork versteht sich im Unterschied<br />

zu Nagios nicht nur als einfaches<br />

<strong>Monitoring</strong>produkt, sondern als eine offene<br />

Plattform für die Überwachung und<br />

Verwaltung von Applikationen und Nachrichtenströmen<br />

im Netzwerk, in physischen,<br />

virtuellen oder Cloud-basierten<br />

Umgebungen. Groundwork will das dank<br />

seiner Integration vieler Open-Source-<br />

Programme leisten, darunter RRDTool,<br />

NeDi, Cacti oder NagVis.<br />

Groundwork [2] sieht sich dabei in einer<br />

ganz ähnlichen Rolle wie ein Linux-<br />

Distributor: Es liefert eigenen Code, der<br />

unterschiedliche freie Komponenten verbindet,<br />

und es steuert Performanceverbesserungen<br />

bei. So erhält der Kunde ein<br />

im Vergleich zu Nagios umfangreicheres<br />

und leistungsfähigeres Toolset. Daneben<br />

ergeben sich weitere Vorteile:<br />

n Eine voll dokumentierte XML/​SOAP-<br />

API für die Zusammenarbeit etwa mit<br />

einem Ticketing-System oder einer<br />

CMDB.<br />

50 Ausgabe 01-2012 Admin www.admin-magazin.de


Nagios-Ableger<br />

<strong>Monitoring</strong><br />

In dasselbe Horn stößt auch Open IT-<br />

Cockpit [4].<br />

Open IT-Cockpit: „Open IT-Cockpit bietet<br />

deutlich mehr als nur reines technisches<br />

Infrastruktur-<strong>Monitoring</strong> – im Unterschied<br />

zu den meisten Nagios-basierten<br />

Varianten oder Forks. Der Fokus des<br />

Projektes liegt darauf, Business-Anforderungen<br />

an intelligente Überwachungssysteme<br />

zu erfüllen. Dazu gehören zum Bein<br />

Eine Konfigurationsdatenbank, die die<br />

Administration erleichtert.<br />

n Ein Portal auf der Grundlage von<br />

JBosss, in das sich auch kundenspezifische<br />

Widgets und Dashboards einbinden<br />

lassen.<br />

n Cloud-Konnektoren.<br />

n Bessere Skalierbarkeit und Performance<br />

als beim originalen Nagios.<br />

Dank Groundwork soll der gegenwärtige<br />

Nagios-User zum einen sein Know-how<br />

und die darin investierte Zeit und Mühe<br />

weiter nutzen und alle bereits erstellten<br />

Nagios-Konfigurationen importieren können,<br />

zum anderen bekommt er eine Zahl<br />

von zusätzlichen Features und die Integration<br />

weiterführender Open-Source-<br />

Projekte obendrauf.<br />

isyVmon<br />

Jeder Vorteil, den ein Nagios-Ableger ins<br />

Feld führt, ist natürlich zugleich ein stummer<br />

Vorwurf an Nagios, entsprechende<br />

Features nicht selbst bereitzustellen und<br />

so argumentiert dann auch das Projekt<br />

isyVmon [3] zuerst mit einer langen Liste<br />

an Nachteilen, die das reine Nagios aus<br />

seiner Sicht hat.<br />

isyVmon: „Schon bei den ersten Projekten<br />

bekamen wir die Nachteile einer reinen<br />

Nagios-Lösung aufgezeigt, darunter<br />

das rudimentäre und unflexible Webinterface<br />

oder die fehlenden Möglichkeiten für<br />

anschauliche Management-Reportings.<br />

Zudem wird die Administration sehr<br />

schnell unübersichtlich, wenn es viele<br />

Systeme und/​oder Checks gibt.<br />

Komplexere Konfigurationen, etwa das<br />

Einbinden weiterer Standorte, erfordern<br />

bei Nagios detailliertes Know-how und<br />

hohen Aufwand. Jede Konfiguration<br />

muss in die Kommandozeile eingetragen<br />

und gepflegt werden. Nagios ist nur teilweise<br />

mandantenfähig (das Webinterface<br />

selbst gar nicht). Ein zentrales Management<br />

fehlt. So bleibt der Betrieb einer<br />

Nagios-Installation zeitaufwändig.<br />

Das eigentliche <strong>Monitoring</strong> beherrscht<br />

Nagios hervorragend. Warum sollte man<br />

das also ersetzen oder neu erfinden?<br />

Stattdessen baut isyVmon auf Nagios auf<br />

und nutzt dessen gewohnte Flexibilität –<br />

bereinigt um die oben erwähnten Nachteile<br />

einer reinen Nagios-Lösung.<br />

isyVmon wird im Umfeld der IT-Security-<br />

Beratung entwickelt. Das heißt nicht unbedingt,<br />

dass isyVmon sicherer ist als<br />

vergleichbare Produkte, aber es heißt,<br />

dass die Entwickler ihre Kunden und sehr<br />

viele beim Kunden eingesetzte Produkte<br />

sehr genau kennen – im Detail, im Betrieb,<br />

auch im Bereich Managed Security<br />

Services. Damit wissen wir sehr gut, was<br />

wir mit isyVmon monitoren wollen und<br />

müssen. Beispielsweise haben wir das<br />

Logmanagement-Tool Splunk in isyVmon<br />

integriert, nachdem es bei sehr vielen<br />

Kunden im Einsatz ist.“<br />

Open IT-Cockpit<br />

Abbildung 1: Die Architektur von isyVmon – orange die zusätzlichen Module dieser Lösung.<br />

spiel die Geschäftsprozessüberwachung,<br />

IT-Service-Dashboards, SLA-<strong>Monitoring</strong>,<br />

SAP-<strong>Monitoring</strong>, End-to-End-Messungen,<br />

Eventkorrelation, Reporting und vor allem<br />

die Integration von angrenzenden<br />

Applikationen wie Ticketsystemen oder<br />

CMDBs über eine entsprechende API.<br />

Open IT-Cockpit besitzt zudem ein umfangreiches<br />

und leicht zu bedienendes<br />

Webfrontend zur Konfiguration und Administration<br />

von Nagios. Benötigte man<br />

für die Verwaltung des Originals noch<br />

erweiterte Nagios- und Linux-Kenntnisse,<br />

lässt sich Open IT-Cockpit einfach und<br />

intuitiv von jedermann bedienen.<br />

Open IT-Cockpit bietet ein Webfrontend,<br />

das mehrere Open-Source-Tools integriert<br />

und zu einer Einheit verschmilzt (Umbrella<br />

Management System). Ein Beispiel:<br />

Während bei anderen Projekten bereits<br />

eine eigene Kartenverwaltung kostenpflichtig<br />

hinzubestellt werden muss, ist<br />

für diese Zwecke bei Open IT-Cockpit<br />

ohne Aufpreis NagVis implementiert.<br />

Open IT-Cockpit eignet sich besonders<br />

zur Überwachung komplexer, unübersichtlicher<br />

oder über mehrere Standorte<br />

verteilter Infrastrukturen.“<br />

Shinken<br />

Auch die Entwickler von Shinken [5]<br />

sind sich sicher, manches besser machen<br />

zu können als das Vorbild. Sie integrieren<br />

allerdings das originale Nagios nicht,<br />

sondern entwickeln es in Python von<br />

Grund auf neu. Was kann ihre Lösung,<br />

was Nagios nicht kann? Die Antworten<br />

kommen Schlag auf Schlag:<br />

Shinken: „Zum Beispiel skalieren. Durch<br />

die Aufteilung in spezialisierte Prozesse<br />

wird bei Shinken bereits ein Minimalsystem<br />

so weit entzerrt, dass Bottlenecks<br />

vermieden werden. Jede Komponente<br />

einer Shinken-Installation kann in beliebiger<br />

Zahl vorhanden sein und auf einem<br />

beliebigen Rechner laufen. Bei wachsender<br />

Anzahl von überwachten Objekten<br />

wächst das <strong>Monitoring</strong>-System einfach<br />

mit. Dies kann auch dynamisch geschehen,<br />

indem man Worker-Prozesse in eine<br />

Cloud verlagert und einfach zu- oder abschaltet.<br />

Trotz dieser flexiblen Architektur<br />

wird nur eine einzige Konfiguration<br />

gepflegt. Shinken kümmert sich um die<br />

ausgewogene Verteilung der <strong>Monitoring</strong>-<br />

Aufgaben.<br />

E<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

51


<strong>Monitoring</strong><br />

Nagios-Ableger<br />

Abbildung 2: Der Host-Editor von OpMon erlaubt es, die Daten der zu überwachenden Hosts via Webformular<br />

einzugeben.<br />

Shinken bietet zudem mehr Ausfallsicherheit.<br />

Die Möglichkeit, mehrere Prozesse<br />

des gleichen Typs laufen zu lassen,<br />

dient nicht nur der Lastverteilung. Beim<br />

Ausfall eines Prozesses übernehmen die<br />

anderen dessen Aufgaben. Auch ist es<br />

möglich, Prozesse nur im Standby-Modus<br />

zu starten. Shinken kümmert sich dabei<br />

selbstständig um das Failover.<br />

Dedizierte Worker-Prozesse (die Plugins<br />

ausführen) können dort laufen, wo sie<br />

benötigt werden, beispielsweise in einer<br />

DMZ oder an einem Außenstandort.<br />

Checks für entsprechend markierte Hosts<br />

werden von Shinken automatisch zu diesen<br />

Workern geroutet.<br />

Eine eigene Logik für Business-Prozesse<br />

ist nativ in Shinken enthalten. Services<br />

können ein vordefiniertes Kommando<br />

»bp_rule« verwenden, dessen Argumente<br />

logische Verknüpfungen mit anderen<br />

Services sind. Der Status wird<br />

Abbildung 3: Auch die Community Edition von Opsview kennt schon eine grafische Darstellung der<br />

Netzwerkumgebung,.<br />

dann durch die Berechnung dieser logischen<br />

Formeln ermittelt.<br />

Im Unterschied zu Nagios kennt Shinken<br />

Prioritäten für Objekte. Das neue<br />

Attribut »business_impact« erlaubt die<br />

Kategorisierung von Hosts und Services<br />

nach ihrer Wichtigkeit. Dazu vergibt man<br />

Werte von »0« (unwichtig, Testsystem)<br />

bis »5« (hoch kritisch). Man kann damit<br />

etwa einstellen, dass nachts nur bei Ausfüllen<br />

von Hosts oder Services mit einem<br />

»business_impact« größer »3« Notifications<br />

verschickt werden.<br />

Probleme und Impacts: Für Shinken ist<br />

Critical nicht gleich Critical. Fällt zum<br />

Beispiel ein Switch aus, so wird er und<br />

alle dahinter hängenden Hosts als defekt<br />

angezeigt. Vorausgesetzt, es wurde eine<br />

Parent-Child-Beziehung zwischen dem<br />

Switch und den Hosts definiert, erkennt<br />

Shinken, dass der kaputte Switch ein<br />

Problem und die als Down angezeigten<br />

Hosts daraus resultierende Impacts sind.<br />

In der GUI gibt es eine eigene Sicht dafür.<br />

Man kann sich also durch Klick auf einen<br />

Host die Ursache anzeigen lassen sowie<br />

durch einen Klick auf den Switch die<br />

Auswirkungen des Defekts.“<br />

NetEye<br />

Zahlreiche Funktionen, die es beim originalen<br />

Nagios nicht in dieser Form gibt,<br />

kann auch NetEye [6] aufzählen:<br />

NetEye: „Mit dem Modul Asset- und Inventory<br />

Management kann NetEye beispielsweise<br />

ein automatisches Inventar<br />

der Arbeitsplätze erstellen. Dafür integriert<br />

es die Open-Source-Projekte GLPI<br />

und OSC Inventory. Informationen zu<br />

Notebooks, Desktops, Monitoren, Druckern,<br />

Netzwerkgeräten und Servern<br />

werden in einer eigenen Datenbank automatisch<br />

gesammelt. Nach der Aktivierung<br />

dieses Dienstes ist es möglich, eine<br />

detaillierte Liste der Konfigurationen aller<br />

Hardware- und Softwarekomponenten im<br />

Netz zu erzeugen.<br />

Hersteller Würth Phoenix hat zudem mit<br />

Safed Agent einen universell einsetzbaren<br />

Syslog-Agenten unter der GPL entwickelt,<br />

der alle gängigen Plattformen unterstützt.<br />

Er liest Betriebssystemevents von Windows<br />

wie auch generische Logfiles und<br />

lässt sich einen eingebetteten Webserver<br />

konfigurieren, der HTTP sowie HTTPS<br />

unterstützt.<br />

C<br />

M<br />

Y<br />

CM<br />

MY<br />

CY<br />

CMY<br />

K<br />

52 Ausgabe 01-2012 Admin www.admin-magazin.de


Nagios-Ableger<br />

<strong>Monitoring</strong><br />

Eine speziell entwickelte Message Console<br />

erlaubt die Auflistung klassifizierter<br />

Störfälle mit frei konfigurierbaren Fehlerklassen<br />

und Filterregeln. Das Web Service<br />

<strong>Monitoring</strong> wird wiederum durch ein eigens<br />

realisiertes Modul unterstützt. Als<br />

Basis-Engine wird hier das Open-Source-<br />

Projekt Webinject genutzt. Rund um<br />

Web inject entstand eine Web-Oberfläche,<br />

in die Test-Szenarien eingegeben werden<br />

können. Damit lassen sich auf einfache<br />

Art und Weise intelligente Checks für<br />

Web-Anwendungen realisieren.<br />

Der in NetEye integrierte SNMP-Trap-<br />

Handler kann verschiedene Filter- und<br />

Kategorisierungsmöglichkeiten über ein<br />

speziell entwickeltes Interface verwalten.<br />

Die gesammelten Daten können<br />

auch in die Message Console oder den<br />

Nagios Service Check Acceptor (NSCA)<br />

einfließen. Umfassende Suchfunktionen<br />

helfen dem Administrator dann anschließend<br />

beim Auffinden der zu analysierenden<br />

Traps.<br />

getD_043_<strong>Magazin</strong>e_Ad_3.ai 1 6/22/11 9:22 PM<br />

Die Komponente Network Access Monitor<br />

erlaubt es, auf einfache Weise festzustellen,<br />

ob ein fremdes Gerät im Netz<br />

angeschlossen wurde, dessen Ports der<br />

Monitor dann auf Wunsch automatisch<br />

in ein isoliertes VLAN verschieben kann.<br />

Auf diesem Weg wurde ein einfaches Network<br />

Access Control-Modul mit geringer<br />

Komplexität realisiert.<br />

Das Modul Network Traffic Monitor wiederum<br />

nutzt das Open-Source-Projekt<br />

NFSEN, das in der Lage ist, NetFlow-<br />

Ströme von Routern und Switches auszuwerten.<br />

Die Daten lassen sich dann in<br />

eigene Profile aggregieren, sodass sich<br />

eine klare Darstellung der Bandbreite<br />

auf Applikationsebene ergibt. Durch das<br />

Ablegen der Profile in RRD-Files lassen<br />

sich auch Trendanalysen der Bandbreitennutzung<br />

auf Applikationsebene über<br />

ein ganzes Jahr hinweg realisieren. Damit<br />

ist ein Capacity Management wahlweise<br />

auf Jahres-, Monats- oder auch Wochenebene<br />

möglich.<br />

Ein speziell entwickeltes BSM-Modul erlaubt<br />

es NetEye schließlich, die Auswirkungen<br />

von IT-Störfällen auf Geschäftsprozesse<br />

darzustellen. Auch lassen sich<br />

Störungen simulieren (Business Impact<br />

Analyse). Mithilfe von NagVis wird auch<br />

ein Dashboard zur visuellen Darstellung<br />

zur Verfügung gestellt. Dies hilft<br />

bei der schnellen Identifizierung defekter<br />

Hardwarekomponenten und erlaubt<br />

eine logische Darstellung der eigenen IT-<br />

Infrastruktur mit einem frei definierbaren<br />

Detailierungsgrad.“<br />

OpMon<br />

Einen etwas anderen Ausgangspunkt hat<br />

OpMon [7]: Hier waren es brasilianische<br />

Admins, die sich mit dem englischsprachigen<br />

Nagios schwertaten, weshalb die<br />

Firma OpServices in Sao Paulo eine Übersetzung<br />

der Software ins brasilianische<br />

Portugiesisch anfertigte. Und weil man<br />

einmal dabei war, baute man auch gleich<br />

IT-Admin? Computerfreak? Technikfan?<br />

Dann schau rein bei getDigital.de, dem Shop mit Gadgets,<br />

T-Shirts und Geschenken für Geeks und alle Computerfans!<br />

USB Gadgets<br />

USB Stressball<br />

=C23,90<br />

Drücken lässt<br />

den Bildschirm<br />

schrumpfen!<br />

USB Webcam Raketenwerfer<br />

Mit Webcam<br />

und fernsteuerbar<br />

per<br />

Skype!<br />

=C59,95<br />

Tools für Nerds T-Shirts für Admins Vorteilsgutschein<br />

USB Batterien<br />

ab<br />

=C16,95<br />

Batterien sind am USB-Anschluss<br />

aufladbar.<br />

Anyloader<br />

Lädt Handy und<br />

Co. mit<br />

Solarstrom.<br />

=C34,95<br />

=C= 34<br />

Turning it off and on again<br />

No.<br />

Alternativ<br />

geht<br />

natürlich<br />

auch diese<br />

Antwort.<br />

ab<br />

=C14,90<br />

Die<br />

Standardantwort<br />

im Support<br />

ab<br />

=C15,90<br />

RFID Schutzhülle<br />

=C4,95<br />

Mit dem Gutscheincode<br />

ITAM_TKKNRQ<br />

gibt es für Leser des IT-Admin-<br />

<strong>Magazin</strong>s eine RFID Schutzhülle<br />

kostenlos zur Bestellung dazu!<br />

www.admin-magazin.de<br />

Admin<br />

www.getdigital.de<br />

Ausgabe 01-2012<br />

53


<strong>Monitoring</strong><br />

Nagios-Ableger<br />

noch ein paar Funktionen ein, die sich<br />

die Anwender wünschten. Beispielsweise<br />

ein eigenes, mehrsprachiges PHP-Webinterface,<br />

neue Report-Module und einen<br />

Scheduler für Reports, die die Bereiche<br />

SLAs, Capacity Planning oder Verfügbarkeit<br />

abdecken.<br />

Ganz oben auf der Wunschliste der Anwender<br />

stand auch eine bessere Visualisierung<br />

des Status der überwachten<br />

Prozesse. Dafür entstand das mächtige<br />

Dashboard DaVINCI, das auch in andere<br />

Nagios-Installationen integrierbar ist.<br />

Etliche der neuen Komponenten erforderten<br />

eine leistungsfähige Datenbankunterstützung,<br />

die erst noch geschaffen werden<br />

musste, was dann auch einen webbasierten<br />

Konfigurator möglich machte. Im<br />

Moment wollen die Entwickler OpMon<br />

als ITIL-Tool weiter ausbauen und einen<br />

Service Desk sowie eine CMDB. (OTRS)<br />

integrieren.<br />

OP5<br />

Skalierbarkeit, Benutzerfreundlichkeit<br />

und ein besseres Reporting zählt auch OP5<br />

[8] zu seinen Alleinstellungsmerkmalen.<br />

Das eigens dafür entwickelte Backend<br />

Merlin [9] offeriert dabei Loadbalancing<br />

und diverse Hochverfügbarkeitsszenarien<br />

in Nagios-Umgebungen. Zudem enthält<br />

es eine Datenbankschnittstelle, die auch<br />

andere Komponenten benutzen.<br />

Eine moderne, schnelle Ajax-basierte<br />

Oberfläche mit intuitiven Such- und<br />

Sortierfunktionen garantiert eine hohe<br />

Benutzerfreundlichkeit und erlaubt<br />

es nicht nur Nagios-Spezialisten, den<br />

Status aller IT-Prozesse im Auge zu behalten.<br />

Dabei kann nahezu jeder Messwert,<br />

den ein Systemcheck erhebt, in<br />

einem aussagekräftigen Graphen visualisiert<br />

werden.<br />

Dazu kommen eigene Reports, etwa zu<br />

Service Level Agreements oder zur Verfügbarkeit<br />

und ein eigenes Dashboard<br />

mit individuell konfigurierbaren Widgets<br />

sowie datenbankgestütztem Status.<br />

Schließlich verweist OP5 auch auf seinen<br />

kompetenten Support, den es – auch zusammen<br />

mit Partnern – international für<br />

600 Installationen anbietet.<br />

Opsview<br />

Auch Opsview [10] verweist gerne auf<br />

seinen weltweiten Support, ein Partnernetzwerk<br />

und namhafte Referenzkunden<br />

wie Symantec, Telefonica, Sky, Fujitsu<br />

oder die Allianz. Bei seinen Verbesserungen<br />

gegen den originalen Nagios setzt<br />

Opsview bei denselben Schwachstellen<br />

an wie viele seiner Mitbewerber: Es bietet<br />

bessere Reports, eine bessere Benutzerschnittstelle,<br />

bessere Skalierbarkeit und<br />

eine bessere Visualisierung. Dafür übernimmt<br />

es zahlreiche freie Add-ons.<br />

Einige der zusätzlichen Module setzen<br />

allerdings den Abschluss einer Enterprise<br />

Subscription voraus, die schon für<br />

schlappe 10 000 Dollar zu haben ist. Dafür<br />

bekommt man dann einen Connector,<br />

der automatisch Tickets im Service-Desk-<br />

System generiert, Alarme via SMS, eine<br />

Opsview-Testumgebung mit automatischer<br />

Synchronisation von Änderungen<br />

und Reports (auf der Grundlage von Jasper<br />

Reports), die automatisch erstellt und<br />

etwa im PDF-Format auch selbstständig<br />

verteilt werden.<br />

Centreon<br />

Centreon [11] verfolgt ein ganz ähnliches<br />

Konzept mit kommerziellen Modulen<br />

wie Opsview. In seinem Fall ist es unter<br />

anderem eine Erweiterung, die eine<br />

Darstellung der überwachten Objekte in<br />

interaktiven Karten realisiert, in die man<br />

hineinzoomen kann (Centreon MAP).<br />

Dazu gibt es auch hier ein spezielles Addon<br />

für das Reporting (Centreon BI) und<br />

ebenfalls eines für die Geschäftsprozessüberwachung:<br />

Business Activity <strong>Monitoring</strong><br />

(Centreon BAM).<br />

Das alles kann man auf Wunsch eingebettet<br />

in eine spezielle Linux-Distribution<br />

auf der Grundlage von CenOS haben,<br />

dem Centreon Enterprise Server (CES).<br />

Dieser Server ist in vier Abstufungen zu<br />

haben. Während „Standard“ noch kostenlos<br />

ist,muss man für die höchste Ausbaustufe<br />

„Complete“ schon bis zu 14 000<br />

Dollar im Jahr bezahlen.<br />

n<br />

Abbildung 4: Auch Centreon kennt im Unterschied zum originalen Nagios eine webbasierte GUI für die<br />

Konfiguration – hier der Hosteditor.<br />

Infos<br />

[1] Nagios: [http:// www. nagios. org]<br />

[2] Groundwork: [http:// www. gwos. com]<br />

[3] isyVmon: [http:// www. isyvmon. com/ de/​<br />

home. html]<br />

[4] Open IT-Cockpit:<br />

[http:// www. open‐itcockpit. com]<br />

[5] Shinken:<br />

[http:// www. shinken‐monitoring. org]<br />

[6] NetEye: [http:// www. wuerth‐phoenix. com/​<br />

de/ loesungen/ wuerthphoenix‐neteye/]<br />

[7] OpMon: [http:// www. opservices. com. br]<br />

[8] OP5: [http:// www. op5. com]<br />

[9] Merlin-Backend:<br />

[http:// www. op5. org/ community/​<br />

plugin‐inventory/ op5‐projects/ merlin]<br />

[10] Opsview: [http:// www. opsview. com]<br />

[11] Centreon: [http:// www. centreon. com]<br />

54 Ausgabe 01-2012 Admin www.admin-magazin.de


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

ACADEMY<br />

LPIC-1<br />

All-in-One Solution<br />

✓<br />

✓<br />

✓<br />

Stellen Sie Ihr Linux-Wissen mit<br />

einer Zertifizierung unter Beweis!<br />

Nutzen Sie die volle Flexibilität bei<br />

der Zeiteinteilung Ihrer Schulung!<br />

Holen Sie sich alles, was Sie<br />

benötigen, in einem Paket!<br />

LPIC-1 Komplettpaket* nur € 1.249<br />

*Zertifizierung als „Junior Level Linux Professional“<br />

(zzgl. MwSt.)<br />

100% flexibel!<br />

Weitere Infos: academy.linux-magazin.de/solution


<strong>Monitoring</strong><br />

Open IT-Cockpit<br />

© poco_bw, Fotolia<br />

Im Test: Open IT-Cockpit Version 2.6.5<br />

Kontrollzentrale<br />

Nagios-Ableger gibt es mittlerweile viele. Open IT-Cockpit setzt auf reduzierten Funktionsumfang und Übersichtlichkeit.<br />

Was das im Detail bedeutet, verrät dieser Test. Bernhard Fahr<br />

Die Zeit der Dinosaurier ist vorbei: Nagios<br />

und eine Reihe von Open-Source-Tools<br />

mischen seit einiger Zeit den Markt für<br />

Systemmanagement und <strong>Monitoring</strong> auf.<br />

Sie überzeugen durch einen aufs Wesentliche<br />

reduzierten Funktionsumfang,<br />

große Flexibilität und nicht zuletzt niedrige<br />

(keine) Lizenzkosten. Ein Vertreter<br />

dieser Gattung ist Open IT-Cockpit, das<br />

von dem Fuldaer Dienstleister it-novum<br />

unter einer Open-Source-Lizenz veröffentlicht<br />

wurde.<br />

Open IT-Cockpit steht unter der GPLv2<br />

und ist laut der Community-Webseite [1]<br />

als zentrales Umbrella-Managementsystem<br />

konzipiert. Die Anwendung ist im<br />

Laufe verschiedener Systemmanagementprojekte<br />

entstanden. Am Anfang stand<br />

eine Nagios-Lösung, die laufend weiterentwickelt<br />

und ergänzt wurde. Seit Juni<br />

2010 steht Open IT-Cockpit unter einer<br />

Open-Source-Lizenz und lag für diesen<br />

Test in Version 2.6.5 vor. Nach Angaben<br />

des Herstellers soll Ende Januar 2012 Version<br />

2.7.1 veröffentlicht werden.<br />

Der Installer von Open IT-Cockpit unterstützt<br />

Linux-Derivate wie Ubuntu 10.04,<br />

Debian 6.x, OpenSuse 11.2 und Suse<br />

Linux Enterprise 11. Zu Testzwecken haben<br />

wir uns für Suse Linux Enterprise 11<br />

SP1 x86_64 entschieden. Die Installation<br />

sollte analog zum lizenzfreien OpenSuse<br />

11.1 x86_64 ablaufen. Für die Installation<br />

haben wir den neuen Shell-Skript-<br />

Installer gewählt. Nachdem es einige<br />

Kritik an dem alten Installer gab, weil er<br />

nur von einer externen Community-Seite<br />

heruntergeladen werden konnte, haben<br />

die Entwickler nachgezogen: Seit Kurzem<br />

gibt es ein eigenes Installationsskript<br />

(Version 0.1) auf der Open-IT-Cockpit-<br />

Communityseite.<br />

Anpassbar<br />

Ist die Tar-Datei von [2] entpackt, sieht<br />

man die Ordnerstruktur mit mehreren<br />

Include-Skripten zur nahtlosen Integration<br />

in die verschiedenen Derivate, die<br />

in das Hauptskript »install.sh« integriert<br />

sind. Nach den Angaben auf der<br />

Webseite werden neben 32- und 64-Bit-<br />

Systemen auch nicht gelistete Systeme<br />

grundsätzlich unterstützt – allerdings erst<br />

nach manueller Anpassung des Installer-<br />

Skripts. Wir empfehlen nur bedingt, von<br />

dieser Option Gebrauch zu machen. Neben<br />

Änderungen an Paketen, Libraries<br />

oder Abhängigkeiten spielt nämlich auch<br />

die unterstützte PHP-Version (zurzeit maximal<br />

5.2.x) eine entscheidende Rolle.<br />

Es ist deshalb denkbar, dass es unter<br />

neueren Derivaten wie Debian 6.0.1 oder<br />

ab OpenSuse 11.1 kleinere Probleme gibt,<br />

denn dort kommt bereits die neuere PHP-<br />

Version 5.3 zum Einsatz. In der Community<br />

sind aber bereits Bugfixes veröffentlicht<br />

worden. In Open IT-Cockpit 2.7.1<br />

ist dieses Problem behoben, die Version<br />

funktioniert mit PHP 5.3.<br />

Mit dem Shell-Befehl »lsb_release ‐d«<br />

lässt sich die exakte Bezeichnung des eigenen<br />

Linux-Derivats feststellen, um sie<br />

im Installer selbst von Hand anzupassen.<br />

Experimentierfreudige User sollten einen<br />

Blick in die »install.sh« unter der Funktion<br />

»Main«, Unterpunkt »# detect the<br />

system you are using« werfen, wo sich<br />

die Versionsprüfung befindet.<br />

Ist die komplett menügeführte Installation<br />

erst einmal angestoßen, läuft sie reibungslos<br />

durch und lädt neben Paketen<br />

und ihren Abhängigkeiten sämtliche zur<br />

Installation erforderlichen Komponenten<br />

56 Ausgabe 01-2012 Admin www.admin-magazin.de


Open IT-Cockpit<br />

<strong>Monitoring</strong><br />

selbstständig herunter. Neben Angaben<br />

zum Proxy (sofern noch nicht eingerichtet)<br />

werden Login-Daten für Datenbank,<br />

Weboberfläche oder auch die Lage der<br />

Datenbank (interessant bei separatem<br />

Hosting) abgefragt.<br />

Alle Änderungen in den Konfigurationen<br />

von Nagios, der Rechtevergabe, die Userbeziehungsweise<br />

Gruppenzuordnungen<br />

und der Weboberfläche nimmt der Installer<br />

automatisch selbst vor, sodass das<br />

System nach Abschluss der Installation<br />

sofort startklar ist.<br />

Der erste Kontakt<br />

Die Oberfläche von Open IT-Cockpit ist in<br />

PHP entwickelt und enthält einige Ajax-<br />

Elemente. Sie ist wahlweise englisch oder<br />

deutsch und zum größten Teil selbsterklärend.<br />

Nach erfolgreicher Installation<br />

loggt man sich mit dem Browser auf dem<br />

<strong>Monitoring</strong>-Server ein. Die Authentifizierung<br />

erfolgt über htaccess, dessen Login-<br />

Daten bereits bei der Installation angepasst<br />

wurden. Der erste Eindruck des<br />

Cockpits ist eine angenehm aufgeräumte<br />

Gesamtübersicht aller Host- und Service-<br />

Checks. Sie ist in zwei separate Graphen<br />

zusammengefasst, deren Details darunter<br />

zahlentechnisch dargestellt werden.<br />

Im Cockpit erhält man zügig einen Überblick<br />

über den Gesundheitszustand der<br />

kompletten Infrastruktur nebst Downtimes<br />

(Abbildung 1). Alternativ kann zur<br />

statusabhängigen Listenansicht gewechselt<br />

werden. Sie zeigt in Kurzform alle<br />

Hosts oder Services mit dem Status an,<br />

Links zur Dokumentation und den Performancedaten<br />

sind ebenfalls vorhanden.<br />

Die Liste kann im PDF-Format gespeichert<br />

werden. Eine Info-Box enthält die<br />

direkten statusorientierten Verlinkungen,<br />

zum Beispiel zu noch unbehandelten<br />

oder geplanten Problemen.<br />

Bei einer großen Zahl von Hosts beziehungsweise<br />

Services und lediglich kleineren<br />

Ausfällen kann man auf der Graphenansicht<br />

jedoch nicht mehr allzu viel<br />

erkennen. Man sollte daher immer auch<br />

die Zahlen darunter im Auge behalten.<br />

In allen Menüs befindet sich im linken<br />

oberen Rand eine Schnellsuchfunktion<br />

mit optional erweiterter Suche. Dadurch<br />

lassen sich Hosts direkt oder nach bestimmten<br />

Kriterien finden – das funktioniert<br />

gut und erleichtert die tägliche Ar-<br />

beit enorm. In manchen Menüs werden<br />

Radio-Buttons oder Check-Boxen nicht<br />

direkt betitelt, stattdessen öffnet sich die<br />

entsprechende Quickinfo-Box beim Verweilen<br />

mit dem Mauszeiger. Auch wenn<br />

uns die Open IT-Cockpit-Weboberfläche<br />

sehr gut gefällt, kann man die klassische<br />

Nagios-Oberfläche über »http://Host‐IP/<br />

openitc/old/« erreichen.<br />

Der intuitiven Oberfläche sei Dank gestaltet<br />

sich das Einrichten der Devices<br />

und Service-Checks sehr einfach. Für den<br />

besonders schnellen Einstieg steht einem<br />

zudem ein Wizard zur Seite (Abbildung<br />

2). Nach der Einrichtung kann man in<br />

den detailierten Host-Informationen verschiedene<br />

Kommandos wie das manuelle<br />

Ausführen eines Checks oder das passive<br />

Senden eines Status zur Kontrolle vornehmen.<br />

Kleiner Wermutstropfen: Eine<br />

automatische Host-/​Service-Discovery<br />

fehlt leider in der Community-Version<br />

und wird nur im Projektrahmen von itnovum<br />

angeboten.<br />

Die Import-/​Exportfunktion<br />

Import-/​Exportfunktionen befinden sich<br />

unter dem Reiter »Konfiguration | Import/Export«<br />

und sind für die Anpassung<br />

und Übertragung der geänderten Host-,<br />

Service-, Benachrichtigungsdaten und<br />

so weiter an den Nagios-Kernel zuständig.<br />

Es empfiehlt sich daher, nach dem<br />

ersten Login mithilfe des Host-Wizards<br />

(»Konfiguration | Systemkonfiguration«)<br />

mindestens einen Host (zum Beispiel localhost)<br />

und einen Service-Check (etwa<br />

LAN-PING) anzulegen und im Anschluss<br />

den Export durchzuführen. Erst dadurch<br />

werden die Devices für die Überwachung<br />

aktiviert. Generell empfiehlt es sich, bei<br />

der Export-Funktion die vorbelegte Option<br />

»cli restart« im Drop-down-Menu zu<br />

nutzen. Sie nimmt nicht nur ein Backup<br />

der alten Konfiguration vor, überprüft<br />

und spielt die neue Konfiguration ein,<br />

sondern führt auch einen kompletten<br />

Neustart des Nagios-Kernels durch.<br />

Erweitert<br />

Die gute Auswahl an Plugins und fertigen<br />

Servicevorlagen ermöglicht (mit kleineren<br />

Anpassungen) die schnelle Konfiguration<br />

einer Systemlandschaft. Grundfunktionalitäten<br />

wie Erreichbarkeit, Speicher-,<br />

CPU-, Festplattenauslastung und so weiter<br />

deckt Open IT-Cockpit problemlos<br />

ab. Die Schwellwerte, Prüfintervalle und<br />

Verhaltensweisen bei Statusänderungen<br />

und so weiter müssen natürlich an die<br />

jeweiligen Unternehmensbedürfnisse angepasst<br />

werden.<br />

E<br />

Abbildung 1: Die Startseite von Open IT-Cockpit präsentiert eine Übersicht des Systemstatus.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

57


<strong>Monitoring</strong><br />

Open IT-Cockpit<br />

Hier macht sich einer der großen Vorteile<br />

von Open IT-Cockpit bemerkbar: Durch<br />

die Verwandschaft mit Nagios kann<br />

man auf die riesige Menge an Nagios-<br />

Plugins mit kompletter Dokumentation<br />

und Fachbüchern der Nagios Community<br />

zurückgreifen. Natürlich sollte man dabei<br />

mit einer gewissen Einarbeitungszeit<br />

rechnen. Wem das zu mühsam ist, der<br />

kann das Know-how kaufen. In großen<br />

IT-Umgebungen sind eventuell auch die<br />

kostenpflichtigen Zusatzmodule, zum<br />

Beispiel für die Überwachung von SAP-<br />

Systemen, SLAs oder End-to-End-<strong>Monitoring</strong><br />

interessant.<br />

Für unser Testsystem nehmen wir jedoch<br />

die Anpassungen selbst vor. Auch weitere<br />

Service-Vorlagen erstellen wir selbst mit<br />

eigenen Werten. Die funktionelle Oberfläche<br />

in Kombination mit Eigenarbeit<br />

trägt schnell Früchte: Wir haben nun die<br />

Möglichkeit, innerhalb kurzer Zeit kleine<br />

bis große Anlagen frei skalierbar einzurichten.<br />

Kontrolle<br />

Neben der Zeitersparnis durch die Automatisierung<br />

und Überblickbarkeit essenzieller<br />

täglicher Aufgaben in der Oberfläche<br />

bietet Open IT-Cockpit auch ausgefeilte<br />

Rechteverwaltung: Die Anwendung<br />

lässt sich durch jeden autorisierten Mitarbeiter<br />

der IT-Abteilung bedienen. Das Berechtigungssystem<br />

ist sehr komfortabel,<br />

die Rechte einfach einstellbar. Die User<br />

sind in Benutzergruppen unterteilt.<br />

Da Open IT-Cockpit mandantenfähig ist,<br />

lassen sich mehrere virtuell getrennte<br />

Systeme in einem einzigen Open IT-<br />

Cockpit verwalten und ihre Benutzer in<br />

verschiedene Berechtigungsgruppen unterteilen.<br />

Dank eines TVD-Kalenders kann man<br />

Verfügbarkeiten und Urlaubsvertretungen<br />

der IT-Mitarbeiter sehr einfach organisieren.<br />

Das klappt mithilfe der Zeitzonenunterstützung<br />

sogar für ausländische<br />

Standorte. Für die Benachrichtigungen<br />

im Bedarfsfall lassen sich Kontaktpersonen,<br />

Kontaktgruppen und deren Benachrichtigungszeiträume<br />

(Servicezeiträume),<br />

Kommunikationsmedium (E-Mail, SMS)<br />

und Benachrichtigungsstatus einpflegen.<br />

Der E-Mail-Versand ist durch den Einsatz<br />

eines Postfix-Servers unabhängig vom internen<br />

Mailserver möglich. Nicht zuletzt<br />

Abbildung 2: Der Host-Wizard hilft bei der Einrichtung der zu überwachenden Rechner.<br />

existiert auch ein Eskalationsmanagement<br />

für Kontaktpersonen.<br />

Bei der täglichen Arbeit mit der Open<br />

IT-Cockpit-Oberfläche stellt man schnell<br />

fest, dass nicht der komplette Funktionsumfang<br />

von Nagios zur Verfügung steht.<br />

Der Hersteller hat vielmehr versucht, ein<br />

gutes Verhältnis zwischen Einfachheit und<br />

Funktionalität zu finden, weil darin der<br />

Vorteil von Open IT-Cockpit als Umbrella-<br />

Management-Lösung liegt. Unserer Meinung<br />

nach wurde dieses Ziel erreicht.<br />

Die Graphen<br />

Zur Darstellung von Graphen verwendet<br />

Open IT-Cockpit PNP4NAGIOS. Dieses<br />

Drittanbieterprojekt ist parallel zu Nagios<br />

entstanden. Es dient nicht nur der<br />

Analyse von Performance-Daten und<br />

ihrer Speicherung in RRD-Datenbanken.<br />

PNP4NAGIOS liefert auch eine Auswahl<br />

an verschiedenen Templates. Dadurch<br />

lassen sich einfache wie komplexe (gesamter<br />

Netzwerk-Traffic) Graphen individuell<br />

darstellen und anpassen, zum<br />

Beispiel separat dargestellte In- und<br />

Output-Graphen. Sinnvoll ist auch die<br />

Mehrfach-Zoom-Funktion zur Detailanalyse<br />

des Graphen. Über ein Auswahlrechteck<br />

kann man den Graphen gezielt<br />

vergrößern. Schwellwertlinien zeigen an,<br />

ob der Status »Warning« oder »Critical«<br />

erreicht wurde.<br />

Auf der Community-Seite von Open IT-<br />

Cockpit befindet sich ein weiteres Projekt:<br />

NSTA (Version 0.2) holt Daten aus<br />

verschiedenen Nagios-Satellitensystemen<br />

und übergibt sie chronologisch an<br />

»nagios.cmd«. Sollten Satellitensysteme<br />

über eine verschlüsselte SSH-Verbindung<br />

temporär nicht erreichbar sein, werden<br />

die Ergebnisse in einer Spool-Datei zwischengespeichert<br />

und bei nächster Erreichbarkeit<br />

der Reihenfolge nach an<br />

Nagios geschickt.<br />

In einer guten <strong>Monitoring</strong>-Lösung darf<br />

die Option zum Zusammenfassen von<br />

Gerätegruppen nicht fehlen. Open IT-<br />

Cockpit unterstützt Gruppierungen von<br />

Hosts, Switches, Router, Firewalls und<br />

so weiter. So lassen sich beispielsweise<br />

Service-Checks in einer Art Massenverarbeitung<br />

ändern – das spart Zeit und<br />

schont die Nerven.<br />

Der Kernel<br />

Laut dem Forumsbeitrag eines it-novum-<br />

Consultants kommt es derzeit bei bestimmten<br />

Kombinationen von Nagios<br />

und NDO zu Fehleinträgen in der Nagios-<br />

Datenbank. Es handle sich um einen bekannten<br />

Fehler, der Grund für den derzeitigen<br />

Einsatz des Nagios-Kernel-Release<br />

3.2.1 sei. Sobald die Nagios Community<br />

den bereits existierenden Patch in den<br />

Nagios-Kernel integriert hat, soll er auch<br />

Eingang in Open IT-Cockpit finden.<br />

Open IT-Cockpit ist für Mozilla Firefox<br />

ausgelegt, da dieser betriebssystemunabhängig<br />

verwendet werden kann. Im<br />

Test traten aber auch mit dem Internet<br />

Explorer 8 keine Probleme auf. Die Per-<br />

58 Ausgabe 01-2012 Admin www.admin-magazin.de


formance des Gesamtpaketes liefert also<br />

keinen Grund zu Beanstandungen – alle<br />

Menüs wurden zügig angezeigt und waren<br />

schnell erreichbar. Wegen der vergleichbar<br />

intensiven CPU-Nutzung des<br />

Nagios-Kernels, ergeben sich Grenzen<br />

für die maximale Anzahl an Checks pro<br />

Minute. Eine sinnvolle Auswahl der Prüfintervalle<br />

wirkt sich daher positiv auf die<br />

Anzahl der Gesamtchecks aus.<br />

Zusätzliche Erweiterungen<br />

Neben den integrierten Erweiterungen<br />

von Drittanbietern steht dem Open-IT-<br />

Cockpit-Benutzer im Netz eine große<br />

Auswahl weiterer Drittprojekte mit entsprechender<br />

Dokumentation zur Verfügung.<br />

Wer spezielle funktionelle Erweiterungen<br />

wie etwa SAP- oder Business-<br />

Process-<strong>Monitoring</strong> benötigt, kann bei<br />

it-novum die entsprechende Dienstleistung<br />

einkaufen. Der nächste Abschnitt<br />

wirft einen näheren Blick auf einige der<br />

bereits integrierten, also kostenlosen Erweiterungen.<br />

In der Nagvis-Erweiterung lassen sich<br />

von der Infrastruktur bis hin zu verschiedenen<br />

Standorten oder dem Rechenzentrum<br />

im Detail alle Überwachungsobjekte<br />

visuell darstellen. Verschiedene Karten,<br />

die man übereinander verschachteln<br />

kann, helfen durch Vererbungen zügig<br />

bei der Ursachenfindung. Neben den<br />

bereits existierenden Grafiken können<br />

eigene Karten (als PNG-Datei) hochgeladen<br />

werden. In der Oberfläche kann<br />

man sie unter »Konfiguration | Kartenverwaltung<br />

| Karteneditor | rechte Maustaste<br />

auf Karte | Verwalte | Hintergründe«<br />

importieren. Die Hintergründe können<br />

als Grundlage für verschiedene Karten<br />

dienen, mit denen auch aktive Elemente<br />

abgespeichert werden. Neben Fotos oder<br />

Grafiken lassen sich auch Struktogramme<br />

verwenden. Im gleichen Menü (unter<br />

»Objekte hinzufügen«) lassen sich aktive<br />

Elemente mit Icon- oder Linienauswahl,<br />

Größe, Koordinaten und so weiter anlegen.<br />

Die Bedienung ist hier nicht ganz so<br />

intuitiv, sodass es einer gewissen Eingewöhnungszeit<br />

bedarf.<br />

Das hilfreiche Zusatzmodul DokuWIKI<br />

liefert ein eigenes editierbares Wiki und<br />

ist im Host-Informations-Menü neben den<br />

Bearbeitungsbuttons erreichbar. Dadurch<br />

kann man zu jedem Host eine frei editier-<br />

bare Wiki-Seite pflegen, um im Fehlerfall<br />

schnell fündig zu werden. Die Bedienung<br />

ist selbsterklärend, allerdings ließen sich<br />

nach der Installation die Seiten und Menüs<br />

nicht bearbeiten. Im Forum findet<br />

sich dazu die Aussage, dieser Bug sei<br />

bekannt und werde in naher Zukunft behoben.<br />

Abhilfe schafft zwischenzeitlich<br />

die erneute Vergabe eines Passwortes im<br />

Reiter »Cockpit«, Menüpunkt »Persönliche<br />

Einstellungen« im Unterpunkt »Passwort<br />

ändern«. Nach dem Speichern funktionierte<br />

im Test alles einwandfrei.<br />

Fazit<br />

Das neue Projekt Open IT-Cockpit ist ein<br />

leistungsfähiges und sehr performantes<br />

Überwachungstool. Es wartet mit einigen<br />

interessanten Features auf, die andere<br />

Tools nicht liefern. Nach der Beseitigung<br />

des umständlichen und irritierend<br />

wirkenden Installationsweges über eine<br />

Drittwebseite, stellt Open IT-Cockpit<br />

derzeit eine der besten Ergänzungen zu<br />

Nagios dar. Binnen kurzer Zeit lassen<br />

sich Systeme einrichten und selbst komplexe<br />

Konstellationen, exotische Hosts<br />

oder heterogene Umgebungen abbilden.<br />

Auch weniger erfahrene Administratoren<br />

können Open IT-Cockpit leicht installieren,<br />

im Gegensatz zur oft aufwändigen<br />

Nagios-Einrichtung. Natürlich konfiguriert<br />

sich auch Open IT-Cockpit nicht von<br />

selbst. Investiert man aber zu Beginn<br />

etwas Zeit in einen ordentlichen Aufbau<br />

und die saubere Anpassung der verschiedenen<br />

Checks sowie der Vorlagen, zahlt<br />

sich das durch große Arbeitserleichterung<br />

beim Betrieb aus. Die erwähnten Bugs<br />

und die fehlende Unterstützung weiterer<br />

Linux-Derivate sind kleine Wermutstropfen.<br />

Es ist jedoch zu hoffen, dass sie<br />

in den nächsten Releases der Software<br />

behoben werden. (ofr)<br />

n<br />

Infos<br />

[1] Open IT-Cockpit:<br />

[http:// www. open‐itcockpit. com]<br />

[2] Download:<br />

[http:// www. open‐itcockpit. com/ web/​<br />

guest/ it‐cockpit‐versions]<br />

Der Autor<br />

Bernhard Fahr ist technischer Leiter beim Informations<br />

Service Center, IKK:ISC.<br />

Sie haben Ihre<br />

IT im Griff.<br />

In Zukunft auch<br />

ohne Überstunden?<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 />

OpenNMS User Conference:<br />

10.05. – 11.05.2012<br />

www.admin-magazin.de<br />

NETHINKS GmbH | Bahnhofstr. 16 | 36037 Fulda<br />

T +49 661 25000-0 Ausgabe | info@NETHINKS.com<br />

01-2012<br />

59


<strong>Monitoring</strong><br />

Zabbix<br />

<strong>Monitoring</strong> mit Zabbix<br />

Aus einem Guss<br />

© Paul Fleet, 123RF<br />

Nagios ist wohl die bekannteste freie <strong>Monitoring</strong>-Software. Über Jahre hat jedoch Zabbix stetig aufgeholt und<br />

setzt zum Angriff auf den Marktführer an. Der Beitrag stellt die grundlegenden Funktionen vor und gibt eine Einführung<br />

in Items, Trigger und Aktionen. Thomas Drilling<br />

Bereits im Jahr 2001 hat Alexei Vladishev<br />

angefangen, an seiner <strong>Monitoring</strong>-<br />

Software Zabbix zu arbeiten. Inzwischen<br />

ist er CEO der im lettischen Riga ansässigen<br />

Firma Zabbix SIA, und Zabbix<br />

hat sich zum umfangreichen <strong>Monitoring</strong>-<br />

Werkzeug entwickelt, das Netzwerke,<br />

Server und andere IT-Ressourcen überwacht<br />

und zahlreiche Visualisierungs-<br />

Optionen bietet.<br />

Zabbix zeigt im Gegensatz zum Haupt-<br />

Konkurrenten Nagios nicht nur sämtliche<br />

Informationen im Webinterface beziehungsweise<br />

in einem speziellen Browser-<br />

Plugin an, sondern ermöglicht darüber<br />

hinaus die komplette Konfiguration der<br />

zu überwachenden Hosts im Webbrowser.<br />

Zum Speichern der Daten verwendet<br />

es wahlweise MySQL, PostgreSQL, SQLite<br />

oder Oracle RDBMS.<br />

Die Weboberfläche ist vollständig in PHP<br />

realisiert und bietet neben einfachen<br />

„Simple checks“ zum Überwachen von<br />

Standarddiensten wie SMTP oder HTTP<br />

auch für eine Vielzahl von Betriebssystemen<br />

verfügbare Agenten, mit deren Hilfe<br />

sich die unterschiedlichsten Daten sammeln<br />

und in der Zabbix-Weboberfläche<br />

grafisch darstellen lassen. In Notfällen<br />

verschickt Zabbix E-Mails, SMS oder IM-<br />

Sofortnachrichten.<br />

Funktionsvielfalt<br />

Die Möglichkeit, den Verkehr nach außen<br />

gerichteter Dienste wie FTP, SSH oder<br />

HTTP mit Bordmitteln zu untersuchen,<br />

gehört indes nicht zu den Stärken von<br />

Zabbix. Für den professionellen Einsatz<br />

ist das Installieren der verfügbaren Agenten<br />

zwingend. Darüber hinaus unterstützt<br />

Zabbix zum Einsammeln von Informationen<br />

selbstverständlich auch SNMP.<br />

Einer der wichtigsten Vorteile gegenüber<br />

der Konkurrenz besteht neben der Möglichkeit,<br />

die Überwachung von Hosts direkt<br />

im Webinterface konfigurieren zu<br />

können, in der komfortablen Kombinierbarkeit<br />

von Actions, Items und Triggern.<br />

Eine weitere erwähnenswerte Eigenschaft<br />

von Zabbix ist die komfortable Verwaltung<br />

von Graphs, Screens und Maps. Dabei<br />

ist insbesondere die Darstellung der<br />

einzelnen Hosts auf verschiedenen Typen<br />

von Maps (Landkarten, Infrastrukturplänen<br />

und so weiter) sehr elegant umgesetzt<br />

und gehört außerdem per Default<br />

zum Installationsumfang.<br />

Zabbix steht komplett unter der GNU<br />

GPL und lässt sich in der aktuellen Version<br />

1.8.9. von der Projektseite [1] herunterladen.<br />

Zur Wahl stehen neben den<br />

Source-Paketen auch vorkonfigurierte Appliances<br />

als ISO, USB-Stick oder Live-CD<br />

sowie als Virtual Applicance im VMDKoder<br />

OVF-Format auf Basis von Open­<br />

Suse. Neben den Server-Applicances gibt<br />

es vorkompilierte Agenten für Windows,<br />

verschiedene Unix-Derivate und alle relevanten<br />

Linux-Versionen.<br />

Aufgeschlossen<br />

Zusätzlich ist Zabbix in den Paketquellen<br />

vieler wichtiger Distributionen zu finden,<br />

bei Ubuntu 11.04 etwa in der Version<br />

1.8.5. Neben Linux unterstützt Zabbix<br />

auf Serverseite auch Solaris, AIX, HP-UX,<br />

FreeBSD und OpenBSD. Für Windows-<br />

Systeme steht nur der passende Agent zur<br />

Verfügung, sodass sich Windows-Hosts<br />

problemlos von Zabbix überwachen lassen.<br />

Der Agent unterstützt sowohl 32-Bitals<br />

auch 64-Bit-Systeme.<br />

Die Zabbix-Infrastruktur besteht stets aus<br />

den drei Komponenten Server, Front end<br />

und Agent. Die gesammelten Daten las­<br />

60 Ausgabe 01-2012 Admin www.admin-magazin.de


Zabbix<br />

<strong>Monitoring</strong><br />

sen sich von jedem Zabbix-Nutzer mit<br />

entsprechenden Rechten über das Browser-Frontend<br />

abrufen. Server und Webfrontend<br />

müssen nicht notwendigerweise<br />

auf der gleichen Maschine laufen. Auch<br />

die Datenbank kann problemlos auf einem<br />

separaten Host installiert sein.<br />

Bei den von den Entwicklern angegebenen<br />

Installations-Voraussetzungen<br />

von 128 MByte freien physikalischen Arbeitsspeicher<br />

und 256 MByte freien Festplattenplatz<br />

handelt es sich wie üblich<br />

nur um eine Empfehlung für ein erstes<br />

Start-Setup. Faktisch hängt die Größe des<br />

erforderlichen Festplattenplatzes von der<br />

Anzahl der zu überwachenden Hosts und<br />

anderen Faktoren ab. Trotzdem sollte die<br />

Netzwerküberwachung mit Zabbix wohl<br />

in den seltensten Fällen an den Hardwareanforderungen<br />

scheitern.<br />

Die recht überschaubaren Mindestvoraussetzungen<br />

sollten den Admin aber<br />

auch nicht dazu verleiten, einem beliebigen<br />

File-, Database oder Mail-Server<br />

im Unternehmen zusätzlich die Überwachungsrolle<br />

aufzubürden, weil ein <strong>Monitoring</strong>-System<br />

möglichst autark und ausfallsicher<br />

betrieben werden sollte, damit<br />

es seinen Zweck erfüllt.<br />

SNMP optional<br />

Wer nicht die Applicance installiert, muss<br />

auf seinem Linux-Server außerdem dafür<br />

sorgen, dass Apache, PHP 5.0 und<br />

das PHP-Modul GD installiert sind sowie<br />

das gewünschte Datenbanksystem nebst<br />

zugehörigem PHP-Modul, dessen Admin-<br />

Account selbstverständlich ebenfalls<br />

bekannt sein muss. Wer die Netzwerküberwachung<br />

mit Zabbix auf Basis von<br />

SNMP realisieren möchte, muss etwa unter<br />

Ubuntu außerdem die Pakete »snmp«,<br />

»libsnmp« und »php5‐snmp« installieren.<br />

Das gilt auch für das zu überwachende<br />

System, wenn es sich um einen Linux-<br />

Host handelt.<br />

Wer die aktuellste Zabbix-Version aus<br />

den Sourcen kompilieren möchte, benötigt<br />

neben den obligatorischen Build-<br />

Essentials außerdem die Entwicklerpakete<br />

für MySQL und NET-SNMP. Für das<br />

Web-Frontend ist selbstverständlich ein<br />

laufender Apache-Webserver mit PHP-<br />

Unterstützung (»libapache2‐mod‐php5«)<br />

obligatorisch. Beim manuellen Installieren<br />

muss der Admin außerdem das Da­<br />

Tabelle 1: Zugangsdaten Zabbix-Appliance<br />

Komponente Administrator-Account Benutzer-Account<br />

System root:zabbix zabbix:zabbix<br />

Database root:zabbix zabbix:zabbix<br />

Zabbix-Frontend<br />

admin:zabbix<br />

Bei den Appliances sowie den vorkompilierten<br />

Versionen entfallen die genannten<br />

Schritte, sodass der Admin die weitere<br />

Konfiguration direkt im Web-Frontend<br />

vornehmen kann, das nach erfolgreicher<br />

Installation unter »http://Zabbix‐Server/<br />

zabbix« zur Verfügung steht. In der Default-Konfiguration<br />

kann sich der Admin<br />

mit dem Nutzernamen »admin« und dem<br />

Passwort »zabbix« anmelden. Die übrigen<br />

in der Appliance vorkonfigurierten<br />

Passwörter stehen in Tabelle 1 und funktenbanksystem<br />

starten und die Datenbank<br />

»Zabbix« und die erforderlichen Tabellen<br />

anlegen, wozu das Verzeichnis der entpackten<br />

Sourcen einen Ordner »create«<br />

mit passenden Schemata enthält.<br />

Die Konfiguration des Zabbix-Server-<br />

Daemons findet in der Konfigurationsdatei<br />

»/etc/zabbix_server.conf« statt, wobei<br />

die meisten der in der Dokumentation<br />

beschriebenen Parameter mit einem<br />

vernünftigen Standardwert belegt sind.<br />

Die wichtigsten sind der Name der Datenbank<br />

(»DBName=zabbix«), der Datenbank-Nutzer<br />

(»DBUser=root«), das<br />

Datenbank-Kennwort (»DBPassword=«)<br />

sowie der Standardport, auf dem der Zabbix-Daemon<br />

per Default lauscht (»Listen­<br />

Port=10051«).<br />

Analog zur Zabbix-Server-Konfiguration<br />

funktioniert die Konfiguration der<br />

Agenten in der Konfigurationsdatei<br />

»zabbix_agent.conf« mit den wichtigsten<br />

Parametern »Server=127.0.0.1« für<br />

die IP-Adresse des Zabbix-Servers, per<br />

Default mit »localhost« besetzt, sofern<br />

Server und Agent auf der gleichen Maschine<br />

laufen (es schadet ja nicht, auch<br />

den Zabbix-Server zu überwachen), und<br />

»ListenPort=10050« für den Port, auf den<br />

der Agent nach den Anfragen des Servers<br />

horcht. Es ist übrigens nicht unbedingt<br />

erforderlich, auch den Agenten als<br />

Daemon zu starten, wozu gegebenenfalls<br />

die Datei »/etc/zabbix/zabbix_agentd.<br />

conf« zu bearbeiten ist.<br />

Appliance-Variante<br />

Abbildung 1: Grundlage der Überwachung eines Hosts oder einer Ressource in Zabbix ist deren Konfiguration<br />

im komfortablen Webinterface.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

61


<strong>Monitoring</strong><br />

Zabbix<br />

tionieren in gleicher Weise auch bei den<br />

in den Paketquellen der Distributionen<br />

enthaltenen Versionen.<br />

Die Installation des Windows-Agents gestaltet<br />

sich recht einfach und erfordert<br />

ebenfalls eine Konfigurationsdatei »C:\<br />

zabbix_agentd.conf«, deren Syntax identisch<br />

mit der unter Linux/​Unix ist, sodass<br />

der Admin einfach die mitgelieferte<br />

Beispieldatei kopieren und konfigurieren<br />

kann. Dann muss der Admin lediglich<br />

den Zabbix-Agenten als Dienst installieren,<br />

wozu er im Windows-Eingabemodus<br />

(Eingabeaufforderung oder Powershell)<br />

»zabbix_agentd.exe ‐‐install« eingibt. Der<br />

Pfad zur Konfigurationsdatei lässt sich<br />

mit »‐‐config« spezifizieren.<br />

Die bei Zabbix mitgelieferte Konfigurationsdatei<br />

für Linux lässt sich zwar<br />

wie beschrieben auch unter Windows<br />

verwenden, enthält allerdings Unix-typische<br />

Pfadangaben wie »/etc/zabbix/<br />

zabbix_agentd.conf«, die der Admin entsprechend<br />

ersetzen muss, zum Beispiel<br />

durch »C:\zabbix_agentd.conf«. Außerdem<br />

muss der Admin gegebenfalls die<br />

entsprechenden Ports (10050, 10051) in<br />

der Firewall freigeben, damit Server und<br />

Agenten kommunizieren können.<br />

Konfigurieren von Hosts<br />

Um einen Host in die Zabbix-Überwachung<br />

einzubeziehen, klickt der Administrator<br />

im Webinterface auf »Configuration<br />

| Hosts«. Der Zabbix-Server selbst<br />

ist in der Host-Liste bereits enthalten,<br />

wenn der Admin die Appliance als Testumgebung<br />

nutzt. Es spricht durchaus<br />

nichts dagegen, den Zabbix-Server zu<br />

überwachen. Zum Konfigurieren eines<br />

weiteren Hosts, wählt er zunächst rechts<br />

oben im Drop-down-Menü »Group« den<br />

Eintrag »all« und klickt anschließend auf<br />

die Schaltfläche »Create Host«. Zabbix<br />

präsentiert jetzt eine umfangreiche Dialogseite<br />

zum Konfigurieren eines Hosts,<br />

wobei „Host“ in der Zabbix-Philosophie<br />

jede Art von Netzwerk-Gerät sein kann,<br />

das über eine IP-Adresse oder einen DNS-<br />

Namen verfügt.<br />

Nicht notwendigerweise den Hostnamen,<br />

sondern einen frei wählbaren Namen für<br />

die Überwachung erwartet der Dialog<br />

»CONFIGURATION OF HOSTS« ganz oben<br />

bei »Name« (Abbildung 1). Es spricht allerdings<br />

auch nichts dagegen, dieses Feld<br />

Abbildung 2: Nach erfolgreicher Definition und Aktivierung eines Items erscheint es in der Item-Liste.<br />

und das Feld »DNS name« unten gleich<br />

auszufüllen, falls der Admin ohnehin<br />

ein aussagekräftiges Namensschema in<br />

seiner DNS benutzt. Darunter lässt sich<br />

eine passende Host-Gruppe auswählen<br />

oder bei »new host group« neu anlegen.<br />

Die mitgelieferten beziehungsweise vorkonfigurierten<br />

Gruppen sind lediglich<br />

Beispiele. Erst dann folgen technische<br />

Parameter wie der DNS-Name, die IP-<br />

Adresse oder die Agent-Portnummer.<br />

Für einen ersten Test ist es übrigens<br />

nicht zwingend, dass der Zabbix-Agent<br />

auf dem betreffenden Gerät installiert ist.<br />

Außerdem genügt es, eines der Felder<br />

»DNS name« und »IP adress« auszufüllen.<br />

Das Feld »Port« ist bereits mit der in<br />

der Standard-Konfiguration eingestellten<br />

Zabbix-Portnummer 10050 befüllt, muss<br />

also zunächst nicht geändert werden. Soll<br />

Zabbix mit anderen Ports arbeiten, muss<br />

der Admin die entsprechenden Werte<br />

in »/etc/zabbix/zabbix_server.conf«<br />

auf dem Server beziehungsweise /»etc/<br />

zabbix/zabbix_agent.conf« auf dem zu<br />

überwachenden Host anpassen, bevor er<br />

dieses Feld ändert. Die übrigen Optionen<br />

kann der Admin zunächst ignorieren und<br />

den Host mit »Save« anlegen.<br />

Sammelwut<br />

Ist der erste Host angelegt, kann Zabbix<br />

dessen Daten einsammeln. Um die Überwachung<br />

zu starten, klickt der Admin<br />

erneut auf »Configuration | Hosts«, und<br />

dann in der Spalte »Items« der Host-Liste<br />

auf den betreffenden Link, der derzeit<br />

noch keinen Eintrag enthält, zu erkennen<br />

an der Null im Link »Items (0)«. Deshalb<br />

ist die Liste im sich öffnenden Dialog<br />

»ITEMS« noch leer.<br />

Abbildung 3: Das Anlegen von Triggern ist die Basis für das Einrichten der Alarmierungsfunktion.<br />

62 Ausgabe 01-2012 Admin www.admin-magazin.de


Zabbix<br />

<strong>Monitoring</strong><br />

Mit einem Klick rechts oben auf »Create<br />

Item« zeigt Zabbix den Dialog »Item Hostname«.<br />

Im Listenauswahlfeld »Type« stellt<br />

Zabbix zahlreiche Überwachungstypen<br />

zur Verfügung, neben dem Default-Eintrag<br />

»Zabbix Agent« stehen verschiedene<br />

SNMP-Agents, ein IPMI-Agent, ein SSH-<br />

Agent, ein Database-Monitor und auch<br />

External Checks zur Verfügung.<br />

Einfache Checks<br />

Für das Beispiel soll das Auswählen des<br />

Eintrages »Simple Checks« genügen, womit<br />

der Zabbix-Server selbstständig, also<br />

ohne eigens installierten Agent, überprüfen<br />

kann, ob der Host zum Beispiel<br />

auf ICPM-Pings antwortet. Im Feld »Key«<br />

ist der zum gewählten Szenario (ICMP-<br />

Requests) passende interne Zabbix-<br />

Schlüssel einzutragen. Allerdings steht<br />

mit einem Klick auf »Select« eine entsprechende<br />

Auswahlliste zur Verfügung,<br />

die alle Schlüssel für Simple Checks auf<br />

einen Blick zeigt, sodass der Admin etwa<br />

den Eintrag »icmpping« schnell findet,<br />

womit im Feld Key der Eintrag<br />

icmpping[,,,,U<br />

]<br />

erscheint. Wer die angebotenen Optionen<br />

für einen ersten Test nicht benötigt,<br />

entfernt die Optionsliste inklusive der<br />

eckigen Klammern. Abschließend wählt<br />

man im Drop-down-Menü bei »Status«<br />

den Eintrag »Active«. Erwähnenswert ist<br />

noch das Feld »New application«. Zabbix<br />

meint mit »application« stets eine Gruppe<br />

von Items, die es als Einheit betrachtet.<br />

Im Beispiel-Szenario bietet sich hier etwa<br />

die Bezeichnung »Verfügbarkeit« an. Bei<br />

den übrigen Feldern kann man getrost<br />

die Default-Werte übernehmen und die<br />

Item-Definition mit »Save« abschließen<br />

(Abbildung 2).<br />

Ob Zabbix die in der Item-Definition in<br />

Auftrag gegebenen Messwerte tatsächlich<br />

einsammelt, kann der Administrator<br />

leicht prüfen, indem er ausgehend<br />

vom Hauptmenü auf »<strong>Monitoring</strong> | Latest<br />

Data« klickt und den Description-<br />

Tree bei »verfuegbarkeit (1 items)« mit<br />

einem Klick auf das Pluszeichen entfaltet.<br />

Je nach eingestelltem Intervall sollte<br />

ein Neuladen der Seite nach 30 oder 60<br />

Sekunden das erwartete Ergebnis liefern.<br />

Sammelt Zabbix die Werte des eben ein­<br />

gerichteten Items korrekt ein, kann sich<br />

der Admin der Konfiguration von Triggern<br />

zuwenden, wozu erneut das Menü<br />

»Configuration | Hosts« als Ausgangsbasis<br />

dient. Hierzu klickt der Admin in der<br />

Hostliste in der Spalte »Triggers« auf den<br />

zugehörigen Link. Zu Beginn ist die Liste<br />

der Trigger erwartungsgemäß leer.<br />

Das Anlegen eines neuen Triggers erfolgt<br />

mit »Create Trigger«. Der Dialog »CONFI­<br />

GURATION OF TRIGGERS« (Abbildung 3)<br />

erwartet ganz oben wieder einen aussagekräftigen<br />

Namen. Der Admin sollte bei<br />

dessen Wahl bedenken, dass der Name<br />

auch gleichzeitig die Betreffzeile für die<br />

beim Auslösen des Triggers versendete<br />

E-Mail ist, etwa „Ping gescheitert – Host<br />

nicht verfügbar“. Das Eintragen des<br />

betreffenden Host-Namens als Trigger-<br />

Name ist hier nicht nötig.<br />

Mit einem Klick auf »Add« legt er dann die<br />

zugehörige »Expression« an. Sie definiert,<br />

unter welchen Bedingung der Trigger den<br />

Status wahr oder falsch annimmt, und ist<br />

im Prinzip ein Vergleich des momentanen<br />

Wertes des Items mit einem vorgegebenen<br />

Schwellwert. Mit einem Klick auf<br />

»Select« wählt der Admin zunächst den<br />

Eintrag aus der Items-Liste im Popup-<br />

Fenster aus. Ist diese relativ lang, muss<br />

der Admin darauf achten, auch den richtigen<br />

Eintrag zu erwischen.<br />

Auswahlhilfe<br />

Wie gehabt, engt der Admin zuvor die<br />

Item-Liste auf dem betreffenden Host ein,<br />

indem er oben rechts zuerst die betreffenden<br />

Host-Gruppe beziehungsweise den<br />

betreffenden Host explizit auswählt. Das<br />

ist eigentlich zunächst verwirrend, weil<br />

ja die gerade vorzunehmende Trigger-<br />

Definition explizit für diesen Host erfolgt,<br />

was auch an der URL-Zeile des<br />

Expressions-Dialoges gut zu erkennen<br />

ist. Unter Zabbix ist es aber trotzdem<br />

möglich, Items anderer Hosts für den<br />

Trigger zu benutzen. In den meisten Fällen<br />

dürfte es sich aber um den gleichen<br />

Host handeln.<br />

Das Feld »Item« enthält im Beispiel den<br />

Eintrag »Einfacher Ping Test.« Der Eintrag<br />

bei »Function« steht per Default auf<br />

»Last value = N,« was der Admin im<br />

Beispiel unverändert übernehmen kann<br />

und bedeutet, dass der Trigger den Status<br />

„wahr“ annimmt, sobald der letzte<br />

ermittelte Wert des Items »Einfacher Ping<br />

Test« »N« (Null) war. Dass »N« dem Wert<br />

Null (0) entspricht, definiert der Admin<br />

ganz unten im Feld »N«. Mit einem Klick<br />

auf »Insert« ist die Expression definiert,<br />

und der Admin landet wieder im Trigger-<br />

Dialog. Hier muss er nur noch die Dringlichkeit<br />

des Triggers mithilfe des Listenauswahlfeldes<br />

»Severity« klassifizieren<br />

etwa »Information« oder »Warning«.<br />

Zum Fertigstellen des Triggers genügt ein<br />

Klick auf »Save«. Die Trigger-Liste enthält<br />

anschließend den eben definierten<br />

Trigger. In der Spalte »Error« sollte ein<br />

grünes Häckchen signalisieren, dass die<br />

Definition erfolgreich war. Der Status des<br />

Triggers lässt sich anschließend jederzeit<br />

ausgehend vom Hauptmenü unter<br />

» <strong>Monitoring</strong> | Triggers« einsehen. Dabei<br />

ist darauf zu achten, mithilfe der Listenauswahlfelder<br />

»Host« oder »Group« die<br />

richtigen Filter zu setzen, damit Zabbix<br />

die eben definierten Filter auch anzeigt.<br />

Wenn der zu überwachende Host online<br />

ist, sollte der Status des eben angelegten<br />

Triggers auf »OK« stehen. Trennt der<br />

Admin den Testhost vom Netz, wechselt<br />

dessen Status auf »Problem«.<br />

Die Abbildung zeigt außerdem zwei Trigger<br />

mit Problem-Status für den Zabbix-<br />

Server, die daraus resultieren, dass in<br />

der getesteten Appliance noch nicht alle<br />

überwachten Dienste konfiguriert sind.<br />

Um beim Eintreten eines Triggers eine<br />

E-Mail versenden zu können, muss<br />

der Admin einen Mail-Server und eine<br />

C13<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

63


<strong>Monitoring</strong><br />

Zabbix<br />

Abbildung 4: Zabbix verfügt über eine komfortable Benutzerverwaltung.<br />

Aktion definieren. Zum Einrichten des<br />

Mail-Servers dient das Menü »Administration<br />

| Mediatypes«. In der Spalte<br />

»Description« stehen bereits Email, Jabber<br />

und SMS zur Verfügung.<br />

Um das Versenden einer E-Mail im Trigger-Fall<br />

einzurichten, klickt der Admin<br />

auf den Link »Email« und überschreibt<br />

dann die Default-Werte für SMTP-Server,<br />

Helo-String und »SMTP email« mit den<br />

gewünschten Werten.<br />

Mail-Einstellungen<br />

Abbildung 5: Sogenannten Actions komplettieren das Zusammenspiel zwischen Items, Triggern und Alarmen<br />

und definieren die im Trigger-Fall auszulösende Aktion.<br />

Abbildung 6: Die Installation von Zabbix-Agenten auf dem zu überwachenden Host ist die Voraussetzung für<br />

eine detaillierte und professionelle Netzwerküberwachung.<br />

Achtung: »SMTP email« ist die Absender-Adresse,<br />

unter der Zabbix die E-Mail<br />

verschickt. Die E-Mail-Adresse, an die<br />

Zabbix die Mails versendet, setzt der Admin<br />

dagegen im Menü »Administration |<br />

Users«. Hier muss er zunächst im Auswahlfeld<br />

rechts den Default-Eintrag »User<br />

Groups« auf »User« umstellen. Die Appliance<br />

enthält bereits zwei Default-User<br />

»Admin« und »guest« (Abbildung 4).<br />

Jetzt kann der Admin in der Spalte »Alias«<br />

auf den Link »Admin« klicken, um die<br />

Benutzerdaten des Administrators zu bearbeiten.<br />

Hier klickt er am unteren Ende<br />

des Dialoges beim Eintrag »Media« auf<br />

»Add« und trägt dann im Feld »Send to«<br />

die gewünschte E-Mail-Adresse ein. Mit<br />

den Checkboxen darunter kann der Admin<br />

einstellen, mit welchem Dringlichkeitsstatus<br />

Zabbix eine E-Mail verschickt.<br />

Ein Klick auf »Add« übernimmt die Konfiguration<br />

in den Dialog der Benutzer-<br />

Konfiguration, den der Admin dann mit<br />

»Save« beenden kann.<br />

Zum Einrichten einer Aktion klickt der<br />

Admin ausgehend vom Hauptmenü auf<br />

»Configuration | Actions« und wählt wieder<br />

rechts oben aus dem Auswahlfeld bei<br />

»Event Source« den Eintrag »Triggers«, gefolgt<br />

von einem Klick auf »Create Action«.<br />

Der Dialog in Abbildung 5 erwartet zuoberst<br />

einen frei wählbaren Namen für<br />

die zu definierende Aktion, etwa »Nachricht<br />

senden«. Das Feld »Event Source«<br />

sollte aufgrund der vorherigen Wahl den<br />

Eintrag »Triggers« enthalten.<br />

Im Feld darunter lässt sich der Standard-<br />

Betreff der zu versendenden Nachricht<br />

angeben. Per Default enthält das Feld<br />

bereits den Eintrag »{TRIGGER.NAME}:<br />

{TRIGGER.STATUS}«, den man beispielsweise<br />

noch um den Eintrag »{HOST­<br />

NAME}: {TRIGGER.STATUS}« erweitern<br />

64 Ausgabe 01-2012 Admin www.admin-magazin.de


Zabbix<br />

<strong>Monitoring</strong><br />

Das illustrierte Minimal-Beispiel verwendete<br />

lediglich Simple Checks, die der<br />

Zabbix-Server ohne Mithilfe von Agenten<br />

durchführen kann, sollte aber das intuitiv<br />

und komfortabel konfigurierbare Zusammenspiel<br />

von Items, Triggern und Actions<br />

veranschaulicht haben, ebenso wie die<br />

erforderlichen Schritte zum Einrichten<br />

der Alarmierungsfunktion. Abbildung 6<br />

zeigt, dass der Item-Typ Zabbix-Agent<br />

eine wesentlich größere Menge an Keys<br />

bietet, die sich weit besser für den praktischen<br />

Einsatz eignet.<br />

Letztere stellt die komfortabelste Art<br />

der Netzwerküberwachung dar, weil die<br />

Unterstützung für das Netzwerküberwachungs-Protokoll<br />

SNMP in nahezu alle<br />

modernen Betriebssysteme oder die Firmware<br />

von Routern, Switches und so weiter<br />

eingebaut ist. Das Protokoll regelt in<br />

diesem Zusammenhang die Kommunikation<br />

zwischen den überwachten Geräten<br />

und der Überwachungsstation.<br />

Die bisherigen Ausführungen konnten<br />

den Funktionsumfang von Zabbix nur<br />

streifen. Ein direkter Vergleich mit Nakann,<br />

damit beim Eintreffen der E-Mail<br />

sofort ersichtlich ist, auf welchen Host<br />

sich das Problem bezieht. Den Default-<br />

Inhalt der zu sendenden Nachricht kann<br />

der Admin in gleicher Weise mit den verfügbaren<br />

Platzhaltern anpassen. Darunter<br />

im Bereich »Action conditions« des<br />

Dialogs muss der Admin bei »Conditions«<br />

das Häkchen für »(A) Trigger value =<br />

Problem« setzen.<br />

Danach klickt der Administrator rechts<br />

oben bei »Action operations« auf »New«<br />

zum Einfügen einer neuen Aktion, womit<br />

sich der Teilbereich des Dialogs in<br />

»Edit Operations« auffaltet. Hier kann der<br />

Admin dann endlich den Opera tionstyp<br />

»Send message« auswählen, bei »Send<br />

message to« den Eintrag »User group«<br />

einstellen und im Feld rechts davon den<br />

Eintrag »Zabbix Administrators« wählen,<br />

wozu er die Select-Schaltfläche benutzt,<br />

die ein Popup mit der Groups-Liste öffnet.<br />

Wahlweise könnte er auch im Feld<br />

darüber »Single User« und dann mit der<br />

Select-Schaltfläche explizit den Nutzer<br />

»Admin« als Mail-Empfänger auswählen.<br />

Jetzt kann der Administrator den Teil-<br />

Dialog »Edit operations« mit einem Klick<br />

auf »Add« beenden und anschließend<br />

den gesamten Action-Dialog mit »Save«<br />

schließen. Zum Testen kann er erneut<br />

den überwachten Testhost vom Netz<br />

trennen, woraufhin kurze Zeit später die<br />

konfigurierte E-Mail eintreffen sollte.<br />

Nur gestreift<br />

gios, Icinga und Shinken ist in einem<br />

anderen Artikel dieses Heft-Schwerpunktes<br />

zu finden. Das Konzept und die Architektur<br />

von Zabbix wirken allgemein<br />

wesentlich stimmiger als bei Nagios, das<br />

nur dank der zahllosen verfügbaren Erweiterungen<br />

funktional auf Augenhöhe<br />

mit Zabbix agiert. Dabei sind wir auf die<br />

eigentlichen <strong>Monitoring</strong>- und Visualisierungsfunktionen<br />

von Zabbix noch gar<br />

nicht eingegangen, ebenso wenig wie auf<br />

die Verwendbarkeit von Templates.<br />

Allerdings kann sich der Admin beim Verwenden<br />

der Appliance anhand der mitgelieferten<br />

und vorkonfigurierten Überwachungsfunktionen<br />

des Zabbix-Servers<br />

unter anderem mit Vorlagen vertraut machen.<br />

Die PHP-Software ist insgesamt so<br />

intuitiv aufgebaut und bedienbar, dass<br />

sich der Admin schnell zurechtfindet. So<br />

findet er im Hauptmenü »<strong>Monitoring</strong>« mit<br />

dem Dashboard ein komfortables Werkzeug,<br />

um sämtliche überwachten Geräte<br />

im Blick zu behalten.<br />

Was die ebenfalls vorzüglich umgesetzten<br />

Visualisierungsfunktionen angeht,<br />

sollte sich der Admin in jedem Fall auch<br />

die Menüs Graphs, Screens und Maps näher<br />

ansehen (Abbildung 7). Wer Nagios<br />

kennt, wird auch in diesem Punkt von<br />

Zabbix begeistert sein. Den vielen Möglichkeiten<br />

der Visualisierung mit Zabbix<br />

wird sich ein Beitrag in der nächsten<br />

<strong>ADMIN</strong>-Ausgabe widmen.<br />

Fazit<br />

Zweifelsohne demonstriert Nagios schon<br />

seit vielen Jahren, was Netzwerküberwachung<br />

mit Open-Source-Werkzeugen<br />

leisten kann und hat es auch zu entsprechend<br />

großer Bekanntheit gebracht. Zabbix<br />

macht es aber in fast allen Punkten<br />

besser und überzeugt mit einem in sich<br />

stimmigen Konzept.<br />

Wer erst in die Netzwerküberwachung<br />

einsteigt, kommt mit Zabbix schneller<br />

ans Ziel, wobei das hervorragende Web-<br />

Interface nicht nur als Überwachungszentrale<br />

im Mittelpunkt steht, sondern<br />

vor allem auch bei der Konfiguration von<br />

Hosts, Items, Trigger und Alarmen hilft.<br />

(ofr)<br />

n<br />

Abbildung 7: Zabbix bietet übersichtliche Visualisierungsfunktionen.<br />

Infos<br />

[1] Zabbix Download:<br />

[http:// www. zabbix. com/ download. php]<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

65


<strong>Monitoring</strong><br />

Nagios-Benchmarks<br />

© Dmitriy Shironosov, 123RF<br />

<strong>Monitoring</strong>lösungen auf Nagios-Basis im Benchmark-Vergleich<br />

Zieleinlauf der<br />

Kontrolleure<br />

In dem Maß, wie die Zahl der zu überwachenden Geräte wächst, wird Performance in Nagios-basierten Umgebungen<br />

zum Thema. Dieser Beitrag diskutiert einige grundlegende Eckdaten. Christoph Siess<br />

Eine Nagios-Umgebung beinhaltet viele<br />

unterschiedliche Komponenten, deren<br />

Zusammenspiel das Werkzeug zur Überwachung<br />

von IT-Systemen ausmacht. Angefangen<br />

beim Nagios-Kern, der für das<br />

rechtzeitige Ausführen von Checks und<br />

die daraus abgeleiteten Benachrichtigungen<br />

zuständig ist, über Visualisierungslösungen<br />

wie Nagvis oder Werkzeuge<br />

zur Trendermittlung greifen viele Räder<br />

ineinander. Jedes dieser Werkzeuge generiert<br />

eine unterschiedliche Last, für<br />

jedes Werkzeug gibt es unterschiedliche<br />

Ansätze, um den einen oder anderen Flaschenhals<br />

zu beseitigen.<br />

Eine vollständige Analyse dieser Komponenten<br />

und ihres Zusammenwirkens<br />

wäre extrem aufwändig. Deshalb konzentriert<br />

sich diese Betrachtung auf das<br />

Herzstück der Überwachungslösung, den<br />

Nagios-Kern.<br />

Nagios, die Greybox<br />

Der Kern soll unter einer vereinfachten<br />

Systemsicht betrachtet werden, denn es<br />

geht hier nicht darum zu begründen, welche<br />

Funktionsaufrufe Auswirkungen auf<br />

die Systemperformance haben. Vielmehr<br />

geht es um einen praxisbezogenen Test,<br />

einen Greybox-Test genau genommen,<br />

der die Interna des Kerns ignoriert.<br />

Abbildung 1 zeigt das System so, wie es<br />

im Folgenden analysiert werden soll. Der<br />

Nagios-Kern in der Mitte ist die zentrale<br />

Komponente. Ziel der folgenden Testreihen<br />

ist es, genauere Aussagen über das<br />

Verhalten dieses Kerns in unterschiedlichen<br />

Szenarien zu erhalten. Dafür ist zu<br />

definieren, welcher Output die Leistungsfähigkeit<br />

des Systems beschreiben soll.<br />

Auf der Input-Seite beschreiben andere<br />

Variablen verschiedene Szenarien.<br />

Eingangsparameter<br />

Das hier vorgestellte Vorgehen stellt<br />

einen pragmatischen Kompromiss hinsichtlich<br />

der Komplexität der Parameter<br />

dar. Natürlich gibt es noch viele weitere<br />

Einflussgrößen. Der Autor ist allerdings<br />

66 Ausgabe 01-2012 Admin www.admin-magazin.de


Nagios-Benchmarks<br />

<strong>Monitoring</strong><br />

Abbildung 1: Stark vereinfachte Darstellung des Nagios-Systems.<br />

der Meinung, dass er mit seiner Auswahl<br />

eine gute Aussage über das System Nagios<br />

treffen kann.<br />

Anzahl Checks: Sinn und Zweck dieses<br />

Parameters ist es nachzustellen, ob die<br />

tatsächlich durch das System zu bearbeitende<br />

Anzahl an Servicechecks eine<br />

Auswirkung auf die Leistung hat.<br />

Return Codes: Ein Plugin, das ein Problem<br />

erkennt, meldet das über den Return<br />

Code an den Nagios-Kern. Der ergreift<br />

– abhängig von der Anzahl der Schlechtmeldungen<br />

für den Servicecheck – weitere<br />

Maßnahmen, wie das Berechnen eines<br />

Status. Am Ende dieser Logik stehen<br />

gegebenenfalls Benachrichtigungen. Dieser<br />

Parameter soll die Frage beantworten<br />

helfen, ob die Bewertungslogik Auswirkungen<br />

auf die Performance hat.<br />

Laufzeit: Die Laufzeit eines Plugins<br />

wird vom Aufruf über den Kern bis zur<br />

Rückgabe des Returncode gemessen. Im<br />

Configfile<br />

vorhanden<br />

Ja<br />

Statefile<br />

vorhanden<br />

Durchlauf,<br />

Rückgabewert<br />

einlesen<br />

Durchlauf<br />

inkrementieren<br />

Statuswechsel<br />

notwendig<br />

Nein<br />

Statefile<br />

schreiben<br />

Nein<br />

Nein<br />

Ja<br />

X-Verschiebung<br />

initialisieren<br />

Statefile anlegen<br />

Rückgabewert<br />

ändern<br />

Verzögerung<br />

Rückgabe<br />

Logfile<br />

schreiben<br />

Abbildung 2: Der für die Messungen verwendete<br />

Simulator als Flussdiagramm.<br />

schlimmsten Fall<br />

führt der Aufruf<br />

eines Plugins zu<br />

einem Timeout,<br />

weil die zu überwachende<br />

Komponente<br />

nicht<br />

erreichbar ist. Inwieweit<br />

diese Ausführzeit<br />

Einfluss<br />

auf das System hat, soll dieser Parameter<br />

klären.<br />

Ausgangsparameter<br />

Um die Systemperformance messen zu<br />

können, wurden im Test drei Messgrößen<br />

bestimmt:<br />

Nagios Latency: Das Planen der Ausführzeitpunkte<br />

der einzelnen Checks ist<br />

eine komplexe Angelegenheit, weil nicht<br />

sämtliche Überprüfungen gleichzeitig<br />

auszuführen sind. Dies hätte eine sehr<br />

ungleichmäßige Auslastung des Systems<br />

zur Folge. Aus diesem Grund verfügt der<br />

Nagios Core über einige Intelligenz, die<br />

dieses Verhalten steuert. Wie gut der Core<br />

diese Ausführzeitpunkte anpassen kann,<br />

wird durch die Nagios Latency gemessen.<br />

Sie bezeichnet die Differenz zwischen<br />

einem geplantem Ausführzeitpunkt eines<br />

Checks und dem tatsächlichen. Ist dieser<br />

Wert zu hoch, kommt das System bei<br />

steigender Menge an Checks nicht mehr<br />

nach. Die Liste der noch abzuarbeitenden<br />

Checks wird zu hoch, es können nicht<br />

mehr alle konfigurierten<br />

Überprüfungen<br />

auch wirklich<br />

durchgeführt<br />

werden.<br />

CPU-Load: Als<br />

klassisches Mittel<br />

zur Bestimmung<br />

der CPU-Auslastung<br />

hat sich die<br />

Anzahl der auf<br />

CPU-Zeit wartenden<br />

Prozesse etabliert.<br />

Gemeinsam<br />

mit der Anzahl<br />

der Prozesse, die<br />

gerade laufen, und<br />

jener, die auf I/​O<br />

Zeit warten, bildet<br />

sie den sogenannten<br />

Load Average<br />

des Linux-Systems. Als grober Richtwert<br />

gilt: Liegt diese Zahl unter der Anzahl der<br />

im System verbauten CPU-Cores, ist alles<br />

im grünen Bereich.<br />

Da bei einigen Technologievergleichen<br />

auch die Verteilung der CPU-Zeit auf<br />

Prozesse im Kern beziehungsweise User<br />

Space interessant ist, wird an manchen<br />

Stellen diese Metrik verwendet.<br />

Memory: Neben der CPU-Belastung ist<br />

natürlich auch die Auslastung des Arbeitsspeichers<br />

ein interessanter Messwert<br />

in Linux-Systemen. Das Augenmerk gilt<br />

hier der Menge des durch eine Applikation<br />

maximal belegbaren Speichers, den<br />

man näherungsweise ermitteln kann, indem<br />

man vom »Used«-Wert die Werte für<br />

»Buffer« und »Cached« abzieht.<br />

Die Simulation<br />

Die Simulation soll das zu messende System<br />

selbst möglichst wenig beeinträchtigen.<br />

Im vorliegenden Fall sollen sich alle<br />

Input-Parameter verändern lassen und<br />

der CPU- und Speicherverbrauch dennoch<br />

möglichst gering sein. Gefragt ist<br />

also ein Plugin, das flexibel und CPUgünstig<br />

zugleich arbeitet. Der Autor hat<br />

sich für eine Eigenentwicklung in Perl<br />

entschieden. Dieses Plugin wird in der<br />

Nagioskonfiguration an virtuelle Servicechecks<br />

gebunden, die Servicechecks wiederum<br />

laufen auf virtuellen Hosts.<br />

define command{<br />

command_name check_ok<br />

Abbildung 3: Die Nagios Latency steigt ab einer bestimmten CPU-Auslastung<br />

sprunghaft an. Abbildung 3 zeigt, wie sich die Nagios Latency über die Zeit verändert,<br />

auf der X-Achse ist der Zeitverlauf ersichtlich, die einzelnen Phasen mit der<br />

jeweils verschiedenen Anzahl von Checks wurden über der Achsenbeschriftung<br />

markiert. Auf der Y-Achse ist die Nagios Latency in Sekunden aufgetragen. Was sofort<br />

auffällt, ist, dass es keinen direkten Zusammenhang zwischen Latency und der<br />

Anzahl der Checks gibt. Die Erhöhung von 1000 auf 1400 Checks brachte nahezu<br />

keine Änderung bei der Latency. Erst bei 2200 Checks stieg diese sprunghaft an.<br />

E<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

67


<strong>Monitoring</strong><br />

Nagios-Benchmarks<br />

Abbildung 4: Die CPU-Auslastung steigt in Stufen mit der Anzahl an Checks<br />

immer weiter an.<br />

Abbildung 5: Die Nagios-Latency sinkt schnell und deutlich ab, sobald zwei CPUs<br />

verfügbar sind.<br />

command_line /usr/lib/nagios/pluginsU<br />

/sampler_do_nothing.pl $HOSTNAME$ U<br />

$SERVICEDESC$<br />

}<br />

So wird das Perlskript im System eingebunden.<br />

Wichtig sind die Parameter<br />

»$HOSTNAME$« und »$SERVICEDESC$«,<br />

die dem Plugin mitteilen, für welchen<br />

Host/​Service es gerade die Simulation<br />

übernehmen soll. Dies ist insofern relevant,<br />

als eine gewisse Streuung der Ereignisse<br />

in der Simulation erwünscht ist.<br />

Es wäre realitätsfern, wenn alle Checks<br />

zur exakt selben Zeit von »OK« auf »Warning«<br />

beziehungsweise »Critical« wechseln<br />

würden oder wenn die Durchlaufzeit<br />

eines Checks immer gleich wäre.<br />

Abbildung 2 erläutert den Ablauf im Detail.<br />

Wird das Plugin das erste Mal in<br />

der entsprechenden Host/​Service-Kombination<br />

aufgerufen, berechnet es eine<br />

Verschiebung des Zeitpunktes des Statuswechsels.<br />

Dadurch wird, in bestimmten<br />

Grenzen, festgelegt, in welchem Rhythmus<br />

die einzelnen Statuscodes zu durchlaufen<br />

sind.<br />

Für die Messung systemnaher Werte wie<br />

der CPU-Load wurde das Tool Sar aus<br />

dem Sysstat-Paket verwendet. Es speichert<br />

im Abstand von fünf Sekunden<br />

kontinuierlich Messwerte, die dann später<br />

mit »sadf« in ein CSV-Format umgewandelt<br />

und an Gnuplot zur grafischen<br />

Darstellung weitergegeben wurden.<br />

Nagios Core testen<br />

Die ersten drei Tests beschäftigen sich<br />

mit dem Standard Nagios Core ohne Patches<br />

oder sonstige Maßnahmen zur Performanceverbesserung.<br />

Ziel war es, ein<br />

besseres Verständniss dafür zu erhalten,<br />

welchen Einfluss die oben genannten Parameter<br />

auf die Systemleistung haben:<br />

Wie wirkt sich die Anzahl der Checks auf<br />

die Leistung aus? Gibt es einen direkten<br />

Zusammenhang zwischen der Anzahl der<br />

Checks und der CPU-Auslastung oder der<br />

Nagios Latency?<br />

Getestet wurde auf einem virtuellen System<br />

(ESX als Hypervisor) mit fixen Reservations<br />

für CPU und Memory. Konkret<br />

stand eine virtuelle CPU mit 1.5 GHz und<br />

512 MB RAM in der VM zur Verfügung.<br />

Ausgehend von diesen Hardware-Voraussetzungen<br />

wurde die Anzahl der Checks<br />

schrittweise erhöht. Auf anfänglich 1000<br />

Checks folgte eine Steigerung auf 1400<br />

und schlussendlich auf 2200 Checks.<br />

Ein Blick auf die CPU-Auslastung (Abbildung<br />

4) erklärt dieses Verhalten. Solange<br />

noch genug CPU-Zeit zur Verfügung steht<br />

(gelbe Linie), bleibt die Nagios Latency<br />

niedrig. Bei 2200 Checks steigt die CPU<br />

Belastung so weit an, dass fast keine Ressourcen<br />

verfügbar sind – das Resultat ist<br />

der sprunghafte Anstieg der Latency.<br />

Im Umkehrschluss würde das bedeuten,<br />

dass zwei virtuelle CPUs die Latency bei<br />

2200 Checks sofort wieder sinken lassen<br />

müssten. Abbildung 5 bestätigt dies.<br />

Auswirkungen von Laufzeit<br />

und Return Codes<br />

Ein weiterer Faktor, der in der Praxis relevant<br />

ist, ist die Ausführzeit für einzelne<br />

Checks. Viele Checks werden remote,<br />

etwa über SSH oder NRPE (Nagios Remote<br />

Plugin Executor) auf anderen Hosts<br />

ausgeführt. Dabei ist die CPU-Belastung<br />

am Nagios-System meist gering. Die<br />

Frage, die beantwortet werden soll, ist, ob<br />

die Nagios Latency von der Durchlaufzeit<br />

Abbildung 6: Der Verlauf der Nagios Latency mit einer künstlichen Verzögerung<br />

innerhalb der Checks.<br />

Abbildung 7: Nagios Latency mit einem Anteil von zehn Prozent Checks, die nicht<br />

»OK« zurückliefern.<br />

68 Ausgabe 01-2012 Admin www.admin-magazin.de


Nagios-Benchmarks<br />

<strong>Monitoring</strong><br />

Abbildung 8: CPU-Auslastung mit zehn Prozent Checks, die nicht »OK«<br />

zurückliefern.<br />

Abbildung 9: Vergleichstest mit Mod_gearman. Das Modul sorgt für einen<br />

extremen Abfall der Latency im Test.<br />

dieser Checks beeinflusst wird. Getestet<br />

wurde wieder in derselben Konfiguration<br />

wie in den ersten Tests. Neu hinzukam,<br />

dass die Skripte nun zwischen 0 und<br />

10 Sekunden wegen eines »sleep()«-Calls<br />

warten mussten, bevor sie sich beenden<br />

konnten.<br />

Im Vergleich wird aus Abbildung 6<br />

ersichtlich, dass die Ausführzeit einen<br />

deutlichen Einfluss auf die Latency<br />

hat. CPU-seitig war keine Veränderung<br />

messbar.<br />

Im vorherigen Test gaben alle konfigurierten<br />

Checks immer den Status OK zurück,<br />

was nicht der Rea lität entspricht.<br />

Daher galt es herauszufinden, welche<br />

Auswirkungen Checks auf die Performance<br />

des Systems haben, die nicht OK<br />

zurückliefern. Weil der Nagios Core in<br />

diesem Szenario einige Berechnungen<br />

mehr durchzuführen hat, sollte die Performance<br />

schlechter sein. Die vorherige<br />

Konfiguration wurde übernommen: 2<br />

CPUs, 2200 Checks, alle 60 Sekunden<br />

ausgeführt, Verzögerung zwischen 0 und<br />

10 Sekunden. Nun wechselten allerdings<br />

zehn Prozent der Checks zwischen »OK«,<br />

»Warning« und »Critical«.<br />

Abbildung 7 zeigt eine klare Veränderung<br />

gegenüber Abbildung 6. Die<br />

Latency steigt von etwa fünf Sekunden<br />

auf einen Wert von durchschnittlich sieben<br />

Sekunden.<br />

Sehr interessant ist, dass das Schwingverhalten,<br />

das bei der Latency in Abbildung<br />

7 zu sehen ist, nicht direkt mit der CPU<br />

zusammenhängt. Die CPU-Auslastung<br />

liegt zwar fast bei 80 Prozent, aber offensichtlich<br />

noch knapp unter der Grenze,<br />

die im ersten Test gemessen wurde, sodass<br />

die Latency nicht sprunghaft ansteigt.<br />

Was lässt sich aus diesen Tests<br />

ableiten? Überraschend ist der fehlende<br />

direkte Zusammenhang zwischen Nagios-Latency<br />

und CPU-Auslastung. Eine<br />

voll ausgelastete CPU bewirkt zwar einen<br />

sprunghaften Anstieg der Latency, eine<br />

hohe Latency muss aber nicht unbedingt<br />

mit hoher CPU-Auslastung einhergehen.<br />

Alternative Technologien<br />

Im Laufe der letzten Jahre hat sich einiges<br />

im Nagios-Umfeld verändert. Lange Zeit<br />

führte am Nagios Core von Ethan Galstad<br />

kein Weg vorbei. Die oft kritisierte eher<br />

konservative Entwicklungspolitik rund<br />

um das klassische Nagios hat dazu geführt,<br />

dass inzwischen einige spannende<br />

Alternativen und Erweiterungen verfügbar<br />

sind (vergleichen Sie auch einen weiteren<br />

Beitrag in dieser Ausgabe).<br />

Icinga: Icinga konzentriert sich seit 2009<br />

hauptsächlich auf Frontend-Funktionalitäten.<br />

So verfügt es über ein sehr flexibles<br />

GUI und greift auf ein eigenes Datenbank-Backend<br />

zurück, das das vielfach<br />

kritisierte NDO-Datenbankschema von<br />

Nagios vermeidet.<br />

Mod_gearman: Sven Nierlein von der<br />

Münchner Firma Consol hat sich zum<br />

Ziel gesetzt, mit Mod_gearman einen Mechanismus<br />

zum verteilten Ausführen von<br />

Checks zu kreieren. Die Kommunikation<br />

zwischen den einzelnen Rechenknoten<br />

erfolgt über ein Framework, das speziell<br />

zur Lastverteilung entwickelt wurde.<br />

Das löst im Vorbeigehen viele Probleme<br />

der bestehenden Nagios-Architektur. Die<br />

zentral vom Gearman-Server verwalteten<br />

Queues bewerkstelligen eine Lastverteilung<br />

kombiniert mit der Möglichkeit, die<br />

Ausführung der Checks redundant zu gestalten.<br />

E<br />

Abbildung 10: Vergleichstest mit Mod_gearman (Ausschnittsvergrößerung). Die<br />

Latency ist auf unter eine halbe Sekunde gefallen.<br />

Abbildung 11: Die CPU-Auslastung im Vergleichstest mit Mod_gearman. Das Modul<br />

macht sich auch bei der Prozessorauslastung bemerkbar.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

69


<strong>Monitoring</strong><br />

Nagios-Benchmarks<br />

Abbildung 12: Die Latenz von Shinken im Vergleich.<br />

Abbildung 13: Die CPU-Auslastung von Shinken im Vergleichstest.<br />

Shinken: Jean Gabes, der Hauptentwickler<br />

von Shinken, hat Nagios im Hinblick<br />

auf verteiltes <strong>Monitoring</strong> analysiert. Er<br />

war mit den bestehenden Ansätzen unzufrieden<br />

und begann deshalb mit der<br />

Entwicklung eines neuartigen Konzeptes<br />

in Python. Nachdem es sich als unmöglich<br />

erwies, seinen Vorschlag für eine<br />

Neuimplementierung unter dem Dach<br />

des klassischen Nagios zu verwirklichen,<br />

entschloss er sich zu einem eigenständigen<br />

Projekt.<br />

Merlin: Merlin ist ein unter der GPL verfügbarer<br />

Teil der <strong>Monitoring</strong>lösung der<br />

schwedischen Firma op5 AB. Ähnlich<br />

wie bei Mod_gearman geht es um Lastverteilung<br />

über mehrere Rechenknoten.<br />

Merlin bedient sich dabei einer eigenen<br />

Kommunikationsarchitektur. Ein weiterer<br />

Untersschied zu Mod_gearman besteht<br />

darin, dass auf jedem der von Merlin<br />

bedienten Rechenknoten eine autarke<br />

Nagios-Installation notwendig ist. Diese<br />

Anforderung bewirkt allerdings auch,<br />

dass sich mit Merlin vollständig redundante<br />

Nagios-Implementierungen realisieren<br />

lassen.<br />

Die erwähnten Technologien wurden<br />

ebenfalls unter Laborbedingungen getestet.<br />

Alternativen im Test<br />

Der erste Vergleichstest übernimmt das<br />

Setup vom letzten Test am Nagios Core<br />

und schaltet zusätzlich das Mod_gearman-Broker-Module<br />

dazwischen.<br />

Das Ergebnis fällt noch deutlicher aus<br />

als erwartet. War die Nagios Latency im<br />

vorherigen Test (Abbildung 7) im Bereich<br />

von 7 Sekunden, so fällt sie nun extrem<br />

ab. Abbildung 10 verdeutlicht dieses Bild<br />

– die Latency sinkt auf unter 0,5 Sekunden.<br />

Abbildung 11 zeigt, dass nicht nur<br />

die Latency, sondern auch die CPU-Belastung<br />

deutlich sinkt. Ohne Übertreibung<br />

kann man also sagen, dass Mod_gearman<br />

einen Performanceschub verursacht und<br />

dabei zusätzlich noch deutlich sparsamer<br />

mit den Ressourcen umgeht.<br />

Dasselbe Setup wurde auch für eine<br />

Messung mit Shinken anstelle der Kombination<br />

Nagios mit Mod_gearman verwendet.<br />

Hier zeigt sich ein ähnliches Bild wie mit<br />

Mod_gearman: Die Latency sinkt deutlich,<br />

auch wenn der Wert etwas über<br />

dem von Mod_gearman liegt. Aus Sicht<br />

der CPU zeigt sich, dass Shinken zwar<br />

etwas mehr Ressourcen benötigt (Abbildung<br />

13), die Werte liegen aber auch hier<br />

deutlich unter denen eines klassischen<br />

Nagios-Kerns.<br />

Auch Icinga und das Merlin Broker-Modul<br />

wurden auf diese Weise vermessen.<br />

Das Ergebnis war eindeutig: Ein großer<br />

Unterschied zum Nagios Core war hier<br />

nicht feststellbar. Dies ist insofern auch<br />

nicht sonderlich verwunderlich, als alle<br />

auf einer sehr ähnlichen Codebase aufbauen.<br />

Die Verbesserungen, die in Icinga<br />

eingeflossen sind, haben jedenfalls bislang<br />

keine entscheidenden Performanceverbesserungen<br />

gebracht. Merlin per se<br />

bietet auch keinen Performancevorteil,<br />

interessant ist hier aber die Tatsache, dass<br />

dieses System durch zusätzliche Überwachungsknoten<br />

horizontal skalieren kann.<br />

Deshalb fällt auch die Steigung der Lastkurve<br />

bei einem Merlin-System mit zwei<br />

Knoten deutlich schwächer aus, weil die<br />

Last sich zwischen den beiden Knoten<br />

automatisch verteilen kann.<br />

Ausblick<br />

Die Erkenntnisse aus den Tests hat der<br />

Autor zum Anlass genommen, um mit<br />

Andreas Ericsson – einem der Core Developer<br />

im Nagios Projekt – auf Ursachenforschung<br />

zu gehen. Dabei stellte sich<br />

heraus, dass der Grund für die auffällig<br />

bessere Performance von Shinken und<br />

Mod_gearman in der Art und Weise liegt,<br />

wie die Checkresultate an den Nagios<br />

Core übergegeben werden.<br />

In einer klassischen Nagios-Umgebung<br />

passiert diese Übergabe über das Dateisystem:<br />

Die Resultate werden zuerst in<br />

einem temporären Verzeichnis zwischengespeichert,<br />

der Core überprüft anschließend<br />

dieses Verzeichnis in regelmäßigen<br />

Abständen und liest dabei diese Nachrichten<br />

in das System ein. Im Gegensatz<br />

dazu verläuft die Kommunikation im<br />

Falle von Mod_gearman oder auch bei<br />

Shinken direkt ab.<br />

Zwar hat Nagios im klassischen Fall eine<br />

geringere Komplexität – die Übergabe der<br />

Checkresultate über das Dateisystem ist<br />

aber merklich aufwändiger als die direkte<br />

Kommunikation mit dem Kern. Deshalb<br />

sind Mod_gearman und Shinken bei größeren<br />

Umgebungen stets deutlich im Vorteil,<br />

wenn es um die Systemperformance<br />

geht. Nagios verspricht allerdings in absehbarer<br />

Zeit Veränderungen im Nagios-<br />

Kern, die ihn so schnell wie Mod_gearman<br />

oder Shinken machen sollen. Man<br />

darf gespannt darauf sein. (jcb) n<br />

Der Autor<br />

Christoph Siess beschäftigt sich seit über zehn<br />

Jahren mit dem Einsatz von Open-Source-Software<br />

in Enterprise-Umgebungen. Er ist bei der<br />

Firma Bacher Systems EDV GmbH in Wien als<br />

IT-Consultant im <strong>Monitoring</strong> Competence Center<br />

für die Konzeption und Realisierung Nagiosbasierender<br />

<strong>Monitoring</strong>lösungen verantwortlich.<br />

In seiner Freizeit erkundet er gerne mit seinem<br />

Mountain Bike die Hügel rund um Wien.<br />

70 Ausgabe 01-2012 Admin www.admin-magazin.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 82,32; Österreich: E 54,90; anderes Europa: E 59,90


Test<br />

Virtual Core<br />

© Mazuryk Mykola, 123rf.com<br />

Einfach administrierbare Private Cloud<br />

Heiter bis wolkig<br />

Mit einem originellen Ansatz versucht die KAMP Netzwerkdienste GmbH Mittelständler für Private Clouds zu<br />

begeistern. Jens-Christoph Brendel<br />

Wer seine Daten etwa wegen Sicherheits-<br />

oder Datenschutzbedenken nicht<br />

außer Haus geben mag, bereits über<br />

Server-Hardware und Storage verfügt,<br />

aber gleichzeitig keine Admins mit<br />

Cloud-Ambitionen im Haus hat, dem<br />

soll die „Customer Cloud“ der KAMP<br />

Netzwerkdienste GmbH aus Oberhausen<br />

auf den Leib geschrieben sein. Der Anwender<br />

nutzt die vorhandenen eigenen<br />

Rechen- und Speicherressourcen, verwaltet<br />

sie aber mit einer leicht bedienbaren<br />

Browserapplikation, die KAMP für ihn<br />

hostet.<br />

Damit die entfernt laufende Verwaltungssoftware<br />

und die Hardware vor Ort Hand<br />

in Hand arbeiten können, muss der lokale<br />

Server mit einem eigens erzeugten<br />

Betriebssystem-Image von CD oder USB-<br />

Stick gebootet werden. Damit startet er<br />

einen vorkonfigurierten und abgeschotteten<br />

Ubuntu-Server, der die Virtualisierung<br />

übernimmt. Danach loggt sich der Cloud-<br />

Admin in spe auf einem speziellen Internetportal<br />

ein, das ihm Verwaltungswerkzeuge<br />

für ein virtuelles Rechen zentrum<br />

präsentiert: Seine Virtualisierungsserver<br />

erscheinen dort als virtuelle Racks, die<br />

ihrerseits virtuelle Maschinen aufnehmen<br />

können.<br />

Bis dahin ist alles schnell und problemlos<br />

aufgesetzt, und auch die Oberfläche<br />

der Browserapplikation ist weitestgehend<br />

selbsterklärend (Abbildung 1), die Abfolge<br />

der Schritte logisch. Im Zuge der Inbetriebnahme<br />

empfiehlt es sich dann, als<br />

Erstes den Storage für die späteren virtuellen<br />

Maschinen (VMs) zu konfigurieren.<br />

Dafür ist zunächst eine lokale Festplatte<br />

oder ein lokal angeschlossenes Diskarray<br />

auszuwählen, das sich später in virtuelle<br />

Festplatten für die VMs zerlegen lässt.<br />

Lokaler Speicher ist Pflicht<br />

Aber hier liegt der Hase schon im Pfeffer:<br />

In absehbarer Zeit sollen sich zwar auch<br />

NFS- und iSCSI-Speicher einbinden lassen,<br />

in fernerer Zukunft vielleicht sogar<br />

Fibre-Channel-SANs, momentan funktionieren<br />

aber nur direkt verbundene Speichergeräte.<br />

Das kann naturgemäß nicht<br />

ohne Weiteres Shared Storage sein, auf<br />

den auch andere Virtualisierungshosts<br />

zugreifen, und deshalb wiederum sind<br />

die meisten der fortgeschritteneren Virtualisierungsfunktionen<br />

nicht realisierbar.<br />

So gibt es deswegen vor allem keine<br />

Live-Migration und also auch kein Load<br />

Balancing zwischen unterschiedlich ausgelasteten<br />

vRacks (sprich physischen<br />

Virtualisierungshosts). Auch Energiesparoptionen<br />

(Power Management), wie<br />

sie etwa der Marktführer VMware oder<br />

Citrix kennen, bei denen schlecht ausgenutzte<br />

Server ganz abgeschaltet werden,<br />

nachdem ihre VMs woanders unterkamen,<br />

sind nicht realisierbar. Daneben fallen<br />

auch Hochverfügbarkeitscluster unter<br />

den Tisch, die ebenfalls auf die Migration<br />

setzen müssten. Der Virtualisierungshost<br />

(aka vRack) bleibt so ein Single Point of<br />

Failure.<br />

Schon aus diesem Grund empfiehlt er<br />

sich nicht für geschäftskritische Anwendungen.<br />

Aber schlimmer noch: Im<br />

Moment ist auch ein Desaster Recovery<br />

der VMs schwierig. Snapshots fehlen<br />

nämlich ganz. Ein Export der virtuellen<br />

Platten steht zwar auf der Roadmap, ist<br />

aber noch nicht realisiert. Selbst wenn<br />

72 Ausgabe 01-2012 Admin www.admin-magazin.de


Virtual Core<br />

Test<br />

Abbildung 1: Die Browser-GUI von Virtual-Core nach der ersten Registrierung. Die nächsten Schritte werden<br />

schon aufgelistet.<br />

Dass sich der Server so zugeknöpft zeigt,<br />

hat zudem weitere Nachteile. Beispielsweise<br />

sind deshalb auch seine Linux-<br />

Logs unerreichbar, die Auskunft über den<br />

Zustand seiner Hardware oder auch über<br />

Sicherheitsvorfälle geben könnten. Lediglich<br />

ein vorgefiltertes Log der Applikation<br />

lässt sich über den Browser einsehen, das<br />

aber viele wichtige Details nicht enthält.<br />

Der Anwender steht damit im eigenen<br />

Rechenzentrum und unter seiner Verantwortung<br />

hilflos und verloren vor einer<br />

Black Box, einem womöglich defekten<br />

System, das die Diagnose verhindert und<br />

damit auch nicht mehr therapierbar ist.<br />

So unfertig wie in Bezug auf die Auses<br />

ihn gäbe, wäre die Konfiguration der<br />

VMs verloren und müsste aus manuellen<br />

Aufzeichnungen oder dergleichen rekonstruiert<br />

werden. Auch die Daten des virtuellen<br />

Data Center und seiner vRacks –<br />

also etwa die Benutzer, Gruppen, Rollen,<br />

Storage-Einstellungen und dergleichen<br />

– sind heute nicht sicherbar. Der Virtualisierungshost<br />

selbst sperrt sich gegen<br />

Login-Versuche und vereitelt damit auch<br />

prinzipiell denkbare Selbsthilfe. Damit<br />

steht man bei jedem Hardwareausfall vor<br />

einer unkalkulierbaren Downtime und<br />

Problemen, die gerade der weniger versierte<br />

Anwender, den die Lösung adressieren<br />

will, nicht mehr bewältigen kann.<br />

Abbildung 2: Ein einfacher Dialog ermöglicht die Zuweisung von Rechten zu jedem Benutzer-Account.<br />

Ähnliches lässt sich auch für Gruppen einstellen.<br />

fallsicherheit wirkt das Konzept auch in<br />

anderen Details. So gibt es zwar Benutzerrollen,<br />

aber man muss mit den vier<br />

vorgefertigten vorliebnehmen und kann<br />

keine eigenen einrichten oder vorhandene<br />

modifizieren. Alternativ sollen sich<br />

dafür Benutzergruppen eignen. Denen<br />

kann man rund ein Dutzend Rechte vergeben<br />

(Abbildung 2), die dabei immer<br />

gleichzeitig mit genau einer VM verbunden<br />

sind – VMware kennt zum Vergleich<br />

über 100 verschiedene Benutzerrechte.<br />

Auch ist es unmöglich, den Speicherplatz<br />

oder konsumierbare Netzwerkbandbreite<br />

via Quotas einzuschränken, denn die gibt<br />

es ebenfalls nicht.<br />

Im Vergleich mit anderen Virtualisierungslösungen<br />

offenbaren sich weitere<br />

Fehlstellen, zum Beispiel mit Blick auf<br />

das virtuelle Netzwerk (kein Bonding<br />

oder Failover, kein Load Balancing) oder<br />

mit Blick auf die Ressourcenverwaltung<br />

(es fehlen Ressourcenpools, garantierbare<br />

Zuteilungen und Limits, auch kann man<br />

auf einer Mehrprozessormaschine beispielsweise<br />

die CPU-Affinität einzelner<br />

VMs nicht beeinflussen).<br />

Preisfrage<br />

Bleibt als ein möglicher Wettbewerbsvorteil<br />

noch der Preis. Tatsächlich ist die<br />

Lösung recht günstig. KAMP berechnet<br />

pro Monat und Rack knapp 10 Euro plus<br />

knapp 3 Euro für jede VM. Macht bei<br />

einer kleinen Installation mit zwei Racks<br />

und je fünf VMs 600 Euro im Jahr. Für die<br />

Citrix XenServer Enterprise Edition muss<br />

man zum Vergleich schon 2500 Dollar pro<br />

Server hinlegen. Allerdings einmalig und<br />

mit unlimitierter Anzahl VMs.<br />

Und Citrix hat Load Balancing, Host<br />

Power Management, Snapshots, ein<br />

umfangreiches Alerting und Reporting,<br />

automatische Sicherung und Wiederherstellung<br />

von VMs, heterogene Ressourcenpools,<br />

HA-Features, eine echte<br />

rollenbasierte Administration und manches<br />

mehr. Eine Basisversion mit weniger<br />

Features gibt es zudem kostenlos. Der<br />

ESXi-Server von VMware ist für noch etwas<br />

mehr Geld noch etwas üppiger ausgestattet<br />

zu haben. Eine Einstiegsversion<br />

ist aber auch hier umsonst. Wo da Platz<br />

für eine Lösung bleibt, bei der man sich<br />

für mehrere Hundert Euro ein erhebliches<br />

Betriebsrisiko einkauft, bleibt fraglich.n<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

73


Test<br />

Operations Manager 2012<br />

© Natalia Lukiyanova, 123RF<br />

Microsoft System Center Operations Manager 2012 RC<br />

Ausgepackt<br />

Der neue System Center Operations Manager 2012 von Microsoft kann<br />

nicht nur Windows-Server überwachen. Auch das <strong>Monitoring</strong> von Linux-<br />

Servern und Netzwerkgeräten wie Switches oder Router ist in der neuen<br />

Version besser gelöst als in Vorgänger-Varianten. Thomas Joos<br />

Der System Center Operations Manager<br />

besitzt eine lange Geschichte, die<br />

irgendwo in England begann: Vor beinahe<br />

15 Jahren entwickelte die Firma<br />

Serverware ein Netzwerk-Managementsystem,<br />

das 1998 von Mission Critical<br />

Software aufgekauft wurde. Die wiederum<br />

schloss sich im Jahr 2000 mit NetIQ<br />

zusammen und verkaufte das Programm<br />

an Microsoft. Irgendwann wurden dann<br />

die Altlasten zu viel, und der Windows-<br />

Konzern entschloss sich mit dem System<br />

Center Operations Manager 2007 zu einem<br />

Neuanfang. Jetzt liegt der Release-<br />

Kandidat für System Center Operations<br />

Manager (OPS) vor, den dieser Artikel im<br />

Folgenden näher unter die Lupe nimmt.<br />

Grundlegend verbessert wurde im OPS<br />

2012 [1] das <strong>Monitoring</strong> heterogener<br />

Netzwerke. So sind die Anbindung von<br />

Linux-Servern sowie von Switches und<br />

Routern in der neuen Version wesentlich<br />

besser gelöst als in der Vorversion.<br />

Auch serverbasierte Anwendungen auf<br />

Basis von Java lassen sich mit OPS 2012<br />

überwachen. Java-Application-Server wie<br />

Websphere 6.1/​7, WebLogic 10 und 11,<br />

JBooss und Tomcat können Unternehmen<br />

genauso überwachen wie Dotnet-Anwendungen<br />

und Microsoft-Serverdienste wie<br />

Exchange und Co.<br />

In der neuen Version benötigt der Überwachungs-Agent<br />

auf Linux-Servern nicht<br />

in jedem Fall Root-Rechte. Er arbeitet so<br />

lange mit eingeschränkten Rechten wie<br />

es möglich ist. Nur wenn ein Überwachungsprozess<br />

mehr Rechte verlangt, erhält<br />

der die Root-Rechte. Durch die bessere<br />

Umsetzung des Linux-Rechtemodells<br />

erhöht sich ein Stück weit die Sicherheit<br />

im Netzwerk.<br />

Microsoft meets Unix<br />

Linux ist nicht die einzige vom Operation<br />

Manager unterstützte Unix-Variante: Aktuell<br />

nennt Microsoft HP-UX 11i v2 und<br />

v3 (PA-RISC und IA64), Oracle Solaris<br />

9/​10, Red Hat Enterprise Linux 4/​5/​6<br />

sowie Suse Linux Enterprise Server 9/​<br />

10SP1 und 11 als unterstützte Systeme.<br />

Auch IBM AIX 5.3, AIX 6.1 (POWER) und<br />

AIX 7.1 (POWER) lassen sich mit Agenten<br />

überwachen. In den meisten Fällen<br />

unterstützt der Agent 32-Bit- aber auch<br />

64-Bit-Systeme. Der Server selbst muss<br />

aber auf einem 64-Bit-Server installiert<br />

sein und am besten auch eine 64-Bit-<br />

Version von SQL Server 2008 oder 2008<br />

R2 mit aktuellen Servicepacks nutzen.<br />

Besonders interessant für Linux-Administratoren<br />

ist der Unix/​Linux Shell Command<br />

Template Management Pack [2].<br />

Abbildung 1: Operations Manager 2012 mit neuer Installationsoberfläche.<br />

Abbildung 2: Erstellen von Verwaltungs-Server-Gruppen.<br />

74 Ausgabe 01-2012 Admin www.admin-magazin.de


Operations Manager 2012<br />

Test<br />

Die Sammlung ermöglicht das Erstellen<br />

von Überwachungsregeln auf dem OPS<br />

2012 zur Ausführung von Linux-Befehlen<br />

direkt auf den überwachten Servern. Anleitungen<br />

finden Administratoren auf der<br />

Seite [3]. Diese gelten auch für aktuelle<br />

Versionen in den meisten Fällen.<br />

OPS 2012 integriert die Überwachung von<br />

Netzwerkgeräten und Servern. Das System<br />

erkennt zum Beispiel auch die Ports,<br />

an denen einzelne Server angeschlossen<br />

sind und kann diese gleichzeitig mit dem<br />

jeweiligen Server überwachen. Fällt ein<br />

Port aus, erkennt OPS 2012 daher auch,<br />

welche Server eingeschränkt funktionieren<br />

und kann entsprechende Regeln und<br />

Maßnahmen aktivieren.<br />

Bessere Verfügbarkeit und<br />

Verwaltung<br />

In bisherigen Versionen des Operation<br />

Manager gab es einen Überwachungs-<br />

Server, der über allen anderen angeordnet<br />

war. Dieser Root Management Server<br />

(RMS) stellte ein klares Single Point of<br />

Failure dar. Daher betrieben viele Unternehmen<br />

diesen in einem hochverfügbaren<br />

Setup, was zu hohen Kosten führte.<br />

In OPS 2012 sind alle Verwaltungsserver<br />

gleichberechtigt. RMS gibt es keine mehr,<br />

und ein Cluster für Verwaltungsserver<br />

ist weder notwendig, noch unterstützt.<br />

Dafür lassen sich Verwaltungsserver in<br />

der neuen Version gruppieren und verschiedenen<br />

Überwachungsaufgaben zuordnen.<br />

Fällt ein Server aus, übernehmen<br />

die anderen Server in der Gruppe seine<br />

Überwachungsaufgaben.<br />

Anwendungen und Netzwerkhardware<br />

wie Switches, Firewalls oder Router lassen<br />

sich mit OPS 2012 effizienter überwachen.<br />

In diesem Bereich kann OPS 2012<br />

den Durchsatz und die Verfügbarkeit der<br />

Komponenten besser darstellen. Die neue<br />

Version erkennt zum Beispiel, an welchem<br />

Port eines Switch ein überwachter<br />

Server angeschlossen ist und kann speziell<br />

diesen überwachen. Auch für die Abbildung<br />

der Infrastruktur ist das sinnvoll.<br />

OPS 2012 bietet sich deshalb für umfassendes<br />

Netzwerkmanagement an.<br />

Die Verwaltungskonsole hat Microsoft<br />

komplett überarbeitet. Zusätzlich gibt<br />

es eine vorkonfigurierte Webkonsole zur<br />

Bedienung des Operation Manager 2012,<br />

die sich gezielt auf einzelnen Servern ins-<br />

tallieren lässt. Auch die Powershell erhält<br />

durch Installation von OPS 2012 RC neue<br />

Commandlets und ermöglicht weitgehendes<br />

Skripting des <strong>Monitoring</strong>.<br />

Verschiedene Überwachungsaufgaben<br />

stehen auch als Webparts zur Verfügung,<br />

für die Einbindung in das eigene Intranet,<br />

zum Beispiel über Sharepoint. Mit<br />

ihnen können Administratoren schnell<br />

und einfach eigene Dashboards bauen,<br />

um genau die überwachten Server anzuzeigen,<br />

die aktuell im Fokus stehen.<br />

Dadurch ist die Darstellung nicht mehr<br />

mit zu vielen Informationen überfrachtet,<br />

sondern kann diese besser filtern.<br />

Microsoft erläutert die Vorgehensweise<br />

auf der Technet-Seite [4] und dem Blog<br />

der OPS-Entwickler [5].<br />

Fazit<br />

Unternehmen, die eine Überwachungslösung<br />

für gemischte Netzwerke suchen,<br />

sollten sich OPS 2012 RC ansehen. Die<br />

Testversion steht bei Microsoft zum<br />

Download zur Verfügung<br />

[6]. Anleitungen<br />

zur Installation gibt es<br />

auf der Technet-Site<br />

unter [7].<br />

Natürlich ist auch OPS<br />

2012 vor allem für den<br />

Einsatz in Microsoft-<br />

Netzwerken optimiert:<br />

Der Server steht nur<br />

für Windows zur Verfügung,<br />

die Webkonsole<br />

setzt den IIS voraus,<br />

und als Datenbank verlangt<br />

die Software den<br />

Microsoft SQL Server<br />

2008 oder R2.<br />

Wer überhaupt keine<br />

Windows-Server im<br />

Einsatz hat, findet in<br />

Systemen wie Nagios<br />

oder OpenNMS sicher<br />

bessere Möglichkeiten.<br />

In heterogenen Netzwerken<br />

mit Microsoftund<br />

mehreren Unixoder<br />

Linux-Servern ist<br />

der Operation Manager<br />

2012 allerdings leistungsfähiger<br />

als die<br />

Open-Source-Konkurrenz.<br />

(ofr)<br />

n<br />

Infos<br />

[1] System Center Configuration Manager<br />

2012: [http:// www. microsoft. com/​<br />

en‐us/ server‐cloud/ system‐center/​<br />

configuration‐manager‐2012. aspx]<br />

[2] Unix/​Linux Shell Command Template<br />

Management Pack: [http:// www. microsoft.​<br />

com/ download/ en/ details. aspx? id=27974]<br />

[3] Blog zu Microsoft System Center von<br />

Anders Bengtsson:<br />

[http:// contoso. se/ blog/ ? p=459]<br />

[4] Create a Dashboard View:<br />

[http:// technet. microsoft. com/ en‐us/​<br />

library/ hh227265. aspx]<br />

[5] Introducing Operations Manager 2012<br />

Dashboards:<br />

[http:// blogs. technet. com/ b/ momteam/​<br />

archive/ 2011/ 09/ 27/ introducing‐operations<br />

‐manager‐2012‐dashboards. aspx]<br />

[6] Eval Center: [http:// technet. microsoft.​<br />

com/ de‐de/ evalcenter/ hh505660]<br />

[7] Installationsanleitung:<br />

[http:// technet. microsoft. com/ en‐us/​<br />

library/ hh205996. aspx]<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

75


Test<br />

Fedora 16<br />

© Leonid Yastremskiyœ, 123RF<br />

Fedora 16 mit Cloud- und Virtualisierungs-Technologien<br />

Testlabor<br />

Die neueste Fedora-Version bietet ein gut gefülltes Sortiment neuester<br />

Basistechnologien. Da das Fedora-Projekt als Experimentierfeld für Red<br />

Hats Enterprise-Distributionen dient, kann der interessierte Administrator<br />

damit frühzeitig einen Blick auf kommende, für RHEL und RHEV geplante<br />

Technologien werfen. Thomas Drilling<br />

Fedora 16 positioniert sich mit seinen<br />

Schlüsselfeatures Kernel 3.1 und Gnome<br />

3.2.1 wie gewohnt als Pionier in Sachen<br />

Linux-Technotrends. Die von Fedora angepasste<br />

Gnome-Version 3.2.1 hat das<br />

Zeug, sich unter den Nicht-KDE-Distributionen<br />

an die Spitze der Nutzer-Gunst zu<br />

katapultieren und vor allem Ubuntu dank<br />

unglücklichem Unity-Start Nutzer abzujagen.<br />

Zwar wirkt Ubuntu in der Gesamtheit<br />

seiner Komponenten stimmiger, die<br />

in Fedora 16 enthaltene Gnome-Version<br />

überzeugt aber mehr als Unity.<br />

Für Administratoren sind nur einige Features<br />

von Gnome 3.2.1 interessant, wie<br />

etwa die desktopweite Integration von<br />

Online-Konten, samt zugehöriger Anwendungen<br />

Gnome Documents und Gnome<br />

Contacts, sowie die zahlreichen kleinen<br />

Verbesserungen an der Gnome-Shell,<br />

nur am Rande. Für Administratoren und<br />

Entwickler wichtiger sind die in Fedora<br />

16 enthaltenen Development-Tools, wie<br />

Perl 5.14, die GCC-Python-Plugins, die<br />

Haskell-Platform und D2, die neueste<br />

Version der Programmiersprache D. Noch<br />

bedeutender scheinen die mit dem Kernel<br />

3.1 einhergehenden neuen Funktionen<br />

für KVM und Xen sowie die überdurchschnittliche<br />

Ausstattung an Tools für Virtualisierung<br />

und Cloud Computing.<br />

Neuer Kernel 3.1<br />

Neben dem bei Fedora per Default aktiven<br />

SELinux lohnt sich vor allem ein<br />

Blick auf den neuen Kernel 3.1. Von den<br />

enthaltenen Verbesserungen am Btrfs-<br />

Dateisystem, wie etwa den geänderten<br />

Locking-Mechanismen, welche vorrangig<br />

für mehr Geschwindigkeit sorgen, profitiert<br />

Fedora 16 allerdings per Default<br />

noch nicht, weil sich die Red-Hat-Entwickler<br />

trotz ursprünglicher Planungen<br />

bei Fedora 16 noch einmal für Ext4 als<br />

Standard-Dateisystem entschieden haben.<br />

Der Grund dafür ist in erster Linie,<br />

dass es für Btrfs noch keine Reparatur-<br />

Tools gibt und das Dateisystem immer<br />

noch als experimentell gilt.<br />

Außerdem erfuhr die erstmals beim Kernel<br />

2.6.39 aufgenommene Unterstützung<br />

für Ipset einige Verbesserungen, die es<br />

unter anderem dem Firewall-Code ermöglicht,<br />

die Tabellen mit Filter-Informationen<br />

flexibler nutzen zu können.<br />

Außerdem erhielt der neue Kernel einen<br />

relativ umfangreichen Patch, der<br />

das seit 2.6.38 enthaltene iSCSI-Target-<br />

Framework LIO auf den Stand von LIO<br />

4.1 bringt. Der Kernel-Code für Software-RAID<br />

beherrscht jetzt Bad-Block-<br />

Management bei den RAID-Leveln 1, 4,<br />

5 und 6 und kann damit defekte Plattensektoren<br />

der für den RAID-Verbund<br />

benutzten Datenträger erkennen.<br />

Das im Kernel 3.1 zur Laufwerks-Verschlüsselung<br />

genutzte Dm-Crypt ist in<br />

der Lage, Discard-Kommandos an das darunterliegende<br />

Medium weiterzureichen.<br />

Damit lassen sich zum Beispiel SSDs mithilfe<br />

des ATA-Kommandos Trim über frei<br />

gewordene Bereiche in Kenntnis setzen,<br />

was Lebensdauer und Geschwindigkeit<br />

zugute kommt.<br />

Neben der turnusmäßigen Verbesserung<br />

der Hardware-Unterstützung haben die<br />

Kernel-Entwickler vor allem eine Reihe<br />

wichtiger Optimierungen für die Kernelbasierten<br />

Virtualisierungslösungen KVM<br />

und Xen implementiert, die den jeweiligen<br />

Funktionsumfang erweitern oder die<br />

Geschwindigkeit erhöhen. Nachdem die<br />

Kernel-Entwickler bereits den Kernel 3.0<br />

um die letzten noch fehlenden Komponenten<br />

für die Zusammenarbeit mit dem<br />

Xen-Hypervisor als Dom0 erweitert hatten,<br />

widmeten sie sich beim Kernel 3.1<br />

dem Xen-PCI-Backend. Mit dessen Hilfe<br />

lassen sich PCI/​PCIe-Geräte an Xen-Gäste<br />

durchreichen.<br />

Für Fedora eher interessant: Der Kernel-<br />

Code für KVM besitzt jetzt grundlegende<br />

Funktionen, die es auch auf Systemen<br />

mit Intel-Prozessoren ermöglichen, Gast-<br />

76 Ausgabe 01-2012 Admin www.admin-magazin.de


Fedora 16<br />

Test<br />

systeme aus einem anderen Gastsystem<br />

heraus zu starten (Nested Virtualization).<br />

Der KVM-Kernel-Code für AMD-Prozessoren<br />

beherrschte Nested Virtualization<br />

schon seit 2009. Außerdem beherrscht der<br />

Kernel 3.1 jetzt die experimentelle Unterstützung<br />

von Zero-Copy-RX für Macvtap<br />

und Vhost-net, die aber per Default noch<br />

abgeschaltet ist. Mit Zero-Copy-RX lässt<br />

sich die Netzwerkperformance in der Virtualisierung<br />

verbessern, weil die Funktion<br />

den Verwaltungs-Overhead reduziert, der<br />

beim Empfangen oder Weiterreichen von<br />

Netzwerkdaten, beziehungsweise durch<br />

den Host selbst entsteht.<br />

Fedora Cloud<br />

Red Hat verfolgt seit einigen Jahren unübersehbar<br />

das Ziel, sich durch gezielte<br />

Zukäufe ein weiteres strategisches Standbein<br />

im Bereich Virtualisierung zu verschaffen.<br />

So basieren die eigenen Enterprise-Produkte<br />

im Virtualisierungssektor<br />

Abbildung 1: Fedora bringt das webbasierte Cloud-Management-Tool Aeolus mit.<br />

der derzeit am stärksten wachsenden<br />

Virtualisierungstechnologie. So positioniert<br />

sich Red Hats eigene Enterprisezwar<br />

auf freien Technologien wie KVM,<br />

Red Hat hat aber als KVM-Eigner großen<br />

Einfluss auf die Weiterentwicklung<br />

7,90€ *<br />

100 Seiten Linux<br />

+ DVD<br />

Die aktuelle Ausgabe von<br />

LinuxUser Spezial dringt in die<br />

Tiefen des Linux-Systems ein und<br />

zeigt, wie Sie Ihren Rechner auf<br />

der Kommandozeile administrieren.<br />

Jetzt bestellen<br />

unter: www.linuxuser.de/spezial<br />

Tel.: 089-9934110, Fax: 089-99341199, E-Mail: order@linuxnewmedia.de<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

77


Test<br />

Fedora 16<br />

Virtualisierungslösung RHEV neben<br />

VMWare und Citric Xen Server selbstbewusst<br />

als dritte Kraft im Wettstreit der<br />

großen Infrastrukturanbieter. Nutzer von<br />

Fedora 16 profitieren damit zwangsläufig<br />

von den für RHEV entwickelten Technologien,<br />

die weit über das hinausgehen,<br />

was der Kernel und damit auch andere<br />

Distributionen in Sachen Virtualisierung<br />

von sich aus bieten.<br />

Was das Thema Cloud angeht enthält<br />

Fedora 16 das verteilte Dateisystem<br />

HekaFS 0.7, eine für die Cloud ausgelegte<br />

Version von GlusterFS. Während<br />

HekaFS Cloud-fähige verteilte Dateisysteme<br />

zur Verfügung stellt, lassen sich<br />

Cloud- Instanzen mit dem Webinterface<br />

Aeolus Conductor (Abbildung 1) erzeugen<br />

und verwalten. Außerdem enthält Fedora<br />

16 die Cloud-Hochverfügbarkeitslösung<br />

Pacemaker nebst Open-Stack-Tools, mit<br />

denen sich Cloud- und Storage-Lösungen<br />

konfigurieren und betreiben lassen, sowie<br />

die IaaS-Implementierung Condor Cloud.<br />

Virtualisierungslösungen<br />

Zwar konzentriert sich Red Hat vorrangig<br />

auf KVM als zentrale Virtualisierungslösung,<br />

der in Fedora 16 enthaltene Kernel<br />

3.1 bietet aber mit dem beschriebenen<br />

Dom0-Support auch eine entscheidende<br />

Verbesserung für die ebenfalls freie Alternative<br />

Xen. Darüber hinaus haben<br />

die Red-Hat-Entwickler eine Reihe von<br />

Verbesserungen am grafischen Interface<br />

Virt-Manager (Abbildung 2) vorgenommen,<br />

mit dessen Hilfe der Admin jetzt<br />

deutlich mehr Informationen über den<br />

Status laufende Gastsysteme erhält und<br />

sogar lesend auf deren Gast-Dateisysteme<br />

zugreifen kann.<br />

Bei Windows-Gästen lässt sich sogar<br />

die Registry inspizieren. Außerdem<br />

verhindert Fedora 16 mit dem Virtual<br />

Machine Lock Manager, dass zwei virtuelle<br />

Maschinen gleichzeitig auf das<br />

gleiche Disk-Image zugreifen, was fatale<br />

Folgen hätte und etwa dann passieren<br />

kann, wenn der Admin die gleiche VM<br />

unbeabsichtigt zweimal startet. Fedora<br />

16 enthält eine neue Version des von Red<br />

Hat als zentrale Komponente für seine<br />

Server-Virtualisierung RHEV entwickelten<br />

Spice-Protokolls, sodass auch Fedora<br />

jetzt USB-Geräte zwischen Gast und Host<br />

teilen kann (USB Passthrough). Ein USB<br />

Redirect auf andere Hosts im Netzwerk<br />

ist ebenso möglich wie ein Abgleich der<br />

Lautstärke zwischen virtueller Maschine<br />

und Host-System.<br />

Allerdings bietet Spice noch keinen<br />

3D-Support, sodass sich GL-Effekte im<br />

Gastsystem, wie sie Fedora selbst oder<br />

Ubuntu als virtuelle Maschine verlangen,<br />

leider nicht nutzen lassen. Fedora<br />

16 lässt sich in verschiedenen Editionen,<br />

bei Fedora „Spins“ genannt, von der<br />

Projektseite [1] herunterladen. Einzelheiten<br />

zu den Neuerungen in Gnome 3<br />

und Fedora 16 finden sich in den Gnome<br />

Release Notes [2] sowie in den Fedora<br />

Release Notes [3].<br />

Fazit<br />

Fedora 16 weist, wie der Codename<br />

„Verne“ mit seiner Reverenz an den<br />

Science-Fiction-Autor andeutet, einen<br />

Weg in die Zukunft und folgt in seiner<br />

Ausrichtung konsequent dem Motto, stets<br />

die Distribution mit den neuesten Technologien<br />

zu sein. Dass eine solche Philosophie<br />

nicht immer zu einem Produkt<br />

mit zufriedenen Endanwendern führt,<br />

haben frühere Versionen gelegentlich<br />

gezeigt. Allerdings haben die Red-Hat-<br />

Entwickler auch gar nicht das Ziel, die<br />

beste Desktop-Distribution am Markt zu<br />

bauen, sondern nutzen Fedora eher zum<br />

Test neuer Entwicklungen, die später in<br />

andere Produkte einfließen.<br />

Fedora 16 überzeugt indes in beiden Kategorien.<br />

Während der Gewinn des Titels<br />

als beste Desktop-Distribution vorrangig<br />

daran scheitert, dass das Nachrüsten<br />

proprietärer Komponenten wie Codecs<br />

umständlicher ist als bei der Konkurrenz,<br />

bietet Fedora 16 als Server-Distributionen<br />

einige Technologien, die sich so noch<br />

in keiner anderen Distribution finden.<br />

Übrigens ist Fedora 16 dem im Oktober<br />

2011 verstorbenen Unix-Pionier und<br />

Mit-Erfinder der Programmiersprache C<br />

Dennis Ritchie gewidmet. (ofr) n<br />

Infos<br />

[1] Fedora Download: [http:// fedoraproject.​<br />

org/ de_CH/ get‐fedora‐options]<br />

[2] Gnome 3.2 Release Notes: [http:// library.​<br />

gnome. org/ misc/ release‐notes/ 3. 2/]<br />

[3] Fedora 16 Release Notes:<br />

[http:// docs. fedoraproject. org/ en‐US/​<br />

Fedora/ 16/ html/ Release_Notes/]<br />

Abbildung 2: Fedora installiert als Yum/​RPM-basiertes System fehlende Pakete auch im laufenden Betrieb<br />

nach wie etwa KVM beim Start des Virtual Machine Managers.<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 und<br />

Mac OS X. Außerdem arbeitet Thomas Drilling als<br />

Buchautor und Verleger, berät als IT-Consultant<br />

kleine und mittlere Unternehmen und hält Vorträge<br />

zu Linux, Open Source und IT-Sicherheit.<br />

78 Ausgabe 01-2012 Admin www.admin-magazin.de


19 . DFN Workshop<br />

„Sicherheit in vernetzten Systemen”<br />

am 21. und 22. Februar 2012<br />

im Grand Elysée Hotel Hamburg<br />

- Vorträge zu verschiedenen Aspekten der<br />

IT-Sicherheit, u.a. Cloud Computing, IPv6<br />

und Netzwerksicherheit<br />

- Tutorium<br />

"DNSSEC in der Praxis“<br />

Medienpartner:<br />

DFN<br />

Deutsches<br />

Forschungsnetz<br />

Weitere Informationen und die<br />

Anmeldung finden Sie unter:<br />

https://www.dfn-cert.de<br />

®


Test<br />

Univention<br />

© tasosk, 123RF<br />

Univention Corporate Server 3.0<br />

Runderneuert<br />

Mitte November ist der erste RC zum Univention Corporate Server 3.0 erschienen. Er bringt zahlreiche Verbesserungen<br />

mit und enthält als eine der ersten Distributionen das neue Samba 4. Florian Effenberger<br />

Wer eine große Zahl von Clients verwaltet,<br />

der benötigt vor allem Tools zum<br />

zentralen Management der Systeme sowie<br />

eine ausgereifte Benutzerverwaltung.<br />

Der Univention Corporate Server, kurz<br />

UCS, schickt sich an, all das in einem<br />

Linux-basierten Paket zu vereinen, und<br />

unterstützt dabei auch heterogene Umgebungen<br />

mit Windows.<br />

Weg mit den Turnschuhen!<br />

Geht es um Firmendesktops, unterscheiden<br />

sich die Anforderungen der<br />

Windows-Welt wenig von denen, die an<br />

Open-Source-Lösungen gestellt werden.<br />

Der wichtigste Aspekt ist die einfache<br />

Verwaltung der einzelnen Clients und<br />

Benutzer. Denn spätestens, wenn Hunderte<br />

Systeme an verschiedenen Standorten<br />

berücksichtigt werden müssen, stößt<br />

die vielzitierte Turnschuh-Administration<br />

schnell an ihre Grenzen. Während in der<br />

Windows-Welt zahlreiche Hersteller um<br />

die Gunst des Kunden buhlen und Small<br />

Business Server, System-Management-<br />

Tools und Identity-Lösungen feilbieten,<br />

vermögen routinierte Administratoren<br />

unter Linux das Zepter auch selbst in die<br />

Hand zu nehmen. Bevor man das Rad<br />

neu erfindet, lohnt es sich jedoch, einen<br />

Blick auf fertige Produkte zu werfen. Mit<br />

dem Corporate Server des Bremer Herstellers<br />

Univention [1] steht eine offene<br />

Lösung zur Verfügung, die zahlreiche<br />

freie Programme unter einem Dach vereint<br />

und dabei dem Administrator die<br />

nötigen Tools und Hilfsmittel an die Hand<br />

gibt, um auch ohne kryptische Kommandozeilenbefehle<br />

schnell zu Ergebnissen<br />

zu kommen.<br />

Für die aktuelle Version setzt der Bremer<br />

Hersteller dabei auf das bewährte Debian<br />

„Squeeze“ 6.0.3, und bietet ein eigenes<br />

Repository aller relevanten Pakete<br />

80 Ausgabe 01-2012 Admin www.admin-magazin.de


Univention<br />

Test<br />

an, das vereinzelt auch aktuellere Programmversionen<br />

beinhaltet. Als Kernel<br />

kommt Version 2.6.32 zum Einsatz, der<br />

grafische Desktop wird durch KDE 4.4<br />

bereitgestellt. Auch das Mailsystem basiert<br />

auf freien Komponenten: Mit Cyrus<br />

2.4 als IMAP- und Postfix 2.7 als SMTP-<br />

Server, Horde 4 für Webmail sowie dem<br />

erprobten Gespann aus Amavisd-new<br />

2.6, Spamassassin 3.3 und ClamAV 0.97<br />

kommen bewährte Tools zum Einsatz.<br />

Unterstützung für Shared Folders sowie<br />

einfache Verteilerlisten sind ebenfalls mit<br />

an Bord. Weiterhin enthalten sind Apache<br />

2.2, NTP 4.2 und PostgreSQL 8.4.<br />

Nimmt man die optional erhältlichen<br />

Komponenten hinzu, umfasst der UCS<br />

sowohl Serverbetriebssystem als auch<br />

Desktop-Umgebung, Client-Management<br />

mit Inventarisierungsfunktion und Identity-/​Benutzerverwaltung.<br />

Die Virtualisierungslösungen<br />

KVM und Xen 4.1 sind<br />

standardmäßig als UMC-Modul „UCS<br />

Virtual Machine Manager“ (UVMM) vorhanden.<br />

Die Desktop Virtualization Services<br />

für virtualisierte Windows/​Linux-<br />

Arbeitsplatz-Systeme ist dagegen eine<br />

zusätzliche Komponente, die man extra<br />

kaufen muss.<br />

Auch Terminal-Server und Kolab-Groupware<br />

sowie Netzdienste wie DHCP, DNS<br />

per BIND 9.8, ein Squid 3.1-Proxyserver,<br />

CUPS 1.4 als Printserver samt Quota-<br />

Support, Nagios 3.2 zum Systemmonitoring<br />

und die Systemsicherung per Bacula<br />

5.0 sind enthalten. Durch die Samba-<br />

Integration eignet sich UCS nicht nur für<br />

homogene Linux-Umgebungen, sondern<br />

ist dank Windows-Unterstützung auch in<br />

heterogenen IT-Landschaften einsetzbar.<br />

Abbildung 1: Der UCS arbeitet mit demselben Domänenmodell, das in der Windows-Welt gang und gäbe ist.<br />

eine Übersichtsseite mit zusätzlichen<br />

Links zu Nagios, Horde-Webmail und<br />

der integrierten Zertifizierungsstelle. Die<br />

eigentliche Konsole öffnet ihre Pforten<br />

mit dem Benutzernamen »Administrator«<br />

und dem bei der Installation vergebenen<br />

Passwort. Auch der SSH-Zugang steht ab<br />

Installation für »root« offen – im späteren<br />

Betrieb sollte hier jedoch unbedingt auf<br />

eine zertifikatsbasierte Anmeldung plus<br />

Sudo-Pflicht umgestellt werden. Intuitiv<br />

meldeten wir uns im Test zunächst als<br />

»root« im Webinterface an. Das funktioniert<br />

zwar, verwehrt aber die Einstelweitere<br />

Unterbrechung durch, startet das<br />

System neu und bringt es auf Wunsch per<br />

Online-Update auf den neuesten Stand.<br />

Zudem kann die Installation auch skriptgesteuert<br />

und damit vollständig automatisiert<br />

erfolgen.<br />

Alle weiteren Konfigurationsschritte<br />

nimmt der Administrator dann über die<br />

Weboberfläche vor, der Univention ein<br />

neues Modul namens Basiseinstellungen<br />

spendiert hat, was das Deployment<br />

mehrerer Server oder virtueller Maschinen<br />

erleichtern soll. Ein Aufruf von beispielsweise<br />

»http://192.168.1.1« zeigt<br />

Aller guten Dinge sind drei<br />

Zu Redaktionsschluss lag der erste RC der<br />

kommenden Version 3.0 vor, der nach<br />

Herstellerangaben [2] weitgehend dem<br />

Endprodukt entspricht. Die Installation<br />

geht schnell von der Hand, fragt sie doch<br />

nur die unbedingt nötigen Angaben wie<br />

beispielsweise Netzwerkeinstellungen ab.<br />

Gewöhnungsbedürftig ist lediglich, dass<br />

es nur ein textbasiertes Setup gibt. Das<br />

tut der Funktionalität zwar keinen Abbruch,<br />

geht bei umfangreichen Dialogen<br />

wie der Festplattenpartitionierung aber<br />

auf Kosten des Komforts. Sind alle Daten<br />

gesammelt, läuft die Installation ohne<br />

Abbildung 2: Bereits bei der Installation wird die Vielzahl der möglichen Anwendungsgebiete deutlich.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

81


Test<br />

Univention<br />

Abbildung 3: Frisch und aufgeräumt präsentiert sich die Univention Management Console (UMC).<br />

lungen zur Domäne. Richtig ist daher,<br />

sich im Browser als »Administrator« einzuloggen.<br />

Frühjahrsputz<br />

Abbildung 4: Anstehende Änderungen werden vor Ausführung nochmals zusammengefasst.<br />

Die Konsole begrüßt den Administrator<br />

mit zweigeteilter Ansicht (siehe Abbildung<br />

3) und hat seit der Vorversion eine<br />

Generalüberholung erfahren. Sie wurde<br />

auf Basis von Ajax neu entwickelt und<br />

vereint die einstmals getrennten Module<br />

UMC (Management Console) und UDM<br />

(Directory Manager) unter einem Dach.<br />

Während die obere Hälfte Einstellungen<br />

zur Domäne beinhaltet – beispielsweise<br />

das Anlegen von Clients, die Verwaltung<br />

von Nutzern sowie das Festlegen von<br />

Richtlinien – sind die hostspezifischen<br />

Optionen wie Netzwerkkonfiguration,<br />

Serverrolle oder Virtualisierungseinstellungen<br />

in der unteren Hälfte gruppiert.<br />

Die Einstellungen sind auf Registerkarten<br />

(Tabs) zusammengefasst, die sich aber<br />

leider nicht verschieben lassen. Vereinzelt<br />

traten mit dem RC noch Probleme<br />

auf – so funktionierte die Änderung des<br />

Zertifikats erst im zweiten Anlauf, und<br />

das Online-Update vermochte nur auf der<br />

Kommandozeile seines Amtes zu walten.<br />

Alles in allem macht die Oberfläche aber<br />

einen schnellen, übersichtlichen und frischen<br />

Eindruck. Vor größeren Konfigurationen<br />

fasst eine Dialogbox nochmals alle<br />

Änderungen zusammen (siehe Abbildung<br />

4), und bei fehlerhaften Einstellungen<br />

wird das Tab farblich hervorgehoben, auf<br />

dem eine Korrektur nötig ist.<br />

Zudem bieten fast alle Dialoge das Filtern<br />

oder Sortieren von Elementen an, und wo<br />

möglich werden Einträge aus dem LDAP-<br />

Verzeichnis zur Auswahl angeboten, wobei<br />

Vererbung unterstützt wird. Schön<br />

gelöst ist die Integration der einzelnen<br />

Komponenten: Neu angelegte Rechner<br />

lassen sich automatisch zu Nagios hinzufügen,<br />

beziehen ihre Netzwerkkonfiguration<br />

aus vorher angelegten DHCP- und<br />

DNS-Einträgen (siehe Abbildung 5), und<br />

berechtigte Benutzer werden bei Bedarf<br />

als Gruppe beispielsweise zu Druckerfreigaben<br />

hinzugefügt. Zudem können<br />

Gruppen wiederum andere Gruppen beinhalten,<br />

was das Abbilden von Organisationsstrukturen<br />

erleichtert.<br />

Ebenso leistungsfähig ist die Benutzerverwaltung<br />

(siehe Abbildung 6). Hier<br />

wird nicht nur das Konto erstellt, sondern<br />

gleichzeitig festgelegt, welchen Gruppen<br />

und Organisationseinheiten es zugehört<br />

und welche Mailadresse angelegt werden<br />

soll. Die Berechtigungen sind dabei<br />

feingranuliert regelbar: Einzelne Anmeldeverfahren<br />

– beispielsweise der Zugang<br />

zu Windows-Clients – lassen sich deaktivieren,<br />

das Ablaufdatum für Passwörter<br />

oder Konten festlegen.<br />

Für die jeweiligen Systeme sind überdies<br />

zusätzliche Anmeldeeinstellungen<br />

verfügbar: Unter Windows können das<br />

Anmeldeskript samt Systempfaden sowie<br />

die erlaubten Login-Zeiten definiert werden,<br />

wogegen für Linux beispielsweise<br />

die Login-Shell eingestellt werden kann.<br />

Sogar vollständige Kontaktinformationen<br />

wie Telefonnummer und Anschrift nimmt<br />

der Verzeichnisdienst dankbar auf, von<br />

wo aus sie theoretisch von Drittanbieter-<br />

Applikationen wie Thunderbird ausgelesen<br />

werden könnten.<br />

Tanze Samba mit mir<br />

Mit UCS 3.0 steht eines der ersten kommerziellen<br />

Produkte zur Verfügung,<br />

das Samba 4 integriert. Zwar steht<br />

dieses Release offiziell noch gar nicht<br />

als finale Version zur Verfügung, [3]<br />

wird von Univention jedoch im Rahmen<br />

des Produktsupports offiziell und<br />

für den Produktiveinsatz unterstützt.<br />

Für das UCS-System, das auch Samba 4<br />

be inhaltet, spricht der Hersteller dabei<br />

von einer Skalierbarkeit bis mindestens<br />

5000 Nutzer.<br />

In der Praxis hängt die maximale Anzahl<br />

unterstützter User aber mehr von der<br />

verwendeten Hardware ab als von der<br />

Serversoftware. Bei der Vorgängerversion<br />

82 Ausgabe 01-2012 Admin www.admin-magazin.de


Univention<br />

Test<br />

des UCS mit Samba 3 berichtet Univention<br />

beispielsweise von Installationen mit<br />

bis zu 70 000 Anwendern.<br />

Im Vergleich zum Vorgänger Samba 3<br />

wurde die aktuelle Version von Grund auf<br />

neu konzipiert und unterstützt erstmals<br />

den Aufbau einer vollwertigen Windows-<br />

Domäne mit Active Directory samt Gruppenrichtlinien<br />

– lediglich Vertrauensstellungen<br />

und sogenannte Forest-Domänen<br />

fehlen derzeit noch. Samba-4-Domänen<br />

lassen sich mit denselben Tools konfigurieren<br />

wie ein echter Windows-Server,<br />

was die Hürde bei der Migration auf freie<br />

Software deutlich senkt. Da Samba 4 im<br />

Vergleich zum Vorgänger, der lediglich<br />

NT-Domänen anbot, einen eigenen LDAP-<br />

Server mitbringt, hat Univention für den<br />

Abgleich der Daten zwischen Samba<br />

und dem Rest des Systems einen eigenen<br />

Dienst entwickelt, der die Datenbestände<br />

konsistent hält.<br />

Wahlfreiheit<br />

Anwender, die das Update auf die aktuelle<br />

Version wegen der weitreichenden<br />

Änderungen und etwaiger nötiger<br />

Downtimes noch scheuen, können UCS<br />

3.0 auch problemlos mit der gewohnten<br />

3er-Version installieren, und die Aktualisierung<br />

erst später vornehmen. Auch die<br />

bisherige Version wird von Univention<br />

regulär im Rahmen des Produktsupports<br />

unterstützt. Die einzige Einschränkung:<br />

Ein Parallelbetrieb von Samba 3 und<br />

Samba 4 ist technisch nicht möglich, da<br />

die Windows-Systeme sich jeweils nur<br />

an einem der beiden Server anmelden<br />

können. Denkbar sind aber Update-Szenarien,<br />

in denen schrittweise von UCS<br />

2.4 mit Samba 3 auf UCS 3.0 mit Samba 4<br />

umgestellt werden soll, wozu das Herstellerwiki<br />

einen Leitfaden bereithält. [4]<br />

Fit für IPv6<br />

Abbildung 5: Das Anlegen eines neuen Rechners geht schnell von der Hand.<br />

Langsam aber sicher muss sich jeder<br />

Administrator mit der nächsten Generation<br />

des Internet-Protokolls beschäftigen,<br />

wird doch die Zahl der verfügbaren<br />

IPv4-Adressen immer knapper und die<br />

Vergabepolitik der Provider entsprechend<br />

strenger. Leider sind viele Hersteller von<br />

Soft- und Hardware mit der Unterstützung<br />

noch zurückhaltend. Umso erfreulicher<br />

ist, dass UCS 3.0 direkt bei der<br />

Installation die Einrichtung von IPv6-<br />

Netzwerkinterfaces anbietet, wobei neben<br />

der statischen Konfiguration auch<br />

Unterstützung für die Stateless Autoconfiguration<br />

enthalten ist.<br />

IPv6 verlangt dem Administrator jedoch<br />

einiges mehr an Sensibilität bezüglich der<br />

Sicherheit ab, denn auch vermeintlich<br />

interne Server erhalten dann eine von<br />

außen direkt erreichbare Adresse – der<br />

„Schutz“ durch NAT entfällt damit. Um<br />

diesen gestiegenen Sicherheitsanforderungen<br />

gerecht zu werden und gerade<br />

unbedarfte Systemverwalter vor bösen<br />

Überraschungen zu bewahren, ist bei einer<br />

Neuinstallation des UCS die Firewall<br />

künftig auf »deny all« gestellt, sprich:<br />

Eingehende Verbindungen sind nur auf<br />

die explizit installierten Dienste möglich.<br />

Bei einer Upgradeinstallation hingegen<br />

setzt UCS diese Einstellung nicht<br />

automatisch.<br />

Wir sind viele<br />

Auch die integrierten Virtualisierungsdienste<br />

haben eine Überarbeitung erfahren.<br />

So liefert UCS 3.0 standardmäßig<br />

zwei verschiedene Lösungen aus, namentlich<br />

Xen in Version 4.1, sowie das im<br />

Linux-Kernel standardmäßig integrierte<br />

KVM, wobei Letzteres auch Snapshots<br />

und Suspend unterstützt. Die Thin<br />

Client Services, eine Managementlösung<br />

zur Verwaltung von Thin-Clients unterschiedlicher<br />

Hersteller, wurden ebenfalls<br />

komplett überarbeitet und werden im<br />

Rahmen des eigenständigen Produktes<br />

UCS TCS voraussichtlich im ersten Quartal<br />

2012 auf den Markt kommen.<br />

Die Guten ins Töpfchen<br />

Auch im Detail bringt der UCS 3.0 einige<br />

Änderungen mit sich. Während Univention<br />

die eigenen Kolab-Pakete durch offizielle<br />

und zertifizierte Hersteller-Pakete<br />

ersetzt hat [5], wurde die Integration von<br />

Hylafax aus der Management Console<br />

entfernt, was allerdings einen Weg für<br />

Drittanbieter-Tools eröffnet. Gestrichen<br />

wurde zudem die sogenannte Sendebevollmächtigung<br />

– Univention verweist<br />

hierzu auf die Möglichkeit, den Absender<br />

im Mailprogramm beispielsweise bei<br />

Urlaubsvertretungen anders zu konfigurieren.<br />

Auch die Abkehr vom eigenen<br />

Backuptool »unidump« hin zu Bacula ist<br />

mit UCS 3.0 vollzogen.<br />

Sinnvoll erscheint der Verzicht auf eine<br />

eigene Installationsumgebung für Windows-Clients,<br />

bietet doch der Markt<br />

zahlreiche Lösungen wie beispielsweise<br />

Opsi [6], für das auch eine eigene UCS-<br />

Integration zur Verfügung steht. Zudem<br />

besteht somit die Möglichkeit, auch die<br />

installierten Anwendungsprogramme zu<br />

verwalten und dabei auf eine Vielzahl<br />

vordefinierter Pakete zurückzugreifen.<br />

Bestehende UCS-Systeme der Version 2.4<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

83


Test<br />

Univention<br />

lassen sich laut Herstellerwiki [7] zwar<br />

auf die neue Version updaten, je nach<br />

Konstellation ist dazu aber etwas Handarbeit<br />

nötig.<br />

Vorsicht ist beispielsweise beim Corporate<br />

Desktop oder bei Thin Clients geboten,<br />

da die auf UCS 3.0 aufbauenden<br />

Nachfolgeprodukte erst im Lauf des kommenden<br />

Jahres erscheinen werden und<br />

eine Kombination der alten Versionen<br />

mit dem neuen Basissystem nicht immer<br />

funktioniert. In den meisten Fällen lässt<br />

sich jedoch das bestehende UCS 2.x-System<br />

zum Slave degradieren und parallel<br />

zum UCS 3.0-Master betreiben.<br />

Kosten<br />

Eine Preisliste zur Version 3.0 stand bei<br />

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

voraussichtlich dürften aber<br />

etwa dieselben Konditionen wie für die<br />

Vorgängerversion [8] gelten: Ein Basissystem<br />

inklusive Maintenance schlägt<br />

beispielsweise mit jährlich 290 Euro zu<br />

Buche, zuzüglich knapp 26 Euro im ersten<br />

Jahr beziehungsweise knapp 9 Euro<br />

in Folgejahren pro Client und Nutzer.<br />

Module wie Groupware, Thin Client Services,<br />

Desktop-Virtualisierung und der<br />

Corporate Desktop kosten extra.<br />

Anwender, die die UCS-Vorgängerversion<br />

vor nicht mehr als 12 Monaten lizenziert<br />

haben und daher in den Genuss der<br />

Maintenance kommen oder den Maintenance-Vertrag<br />

entsprechend verlängert<br />

haben, können kostenfrei auf die neue<br />

Version umsteigen. Ebenfalls kostenfrei<br />

angeboten werden soll eine sogenannte<br />

Free-for-Personal-Use-Version [9], die<br />

alle Features des großen Bruders enthält,<br />

aber auf fünf Clients beschränkt ist.<br />

Ein Blick in die Kristallkugel<br />

Im Laufe des Jahres 2012 sollen weitere<br />

Produkte mit der neuen Systembasis freigegeben<br />

werden [10]. Im Fokus steht<br />

derzeit die Schulversion UCS@school,<br />

die Thin Client Services (TCS), die Desktop<br />

Virtualization Services (DVS) sowie<br />

der Corporate Desktop (UCD). Auch der<br />

Univention Corporate Server selbst soll<br />

weiterentwickelt werden: Unter anderem<br />

durch die Erweiterung der Management<br />

Console zur Verwaltung mehrerer Serversysteme,<br />

ergänzt um zusätzliche Berechtigungsprofile.<br />

Auch die Anbindung an<br />

andere Verzeichnisdienste soll ausgebaut<br />

werden. Ebenfalls auf der Agenda steht<br />

die Erweiterung des Xen-Hypervisors um<br />

Funktionen für Snapshots und Suspend,<br />

wie sie KVM schon unterstützt.<br />

Fazit<br />

UCS bringt in der aktuellen Version 3.0<br />

zahlreiche interessante Neuerungen,<br />

insbesondere die Management Console<br />

vermag zu überzeugen. Für Windows-<br />

Administratoren dürfte vor allem die Integration<br />

von Samba 4 von Interesse sein.<br />

Die Frage, ob eine Lösung aus einem Guss<br />

besser ist oder man die Flexibilität beim<br />

Zusammenstellen eines eigenen Systems<br />

bevorzugt, muss letzten Endes jeder Administrator<br />

für sich selbst entscheiden.<br />

An Funktionalität und Komfort stehen<br />

Linux-basierte Lösungen gleich welchen<br />

Herstellers den proprietären Konkurrenten<br />

mittlerweile in nichts nach – ganz im<br />

Gegenteil. (ofr)<br />

n<br />

Infos<br />

[1] Univention: [http:// www. univention. de]<br />

[2] Einschränkungen beim RC 1: [http:// forum.​<br />

univention. de/ viewtopic. php? f=26& t=1617]<br />

[3] Diskussion über die Freigabe von Samba<br />

4: [http:// lists. samba. org/ archive/​<br />

samba‐technical/ 2011‐November/ 080482.​<br />

html]<br />

[4] Updatepfade auf Samba 4: [http:// wiki.​<br />

univention. de/ index. php? title=Update_to_<br />

UCS_3. 0_Samba_4]<br />

[5] Zur Zarafa-Integration siehe: Thomas<br />

Drilling, Fundament für Teamarbeit, <strong>ADMIN</strong><br />

06/​2011<br />

[6] Florian Effenberger, Fenster mit Aussicht,<br />

Linux-<strong>Magazin</strong> 10/​2009<br />

[7] Mischumgebungen mit UCS 2.x: [http://​<br />

wiki. univention. de/ ? title=UCS_3.​<br />

0_‐_Auswahl_wichtiger_Neuerungen#​<br />

Mischumgebungen_aus_UCS_2_und_UCS_3]<br />

[8] Preisliste: [http:// www. univention. de/​<br />

produkte/ preise/ preisbeispiele/]<br />

[9] FPU-Version: [http:// www. univention. de/​<br />

download/ free‐for‐personal‐use‐edition/]<br />

[10] Roadmap: [http:// www. univention. de/​<br />

produkte/ maintenance/ roadmap/]<br />

Abbildung 6: Auch die Benutzerverwaltung wartet mit zahlreichen Funktionen auf.<br />

Der Autor<br />

Florian Effenberger engagiert sich seit vielen<br />

Jahren ehrenamtlich für freie Software. Er ist<br />

Mitglied im Board of Directors der Document<br />

Foundation. Zuvor war er fast sieben Jahre im<br />

Projekt OpenOffice.org aktiv, zuletzt als Marketing<br />

Project Lead. Seine Arbeitsschwerpunkte<br />

liegen darüber hinaus in der Konzeption von<br />

Unternehmens- und Schulnetzwerken samt<br />

Softwareverteilungslösungen auf Basis freier<br />

Software. Zudem schreibt er regelmäßig für<br />

zahlreiche deutsch- und englischsprachige Fachpublikationen<br />

und beschäftigt sich dabei auch mit<br />

rechtlichen Fragestellungen.<br />

84 Ausgabe 01-2012 Admin www.admin-magazin.de


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

Netzwerk & Security<br />

e14,95<br />

Jahres-DVD<br />

2011<br />

Alle Artikel des<br />

Jahres 2011<br />

■ Artikel zu Storage, Backup,<br />

Netzwerk, <strong>Monitoring</strong>,<br />

Virtualisierung u.v.m.<br />

■ Zum Lesen am Bildschirm<br />

oder Ausdrucken: PDF und<br />

HTML-Format<br />

■ Search Engine für<br />

Artikel-Volltext-Suche<br />

Außerdem auf der DVD:<br />

Bootbares Rettungssystem<br />

Jetzt gleich bestellen!<br />

www.admin-magazin.de/DVD2011 oder 089 - 99 34 11 - 00


Security<br />

pfSense<br />

© Alena Yakusheva, 123RF<br />

Firewall und Router-Distribution pfSense<br />

Schutzschild<br />

Auf den ersten Blick wirkt sie beinahe unscheinbar, beeindruckt aber<br />

beim näheren Hinsehen durch eine Fülle von Funktionen. Selbst fortgeschrittene<br />

Features wie Hochverfügbarkeit sind Teil ihres Repertoires.<br />

Ganz schön beeindruckend für eine kleine Firewall. Tim Schürmann<br />

Chris Buechler und Scott Ullrich waren<br />

unzufrieden. Zwar bot die FreeBSD-Distribution<br />

m0n0wall eine schnelle Einrichtung<br />

einer Firewall und eines Routers,<br />

war aber vollständig auf den Betrieb in<br />

eingebetteten Systemen zugeschnitten.<br />

Dort musste sie immer vollständig im<br />

Hauptspeicher laufen, wodurch sie sich<br />

unter anderem nicht besonders gut erweitern<br />

ließ. Also begannen die beiden<br />

ihre eigene Distribution zu stricken – pf-<br />

Sense war geboren.<br />

Die Ende September erschienene Version<br />

2.0 besteht im Kern aus FreeBSD 8.1, das<br />

auf den Einsatz als Firewall und Router<br />

zugeschnitten ist. Auf Wunsch arbeitet<br />

pfSense auch als DHCP-Server, Zulieferer<br />

für Sniffer wie Wireshark, VPN-Zugangspunkt,<br />

DNS-Server und sogar als WLAN<br />

Access Point. Dennoch bringt das komplette<br />

System gerade einmal 100 MByte<br />

auf die Waage, für den Start genügen<br />

ein USB-Stick und 128 MByte Hauptspeicher.<br />

Wem die eingebauten Funktionen<br />

noch nicht reichen, der darf pfSense über<br />

Pakete weiter aufbohren. So lassen sich<br />

beispielsweise ein Web-Proxy oder ein<br />

Intrusion Detection System (in Form von<br />

Snort) nachrüsten. Die Einrichtung sämtlicher<br />

Komponenten nimmt der Administrator<br />

bequem über eine ausgeklügelte<br />

Weboberfläche vor. Das alles ist dank<br />

BSD-Lizenz auch noch vollkommen kostenlos.<br />

Schweizer Messer<br />

Seinen merkwürdigen Namen hat pfSense<br />

von der aus OpenBSD übernommenen<br />

Firewall pf. Sie bietet eine zustandsorientierte<br />

Paketüberprüfung (Stateful Inspection),<br />

kann sich also merken, wer welche<br />

Verbindungen aufgebaut hat. Über Regeln<br />

blockt man nicht nur einzelne Ports<br />

oder Protokolle, sondern limitiert unter<br />

anderem auch die Anzahl gleichzeitiger<br />

Verbindungen für bestimmte Rechner<br />

und lenkt den Verkehr über vorgegebene<br />

Gateways. Mithilfe des Werkzeugs »p0f«<br />

unterscheidet pfSense sogar Betriebssysteme,<br />

sodass man beispielsweise allen<br />

Windows-Rechnern den Zugriff auf das<br />

Internet verbieten kann. Merkwürdig aussehende<br />

Pakete versucht pfSense automatisch<br />

zu korrigieren beziehungsweise<br />

zu normalisieren (Scrubbing) und so wiederum<br />

Angriffen vorzubeugen [2].<br />

Um die Ausfallsicherheit zu erhöhen,<br />

lassen sich mehrere gleichzeitig lau-<br />

86 Ausgabe 01-2012 Admin www.admin-magazin.de


pfSense<br />

Security<br />

Abbildung 2: Hier sind die PCs nur über pfSense mit dem Internet verbunden.<br />

Seit pfSense 2.0 gibt es zusätzlich ein<br />

Image für USB-Sticks. Es bietet dieselben<br />

Inhalte wie die CD und ist für<br />

Rechner ohne CD-Laufwerk gedacht.<br />

Für diesen Fall sind die Dateien »pf-<br />

Sense‐memstick‐2.0‐RELEASE‐i386.img.<br />

gz« respektive »pfSense‐memstick‐2.0‐RE-<br />

LEASE‐amd64.img.gz« gedacht.<br />

Ergänzend zum Live-System stellen die<br />

Entwickler noch eine Embedded-Variante<br />

bereit. Sie startet von einer Cominteressant:<br />

Sobald<br />

man es aktiviert,<br />

müssen sich<br />

Benutzer zunächst<br />

auf einer speziellen<br />

Internetseite<br />

Abbildung 1: Die meisten der pfSense-Images sind für eingebettete Systeme authentifizieren,<br />

gedacht. Schnelle Netze erfordern aber auch einen schnellen Prozessor. um Zugang zum<br />

Netz beziehungsweise<br />

Internet zu erhalten [4].<br />

fende pfSense-Firewalls koppeln. Fällt<br />

eine durch einen Hardwaredefekt aus, Besonders in größeren Netzen sorgt das<br />

übernimmt automatisch eine andere. Im Load Balancing für Entlastung. pfSense<br />

Hintergrund kommt dabei das Common verteilt dann den ausgehenden Datenverkehr<br />

auf mehrere WAN-Schnittstellen.<br />

Address Redundancy Protocol (CARP)<br />

zum Einsatz [3]. Auf Wunsch überträgt Fällt eine von ihnen aus, leitet pfSense<br />

eine pfSense-Installation seine geänderte den Verkehr automatisch auf die noch<br />

Konfiguration auf alle anderen und sorgt funktionierenden um. Analog kann pfper<br />

»pfsync« dafür, dass die Zustandstabellen<br />

aller laufenden Firewalls stets auf dungen auf mehrere Server verteilen. Das<br />

Sense eingehende Anfragen und Verbin-<br />

dem gleichen Stand sind.<br />

ist beispielsweise praktisch, wenn man<br />

stark frequentierte Webseiten betreibt.<br />

NAT und DHCP<br />

Sollte einer der Webserver ausfallen, leitet<br />

pfSense zudem die Anfragen automatisch<br />

an die übrigen um.<br />

Neben der Firewall enthält pfSense einen<br />

DHCP-Server und versteht sich auf Einen Wermutstropfen gibt es dann<br />

Network Adress Translation (NAT), die doch: pfSense unterstützt nur x86- oder<br />

selbstverständlich Port-Weiterleitung beherrscht<br />

und mit mehreren öffentlichen Systemanforderungen gelten zudem nur<br />

AMD64-Prozessoren. Die genügsamen<br />

IP-Adressen umgehen kann. pfSense lässt für eine einfache Firewall und ein kleines<br />

sich als Endpunkt für ein Virtual Private Netz. Sollen über den Rechner beispielsweise<br />

bis zu 200 Mbps laufen, verlangt<br />

Network (VPN) verwenden, sofern eines<br />

der Protokolle IPSec, OpenVPN oder PPTP pfSense schon einen Prozessor mit mindestens<br />

1 GHz. Nachträglich installierte<br />

zum Einsatz kommt. Das Captive Portal<br />

ist insbesondere für Hotspot-Betreiber Pakete, wie etwa Snort, verschlingen zu-<br />

sätzliches RAM. Eine praktische Berechnungstabelle<br />

haben die Macher unter [5]<br />

veröffentlicht.<br />

Wer der Downloadseite auf einen Mirror<br />

folgt, den erschlägt erst einmal eine<br />

Liste mit unzähligen Dateien (Abbildung<br />

1). Normalerweise benötigt man nur<br />

vom unteren Seitenrand das circa 100<br />

MByte große ISO-Image »pfSense‐2.0‐RE-<br />

LEASE‐i386.iso.gz«, auf einem AMD64-<br />

System greift man zu »pfSense‐2.0‐RE-<br />

LEASE‐amd64.iso.gz«. Auf eine CD gebrannt,<br />

startet von ihr dann wahlweise<br />

ein Installationsprogramm oder ein Live-<br />

System mit der Firewall. In dieser zuletzt<br />

genannten Betriebsart fehlen allerdings<br />

ein paar Funktionen, weshalb man pf-<br />

Sense möglichst auf einem Rechner oder<br />

in einer virtuellen Maschine installieren<br />

sollte.<br />

Image für Sticks<br />

Abbildung 3: Das Bootmenü von FreeBSD begrüßt den Admin nach dem Start von<br />

der CD beziehungsweise dem USB-Stick.<br />

Abbildung 4: Hier entscheiden zehn Sekunden, ob das Installationsprogramm<br />

oder das Live-System startet.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

87


Security<br />

pfSense<br />

Abbildung 5: Die Schriftart, sowie Screen- und Keymap muss man nur in einigen<br />

seltenen Fällen ändern, wenn man über ein Terminal mit sfSense in Kontakt tritt.<br />

pact-Flash-Karte und läuft anschließend<br />

vollständig im Hauptspeicher. Von der<br />

Embedded-Fassung gibt es gleich mehrere<br />

Images: eines für jede Kombination<br />

aus Prozessorarchitektur, CF-Kartengröße<br />

(beziehungsweise internem Flash-Speicher)<br />

und Grafikkarte des Zielsystems.<br />

So enthält beispielsweise das Paket<br />

»pfSense‐2.0‐RELEASE‐1g‐amd64‐nanobsd_vga.img.gz«<br />

ein Image für eine CF-<br />

Karte mit 1 GByte Kapazität, die man in<br />

ein System mit AMD64-Prozessor steckt,<br />

das zusätzlich über eine Grafikkarte verfügt.<br />

Pakete ohne das Anhängsel »_vga«<br />

unterdrücken sämtliche Bildschirmausgaben<br />

und lassen sich am Rechner nur über<br />

eine serielle Schnittstelle ansprechen.<br />

Abschließend gibt es noch eine fertige<br />

virtuelle Maschine für VMware. Diese<br />

enthielt bei Redaktionsschluss allerdings<br />

noch die ältere Version 1.2.3.<br />

Um zu zeigen, wie einfach sich pfSense<br />

in Betrieb nehmen und einrichten lässt,<br />

soll es im Folgenden eine Fritzbox ersetzen,<br />

also ein kleines (Firmen-)LAN<br />

sicher mit dem Internet verbinden (wie<br />

in Abbildung 2). Benutzer erhalten in<br />

diesem Szenario nur dann Zugriff, wenn<br />

sie sich auf einer<br />

speziellen Portalseite<br />

gegenüber<br />

pfSense mit einem<br />

persönlichen Passwort<br />

authentifiziert<br />

haben.<br />

Fragestunde<br />

Nach dem Start<br />

der Live-CD überspringt<br />

man das<br />

Menü von FreeBSD<br />

einfach mit der Eingabetaste oder wartet<br />

zehn Sekunden (Abbildung 3). Wenn<br />

während des jetzt folgenden Bootprozesses<br />

Probleme auftauchen, sollte man<br />

die anderen Startoptionen von oben nach<br />

unten durchgehen: »2« schaltet ACPI aus,<br />

»4« startet einen abgesicherten Modus<br />

und »6« macht das unterliegende FreeBSD<br />

gesprächig, womit man wiederum störender<br />

Hardware auf die Schliche kommt.<br />

Läuft alles glatt, stellt pfSense irgendwann<br />

die Frage aus Abbildung 4. Hier<br />

drückt man möglichst innerhalb der 10<br />

Sekunden »i«. Verpasst man den Zeitpunkt,<br />

startet pfSense automatisch im<br />

Live-Modus. Dabei stellt es die gleichen<br />

Fragen wie bei seinem ersten Start von<br />

der Festplatte (dazu gleich mehr).<br />

War man schnell genug, erscheint jetzt<br />

ein kleiner Installationsassistent. In seinem<br />

ersten Menü übernimmt man die<br />

Voreinstellungen zur Schriftart und Tastatur<br />

via »Accept these Settings« (Abbildung<br />

5). Das jetzt angebotene »Quick/​<br />

Easy Install« macht seinem Namen alle<br />

Ehre: Man muss lediglich die Sicherheitsabfrage<br />

bestätigen, dann löscht der Assistent<br />

ohne Rücksicht auf Verluste die erste<br />

Festplatte und richtet auf dem gewonnenen<br />

Platz pfSense ein. Da im Beispiel auf<br />

dem Rechner nur pfSense laufen soll,<br />

ist dieser Punkt der Richtige. Eine benutzerdefinierte<br />

Installation via »Custom<br />

Install« ist nur dann notwendig, wenn<br />

man die Festplatte unbedingt manuell<br />

partionieren und einrichten möchte.<br />

Kernel-Wahl<br />

Sobald sich pfSense auf der Platte befindet,<br />

stellt sich die Frage nach dem zu verwendenden<br />

Kernel. Auf einem Standard-<br />

PC ist der erste Punkt »Symmetric multiprocessing<br />

kernel« bereits die richtige<br />

Wahl. Der »Embedded kernel« kommt<br />

auf eingebetteten Systemen zum Einsatz,<br />

denen ein Bildschirm (respektive eine<br />

Grafikkarte) und eine Tastatur fehlt. Der<br />

»Developers Kernel« ist wiederum nur für<br />

Anwender interessant, die pfSense selbst<br />

weiterentwickeln wollen.<br />

Abschließend muss man nur noch einen<br />

»Reboot« anstoßen, die CD entfernen<br />

und warten, bis pfSense von der<br />

Festplatte startet. Von dort meldet sich<br />

das bekannte Boot-Menü, das man per<br />

Eingabetaste überspringt. Nach einer<br />

Weile präsentiert pfSense eine Liste aller<br />

Netzwerkschnittstellen und erkundigt<br />

sich, ob man ein VPN einrichten möchte.<br />

Das ist nur dann notwendig, wenn man<br />

pfSense (ausschließlich) zwischen beziehungsweise<br />

mit VPNs einsetzen möchte.<br />

Da man die VPN-Funktion auch später<br />

noch bequem über die Weboberfläche<br />

anknipsen kann, verneint man die Frage<br />

mit einem »n«.<br />

Als Nächstes möchte pfSense den Namen<br />

der WAN-Schnittstelle wissen (Abbildung<br />

6). Dabei hilft die Liste mit allen<br />

Abbildung 6: In diesem Fall bildet die erste Karte »em0« die Schnittstelle zum<br />

WAN respektive Internet.<br />

Abbildung 7: Dieses Menü dient als Notnagel, wenn die Weboberfläche versagt.<br />

»14« öffnet beispielsweise den SSH-Zugang.<br />

88 Ausgabe 01-2012 Admin www.admin-magazin.de


pfSense<br />

Security<br />

Netzwerkschnittstellen. Ist man unsicher,<br />

kann man pfSense die passende Schnittstelle<br />

auch selbst ermitteln lassen. Dazu<br />

zieht man zunächst alle Kabel vom Rechner<br />

ab, tippt ein »a« ein, stöpselt nur die<br />

Strippe zum WAN wieder ein, drückt die<br />

Eingabetaste und hofft, dass pfSense die<br />

Schnittstelle automatisch erkennt.<br />

Netzwerknamen<br />

Im nächsten Schritt wird nach dem gleichen<br />

Prinzip der Name der Netzwerkschnittstelle<br />

zum LAN eingegeben. Existieren<br />

mehrere Schnittstellen, wiederholt<br />

man das Spielchen entsprechend oft.<br />

Auch hier bietet pfSense jeweils per »a«<br />

eine automatische Erkennung an. Sind<br />

alle Karten angemeldet, drückt man bei<br />

der Frage nach einer neuen LAN-Karte<br />

die Eingabetaste. pfSense listet jetzt noch<br />

einmal alle Zuweisungen auf. Stimmen<br />

sie, geht es mit »y« weiter. Doch Vorsicht:<br />

Es gilt die englische Tastaturbelegung.<br />

Wer auf einer deutschen Tastatur nicht<br />

»z« drückt, muss den gesamten Fragenkatalog<br />

noch einmal durchlaufen. Sobald<br />

das Menü aus Abbildung 7 erscheint, ist<br />

die Installation erfolgreich abgeschlossen,<br />

pfSense arbeitet jetzt ähnlich wie eine<br />

Fritzbox. Aktiv sind bereits DHCP-Server,<br />

Informationstheorie<br />

pfSense protokolliert seine Aktionen in mehreren<br />

Logs, die sich hinter »Status | System Logs«<br />

einsehen lassen. Auf dem »Firewall«-Register<br />

kann man sogar mit einem Klick auf eines der<br />

Symbole schnell eine neue Ausnahmeregel erzeugen.<br />

Die derzeit von der Firewall beobachteten<br />

Verbindungen zeigt ein eigener Bildschirm<br />

unter »Diagnostics | States« an.<br />

Ergänzend erhebt pfSense weitere statistische<br />

Daten wie die Anzahl der inspizierten Pakete.<br />

Sie landen in einer Round-Robin-Datenbank<br />

(RRD), aus der ältere Informationen herausfliegen,<br />

wenn neue hinzukommen. Auf Basis dieser<br />

Daten generiert pfSense ein paar interessante<br />

Statistiken und Diagramme. Einige findet man<br />

auf dem Dashboard, den Rest im Menü »Status<br />

| RRD Graphs«. Hier erfährt man nicht nur, wieviel<br />

»Traffic« und Pakete in den letzten Stunden<br />

und Tagen über die einzelnen Netzwerkschnittstellen<br />

gelaufen sind (wie in Abbildung 11), sondern<br />

auch, wie es um die Verbindungsqualität<br />

zum WAN steht (Register »Quality«).<br />

Welche Dienste laufen, verrät schließlich noch<br />

der Menüpunkt »Status | Services«. Dort lassen<br />

sie sich auch anhalten und wieder starten.<br />

NAT und Firewall.<br />

In der Regel sind<br />

aber noch ein paar<br />

Nacharbeiten in<br />

der Weboberfläche<br />

nötig.<br />

Erste<br />

Schritte<br />

Im Auslieferungszustand<br />

verteilt<br />

der eingebaute<br />

DHCP-Server an<br />

alle über die erste<br />

LAN-Schnittstelle<br />

angeschlossenen<br />

Rechner<br />

eine IP-Adresse aus dem Bereich von<br />

»192.168.1.100« bis »192.168.1.199«.<br />

Von dort steuert man jetzt mit einem<br />

Browser die Adresse »192.168.1.1« an,<br />

über die sich die Weboberfläche von pf-<br />

Sense erreichen lässt. Das angemahnte,<br />

von pfSense selbst ausgestellte Zertifikat<br />

akzeptiert man als Ausnahme. Zutritt zur<br />

Weboberfläche erhält man mit dem Benutzernamen<br />

»admin« und dem Passwort<br />

»pfsense«. Das Duo gehört dem allmächtigen<br />

Administrator, der an allen Schrauben<br />

drehen darf. Man sollte deshalb im<br />

Abbildung 8: Hat die Installation geklappt, erlangt der Administrator über diese<br />

Seite Zutritt zur Steuerzentrale von pfSense.<br />

ersten Schritt das Passwort ändern. Dazu<br />

ruft man den Menüpunkt »System | User<br />

Manager« zu Hilfe, klickt auf das »e«-<br />

Symbol rechts in der Zeile »admin« und<br />

vergibt unter »Password« ein neues (Abbildung<br />

9). Änderungen sind in pfSense<br />

grundsätzlich immer explizit über »Save«<br />

am unteren Seitenrand zu speichern.<br />

Mit einem Klick auf das pfSense-Logo<br />

in der linken oberen Ecke gelangt man<br />

wieder zurück zur Einstiegsseite, dem so<br />

genannten Dashboard. Es liefert einen<br />

ersten Überblick über das System und<br />

Abbildung 11: pfSense protokolliert eine Menge Daten und bereitet für den Administrator daraus Statistiken<br />

und Diagramme auf: Hier hat ein Client mit Ubuntu Linux eine Menge Updates geladen, anschließend<br />

erfolgten nur noch ein paar kleinere Seitenabrufe.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

89


Security<br />

pfSense<br />

Abbildung 9: Im »User Manager« sollte man als Erstes das eigene Passwort tauschen.<br />

Wie ein Blick auf »Firewall | Rules« verrät,<br />

blockt die Firewall standardmäßig alle<br />

vom »WAN« eingehenden Pakete. Analog<br />

dürfen alle PCs im »LAN« Verbindungen<br />

nach außen aufbauen. Eine neue Regel<br />

legt man über das kleine Plussymbol<br />

rechts oben an. Es öffnet sich dann ein<br />

Formular, in dem man sich die Bedingung<br />

zusammenklickt (Abbildung 13).<br />

Dabei lauern allerdings zwei Stolperfallen:<br />

Aufgrund der nicht änderbaren<br />

»Anti-Lockout Rule« dürfen alle Rechner<br />

aus dem LAN immer auf den pfSense-<br />

Rechner zugreifen. Selbst mit der Reseine<br />

derzeitige Auslastung (Abbildung<br />

10). Weitere Informationen lassen sich<br />

in Form von Widgets hinzufügen, man<br />

muss nur auf das kleine Plussymbol unterhalb<br />

von »Status« klicken und sich<br />

eine neue Informationsquelle aussuchen.<br />

Nützlich sind beispielsweise die »Traffic<br />

Graphs«, die den geflossenen Datenverkehr<br />

grafisch darstellen.<br />

Standardmäßig holt pfSense für die WAN-<br />

Schnittstelle per DCHP-Client eine IP-Adresse.<br />

Gemäß RFC 1918 weist es dabei<br />

IP-Adressen aus den für private LANs<br />

reservierten Bereichen 10/​8, 172.16/​12<br />

und 192.168/​16 ab. In einigen Fällen,<br />

wie etwa beim Zugang über UMTS, vergeben<br />

die Provider jedoch eben genau<br />

solche IP-Adressen. Damit pfSense diese<br />

akzeptiert, muss man unter »Interfaces |<br />

WAN« ganz unten den Haken vor »Block<br />

private networks« entfernen. Ein Haken<br />

bei »Block bogon networks« schließt übrigens<br />

von der IANA nicht zugewiesene<br />

Adressen aus, wie etwa »0.0.0/8«. Beide<br />

Funktionen erhöhen die Sicherheit, weshalb<br />

man sie nur aus gutem Grund deaktivieren<br />

sollte.<br />

Soll pfSense eine Internet-Verbindung<br />

über ADSL herstellen, muss man der<br />

WAN-Schnittstelle das PPPoE-Protokoll<br />

beibringen. Dazu setzt man einfach<br />

»Type« auf »PPPoE« und trägt dann in die<br />

Felder unter »PPPoE configuration« noch<br />

die Zugangsdaten ein. Viele ADSL-Provider<br />

trennen bei einer Flatrate die Verbindung<br />

automatisch nach 24 Stunden.<br />

Diese Zwangstrennung kann pfSense auf<br />

eine bestimmte Uhrzeit verlegen. Dazu<br />

stellt man unter »Periodic Reset« die Ausklappliste<br />

auf »Custom« und gibt dann<br />

über die beiden Felder die Zeit vor (Abbildung<br />

12).<br />

Alle angeschlossenen PCs im LAN erhalten<br />

automatisch eine IP-Adresse vom<br />

eingebauten DHCP-Server. Möchte man<br />

den einzelnen PCs die Adressen aus<br />

einem bestimmten Bereich zuweisen,<br />

wählt man zunächst im Menü »Services<br />

| DHCP-Server« und stellt dann den<br />

entsprechenden Adressbereich unter<br />

»Range« ein. Am unteren Rand der Seite<br />

findet sich noch eine (standardmäßig<br />

leere) Tabelle. Über sie kann man für<br />

einzelne PCs eine IP-Adresse vorgeben.<br />

Um solch eine Regel anzulegen, klickt<br />

man auf das kleine Plus-Symbol, trägt die<br />

MAC-Adresse des Geräts, die gewünschte<br />

IP-Adresse und den Hostnamen ein.<br />

Der Regulator<br />

Abbildung 10: Das Dashboard liefert zahlreiche Informationen über den aktuellen Zustand des Systems. Die<br />

einzelnen Widgets lassen sich im Dashboard bequem per Drag-and-Drop umsortieren.<br />

90 Ausgabe 01-2012 Admin www.admin-magazin.de


pfSense<br />

Security<br />

riert pfSense. Verschieben lässt sich eine<br />

Regel, indem man sie mit einem Mausklick<br />

markiert und dann am rechten Rand<br />

der Tabelle das Pfeilsymbol neben der<br />

neuen Position aktiviert. Stimmt die Reihenfolge,<br />

eine blockierende Regel greift<br />

aber dennoch nicht, sollte man hinter<br />

»Diagnostics | States» auf dem Register<br />

»Reset states« einmal alle aktuellen Zustände<br />

zurücksetzen. Wenn der Browser<br />

nach einem Klick auf »Reset« endlos lädt,<br />

muss man einmal kurz selbst die Seite<br />

neu laden.<br />

Personalabteilung<br />

Abbildung 12: Die Zwangstrennung durch den Provider erfolgt um 4:30 Uhr morgens, also dann, wenn noch<br />

niemand im Büro ist.<br />

Advanced« mit einem Haken bei »Antilockout«<br />

abschalten. Allerdings läuft man<br />

dann auch Gefahr, sich durch eine unachtsame<br />

Regel selbst auszusperren.<br />

Des Weiteren arbeitet die Firewall alle<br />

Regeln von oben nach unten ab. Die erste<br />

zutreffende Regel gilt, alle anderen ignogel<br />

aus Abbildung 13 könnte sich der<br />

Benutzer des PCs mit der IP-Adresse<br />

»192.168.1.66« weiterhin per SSH auf<br />

dem pfSense-Rechner anmelden (vorausgesetzt,<br />

dort ist der SSH-Zugang aktiviert).<br />

Um das zu unterbinden, kann man<br />

die Anti-Lockout-Regel unter »System |<br />

Abbildung 13: Diese Einstellungen verwehren beispielsweise dem Rechner mit der IP-Adresse 192.168.1.66 den<br />

Zugriff auf den TCP-Port 22, also den SSH-Dienst.<br />

Bevor die Benutzer des LANs ins Internet<br />

gehen, müssen sie sich auf einer speziellen<br />

Seite mit einem Benutzernamen und<br />

einem Passwort authentifizieren. Damit<br />

das klappt, sind diese beiden Informationen<br />

erst einmal in pfSense zu hinterlegen.<br />

Der Einfachheit halber soll das<br />

in unserem Beispiel über die in pfSense<br />

eingebaute Benutzerverwaltung erfolgen,<br />

die unter »System | User Manager« zu finden<br />

ist. In diesem Fall fügt man im User-<br />

Manager für jeden Benutzer über das<br />

Plus-Symbol ein neues Benutzerkonto<br />

hinzu. Im Formular muss man lediglich<br />

einen Benutzernamen und ein Passwort<br />

eintragen (Abbildung 14). Beim praktischen<br />

Einsatz in einem Firmennetz bietet<br />

sich statt des eingebauten User-Managers<br />

die Authentifizierung per RADIUS an.<br />

Die Seite für die eigentliche Anmeldung<br />

stellt das Captive Portal bereit. Um es<br />

einzuschalten, setzt man hinter »Services<br />

| Captive Portal« ein Häkchen vor »Enable<br />

captive portal«. Die Anmeldeseite soll<br />

erscheinen, wenn ein Benutzer aus dem<br />

LAN ins Internet gehen möchte, folglich<br />

markiert man noch »LAN« unter »Interfaces«.<br />

Wenn der Benutzer eine Weile untätig<br />

ist, meldet pfSense ihn automatisch<br />

wieder ab. Nach wie vielen Minuten dies<br />

passieren soll, bestimmt »Idle Timeout«.<br />

Bei einem leeren Feld gibt es kein Zeitlimit.<br />

Etwas strenger ist »Hard Timeout«:<br />

Nach den dort eingetragenen Minuten<br />

setzt pfSense den Benutzer gnadenlos<br />

vor die Tür – egal, ob er untätig war<br />

oder nicht.<br />

Nach erfolgreicher Anmeldung leitet pf-<br />

Sense den Benutzer automatisch zur URL<br />

weiter, die unter »After authentication<br />

Redirection URL« vorgegeben ist. Die Be-<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

91


Security<br />

pfSense<br />

Er fragt alle wichtigen Informationen ab,<br />

darunter etwa den Rechnernamen, der<br />

ansonsten einfach »pfsense.localdomain«<br />

lautet.<br />

Fazit<br />

Abbildung 14: Unter »Expiration Date« kann man ein Datum einstellen, an dem pfSense das Benutzerkonto<br />

automatisch deaktiviert.<br />

nutzernamen und Passwörter liegen im<br />

Beispiel in der pfSense-eigenen Benutzerverwaltung,<br />

weshalb man noch »Authentication»<br />

auf »Local User Manager /<br />

Vouchers« stellt. Wie der Name bereits<br />

andeutet, kann man über das Register<br />

»Vouchers« auch Gutscheine erstellen,<br />

mit denen dann ein Benutzer für eine<br />

Weile Zugang zum Internet erhält. Das ist<br />

beispielsweise in Hotels interessant, wo<br />

Gäste einen solchen Gutschein erwerben<br />

können.<br />

Abbildung 15: Hier muss ein Benutzer des LANs erst seinen Benutzernamen und<br />

das zugehörige Passwort hinterlassen, um Zugang zum Internet zu erhalten. Das<br />

Aussehen der Seite lässt sich selbstverständlich anpassen.<br />

Greift man nach dem Speichern mit<br />

»Save« von einem Client-PC aus dem<br />

LAN auf das Internet zu, landet man automatisch<br />

beim Anmeldebildschirm aus<br />

Abbildung 15. Erst wenn man hier die<br />

vorhin in der Benutzerverwaltung hinterlassenen<br />

Daten eintippt, erhält man<br />

Zugriff auf das Internet.<br />

Zum Abschluss noch einmal die Erinnerung:<br />

In der Weboberfläche sollte man<br />

vor dem Aufruf eines neuen Menüpunkts<br />

immer daran denken, alle Änderungen<br />

zu speichern, weil<br />

sie sonst verloren<br />

gehen. In einigen<br />

Fällen, wie etwa<br />

bei den Einstellungen<br />

zum DHCP-<br />

Server, muss man<br />

die neuen Einstellungen<br />

anschließend<br />

noch einmal<br />

explizit anwenden.<br />

Bei einer Einrichtung<br />

von pfSense<br />

auf einem produktiven<br />

System sollte<br />

man zudem einmal<br />

den Einrichtungsassistenten<br />

hinter<br />

»System | Setup<br />

Wizard« anwerfen.<br />

Dieser Artikel konnte nur die grundlegenen<br />

Features von pfSense vorstellen, der<br />

Funktionsumfang der Firewall-Distribution<br />

ist einfach riesig. Leider besteht die<br />

Dokumentation derzeit nur aus einem<br />

ziemlich lückenhaften und spärlich bestückten<br />

Wiki [6]. Dessen Artikel stützen<br />

sich, ähnlich wie die im Handel erhältlichen<br />

Bücher, größtenteils noch auf die<br />

ältere Version 1.2.x. Immerhin lässt sich<br />

vieles übertragen und wer sich mit den<br />

Diensten einigermaßen auskennt, sollte<br />

sich schnell zurechtfinden. Übrigens<br />

produzieren mittlerweile verschiedene<br />

Firmen Hardware beziehungsweise Appliances<br />

mit vorinstalliertem pfSense,<br />

eine Liste der von den Entwicklern empfohlenen<br />

Unternehmen findet sich unter<br />

[7]. (ofr/​cth) n<br />

Infos<br />

[1] pfSense: [http:// www. pfsense. org]<br />

[2] pf und Scrubbing:<br />

[http:// docstore. mik. ua/ manuals/ openbsd/​<br />

faq/ pf/ scrub. html]<br />

[3] Common Address Redundancy<br />

Protocol (CARP):<br />

[http:// de. wikipedia. org/ wiki/ Common_<br />

Address_Redundancy_Protocol]<br />

[4] Captive Portal: [http:// de. wikipedia. org/​<br />

wiki/ Captive_Portal]<br />

[5] Hardwareanforderungen von pfSense:<br />

[http:// www. pfsense. org/ index. php?​<br />

option=com_content& task=view& id=52&​<br />

Itemid=49]<br />

[6] pfSense-Wiki: [http:// doc. pfsense. org/​<br />

index. php/ Main_Page]<br />

[7] pfSense Appliances:<br />

[http:// www. pfsense. org/ index. php?​<br />

option=com_content& task=view& id=44&​<br />

Itemid=50]<br />

Der Autor<br />

Tim Schürmann ist selbstständiger Diplom-Informatiker<br />

und derzeit hauptsächlich als freier<br />

Autor unterwegs. Zu seinen Büchern gesellen<br />

sich zahlreiche Artikel, die in Zeitschriften und<br />

auf Internetseiten in mehreren Ländern veröffentlicht<br />

wurden.<br />

92 Ausgabe 01-2012 Admin www.admin-magazin.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... EinEn ClASSMATE PC<br />

ConVErTiblE TouChSCrEEn iM wErT Von 399 Euro!<br />

Einsendeschluss ist der 15.03.2012<br />

zur Verfügung gestellt von<br />

www.1edu.de


Security<br />

Apachebench<br />

© Andrii IURLOV, 123RF<br />

Das Apache-Benchmark-Tool legt Server lahm<br />

Abwehrverhalten<br />

Das verbreitete Benchmarking-Tool Apachebench kann effiziente Denial-of-Server-Attacken starten, wenn man<br />

sich nicht dagegen schützt. Chris Binnie<br />

Sie haben also viel Sorgfalt auf die Auswahl<br />

der neuen Hardware für den Webserver<br />

verwendet. Und Sie haben sich alle<br />

Mühe gegeben, die Datenbank zu tunen<br />

und zusammen mit Ihren Kollegen einige<br />

Wochen damit verbracht, eine brandneue,<br />

topaktuelle Website, basierend auf<br />

den leistungsfähigsten Technologien an<br />

den Start zu bringen. Jetzt wollen Sie<br />

sich zurücklehnen und einfach nur zuschauen,<br />

wie Tausende von Besuchern<br />

täglich von Ihrem neuen Webangebot Gebrauch<br />

machen. Sogar der Chef scheint<br />

ausnahmsweise einmal zufrieden.<br />

Doch dann nimmt das Schicksal seinen<br />

Lauf: Eines schönen Tages startet<br />

in irgendeinem fremden Land jemand<br />

mit zu viel Zeit ein völlig legitimes und<br />

weitverbreitetes Tool und zwingt Ihren<br />

schönen Server damit in die Knie.<br />

Dazu braucht er noch nicht einmal eine<br />

schnelle Internet-Anbindung, er schickt<br />

einfach nur ein paar Bytes über eine<br />

kleine DSL-Leitung.<br />

Listing 1: IPTables-Regeln<br />

Diese Bedrohung ist sehr real. Selbst eine<br />

durchdachte, leistungsfähige Infrastruktur<br />

kann mit einem einfachen Angriff<br />

lahmgelegt werden.<br />

Benchmarks<br />

Das Angriffs-Tool, um das es hier geht,<br />

ist das für einen guten Zweck entwickelte<br />

Apache-Benchmarking-Programm »ab«<br />

(Apachebench) [1]. Wie die Apache-Dokumentation<br />

es ausdrückt, ist Apachebench<br />

dafür entworfen worden, sich<br />

einen Eindruck davon zu verschaffen,<br />

wie schnell die eigene Apache-Installation<br />

arbeitet. Insbesondere soll es verraten,<br />

wie viele Requests pro Sekunde der<br />

Webserver verarbeiten kann.<br />

Das klingt sehr unschuldig, verschafft<br />

aber jedem Tunichtgut die Gelegenheit,<br />

mit etwas Cut-und-Paste großen Schaden<br />

anzurichten. Normalerweise ist es auf<br />

jeder Linux-Distribution verfügbar und<br />

erfordert außerdem keine Root-Rechte.<br />

Abbildung 1 zeigt Apachebench beim<br />

Einsatz, wie es gerade 2500 Anfragen bei<br />

einer Rate von 300 gleichzeitigen Verbindungen<br />

verarbeitet – mehr als genug, um<br />

die meisten Webserver-Installationen auf<br />

einem einzigen Server in Schwierigkeiten<br />

zu bringen.<br />

Jeder, der den Apache-Server näher<br />

kennt, weiß um die Vielzahl an Konfigurationsoptionen<br />

und Module, die er<br />

unterstützt. Zweifellos gehört die Flexibilität,<br />

mit der sich ein solcher modularer<br />

Server einrichten lässt, zu den Gründen,<br />

warum Apache so populär ist. Mit<br />

Apache bench verhält es sich ähnlich: Es<br />

besitzt mehr als 20 Schalter, über die der<br />

Anwender genau bestimmen kann, wie<br />

es seine Performance-Tests absolviert.<br />

Die Ergebnisse eines solchen Durchlaufs<br />

sind in Abbildung 2 zu sehen.<br />

In der unteren Hälfte ist der Abschnitt<br />

»Percentage of the requests served within<br />

a certain time (ms)« zu sehen, dem sich<br />

entnehmen lässt, ob der Webserver im<br />

01 iptables ‐A INPUT ‐p tcp ‐m multiport ‐‐dport 80,443 ‐m state ‐‐state NEW ‐m limit ‐‐limit 100/minute ‐‐limit‐burst 300 ‐j ACCEPT<br />

02 iptables ‐A INPUT ‐p tcp ‐m multiport ‐‐dport 80,443 ‐m state ‐‐state NEW ‐m limit ‐‐limit 100/minute ‐‐limit‐burst 300 ‐j LOG ‐‐log‐level info<br />

‐‐log‐prefix NEW‐CONNECTION‐DROP:<br />

03 iptables ‐A INPUT ‐p tcp ‐m multiport ‐‐dport 80,443 ‐m state ‐‐state RELATED,ESTABLISHED ‐m limit ‐‐limit 100/second ‐‐limit‐burst 100 ‐j ACCEPT<br />

04 iptables ‐A INPUT ‐p tcp ‐m multiport ‐‐dport 80,443 ‐m state ‐‐state RELATED,ESTABLISHED ‐m limit ‐‐limit 100/second ‐‐limit‐burst 100 ‐j LOG<br />

‐‐log‐level info ‐‐log‐prefix ESTABLISHED‐CONNECTION‐DROP:<br />

05 iptables ‐A INPUT ‐p tcp ‐m multiport ‐‐dport 80,443 ‐j DROP<br />

94 Ausgabe 01-2012 Admin www.admin-magazin.de


Apachebench<br />

Security<br />

G Abbildung 1: Apachebench auf der Kommandozeile.<br />

E Abbildung 2: Ergebnisse eines Apachebench-Durchlaufs.<br />

Lauf der Testzeit langsamer wird. Die<br />

Tabelle zeigt die Länge der Requests in<br />

Millisekunden und welcher Anteil an<br />

Gesamt-Requests in diesem Intervall abgearbeitet<br />

wurde.<br />

Gegenmaßnahme<br />

Statt Zehntausende von Euro in eine Lösung<br />

zu investieren, die Sicherheit gegen<br />

Denial-of-Service-Angriffe verschafft,<br />

können Sie auch eine selbst gestrickte<br />

Lösung versuchen, die in den meisten<br />

Fällen ausreichend ist. Sie erfordert nur<br />

einen Linux-Rechner, auf der die altbekannte<br />

Firewall-Software IPTables läuft.<br />

Mit etwas grundlegenden IPTables-Kenntnissen<br />

lässt sich der Regelsatz in Listing 1<br />

leicht entziffern. Neben dem Standard-<br />

Modul »ip_tables« sind zusätzlich die<br />

Kernel-Module »state« und »multiport«<br />

nötig, die beispielsweise unter Ubuntu<br />

unter den Namen »xt_multiport« und<br />

»xt_state« zur Verfügung stehen. Alternativ<br />

zum hier vorgestellten Weg gibt es<br />

ähnliche Ansätze, die auf dem IPTables-<br />

Modul »recent« basieren.<br />

Die Befehle in Listing 1 berücksichtigen<br />

Flooding-Angriffe gleichermaßen auf Port<br />

80 (HTTP) wie Port 443 (HTTPS) und<br />

neue wie bereits aufgebaute Verbindungen.<br />

Dieser Ansatz bremst einen Angriff<br />

recht effektiv aus. Eine einfachere Lösung<br />

könnte sich ausschließlich auf neue<br />

Verbindungen konzentrieren, wäre aber<br />

eher für Syn-Flodding-Attacken geeignet.<br />

In unserem Fall funktioniert das nicht,<br />

weil der Apache-Server in der Standard-<br />

Konfiguration per Keep-Alive Verbindungen<br />

geöffnet lässt, um darüber mehrere<br />

Anfragen zu verarbeiten. Also muss man<br />

auch bereits geöffnete Verbindungen berücksichtigen.<br />

Beim Testen kann man einen Einblick<br />

in das Verhältnis neuer zu bereits geöffneten<br />

Verbindungen und den damit verbundenen<br />

Traffic-Beschränkungen durch<br />

die Firewall-Regeln gewinnen, wenn man<br />

das Syslog im Auge<br />

behält. Grundsätzlich<br />

ist der Sinn<br />

dieser Regeln,<br />

Angreifer auszubremsen,<br />

die ein<br />

bestimmtes Muster<br />

verfolgen, aber<br />

regulären Website-<br />

Besuchern weiterhin die Nutzung der Site<br />

zu erlauben. Im Test hat das gut funktioniert,<br />

auch wenn der Server letztlich<br />

etwas langsamer wurde.<br />

In der ersten Zeile von Listing 1 findet<br />

sich die Option »‐‐limit 100/minute«, die<br />

festlegt, dass die Firewall alle Pakete eines<br />

Rechners verwirft, der auf den Ports<br />

80 und 443 Anfragen mit mehr als 100<br />

Paketen pro Minute stellt. Die Option<br />

»‐‐limit‐burst« ist etwas schwieriger zu<br />

verstehen. Im Prinzip sind erst einmal<br />

300 Pakete erlaubt, bevor das eben beschriebene<br />

Limit von 100 Paketen/​min<br />

zum Tragen kommt. Die Idee dahinter ist,<br />

dass bei legitimer Nutzung der Website,<br />

sich zu Beginn ein höheres Datenaufkommen<br />

ergibt.<br />

Bei Experimenten mit den Werten für die<br />

beiden Limits zeigte sich, dass man recht<br />

leicht viel zu viel Traffic ausschließt.<br />

Auch die im Beispiel von Listing 1 abgedruckten<br />

Werte können für Ihre Webserver-Konfiguration<br />

noch zu restriktiv sein.<br />

Sie sollten also damit experimentieren<br />

und sie gegebenenfalls erhöhen.<br />

Denial of Service<br />

Ein anderer verbreiteter Angriff lässt sich<br />

mit den hier beschriebenen Firewall-<br />

Regeln nicht verhindern. Ähnlich wie<br />

der Angriff mit Apachebench, kann ein<br />

Angreifer auch mit dem Tool Slowloris<br />

[2] mit minimalen Mitteln einen Webserver<br />

lahmlegen. Interessant dabei ist,<br />

dass Slowloris nicht die üblichen Methoden<br />

einer Denial-of-Service-Attacke<br />

verwendet und möglichst viele Ressour-<br />

cen verbraucht. Es setzt vielmehr auf<br />

wenige, langsame Verbindungen, um den<br />

Apache-Server lahmzulegen. Mehr über<br />

Slowloris und passende Gegenmaßnahmen<br />

verrät ein frei verfügbarer Artikel in<br />

<strong>ADMIN</strong> 04/​2010 [3]. (ofr)<br />

n<br />

Infos<br />

[1] Apache HTTP server benchmarking tool:<br />

[http:// httpd. apache. org/ docs/ 2. 0/​<br />

programs/ ab. html]<br />

[2] Ha.ckers.org website:<br />

[http:// ha. ckers. org/ slowloris]<br />

[3] Kurt Seifried, Die Entdeckung der Langsamkeit,<br />

[http:// www. admin‐magazin. de/​<br />

Das‐Heft/ 2010/ 04/ Apache‐gegen‐Denialof‐Service‐Attacken‐wappnen]<br />

OpenSource Training Ralf Spenneberg<br />

Schulungen direkt vom Autor<br />

Linux Netzwerk Administration / LPIC­2<br />

5 Tage 30.01. ­ 03.02.2012<br />

IPv6 mit Linux<br />

3 Tage 06.02. ­ 08.02.2012<br />

Virtualisierung mit XEN<br />

3 Tage 13.02. ­ 15.02.2012<br />

Apache 2.x Webserver Administration<br />

4 Tage 21.02. ­ 24.02.2012<br />

Virtualisierung mit KVM<br />

3 Tage 22.02. ­ 24.02.2012<br />

Sichere Mailserver Lösungen mit Postfix<br />

5 Tage 05.03. ­ 09.03.2012<br />

Snort IDS/IPS Technology<br />

4 Tage 06.03. ­ 09.03.2012<br />

Firewall Lösungen mit Linux<br />

5 Tage 12.03. ­ 16.03.2012<br />

Advanced <strong>Monitoring</strong><br />

4 Tage 19.03. ­ 22.03.2012<br />

Freie Distributionswahl:<br />

Opensuse, Fedora, Debian Squeeze,<br />

CentOS oder Ubuntu LTS<br />

Ergonomische Arbeitsplätze<br />

Umfangreiche Schulungsunterlagen mit<br />

Übungen<br />

Am Bahnhof 3­5<br />

48565 Steinfurt<br />

Tel.: 02552 638755<br />

Fax: 02552 638757<br />

Weitere Informationen unter www.os­t.de<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

95


Know-how<br />

Eigene OCF-Agenten<br />

© Kirill Kurashov, 123RF<br />

HA-Serie, Teil 8: OCF-Agenten selbst programmieren<br />

Agentenausbildung<br />

Wer die Fähigkeiten von Pacemaker und besonders die <strong>Monitoring</strong>-Funktion bestmöglich ausnutzen möchte,<br />

setzt auf Resource Agents nach OCF-Standard. Gibt es für ein bestimmtes Programm noch keinen, heißt es Hand<br />

anlegen. von Martin Loschwitz<br />

In den bisherigen Artikeln der HA-Serie<br />

spielten die Resource Agents eine eher<br />

untergeordnete Rolle, sie waren im Wesentlichen<br />

Erfüllungsgehilfen. Die unscheinbare<br />

Schicht der Agents im Cluster-<br />

Stack ist in Wirklichkeit aber von großer<br />

Bedeutung für die Funktionalität des<br />

gesamten Clusters. Denn nur wenn die<br />

Resource Agents gut funktionieren, kann<br />

der Cluster seine Aufgabe perfekt wahrnehmen.<br />

Deshalb sind qualitativ hochwertige<br />

Resource Agents wichtig. Wenn<br />

für ein bestimmtes Programm ein guter<br />

Agent fehlt, dann kann es sich für den<br />

Admin des Clusters durchaus lohnen,<br />

selbst einen OCF-kompatiblen Agent aus<br />

der Taufe zu heben. Das erspart ihm in<br />

Zukunft wahrscheinlich viel Ärger, denn<br />

nicht standardkonforme Init-Skripte,<br />

die sich in Pacemaker ja als LSB-Klasse<br />

verwenden lassen, bringen den Cluster<br />

schnell aus dem Tritt.<br />

Wer schon mal in der Nacht einen Samba-<br />

Cluster repariert hat, weil das Samba-Init-<br />

Skript, das Debian liefert, das »monitor«-<br />

Target nicht ordentlich unterstützt, kann<br />

hiervon ein Lied singen.<br />

Wo Resource Agents<br />

ansetzen<br />

Der Linux-Cluster-Stack besteht aus<br />

mehreren Komponenten – Corosync oder<br />

Heartbeat übernehmen die Cluster-Kommunikation,<br />

Pacemaker kümmert sich<br />

um die Cluster-Dienste (im Fachjargon<br />

„Ressourcen“) und die Storage-Komponente<br />

ist in der Mehrzahl der Fälle DRBD.<br />

Die Ressourcen-Schicht, also Pacemaker,<br />

besteht intern aus mehreren einzelnen<br />

Teilen, die ineinandergreifen, um den<br />

Cluster bestmöglich zu steuern (Abbildung<br />

1). Pacemaker selbst ist der »crmd«,<br />

der clusterweite Resource Manager, der<br />

sicherstellt, dass insgesamt alle konfigurierten<br />

Dienste wie gewünscht gestartet<br />

sind. Er läuft auf jedem System, genauso<br />

wie der » lrmd«, der »Local Resource Management<br />

Daemon«. Der »lrmd« kommt<br />

aus dem »cluster‐glue«-Paket, dessen Installation<br />

Voraussetzung für Pacemaker<br />

ist. Er nimmt Befehle von »crmd« entgegen<br />

und setzt sie adäquat um. Auch<br />

der »lrmd« startet selbst allerdings keine<br />

Programme – an dieser Stelle kommen<br />

die Resource Agents ins Spiel, denn diese<br />

ruft der »lrmd« auf, wenn ein Dienst auf<br />

Abbildung 1: Deutlich zu erkennen sind die Prozesse »crmd« und »lrmd«, die ineinandergreifen, um<br />

Ressourcen zu starten und zu stoppen.<br />

96 Ausgabe 01-2012 Admin www.admin-magazin.de


Eigene OCF-Agenten<br />

Know-how<br />

einem Cluster-Knoten in Bewegung zu<br />

setzen ist.<br />

Resource Agents kommen üblicherweise<br />

aus drei verschiedenen Kategorien oder<br />

Klassen: LSB Agents sind Init-Skripte und<br />

liegen im Ordner »/etc/​init.d«. Heartbeat<br />

Agents sind für den nunmehr veralteten<br />

Heartbeat 1 gedacht und gelten als deprecated.<br />

Die dritte und höchste Klasse<br />

sind die OCF Resource Agents. Sie folgen<br />

dem »Open Cluster Framework«-Standard,<br />

der spezifisch erfunden wurde, um<br />

qualitativ besonders hochwertige Agents<br />

zu ermöglichen. Wer in der Cluster-Welt<br />

etwas auf sich hält, verwendet diese<br />

Agent-Klasse bevorzugt.<br />

Die Vorteile von OCF<br />

Welche Vorteile bietet der OCF-Standard<br />

genau? Zunächst haben Admins dank der<br />

OCF-Spezifikation die Möglichkeit, Konfigurationsparameter<br />

einer Ressource direkt<br />

in der CRM-Konfiguration von Pacemaker<br />

festzulegen. Pacemaker gibt die<br />

Parameter unverändert an den Resource<br />

Agent weiter, der die Informationen dann<br />

in Befehle umsetzt. Ein klassisches Beispiel<br />

ist der Resource Agent, der sich<br />

um Cluster-IP-Adressen kümmert, also<br />

»ocf:heartbeat:IPaddr2«. Er bekommt per<br />

CRM-Konfiguration stets den Parameter<br />

»ip« mit auf den Weg und weiß so, welche<br />

IP die Cluster-IP ist. Ähnlich funktioniert<br />

der Filesystem-Agent, der aus der<br />

CRM-Konfiguration sämtliche Informationen<br />

bezieht, die er braucht, um ein Dateisystem<br />

zu mounten. Konfigurationsparameter<br />

funktionieren nur bei OCF-Agents,<br />

LSB-Skripte und Heartbeat Agents unterstützen<br />

das Feature nicht. Bei ihnen lassen<br />

sich zwar auch Parameter-Zeilen in<br />

der CRM-Shell eintragen, diese ignoriert<br />

Pacemaker aber vollständig.<br />

Der zweite große Vorteil der OCF-Agents<br />

besteht darin, dass sie unabhängig von<br />

der Distribution funktionieren, auf der<br />

sie eingesetzt werden. Dadurch ist es<br />

problemlos möglich, eine Cluster-Konfiguration<br />

ohne Änderung von einem<br />

Debian-System auf ein SLES-System<br />

zu übernehmen. Man kann sogar den<br />

Resource Agent als File auf den anderen<br />

Rechner kopieren und dort laufen lassen<br />

– wenn er dem OCF-Standard folgt, wird<br />

er hüben wie drüben klaglos funktionieren.<br />

Die Interoperabilität erstreckt sich<br />

über alle Details, die zu beachten sind.<br />

Auch sollten RA-Autoren sich im Klaren<br />

darüber sein, welche Parameter ihr Resource<br />

Agent unterstützen soll. Das hängt<br />

freilich davon ab, welche Optionen die<br />

Software selbst bietet<br />

Um diesen Artikel nicht zum reinen Trockenschwimmen<br />

werden zu lassen, demonstriert<br />

der Text im Folgenden den<br />

Eigenbau eines OCF Resource Agent für<br />

»asterisk«, den der Autor vor einigen Wochen<br />

in Zusammenarbeit mit mehreren<br />

anderen Entwicklern veröffentlicht hat.<br />

Asterisk eignet sich auf der einen Seite<br />

sehr gut, um die grundsätzliche Implementierung<br />

eines OCF-RAs zu diskutieren,<br />

andererseits lassen sich am Beispiel<br />

Asterisk aber auch sehr gut Ausnahmen<br />

demonstrieren, die applikationsspezifisch<br />

sind. In der einen oder anderen Art wird<br />

fast jede Applikation spezifische Eigenheiten<br />

aufweisen, die sich auch im OCF-<br />

RA wiederfinden.<br />

Anhaltspunkte dafür, welche Optionen<br />

die Aufnahme in den RA wert sind, geben<br />

beispielsweise die »default«-Files<br />

in Debian, die üblicherweise in »/etc/<br />

default/« liegen (Abbildung 2) und nach<br />

dem Programm benannt sind, für das<br />

sie sinnvolle Standardeinstellungen enthalten.<br />

Im Beispiel von Asterisk findet<br />

sich hier zum Beispiel die Festlegung, als<br />

welcher Benutzer und mit welchen Rechten<br />

Asterisk laufen soll oder wie viele<br />

Files Asterisk gleichzeitig öffnen darf.<br />

Debian verwertet diese Einstellungen im<br />

Asterisk-Init-Skript, und auch im OCFübrigens<br />

auch auf Nicht-Linux-Systeme:<br />

Theoretisch soll der Cluster-Stack auch auf<br />

den üblichen BSD-Derivaten funktionieren.<br />

Allerdings dürfte das bisher nur sehr<br />

rudimentär in der Praxis getestet worden<br />

sein. Prinzipiell gilt aber, dass ein Agent<br />

überall dort funktioniert, wo der Cluster-<br />

Stack ebenfalls funktioniert.Nicht zuletzt<br />

trifft der OCF-Standard auch detaillierte<br />

Aussagen darüber, welchen Rückgabewert<br />

ein Agent in Abhängigkeit bestimmter Ereignisse<br />

an den »lrmd« zu liefern hat. Auf<br />

diese Weise bekommt der Cluster-Admin<br />

schnell einen Überblick über Missstände,<br />

falls im Cluster etwas schiefläuft.<br />

Die Gründe, auf OCF zu setzen, sind also<br />

vielseitig. Umso ärgerlicher ist es, wenn<br />

für eine bestimmte Applikation kein OCF-<br />

Agent vorhanden ist. Ein Grund zum<br />

Verzweifeln ist das aber nicht, denn mit<br />

den dazugehörigen Dokumenten und ein<br />

bisschen Bastelei lässt sich ein qualitativ<br />

hochwertiger Resource Agent nach OCF-<br />

Standard selbst herstellen.<br />

Zur Vorbereitung<br />

Bevor die erste Code-Zeile geschrieben<br />

ist, tun RA-Autoren gut daran, ein paar<br />

Details abzuklären. Stets griffbereit sollte<br />

einerseits der OCF-Standard sein, der im<br />

Netz unter [1] zu finden ist. Nützlich ist<br />

im Zusammenhang damit auch der »OCF<br />

Resource Agent Developer's Guide« in<br />

der aktuellen Version 1.0.2 [2], der aus<br />

der Feder von Florian Haas stammt. Er<br />

bietet in kürzester Zeit einen Überblick<br />

Abbildung 2: Auf Debian-Systemen geben die Default-Files Auskunft darüber, welche Parameter ein Resource<br />

Agent sinnvollerweise unterstützt.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

97


Know-how<br />

Eigene OCF-Agenten<br />

Agent lassen sie sich als Parameter implementieren.<br />

Ein anderer Anhaltspunkt für<br />

Parameter ist üblicherweise der Aufruf<br />

eines Programms mit »‐‐help«. Aus der<br />

Liste der Parameter, die das Binary selbst<br />

unterstützt, gewinnen Autoren von OCF-<br />

Agents einen Überblick über die unterstützten<br />

Konfigurationswerte.<br />

Im Beispiel ergeben sich die folgenden<br />

Parameter, die der Resource Agent für<br />

Asterisk unterstützen soll:<br />

n »binary« legt fest, wo das eigentliche<br />

Asterisk-Binary liegt.<br />

n »canary_binary« bestimmt den Ort des<br />

»astcanary «-Binaries und<br />

n »config« die Stelle, an der »asterisk.<br />

conf« liegt.<br />

n »user« und »group« wirken wie oben<br />

beschrieben.<br />

n »additional_parameters« ermöglicht<br />

es, weitere Parameter händisch festzulegen,<br />

mit denen das Asterisk-Binary<br />

aufgerufen werden soll.<br />

n »realtime« regelt, ob Asterisk im Realtime-Modus<br />

laufen soll oder nicht.<br />

n »maxfiles« beschränkt die Telefonanlage<br />

hinsichtlich der Files, die<br />

diese gleichzeitig maximal geöffnet<br />

haben darf.<br />

Der Header des Resource<br />

Agents<br />

Damit kann es losgehen: Die erste Zeile<br />

des OCF Resource Agents ist dieselbe wie<br />

bei allen anderen Shellskripten auch –<br />

das Shebang. Es folgt eine allgemeine Beschreibung<br />

des Resource Agents und ein<br />

Copyright-Vermerk, danach sollte auch<br />

eine Liste der Parameter vorhanden sein,<br />

die dieser RA unterstützt, damit sie auf<br />

einen Blick ersichtlich sind. Der Header<br />

folgt dabei keiner spezifischen Syntax,<br />

für den Asterisk Agent könnte er also so<br />

aussehen wie in Listing 1.<br />

Im nächsten Schritt folgt die Initialisierung<br />

aller OCF-spezifischen Funktionen.<br />

Das geht so:<br />

: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/libU<br />

/heartbeat}<br />

. ${OCF_FUNCTIONS_DIR}/ocf‐shellfuncs<br />

Die Variable »OCF_ROOT«, auf die an<br />

dieser Stelle verwiesen ist, ist in der Pacemaker-Umgebung,<br />

in der das Skript später<br />

läuft, bereits gesetzt. Ab sofort stehen<br />

dem Agent sämtliche OCF-Funktionen<br />

zur Verfügung.<br />

Default-Werte für<br />

Konfigurationsparameter<br />

Jeden Parameter, der in einem OCF Resource<br />

Agent festzulegen ist, kann das<br />

Script selbst anschließend mit dem Präfix<br />

»OCF_RESKEY_« abrufen. Im Header<br />

des Agents findet sich darauf bereits ein<br />

Hinweis – um den Inhalt des Parameters<br />

»binary« abzurufen, genügt der Verweis<br />

auf die Variable »OCF_RESKEY_binary«.<br />

Ein guter Resource Agent setzt für die<br />

vorgegebenen Parameter Default-Werte,<br />

wo dies sinnvoll ist. Der zweite Teil<br />

des Agents sieht daher so aus, wie in<br />

Listing 2.<br />

Der auf den ersten Blick etwas umständliche<br />

Weg, zunächst eine Variable mit<br />

dem Namen »OCF_RESKEY_name_<br />

default« zu definieren, ist wohlüberlegt:<br />

Auf diese Weise findet sich in der<br />

Variable nämlich stets der vorgegebene<br />

Listing 1: Der Header des Resource Agents<br />

01 #!/bin/sh<br />

02 #<br />

03 #<br />

04 # Asterisk<br />

05 #<br />

06 # Description: Manages an Asterisk PBX as an HA resource<br />

07 #<br />

08 # Authors: Martin Gerhard Loschwitz<br />

09 # Florian Haas<br />

10 #<br />

11 # Support: linux‐ha@lists.linux‐ha.org<br />

12 # License: GNU General Public License (GPL)<br />

13 #<br />

14 # (c) 2011 hastexo Professional Services GmbH<br />

15 #<br />

16 # This resource agent is losely derived from the MySQL resource<br />

17 # agent, which itself is made available to the public under the<br />

18 # following copyright:<br />

19 #<br />

20 # (c) 2002‐2005 International Business Machines, Inc.<br />

21 # 2005‐2010 Linux‐HA contributors<br />

22 #<br />

23 # See usage() function below for more details ...<br />

24 #<br />

25 # OCF instance parameters:<br />

26 # OCF_RESKEY_binary<br />

27 # OCF_RESKEY_canary_binary<br />

28 # OCF_RESKEY_config<br />

29 # OCF_RESKEY_user<br />

30 # OCF_RESKEY_group<br />

31 # OCF_RESKEY_additional_parameters<br />

32 # OCF_RESKEY_realtime<br />

33 # OCF_RESKEY_maxfiles<br />

34 # OCF_RESKEY_monitor_sipuri<br />

35 #######################################################################<br />

Listing 2: Default-Werte für Parameter<br />

01 OCF_RESKEY_user_default="asterisk"<br />

02 OCF_RESKEY_group_default="asterisk"<br />

03 OCF_RESKEY_binary_default="asterisk"<br />

04 OCF_RESKEY_canary_binary_default="astcanary"<br />

05 OCF_RESKEY_config_default="/etc/asterisk/asterisk.conf"<br />

06 OCF_RESKEY_additional_parameters_default="‐g ‐vvv"<br />

07 OCF_RESKEY_realtime_default="false"<br />

08 OCF_RESKEY_maxfiles_default="8192"<br />

09 : ${OCF_RESKEY_binary=${OCF_RESKEY_binary_default}}<br />

10 : ${OCF_RESKEY_canary_binary=${OCF_RESKEY_canary_binary_default}}<br />

11 : ${OCF_RESKEY_config=${OCF_RESKEY_config_default}}<br />

12 : ${OCF_RESKEY_user=${OCF_RESKEY_user_default}}<br />

13 : ${OCF_RESKEY_group=${OCF_RESKEY_group_default}}<br />

14 : ${OCF_RESKEY_additional_parameters=${OCF_RESKEY_additional_parameters_<br />

default}}<br />

15 : ${OCF_RESKEY_realtime=${OCF_RESKEY_realtime_default}}<br />

16 : ${OCF_RESKEY_maxfiles=${OCF_RESKEY_maxfiles_default}}<br />

98 Ausgabe 01-2012 Admin www.admin-magazin.de


Eigene OCF-Agenten<br />

Know-how<br />

Standard-Wert, sodass er später in den<br />

RA-Metadaten wiederverwendbar ist.<br />

Wenn an dieser Stelle gleich die eigentliche<br />

Variable auf einen bestimmten Wert<br />

festgelegt würde, so ginge der Standard-<br />

Wert verloren, sobald ein Admin einen<br />

Wert vorgibt.<br />

Die Usage-Funktion<br />

Die Usage-Funktion gibt Auskunft darüber,<br />

welche Parameter der Agent<br />

denn beim Aufruf unterstützt. Sie ist im<br />

OCF-Standard als »Optional« erwähnt,<br />

gehört aber zum guten Ton. Listing 3<br />

zeigt eine Usage-Funktion, wie der hier<br />

geschaffene Asterisk OCF-Agent sie verwenden<br />

könnte. Wichtig ist, dass auch<br />

wirklich nur die Targets Erwähnung finden,<br />

die der Agent unterstützt. Also mindestens<br />

»start«, »stop«, »monitor« und<br />

»meta‐data«.<br />

Die Meta-Daten des<br />

Resource Agents<br />

An dieser Stelle wird es zum ersten Mal<br />

wirklich haarig: Der Resource Agent muss<br />

das Target »meta‐data« unterstützen – die<br />

Ausgabe des Targets nutzt Pacemaker, um<br />

herauszufinden, welche Parameter der<br />

Resource Agent unterstützt und welche<br />

Operationen er ermöglicht (Abbildung<br />

3). Letztlich tut der Meta-Data-Befehl<br />

kaum etwas anderes als die »usage«-<br />

Funktion, nämlich Text ausgeben. Allerdings<br />

kommt es bei »meta‐data« darauf<br />

an, dass der ausgegebene Text einer Syntax<br />

auf XML-Basis entspricht (Abbildung<br />

3). Eingeleitet wird die Ausgabe von diesen<br />

Zeilen:<br />

<br />

<br />

<br />

1.0<br />

Dann folgt eine Beschreibung des Resource<br />

Agents, eingerahmt vom XML-<br />

Tag »« und eine<br />

Kurzbeschreibung, die von »« umrahmt ist – beide Tags<br />

sind freilich am Ende wieder mittels »« oder »« zu<br />

schließen. »« leitet den<br />

Abschnitt ein, in dem für jeden einzelnen<br />

Parameter Name und Typ sowie eine<br />

Lang- und eine Kurzbeschreibung fest-<br />

Abbildung 3: Die Information, die »crm ra info ocf:heartbeat:pacemaker« auf den Bildschirm holt, entspringt<br />

der »meta‐data«-Funktion des Agents.<br />

Die Werte legen die Default-Timeouts<br />

fest, nach denen Pacemaker einen Fehler<br />

melden soll, und für die Monitor-Operation<br />

auch das Standard-Intervall. Alle<br />

Werte lassen sich in der CRM-Shell später<br />

überschreiben.<br />

Der Eintrag »« zeigt<br />

Pacemaker an, dass die Meta-Daten des<br />

Agents damit vollständig ausgegeben<br />

sind. Ein syntaktisch korrektes jedoch<br />

unvollständiges Beispiel für eine stangelegt<br />

werden. Ein Beispiel, um den Parameter<br />

namens »binary« zu definieren,<br />

wäre das in Listing 4.<br />

Der Parameter »name« bestimmt den<br />

Namen des Parameters und »required«<br />

legt fest, ob der Parameter vom Admin<br />

angegeben werden muss. Im »content«-<br />

Bereich legt »type« fest, um welche Art<br />

von Wert es sich handelt. Mögliche Typen<br />

sind neben »string« auch »integer« und<br />

»boolean«.<br />

Im Asterisk-Beispiel wäre »maxfiles«<br />

ein Wert des Typs »integer« und »realtime«<br />

ein Wert des Typs »boolean«. Ist<br />

für jeden Parameter ein entsprechender<br />

Eintrag vorhanden ist, schließt »«<br />

die Parameter-Liste. Dann folgt<br />

noch eine Übersicht über die Operationen,<br />

die der Agent beherrscht:<br />

Listing 3: Die Usage-Funktion<br />

01 usage() {<br />

02 cat


Know-how<br />

Eigene OCF-Agenten<br />

dardkonforme »meta‐data«-Funktion des<br />

Asterisk-RAs findet sich im Listing 5.<br />

Einen Fallstrick gibt es noch: In den Beschreibungen<br />

der Parameter muss man<br />

&lt; und &gt; anstelle der Zeichen „“ verwenden, schließlich handelt<br />

es sich um XML-Syntax.<br />

Die Validate-Funktion<br />

Listing 4: Die Meta-Daten des »binary«-Parameters<br />

01 <br />

02 <br />

03 Location of the Asterisk PBX server binary<br />

04 <br />

Jeder Resource Agent nach OCF-Standard<br />

braucht eine Validate-Funktion. Im vorliegenden<br />

Beispiel muss sie herausfinden,<br />

ob Asterisk mit der angegebenen<br />

Konfiguration überhaupt zu starten ist.<br />

Die Funktion überprüft beispielsweise,<br />

ob die per Parameter festgelegte Konfigurationsdatei<br />

existiert und ob es den<br />

Benutzer und die Gruppe, mit deren<br />

Rechten Asterisk laufen soll, auf dem<br />

lokalen System gibt. Der Resource Agent<br />

muss auch sicherstellen, dass er selbst<br />

funktionieren kann. Nutzt der Resource<br />

Agent Binaries, deren Existenz nicht auf<br />

jedem System vorauszusetzen ist, so hat<br />

er bereits in der Validate-Funktion zu<br />

05 Asterisk PBX server<br />

binary<br />

06 <br />

07 <br />

testen, ob diese Binaries vorhanden sind<br />

– und muss gegebenenfalls mit einem<br />

Fehler den Dienst quittieren. Das Listing<br />

6 enthält eine Validate-Funktion, wie sie<br />

für Asterisk funktioniert – bis auf den<br />

Teil mit »sipuri« ist diese Funktion allerdings<br />

sehr generisch, sodass sie sich<br />

so ähnlich für nahezu jedes Programm<br />

verwenden ließe.<br />

Monitor- und Status-<br />

Operation<br />

Eines der sehr angenehmen Features<br />

von Pacemaker ist die Möglichkeit, eine<br />

Ressource im Hinblick auf ihren Status<br />

zu untersuchen; das geschieht mittels<br />

der »Monitor«-Operation. Der Resource<br />

Agent muss, wenn Pacemaker ihn mit<br />

dem »monitor«-Target aufruft, überprü-<br />

Listing 5: Die Meta-Data-Funktion<br />

01 meta_data() {<br />

02 cat &1<br />

17 rc=$?<br />

18 if [ $rc ‐ne 0 ]; then<br />

19 ocf_log err "User $OCF_RESKEY_user doesn't exist"<br />

20 return $OCF_ERR_INSTALLED<br />

21 fi<br />

22 <br />

23 getent group $OCF_RESKEY_group >/dev/null 2>&1<br />

24 rc=$?<br />

25 if [ $rc ‐ne 0 ]; then<br />

26 ocf_log err "Group $OCF_RESKEY_group doesn't exist"<br />

27 return $OCF_ERR_INSTALLED<br />

28 fi<br />

29 <br />

30 true<br />

31 }<br />

100 Ausgabe 01-2012 Admin www.admin-magazin.de


Know-how<br />

Eigene OCF-Agenten<br />

dardkonforme »meta‐data«-Funktion des<br />

Asterisk-RAs findet sich im Listing 5.<br />

Einen Fallstrick gibt es noch: In den Beschreibungen<br />

der Parameter muss man<br />

&lt; und &gt; anstelle der Zeichen „“ verwenden, schließlich handelt<br />

es sich um XML-Syntax.<br />

Die Validate-Funktion<br />

Listing 4: Die Meta-Daten des »binary«-Parameters<br />

01 <br />

02 <br />

03 Location of the Asterisk PBX server binary<br />

04 <br />

Jeder Resource Agent nach OCF-Standard<br />

braucht eine Validate-Funktion. Im vorliegenden<br />

Beispiel muss sie herausfinden,<br />

ob Asterisk mit der angegebenen<br />

Konfiguration überhaupt zu starten ist.<br />

Die Funktion überprüft beispielsweise,<br />

ob die per Parameter festgelegte Konfigurationsdatei<br />

existiert und ob es den<br />

Benutzer und die Gruppe, mit deren<br />

Rechten Asterisk laufen soll, auf dem<br />

lokalen System gibt. Der Resource Agent<br />

muss auch sicherstellen, dass er selbst<br />

funktionieren kann. Nutzt der Resource<br />

Agent Binaries, deren Existenz nicht auf<br />

jedem System vorauszusetzen ist, so hat<br />

er bereits in der Validate-Funktion zu<br />

05 Asterisk PBX server<br />

binary<br />

06 <br />

07 <br />

testen, ob diese Binaries vorhanden sind<br />

– und muss gegebenenfalls mit einem<br />

Fehler den Dienst quittieren. Das Listing<br />

6 enthält eine Validate-Funktion, wie sie<br />

für Asterisk funktioniert – bis auf den<br />

Teil mit »sipuri« ist diese Funktion allerdings<br />

sehr generisch, sodass sie sich<br />

so ähnlich für nahezu jedes Programm<br />

verwenden ließe.<br />

Monitor- und Status-<br />

Operation<br />

Eines der sehr angenehmen Features<br />

von Pacemaker ist die Möglichkeit, eine<br />

Ressource im Hinblick auf ihren Status<br />

zu untersuchen; das geschieht mittels<br />

der »Monitor«-Operation. Der Resource<br />

Agent muss, wenn Pacemaker ihn mit<br />

dem »monitor«-Target aufruft, überprü‐<br />

Listing 5: Die Meta-Data-Funktion<br />

01 meta_data() {<br />

02 cat &1<br />

17 rc=$?<br />

18 if [ $rc ‐ne 0 ]; then<br />

19 ocf_log err "User $OCF_RESKEY_user doesn't exist"<br />

20 return $OCF_ERR_INSTALLED<br />

21 fi<br />

22 <br />

23 getent group $OCF_RESKEY_group >/dev/null 2>&1<br />

24 rc=$?<br />

25 if [ $rc ‐ne 0 ]; then<br />

26 ocf_log err "Group $OCF_RESKEY_group doesn't exist"<br />

27 return $OCF_ERR_INSTALLED<br />

28 fi<br />

29 <br />

30 true<br />

31 }<br />

100 Ausgabe 01-2012 Admin www.admin-magazin.de


Know-how<br />

Eigene OCF-Agenten<br />

verschwinden – und mögliche Fehlermeldungen<br />

mit ihnen. Wenn ein externes<br />

Programm aufzurufen ist, empfiehlt sich<br />

daher »ocf_run«.<br />

Übrigens: Das Beispiel verwendet die<br />

OCF-Funktion »ocf_is_true«, um den<br />

Wert des Parameters »realtime« über die<br />

Umgebungsvariable »OCF_RESKEY_realtime«<br />

abzufragen. Das hat den Vorteil,<br />

dass Admins in der CRM-Shell sowohl<br />

»realtime=true« als auch »realtime=yes«<br />

eintragen können (und ebenso die entsprechenden<br />

Negativ-Pendants) – die<br />

Funktion »ocf_is_true« erkennt all diese<br />

Parameter und verhält sich entsprechend.<br />

Würde der Agent »OCF_RESKEY_realtime«<br />

direkt per if-Klausel auf einzelne Werte<br />

hin überprüfen, würde das in wesentlich<br />

mehr Code resultieren.<br />

Die Monitor-Operation<br />

Anders als die Status-Operation überprüft<br />

die Monitor-Operation nicht, ob Prozesse<br />

vorhanden sind, sondern ob Asterisk auf<br />

Anfragen von außen reagiert. Für andere<br />

Programme wäre es beispielsweise denkbar,<br />

mittels eines Programms wie »telnet«<br />

oder »openssl s_client« zu testen, ob auf<br />

einem bestimmten Port eine Antwort<br />

kommt. Das Asterisk-Binary hat selbst<br />

einen Client-Modus, der mit »‐c ‐r« aufzurufen<br />

ist. Mithin könnte eine Monitor-<br />

Operation für Asterisk aussehen wie in<br />

Listing 8. Es ist übrigens kein Zufall, dass<br />

Läuft Asterisk nicht, soll der Agent den<br />

Dienst starten. An dieser Stelle spielt<br />

wieder Astcanary eine Rolle: Der wird<br />

von Asterisk selbst gestartet, sodass<br />

der Asterisk Agent sich darum nicht<br />

kümmern muss. Stirbt allerdings eine<br />

Asterisk-Instanz, so stirbt der dazugehörige<br />

Astcanary nicht automatisch mit.<br />

Deshalb muss die »start«-Funktion auch<br />

eventuelle Astcanary-Zombies aus dem<br />

Weg räumen, bevor sie einen neuen<br />

Asterisk starten kann.<br />

Schließlich kommt die Funktion zu ihrer<br />

eigentlichen Aufgabe. Weil Agents<br />

nach dem OCF-Standard nicht distribudie<br />

»asterisk_monitor«-Funktion gleich am<br />

Anfang »asterisk_status« aufruft und mit<br />

einem Fehler abbricht, falls der Rückgabewert<br />

nicht »OCF_SUCCESS« ist. Nach<br />

diesem Prinzip muss der Agent später<br />

nämlich beim Start mit dem »monitor«-<br />

Target nur die »asterisk_monitor«-Funktion<br />

laufen lassen.<br />

Die erwähnte Funktion »asterisk_rx« ist<br />

übrigens eine am Anfang des Agents definierte<br />

Hilfsfunktion, die so aussieht:<br />

asterisk_rx() {<br />

# if $HOME is set, asterisk ‐rx writes U<br />

a .asterisk_history there<br />

(<br />

unset HOME<br />

ocf_run $OCF_RESKEY_binary ‐r ‐s U<br />

$ASTRUNDIR/asterisk.ctl ‐x "$1"<br />

)<br />

}<br />

Die Funktion überprüft zunächst, ob<br />

Asterisk überhaupt läuft (dazu ruft sie<br />

wie erwähnt asterisk_status() auf) und<br />

bringt dann den Asterisk-Client dazu, auf<br />

der Asterisk-Console den Befehl »core<br />

show channels count« zu starten. Falls<br />

der Administrator ein SIP-URL beim<br />

Para meter »sipuri« eingetragen hat, versucht<br />

der Agent im Anschluss, eine SIP-<br />

Verbindung mit »sipsak« zu dieser URL<br />

aufzubauen. Je nach Erfolg der einzelnen<br />

Befehle gibt die Funktion 0 oder eine<br />

Fehlermeldung zurück.<br />

Die Start-Funktion soll freilich in erster<br />

Linie Sorge dafür tragen, dass der<br />

Asterisk-Daemon so läuft, wie es in der<br />

CRM-Konfiguration vorgesehen ist. Sie<br />

muss aber noch mehr leisten: Im OCF-<br />

Standard ist vorgesehen, dass sie in solchen<br />

Fällen, in denen Asterisk bereits<br />

läuft, OCF_SUCCESS zurückgeben muss,<br />

also 0. Es wäre dann ohnehin nicht sinnvoll,<br />

den Daemon nochmal zu starten,<br />

denn das würde höchstwahrscheinlich<br />

in einer Fehlermeldung enden. Ein mächtiges<br />

Werkzeug, um die Funktion von<br />

Asterisk zu testen, ist bereits in Form der<br />

»asterisk_monitor«-Funktion vorhanden<br />

– diese ruft »start« idealerweise auf und<br />

interpretiert deren Rückgabewert entsprechend,<br />

bevor die Funktion irgendetwas<br />

anderes tut.<br />

Die Start-Funktion<br />

Listing 8: Die Monitor-Funktion<br />

01 asterisk_monitor() {<br />

02 local rc<br />

03 <br />

04 asterisk_status<br />

05 rc=$?<br />

06 <br />

07 # If status returned an error, return that immediately<br />

08 if [ $rc ‐ne $OCF_SUCCESS ]; then<br />

09 return $rc<br />

10 fi<br />

11 <br />

12 # Check whether connecting to asterisk is possible<br />

13 asterisk_rx 'core show channels count'<br />

14 rc=$?<br />

15 <br />

16 if [ $rc ‐ne 0 ]; then<br />

17 ocf_log err "Failed to connect to the Asterisk PBX"<br />

18 return $OCF_ERR_GENERIC<br />

19 fi<br />

20 <br />

21 # Optionally check the monitor URI with sipsak<br />

22 # The return values:<br />

23 # 0 means that a 200 was received.<br />

24 # 1 means something else then 1xx or 2xx was received.<br />

25 # 2 will be returned on local errors like non resolvable names<br />

26 # or wrong options combination.<br />

27 # 3 will be returned on remote errors like socket errors<br />

28 # (e.g. icmp error), redirects without a contact header or<br />

29 # simply no answer (timeout).<br />

30 # This can also happen if sipsak is run too early after asterisk<br />

31 # start.<br />

32 if [ ‐n "$OCF_RESKEY_monitor_sipuri" ]; then<br />

33 ocf_run sipsak ‐s "$OCF_RESKEY_monitor_sipuri"<br />

34 rc=$?<br />

35 case "$rc" in<br />

36 1|2) return $OCF_ERR_GENERIC;;<br />

37 3) return $OCF_NOT_RUNNING;;<br />

38 esac<br />

39 fi<br />

40 <br />

41 ocf_log debug "Asterisk PBX monitor succeeded"<br />

42 return $OCF_SUCCESS<br />

43 }<br />

102 Ausgabe 01-2012 Admin www.admin-magazin.de


Eigene OCF-Agenten<br />

Know-how<br />

tionsspezifisch sein dürfen, fallen die<br />

distributionseigenen Werkzeuge wie<br />

»start‐stop‐daemon« auf Debian aus. Der<br />

Agent muss das Asterisk-Binary direkt<br />

aufrufen. Dazu konstruiert er aus den<br />

verschiedenen angegebenen Parametern<br />

einen Asterisk-Aufruf, den er dann mittels<br />

»ocf_run« ausführt. Zuvor stellt er<br />

noch sicher, dass die Ordner, die Asterisk<br />

zum Funktionieren braucht, existieren<br />

und dass der per Parameter festgelegte<br />

Asterisk-Benutzer dort auch tatsächlich<br />

Schreibrechte hat. Direkt nach dem Aufruf<br />

des Binaries überprüft die Start-Funktion<br />

mittels »monitor « nochmals, ob der<br />

Start auch tatsächlich funktioniert hat<br />

Listing 9: Die Start-Funktion<br />

und Asterisk so läuft, wie gewünscht.<br />

Von der Astcanary-Episode abgesehen ist<br />

die verwendete Start-Funktion eine typische,<br />

wie sie mit leichten Anpassungen<br />

auch für viele andere Daemons zum Einsatz<br />

kommen könnte. Die gesamte Start-<br />

Funktion sieht aus, wie in Listing 9.<br />

Die Stop-Funktion<br />

Sinn und Zweck der Stop-Funktion ist<br />

es, sicher zu wissen, dass Asterisk im<br />

Anschluss an den Agent-Aufruf nicht<br />

mehr läuft. Am Anfang der Funktion<br />

steht wiederum ein Aufruf von »monitor«,<br />

der »OCF_SUCCESS« zurückgibt,<br />

wenn Asterisk bereits abgeschaltet ist.<br />

Danach kommt ein viergliedriges Schema<br />

zum Einsatz: Erst bekommt Asterisk<br />

mittels »core stop now«-Befehl über die<br />

Asterisk-Shell den Befehl zum Beenden.<br />

Das sollte im Normalfall reichen. Tut es<br />

das nicht, folgt ein Kill mit »SIGTERM«.<br />

Sollte dieser Befehl nicht den Rückgabewert<br />

0 liefern, so bedeutet das, dass<br />

der Kill-Befehl gar nicht erst seine Arbeit<br />

verrichten konnte und der Daemon das<br />

Signal nie erhalten hat; der Agent steigt<br />

an dieser Stelle mit »OCF_ERR_GENE-<br />

RIC« aus, denn es ist wahrscheinlich,<br />

dass das System in gröberen Schwierigkeiten<br />

steckt. Wenn »kill ‐s TERM« keine<br />

01 asterisk_start() {<br />

02 local asterisk_extra_params<br />

03 local dir<br />

04 local rc<br />

05 <br />

06 asterisk_status<br />

07 rc=$?<br />

08 if [ $rc ‐eq $OCF_SUCCESS ]; then<br />

09 ocf_log info "Asterisk PBX already running"<br />

10 return $OCF_SUCCESS<br />

11 fi<br />

12 <br />

13 # If Asterisk is not already running, make sure there is no<br />

14 # old astcanary instance when the new asterisk starts. To<br />

15 # achieve this, kill old astcanary instances belonging to<br />

16 # this $ASTRUNDIR.<br />

17 <br />

18 # Find out PIDs of running astcanaries<br />

19 astcanary_pid=`pgrep ‐d " " ‐f "astcanary $ASTRUNDIR/alt.asterisk.<br />

canary.tweet.tweet.tweet"`<br />

20 <br />

21 # If there are astcanaries running that belong to $ASTRUNDIR,<br />

22 # kill them.<br />

23 if [ "$astcanary_pid" ]; then<br />

24 for i in $astcanary_pid; do ocf_run kill ‐s KILL $astcanary_pid;<br />

done<br />

25 fi<br />

26 <br />

27 for dir in $ASTRUNDIR $ASTLOGDIR $ASTLOGDIR/cdr‐csv $ASTLOGDIR/<br />

cdr‐custom; do<br />

28 if [ ! ‐d "$dir" ]; then<br />

29 ocf_run install ‐d ‐o $OCF_RESKEY_user ‐g $OCF_RESKEY_group<br />

$dir \<br />

30 || exit $OCF_ERR_GENERIC<br />

31 fi<br />

32 # Regardless of whether we just created the directory or it<br />

33 # already existed, check whether it is writable by the<br />

configured<br />

34 # user<br />

35 if ! su ‐s /bin/sh ‐ $OCF_RESKEY_user ‐c "test ‐w $dir"; then<br />

36 ocf_log err "Directory $dir is not writable by $OCF_RESKEY_<br />

user"<br />

37 exit $OCF_ERR_PERM<br />

38 fi<br />

39 done<br />

40 <br />

41 # set MAXFILES<br />

42 ulimit ‐n $OCF_RESKEY_maxfiles<br />

43 <br />

44 # Determine whether Asterisk PBX is supposed to run in Realtime mode<br />

45 # or not and make asterisk daemonize automatically<br />

46 if ocf_is_true "$OCF_RESKEY_realtime"; then<br />

47 asterisk_extra_params="‐F ‐p"<br />

48 else<br />

49 asterisk_extra_params="‐F"<br />

50 fi<br />

51 <br />

52 ocf_run ${OCF_RESKEY_binary} ‐G $OCF_RESKEY_group ‐U $OCF_RESKEY_<br />

user \<br />

53 ‐C $OCF_RESKEY_config \<br />

54 $OCF_RESKEY_additional_parameters \<br />

55 $asterisk_extra_params<br />

56 rc=$?<br />

57 if [ $rc ‐ne 0 ]; then<br />

58 ocf_log err "Asterisk PBX start command failed: $rc"<br />

59 exit $OCF_ERR_GENERIC<br />

60 fi<br />

61 <br />

62 # Spin waiting for the server to come up.<br />

63 # Let the CRM/LRM time us out if required<br />

64 while true; do<br />

65 asterisk_monitor<br />

66 rc=$?<br />

67 [ $rc ‐eq $OCF_SUCCESS ] && break<br />

68 if [ $rc ‐ne $OCF_NOT_RUNNING ]; then<br />

69 ocf_log err "Asterisk PBX start failed"<br />

70 exit $OCF_ERR_GENERIC<br />

71 fi<br />

72 sleep 2<br />

73 done<br />

74 <br />

75 ocf_log info "Asterisk PBX started"<br />

76 return $OCF_SUCCESS<br />

77 }\<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

103


Know-how<br />

Eigene OCF-Agenten<br />

Fehlermeldung zurückgibt, bedeutet das<br />

allerdings nicht, dass der Prozess auch<br />

tatsächlich stirbt. Der Agent überprüft<br />

das und schickt gegebenenfalls noch ein<br />

»SIGKILL« nach – solange, bis der Wert<br />

für den Timeout der Stop-Funktion erreicht<br />

ist. Läuft der Daemon danach noch<br />

immer, ist manuelles Eingreifen seitens<br />

des Admins notwendig. Insgesamt kann<br />

die »asterisk_stop«-Funktion aussehen,<br />

wie in Listing 10.<br />

Der Corpus des Resource<br />

Agents<br />

Bisher definiert der Agent im Wesentlichen<br />

Funktionen, die seine diversen<br />

Aufgaben wahrnehmen. Es fehlt noch<br />

der Teil, der diese Funktionen aufruft,<br />

wenn der Agent mit einem entsprechenden<br />

Target gestartet wird. In genau diesen<br />

Corpus gehören auch die zuvor schon er-<br />

Logging mit OCF<br />

In den Code-Snipplets der einzelnen Funktionen<br />

finden sich diverse Aufrufe von »ocf_log« mit<br />

verschiedenen Parametern, die die Relevanz der<br />

Ausgaben für den Admin festlegen. Die »Severity«<br />

eines »ocf_log«-Aufrufs sorgt dafür, dass<br />

im HA-Log die Logeinträge entsprechend markiert<br />

werden, sodass ein Admin später gezielt<br />

danach suchen kann. Die folgenden Kategorien<br />

kennt die Funktion:<br />

debug: Debug-Informationen, die für den normalen<br />

Betrieb des Clusters nur von sehr geringer<br />

Relevanz sind. Standardmäßig verschluckt<br />

wähnten Definitionen von »ASTRUNDIR«<br />

und »ASTLOGDIR« – jedenfalls gehören<br />

sie hinter den Aufruf der Validate-Funktion<br />

(denn wenn »validate« scheitert,<br />

lassen sie sich möglicherweise gar nicht<br />

setzen). Der Rest entspricht im Wesentlichen<br />

der Syntax, die beispielsweise<br />

auch viele Init-Skripte verwenden – das<br />

der HA-Stack auf den meisten Systemen diese<br />

Meldungen und zeigt sie gar nicht erst an.<br />

info: Allgemeine Logging-Informationen, die für<br />

den Administrator keinen unmittelbaren Handlungsbedarf<br />

signalisieren.<br />

warn: Warnungen, unerwartete Ereignisse, aber<br />

die nicht als Fehlermeldung gelten.<br />

err: Fehlermeldungen, an die der OCF-Agent<br />

jeweils ein »exit« mit dem dazugehörigen Returnwert<br />

anschließen sollte.<br />

crit: Kritische Fehler, die ein Eingreifen des Admins<br />

unbedingt und schnell notwendig machen.<br />

Listing 11 enthält ein vollständiges Beispiel,<br />

das in der Agent-Datei ganz an das<br />

Ende gehört.<br />

Den Resource Agent testen<br />

Es ist nicht zwingend notwendig, einen<br />

Pacemaker aufzusetzen, um zu testen<br />

Listing 10: Die »asterisk_stop«-Funktion<br />

01 asterisk_stop() {<br />

02 local pid<br />

03 local astcanary_pid<br />

04 local rc<br />

05 <br />

06 asterisk_status<br />

07 rc=$?<br />

08 if [ $rc ‐eq $OCF_NOT_RUNNING ]; then<br />

09 ocf_log info "Asterisk PBX already stopped"<br />

10 return $OCF_SUCCESS<br />

11 fi<br />

12 <br />

13 # do a "soft shutdown" via the asterisk command line first<br />

14 asterisk_rx 'core stop now'<br />

15 <br />

16 asterisk_status<br />

17 rc=$?<br />

18 if [ $rc ‐eq $OCF_NOT_RUNNING ]; then<br />

19 ocf_log info "Asterisk PBX stopped"<br />

20 return $OCF_SUCCESS<br />

21 fi<br />

22 <br />

23 # If "core stop now" didn't succeed, try SIGTERM<br />

24 pid=`cat $ASTRUNDIR/asterisk.pid`<br />

25 ocf_run kill ‐s TERM $pid<br />

26 rc=$?<br />

27 if [ $rc ‐ne 0 ]; then<br />

28 ocf_log err "Asterisk PBX couldn't be stopped"<br />

29 exit $OCF_ERR_GENERIC<br />

30 fi<br />

31 <br />

32 # stop waiting<br />

33 shutdown_timeout=15<br />

34 if [ ‐n "$OCF_RESKEY_CRM_meta_timeout" ]; then<br />

35 shutdown_timeout=$((($OCF_RESKEY_CRM_meta_timeout/1000)‐5))<br />

36 fi<br />

37 count=0<br />

38 while [ $count ‐lt $shutdown_timeout ]; do<br />

39 asterisk_status<br />

40 rc=$?<br />

41 if [ $rc ‐eq $OCF_NOT_RUNNING ]; then<br />

42 break<br />

43 fi<br />

44 count=`expr $count + 1`<br />

45 sleep 1<br />

46 ocf_log debug "Asterisk PBX still hasn't stopped yet. Waiting<br />

..."<br />

47 done<br />

48 <br />

49 asterisk_status<br />

50 rc=$?<br />

51 if [ $rc ‐ne $OCF_NOT_RUNNING ]; then<br />

52 # SIGTERM didn't help either, try SIGKILL<br />

53 ocf_log info "Asterisk PBX failed to stop after ${shutdown_<br />

timeout}s using SIGTERM. Trying SIGKILL ..."<br />

54 ocf_run kill ‐s KILL $pid<br />

55 fi<br />

56 <br />

57 # After killing asterisk, stop astcanary<br />

58 if ocf_is_true "$OCF_RESKEY_realtime"; then<br />

59 astcanary_pid=`pgrep ‐d " " ‐f "astcanary $ASTRUNDIR/alt.asterisk.<br />

canary.tweet.tweet.tweet"`<br />

60 if [ "$astcanary_pid" ]; then<br />

61 for i in $astcanary_pid; do ocf_run kill ‐s KILL $astcanary_pid;<br />

done<br />

62 fi<br />

63 fi<br />

64 <br />

65 ocf_log info "Asterisk PBX stopped"<br />

66 return $OCF_SUCCESS<br />

67 }<br />

104 Ausgabe 01-2012 Admin www.admin-magazin.de


Eigene OCF-Agenten<br />

Know-how<br />

Abbildung 4: Der fertige Resource Agent lässt sich auch händisch auf der Kommandozeile testen, ohne einen<br />

Pacemaker aufzusetzen.<br />

Abbildung 5: Der »ocf‐testr« überprüft einen OCF-Agent im Hinblick auf seine Konformität mit dem OCF-<br />

Standard.<br />

(Abbildung 4), ob der Agent so funktioniert,<br />

wie er soll. Weil OCF-Agents Shellskripte<br />

sind, lassen sie sich auch von der<br />

Kommandozeile aus aufrufen. Wichtig<br />

ist dafür, dass die Umgebungsvariable<br />

»OCF_ROOT« gesetzt ist; auf den allermeisten<br />

Linux-Distributionen muss die<br />

Variable auf »/usr/lib/ocf« zeigen.<br />

Daneben sollten die OCF-spezifischen<br />

Umgebungsvariablen für die Parameter<br />

ebenfalls in der Shell gesetzt sein, beispielsweise<br />

»OCF_RESKEY_realtime« –<br />

besonders dann, wenn ein Parameter als<br />

»required« markiert ist oder kein Defaultwert<br />

dafür existiert. Dann lässt sich der<br />

Agent, der im Beispiel »asterisk« heißt<br />

und in »/usr/lib/ocf/resource.d/heartbeat«<br />

liegt, in diesem Ordner mit »./asterisk<br />

monitor« aufrufen, um den Status<br />

der Ressource zu testen. Freilich empfiehlt<br />

es sich, einen lauffähigen Asterisk<br />

(beziehungsweise das Programm, für das<br />

der Agent geschrieben ist) zu haben. Die<br />

Befehle »start«, »stop« und alle anderen<br />

festgelegten Kommandos funktionieren<br />

äquivalent. Wenn der Agent sich in bestimmten<br />

Aspekten nicht wie erwartet<br />

verhält, führt sein Aufruf mit vorangestelltem<br />

»sh ‐x« vermutlich zu weiterem<br />

Erkenntnisgewinn.<br />

Sollte ein funktionierender Pacemaker<br />

verfügbar sein, kann in diesem auch eine<br />

Ressource mit dem Agenten definiert werden<br />

(die Bezeichnung des Agents ist im<br />

Beispiel »ocf:heartbeat:asterisk«), um sie<br />

danach mit »ocf‐tester« zu testen. Unter<br />

der Prämisse, dass die Asterisk-Ressource<br />

»p_asterisk« heißt, wäre der vollständige<br />

OCF-Tester-Aufruf »ocf‐tester ‐n p_asterisk /<br />

usr/lib/ocf/resource.d/heartbeat/asterisk«<br />

(Abbildung 5). Sollte »ocf‐tester« eine<br />

Fehlermeldung ausgeben, weiß der<br />

Agent-Autor, dass mit dem Werk noch<br />

etwas nicht stimmt.<br />

Fazit<br />

Der OCF-Standard ist ein sehr mächtiges<br />

Werkzeug, um qualitativ hochwertige Resource<br />

Agents für Pacemaker zu schaffen.<br />

Weil er auf Shellscripting basiert, dürfte<br />

die Eingewöhnung den meisten Admins<br />

nicht schwerfallen. Der Artikel behandelt<br />

als Beispiel zwar Asterisk, die meisten<br />

Funktionen werden sich aber in fast jedem<br />

Agent so oder so ähnlich wiederfinden.<br />

Dabei wird aber jedes Programm<br />

seine typischen Eigenheiten haben, mit<br />

denen die Resource-Agent-Schöpfer jeweils<br />

zurechtkommen müssen. Wer einen<br />

Resource Agent geschaffen hat und<br />

diesen dann gern zum Bestandteil des offiziellen<br />

»cluster‐agents«-Paketes machen<br />

möchte, der hat übrigens die Möglichkeit,<br />

sein Werk auf der Linux-HA-Dev-Mailingliste<br />

öffentlich zur Diskussion zu stellen<br />

[4]. (jcb) n<br />

Infos<br />

[1] Die OCF-Spezifikation in ihrer letzten<br />

gültigen Fassung: [http:// www. opencf.​<br />

org/ cgi‐bin/ viewcvs. cgi/ specs/ ra/​<br />

ResourceAgent‐api. txt? rev=HEAD]<br />

[2] Der Resource Agent Developer’s Guide<br />

1.0.2: [http:// www. linux‐ha. org/ doc/​<br />

dev‐guides/ ra‐dev‐guide. html]<br />

[3] Der vollständige Asterisk-Resource Agent:<br />

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

ResourceAgents/ master/ heartbeat/​<br />

asterisk]<br />

[4] Die Linux-HA-Dev-Mailingliste:<br />

[http:// lists. linux‐ha. org/ mailman/ listinfo/​<br />

linux‐ha‐dev]<br />

Der Autor<br />

Martin Gerhard Loschwitz arbeitet als Principal<br />

Consultant bei hastexo. Er beschäftigt sich dort<br />

intensiv mit Hochverfügbarkeitslösungen und<br />

pflegt in seiner Freizeit den Linux-Cluster-Stack<br />

für Debian GNU/​Linux.<br />

Listing 11: Der Korpus des Agenten<br />

01 case "$1" in<br />

02 meta‐data) meta_data<br />

03 exit $OCF_SUCCESS;;<br />

04 usage|help) usage<br />

05 exit $OCF_SUCCESS;;<br />

06 esac<br />

07 <br />

08 <br />

09 # Anything except meta‐data and help must pass validation<br />

10 asterisk_validate || exit $?<br />

11 <br />

12 # Now that validate has passed and we can be sure to be able to read<br />

13 # the config file, set convenience variables<br />

14 ASTRUNDIR=`grep astrundir $OCF_RESKEY_config | awk '/^astrundir/ {print<br />

$3}'`<br />

15 ASTLOGDIR=`grep astlogdir $OCF_RESKEY_config | awk '/^astlogdir/ {print<br />

$3}'`<br />

16 <br />

17 # What kind of method was invoked?<br />

18 case "$1" in<br />

19 start) asterisk_start;;<br />

20 stop) asterisk_stop;;<br />

21 status) asterisk_status;;<br />

22 monitor) asterisk_monitor;;<br />

23 validate‐all) ;;<br />

24 *) usage<br />

25 exit $OCF_ERR_UNIMPLEMENTED;;<br />

26 esac<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

105


Know-how<br />

GFS<br />

© SUNG KUK KIM, 123RF<br />

HA-Workshop, Teil 7: GFS mit DRBD und Pacemaker<br />

Nichts exklusiv<br />

Cluster-Dateisysteme wie GFS2 und OCFS2 ermöglichen vielen Clients den gleichzeitigen Zugriff auf ein Storage-<br />

Device. Dank DRBD und Pacemaker wird der Dienst so auf günstige Weise redundant – allerdings hat die Sache<br />

ein paar Haken. von Martin Loschwitz<br />

Auf Cluster-Dateisysteme trifft man<br />

häufig in Hochverfügbarkeitsclustern.<br />

Die bekanntesten Filesysteme dieser Art<br />

sind GFS2 und OCFS2, aber auch Lustre<br />

genießt einiges an Aufmerksamkeit und<br />

NFS bietet in Version 4 einen ähnlichen<br />

Dienst an (pNFS). Über den Sinn und<br />

Unsinn von Cluster-Filesystemen lässt<br />

sich trefflich streiten (siehe auch den<br />

Kasten „Die Gefahren von DRBD im<br />

Dual-Primary Modus“). Wenn aber die<br />

Entscheidung für ein solches Dateisystem<br />

gefallen ist, dann helfen Pacemaker und<br />

DRBD dabei, den Dienst hochverfügbar<br />

zu machen.<br />

Der folgende Artikel beschreibt am Beispiel<br />

von GFS, wie sich auf aktuellen Systemen<br />

Pacemaker zum Cluster-Manager<br />

für Cluster-Dateisysteme aufschwingt.<br />

Leider gibt es unter den vier „großen“<br />

Enterprise-Distributionen – Debian,<br />

Ubuntu, SLES und RHEL – einiges an<br />

Uneinigkeit darüber, wie ein Setup dieser<br />

Art am besten aussehen sollte. Ein dicker<br />

Riss trennt dabei insbesondere Red Hat<br />

von den anderen drei Distributionen.<br />

Zur Geschichte von GFS<br />

Das Cluster-Dateisystem GFS existiert im<br />

Grunde bereits seit 1995, richtig an Verbreitung<br />

gewann die Software allerdings<br />

erst als Red Hat den damaligen Hersteller<br />

Sistina im Jahre 2005 kaufte und anfing,<br />

die Entwicklung voranzutreiben. Offiziell<br />

hielt GFS Einzug in Linux, als Linus<br />

Torvalds es zum Bestandteil der Kernelversion<br />

2.6.19 machte. GFS2 war damit<br />

später dran als OCFS2, das es schon in<br />

den Kernel 2.6.16 schaffte.<br />

GFS setzt im Kernel auf die Strukturen<br />

des Distributed Lock Managers (DLM).<br />

Diese Software, die ebenfalls aus der Feder<br />

von Red-Hat-Entwicklern stammt, ist<br />

im Wesentlichen ein großes Framework,<br />

das den gleichzeitgen Zugriff auf Storage-<br />

Ressourcen koordiniert. GFS2 funktioniert<br />

nur, wenn der Distributed Lock Manager<br />

aktiv ist und keine Probleme hat. Red<br />

Hats Wunsch, auch andere Software-Produkte<br />

mögen den DLM verwenden, ging<br />

in Erfüllung: cLVM, die Cluster-Variante<br />

von LVM, verwendet den DLM ebenfalls<br />

– wohl nicht zuletzt deshalb, weil Red<br />

Hat massiv an der LVM-Entwicklung beteiligt<br />

ist.<br />

Wer DLM und GFS nutzen möchte, muss<br />

dafür einerseits sicherstellen, dass die<br />

entsprechenden Kernel-Module geladen<br />

sind. Andererseits braucht jede der bei-<br />

106 Ausgabe 01-2012 Admin www.admin-magazin.de


GFS<br />

Know-how<br />

Abbildung 1: Um DRBD in den Dual-Primary-Modus zu verfrachten, ist es nötig,<br />

den Modus im »net«-Abschnitt der Ressource zu konfigurieren. Hinzu kommt<br />

Fencing auf Ressource-Ebene.<br />

herausstellte, gewann<br />

Pacemaker<br />

zusehends an Bedeutung.<br />

Red Hat<br />

stellte daraufhin<br />

für den DLM wie<br />

auch für GFS sogenannte<br />

»Control<br />

Daemons« her,<br />

mit denen sich die<br />

Software in Pacemaker<br />

integrieren<br />

ließ. Die Binaries<br />

dafür heißen<br />

»dlm_controld.<br />

pcmk« und »gfs_<br />

controld.pcmk«<br />

und werden aus<br />

Pacemaker heraus<br />

wie alle anderen<br />

Ressourcen auch<br />

über Resource<br />

Agents gestartet.<br />

Weil sowohl der DLM als auch GFS zwischenzeitlich<br />

zu Teilen von Red Hats<br />

Cluster Suite (RHCS) geworden waren,<br />

wurden auch die Control-Daemons für<br />

Pacemaker mit der RHCS zusammen<br />

ausgeliefert. Bis einschließlich RHCS<br />

3.0 war die Welt also in Ordnung, wenn<br />

Pace maker und GFS zusammen funktionieren<br />

sollten.<br />

In der Red Hat Cluster Suite 3.1 kam<br />

dann allerdings der Sinneswandel: Red<br />

Hat beschloss, sein eigenes Cluster-<br />

Produkt massiv umzubauen. Das führte<br />

dazu, dass Pacemaker – dessen Hauptentwickler<br />

in der Zwischenzeit von Red<br />

Hat engagiert worden war – eine Schnittstelle<br />

für Cman bekam. Über diese sollte<br />

der CRM dann mit den Tools kommunizieren,<br />

die den DLM und GFS kontrollieren.<br />

In den Augen Red Hats waren die<br />

Pacemaker-Control-Daemons für DLM<br />

und GFS damit überflüssig, sie wurden<br />

kurzerhand entfernt.<br />

Novell hat allerdings aus nachvollziehbaren<br />

Überlegungen heraus große Skrupel,<br />

die RHCS zum Bestandteil des eigenen<br />

Produktes zu machen, obwohl das lizenzden<br />

Komponenten auch ein Gegenstück<br />

im Userland, welches die Kommunikation<br />

mit den Kernel-Modulen übernimmt und<br />

eine Schnittstelle für andere Programme<br />

bietet. Ein Control-Daemon für GFS sorgt<br />

beispielsweise dafür, dass zwischen den<br />

Knoten eines GFS-Clusters tatsächlich<br />

auch der gewünschte Datenaustausch<br />

stattfindet.<br />

Und genau hier liegt der Hund begraben:<br />

Um sich die Arbeit zu ersparen, einen<br />

eigenen Cluster-Manager für GFS zu implementieren<br />

(so, wie es zum Beispiel<br />

Oracle bei OCFS2 gemacht hat), waren<br />

bei GFS die Control-Daemons und der<br />

Red-Hat-eigene Cluster-Manager »Cman«<br />

stets eng verzahnt. Was sich aber in den<br />

letzten drei Jahren bei der Integration von<br />

GFS in die verfügbaren Cluster-Manager<br />

abspielte, mutet für Außenstehende an<br />

wie eine schlechte Komödie.<br />

Tunnelblick<br />

Als sich Corosync – maßgeblich von<br />

Red Hat propagiert – als Lösung der Zukunft<br />

in Sachen Cluster-Kommunikation<br />

Abbildung 2: Ist DRBD richtig konfiguriert, klappt’s auch mit dem Dual-Primary, wie hier gut zu erkennen.<br />

technisch freilich möglich wäre. Stattdessen<br />

pflegt Suse künftig die alten Control-<br />

Daemons der RHCS 3.0 auf eigene Faust<br />

weiter. Derzeit gibt es also zwei Methoden,<br />

um GFS auf Linux mit Pacemaker zu<br />

verheiraten – und sie unterscheiden sich<br />

stark voneinander: Auf RHEL 6 braucht<br />

es Pacemaker mit Cman-Integration, auf<br />

Debian, Ubuntu und SLES kommt hingegen<br />

die alte Variante zum Einsatz, die<br />

eigene Control-Daemons in Pacemaker<br />

für DLM und GFS vorsieht.<br />

Die nächste grundlegende Änderung im<br />

Hinblick auf GFS kommt übrigens ganz<br />

bestimmt: Die weiteren Pläne von Red<br />

Hat sehen vor, Cman komplett durch<br />

Pacemaker zu ersetzen. In nicht allzu<br />

ferner Zukunft ist deshalb damit zu rechnen,<br />

dass Red Hat die Control-Daemons<br />

für Cman kompatibel mit Pacemaker<br />

macht – um genau dort anzukommen,<br />

wo das Unternehmen in Version 3.0 der<br />

RHCS schonmal war.<br />

Grau ist alle Theorie, deshalb folgen nun<br />

Taten: Den Anfang macht ein GFS-Cluster-Setup<br />

für Debian, Ubuntu und SLES.<br />

Debian und Ubuntu liefern Pacemaker in<br />

ihren Standard-Distributionen zwar mit,<br />

allerdings ist die feilgebotene Version<br />

bereits etwas angestaubt. Im Ubuntu-<br />

HA-PPA [1] oder im Backports-Verzeichnis<br />

für Squeeze [2] finden sich für die<br />

Systeme aber aktualisierte Pacemaker-<br />

Pakete. Wer SLES auf seinen Servern einsetzt,<br />

braucht für GFS die High Availability<br />

Extension (HAE), in der die Pakete<br />

Listing 1: Ressourcen-Konfiguration<br />

01 primitive p_controld_dlm ocf:pacemaker:controld op<br />

monitor interval="120s"<br />

02 primitive p_controld_gfs ocf:pacemaker:controld<br />

params<br />

03 daemon="gfs_controld.pcmk" args="" op monitor<br />

interval="120s"<br />

04 clone cl_controld_dlm p_controld_dlm meta<br />

globally‐unique="false"<br />

05 interleave="true"<br />

06 clone cl_controld_gfs p_controld_gfs meta<br />

globally‐unique="false"<br />

07 interleave="true"<br />

08 colocation co_dlm_always_with_drbd_master inf: cl_<br />

controld_dlm<br />

09 ms_drbd_gfs:Master<br />

10 colocation co_gfs_always_with_dlm inf: cl_controld_<br />

gfs cl_controld_dlm<br />

11 order o_gfs_always_after_dlm inf: cl_controld_dlm<br />

cl_controld_gfs<br />

12 order o_dlm_always_after_drbd inf: ms_drbd_<br />

gfs:promote cl_controld_dlm<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

107


Know-how<br />

GFS<br />

für GFS enthalten sind. Alternativ finden<br />

sich im Internet auch Pakete von Drittanbietern.<br />

Vorarbeit<br />

Auf Ubuntu 10.04 und Debian Squeeze<br />

sowie auf SLES sind wie erwähnt die<br />

„alten“ Daemons zu verwenden, die<br />

diesen Distributionen beiliegen. Sie finden<br />

sich in den Paketen »gfs‐pcmk« und<br />

»dlm‐pcmk«, die auf dem System vorhanden<br />

sein sollten. In SLES finden sich die<br />

benötigten Pakete über die Paketsuche.<br />

Der Artikel geht im Folgenden davon aus,<br />

dass DRBD installiert und mindestens<br />

eine DRBD-Ressource vorhanden ist.<br />

Diese Ressource sollte so eingerichtet<br />

sein, dass sie im Dual-Primary-Modus<br />

laufen darf (Abbildung 1). Ausgehend<br />

von einer „normalen“ Ressource, wie<br />

sie im Artikel zu DRBD in der HA-Serie<br />

[3] beschrieben ist, sind in der Konfiguration<br />

der Ressource dazu zwei Dinge<br />

zu ändern. Einerseits ist dem »net«-Absatz<br />

in der Ressourcen-Konfiguration<br />

der Eintrag »allow‐two‐primaries yes;«<br />

hinzuzufügen. Andererseits sollte DRBD<br />

auch erfahren, was es tun soll, falls<br />

eine Split-Brain-Situation eintritt. Das<br />

passiert mit<br />

after‐sb‐0pri discard‐zero‐changes;<br />

after‐sb‐1pri discard‐secondary;<br />

after‐sb‐2pri disconnect;<br />

ebenfalls im »net«-Absatz der Ressource.<br />

Überdies sollte Pacemaker installiert<br />

und grundlegend konfiguriert sein. Es<br />

sei an dieser Stelle darauf hingewie­<br />

Die Gefahren von DRBD im Dual-Primary-Modus<br />

Der Betrieb einer DRBD-Ressource im Dual-Primary-Modus<br />

ist die zwingende Voraussetzung,<br />

um GFS2 auf dieser Ressource zu nutzen. Nicht<br />

zu unterschätzen sind dabei die Gefahren, die<br />

von dieser Art der DRBD-Benutzung ausgehen.<br />

Standard-Dateisysteme<br />

Dateisysteme existieren aus einem Grund: Sie<br />

machen Speicherplatz verwaltbar. Ohne ein<br />

Dateisystem wäre es schwierig, einmal auf das<br />

Speichermedium geschriebene Daten später<br />

wiederzufinden. Die Struktur des Dateisystems<br />

erlaubt es, Inhalte auf dem Datenträger erneut<br />

zu öffnen und zu verändern. Solange dem Dateisystem<br />

nichts in die Quere kommt, funktioniert<br />

dieses Prinzip ganz wunderbar. Und solange ein<br />

Datenträger konsistent ist, ist die Welt für den<br />

Admin in Ordnung.<br />

Bei ihrer Arbeit gehen Dateisysteme grundsätzlich<br />

davon aus, dass nur sie überhaupt auf den<br />

Datenträger zugreifen dürfen, und zwar nur<br />

genau die Dateisystem-Instanz, die zu einem<br />

bestimmten Mount gehört. Der gleichzeitige<br />

Zugriff zweier Dateisystem-Instanzen auf denselben<br />

Datenträger ist in den Konzepten der<br />

Standard-Dateisysteme unter Linux nicht vorgesehen.<br />

Die in Linux enthaltenen Dateisysteme<br />

geben sich entsprechend große Mühe, gleichzeitige<br />

Datenträgerzugriffe durch zwei oder mehr<br />

Instanzen eines Dateisystems auszuschließen.<br />

Ein bereits gemountetes Dateisystem lässt sich<br />

nicht woanders nochmal mounten.<br />

Solange der Datenträger nur einem einzigen<br />

System zur Verfügung steht, ist es für den<br />

Linux-Kernel kein Problem, dieses Prinzip aufrechtzuerhalten.<br />

Denn dort hat er die Deutungshoheit<br />

über die verfügbare Hardware. Im Falle<br />

von DRBD ist das aber nicht mehr der Fall: Die<br />

DRBD-Ressource ist grundsätzlich auf beiden<br />

Clusterknoten vorhanden, und der Ext3-Treiber<br />

von Knoten A hätte keine Möglichkeit, sich über<br />

den Zustand der gleichen DRBD-Ressource auf<br />

Knoten B zu informieren, wenn er schreibend<br />

darauf zugreift. Im schlimmsten Falle könnte es<br />

also passieren, dass auf beiden Seiten des Clusters<br />

auf die DRBD-Ressource geschrieben wird,<br />

wobei der jeweils andere Knoten von diesem<br />

Umstand vorerst gar nichts merken würde. Einen<br />

solchen Vorgang bezeichnet man als Concurrent<br />

Write. Wenn auf ein Medium von zwei Seiten<br />

gleichzeitig unkoordiniert geschrieben wird, ist<br />

sicher davon auszugehen, dass das Dateisystem<br />

Schaden nimmt. Admins holen dann die Backups<br />

raus, und Downtimes von Diensten gehören zu<br />

den unangenehmen Folgen.<br />

Was tun?<br />

DRBD schützt sich selbst gegen Concurrent<br />

Writes, indem es in der Standardkonfiguration<br />

stets im Primary-Secondary-Modus läuft. Auf<br />

dem Knoten, auf dem sich eine Ressource im Secondary-Modus<br />

befindet, sorgt der DRBD-Treiber<br />

dafür, dass kein Zugriff durch Userhand auf die<br />

Ressource stattfindet. Damit ist die Gefahr einer<br />

Korrumpierung des Dateisystems grundsätzlich<br />

gebannt. Der Nachteil: Cluster-Dateisysteme wie<br />

GFS oder OCFS2 beruhen auf dem Prinzip, dass<br />

sie auf sämtliche Datenträger innerhalb ihres<br />

Storage-Netzwerks uneingeschränkten Zugriff<br />

haben. Sie kümmern sich selbst darum, dass<br />

Concurrent Writes ausbleiben und sind somit auf<br />

die Schutzfunktion von DRBD nicht angewiesen.<br />

Damit GFS oder OCFS2 auf DRBD-Ressourcen<br />

funktionieren, muss DRBD also so konfiguriert<br />

sein, dass der schreibende Zugriff auf beiden<br />

Knoten für die Cluster-Dateisysteme möglich<br />

wird. Wie DRBD zu konfigurieren ist, ist in diesem<br />

Artikel ausführlich beschrieben.<br />

Der Pferdefuß<br />

Allerdings ist es nicht so, dass es völlig unproblematisch<br />

ist, DRBD-Ressourcen im Dual-Primary-<br />

Modus zu betreiben. Einerseits sind hinsichtlich<br />

der Clusterkonfiguration Details zu beachten: In<br />

einem Cluster, der DRBD-Ressourcen im Dual-<br />

Primary-Modus betreibt, ist ein funktionierendes<br />

STONITH-Setup Pflicht – denn sonst hat ein<br />

Knoten keine Möglichkeit, einen anderen Knoten<br />

aus dem Cluster zu werfen, wenn dieser Schwierigkeiten<br />

bereitet. Andererseits führt Fencing<br />

im Zusammenhang mit Clusterdateisystemen<br />

zu neuen Unannehmlichkeiten. Gelangt ein<br />

Knoten beispielsweise zur Überzeugung, dass<br />

ein anderer Knoten per STONITH abzuschießen<br />

sei, blockiert das Netzwerkdateisystem kurzerhand<br />

sämtlichen I/​O-Traffic – und zwar auf<br />

allen Knoten, die zu einem Storage-Pool gehören<br />

– solange, bis der vermeintlich aus dem Tritt<br />

geratene Knoten sicher ausgeschlossen ist. Mit<br />

Blick auf die Performance kann das schnell zum<br />

Problem werden.<br />

Lieber zweimal nachdenken<br />

Angesichts der Nachteile, die der Dual-Primary-<br />

Modus hat, scheint es schwer nachvollziehbar,<br />

dass viele Setups von Anfang an auf eine solche<br />

Konfiguration setzen. Häufig finden sich im Netz<br />

zum Beispiel Clusteranleitungen, die verschiedene<br />

Konfigurationsdateien auf DRBDs mit Cluster-Dateisystemen<br />

legen, um diese auf beiden<br />

Clusterknoten parat zu halten. Eingedenk der<br />

enormen Komplexität, die dadurch zum Setup<br />

hinzukommt, ist Lösungen auf Basis von Csync2,<br />

Rsync oder auch Puppet/​Chef allerdings der Vorzug<br />

einzuräumen. Ein Setup mit einem Cluster-<br />

Dateisystem sollte nur und ausschließlich dann<br />

überhaupt in Erwägung gezogen werden, wenn<br />

es dafür handfeste Gründe gibt. Denkbar wäre<br />

ein OCFS2-Setup für Oracle.<br />

Übrigens: Mancher Einfaltspinsel glaubt, er<br />

könne Ext3 & Co. ein Schnippchen schlagen, indem<br />

er den Dual-Primary-Modus bei DRBD nutzt,<br />

um auf einer der beiden Seiten des Clusters<br />

dann im Read-Only-Modus auf das Dateisystem<br />

zuzugreifen. Davon ist strikt abzuraten: Dateisysteme<br />

unter Linux gehen davon aus, dass nur<br />

sie die vollständige Kontrolle haben. Daten, die<br />

auf einem Read-Only-FS im Cache landen, werden<br />

dort nicht mehr aktualisiert – schließlich<br />

glaubt der Dateisystemtreiber, dass sie sich zwischenzeitlich<br />

nicht ändern können. Selbst wenn<br />

in diesen Szenarien also das Dateisystem nicht<br />

korrumpiert wird, so bekommen Clients beim Lesezugriff<br />

dort nach einer kurzen Zeit vermutlich<br />

keine aktuellen Daten mehr geliefert.<br />

108 Ausgabe 01-2012 Admin www.admin-magazin.de


GFS<br />

Know-how<br />

Abbildung 3: Die Ausgabe von »crm_mon ‐1« zeigt, dass alle Dienste, die zu GFS<br />

gehören, richtig konfiguriert sind und funktionieren.<br />

Abbildung 4: Der Resource-Agent »ocf:pacemaker:controld« existiert nur auf<br />

Ubuntu, Debian und SLES – auf RHEL-kompatiblen Systemen muss Cman für die<br />

Steuering von DLM und GFS herhalten.<br />

sen, dass Pacemaker unbedingt über<br />

eine funktionierende STONITH-Konfiguration<br />

verfügen sollte; nur diese gibt<br />

dem Cluster-Manager die Möglichkeit,<br />

amoklaufende Cluster-Knoten aus dem<br />

Cluster zu schießen. Schließlich setzt<br />

der Artikel voraus, dass die vormals<br />

erwähnte DRBD-Ressource bereits als<br />

solche in Pacemaker konfiguriert ist und<br />

als »ms_drbd_gfs« zur Verfügung steht.<br />

Zu beachten ist dabei, dass die »ms«-<br />

Ressource etwas anders anzulegen ist,<br />

als bei einem DRBD, das im Primary-<br />

Secondary-Modus läuft:<br />

ms ms_drbd_gfs p_drbd_gfs U<br />

meta master‐max=2 clone‐max=2U<br />

notify=true<br />

Wenn diese Voraussetzungen erfüllt sind,<br />

sollte die DRBD-Ressource auf beiden<br />

Clusterseiten mit »drbdadm primary Ressource«<br />

in den Modus »Primary« geschaltet<br />

werden (Abbildung 2).<br />

GFS2 im Cluster<br />

Dann folgt die Ressourcen-Konfiguration<br />

in Pacemaker. Für GFS braucht der<br />

Cluster zwei Dienste: »dlm_controld«,<br />

der die Kommunikation mit dem Distributed<br />

Lock Manager übernimmt, und<br />

»gfs_controld.pcmk«, der die Steuerung<br />

des GFS2-Daemons übernimmt. Die beiden<br />

Dienste werden über den Ressource-<br />

Agent »ocf:pacemaker:controld« gesteuert.<br />

Die Konfiguration in der CRM-Shell<br />

für dieses Beispiel sollte also so aussehen<br />

wie in Listing 1. Die genannten Einträge<br />

sorgen dafür, dass der Pacemaker grundsätzlich<br />

weiß, dass die Control-Daemons<br />

laufen sollen und dass sie stets auf allen<br />

Knoten des Clusters laufen – dies stellen<br />

die »clone«-Einträge sicher. Durch die<br />

Constraints ist sichergestellt, dass der<br />

DLM-Daemon immer bloß dort gestartet<br />

wird, wo die jeweilige DRBD-Ressource<br />

im Primary-Modus läuft und dass erst im<br />

Anschluss an den DLM-Start auch der<br />

GFS-Controld startet.<br />

Wenn der DLM und der GFS-Controld<br />

laufen, dann kann auch das GFS-Dateisystem<br />

auf der DRBD-Ressource landen:<br />

sudo mkfs.gfs2 ‐p lock_dlm ‐j2 ‐t pcmk:pcmkU<br />

Ressource<br />

Ressource ist der Device Node der DRBD-<br />

Ressource, zum Beispiel »/dev/​drbd/​<br />

by-res/​disk0/​0«.<br />

Dann fehlt noch die Dateisystem-<br />

Ressource in Pacemaker, die das<br />

GFS auf den Clusterknoten mountet.<br />

»ocf:heartbeat:Filesystem« kommt mit<br />

GFS2 zurecht, die passende Ressourcen-<br />

Konfiguration sieht dann so aus wie in<br />

Listing 2.<br />

Die Primitive-Ressource sorgt in Kombination<br />

mit dem Clone-Eintrag dafür,<br />

dass das Dateisystem auf allen Clusterknoten<br />

läuft. Durch die Constraints ist<br />

aber festgelegt, dass die Ressourcen nur<br />

laufen dürfen, wenn der GFS-Controld<br />

einsatzbereit ist.<br />

Nach einem »commit« in der CRM-<br />

Shell sollte der Cluster aussehen wie im<br />

Abbildung 3.<br />

GFS2 auf RHEL 6<br />

Auf Red Hat Enterprise Linux 6 oder damit<br />

kompatiblen Distributionen gestaltet<br />

sich das GFS-Setup anders (Abbildung 4).<br />

Die Control-Daemons, die Pacemaker mit<br />

dem DLM und dem GFS verbinden, fehlen.<br />

Stattdessen hat Pacemaker eine direkte<br />

Schnittstelle zu Cman. Auf solchen<br />

Systemen wird nicht Corosync gestartet,<br />

der das Pacemaker als Modul nachlädt –<br />

so, wie es im Rahmen der HA-Serie bisher<br />

stets war. Stattdessen läuft Pacemaker als<br />

Kindprozess von Cman und erhält von<br />

diesem alle wichtigen Infos.<br />

Die Konfiguration der DRBD-Ressource<br />

unterscheidet sich auf RHEL nicht von<br />

der zuvor beschriebenen Konfiguration<br />

Listing 2: GFS2-Dateisystem-Ressource<br />

01 primitive p_filesystem ocf:heartbeat:Filesystem \<br />

02 params device="/dev/drbd/by‐res/disk0/0"<br />

directory="/opt" fstype="gfs2"<br />

03 \<br />

04 op monitor interval="120s" \<br />

05 meta target‐role="Started"<br />

06 clone cl_filesystem p_filesystem \<br />

07 meta interleave="true" ordered="true"<br />

08 colocation p_filesystem_always_with_gfs inf: cl_<br />

filesystem cl_controld_gfs<br />

09 order o_filesystem_always_after_gfs inf: cl_controld_<br />

gfs cl_filesystem<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

109


Know-how<br />

GFS<br />

für Debian, Ubuntu oder SLES. Auch auf<br />

RHEL sollte die DRBD-Ressource so eingerichtet<br />

sein, dass Dual-Primary geht.<br />

Wenn eine entsprechende DRBD-Konfiguration<br />

vorhanden ist, geht es mit der<br />

Konfiguration von Cman weiter, das im<br />

Normalfall erst zu installieren ist.<br />

Cman für Pacemaker<br />

Cman findet seine Konfiguration in »/etc/<br />

cluster/cluster.conf«. Die Datei verwendet –<br />

wie Pacemaker intern auch – eine XML-basierte<br />

Syntax, allerdings ist sie nur einmal<br />

zu editieren und funktioniert dann klaglos.<br />

Für das Pacemaker-Beispiel könnte »cluster.<br />

conf« so aussehen wie in Listing 3.<br />

Das genannte Beispiel enthält auch Fencing-Direktiven,<br />

die Cman dazu bringen,<br />

Listing 3: »cluster.conf«<br />

01 <br />

02 <br />

03 <br />

04 <br />

05 <br />

06 <br />

07 <br />

08 <br />

09 <br />

10 <br />

11 <br />

12 <br />

13 <br />

14 <br />

15 <br />

16 <br />

17 <br />

18 <br />

19 <br />

20 <br />

21 <br />

22 <br />

23 <br />

Abbildung 5: »service cman start« startet Cman, der in weiterer Folge<br />

Pacemaker als eigentlichen Cluster-Manager aufruft.<br />

Fencing-Requests<br />

jedweder Art direkt<br />

an Pacemaker<br />

weiterzuleiten.<br />

Die »clusternode«-<br />

Einträge beziehen<br />

sich auf die Knoten<br />

des Clusters,<br />

statt »pcmk‐1« und<br />

»pcmk‐2« sollten<br />

die tatsächlichen<br />

Namen der Cluster<br />

hier erscheinen.<br />

Wenn die Cman-<br />

Konfigurationsdatei eingerichtet ist, gilt<br />

es, den dazugehörenden Dienst zu starten:<br />

»service cman start«. Der Output auf<br />

der Kommandozeile sollte aussehen, wie<br />

in Abbildung 5. Deutlich ist zu erkennen,<br />

dass Cman selbst sowohl den Control-<br />

Daemon für DLM als auch den für GFS<br />

startet. Anders als bei der Variante für<br />

Debian & Co. sind auf RHEL-kompatiblen<br />

Systemen diese Dienste also kein Teil der<br />

CIB mehr, über die Pacemaker wacht.<br />

DRBD für das Cman-<br />

Pacemaker-Gespann<br />

Nach dem ersten Start des Pacemakers<br />

ist die CIB logischerweise leer. Es empfiehlt<br />

sich daher, jetzt das Fencing und die<br />

grundlegenden Pacemaker-Einstellungen<br />

vorzunehmen. Auch die Ressource und das<br />

Master-Slave-Setup für DRBD können jetzt<br />

ihren Weg in die CIB finden; das passiert<br />

analog zu der Erklärung für die anderen<br />

Systeme im Artikel weiter oben. Auch auf<br />

RHEL ist darauf zu achten, dass DRBD von<br />

Pacemaker im Dual-Primary-Modus gestartet<br />

wird, indem der Wert » master‐max« auf<br />

»2« steht, genauso wie »clone‐max«. Das<br />

Beispiel bezieht sich auf diese Ressource<br />

wiederum als »ms_drbd_gfs«.<br />

GFS2-Dateisystem anlegen<br />

Im nächsten Schritt gelangt ein GFS-<br />

Dateisystem auf die DRBD-Ressource,<br />

nachdem diese dank Pacemaker auf beiden<br />

Cluster-Seiten im Primary-Modus<br />

läuft. Der Befehl dazu lautet<br />

mkfs.gfs2 ‐p lock_dlm ‐j 2 ‐tU<br />

pcmk:web Device<br />

wobei Device durch den Device Node<br />

der Ressource zu ersetzen ist, also beispielsweise<br />

»/dev/drbd/by‐res/drbd0/0«.<br />

Schließlich fehlt in Pacemaker eine<br />

Filesystem-Ressource, die das GFS auf<br />

den Cluster-Knoten verwendbar macht,<br />

samt passender Clone-Regel und Constraints:<br />

configure primitive p_gfs_fs ocf:U<br />

heartbeat:Filesystem params<br />

device="/dev/drbd/by‐res/drbd0/0"U<br />

directory="/opt" fstype="gfs2"<br />

clone cl_gfs_fs p_gfs_fs<br />

colocation co_cl_gfs_fs_always_with_U<br />

ms_drbd_gfs_master inf: cl_gfs_fs ms_U<br />

drbd_gfs:Master<br />

order o_cl_gfs_fs_always_after_ms_drbdU<br />

_gfs_promote inf: ms_drbd_gfs:promote U<br />

cl_gfs_fs<br />

Mögliche weitere Dienste, die Pacemaker<br />

auf beiden Seiten des Clusters starten<br />

soll, sobald das GFS auf beiden Knoten<br />

verfügbar ist, würden in der Folge per<br />

Colocation- und Order-Constraint freilich<br />

mit »cl_gfs_fs« verbunden.<br />

Fazit<br />

Wesentlich schwieriger als das Setup<br />

eines GFS-Clusters dürfte es sein, ein<br />

echtes Einsatzszenario für diese Konstellation<br />

zu finden. Besonders die<br />

Notwendigkeit eines umfangreichen<br />

Fencings wegen des DRBDs im Dual-<br />

Primary-Modus macht diese Variante<br />

nämlich ziemlich komplex. Möglicherweise<br />

schickt sich ja bald eine der Lösungen<br />

für replizierte Dateisysteme an,<br />

GFS & Co. auf die Plätze zu verweisen:<br />

Die Bewerber Gluster und Ceph scharren<br />

bereits mit den Hufen. (jcb)<br />

n<br />

Infos<br />

[1] Cluster-Pakete für Ubuntu 10.04<br />

LTS: [https:// launchpad. net/​<br />

~ubuntu‐ha‐maintainers/ +archive/​<br />

lucid‐cluster/ +packages]<br />

[2] Das Debian-Backports-Repository:<br />

[http:// backports. debian. org/]<br />

[3] <strong>ADMIN</strong> 04/​2011, Martin Gerhard Loschwitz,<br />

Seite 80: „DRBD - Storage-Replikation mit<br />

Open Source.“<br />

Der Autor<br />

Martin Gerhard Loschwitz arbeitet als Principal<br />

Consultant bei hastexo. Er beschäftigt sich dort<br />

intensiv mit Hochverfügbarkeitslösungen und<br />

pflegt in seiner Freizeit den Linux-Cluster-Stack<br />

für Debian GNU/​Linux.<br />

110 Ausgabe 01-2012 Admin www.admin-magazin.de


Alles zum ThemA<br />

Android<br />

Die Monatszeitschrift für Android-Fans, Smartphone- und Tablet-Nutzer<br />

Kennenlernangebot:<br />

3 AusgAben<br />

für nur 3 euro<br />

Jetzt bestellen unter:<br />

www.android–user.de/miniabo<br />

Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@android-user.de<br />

Neu!<br />

am KiosK


Basics<br />

Upstart<br />

© Andrzej Kwiatkowski, 123RF<br />

Wie Upstart Ubuntu-basierte Systeme bootet<br />

Start me up<br />

Als Ersatz für das alte System-V-Init wirft Upstart viele geliebte wie gehasste<br />

Konzepte über Bord: Statt verwirrender Runlevel gibt es jetzt Jobs<br />

und Ereignisse, während parallel startende Dienste den Bootvorgang beschleunigen<br />

sollen. Dennoch ist die Konfiguration fast ein Kinderspiel.<br />

Tim Schürmann<br />

Sobald der Linux-Kernel die Hardware<br />

in Beschlag genommen und alle Treiber<br />

geladen hat, übergibt er die Kontrolle an<br />

das kleine Programm »init«. Ihm kommt<br />

die Aufgabe zu, den Rest des Systems<br />

einzurichten und hochzufahren. Bis vor<br />

wenigen Jahren nutzten noch fast alle<br />

Linux-Distributionen das so genannte<br />

System-V-Init mit seinem geliebten wie<br />

gehassten Runlevel-Konzept. Es startete<br />

brav einen Dienst nach dem anderen,<br />

was zu teilweise recht langen Bootzeiten<br />

führte.<br />

Bei Canonical begann man deshalb 2006<br />

mit der Entwicklung eines flotteren Ersatzes.<br />

Das Ergebnis namens Upstart fährt<br />

seitdem vor allem bei Ubuntu-Distributionen<br />

sowie Red Hat Enterprise Linux<br />

(RHEL) 6 die Dienste hoch.<br />

Gegenüber dem alten System-V-Init versucht<br />

Upstart alle notwendigen Dienste<br />

und Programme möglichst parallel zu<br />

starten. Darüber hinaus kann es auf bestimmte<br />

Ereignisse reagieren, beispielsweise<br />

wenn man während des Betriebs<br />

eine Festplatte einstöpselt oder austauscht.<br />

Schließlich beobachtet es auf<br />

Wunsch ohne umständliche Krücken die<br />

gestarteten Prozesse und startet sie bei<br />

einem Absturz automatisch neu. Um das<br />

alles leisten zu können, bricht es vollständig<br />

mit dem alten Runlevel-Konzept.<br />

Wer damit noch arbeiten muss, sollte<br />

im Folgenden kurz sein altes Wissen<br />

vergessen.<br />

Um ein Linux-System vollständig hochzufahren,<br />

muss Upstart verschiedene<br />

Aufgaben durchführen – wie etwa das<br />

Netzwerk aktivieren oder den Webserver<br />

»httpd« starten. Jede dieser Aufgaben<br />

bezeichnet Upstart als Job, den es<br />

allerdings immer nur dann bearbeitet,<br />

wenn zuvor ein passendes Ereignis eingetreten<br />

ist. Ein solches Ereignis könnte<br />

beispielsweise „Netzwerk aktiviert“ oder<br />

„Druckerdaemon gestartet“ sein. Gibt es<br />

zu einem Ereignis mehrere Jobs, so versucht<br />

Upstart, sie parallel zu bearbeiten.<br />

Das alles erfolgt vollautomatisch: Ein<br />

Webserver muss Upstart nur mitteilen,<br />

dass er gerne beim Ereignis „Netzwerk<br />

aktiviert“ starten möchte. Um alles andere<br />

kümmert sich Upstart.<br />

Jeder Job besitzt im Unterverzeichnis<br />

»/ etc/init« eine eigene Konfigurationsdatei<br />

mit der Endung ».conf«. So finden sich<br />

beispielsweise in »cups.conf« alle Informationen,<br />

die Upstart zum Aktivieren<br />

des Cupps-Druckerdaemon kennen muss.<br />

Der Dateiname ohne Endung ist gleichzeitig<br />

der offizielle Name des Jobs.<br />

Tod oder Leben<br />

Bester Freund des Administrators ist das<br />

zu Upstart gehörende Werkzeug »initctl«.<br />

Es kontrolliert und verwaltet sämtliche<br />

Jobs. Beispielsweise listet der Befehl<br />

initctl list<br />

sämtliche Jobs und ihren aktuellen Status<br />

auf (Abbildung 1). In jeder Zeile steht<br />

ganz vorne der Name eines Jobs. Der Begriff<br />

vor dem Schrägstrich verrät, ob der<br />

Job zuletzt gestartet (»start«) oder angehalten<br />

(»stop«) wurde. Nach dem Schrägstrich<br />

folgt sein aktueller Zustand. Sofern<br />

ein Job beziehungsweise der durch ihn<br />

gestartete Dienst läuft, steht am Ende<br />

auch gleich noch seine Prozess-ID. Einen<br />

laufenden Job beendet<br />

initctl stop jobname<br />

Damit man sich nicht immer die Finger<br />

wund tippen muss, darf man alternativ<br />

auch einfach nur<br />

stop jobname<br />

aufrufen. »stop« ist schlicht ein Wrapper-Skript<br />

für »initctl stop«, das ebenfalls<br />

zum Upstart-Paket gehört und normalerweise<br />

in »/sbin« liegt. In jedem Fall<br />

sendet Upstart dem betroffenen Prozess<br />

zunächst ein SIGTERM-Signal und wartet<br />

dann standardmäßig fünf Sekunden.<br />

112 Ausgabe 01-2012 Admin www.admin-magazin.de


Upstart<br />

Basics<br />

Abbildung 2: Gibt man dem Kernel den Parameter »‐‐debug« auf den Weg, plaudert Upstart alle seine<br />

Aktionen nebst den aufgetretenen Ereignissen aus.<br />

Abbildung 1: »initctl list« liefert den Zustand<br />

sämtlicher Jobs.<br />

Wenn der Dienst danach immer noch<br />

laufen sollte, beendet Upstart ihn umgehend<br />

mit dem SIGKILL-Signal. Ein einmal<br />

ausgesprochenes »initctl stop« ist somit<br />

endgültig.<br />

Neben »stop« gibt es natürlich auch noch<br />

»start« und »restart«, die einen Job starten<br />

beziehungsweise neustarten. Tabelle<br />

1 fasst die wichtigsten »initctl«-Befehle<br />

zusammen (zu den noch unbekannten<br />

Befehlen gleich noch mehr). Apropos<br />

»/sbin«: Darin liegt auch Upstart selbst<br />

unter dem Namen »init«, damit Linux es<br />

auch garantiert findet.<br />

Wer einen eigenen Dienst beim Booten<br />

hochfahren lassen möchte, braucht<br />

eine neue Job-Datei. Im einfachsten<br />

Troubleshooting<br />

Auftauchende Probleme protokolliert Upstart im<br />

Syslog – unter Ubuntu 11.10 also beispielsweise<br />

in »/var/log/syslog« (Abbildung 2). Wem die dort<br />

hinterlegten Informationen nicht ausreichen,<br />

macht Upstart mit<br />

initctl log‐priority info<br />

oder sogar<br />

initctl log‐priority debug<br />

noch gesprächiger. Im letzten Fall protokolliert<br />

es jeden einzelnen seiner Schritte. Das Kommando<br />

nützt freilich nichts, wenn die Probleme<br />

schon während des Bootens aufgetaucht sind.<br />

Dann kann man dem Kernel den Parameter<br />

»‐‐verbose« oder für die noch geschwätzigere<br />

Variante »‐‐debug« anhängen (unter Ubuntu indem<br />

man nach dem Einschalten die [Umschalt]-<br />

Taste gedrückt hält, dann [e] tippt, mit den<br />

Fall besteht diese aus lediglich einer<br />

einzigen Zeile:<br />

exec /usr/bin/messd ‐‐log=/var/log/laerm/U<br />

messung.log<br />

Hinter »exec« steht schlicht das Programm<br />

beziehungsweise der Dienst, den Upstart<br />

ausführen soll. Hier im Beispiel nimmt<br />

ein Lärmmessprogramm seine Arbeit auf,<br />

das unablässig über entsprechende Hardware<br />

den Schallpegel misst und seine gesammelten<br />

Messergebnisse in der angegebenen<br />

Logdatei ablegt. Sobald man die<br />

obige Zeile in einer Datei wie beispielsweise<br />

»messen.conf« verstaut und diese<br />

bei ihren Kolleginnen unter »/etc/init«<br />

geparkt hat, kann man die Messsoftware<br />

bereits als Administrator per<br />

sudo start messen<br />

hochfahren beziehungsweise via<br />

sudo stop messen<br />

beenden. In der Regel möchte man den<br />

Dienst automatisch beim Booten starten.<br />

In diesem Fall muss man die Job-Datei<br />

wie in Listing 1 noch etwas erweitern.<br />

Pfeiltasten zur Zeile »linux /boot/vmlinuz ...«<br />

fährt, [Ende] drückt, mit englischer Tastaturbelegung<br />

»‐‐debug« anhängt und [Strg+X] bemüht).<br />

Solange noch kein Syslog-Daemon aktiv<br />

ist, wandern alle Meldungen in das Kernel-Log.<br />

Man muss folglich sowohl das Kernel-Log als<br />

auch das Syslog im Auge behalten. Eine konkrete<br />

Job-Datei »messen.conf« klopft<br />

init‐checkconf messen.conf<br />

auf Tippfehler ab. Anschließend mahnt<br />

initctl check‐config<br />

noch alle in »/etc/init« abgelegten Jobs an, deren<br />

Ereignis-Bedingungen sich nie erfüllen – die<br />

also von sich aus niemals starten oder stoppen<br />

werden. Die beiden Befehle gibt es in dieser<br />

Form übrigens erst seit Upstart 1.3, das sein<br />

Debüt in Ubuntu 11.10 feierte. Schon seit Upstart<br />

Kommentare beginnen wie von Shellskripten<br />

gewohnt mit einem Hash (#).<br />

Hinter »start on« steht der Name eines<br />

Ereignisses. Sobald es eintritt, aktiviert<br />

Upstart automatisch den Dienst. Anstelle<br />

von »exec« darf man übrigens auch ein<br />

Skript einbinden:<br />

script<br />

# kleines Bash‐Skript:<br />

if [...]; then<br />

...<br />

fi<br />

end script<br />

Upstart führt dann nicht ein Programm<br />

aus, sondern arbeitet die Shellbefehle<br />

zwischen »script« und »end script« ab.<br />

Die Job-Dateien selbst sind übrigens<br />

reine Textdateien und sollten möglichst<br />

nicht ausführbar sein.<br />

Günstige Gelegenheit<br />

Die Upstart-Ereignisse, auf die ein Job<br />

warten kann, können aus mehreren Quellen<br />

stammen. Sobald Upstart die Arbeit<br />

aufnimmt, erzeugt es automatisch selbst<br />

ein Ereignis mit dem Namen »startup«.<br />

0.6.4 lässt sich auch ein Überblick über alle<br />

Jobs ausgeben:<br />

initctl show‐config ‐e > ausgabe.txt<br />

Die dabei entstandene Datei wandelt auf Wunsch<br />

»initctl2dot« in ein Graphviz-Diagramm um:<br />

initctl2dot ‐f ausgabe.txt ‐o ausgabe.dot<br />

aus dem Graphviz wiederum einen Abhängigkeitsgraphen<br />

zeichnet:<br />

dot ausgabe.dot ‐Tps > diagramm.ps<br />

Das Ergebnis ist dann eine Postscript-Datei, in<br />

der man für jeden Job sieht, von welchen anderen<br />

er abhängt beziehungsweise welche seiner<br />

Kollegen nur auf seinen Start warten (Abbildung<br />

4). Das Diagramm ist übrigens nicht ganz so<br />

verwirrend, wie es vielleicht auf den ersten Blick<br />

erscheint.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

113


Basics<br />

Upstart<br />

Ein Dienst, der mit der Anweisung<br />

start on startup<br />

nur auf dieses Ereignis wartet, kann daher<br />

weder mit einem funktionierenden<br />

Netzwerk noch mit einem vorhandenen<br />

Dateisystem rechnen. Im Weiteren entsteht<br />

immer dann ein Ereignis, wenn irgendein<br />

Job startet oder stoppt. Mit der<br />

Zeile<br />

start on starting rsyslog<br />

würde Upstart etwa das Lärmmessprogramm<br />

gleichzeitig mit »rsyslog« starten.<br />

Möchte man sicherstellen, dass »rsyslog«<br />

schon läuft, nutzt man »started«:<br />

start on started rsyslog<br />

Damit würde das Lärmmessprogramm<br />

erst nach »rsyslog« loslegen – wann genau,<br />

lässt sich nicht vorhersagen. Man<br />

muss folglich damit rechnen, dass möglicherweise<br />

»rsyslog« noch nicht vollständig<br />

funktioniert. Schließlich kann Upstart<br />

den Job auch anwerfen, sobald sich ein<br />

anderer Dienst beendet beziehungsweise<br />

nicht läuft:<br />

start on stopped rsyslog<br />

Eine weitere Ereignisschleuder sind<br />

Systemdienste, allen voran der Gerätemanager<br />

»udev«. Beim Einstöpseln eines<br />

neuen Gerätes erzeugt er ein Ereignis<br />

der Form »sub‐device‐action«. »sub« steht<br />

dabei für das entsprechende Udev-Subsystem<br />

und »action« für die ausgeführte<br />

Aktion. Ein neu angeschlossener Datenträger<br />

löst beispielsweise das Ereignis<br />

»block‐device‐added« aus.<br />

Eine unvollständige Liste mit den grundlegenden<br />

und zumindest in jedem<br />

Ubuntu-System vorhandenen Ereignissen<br />

liefert die Manpage »man upstart‐events«<br />

(Abbildung 5). Eine weitere Quelle sind<br />

die schon vorhandenen Job-Dateien unter<br />

»/etc/init«.<br />

Abschließend kann ein Administrator mit<br />

»initctl« ein eigenes Ereignis auslösen:<br />

initctl emit meinereignis<br />

Diesen Befehl darf natürlich auch ein<br />

Skript in der Job-Datei aufrufen. Damit<br />

es nicht Upstarts Planungen durcheinanderwürfelt,<br />

muss man die Job-Datei dann<br />

noch mit der Zeile<br />

emit meinereignis<br />

würzen. Sie kündigt formal an, dass<br />

der Job irgendwann das Ereignis »meinereignis«<br />

auslöst. Sofern ein Job mehrere<br />

Ereignisse absetzen möchte, führt man<br />

sie jeweils in einer eigenen Zeile auf,<br />

wie etwa:<br />

emit start‐messung<br />

emit ende‐messung<br />

Die »emit«-Angaben benötigt übrigens<br />

auch zwingend »initctl check‐config«, um<br />

die Abhängigkeiten zwischen den Jobs<br />

korrekt überprüfen zu können (siehe<br />

Kasten „Troubleshooting“).<br />

Bindungen<br />

Einige Dienste setzen gleich mehrere Ereignisse<br />

voraus. Das Lärmmessprogramm<br />

könnte beispielsweise seine Daten nicht<br />

nur auf der Festplatte speichern, sondern<br />

sie auch in regelmäßigen Intervallen an<br />

einen Server im Internet versenden. Das<br />

Messprogramm kann folglich erst dann<br />

starten, wenn zum einen das Dateisystem<br />

vorhanden und zum anderen das<br />

Netzwerk hochgefahren ist – also die<br />

Ereignisse »filesystem« und »started network‐manager«<br />

eingetreten sind. Genau<br />

diese Bedingungen schreibt man jetzt<br />

einfach in die Job-Datei hinter »start on«<br />

und verknüpft sie mit einem »and«:<br />

start on (filesystem and started network‐U<br />

manager)<br />

Neben »and« gibt es noch das logische<br />

Oder (»or«). Zusammen mit den Klammern<br />

darf man mit ihnen nahezu beliebig<br />

komplexe Bandwurmbedingungen<br />

basteln, wie es unter anderem das Bootsplash-Utility<br />

Plymouth vormacht (zu<br />

den eckigen Klammern und »runlevel«<br />

später noch mehr):<br />

start on (starting mountall or (runlevelU<br />

[016] and (desktop‐shutdown or stopped U<br />

xdm or stopped uxlaunch)))<br />

Man darf die Zeile zwar umbrechen und<br />

mit Tabulatoren etwas übersichtlicher<br />

formatieren, mehrere »start on«-Zeilen<br />

sind jedoch nicht erlaubt.<br />

Auf welche Ereignisse die einzelnen<br />

Jobs warten beziehungsweise sie jeweils<br />

selbst absetzen, verrät der Befehl (Abbildung<br />

3):<br />

initctl show‐config<br />

Tabelle 1: »initctl«-Befehle im Überblick<br />

Befehl Kurzform Bedeutung<br />

initctl start jobname start jobname Startet den Job jobname<br />

initctl stop jobname stop jobname Hält den Job jobname an<br />

initctl restart jobname restart jobname Startet den Job jobname neu<br />

initctl status jobname status jobname Liefert den Status des Job jobname<br />

initctl list<br />

Listet alle vorhandenen Jobs und ihren Status<br />

initctl check-config<br />

Prüft alle Job-Dateien auf (Tipp-)Fehler<br />

initctl show-config<br />

Zeigt für jeden Job, auf welche Ereignisse er<br />

wartet und welche er selbst erzeugt.<br />

initctl emit ereignis<br />

Löst das Ergebnis ereignis aus.<br />

initctl reload-configuration<br />

Liest die eigene Konfiguration neu ein<br />

Abbildung 3: »initctl show‐config« listet alle<br />

Jobs und ihre Ereignisse auf. Diese recht<br />

unübersichtlichen Informationen …<br />

114 Ausgabe 01-2012 Admin www.admin-magazin.de


Upstart<br />

Basics<br />

Mit dem zusätzlichen Parameter »‐e«<br />

dröselt er auch komplexe Bedingungen<br />

auf und zeigt an, welche Teile Ereignisse<br />

und welche andere Jobs sind (siehe auch<br />

Kasten „Troubleshooting“).<br />

Ein Absturz des Lärmmessprogramms<br />

wäre ziemlich unangenehm. Selbst<br />

wenn ein Administrator sofort eingreifen<br />

würde, gingen für einige Zeit wertvolle<br />

Messwerte verloren. Glücklicherweise<br />

kann Upstart einen Dienst beobachten<br />

und bei einem Absturz automatisch neustarten.<br />

Dazu genügt es, in der Job-Datei<br />

eine Zeile mit dem Schlüsselwort<br />

respawn<br />

wait-for-state<br />

start on stop on $WAIT_FOR<br />

start on stop on<br />

control-alt-delete<br />

start on stop on<br />

control-alt-delete<br />

friendly-recovery<br />

start on stop on<br />

recovery<br />

network-interface-security<br />

start on stop on<br />

networking<br />

ufw<br />

start on stop on<br />

start on stop on<br />

m odemmanager<br />

start on stop on network-manager<br />

start on stop on<br />

plymouth-upstart-bridge<br />

start on stop on<br />

avahi-daemon<br />

start on stop on<br />

cups<br />

start on stop on<br />

tty1<br />

start on stop on<br />

setvtrgb<br />

start on stop on<br />

plymouth<br />

plymouth-splash<br />

start on stop on<br />

start on stop on<br />

lxdm<br />

start on stop on<br />

upstart-socket-bridge<br />

start on stop on<br />

mountall-net<br />

start on stop on<br />

network-interface<br />

start on stop on<br />

failsafe<br />

start on stop on<br />

dbus<br />

start on stop on<br />

rsyslog<br />

start on stop on<br />

xdm<br />

start on stop on<br />

atd<br />

start on stop on<br />

tty6<br />

start on stop on<br />

tty4<br />

start on stop on<br />

tty2<br />

start on stop on<br />

alsa-restore<br />

start on stop on<br />

socket<br />

net-device-up<br />

net-device-down<br />

net-device-added<br />

static-network-up<br />

local-filesystem s<br />

hwclock-save<br />

start on stop on<br />

alsa-store<br />

start on stop on<br />

zu hinterlassen. Damit Upstart den Dienst<br />

im Auge behalten kann, startet es übrigens<br />

standardmäßig alle Prozesse im Vordergrund.<br />

Man kann das nur umgehen,<br />

indem sich der hinter »exec« eingetragene<br />

Dienst selbst forkt.<br />

Der automatische Neustart hat allerdings<br />

auch einen kleinen Haken: Würde der<br />

Dienst durch einen Programmfehler immer<br />

wieder das Zeitliche segnen, würde<br />

ihn Upstart in einer Endlosschleife immer<br />

wieder reanimieren – und damit unter<br />

Umständen sogar das ganze System<br />

überlasten. Um das zu verhindern, ist es<br />

möglich, in der Job-Datei eine Zeitspanne<br />

vorzugeben. Mit dem Zweizeiler:<br />

oem-config<br />

start on stop on<br />

kdm<br />

login-session-start<br />

uxlaunch<br />

start on stop on<br />

desktop-shutdown<br />

filesystem<br />

respawn 5 60<br />

plymouth-stop<br />

start on<br />

stop on<br />

start on stop on<br />

gdm<br />

start on stop on<br />

desktop-session-start<br />

graphics-device-added<br />

net-device-removed<br />

deconfiguring-networking<br />

respawn<br />

ubiquity<br />

start on stop on<br />

lightdm<br />

start on stop on<br />

udev-fallback-graphics<br />

start on stop on<br />

drm-device-added<br />

binfmt-support<br />

start on stop on<br />

plymouth-log<br />

start on stop on<br />

rc-sysinit<br />

start on stop on<br />

tty3<br />

start on stop on<br />

tty5<br />

start on stop on<br />

apport<br />

start on stop on<br />

failsafe-boot<br />

irqbalance<br />

runlevel<br />

fährt Upstart das Messprogramm lediglich<br />

fünf Mal in 60 Sekunden neu hoch. Das<br />

erste »respawn« stellt dabei nur die Zeitspanne<br />

ein, das zweite aktiviert schließlich<br />

die automatische Wiederbelebung.<br />

start on<br />

stop on<br />

ureadahead<br />

start on stop on<br />

rc<br />

start on stop on<br />

unmounted-remote-filesystems<br />

acpid<br />

start on stop on<br />

Reinigungspersonal<br />

dmesg<br />

start on<br />

stop on<br />

mountall-shell<br />

start on stop on<br />

hwclock<br />

start on stop on<br />

mountall-reboot<br />

start on stop on<br />

console-setup<br />

start on stop on<br />

udev-finish<br />

start on stop on udevmonitor<br />

start on stop on<br />

mountall<br />

start on stop on<br />

upstart-udev-bridge<br />

start on stop on<br />

udevtrigger<br />

start on stop on<br />

remote-filesystems<br />

all-swaps<br />

mounting<br />

anacron<br />

start on stop on<br />

cron<br />

start on stop on<br />

rcS<br />

start on stop on<br />

* -device-removed<br />

*-device-offline<br />

*-device-added<br />

*-device-changed<br />

Häufig muss man vor dem Start eines<br />

Dienstes noch ein paar Dinge geraderücken<br />

beziehungsweise nach seinem<br />

Ableben etwas aufräumen. Das Lärmmessprogramm<br />

will seine Daten im Verzeichnis<br />

»/var/log/laerm« ablegen. Es<br />

wäre also eine gute Idee, es vor seinem<br />

Start einzurichten. Glücklicherweise darf<br />

man in der Job-Datei ein Shellskript hinterlegen,<br />

das Upstart noch vor dem eigentlichen<br />

Start des Dienstes ausführt:<br />

*-device-online<br />

udev<br />

start on stop on<br />

virtual-filesystems<br />

pre‐start script<br />

module-init-tools<br />

start on stop on<br />

procps<br />

# Erstelle alle notwendigen Verzeichnisse<br />

hostnam e<br />

start on stop on<br />

start on stop on<br />

startu p<br />

mkdir ‐p /var/log/laerm<br />

end script<br />

ureadahead-other<br />

start on<br />

stop on<br />

mounted-var<br />

start on stop on<br />

mounted-run<br />

start on stop on<br />

mounted-dev<br />

start on stop on<br />

mounted-debugfs<br />

start on stop on<br />

mounte<br />

d<br />

Das Skript steht dabei zwischen »pre‐start<br />

script« und »end script«. Es ist ausschließlich<br />

für vorbereitende Maßnahmen ge-<br />

mounted-proc<br />

start on stop on<br />

mounted-tmp<br />

start on stop on<br />

Generated on 2011-12-06 18:03:32.492107 by initctl2dot<br />

(from file data).<br />

Boxes of color #DCDCDC denote jobs.<br />

Solid diamonds of color thistle denote events.<br />

Dotted diamonds denote ’glob’ events.<br />

Emits denoted by green lines.<br />

Start on denoted by blue lines.<br />

Stop on denoted by red lines.<br />

Listing 1: Beispiel für eine einfache Job-Datei<br />

01 # Start eines Lärmmessprogramms<br />

Abbildung 4: … lassen sich in ein wesentlich übersichtlicheres Diagramm verwandeln. Die Pfeile kennzeichnen<br />

dabei die Abhängigkeiten der Jobs untereinander.<br />

02 start on filesystem<br />

03 exec /usr/bin/messd ‐‐log=/var/log/laerm/messung.log<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

115


Basics<br />

Upstart<br />

dacht und darf nicht den eigentlichen<br />

Dienst starten. Im obigen Beispiel stellt<br />

es sicher, dass die Messsoftware das Verzeichnis<br />

für Ihre Daten findet. Analog<br />

gibt es eine »post‐stop script«-Sektion,<br />

die Upstart immer dann abarbeitet, wenn<br />

der Dienst terminiert. Für gewöhnlich<br />

räumen die dortigen Shell-Befehle auf,<br />

beim Messprogramm etwa:<br />

post‐stop script<br />

# Räume auf:<br />

rm ‐rf /var/log/laerm<br />

end script<br />

Abschließend gibt es noch ein »post‐start«-<br />

Skript, das Upstart immer zeitgleich mit<br />

dem hinter »exec« angegebenen Dienst<br />

startet.<br />

Die oben aufgeführten »pre‐start« und<br />

»post‐stop«-Skripte bestehen eigentlich<br />

nur aus einer Zeile, weshalb man sie<br />

auch etwas kürzer als<br />

pre‐start exec mkdir ‐p /var/log/laerm<br />

und<br />

Angaben informieren Administratoren<br />

über den Zweck des Jobs und nennen<br />

einen Ansprechpartner.<br />

Sobald das Ereignis »filesystem« eintritt,<br />

aktiviert Upstart den Job. Gleichzeitig<br />

setzt es das Ereignis »starting messen«<br />

ab, auf das andere Jobs reagieren können.<br />

Außerdem führt es die Shell-Befehle<br />

hinter »pre‐start script« aus. Sobald das<br />

geschehen ist, aktiviert es den Dienst<br />

»/usr/bin/messd« und verkündet gleichzeitig<br />

das Ereignis »started messen«. Diesen<br />

Ablauf veranschaulicht noch einmal<br />

Abbildung 6.<br />

Altes Laufniveau<br />

Viele Softwarepakete bringen noch keine<br />

Job-Dateien, sondern nur ältere System-<br />

V-Init-Skripte mit. Das gilt sogar für<br />

die meisten Dienste aus den aktuellen<br />

Ubuntu-Repositories. Wer beispielsweise<br />

den Apache-Webserver installiert, sucht<br />

unter »/etc/init« vergeblich eine passende<br />

Job-Datei. Stattdessen wandert<br />

wie zu guten alten Zeiten ein System-V-<br />

Init-Skript ins Verzeichnis »/etc/init.d«.<br />

Damit solche alten Skripte unter Ubuntu<br />

nicht über Nacht nutzlos werden, greift<br />

Upstart zu einem kleinen Trick: Ganz<br />

zum Schluss aktiviert es den Job »rc«,<br />

welcher das Skript »/etc/init.d/rc« ausführt.<br />

Dieses wiederum arbeitet alle alten<br />

SystemV-Init-Skripte unter »/etc/init.d«<br />

ab. Den dabei zu verwendenden Runlevel<br />

zieht Upstart entweder aus der Datei<br />

»/etc/inittab« oder übernimmt ihn von<br />

der Kernel-Kommandozeile. Im Zweifelsfall<br />

gilt der Runlevel 2, der zu einem<br />

System mit grafischer Oberfläche im<br />

Netzwerkbetrieb führt.<br />

Soll ein Job erst zusammen mit den Skripten<br />

eines bestimmten Runlevels anlaufen,<br />

verwendet man das »runlevel«-Ereignis:<br />

start on runlevel [23]<br />

In diesem Fall würde der Job nur in den<br />

Runlevels 2 und 3 starten – und zwar parallel<br />

zu allen darin liegenden Skripten.<br />

Das »runlevel«-Ereignis erzeugt Upstart,<br />

post‐stop exec rm ‐rf /var/log/laerm<br />

schreiben darf.<br />

Alle zusammen<br />

Die komplette Job-Datei der Messstation<br />

zeigt noch einmal Listing 2. Neu sind<br />

dort nur die ersten beiden Zeilen: Hinter<br />

»description« steht eine Beschreibung des<br />

Jobs, hinter »author« der Verfasser. Beide<br />

Listing 2: »messen.conf«<br />

01 description "Beispiel für einen Job"<br />

02 author "Tim Schürmann"<br />

03 <br />

04 start on filesystem<br />

05 exec /usr/bin/messd ‐‐log=/var/log/laerm/messung.log<br />

06 <br />

07 pre‐start script<br />

08 # Erstelle notwendiges Verzeichnis:<br />

09 mkdir ‐p /var/log/laerm<br />

10 end script<br />

11 <br />

12 post‐stop script<br />

13 # Räume auf:<br />

14 rm ‐rf /var/log/laerm<br />

15 end script<br />

16 <br />

17 respawn<br />

18 respawn limit 5 60<br />

19 stop on filesystem<br />

Abbildung 5: Die Manpage zu »upstart‐events« liefert nur einen kleinen Teil aller möglichen Ereignisse.<br />

116 Ausgabe 01-2012 Admin www.admin-magazin.de


sobald es die System-V-Init-Skripte eines<br />

Runlevels abarbeitet. Anhalten lässt sich<br />

ein solcher Job analog:<br />

stop on runlevel [!2345]<br />

Das Ausrufezeichen steht hier für die<br />

Verneinung.<br />

Des Weiteren imitiert Upstart das Verhalten<br />

des alten System-V-Init. So kann man<br />

weiterhin mit<br />

telinit 2<br />

in den Runlevel 2 wechseln, auch »reboot«<br />

und »shutdown« funktionieren<br />

weiterhin wie gewohnt. Unter der Haube<br />

sendet »telinit« jetzt allerdings nur ein<br />

entsprechendes Ereignis an Upstart. Den<br />

Standard-Runlevel setzt man zudem in<br />

der Job-Datei »rc‐sysinit.conf« hinter der<br />

Variablen »DEFAULT_RUNLEVEL«.<br />

Fazit<br />

Upstart räumt mit den alten unübersichtlichen<br />

Runlevels auf, bietet mit den einfach<br />

aufgebauten Jobs eine viel simplere<br />

Konfiguration und beschleunigt durch<br />

die Parallelisierung den Systemstart.<br />

Der System-V-Init-Ersatz ist jedoch kein<br />

Allheilmittel: Je nachdem, wie die Jobs<br />

voneinander abhängen, muss Upstart im<br />

schlimmsten Fall doch wieder stur einen<br />

nach dem anderen abarbeiten.<br />

Upstart befindet sich immer noch in der<br />

Entwicklung. Mit jeder neuen Version<br />

und jedem Ubuntu-Release kommen<br />

starting job<br />

started job<br />

stopping job<br />

stopped job<br />

pre-start<br />

exec<br />

post-start<br />

Dienst läuft<br />

pre-stop<br />

kill-Signal<br />

post-stop<br />

Zeit<br />

Abbildung 6: Der Lebenslauf eines Jobs: In der<br />

linken Spalte stehen die Ereignisse, rechts die von<br />

Upstart ausgeführten Aktionen.<br />

www.admin-magazin.de<br />

neue Funktionen oder kleinere Verbesserungen<br />

hinzu. In Zukunft soll es beispielsweise<br />

auch Ereignisse zeitgesteuert<br />

auslösen und somit gleichzeitig die<br />

Aufgaben von »cron« übernehmen. Die<br />

Entwickler von Upstart weisen deshalb<br />

auch ausdrücklich darauf hin, dass sich<br />

der Aufbau der Konfigurationsdateien<br />

durchaus noch ändern kann – was auch<br />

laufend geschieht. So kam in Version<br />

1.3 das Schlüsselwort »kill signal« hinzu,<br />

mit dem man in einer Job-Datei das SIG-<br />

TERM-Signal abfangen kann.<br />

Den aktuellen Entwicklungsstand findet<br />

man auf der Launchpad-Seite [2], die<br />

Upstart-Homepage zeigte bei Redaktionsschluss<br />

immer noch auf die veraltete<br />

Version 0.6.7 [1]. Wer eigene Jobs schreiben<br />

oder tiefer in ihre Programmierung<br />

einsteigen möchte, sollte unbedingt das<br />

ausführliche Cookbook studieren [3]. Es<br />

enthält viele wertvolle Tipps sowie Standardlösungen<br />

für häufig auftauchende<br />

Probleme und Fragen.<br />

Auf Upstart trifft man im Moment lediglich<br />

in Ubuntu, seinen offiziellen Derivaten<br />

(wie Kubuntu), den direkt darauf<br />

aufbauenden Distributionen, wie Linux-<br />

Mint, im bereits erwähnten RHEL 6 und<br />

in Googles Chromium OS. Die Tage in<br />

RHEL dürften allerdings gezählt sein, ist<br />

doch Fedora seit Version 15 auf den Konkurrenten<br />

»systemd« umgestiegen [4].<br />

Ihn favorisieren auch viele Distributionen.<br />

Da Canonical sein eigenes Baby sehr<br />

wahrscheinlich nicht verstoßen wird,<br />

dürfen sich Administratoren zukünftig<br />

wohl mit gleich mehreren Init-Varianten<br />

herumschlagen. (ofr)<br />

n<br />

Infos<br />

[1] Upstart: [http:// upstart. ubuntu. com/]<br />

[2] Upstart auf Launchpad:<br />

[https:// launchpad. net/ upstart]<br />

[3] Upstart Cookbook:<br />

[http:// upstart. ubuntu. com/ cookbook/]<br />

[4] Systemd: [http:// freedesktop. org/ wiki/​<br />

Software/ systemd]<br />

Der Autor<br />

Tim Schürmann ist selbstständiger Diplom-<br />

Informatiker und derzeit hauptsächlich als freier<br />

Autor unterwegs. Zu seinen Büchern gesellen<br />

sich zahlreiche Artikel, die in Zeitschriften und<br />

auf Internetseiten in mehreren Ländern veröffentlicht<br />

wurden.<br />

CALL<br />

FOR<br />

PAPERS<br />

BIS 31.01.<br />

Die Konferenz zum Thema Einsatz<br />

von Open Source Software in Rechenzentren<br />

und großen IT Umgebungen.<br />

Schwerpunktthema 2012:<br />

AGILE INFRASTRUCTURES<br />

wwww.netways.de/osdc<br />

presented by<br />

NETWAYS ®<br />

Ausgabe 01-2012<br />

117


Basics<br />

Einführung in LVM<br />

© svl861, 123RF<br />

Einführung in LVM<br />

Tortenstück<br />

Feste Partitionen auf Linux-Systemen lassen sich mit Tools wie Fdisk<br />

schnell erstellen, erscheinen aber immer im schlechtestmöglichen<br />

moment auf einmal falsch aufgeteilt oder zu klein. LVM verursacht bei der<br />

Installation ein wenig mehr Aufwand, der sich bald auszahlt. Charly Kühnast<br />

Wenn auf einem klassisch partitionierten<br />

System der Platz in einer Partition knapp<br />

wird, hat der Admin zunächst zwei Möglichkeiten.<br />

Er kann einen weiteren Datenträger<br />

auf einem neuen Mountpunkt<br />

einbinden und sich damit abfinden, dass<br />

er seine Pfade anpassen oder mit Alias-<br />

Konstruktionen arbeiten muss. Oder er<br />

ersetzt die Platte(n) durch größere und<br />

spielt ein Backup des Gesamtsystems<br />

auf die neuen Datenträger ein. Bei dieser<br />

Vorgehensweise steht das System für<br />

eine längere Zeit nicht zur Verfügung,<br />

und die Wahrscheinlichkeit ist hoch, dass<br />

auch die neuen Platten irgendwann wieder<br />

zu klein sind. LVM eröffnet einen<br />

Ausweg aus diesem Dilemma. Es legt<br />

sich als logische Schicht zwischen die<br />

physischen Datenträger oder Partitionen<br />

und das Dateisystem.<br />

Bevor dieser Artikel das an einem praktischen<br />

Beispiel demonstriert, lernen Sie<br />

die wichtigsten Begriffe der LVM-Welt<br />

kennen. Physical Volumes (PVs) sind<br />

Block-Devices, also eine ganze Festplatte<br />

oder eine Partition. Damit LVM ein PV<br />

nutzen kann, muss es mit einem Befehl<br />

initialisiert werden, den wir gleich kennenlernen<br />

werden. Dabei wird ein LVM-<br />

Label und einige Metadaten auf das PV<br />

geschrieben. Das PV wird dabei in gleich<br />

große Einheiten unterteilt (4 MByte per<br />

Default), die Physical Extents (PE) heißen.<br />

Ein PE stellt die kleinstmögliche allokierbare<br />

Datenmenge dar. Abbildung 1<br />

zeigt die Zusammenhänge grafisch.<br />

Wenn ein oder mehrere Physical Volumes<br />

existieren, können Sie daraus eine<br />

Volume Group (VG) erstellen. Auch sie<br />

besteht aus vielen kleinen Einheiten, den<br />

Logical Extents. In der Volume Group<br />

können die Logical Extents auf Physical<br />

Extents verweisen, die auf unterschiedlichen<br />

physischen Datenträgern liegen –<br />

genau diese Fähigkeit macht die Flexibilität<br />

und den Charme von LVM aus.<br />

Die fertige Volume Group ist der Speicherplatz-Pool,<br />

aus dem Sie später den<br />

Platz für Ihre logischen Partitionen (Logical<br />

Volumes, LV) schöpfen werden. Ein<br />

Logical Volume wird mit einem Dateisystem<br />

formatiert und steht dann dem<br />

Betriebssystem zur Verfügung.<br />

Die Befehle für die Arbeit mit den drei<br />

Ebenen PV, VG und LV sind konsequent<br />

nach dem gleichen Schema benannt,<br />

etwa »pvcreate«, »vgcreate«, »lvcreate«<br />

oder »pvscan«, »vgscan« und »lvscan«.<br />

Ein praktisches Beispiel<br />

Das Beispiel-System hat zwei Festplatten<br />

(oder SSDs, für LVM ist das unerheblich)<br />

zu je 100 GByte. Sie hören auf »/dev/<br />

sda« und »/dev/sdb«. Auf »/dev/sda«<br />

sind drei Partitionen angelegt. Die erste,<br />

»sda1«, wird für den Auslagerungsspeicher<br />

(Swap) genutzt und ist fünf GByte<br />

groß. Das Wurzel-Dateisystem »/« liegt<br />

auf »sda2« und bekommt 20 GByte. Die<br />

restlichen 75 Gigabyte bekommt die Partition<br />

»sda3«. Sie soll per LVM mit der gesamten<br />

zweiten Festplatte »sdb« zusammengefasst<br />

werden. Das so entstandene<br />

Logical Volume mit einer Größe von 175<br />

GBbyte soll dem System unter »/backup«<br />

zur Verfügung gestellt werden.<br />

Wichtig ist, dass auf den Platten oder<br />

Partitionen, die LVM benutzen soll, noch<br />

kein Dateisystem angelegt ist. Ist das der<br />

Fall, müssen Sie es zunächst mithilfe von<br />

»fdisk« wieder entfernen. Jetzt bereiten<br />

Sie mit dem Kommando »pvcreate« die<br />

Partitionen »/dev/sda3« und »/dev/sbd«<br />

für die Benutzung mit LVM vor:<br />

pvcreate /dev/sda3 /dev/sdb<br />

Im Erfolgsfall antwortet das System mit:<br />

Physical volume "/dev/sda3" successfullyU<br />

created<br />

Physical volume "/dev/sdb" successfullyU<br />

created<br />

Wenn an dieser Stelle etwas schiefgeht,<br />

liegt es fast immer daran, dass bereits ein<br />

Dateisystem auf der Partition existiert.<br />

Der Befehl »pvscan« gibt eine Liste aller<br />

Physical Volumes aus (Listing 1).<br />

Wer mehr Details sehen möchte, benutzt<br />

den Befehl »pvdisplay«. Er liefert zusätzlich<br />

Informationen über die Anzahl der<br />

Physical Extents, wie viel Platz die Metadaten<br />

belegen, die UUID und mehr.<br />

118 Ausgabe 01-2012 Admin www.admin-magazin.de


Einführung in LVM<br />

Basics<br />

Im nächsten Schritt fassen Sie die frisch<br />

erstellten Physical Volumes zu einer Volume<br />

Group zusammen, das Kommando<br />

dazu lautet – wenig überraschend –<br />

»vgcreate«.<br />

vgcreate vg_backup /dev/sda3 /dev/sdb<br />

Vgcreate erwartet als ersten Parameter<br />

den Namen der Volume Group, den<br />

Sie frei wählen können – jedenfalls in<br />

gewissen Grenzen. Auf Umlaute und<br />

exotische Sonderzeichen sollte man verzichten,<br />

Binde- und Unterstriche sind<br />

aber erlaubt. Nach dem Namen folgen<br />

in beliebiger Reihenfolge die Bezeichner<br />

der Physical Volumes, die der neuen Volume<br />

Group hinzugefügt werden sollen.<br />

Analog zu den Befehlen »pvscan« und<br />

»pvdisplay«, die Sie schon kennengelernt<br />

haben, können Sie sich mit »vgscan« und<br />

»vgdisplay« Informationen über die Volume<br />

Groups anzeigen lassen.<br />

Aus dem Platz, den die Volume Group<br />

bietet, können Sie nun ein oder mehrere<br />

Logical Volumes anlegen – im Beispiel<br />

soll es ein einziges LV ein, das den Namen<br />

»lv_backup« erhalten soll, mit einer<br />

Größe von 170 GByte. Die vollen 175<br />

GByte stehen nicht zur Verfügung, weil<br />

LVM etwas Platz für seine Verwaltungsinformationen<br />

benötigt.<br />

lvcreate ‐L 170G ‐n lv_backup vg_backup<br />

Und selbstredend gibt es auch auf dieser<br />

Ebene auskunftsfreudige Helferlein,<br />

nämlich »lvscan« und »lvdisplay«. Der<br />

letzte Schritt besteht im Anlegen eines<br />

p<br />

PE<br />

PE<br />

v<br />

PE<br />

PE<br />

1 2 N-1 N<br />

Dateisystems. In diesem Beispiel soll Ext4<br />

zum Einsatz kommen:<br />

mkfs ‐t ext4 /dev/vg_backup/lv_backup<br />

Das Dateisystem können Sie jetzt mounten<br />

und sofort benutzen. Damit das<br />

Ganze auch reboot-fest ist, tragen Sie es<br />

aber besser in die Datei »/etc/fstab« ein.<br />

/dev/vg_backup/lv_backup /backup<br />

ext4 errors=remount‐ro 0 1<br />

Mehr Platz<br />

Irgendwann reichen die 170 GByte nicht<br />

mehr aus, eine Erweiterung steht an. Sie<br />

bauen also eine weitere Platte ein – im<br />

Beispiel soll sie 500 GByte groß sein –<br />

und nutzen LVM, um den zusätzlichen<br />

Plattenplatz unterbrechungsfrei zur Verfügung<br />

stellen zu können.<br />

Die folgenden Schritte sind in der Praxis<br />

erprobt und erfahrungsgemäß unproblematisch,<br />

ein aktuelles Backup zu haben,<br />

ist aber immer eine gute Idee. Das neue<br />

Laufwerk, es heißt »/dev/sdc«, muss zunächst<br />

für LVM initialisiert werden:<br />

pvcreate /dev/sdc<br />

Danach fügen Sie es zur bereits exisitierenden<br />

Volume Group »vg_backup«<br />

hinzu. Dazu benutzen Sie den Befehl<br />

»vgextend« (extend = erweitern):<br />

vgextend vg_backup /dev/sdc<br />

Mit dem Kommando »vgdisplay« können<br />

Sie sich davon überzeugen, dass die Er­<br />

U<br />

weiterung der Volume Group geklappt<br />

hat:<br />

vgdisplay ‐v vg_backup<br />

Das Logical Volume und das Dateisystem<br />

wissen davon aber noch nichts. Dem<br />

Logical Volume fügen Sie den frischen<br />

Speicherplatz mit<br />

lvextend ‐L 500G /dev/vg_backup/lv_backup<br />

hinzu. Zuletzt kommt das Filesystem an<br />

die Reihe. Zum Glück lassen sich die<br />

meisten modernen Dateisysteme im laufenden<br />

Betrieb vergrößern. Für Ext4 erledigt<br />

das der Befehl<br />

resize2fs /dev/vg_backup/lv_backup<br />

Wenn der Befehl, wie hier, ohne weitere<br />

Parameter angegeben wird, vergrößert er<br />

das Filesystem auf die maximale Größe,<br />

die das logische Volume hergibt.<br />

Ausblick<br />

Dieser Workshop hat gezeigt, wie man<br />

mithilfe von LVM recht einfach Volumes<br />

anlegen kann, die sich online vergrößern<br />

und verkleinern lassen. Das verschafft<br />

dem professionellen Administrator die<br />

nötige Flexibilität, um wachsenden Datenmengen<br />

im lokalen Storage oder auf<br />

dem Server gewachsen zu sein. In einer<br />

weiteren Folge zu LVM wird es um Snapshots<br />

gehen, die den aktuellen Zustand<br />

des Speichers sichern. (ofr)<br />

n<br />

Infos<br />

[1] LVM Howto:<br />

[http:// www. tldp. org/ HOWTO/ LVM‐HOWTO]<br />

[2] Mailingliste zu LVM: [http:// www. redhat.​<br />

com/ mailman/ listinfo/ linux‐lvm]<br />

Physical Volume<br />

Volume Group 1<br />

... Volume Group Z<br />

Physical Volume 1<br />

Physical Volume X<br />

PE<br />

PE<br />

PE<br />

PE<br />

1 2 N-1 N<br />

/root<br />

/home ... /var<br />

Logical Volume 1<br />

Logical Volume 2<br />

Logical Volume Y<br />

Abbildung 1: Physical und Logical Volumes sind die Elemente, aus denen Volume Groups aufgebaut sind.<br />

(Quelle: Blacknova/​Wikipedia)<br />

PE<br />

PE<br />

PE<br />

PE<br />

1 2 N-1 N<br />

Der Autor<br />

Charly Kühnast administriert Unix-Betriebssysteme<br />

im Rechenzentrum Niederrhein in Moers.<br />

Zu seinen Aufgaben gehören die Sicherheit und<br />

Verfügbarkeit der Firewalls und der DMZ. Im heißen<br />

Teil seiner Freizeit frönt er dem Kochen, im<br />

feuchten Teil der Süßwasser-Aquaristik und im<br />

östlichen lernt er Japanisch.<br />

Listing 1: »pvscan«<br />

01 PV /dev/sda3 lvm2 [74.59 GB]<br />

02 PV /dev/sdb lvm2 [98.36 GB]<br />

03 Total: 2 [172.85 GB] / in use: 0 [0 ] / in no<br />

VG: 2 [172.85 GB]<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

119


Programmieren<br />

Expect<br />

© Manav Lohia, 123RF<br />

Skripting mit Expect und Tcl<br />

Ferngesteuert<br />

Für interaktives Skripting eignet sich die Tcl-Bibliothek Expect besonders gut. Damit lassen sich zum Beispiel<br />

virtuelle Maschinen in der Cloud, Atomuhren oder SSH-Sessions fernsteuern, wie dieser Artikel zeigt. Æleen Frisch<br />

Auch wenn sich mit der Bash oder anderen<br />

Unix-Shells viele Skripting-Aufgaben<br />

erledigen lassen, stößt man schnell<br />

an Grenzen, wenn ein Skript mit einem<br />

Kommandozeilenprogramm interagieren<br />

soll. Zum Beispiel sind viele Password-<br />

Prompts, etwa ein SSH-Login, so konfiguriert,<br />

dass sie nur Eingaben von einem<br />

Terminal verarbeiten. Auch die Ausgabe<br />

von Programmen zu verarbeiten, erfordert<br />

einiges an Anstrengung, wenn es<br />

sich um eine interaktive Session handelt.<br />

Das Expect-Tool ist dagegen extra dafür<br />

gemacht, interaktive Prozesse zu automatisieren<br />

[1], [2]. Die auf Expect basierenden<br />

Programme sind sogenannte<br />

Chat-Skripts, die aus einer Reihe von<br />

Prompt-Antwort-Paaren bestehen. Expect<br />

basiert auf der Skriptsprache Tcl<br />

und wurde von Don Libes geschrieben.<br />

Verfügbar ist es für die meisten Linuxund<br />

Unix-Varianten. Selbst für Windows<br />

gibt es einen Port [3].<br />

Als einfaches Beispiel für die Anwendung<br />

von Expect soll ein Skript dienen,<br />

das eine SSH-Verbindung zu einem Host<br />

aufbaut, den man auf der Kommandozeile<br />

als Argument übergibt. Die erste<br />

Zeile des Skripts in Listing 1 ist das Tcl-<br />

Konstrukt, das der Variablen »host« mit<br />

»set« einen Wert zuweist. Das Gebilde<br />

in eckigen Klammern extrahiert mit dem<br />

Tcl-Kommando »lindex« aus dem Array<br />

»$argv« den ersten Wert (die Zählung<br />

startet bei Null). Die folgende Zeile weist<br />

der Variablen »timeout« den Wert 5 zu.<br />

Es handelt sich dabei um eine von Expect<br />

automatisch verwendete Variable,<br />

die festlegt, wie lange das Skript auf eine<br />

Eingabe wartet.<br />

Der Rest des Listings zeigt spezielle Expect-Schlüsselwörter,<br />

die in den meisten<br />

solcher Skripte vorkommen. Die drei<br />

Wichtigsten davon sind:<br />

n »spawn«: Startet ein Kommando und<br />

etabliert Ein- und Ausgabeverbindungen<br />

damit.<br />

n »expect«: Der namensgebende Befehl<br />

des Expect-Tools. Wartet darauf, dass<br />

in der Ausgabe des Befehls die angegebene<br />

Zeichenkette auftritt oder bis der<br />

als Timeout vorgegebene Zeitspanne<br />

verstrichen ist. Alles, was vor der gesuchten<br />

Zeichenkette auftritt, wird<br />

ignoriert, es genügt also meist, nach<br />

den letzten typischerweise auftretenten<br />

Zeichen einer Programmausgabe<br />

zu suchen. Der Default-Wert für den<br />

Timeout ist zehn Sekunden, der Wert<br />

»‐1« schaltet den Timeout ab.<br />

n »send«: Schickt eine Zeichenkette an<br />

den gestarteten Prozess.<br />

In Listing 1 versucht Zeile 5 per SSH eine<br />

Verbindung zum Rechner »$host« aufzubauen.<br />

Das folgende »expect« wartet<br />

auf die Zeichenkette »(yes/no)?«, die das<br />

Ende der Ausgabe von SSH beim Austausch<br />

der Schlüssel anzeigt. Zeile 7 antwortet<br />

daraufhin mit »yes« und dem Return-Zeichen.<br />

Im nächsten Schritt wartet<br />

das Skript auf die Ausgabe »password:«,<br />

dessen Erscheinen es mit dem Password<br />

plus Return-Zeichen quittiert (Zeile 10).<br />

Schließlich wartet es auf den Prompt der<br />

Shell auf dem entfernten Rechner, hier<br />

ein Dollar-Zeichen (Zeile 11). Ist es gefunden,<br />

übergibt das Skript die Kontrolle<br />

per »interact« an den Benutzer. Der Ablauf<br />

des Skripts ist in Abbildung 1 zu<br />

sehen.<br />

Interessant ist hier der Unterschied der<br />

beiden »expect«-Kommandos. Im ersten<br />

Fall (Listing 1, Zeile 7), ist ihm ein Block<br />

120 Ausgabe 01-2012 Admin www.admin-magazin.de


Expect<br />

Programmieren<br />

mit dem Send-Befehl untergeordnet. Er<br />

wird nur dann ausgeführt, wenn das<br />

Expect-Statement auch den gesuchten<br />

String findet. Taucht er während des<br />

Timeout-Zeitraums nicht auf, wird auch<br />

das Send nicht ausgeführt. Im Gegensatz<br />

dazu, führt das Skript das zweite Send<br />

in Zeile 10 auf jeden Fall aus, auch wenn<br />

nie ein Passwort-Prompt erscheint. Eine<br />

Expect-Anweisung ist folgendermaßen<br />

aufgebaut:<br />

expect {<br />

item1 {<br />

statements<br />

}<br />

item2 {<br />

statements<br />

}<br />

...<br />

}<br />

Die geschweiften Klammern nach dem<br />

Schlüsselwort »expect« sind nur dann nötig,<br />

wenn man auf mehr als eine Zeichenkette<br />

warten will. Beispiele dazu zeigt<br />

dieser Artikel weiter unten. Die Suche<br />

nach den Strings findet üblicherweise in<br />

der Reihenfolge statt, in der sie aufgeführt<br />

sind. Beim ersten passenden wird dann<br />

der dazugehörige Block ausgeführt.<br />

Das nächste Beispiel soll eine virtuelle<br />

Maschine in Amazons Cloud konfigurieren<br />

und dabei passwortlose Logins für<br />

den Default-User »ec2‐user« wie auch für<br />

den Root-Acount ermöglichen. Das Expect-Skript<br />

schickt dazu den Public Key<br />

des aktuellen Users an den Amazon-Host<br />

und fügt ihn dort der Datei »~/.ssh/<br />

authorized_keys« beider Accounts hinzu.<br />

Zusätzlich ändert es die SSH-Konfiguration,<br />

sowohl des Root-Accounts wie auch<br />

der globalen Konfiguration des Daemons,<br />

den es außerdem noch neu startet. Hat<br />

alles geklappt, verlangen weder »ssh«<br />

noch »scp« in Zukunft nach Passwort<br />

oder ‐phrase.<br />

Login mit Zertifikat<br />

Das Expect-Skript heißt »ec2_ssh_init«,<br />

der erste Teil davon ist in Listing 2 zu sehen.<br />

Als Erstes speichert es das erste Argument<br />

des Aufrufs in der Variablen »h«.<br />

Es startet einen »scp«-Prozess und wartet<br />

auf dessen Ausgabe. Mit dem Schalter<br />

»‐i« verwendet der Befehl zur Authentifizierung<br />

gegenüber der Amazon-Instanz<br />

die dazugehörige Schlüsseldatei »AEF.<br />

pem«. Als Nächstes wartet das Skript auf<br />

den SSH-Schlüsselaustausch und bestätigt<br />

ihn mit »yes«. Am Ende schließt es<br />

die Verbindung und wartet noch einmal<br />

zehn Sekunden.<br />

Der in Listing 3 abgedruckte Rest des<br />

Skripts führt auf der Amazon-Instanz<br />

eine Reihe von Befehlen aus und öffnet<br />

dafür zu Beginn eine SSH-Sitzung. Alle<br />

Expect-Anweisungen warten auf Shell-<br />

Prompt-Zeichen, entweder des Accounts<br />

»ec2‐user« oder von Root. Zuerst fügt das<br />

Skript den Inhalt des kopierten Public-<br />

Keys der Datei »~/.ssh/authorized_keys«<br />

hinzu und löscht anschließend den Key.<br />

Dann öffnet es per »sudo« eine Root-<br />

Shell und kopiert die Authorized-Keys<br />

des EC2-Users. Das Skript wechselt<br />

dann in das Konfigurationsverzeichnis<br />

des SSH-Servers, macht eine Kopie der<br />

Konfigurationsdatei und editiert sie mit<br />

Listing 2: »ec2_ssh_init« (Teil 1)<br />

01 #!/usr/bin/expect<br />

02 <br />

03 set h [lindex $argv 0]<br />

04 spawn /usr/bin/scp ‐i /home/aefrisch/.ec2/AEF.pem<br />

/home/aefrisch/.ssh/id_rsa.pub ec2‐user@${h}:<br />

05 expect "(yes/no)? "<br />

06 send "yes\r"<br />

07 expect "known hosts"<br />

08 close<br />

Listing 1: Automatisches SSH-Login<br />

01 #!/usr/bin/expect<br />

02 <br />

03 set host [lindex $argv 0]<br />

04 set timeout 5<br />

05 spawn /usr/bin/ssh aefrisch@$host<br />

06 expect "(yes/no)? " {<br />

07 send "yes\r"<br />

08 }<br />

09 expect "password:"<br />

10 send "secret\r"<br />

11 expect "$"<br />

12 interact<br />

09 sleep 10<br />

Listing 3: »ec2_ssh_init« (Teil 2)<br />

01 spawn /usr/bin/ssh ‐i /home/aefrisch/.ec2/AEF.pem<br />

ec2‐user@$h<br />

02 expect "$"<br />

03 send "cat id_rsa.pub >> .ssh/authorized_keys; rm<br />

id_rsa.pub\r"<br />

04 expect "$"<br />

05 send "sudo tcsh\r"<br />

06 expect "#"<br />

07 send "cp .ssh/authorized_keys ~root/.ssh\r"<br />

08 expect "#"<br />

09 send "cd /etc/ssh; cp sshd_config{,.0}\r"<br />

10 expect "#"<br />

11 send "cat sshd_config.0 | sed -e 's/<br />

forced‐commands‐only/yes/' > sshd_config\r"<br />

12 expect "#"<br />

13 send "/etc/init.d/sshd restart\r"<br />

14 expect "#"<br />

15 send "exit\r"<br />

Abbildung 1: Automatisiertes Login per SSH und Expect. Kleiner Schönheitsfehler dieser Lösung: Das Passwort<br />

ist im Klartext im Skript gespeichert.<br />

16 expect "$"<br />

17 send "logout\r"<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

121


Programmieren<br />

Expect<br />

01 set done 0<br />

02 stty ‐echo<br />

»sed«. Schließlich startet das Skript den<br />

SSH-Server neu. Der Rest des Skripts beendet<br />

die Root-Shell, loggt sich aus der<br />

SSH-Session aus und beendet das Spawn-<br />

Kommando.<br />

Dialog mit der Hardware<br />

Expect kann genauso dafür verwendet<br />

werden, mit Hardware zu kommunizieren,<br />

die einen interaktiven Modus besitzt.<br />

Listing 4 verbindet sich über die<br />

serielle Schnittstelle mit einer Atomuhr,<br />

um die aktuelle Zeit auszulesen. Als Erstes<br />

weist es der Variablen »clock« den<br />

Namen der seriellen Schnittstelle zu, im<br />

Beispiel »/dev/ttyS0«. Mit der Spawn-<br />

Listing 6: Schleife (Teil 2)<br />

03 while {$done == 0} {<br />

04 system /usr/bin/clear<br />

05 system $cmd<br />

06 stty raw<br />

07 expect -re "." {set done 1 }<br />

08 stty ‐raw<br />

09 } # end while<br />

10 stty echo<br />

11 exit<br />

Listing 5: Schleife (Teil 1)<br />

01 #!/usr/bin/expect<br />

02 <br />

03 set cmd [lindex $argv 0]<br />

04 if {"$cmd" == ""} {<br />

05 send "Usage: loop command \[refresh\]\n"<br />

06 exit<br />

07 }<br />

Listing 4: Kommunikation mit der Uhr<br />

01 #!/usr/bin/expect<br />

02 <br />

03 set clock /dev/ttyS0<br />

04 spawn ‐open [open $clock r+]<br />

05 <br />

06 # set line characteristics for talking to clock<br />

07 stty ispeed 300 ospeed 300 parenb ‐parodd cs7 hupcl<br />

‐cstopb cread clocal ‐icrnl ‐opost ‐isig ‐icanon<br />

‐iexten ‐echo ‐noflsh < $clock<br />

08 <br />

09 send "o"<br />

10 expect ‐re "."<br />

11 send "\r"<br />

12 expect ‐re "."<br />

13 expect ‐re "(................*)"<br />

14 exit<br />

08 set tout [lindex $argv 1]<br />

09 if {"$tout" == ""} {set tout 5}<br />

10 set timeout $tout<br />

Anweisung beginnt dann die Kommunikation<br />

mit dem Device. Dabei öffnet die<br />

Tcl-Anweisung »open« die Gerätedatei.<br />

Das folgende »stty« legt wie das gleichnamige<br />

Unix-Kommando die Übertragungsparameter<br />

fest, etwa die Übertragungsgeschwindigkeit,<br />

Parity-Einstellungen und<br />

so weiter.<br />

Der eigentliche Datenaustausch findet in<br />

den folgenden Send-/​Expect-Anweisungen<br />

statt. Zuerst schickt das Skript ein<br />

»o« an die Uhr, die darauf mit einem<br />

Zeichen antwortet. Der Schalter »‐re« der<br />

Expect-Anweisung zeigt an, dass es sich<br />

um eine Regular Expression handelt. Expect<br />

wartet hier also auf ein beliebiges<br />

Zeichen. Darauf antwortet es seinerseits<br />

mit einem Return-Zeichen, das die Uhr<br />

anweist, die Zeit auszugeben. Das tut sie<br />

mit einem einzelnen Zeichen, das mit<br />

der Zeit direkt nichts zu tun hat, gefolgt<br />

von der eigentlichen Zeitangabe. Entsprechend<br />

enthalten die Expect-Anweisungen<br />

in den Zeilen 15 und 16 in Listing 4 die<br />

passenden Regular Expressions.<br />

Die zweite Regular Expression enthält<br />

16 Punkte, die jeweils für ein Zeichen<br />

stehen. Der folgende Stern gibt an, das<br />

weitere Zeichen optional folgen können.<br />

Die Klammern um den Ausdruck sind<br />

keine Zeichen, auf die Expect wartet,<br />

sondern geben an, dass die gefundene<br />

Zeichenkette später im Skript verwendet<br />

wird. Im Beispiel endet das Skript hier,<br />

aber es gibt automatisch den letzten verwendeten<br />

Ausdruck, in diesem Fall also<br />

die gefundene Zeit, aus.<br />

Alles wie Top<br />

Das Unix-Komando »top« ist einer dieser<br />

Befehle, die nicht nur einmal ein Ergebnis<br />

ausgeben, sondern so lange laufen<br />

und ihre Daten anzeigen, bis der Anwender<br />

sie beendet. Die Expect-Anweisung<br />

»loop« ermöglicht es, jeden beliebigen<br />

Befehl mit diesen Fähigkeiten auszustatten.<br />

Sie startet einen Befehl immer wieder<br />

neu, bis der Anwender ihn mit einem<br />

Tastendruck beendet. Zu Beginn legt das<br />

Skript in Listing 5 den auszuführenden<br />

Befehl und das Zeitintervall fest, in dem<br />

die Anzeige aktualisiert wird (die hier<br />

dem Expect-Timeout entspricht).<br />

An diesem Beispiel kann man sehen,<br />

wie sich über die If-Anweisung von Tcl<br />

das Vorhandensein eines Kommandozeilenarguments<br />

prüfen lässt. Die Send-<br />

Anweisung gibt eine Fehlermeldung aus,<br />

wenn das obligatorische Argument fehlt.<br />

Solange nicht mit Spawn ein Prozess gestartet<br />

wurde, bezieht sich Send auf die<br />

Standardein-/​ausgabe des Skriptes und<br />

kann also dafür verwendet werden, Meldungen<br />

auszugeben. Wie in Zeile 5 zu sehen<br />

ist, muss man die eckigen Klammern<br />

in der Ausgabe mit Backslashes escapen,<br />

weil sie in Tcl sonst eine spezielle Bedeutung<br />

besitzen. Das zweite Argument<br />

des Skriptes ist optional und gibt das<br />

Zeitintervall an, in dem es die Ausgabe<br />

auffrischt, per Default fünf Sekunden. In<br />

Zeile 10 wird die Timeout-Variable auf<br />

diesen Wert gesetzt.<br />

Geschleift<br />

Der in Listing 6 abgedruckte Rest des<br />

Skriptes führt den Kommandozeilenbefehl<br />

aus und wartet dazwischen auf den<br />

Tastendruck des Anwenders. Die Variable<br />

»done« erhält den Wert 0, und vor der<br />

While-Schleife schaltet Stty die Ausgabe<br />

ab. Die While-Schleife wird wiederholt,<br />

solange »done« gleich 0 ist. Im While-<br />

Block führt Expect mit »system« zwei externe<br />

Unix-Kommandos aus. Anders als<br />

»spawn« führt »system« ein Kommando<br />

aus, ohne die Ein- und Ausgabe zu übernehmen.<br />

Wird das vom Benutzer spezifizierte<br />

Unix-Kommando ausgeführt, setzt das<br />

Skript das Terminal mit Stty in den<br />

Raw-Mode. Somit verarbeitet es Benutzereingaben<br />

Zeichen für Zeichen statt<br />

zeilenweise. Das dazugehörige Expect-<br />

Statement wartet mit einer Regular Expression<br />

auf ein beliebiges Zeichen. Tritt<br />

dieses Ereignis ein, setzt das Skript die<br />

Variable »done« auf 1, und beim nächsten<br />

Durchlauf endet die Schleife. Im Fall eines<br />

Timeouts passiert nichts, und »done«<br />

bleibt unangetastet. Nach dem Ende der<br />

While-Schleife setzt das Skript das Terminal<br />

zurück und endet dann.<br />

Multipel<br />

Listing 7 zeigt eine Alternative zum in<br />

Listing 1 vorgestellten SSH-Skript. Es<br />

kombiniert die verschiedenen Expect-<br />

Anweisungen in eine einzige, die auch<br />

wie eine Schleife funktioniert. Das Skript<br />

beginnt wie üblich mit der Zuweisung<br />

122 Ausgabe 01-2012 Admin www.admin-magazin.de


Expect<br />

Programmieren<br />

einiger Variablen. Außerdem zeigt es, wie<br />

man eine Umgebungsvariable in einem<br />

Expect-Skript verwendet: Der Ausdruck<br />

»$env(NAME)« gibt den Wert der Umgebungsvariable<br />

»NAME« zurück. So vermeidet<br />

es das Skript, einen Benutzernamen<br />

fest zu verdrahten und bezieht ihn<br />

stattdessen aus der Umgebungsvariablen<br />

»USER«. Die »expect«-Anweisung umfasst<br />

vier Blöcke:<br />

n »(yes/no?)«: Der bekannte Prompt vom<br />

SSH-Schlüsselaustausch. Wird dieser<br />

String gefunden, schickt das Skript die<br />

Antwort »yes« und fährt wegen der<br />

Anweisung »exp_continue« fort.<br />

n »word:«: Der Passwort-Prompt, den<br />

das Skript mit dem Passwort beantwortet.<br />

Daraufhin gibt das Skript eine<br />

Meldung aus, in der es darüber informiert,<br />

dass der Schlüsselaustausch<br />

noch nicht abgeschlossen ist. Die Anweisung<br />

»send_tty« gibt den String<br />

immer am Bildschirm aus, egal wohin<br />

die Standardausgabe gerade umgeleitet<br />

ist. Auch hier macht das Skript<br />

wegen der Anweisung »exp_continue«<br />

weiter.<br />

n »(|#|>)«: Eine Regular Expression, die<br />

drei Varianten eines Shell-Prompts abdeckt.<br />

Findet das Skript eines dieser<br />

Zeichen, begibt es sich nicht per »interact«<br />

in den interaktiven Modus. An<br />

dieser Stelle endet das Skript dann.<br />

n »timeout«: Dieses Label wird erreicht,<br />

wenn in der vorgegebenen Zeit keine<br />

Antwort vom SSH-Befehl zurückkommt.<br />

Das Skript gibt eine entsprechende<br />

Meldung aus und endet.<br />

Obwohl das eben vorgestellte Expect-<br />

Skript sehr nützlich ist, weist es ein kleines<br />

bis mittleres Security-Problem auf:<br />

Das Passwort steht im Klartext im Skript.<br />

Das ist im Allgemeinen keine besonders<br />

gute Idee, und man sollte das Skript wenigstens<br />

an einem sicheren Ort mit den<br />

entsprechenden Rechten verstauen. Das<br />

nächste Skript umgeht dieses Problem. Es<br />

zeigt, wie man vom Benutzer am Anfang<br />

ein Passwort einliest und es dann später<br />

verwendet.<br />

Listing 8 zeigt den ersten Teil des Skriptes,<br />

das die Kommandozeilenargumente<br />

verarbeitet: die auf den anderen Rechner<br />

zu kopierende Datei und den Usernamen<br />

auf dem anderen Rechner (im Default-<br />

Fall Root). Es liest eine Datei namens<br />

»xferhosts« im aktuellen Verzeichnis ein,<br />

das eine Liste der Hosts enthält, auf die<br />

die Datei kopiert werden soll. Dieser<br />

Code kann als Blaupause dafür dienen,<br />

mit Tcl Dateien aus einer externen Datei<br />

zu lesen:<br />

set file [open "xferhosts" r]<br />

set hlist [split [read $file] "\n"]<br />

close $file<br />

Dann fragt das Skript das Passwort auf<br />

dem anderen Rechner ab. Dazu schaltet<br />

»‐echo« die Anzeige der Eingabe aus,<br />

»echo« entsprechend später wieder ein:<br />

Listing 7: SSH<br />

01 #!/usr/bin/expect<br />

02 <br />

03 set host [lindex $argv 0]<br />

04 set timeout 2<br />

05 set user [lindex $argv 1]<br />

06 if {"$user" == ""} { set user $env(USER) }<br />

07 spawn /usr/bin/ssh $user@$host<br />

08 expect {<br />

09 "(yes/no)? " {<br />

10 send "yes\r"<br />

11 exp_continue<br />

12 }<br />

13 "word:" {<br />

14 send "whatever\r"<br />

15 send_tty "Key exchange needed with $host\n"<br />

16 exp_continue<br />

17 }<br />

18 ‐re "($|%|>) " {<br />

19 interact<br />

20 }<br />

21 timeout {<br />

22 send_tty "No response from $host\n"<br />

23 exit<br />

24 }<br />

25 }<br />

Listing 8: Argumente verarbeiten<br />

01 #!/usr/bin/expect<br />

02 <br />

03 set xfer [lindex $argv 0]<br />

04 set user [lindex $argv 1]<br />

05 if {"$user" == ""} { set user "root"}<br />

06 if {"$xfer" == ""} {<br />

07 send_user "Usage: xfer item \[user\]\n"<br />

08 exit<br />

09 }<br />

10 set timeout 10<br />

MAGAZIN<br />

ONLINE<br />

Linux-<strong>Magazin</strong> newsLetter<br />

Newsletter<br />

informativ<br />

kompakt<br />

Nachrichten rund um die<br />

Themen Linux und Open<br />

Source lesen Sie täglich<br />

im Newsletter des Linux-<br />

<strong>Magazin</strong>s.<br />

tagesaktuell<br />

www.admin-magazin.de<br />

www.linux-magazin.de/newsletter<br />

Admin<br />

Ausgabe 01-2012<br />

123


Programmieren<br />

Expect<br />

01 #!/bin/bash<br />

02 <br />

stty ‐echo<br />

send_tty "_"<br />

expect_tty "\n"<br />

set pwd [string trimright "$expect_outU<br />

(buffer)" "\n"]<br />

stty echo<br />

if {$pwd == ""} { exit }<br />

Die Set-Anweisung, die die Variable<br />

»pwd« belegt, liest per Tcl den Inhalt<br />

aus dem Expect-Puffer. Er besteht aus<br />

allen Zeichen, die Expect von dem vorigen<br />

Match bis zum aktuellen gelesen<br />

hat. In diesem Beispiel ist es das, was<br />

der Benutzer nach dem Passwort-Prompt<br />

Listing 10: Prompt und Timeout<br />

01 #!/usr/bin/expect<br />

02 <br />

03 set prompt [lindex $argv 0]<br />

04 set response [lindex $argv 1]<br />

05 set tout [lindex $argv 2]<br />

06 if {"$prompt" == ""} {<br />

07 set prompt "Enter response"<br />

08 }<br />

Listing 9: Schleife über eine Liste<br />

01 foreach h $hlist {<br />

02 if {"$h" != ""} {<br />

03 spawn scp -r $xfer $user@$h:/tmp<br />

04 expect {<br />

05 "(yes/no)? " {<br />

06 send "yes\r"<br />

07 exp_continue<br />

08 }<br />

09 "word:" {<br />

10 send "$pwd\r"<br />

11 exp_continue<br />

12 }<br />

13 ‐re "." {<br />

14 exp_continue<br />

15 }<br />

16 timeout { break }<br />

17 }<br />

18 }<br />

19 }<br />

09 if {"$tout" == ""} { set tout 5 }<br />

Listing 11: Anwendung<br />

03 # Example use of timed prompt script:<br />

04 # The default response is '"'red'"'<br />

05 color=`./timed_prompt "What is your favorite color?<br />

" red 2`<br />

06 echo "Your color is $color"<br />

07 echo<br />

08 color=`./timed_prompt "What is your favorite color?<br />

" red 20`<br />

09 echo "Your color is $color"<br />

eingegeben hat. Das Skript entfernt das<br />

Newline, das die Eingabe abschließt und<br />

zuerst noch Teil des Strings ist.<br />

Listing 9 zeigt die Schleife über die Liste<br />

der Hosts aus der Datei. Die Tcl-Anweisung<br />

»foreach« liest einen nach dem<br />

anderen, die If-Anweisung sorgt dafür,<br />

dass der Hostname nicht leer ist. Die<br />

»expect«-Anweisung ist ähnlich zu der im<br />

letzten Beispiel. Es kümmert sich um den<br />

Schlüsselaustausch und den Passwort-<br />

Prompt, wenn sie auftreten, und beendet<br />

die Schleife mit »break«, wenn das Skript<br />

zu lange warten muss.<br />

Der andere Fall in der »expect«-Anweisung<br />

ist eine Regular Expression, die<br />

einem beliebigen Zeichen entspricht.<br />

Das »scp«-Kommando sendet während<br />

der Arbeit Zeichen. Solange man welche<br />

empfängt, weiß man also, dass es<br />

noch läuft. Wenn die Regular Expression<br />

matcht, läuft exp_continue ab, was die<br />

Schleife fortsetzt und auch den Timeout<br />

zurücksetzt.<br />

Prompt mit Timeout<br />

Die Bash-Shell bietet einen Weg, Benutzereingaben<br />

mit »read« einzulesen und<br />

in einer Variablen zu speichern, wie im<br />

folgenden Beispiel:<br />

read ‐p "Prompt string: " answer < /dev/tty<br />

Ein solcher Prompt wird ewig auf eine<br />

Eingabe warten. Manchmal will man<br />

aber nur eine Zeit lang einen Prompt<br />

anzeigen und dann weitermachen, wenn<br />

nichts passiert. Expect bietet mit wenig<br />

Aufwand solche Prompts mit eingebautem<br />

Timeout. Das zugehörige Skript in<br />

Listing 10 beginnt wieder damit, die<br />

Argumente zu verarbeiten. Der Default-<br />

Prompt ist »Enter response«, der Default-<br />

Timout fünf Sekunden. Der folgende<br />

Code zeigt den Teil des Skriptes, der den<br />

Prompt-String anzeigt und die Benutzereingabe<br />

verarbeitet, wenn es eine gibt:<br />

send_tty "$prompt: "<br />

set timeout $tout<br />

set response ""<br />

expect "\n" {<br />

set response [string trimright "$expect_U<br />

out(buffer)" "\n"]<br />

}<br />

send $response<br />

Das Skript zeigt den Prompt am Bildschirm<br />

an, setzt den Timeout-Wert und<br />

weist der Variablen, die die Antwort<br />

speichert, einen Anfangswert zu. Die<br />

»expect«-Anweisung ändert den Wert auf<br />

die Eingabe des Benutzers. Das Skript<br />

endet damit, den Antwortwert zurückzugeben.<br />

Listing 11 zeigt ein Beispiel dafür. Die<br />

folgenden Zeilen zeigen, wie das Skript<br />

abläuft, wenn man bei der zweiten Eingabeaufforderung<br />

einen Wert eingibt,<br />

nicht aber bei der ersten:<br />

$ ./use_prompt<br />

What is your favourite color?<br />

Your color is red<br />

What is your favourite color? green<br />

Your color is green<br />

Beim ersten Mal gibt das Skript die Default-Farbe<br />

(rot) aus, im zweiten Fall die<br />

Farbe, die der Benutzer eingibt.<br />

Polyglott<br />

Viele Aufgaben, die ansonsten Benutzerinteraktion<br />

erfordern, lassen sich mit<br />

Expect skripten. Gelegentlich ist es nötig,<br />

ein bisschen mit Timeout-Werten<br />

zu experimentieren, damit die Skripte<br />

für echte Anwendungen robust genug<br />

sind. Neben der reinen Tcl-Variante von<br />

Expect gibt es auch Implementierungen<br />

in Python [4], Perl [5], Ruby [6] und<br />

andere Programmiersprachen. (ofr) n<br />

Infos<br />

[1] NIST Expect:<br />

[http:// www. nist. gov/ el/ msid/ expect. cfm]<br />

[2] Expect homepage:<br />

[http:// expect. sourceforge. net]<br />

[3] Expect für Windows: [http:// docs.​<br />

activestate. com/ activetcl/ 8. 5/ expect4win]<br />

[4] Python-Expect: [http:// pexpect.​<br />

sourceforge. net/ pexpect. html]<br />

[5] Perl-Expect: [http:// search. cpan. org/​<br />

~rgiersig/ Expect‐1. 15/ Expect. pod]<br />

[6] Ruby-Expect: [http:// www. ruby‐doc. org/​<br />

stdlib‐1. 9. 3/ libdoc/ pty/ rdoc/ IO. html#​<br />

method‐i‐expect]<br />

Die Autorin<br />

Æleen Frisch besitzt mehr als 20 Jahre Erfahrung<br />

in der Administration von VMS, Unix, Linux und<br />

Windows. Sie ist die Autorin des Buches „Essential<br />

System Administration“. Mehr Informationen<br />

über ihre Bücher, Artikel und Vorträge sind auf<br />

[http:// www. aeleen. com] zu finden.<br />

124 Ausgabe 01-2012 Admin www.admin-magazin.de


Digitales aBO<br />

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

DigisUB *<br />

nur 56,10 €<br />

im Jahr (12 PDFs)<br />

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

Jetzt Bestellen Unter:<br />

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

Telefon: 07131 /2707 274<br />

Fax: 07131 / 2707 78 601<br />

E-Mail: abo@linux-user.de<br />

Lesen Sie News und Artikel<br />

fast 1 Woche vor dem Kiosk!<br />

Sparen Sie im Abo 15% im<br />

Vergleich zum PDF-Einzelkauf!<br />

Nutzbar auf Notebook und<br />

PC, Tablet oder Smartphone!


Programmieren<br />

Perl-Curses<br />

Textbasierte GUI mit Perl<br />

Old School<br />

© frannyanne, 123RF<br />

Es muss nicht immer eine Webanwendung sein. Manchmal ist es am einfachsten, ein interaktives Programm für<br />

das Textterminal zu schreiben. Auf Komfort muss man dabei nicht unbedingt verzichten. Oliver Frommel<br />

Auch wenn man es sich kaum noch<br />

vorstellen kann: Es gibt noch Software,<br />

die nicht im Webbrowser läuft. Wer<br />

selbst ein kleines Programm schreiben<br />

will, um beispielsweise Daten in eine<br />

Datenbank einzutragen, kommt auf der<br />

Kommandozeile oft schneller voran. Eine<br />

vollständige Webanwendung mit Fehlerbehandlung<br />

zu schreiben, gerät schneller<br />

als man denkt zu einem mittleren Projekt.<br />

Da helfen auch keine Frameworks<br />

wie Ruby on Rails oder Symfony, die<br />

noch dazu einiges an Einarbeitungszeit<br />

erfordern.<br />

Curses<br />

Wer dennoch in einem Terminal interaktive<br />

Programme schreiben will, greift mit<br />

der Programmiersprache C meistens auf<br />

die Ncurses-Bibliothek zurück, von der<br />

es auch Varianten für Skriptsprachen wie<br />

Perl, Python oder Ruby gibt. Besonders<br />

komfortabel lassen sich textbasierte „grafische“<br />

Oberflächen mit dem Perl-Modul<br />

Curses::UI schreiben, das basierend auf<br />

Curses klassische GUI-Elemente wie Buttons,<br />

Dialoge und Fenster bietet.<br />

Fertige Pakete gibt es für die meisten<br />

Linux-Distributionen. Auf Debian und<br />

Ubuntu installieren Sie Curses::UI mit<br />

»apt‐get install libcurses‐ui‐perl«, Fedorasowie<br />

Red-Hat- und CentOS-Anwender tippen<br />

stattdessen »yum install perl‐Curses‐<br />

UI« ein. Auf letzteren Systemen müssen<br />

Sie eventuell noch ein Third-Party-Repository<br />

wie Repoforge [2] einbinden,<br />

wenn das Paket in der Kerndistribution<br />

fehlt. Unix-Fans mit Mac OS X können<br />

das Perl-Modul beispielsweise mit Macports<br />

und »sudo port install p5‐curses‐ui«<br />

installieren.<br />

Um das Modul in eigenen Perl-Skripten<br />

zu verwenden, genügt zu Beginn des<br />

Skripts die Zeile:<br />

use Curses::UI;<br />

Die folgende Anweisung erzeugt eine Instanz<br />

des UI-Objekts, das als Handle für<br />

alle weiteren Aktionen dient:<br />

$ui = new Curses::UI( ‐color_support => 1 );<br />

In farbfähigen Terminals (meist mit<br />

ANSI-Farbcodes angesteuert) schaltet der<br />

Parameter »‐color_support« die Farbunterstützung<br />

der Bibliothek ein.<br />

Wie häufig bei GUI-Bibliotheken wird<br />

die Benutzeroberfläche hierarchisch aufgebaut.<br />

Man hängt also beispielsweise<br />

ein Fenster-Element an das UI-Element<br />

an. Das Fenster-Element kann als Kinder<br />

weitere sogenannte Widgets enthalten,<br />

beispielsweise Container als Ordnungselemente<br />

zur Gruppierung oder gleich<br />

sichtbare Bestandteile wie Buttons oder<br />

Auswahllisten.<br />

Ein Fenster beispielsweise fügen Sie so<br />

der GUI hinzu und weisen es direkt einer<br />

Variablen zu:<br />

$window = $ui‐>add(<br />

'window1', 'Window',<br />

‐border => 1,<br />

);<br />

Der erste Parameter gibt eine ID an, über<br />

die sich das Fenster später im GUI-Baum<br />

wiederfinden lässt, danach folgt der Typ<br />

des Widgets, hier eben »Window«. Der<br />

Parameter »‐border« auf 1 (True) gesetzt,<br />

verschafft dem Fenster einen sichtbaren<br />

Rand.<br />

Wer die obigen Anweisungen in ein<br />

Skript einfügt und ausführt, bekommt<br />

eine Fehlermeldung zu sehen, aber auch<br />

126 Ausgabe 01-2012 Admin www.admin-magazin.de


Perl-Curses<br />

Programmieren<br />

G Abbildung 2: Curses::UI unterstützt UTF-8 und in modernen Terminalfenstern<br />

auch Farben.<br />

F Abbildung 1: Ein simples Programm mit Curses::UI umfasst nur wenige Zeilen,<br />

bietet aber immerhin ein eigenes Fenster und einen Dialog.<br />

nicht das gewünschte Ergebnis. Es fehlt<br />

nämlich noch der für GUI-Anwendungen<br />

typische Event-Loop, in dem das Programm<br />

verweilt und Benutzer-Eingaben<br />

verarbeitet. Curses::UI bietet dazu die<br />

Methode »mainloop()«:<br />

$ui‐>mainloop();<br />

Bevor Sie das Programm starten, sollten<br />

Sie aber noch an den Ausstieg denken,<br />

denn mit dem bei Skripten sonst funktionierenden<br />

[Strg]+[C] kommen Sie<br />

hier nicht weiter. Am besten setzen Sie<br />

in jedem Programm eine Tastenzuweisung<br />

ein, mit der Sie es beenden können,<br />

etwa:<br />

$ui‐>set_binding( sub{ exit; } , "\cQ");<br />

Das erste Argument der Methode »set_<br />

binding« ist eine Referenz auf eine Perl-<br />

Funktion, die beim Tastendruck ausgeführt<br />

werden soll, etwa »\&myfunction«.<br />

Hier ist stattdessen einfach eine anonyme<br />

Funktion mit »sub« direkt definiert. Die<br />

Tastenkombination, die als zweiter Parameter<br />

folgt, entspricht hier [Strg]+[Q].<br />

Text geben Sie beispielsweise über das<br />

UI-Element »Label« aus. Hängen Sie es<br />

einfach an das Window-Objekt an und<br />

übergeben Sie den Text als Parameter. Die<br />

meisten anderen Parameter sind optional<br />

und legen unter anderem fest, ob der Text<br />

fett oder unterstrichen erscheinen soll:<br />

$window‐>add(<br />

'label1', 'Label',<br />

‐text => 'Hier der Text',<br />

);<br />

Ein Label verarbeitet wie alle anderen<br />

Elemente auch Standard-Optionen, die es<br />

von der Widget-Klasse erbt, von der alle<br />

Elemente abgeleitet sind. Dazu gehören<br />

unter anderem Breite »‐width« und Höhe<br />

»‐height« sowie die Position innerhalb<br />

An die Antwort gelangt man wieder<br />

über den Return-Wert, wie die obige<br />

Zeile zeigt. Zur verdeckten Eingabe<br />

von Passwörtern gibt es übrigens eine<br />

eigene Widget-Klasse namens »PasswordEntry«.<br />

Neben den einfachen Dialogen<br />

bietet Curses::UI auch einen Datei-<br />

Browser, einen Progress-Bar und sogar<br />

einen Kalender!<br />

Komplexere Daten werden in grafischen<br />

Oberflächen meist in Dropdown- oder<br />

ähnlichen Listen angezeigt. Auch hier<br />

muss das kleine Perl-Modul nicht pasdes<br />

umgebenden Containers in Form von<br />

X- und Y-Koordinaten, die sich auf die<br />

linke obere Ecke des jeweiligen Elements<br />

beziehen und die mit »‐x« und »‐y« angegeben<br />

werden.<br />

Leerer Platz innerhalb und außerhalb des<br />

Widgets wird mit Padding-Werten angegeben.<br />

So legt »‐pad« den Wert für alle<br />

Achsen fest, »‐padright« für die rechte<br />

Seite, »‐padbottom« für den unteren Rand<br />

und so weiter. Analog verhält es sich mit<br />

der Innenseite, deren Werte entsprechend<br />

»‐ipad«, »‐ipadright«, »‐ipadleft« und so<br />

weiter heißen.<br />

Im Dialog<br />

Weil Dialoge zur Interaktion mit dem Anwender<br />

recht häufig vorkommen, bietet<br />

Curses::UI hierfür eigene Methoden an,<br />

und zwar gleich eine ganze Palette davon.<br />

Im einfachsten Fall »Dialog::Basic«<br />

handelt es sich nur um einen Dialog, den<br />

der Anwender mit einem Button bestätigen<br />

muss. Mit nur einer Zeile mehr lässt<br />

sich so das obige Programm mit einem<br />

Abschiedsdialog versehen:<br />

$ui‐>dialog(‐message => 'Goodbye!');<br />

Das komplette Listing mit Fenster, Text<br />

und Dialog ist in Abbildung 1 zu sehen.<br />

Abbildung 2 zeigt das Resultat.<br />

Listing 1: Label<br />

01 $labels{1} = 'Red Hat Enterprise Linux';<br />

02 $labels{2} = 'CentOS';<br />

03 $labels{3} = 'Open Suse';<br />

04 $labels{4} = 'Suse Linux Enterprise<br />

Server';<br />

05 $labels{5} = 'Gentoo';<br />

06 $labels{6} = 'Mandriva';<br />

07 $labels{7} = 'Fedora';<br />

08 $labels{8} = 'Solaris';<br />

09 $labels{9} = 'FreeBSD';<br />

10 $labels{10} = 'Solaris';<br />

Für mehr als eine Antwort, zum Beispiel<br />

die klassische Auswahl zwischen OK<br />

und Cancel, übergeben Sie als Parameter<br />

ein Array mit den gewünschten Buttons,<br />

etwa so:<br />

‐buttons<br />

=> ['OK', 'Cancel']<br />

Um herauszufinden, welchen Button<br />

der Anwender gedrückt hat, lesen Sie<br />

den Return-Wert aus, also » $return =<br />

$ui‐>dialog(...)«.<br />

Manchmal ist es aber nötig, statt einer<br />

einfachen Auswahl den Benutzer einen<br />

Wert eingeben zu lassen, zum Beispiel<br />

einen String oder eine Zahl. Dafür bietet<br />

Curses::UI die Klasse »Dialog::Question«.<br />

Sie wird folgendermaßen verwendet:<br />

$username = $ui‐>question('Benutzername:');<br />

11 $labels{11} = 'SmartOS';<br />

12 $labels{12} = 'Plan 9';<br />

13 <br />

14 $listbox = $win‐>add(<br />

15 'mylistbox', 'Listbox',<br />

16 ‐values => [1, 2, 3, 4, 5, 6, 7, 8,<br />

9, 10, 11, 12],<br />

17 ‐labels => \%labels,<br />

18 ‐multi => 1,<br />

19 ‐height => 12<br />

20 );<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2012<br />

127


Programmieren<br />

Perl-Curses<br />

sen. Mit dem Listbox-Widget lassen sich<br />

Listen anzeigen, aus denen der Anwender<br />

auswählen kann. Wie bei GUIs und<br />

auf HTML-Seiten üblich, erlaubt auch<br />

Curses::UI die Funktionen Einfach- oder<br />

Mehrfachauswahl. Die ausgewählten<br />

Werte übergeben Sie dem Label-Objekt<br />

als Array, die optionalen Label als Hash.<br />

Ein Beispiel dafür ist in Listing 1 zu sehen.<br />

Natürlich könnten Array und Hash<br />

die Indizierung auch bei 0 starten.<br />

Der Schalter für die Mehrfachauswahl<br />

heißt »‐multi«, wie in Listing 1 zu sehen<br />

ist, die Einfachauswahl legt stattdessen<br />

»‐radio« fest.<br />

Menüs<br />

Wer will, kann der eigenen Curses::UI-<br />

Anwendung auch ein komplettes Menü<br />

spendieren, das sich auf modernen Systemen<br />

sogar meistens mit der Maus bedienen<br />

lässt. Dazu bauen Sie erst ein<br />

Menü aus einer Datenstruktur auf, in<br />

der ein Menü aus einem Array besteht,<br />

in dem Untermenüs als Arrayreferenzen<br />

eingebunden werden. Diese Datenstruktur<br />

übergeben Sie dann dem Konstruktor<br />

für die Klasse »Menubar«:<br />

$ui‐>add(<br />

'menu', 'Menubar',<br />

‐menu => $menu_data<br />

);<br />

Ein Beispiel für die Datenstruktur findet<br />

sich in der Dokumentation der Menubar-<br />

Klasse. Damit ein Menü ausklappt, muss<br />

es aktiviert werden, im Curses::UI-Jargon<br />

den sogenannten Focus erhalten. Dafür<br />

bietet sich zum Beispiel ein Hotkey an,<br />

den Sie etwa so festlegen:<br />

$ui‐>set_binding(sub {$menu‐>focus()}, U<br />

"\cM");<br />

Die Aufzählung der enthaltenen Widgets<br />

ließe sich noch eine Zeit lang fortsetzen,<br />

so gibt es sogar ein GUI-Element, das<br />

Texteditor-Funktionen samt Scrollbars<br />

und so weiter bietet. Eine vollständige<br />

Liste finden Sie in der Curses::UI-Dokumentation.<br />

Doku-Suche<br />

Dokumentation für Perl-Curses::UI ist<br />

dünn gesät. Neben der offiziellen CPAN-<br />

Dokumentation gibt es nur noch einen<br />

Vortrag von Marcus Thiesen mit einem<br />

Überblick über das Modul [3] und vereinzelte<br />

Mailinglisten-Beiträge. Lohnenswert<br />

ist ein Blick in das Verzeichnis<br />

»examples« der Quellcode-Distribution,<br />

das für alle GUI-Elemente ausführliche<br />

und verständliche Beispiele enthält. n<br />

Infos<br />

[1] Curses::UI:<br />

[http:// search. cpan. org/ dist/ Curses‐UI]<br />

[2] Repoforge: [http:// repoforge. org/ use]<br />

[3] Curses::UI – Eine Einführung: [http:// perl.​<br />

thiesen. org/ talks/ curses‐ui. pdf]<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<br />

128 Ausgabe 01-2012 Admin www.admin-magazin.de


Alles zum ThemA<br />

Android<br />

Neu!<br />

Die Monatszeitschrift für Android-Fans, Smartphone- und Tablet-Nutzer<br />

DigisuB: nur 34,90 € im Jahr (12 PDFs)<br />

ihre Vorteile:<br />

+ News und Artikel<br />

fast 1 Woche vor<br />

dem Kiosk lesen!<br />

+ Hardware und App-<br />

Tests, Workshops,<br />

Tipps und Tricks für<br />

Anfänger und Profis!<br />

+ Nutzbar auf Smartphone,<br />

Tablet oder<br />

Notebook/PC!<br />

Jetzt bestellen unter:<br />

www.android–user.de/digisub<br />

Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@android-user.de


Service<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<br />

Chefredakteure<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 />

Brian Osborn (Vorstand), bosborn@linuxnewmedia.de<br />

Hermann Plank (Vorstand), hplank@linuxnewmedia.de<br />

Oliver Frommel (V.i.S.d.P.),<br />

ofrommel@admin-magazin.de (ofr)<br />

Jens-Christoph Brendel<br />

jbrendel@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, Astrid Hillmer-Bruer (Schlussredaktion),<br />

Carsten Schnober, Tim Schürmann, Claudia Thalgott<br />

Christian Ullrich, cullrich@linuxnewmedia.de<br />

Klaus Rehfeld, Judith Erb<br />

Titel: Judith Erb, Bildmaterial: Vasiliy Yakobchuk, 123RF<br />

www.admin-magazin.de/abo<br />

Veronika Kramer<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-<strong>Magazin</strong>-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-<strong>Magazin</strong>. 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–2012 Linux New Media AG<br />

Inserentenverzeichnis<br />

1&1 Internet AG http://​www.einsundeins.de 27, 36<br />

<strong>ADMIN</strong> http://​www.admin-magazin.de 49, 71, 85, 128<br />

Android User GY http://​www.android-user.de 111, 129<br />

DFN-Cert Services GmbH http://​www.dfn-cert.de 79<br />

Fernschule Weber GmbH http://​www.fernschule-weber.de 63<br />

German Unix User Group (GUUG) e.V. http://​www.guug.de/​ 19<br />

Hetzner Online AG http://​www.hetzner.de 132<br />

Host Europe GmbH http://​www.hosteurope.de 7<br />

Hostserver GmbH http://​www.hostserver.de 9<br />

in-put Schulungen http://​www.in-put.de 39<br />

Infosecurity Europe http://​www.infosec.co.uk 21<br />

Kamp Netzwerkdienste GmbH http://​www.kamp.net 17<br />

Kettner Mathias - Linux Experte http://​www.mathias-kettner.de 29<br />

Linux User Spezial http://​www.linux-user.de/​spezial 77<br />

Linux-Hotel http://​www.linuxhotel.de 47<br />

Linux-<strong>Magazin</strong> http://​www.linux-magazin.de 93<br />

Linux-<strong>Magazin</strong> Academy http://​www.academy.linux-magazin.de 25, 55<br />

Linux-<strong>Magazin</strong> Online http://​www.linux-magazin.de 123<br />

LinuxUser http://​www.linuxuser.de 125<br />

NETHINKS GmbH http://​www.nethinks.com 59<br />

netways GmbH http://​www.netways.de 117<br />

Netzwerktotal http://​www.netzwerktotal.de 75<br />

outbox AG http://​www.outbox.de 31<br />

pascom - Netzwerktechnik<br />

GmbH & Co.KG http://​www.pascom.net 11<br />

Pluspol GmbH http://​www.pluspol.de 41<br />

Spenneberg Training & Consulting http://​www.spenneberg.com 95<br />

Stern & Schatz GmbH http://​www.getdigital.de 53<br />

Strato AG http://​www.strato.de 2<br />

Thomas Krenn AG http://​www.thomas-krenn.com 13<br />

Ubuntu User http://​www.ubuntu-user.de 131<br />

Autoren dieser Ausgabe<br />

Chris Binnie Abwehrverhalten 94<br />

Wolfgang Dautermann Not-Lösung 28<br />

Thomas Drilling Aus einem Guss 60<br />

Thomas Drilling Schlüsselwächter 32<br />

Thomas Drilling Testlabor 76<br />

Florian Effenberger Runderneuert 80<br />

Bernhard Fahr Kontrollzentrale 56<br />

Æleen Frisch Fern gesteuert 120<br />

Thomas Joos Ausgepackt 74<br />

Charly Kühnast Tortenstück 118<br />

Martin Loschwitz Agentenausbildung 96<br />

Martin Loschwitz Nichts exklusiv 106<br />

Vilma Niclas Softwareschutz 22<br />

Thorsten Scherf Gefiickt 18<br />

Tim Schürmann Schutzschild 86<br />

Tim Schürmann Start me up 112<br />

Christoph Siess Zieleinlauf der Kontrolleure 66<br />

VORSCHAU<br />

Somchai Suppalertporn, 123RF<br />

E-Mail<br />

<strong>ADMIN</strong> 02/2012 erscheint am 8. MÄRZ 2012<br />

Mit E-Mail-Diensten muss sich jeder<br />

Administrator früher oder später<br />

einmal beschäftigen. Das kommende<br />

<strong>ADMIN</strong>-Heft gibt dazu Praxis-Tipps und<br />

stellt taugliche Antispam-Lösungen<br />

sowie benutzerfreundliche Webmail-<br />

Frontends vor.<br />

vSphere<br />

Mit dem vSphere Hypervisor<br />

(ESXi) bietet VMware ein<br />

kostenloses Virtualisierungsprodukt<br />

auf professionellem<br />

Niveau. Was es kann und wie<br />

man es in der Praxis einsetzt,<br />

verrät unser Workshop.<br />

Tomas Skopal, 123RF<br />

130 Ausgabe 01-2012 Admin www.admin-magazin.de


UBUNTU<br />

Für echte<br />

Fans!<br />

James Thew, Fotolia<br />

Zeige Flagge für Ubuntu!<br />

• die aktuelle Ausgabe Ubuntu User<br />

• einen Schal mit eingesticktem Ubuntu User<br />

• eine Mütze mit eingesticktem Ubuntu User<br />

• einen Kugelschreiber mit Ubuntu User<br />

UBUNTU<br />

user<br />

UBUNTU<br />

user<br />

Fan-Paket<br />

nur<br />

14,95 € *<br />

auch ohne Heft für<br />

nur € 9,95 * erhältlich<br />

• einen Aufkleber mit “Oneiric Ocelot”, dem<br />

Maskottchen von Ubuntu 11.10<br />

• eine Postkarte mit “Oneiric Ocelot”, dem<br />

Maskottchen von Ubuntu 11.10<br />

*Preise gelten für Deutschland, nur solange der Vorrat reicht<br />

Jetzt online Bestellen:<br />

• www.ubuntu-user.de/fan-paket<br />

• Telefon 089 / 2095 9127 • Fax 089 / 2002 8115 • E-Mail: abo@ubuntu-user.de

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!