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