26.02.2014 Aufrufe

ADMIN Magazin Enterprise-Linux (Vorschau)

Erfolgreiche ePaper selbst erstellen

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

NEU!<br />

Jetzt mit<br />

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

Netzwerk & Security<br />

<strong>Enterprise</strong>-<br />

<strong>Linux</strong><br />

Vergleich der Marktführer<br />

Ubuntu-Firmen-Desktop<br />

Red Hat zentral verwaltet<br />

IPv6-Tunnel<br />

Alle Techniken erklärt<br />

SQL-Injection<br />

Gefährliche Lücken enttarnen<br />

Windows 2012<br />

Die besten Tricks für jeden<br />

Server-Admin<br />

Prey: Gestohlene Handys<br />

und Laptops orten<br />

Proxmox: Ein freier<br />

VMware-Konkurrent<br />

01 2013<br />

Jan. – Feb.<br />

Auf Heft-CD:<br />

FOSS-Cloud 1.0.2<br />

FreeX ‘12 komplett<br />

Python<br />

Webapps mit Flask<br />

Open Stack<br />

Konfigurieren Step by Step<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


Born to<br />

be ROOT!<br />

HOSTED<br />

IN GERMANY<br />

Root Server <strong>Linux</strong> Level 1<br />

29 ,00<br />

€/<br />

€/Mon.*<br />

CPU<br />

Intel Sandy Bridge G530<br />

Leistung<br />

2 x 2,4 GHz<br />

RAM<br />

4 GB<br />

HD<br />

1.000 GB<br />

Traffic<br />

Unlimited*<br />

EFFIZIENTER SPRINTER ZUM MINIPREIS<br />

Beschleunigen eun n Sie<br />

Ihre Projekte mit einem em<br />

zierten Root ot Server<br />

von STRATO. TO.<br />

Mit<br />

eigener Hard-<br />

ware steht Ihnen n<br />

immer m<br />

die volle Leistung von<br />

RAM, CPU, Festplatte e und<br />

Traffic zur Verfügung.<br />

STRATO TO<br />

setzt auf Qualität und arbeitet et ausschließlich h mit führen-<br />

den internationalen na alen<br />

Hardware-Herstellern re<br />

er ellern zusammen. men. Jedes Bau-<br />

teil ist<br />

optimal für den Einsatz im dedizierten Server abgestimmt.<br />

mt.<br />

Das<br />

sorgt für<br />

höchste Zuverlässigkeit und<br />

Ausfall llsich<br />

sicherheit.<br />

eit<br />

Zu-<br />

sammen me<br />

mit dem Minipreis is sind STRATO Root Server unschlagbar.<br />

dedidi-<br />

* Traffic-Unlimited: Keine zusätzlichen Kosten durch Traffic (bei Traffic-Verbrauch über 1.000 GB/ Monat<br />

und danach je weitere 300 GB erfolgt eine Umstellung der Anbindung auf max. 10 MBit/s. Erneute<br />

Freischaltung der vollen Bandbreite jeweils kostenlos über den Kundenservicebereich). Preis inkl. MwSt.<br />

Info: 030 – 300 146 111 | strato-pro.de


Backflip<br />

Editorial<br />

Backflip<br />

Kleine Städte können es. Schwäbisch Hall zum Beispiel, wo man schon 1997 bei Internetdiensten<br />

auf <strong>Linux</strong> setzte und heute in der Verwaltung flächendeckend unter<br />

dem freien Betriebssystem arbeitet. Größere Städte können es. Etwa Leipzig, wo<br />

man allein im Verlauf des letzten Jahres 3900 von 4200 PC-Arbeitsplätzen auf<br />

Open Office migrieren konnte. Ziemlich große Städte können es. Beispiel München,<br />

das mit der Umstellung von über 11 000 Arbeitsplätzen auf <strong>Linux</strong> 10 Millionen Euro<br />

sparte. Ganze Länder können es. Portugal ist ein Exempel: Dort stellt man die gesamte<br />

öffentliche Verwaltung auf das Open-Document-Format um.<br />

Freiburg konnte es nicht. Nachdem man sich dort 2007 zur Umstelllung auf Open<br />

Office entschlossen hatte, migriert man jetzt zurück zu Microsoft Office, weil man<br />

ansonsten angeblich auf Funktionen verzichten müsste, nur noch ineffektiv arbeiten könne, Software ohne Zukunft<br />

nutzen würde und keine Akzeptanz bei den Anwendern fände. Jedenfalls sagt das ein Gutachter, der zufällig<br />

Aufsichtsrat eines Microsoft-Gold-Partners, dafür aber verständlicherweise in Sachen freier Software nicht ganz<br />

so firm ist. Open-Source-Experten reiben sich bei der Lektüre zahlreicher fragwürdiger Behauptungen jedenfalls<br />

die Augen.<br />

Freiburg nimmt also Anlauf zu einem kostspieligen Rückwärtssalto. Aber woran lag es? Am freien Officepaket<br />

jedenfalls sicherlich nicht. Das ist inzwischen ausgereifte und stabile Software, die auch beim Funktionsumfang<br />

keinen Vergleich zu scheuen braucht. Aber das reicht eben nicht. Ein Migrationsprojekt ist kein Selbstläufer. Es<br />

braucht sorgfältige Planung und konsequente Umsetzung. Beides gab es in Freiburg nicht, wo man stattdessen<br />

einen fatalen Mischbetrieb aus veralteten Microsoft- und nicht aktuellen Open-Office-Versionen zuließ.<br />

Doch selbst ein wohl durchdachtes und konsequent verwirklichtes Vorhaben wird misslingen, wenn man, wie in<br />

Freiburg, die Anwender nicht mit ins Boot bekommt. Man weiß seit Langem, dass psychologische Faktoren der<br />

Hauptgrund für das Scheitern solcher Projekte sind: latente Widerstände, der Unwille angesichts von Veränderungen,<br />

das Festhalten am Altbekannten.<br />

Wie man trotzdem erfolgreich Neues implementieren kann, ist auch kein Geheimnis, eine ganze Disziplin, das sogenannte<br />

Change Management, beschäftigt sich damit. Es gilt die Betroffenen früh einzubeziehen, sie davon zu<br />

überzeugen, dass sie persönliche Vorteile haben, ihre Sorgen ernst zu nehmen, sie immer auf dem Laufenden<br />

zu halten und noch fehlende Fertigkeiten zu trainieren. Dann identifizieren sich die Mitarbeiter mit einem tollen<br />

Projekt wie der Office-Migration, das ihnen Unabhängigkeit zurückgibt, das zukunftsweisend ist und dabei Kosten<br />

spart. Dann laden sie nicht diffusen IT-Frust bei den Neuerungen ab, dann gehen sie nicht einem zweifelhaften<br />

Gutachter auf den Leim, sondern sind stolz, ein Vorreiter zu sein.<br />

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

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

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

3


Service<br />

Inhalt<br />

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

Netzwerk & Security<br />

01/2013<br />

In diesem Heft-Schwerpunkt:<br />

<strong>Linux</strong>-Distributionen mit professionellem<br />

Support für den Firmeineinsatz (ab S. 36)<br />

halten<br />

Was leisten Red Hat,<br />

36Kurs<br />

Suse, Oracle und Co.?<br />

Wir geben einen Überblick.<br />

Login<br />

8 Vorgelesen<br />

Bücher über <strong>Linux</strong>-Cluster und die<br />

Virtualisierung mit KVM.<br />

10 Branchen-News<br />

Neues von Firmen und Projekten.<br />

16 Recht<br />

Verarbeitet ein Dienstleister personenbezogene<br />

Daten gelten strenge Regeln.<br />

Netzwerk<br />

24 Nagios und VoIP<br />

Nagios lernt anzurufen und so seinen<br />

Admin sicher zu alarmieren.<br />

28 Rausgegraben<br />

Für den Übergang: IPv6-Tunneltechnologien<br />

im Vergleich.<br />

Schwerpunkt: <strong>Enterprise</strong>-<strong>Linux</strong><br />

36 Kurs halten<br />

Die kommerziellen <strong>Linux</strong>-Distributionen<br />

versprechen langfristige Stabilität und<br />

professionellen Support.<br />

46 Neu gemischt<br />

Eine Ubuntu-Variante fürs Büro: der<br />

Ubuntu Business Desktop Remix.<br />

48 Paketversand<br />

<strong>Enterprise</strong> Software Management mit<br />

dem Red Hat Satellite Server. Ganze<br />

Netze automatisch patchen.<br />

20 Admin-Story<br />

Instant-Webanwendungen mit MongoDB<br />

und Bottle.<br />

Service<br />

3 Editorial<br />

4 Inhalt<br />

6 Heft-CD<br />

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

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


98<br />

Gift für alle Fälle<br />

SQL-Injection-<br />

Lücken erklärt und<br />

automatisiert aufgespürt.<br />

Inhalt<br />

Service<br />

<strong>Linux</strong>-Virtualisierung<br />

66Proxmox<br />

auf Debian-Basis mit<br />

Support für KVM und OpenVZ.<br />

Gewand<br />

Neuheiten bei der<br />

82Neues<br />

Windows-Nachrichtenzentrale<br />

Exchange 2013.<br />

Know-how<br />

56 Schatztruhe<br />

Einfacher verwaltet:<br />

zwölf praktische<br />

Tipps für den<br />

Windows Server<br />

2012.<br />

62 Schwere Beute<br />

Prey lokalisiert gestohlene Laptops und<br />

Mobiltelefone.<br />

Virtualisierung<br />

66 Proxmox<br />

Die freie <strong>Linux</strong>-Virtualisierungsplattform<br />

für KVM und OpenVZ.<br />

72 Einrichtungsberater<br />

Open-Stack-Workshop, Teil 2: Schritt für<br />

Schritt zur Cloud-Installation.<br />

Test<br />

82 Neues Gewand<br />

Was ist neu im Exchange Server 2013,<br />

lohnt sich ein Update?<br />

88 Schön schlank<br />

Stromsparend<br />

und leise , aber<br />

auch leistungsfähig?<br />

Der Krenn<br />

Low Energy Server<br />

im Test.<br />

Security<br />

90 Uneinsichtig<br />

SHA-3, der neue Hash-Standard — notwendige<br />

oder überflüssige Sicherheit?<br />

94 Leider geöffnet<br />

Automatisierte Portscans finden<br />

Schwachstellen in großen Computernetzen.<br />

98 Gift für alle Fälle<br />

Wie SQL-Injection-Lücken funktionieren<br />

und man sie automatisiert aufspürt.<br />

Programmieren<br />

102 Edler Tropfen<br />

Die Alternative<br />

zum Django-<br />

Framework:<br />

Webanwendungen<br />

mit Flask.<br />

106 Patchwork<br />

Effiziente Server-<br />

Fernsteuerung<br />

mit Python-<br />

Skripts.<br />

freeX<br />

109 freeX<br />

Artikel und Workshops aus der freeX.<br />

110 Sicher hinter Gittern<br />

Wie Jails in FreeBSD einzelne Prozesse<br />

sicher voreinander isolieren.<br />

120 Neubau<br />

Das neue Paketmanagement in FreeBSD.<br />

124 Hochzeit<br />

FreeBSD und KVM-Virtualisierung.<br />

Mehr Infos auf Seite 6<br />

FOSS-Cloud<br />

n Cloud und Virtualisierung mit freier Software<br />

n Kompletter Jahrgang 2012 der FreeX im PDF-Format<br />

www.admin-magazin.de Admin Ausgabe 01-2013 5


SErvice<br />

Heft-CD<br />

Heft-CD<br />

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

Version der FOSS-Cloud-Distribution [1], eine Umgebung für<br />

den Betrieb virtueller Maschinen.<br />

◗ Cloud und Virtualisierung für <strong>Linux</strong> und Windows.<br />

◗ Server- und Desktop-Virtualisierung.<br />

◗ Support für Audio, Video, USB und Smartcards.<br />

◗ Basiert auf freier und Open-Source-Software (FOSS).<br />

◗ Erfordert zur Installation eine komplette Festplatte (Partition<br />

genügt nicht).<br />

Mehr Informationen geben zwei Artikel in der FreeX<br />

05/2012, die Sie auf der CD im Verzeichnis "admin-freex"<br />

finden.<br />

Legen Sie einfach die CD in das Laufwerk ein, und starten<br />

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

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

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

CD kaputt?<br />

Wir schicken Ihnen kostenlos eine<br />

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

info@admin-magazin.de<br />

Info<br />

[1] FOSS Cloud: [http://www.foss-cloud.org/de]<br />

6 Ausgabe 01-2013<br />

Admin www.admin-magazin.de


vServer Cloud 2.0<br />

Voller Root- und Administrator-Zugriff<br />

• Cloud-Funktion mit höchster Flexibilität<br />

• Kostenkontrolle durch tagesgenaue Abrechnung<br />

• Garantiert in 12 Stunden verfügbar<br />

• Jetzt ab sofort mit PrePaid-Funktion<br />

50% Rabatt<br />

in den ersten 3 Monaten<br />

vServer S 2.0<br />

vServer M 2.0<br />

vServer L 2.0<br />

vServer XL 2.0<br />

Core`s (jeweils 2.000 MHz) 1<br />

2<br />

3<br />

4<br />

RAM 1.024 MB 2.048 MB 4.096 MB 8.192 MB<br />

RAM Dynamisch 2.048 MB 4.096 MB 8.192 MB 16.384 MB<br />

Festplatte NEU 100 GB NEU 150 GB<br />

NEU 200 GB NEU 300 GB<br />

Traffic<br />

Betriebssysteme<br />

100 Mbit Full-Flatrate<br />

<strong>Linux</strong> (Debian 6.0.6, CentOS 6.3, openSUSE 12.2 & Ubuntu 12.04) oder ohne Aufpreis Windows 2008 R2 Standard-Edition<br />

.de Domain inklusive<br />

IPv4 Adressen inkl.<br />

IPv6 Subnetz (/64) Inkl.<br />

1<br />

1<br />

2<br />

2<br />

3<br />

3<br />

4<br />

4<br />

Extras<br />

Firewall, Reboot, Recovery, Monitoring, Reverse DNS<br />

Monatsgrundgebühr<br />

Preis für die ersten 3 Monate<br />

4,49€<br />

8,99 € 18,99 € 38,99 € 38,99 €<br />

9,99€ 14,99€ 19,99€<br />

Jetzt informieren und bestellen Tel.: 0211 / 545 957 - 330 www.webtropia.com<br />

PLATINUM PARTNER


Login<br />

Bücher<br />

Bücher über HA-Cluster und KVM<br />

Vorgelesen<br />

Der technische Fortschritt in der <strong>Linux</strong>-Welt hat einem Cluster-Buch zu<br />

einer modernisierten dritten Auflage verholfen. Ein weiteres Werk widmet<br />

sich dem Aufsteiger KVM. Jens-Christoph Brendel, Udo Seidel<br />

KVM ist der Shooting Star der Virtualisierungstechniken<br />

unter <strong>Linux</strong> und hat<br />

in den letzten Jahren Xen und andere<br />

Hypervisors mit Blick auf die Popularität<br />

klar abgehängt. Entsprechendes Publikumsinteresse<br />

kann man sicher für den<br />

Titel „KVM für die Server-Virtualisierung“<br />

voraussetzen, den zwei namhafte<br />

<strong>Linux</strong>-Publizisten, Michael Kofler und<br />

Ralf Spenneberg, nun vorlegen.<br />

KVM en Detail<br />

Im Untertitel konnten die Autoren das offenbar<br />

obligatorische Schlagwort „Cloud“<br />

nicht vermeiden, was im Buch dann aber<br />

auf den drei Seiten eines Alibi-Abschnitts<br />

dazu folgt, hätte man ebensogut weglassen<br />

können. Für den eigentlichen Gegenstand,<br />

KVM, gilt jedoch im Gegenteil,<br />

dass er in vielen Facetten, tiefgründig<br />

und dabei auch gut verständlich vorgestellt<br />

wird.<br />

Verdienstvollerweise geht es nicht nur<br />

um die Virt-Manager-GUI, stattdessen ist<br />

der Administration auf der Kommandozeile<br />

ein ganzes Kapitel gewidmet, das<br />

alle KVM- oder Libvirt-Kommandos eingehend<br />

bespricht. Weitere Kapitel wenden<br />

sich dann den Ressourcen virtueller<br />

Maschinen zu, wie virtuellen Datenträgern,<br />

Grafik, CPU, Hauptspeicher, an-<br />

deren Komponenten wie USB oder dem<br />

Netzwerk. Ein eigenes Kapitel beleuchtet<br />

den wichtigen Aspekt Sicherheit.<br />

Besondere Vorkenntnisse sind kaum nötig.<br />

An manchen Stellen gehen die Kompromisse<br />

mit Blick auf gute Verständlichkeit<br />

vielleicht ein bisschen weit. „Eine<br />

Bridge ist ein Switch“ (S.150) stimmt<br />

zum Beipsiel eher umgekehrt. Davon<br />

aber abgesehen, beleuchtet gerade das<br />

Netzwerkkapitel auch fortgeschrittene<br />

Techniken wie Passtrough, Bandbreitenregulierung<br />

oder Firewalling.<br />

Alles in allem ist das Buch zu KVM eine<br />

gelungene Einführung in ein aktuelles<br />

Thema, das man Einsteigern empfehlen<br />

kann, das aber auch dem erfahrenen Admin<br />

noch den einen oder anderen Tipp<br />

zu vermitteln vermag.<br />

Immer bereit<br />

Hochverfügbarkeit mit <strong>Linux</strong> hat eine<br />

wechselhafte Geschichte. Seit Pacemaker<br />

und Co. befindet sich das HA-Schiff<br />

aber in ruhigeren Gewässern. In der 3.<br />

Auflage seines Clusterbau-Buches zeigt<br />

Michael Schwartzkopff, wie Hochverfügbarkeit<br />

mit dem freien Betriebssystem<br />

funktioniert.<br />

Die rasche und teilweise turbulente Entwicklung<br />

des ursprünglichen Heartbeat-<br />

Projektes macht die Aktualisierung eines<br />

solchen Bands unumgänglich. Auch die<br />

generelle Technik in der IT entwickelt<br />

sich weiter: Cluster-Interconnects über<br />

serielle Schnittstellen sind schon lange<br />

nicht mehr zeitgemäß und finden daher<br />

auch hier keine Beachtung mehr.<br />

Die Anforderung „Das System muss immer<br />

verfügbar sein“ ist einfach formuliert<br />

– die entsprechende Umsetzung muss<br />

einige Hürden überwinden. Michael<br />

Schwartzkopff führt sehr schön in das<br />

Thema Hochverfügbarkeit ein. Zunächst<br />

erklärt er Begriffe wie „immer“ oder<br />

„Dienst“.<br />

Im nächsten Kapitel folgt ein historischer<br />

Abriss über das bekannte <strong>Linux</strong>-Projekt<br />

Heartbeat. Die saubere Erklärung der<br />

Komponenten und der verwendeten Terminologie<br />

ist dabei besonders hervorzuheben.<br />

Seit den Heartbeat-Versionen 1<br />

und 2 hat sich viel verändert – der Autor<br />

stellt die einzelnen Komponenten wie<br />

Pacemaker oder Open AIS vor und erläutert<br />

deren Aufgaben. So stellt er sicher,<br />

dass Leser mit egal welchem Ausgangsniveau<br />

genau wissen, worüber er gerade<br />

schreibt.<br />

Auf circa 400 Seiten behandelt der Text<br />

die Installation, erste Konfigurationen,<br />

die Verwaltung per Kommandozeile oder<br />

GUI und zeigt Beispielszenarien. Kapitel<br />

über den Betrieb und detaillierte Informationen<br />

über Cluster-Agenten runden<br />

das Buch ab. Neu ist das Kapitel zur<br />

geeigneten Infrastruktur, welches das HA-<br />

Konzept über die Server-Grenzen hinaus<br />

erweitert.<br />

Für rund 45 Euro erhält man eine umfassende<br />

Dokumentation zum Thema<br />

Hochverfügbarkeit mit <strong>Linux</strong>. Wer die<br />

erste Auflage von 2008 besitzt, sollt diese<br />

nun beiseite legen und das aktuelle Buch<br />

kaufen.<br />

n<br />

KVM<br />

Michael Kofler, Ralf Spenneberg<br />

KVM für die Server-Virtualisierung<br />

Addison-Wesley, 2012<br />

341 Seiten<br />

41 Euro<br />

ISBN 978-3-8273-3149-6<br />

Clusterbau<br />

Michael Schwartzkopff<br />

Clusterbau: Hochverfügbarkeit mit<br />

<strong>Linux</strong><br />

O’Reilly, 3. Auflage 2012<br />

420 Seiten<br />

45 Euro<br />

ISBN 978-3-86899-358-5<br />

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


Ein vollwertiger Server,<br />

im Taschenbuchformat!<br />

Green-IT<br />

Stromverbrauch: ca. 6 - 9 Watt<br />

Unauffällig<br />

Klein und absolut geräuschlos<br />

Kein PC<br />

Echte Serverkomponenten 24/7 zertifiziert<br />

Low Energy Server<br />

Bestens geeignet für Anwendungs- und<br />

Softwareentwickler - ebenso als Firewalllösung oder<br />

Router und aufgrund der geringen Größe für den<br />

mobilen Einsatz. Dank des sparsamen Verbrauchs<br />

ist der LES ebenfalls als kleiner Webserver praktisch.<br />

Sparen Sie im Jahr über 100 Euro an<br />

Stromkosten gegenüber einem vergleichbaren<br />

Server auf Atombasis.<br />

Nur bei Thomas<br />

Krenn ab:<br />

€<br />

499,–<br />

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

TRY<br />

&<br />

BUY<br />

Diesen und andere Thomas Krenn Server<br />

können Sie auch per Try & Buy testen<br />

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

CH: +41 (0) 848207970<br />

AT: +43 (0)732 - 2363 - 0<br />

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

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


Login<br />

News<br />

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

Neue Software und Produkte<br />

Branchen-News<br />

Freiburg verabschiedet sich von Open Office<br />

Der Freiburger Gemeinderat hat mit<br />

knapper Mehrheit dafür votiert, in der<br />

Stadtverwaltung kein Open Office mehr<br />

einzusetzen. Stattdessen soll Microsoft<br />

Office künftig als Bürosuite dienen. Damit<br />

folgten Stimmberechtigten der Empfehlung<br />

eines Gutachtens,<br />

das im Jahr 2011<br />

die städtische IT untersucht<br />

hatte.<br />

Dieses Gutachten hatten<br />

vier Verbände im Vorfeld<br />

der Entscheidung<br />

kritisiert: Open Source<br />

Business Alliance, Free<br />

Software Foundation<br />

Europe (FSFE), der Bundesverband<br />

Informations-<br />

und Kommunikationstechnologie<br />

sowie<br />

Der Gemeinderat Timothy Simms<br />

findet, bei der Migration habe die<br />

Verwaltung vieles falsch gemacht.<br />

die Document Foundation (TDF). Das<br />

vierseitige Schreiben bemängelt Fehleinschätzungen<br />

bezüglich der Situation auf<br />

dem Markt der freien Office-Varianten.<br />

Daneben sieht es Auslassungen bei den<br />

Handlungsalternativen, die einen reinen<br />

Einsatz von freier Office-<br />

Software gar nicht mehr<br />

in Betracht ziehen, sondern<br />

als gescheitert ablehnen.<br />

Die Freiburger ziehen<br />

in der Mehrheit ein<br />

negatives Resümee<br />

der versuchten Open-<br />

Office-Einführung.<br />

„Eine 3000-Personen-<br />

Verwaltung kann nicht<br />

dauerhaft im Trial-anderror-Modus<br />

laufen“,<br />

zitiert das Presseamt den SPD-Stadtrat<br />

Kai-Achim Klare. Gegen den Open-Office-<br />

Ausstieg stimmte beispielsweise Timothy<br />

Simms, stellvertretender Vorsitzender<br />

der Stadtratsfraktion Junges Freiburg/​Die<br />

Grünen. Im Gespräch mit dem <strong>Linux</strong>-<br />

<strong>Magazin</strong> sagte er: „Freiburg – das war<br />

uns vorher gar nicht so bewusst – hat nie<br />

richtig zu Open Office gewechselt, vielmehr<br />

wurde in der Regel parallel mit dem<br />

veralteten MS Office 2000 gearbeitet. Dazu<br />

kam eine allgemeine Unzufriedenheit<br />

seitens der Fachverwaltungen gegenüber<br />

der IT. Dann ist Open Office ein Stück<br />

weit zu einem Symbol geworden für alles,<br />

was zwischen IT und Verwaltung nicht<br />

funktionierte.“ Die Stadt im Breisgau ist<br />

seiner Meinung nach ein Beispiel dafür,<br />

„wie man eine Migration besser nicht<br />

angeht“.<br />

Samba 4 ist da<br />

Das Samba-Team hat nach langen Jahren der Entwicklungszeit<br />

die vierte Version des SMB-Servers veröffentlicht. Der kann<br />

jetzt auch Active-Directory-Server spielen und bringt auch sonst<br />

einige lang erwartete Neuerungen.<br />

Hersteller wie Univention hatten Backports auf Samba 4 mithilfe<br />

eigener Addons schon länger im Programm (das <strong>Linux</strong>-<strong>Magazin</strong><br />

berichtete ), doch die Samba-Entwickler selbst traten lange auf<br />

die Bremse und wollten offenbar nicht zu früh veröffentlichen<br />

und so eventuell zahlreiche Windows-Client-User vergrätzen.<br />

Jetzt ist die Samba-Server-Suite veröffentlicht, Version 4 steht<br />

zum Download bereit.<br />

Die wichtigsten Änderungen stellen nach der langen Entwicklungszeit<br />

dann auch keine wirklichen Neuheiten mehr dar.<br />

Erwartungsgemäß kann Samba 4 jetzt einen Active-Directory-<br />

Server vollständig ersetzen (AD 2000 und später): Das Domänenlogon<br />

für Clients mit Kerberos und LDAP über CIFS<br />

funktioniere jetzt sauber, schreiben die Entwickler in ihrem<br />

Announcement.<br />

Dazu kommen mit NTVF ein neuer Fileserver, zwei DNS-<br />

Varianten, NTP-Integration und ein Python Scripting Interface.<br />

Einige Probleme gäbe es zwar noch, zum Beispiel bei der Replikation<br />

auf BSD-Hosts, doch die Workarounds kämen in den<br />

nächsten Versionen.<br />

GUUG-Frühjahrsfachgespräch 2013<br />

Das Programm des Frühjahrsfachgesprächs der German Unix<br />

User Group (GUUG), das vom 26. Februar bis 1. März an der<br />

Fachhochschule Frankfurt am Main stattfindet, steht jetzt fest.<br />

Wegen der Vielzahl an Einsendungen stockte das Programmkomitee<br />

dieses Jahr den ersten Konferenztag mit einem dritten<br />

Track auf. Insgesamt 37 Vorträge mit den Schwerpunkten Netzwerk-<br />

und IT-Sicherheit, Dateiverwaltung, Ressourcen-Management,<br />

Softwareverteilung oder Virtualisierung warten nun auf<br />

die 200 Teilnehmer.<br />

Eine große Rolle nimmt IPv6 ein: Sicherheitsexperte Christoph<br />

Wegener ist nicht nur am zweitägigen Tutorium zum IPv6-<br />

Monitoring beteiligt, sondern widmet sich gemeinsam mit dem<br />

IT-Anwalt Jörg Heidrich den datenschutzrechtlichen Fragen des<br />

Internetprotokolls. Der IT-Berater Marc Haber deckt in einem<br />

Vortrag die „Marketinglügen“ über IPv6 auf.<br />

Daniel Kobras und Michael Weiser führen den FFG-Dauerbrenner<br />

schlechthin fort: Auch 2012 geben sie ein zweitägiges Tutorium<br />

zur Sicherheit plattformübergreifender Dateidienste. Kobras<br />

ergänzt das Thema durch einen weiteren Vortrag zum Lustre/​<br />

ZFS-Projekt, einer Initiative, die die Vorteile von verteilten und<br />

lokalen Dateisystemen vereinen soll. Entscheidungshilfen dazu<br />

gibt es bei Lenz Grimmer und Ulrich Gräf, die ZFS mit dem<br />

<strong>Linux</strong>-Dateisystem Btrfs vergleichen.<br />

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


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

Inktank und Suse bieten Support für Ceph<br />

In einer Pressemitteilung haben Suse und der kalifornische<br />

Storage-Spezialist Inktank angekündigt, künftig gemeinsam<br />

Support für Anwender des verteilten Speichersystems Ceph<br />

anzubieten. Zumindest in der Suse Cloud soll es demnächst<br />

<strong>Enterprise</strong>-Support auch für das Filesystem geben. Das Netzwerkdateisystem<br />

arbeitet mit Open Stack zusammen, von beidem<br />

macht Suses Wolke ausgiebig Gebrauch. Inktank [http://​<br />

​www.​inktank.​com] ist nach eigener Aussage der erste Anbieter, der<br />

Unternehmenssupport für Ceph anbietet.<br />

Suses Cloud gewinnt damit einen weiteren wichtigen Partner,<br />

nachdem die Nürnberger erst vor wenigen Monaten Dells<br />

Deploymenttool Crowbar integriert hatten.<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 />

Umweltschützer speichern vor Ort<br />

Eine Studie des Öko-Instituts Freiburg kommt zu dem Schluss,<br />

dass lokale NAS-Speicher für Heimanwender günstiger und<br />

umweltverträglicher sind als Speicherangebote im Internet.<br />

So fielen für das Speichern von 4,7 GByte Daten in einem<br />

Online-Speicher 55 Kilogramm CO2-Äquivalente an. Ein energieeffizienter<br />

NAS-Speicher im Heimnetzwerk verbrauche für<br />

die gleiche Datenmenge nur 150 Gramm. Die Speicherung<br />

im lokalen NAS soll auch kostengünstiger sein. So kostet der<br />

lokale Netzwerkspeicher nach Berechnungen des Instituts pro<br />

TByte und Jahr rund 100 Euro. Die Cloud-Speicher bieten zum<br />

gleichen Preis nur etwa 100 GByte Speicherplatz.<br />

Das Öko-Institut [http://​oeko.​de], das Vergabekriterien für das<br />

Umweltzeichen „Der Blaue Engel“ entwickelt, hat Empfehlungen<br />

für den Kauf kleiner Netzwerkspeicher abgeleitet. Ran<br />

Liu, eine wissenschaftliche Mitarbeiterin des Öko-Instituts, rät:<br />

„Beim Kauf sollten Verbraucherinnen und Verbraucher auf<br />

den Stromverbrauch der Geräte achten. Ein energieeffizienter<br />

Netzwerkspeicher mit zwei Festplatten verbraucht maximal 58<br />

Kilowattstunden pro Jahr. Ineffiziente Geräte können leicht das<br />

Doppelte verbrauchen.“ Die Geräte sollten dabei über einen<br />

Standby-Modus mit weniger als 4 Watt verfügen.<br />

Standard HSTS soll Web sicherer machen<br />

Der neue Standard HSTS soll künftig dafür sorgen, dass Websites<br />

nur noch über HTTPS erreichbar sind, wenn sie entsprechend<br />

konfiguriert sind.<br />

Die Internet Engineering Task Force (IETF) hat den RFC 6797<br />

veröffentlicht und damit HTTP Strict Transport Security (HSTS)<br />

formal als Internet-Standard festgeschrieben. Webserver, die<br />

entsprechend konfiguriert sind, erlauben damit nur noch verschlüsselte<br />

Verbindungen. Dies setzt allerdings voraus, das<br />

Webbrowser auf das vom Server verschickten Header-Feld wie<br />

gewünscht reagieren. Gleichzeitig ist der Sicherheitsmechanismus<br />

nicht von Haus aus immun gegen Man-in-the-Middle-<br />

Angriffe, die den Header manipulieren. Browser wie Chrome<br />

und Firefox wollen deshalb eine Liste von Websites führen, die<br />

HSTS-kompatibel sind.<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 />

Voicemailboxen<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 />

Ausgabe 01-2013<br />

11


Login<br />

News<br />

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

Die Daten liegen draußen<br />

Der erste Digital Information Index von Symantec unterstreicht<br />

die Bedeutung von Cloud Computing und Mobilität für moderne<br />

Unternehmen. Der Studie zufolge werden Unternehmensdaten<br />

immer häufiger außerhalb des Rechenzentrums genutzt und<br />

gespeichert.<br />

Weltweit wird fast die Hälfte aller Unternehmensinformationen<br />

(46 Prozent) außerhalb des eigenen Rechenzentrums<br />

gespeichert. Kleine und mittelständische Unternehmen (KMU)<br />

liegen dabei mit 53 Prozent vor Konzernen, insbesondere, wenn<br />

mobile Endgeräte und Laptops genutzt werden. Deutschland<br />

befindet sich hier mit 48 Prozent etwas über dem weltweiten<br />

Durchschnitt, während Länder wie Indien (83 Prozent), China<br />

(60 Prozent) und Singapur (60 Prozent) deutlich darüber liegen.<br />

Dabei hat mehr als ein Drittel der befragten Firmen bereits<br />

vertrauliche Informationen durch Verlust oder Diebstahl von<br />

mobilen Geräten verloren. Zudem geben die Befragten an, es sei<br />

schwierig, immer die richtigen Daten zu finden, da Mitarbeiter<br />

die Informationen weitgehend unorganisiert speichern.<br />

Weltweit werden 14 Prozent der Unternehmensinformationen<br />

auf Smartphones und Tablets gespeichert – in Deutschland<br />

sogar 16 Prozent. Vergleicht man hier die Unternehmensgröße,<br />

liegen große Firmen mit 14 Prozent vor KMU (11 Prozent). Global<br />

werden außerdem bereits 28 Prozent der Informationen von<br />

unterwegs abgerufen – auch hier führen große Unternehmen<br />

mit 31 Prozent das Feld vor den KMU (25 Prozent) an.<br />

Virtuelles Red-Hat-Training für Europa<br />

Das Open-Source-Unternehmen Red Hat bietet seine Schulungen<br />

im virtuellen Format nun auch in Europa an.<br />

Das Angebot soll sich auf eine große Liste von Themen und<br />

Zertifizierungen erstrecken, vom bekannten RHCE über Kurse<br />

zu Solaris bis zur Jboss-Administration und ‐Entwicklung. Die<br />

Termine für Deutschland finden sich unter [http://​www.​europe.​<br />

​redhat.​com/​training/​dates/​?​country=DEV]<br />

Die Online-Schulungen werden live von Trainern betreut und<br />

bieten die Gelegenheit zu praktischen Übungen an virtualisierten<br />

Systemen. Sie erstrecken sich über drei bis fünf Tage, an<br />

denen je fünfeinhalb Stunden Schulung stattfinden.<br />

ISO normiert digitale Beweissicherung<br />

Mit ISO/​IEC 27037:2012 ist ein internationaler Standard für<br />

die elektronische Beweissicherung verabschiedet worden. Die<br />

Norm enthält Richtlinien für die Beschaffung, Sammlung und<br />

Sicherung digitaler Beweise und den Erhalt ihrer Glaubwürdigkeit.<br />

Sie richtet sich an Personen und Organisationen, die<br />

mit der Auswertung digitaler Beweise befasst sind, aber auch<br />

an einschlägige Normungsgremien. Der Standard ersetzt keine<br />

rechtlichen Bestimmungen, sondern versteht sich als Praxis-<br />

Leitfaden. Entwickelt wurde er durch das Komitee ISO/​IEC JTC<br />

1, Information Technology.<br />

UEFI Secure Boot: Mühe mit der Microsoft-Signatur<br />

Die Bemühungen der <strong>Linux</strong> Foundation, einen UEFI-Bootloader<br />

von Microsoft signieren zu lassen, gestalten sich mühsam. Das<br />

berichtet James Bottomley, Vorsitzender des technischen Beirats<br />

der Organisation, in seinem Blog. Die Foundation möchte für<br />

<strong>Linux</strong>-Anwender Tools bereitstellen, mit denen sie UEFI Secure<br />

Boot deaktivieren und umkonfigurieren können. Zudem soll es<br />

einen Pre-Bootloader geben, der beliebige andere Bootloader<br />

wie etwa Grub für <strong>Linux</strong> startet.<br />

In seinem Beitrag beschreibt Bottomley nun, dass sich die<br />

Prozedur für die signierten UEFI-Executables langwieriger<br />

und schwieriger gestalte als erwartet. Das „Abenteuer“, wie<br />

er es bezeichnet, beginnt<br />

mit dem Erwerb eines Verisign-Schlüssels,<br />

mit dem<br />

man sich auf der Microsoft<br />

Sysdev-Seite anmeldet und<br />

seine Identität beweist. Dazu<br />

signiert der Benutzer ein<br />

Binary und lädt es hoch.<br />

Eigentlich sollte das mit einer<br />

bestimmten Windows-<br />

Version geschehen, doch offenbar<br />

erfüllt auch das freie<br />

Tool Sbsign seinen Zweck. James Bottomley bemüht sich, von<br />

Vor dem Signierenlassen Microsoft einen signierten UEFIvon<br />

UEFI-Programmen muss Bootloader zu bekommen.<br />

dann der Vertragsschluss mit Microsoft erfolgen. Hier berichtet<br />

James Bottomley von zahlreichen Klauseln, die über die eigentlichen<br />

UEFI-Executables hinausgingen und beispielsweise<br />

GPL-Treiber ausschlössen. Einem Bootloader steht aber offenbar<br />

nichts im Wege.<br />

Das Signieren erfordert dann, die Binärdatei in eine Microsoft<br />

Cabinet-Datei zu verpacken, wozu das Open-Source-Programm<br />

Lcab taugt. Anschließend muss der Benutzer das Archiv mit seinem<br />

Verisign-Schlüssel signieren. Glücklicherweise gibt es auch<br />

hierfür mit Osslsigncode eine freie Lösung. Beim Upload kommt<br />

dann Microsofts Silverlight-Technologie zum Einsatz.<br />

Die bisherigen Versuche haben offenbar noch nicht zum Erfolg<br />

geführt. Somit gibt es derzeit noch keinen passend von Microsoft<br />

signierten UEFI-Bootloader der <strong>Linux</strong> Foundation. James<br />

Bottomley möchte sich weiter bemühen und die Datei auf die<br />

Website der <strong>Linux</strong> Foundation stellen.<br />

In der Zwischenzeit hat der Open-Source-Entwickler Matthew<br />

Garrett seinen Bootloader namens Shim in einer gebrauchsfertigen<br />

Version veröffentlicht. Im Unterschied zum Loader<br />

der <strong>Linux</strong>-Foundation setzt er voraus, dass der Anwender sein<br />

eigenes Zertifikat im UEFI einspielt und den Bootloader selbst<br />

signiert. Somit ist kein Schlüssel eine Dritten wie etwa Microsoft<br />

erforderlich. Shim 0.2 steht im Quelltext und als EFI-Binary<br />

unter [http://​www.​codon.​org.​uk/​~mjg59/​shim‐signed/] zum Download<br />

bereit. Er soll unter anderem in Fedora LInux 18 zum Einsatz<br />

kommen.<br />

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


News<br />

Login<br />

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

Vorträge für Cebit 2013 gesucht<br />

Das Open-Source-Forum der Cebit bildet den Rahmen für Vorträge zu <strong>Linux</strong> und<br />

freier Software.<br />

Mit dem Umzug in Halle 6 räumt die Cebit dem Thema Open<br />

Source im Jahr 2013 mehr Raum ein. Davon profitiert auch das<br />

Open Source Forum, das zusammen mit der Ausstellung des<br />

Open Source Parks das Thema <strong>Linux</strong> und freie Software auf der<br />

Cebit prägt. Die Cebit 2013 findet vom 5. bis 9. März 2013 in<br />

Hannover statt. Organisiert von der Medialinx AG (Herausgeber<br />

des <strong>ADMIN</strong>-<strong>Magazin</strong>s), bietet das Open Source Forum dem<br />

Cebit-Publikum ein umfangreiches Vortragsprogramm, das alle<br />

Facetten der <strong>Linux</strong>- und Open Source-Welt beleuchtet<br />

Mit dem Call for Papers sind Entwickler und Strategen aus<br />

Community, Unternehmen und Behörden aufgerufen, ihre Vortragsvorschläge<br />

einzureichen. Gesucht werden Praktiker, die<br />

über ihre Erfahrungen bei der Entwicklung und beim Einsatz<br />

freier Software berichten. Gefragt sind innovative Produkte<br />

und neue Projekte sowie Open Source- und <strong>Linux</strong>-spezifische<br />

Technologien. Von besonderem Interesse ist der Themenbereich<br />

„Open Source in der Mobile-IT“ sowie Themen, die an das<br />

Cebit-Leitthema 2013 „Shareconomy“ anknüpfen.<br />

Ihre Vorschläge können Interessierte per Formular unter [http://​<br />

​www.​linux‐magazin.​de/​cfp] einreichen. Über die Vergabe der<br />

Vortragsplätze entscheidet eine internationale Jury aus Open-<br />

Source-Experten.<br />

Red Hats PaaS: Open Shift ist fertig<br />

Nach RHEV und diversen anderen Produkten legt Red Hat nach<br />

und bringt jetzt mit Open Shift auch seine eigene PaaS-Lösung<br />

für die private, public oder hybride Cloud auf den Markt.<br />

Open Source durch und durch, das sei Open Shift, schreibt<br />

Red Hat in seinem Announcement. Zwar ist die Plattform für<br />

Webentwickler schon länger erhältlich, doch die <strong>Enterprise</strong>-<br />

Edition hat der Hersteller erst jetzt als Generally Available<br />

(GA) freigegeben. Produktinformationen gibt es unter [https://​<br />

​openshift.​redhat.​com/​app].<br />

Open Shift <strong>Enterprise</strong> setzt auf RHEL, Jboss, Java, Ruby, Python,<br />

PHP und Perl und nutzt eine sogenannte Cartridge-Architektur<br />

aus Virtualisierungscontainern (einer Kombination aus SE <strong>Linux</strong>,<br />

Cgroups und Namespaces), um die Middleware-Services<br />

für Entwickler leichter skalierbar zu machen.<br />

Red Hats Ashesh Badani (General Manager der Cloud Business<br />

Unit und von Open Shift) nennt das Produkt „die einzige offene<br />

PaaS-Umgebung für den Einsatz im eigenen Rechenzentrum“.<br />

Den guten Chancen am Markt pflichtet in der Pressemitteilung<br />

auch die IDC bei: Stephen Hendrick, Group Vice President<br />

Application Development und Deployment Research spricht von<br />

40 Prozent zu erwartenden Zuwächsen im PaaS-Bereich, die<br />

sich auch im eigenen Rechenzentrum abspielen werden.<br />

<strong>Linux</strong> Schulungen 2013 – Nicht verpassen!<br />

• Softwarepaketierung unter <strong>Linux</strong> mit RPM: 19.02.13<br />

NEU<br />

KVM - Server-<br />

Virtualisierung<br />

unter <strong>Linux</strong>:<br />

22.04.13<br />

• Erweiterungen programmieren für Check_MK: 25.02., 03.06.13<br />

• <strong>Linux</strong> - Crashkurs für Administratoren: 04.03., 13.05.13<br />

Oracle sammelt Red-Hat-Patches<br />

Unter dem Namen Redpatch hat Oracle ein neues Git-Repository<br />

veröffentlicht, das alle Patches für den <strong>Enterprise</strong>-Kernel von<br />

Red Hat sammelt. Die einzelnen Patches sind dort unter der<br />

GPL-Lizenz frei verfügbar. Unter den gleichen Bedingungen bietet<br />

Oracle auch die Patches für den eigenen „Unbreakable <strong>Enterprise</strong><br />

Kernel“ an. Zu dem Schritt habe Oracle sich entschlossen,<br />

weil Red Hat Anfang 2011 die Art der Veröffentlichung seiner<br />

Kernel-Änderungen geändert hat. Seither publiziert Red Hat<br />

nicht mehr einzelne Patches, sondern den gesamten Kernel-<br />

Code und einen einzigen Patch, der alle Änderungen enthält.<br />

Für die Arbeit an Ksplice zerlege Oracle seit Red Hats Umstellung<br />

den monolithischen Patch in einzelne Teile und sammle sie<br />

in einem eigenen Repository. Mit Redpatch sei dieses nun auch<br />

öffentlich verfügbar (siehe den Artikel zu <strong>Enterprise</strong>-<strong>Linux</strong> in<br />

diesem Heft). (jcb/​hje/​ofr/​mfe/​mhu)<br />

• Fortgeschrittenes Monitoring mit Nagios & Check_MK: 11.03., 10.06.13<br />

• <strong>Linux</strong> Administration für Fortgeschrittene: 18.03.13<br />

• Systemmonitoring mit Nagios und Check_MK: 08.04.13<br />

• NEU KVM - Server-Virtualisierung unter <strong>Linux</strong>: 22.04.13<br />

Gerne machen wir auch Inhouse-Schulungen direkt bei Ihnen vor Ort.<br />

Fragen Sie uns nach einem Angebot zu Ihrem Wunschthema.<br />

Besuchen Sie uns<br />

auf der CeBIT, Halle 6,<br />

Open Source Park.<br />

089 / 18 90 435 - 0<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

schulung@mathias-kettner.de<br />

13<br />

www.mathias-kettner.de


1&1 feiert Geburtstag – feiern Sie mit! Wir schenken Ihnen<br />

50,– € Jubiläums-Bonus!<br />

*<br />

DOMAINS | E-MAIL | WEBHOSTING | E-SHOPS | SERVER<br />

* 1&1 Jubiläumsaktion bis 31.01.2013 für Neukunden: 1&1 WebHosting Pakete 6 Monate 0,– €/Monat, danach z. B. 1&1 Dual Unlimited 24,99 €/Monat, 14,90 € Einrichtungsgebühr,<br />

einmaliger Jubiläumsbonus 50,– €. 1&1 Dynamic Cloud Server Basiskonfi guration 3 Monate 0,– €/Monat, danach 39,99 €/Monat, 39,– € Einrichtungsgebühr, einmaliger Jubiläumsbonus


1&1 WEBHOSTING<br />

1&1 feiert 25-jähriges Jubiläum. Profitieren Sie von 25 Jahren Erfahrung und geben Sie Ihren Web-Projekten eine sichere<br />

Zukunft. Denn mit weltweit über 11 Mio. Kundenverträgen, 5.000 Mitarbeitern und 5 Hochleistungs-Rechenzentren ist<br />

1&1 einer der größten Webhoster weltweit. Als Kunde profitieren Sie von unserem langjährigen Know-how und unserem<br />

24/7 Experten-Support. Und das Beste ist: Allen, die sich bis 31.01.13 für 1&1 entscheiden, schenken wir bis zu 50,– €<br />

Jubiläums-Bonus!<br />

1&1 WebHosting<br />

1&1 Cloud Server<br />

1&1 Dedicated Server<br />

■ Optimale Sicherheit durch parallelen<br />

Betrieb und tägliche Backups<br />

■ Bis zu 8 Inklusiv-Domains<br />

■ Freie Wahl des Betriebssystems<br />

(<strong>Linux</strong> oder Windows)<br />

■ NEU! PHP 5.4 inklusive<br />

■ Inklusive aller Tools zur Realisierung<br />

Ihrer Ideen<br />

■ Unlimited Traffic inklusive<br />

■ Voller Root Zugriff<br />

■ Individuelle Kombination aus CPU,<br />

RAM und Festplattenspeicher<br />

■ Abrechnung stundengenau und<br />

konfigurationsbasierend<br />

■ Optimale Sicherheit durch parallelen<br />

Betrieb<br />

■ Wiederherstellung per Snapshot<br />

■ Unlimited Traffic inklusive<br />

■ Voller Root Zugriff<br />

■ Bis zu 32 Cores und 64 GB RAM<br />

■ Große Auswahl an Betriebssystemen<br />

■ Bereitstellung und Austausch<br />

innerhalb von 24h<br />

■ Nahezu 100 % Verfügbarkeit und<br />

Erreichbarkeit<br />

■ Unlimited Traffic inklusive<br />

6 MONATE<br />

0,–<br />

€ * 0,–<br />

€<br />

0,–<br />

€<br />

50,– € *<br />

*<br />

*<br />

50,–<br />

€ *<br />

3 MONATE<br />

+ BONUS<br />

+<br />

JUBILÄUMS-<br />

BONUS 3 MONATE<br />

BONUS<br />

+<br />

50,–<br />

JUBILÄUMS-<br />

JUBILÄUMS-<br />

50,–<br />

€ *<br />

0 26 02 / 96 91<br />

0800 / 100 668<br />

1und1.info<br />

50,– €. 1&1 Dedicated Server 3 Monate 0,– €/Monat, danach z. B. 1&1 Server XXL24i 399,– €/Monat, 99,– € Einrichtungsgebühr, einmaliger Jubiläumsbonus 50,– €. Für alle Aktionsangebote<br />

12 Monate Mindestvertragslaufzeit. Jubiläumsbonus wird mit der jeweiligen monatlichen Grundgebühr ab dem ersten Bezahlmonat verrechnet. Preise inkl. MwSt.


Login<br />

Auftragsdatenverarbeitung<br />

© Steve Cukrov, 123RF<br />

Wie man externe Dienstleister richtig beauftragt<br />

Arbeit im<br />

Auftrag<br />

Manches erledigt ein spezialisierter Dienstleister effizienter als man es<br />

selbst könnte, Stichwort Outsourcing. Wenn dabei personenbezogene Daten<br />

ins Spiel kommen, macht das Bundesdatenschutzgesetz sehr konkrete<br />

Vorgaben für die sogenannte Auftragsdatenverarbeitung. Ignoranz kann<br />

teuer werden. Vilma Niclas<br />

Ein Beispiel: Die Geschäftsführer eines<br />

Unternehmens aus Bremen versandten<br />

einen Newsletter an Kunden durch eine<br />

externe Medienfirma. Der bremische Landesbeauftragte<br />

für den Datenschutz verhängte<br />

ein Bußgeld von insgesamt 8 000<br />

Euro und rügte: Die Aufträge waren nicht<br />

richtig erteilt worden, es fehlte an der<br />

Schriftform, der Vertrag enthielt nicht die<br />

Inhalte, die das Gesetz zwingend<br />

vorschrieb, und das Unternehmen<br />

habe es versäumt,<br />

vor Beginn des Auftrages zu<br />

prüfen, welche technischen<br />

und organisatorischen Maßnahmen<br />

der Dienstleister in<br />

datenschutzrechtlicher Hinsicht<br />

getroffen habe. Die Geschäftsführer<br />

zahlten die Bußgelder<br />

ohne Widerspruch.<br />

Datenschutzfalle:<br />

Google Analytics<br />

© Oleksandr Nebrat, 123RF<br />

Viele Unternehmen nutzen<br />

Google Analytics auf ihren<br />

Webseiten, ein Statistikprogramm,<br />

das IP-Adressen speichert. Nach<br />

Ansicht von Datenschützern sind dies<br />

personenbezogene Daten, die Google im<br />

Auftrag des Webseitenbetreibers verarbeitet.<br />

Der Webseitenbetreiber ist für den<br />

Datenschutz verantwortlich. Der Hamburger<br />

Datenschutzbeauftragte hatte sich<br />

Ende 2011 mit Google daraufhin geeinigt,<br />

dass Webseitenbetreiber das Tool nutzen<br />

Abbildung 1: Analysetools wie Google Analytics arbeiten häufig mit personenbezogenen<br />

Daten und beinhalten dann eine Auftragsdatenverarbeitung.<br />

können, sofern diese mit Google einen<br />

Vertrag zur Auftragsdatenverarbeitung<br />

nach deutschem Bundesdatenschutzgesetz<br />

schließen. Zudem muss Google<br />

mithilfe eines Deaktiverungs-Add-ons<br />

für den Browser dafür sorgen, dass jeder<br />

Internetnutzer der Erfassung seiner<br />

Daten widersprechen kann. Der Datenschutzhinweis<br />

auf der Website des jeweiligen<br />

Anbieters müsse darauf hinweisen.<br />

Zudem muss der Webseitenbetreiber<br />

per Programmcode auf der Website die<br />

Möglichkeit haben, die IP-Adressen nur<br />

anonymisiert zu erfassen und die letzten<br />

Stellen zu löschen.<br />

Der Bayerische Landesdatenschutzbeauftragte<br />

stellte fest, nur wenige Unternehmen<br />

halten sich daran und informierte<br />

einige Unternehmen [1]. Nachdem die<br />

Folgeprüfung ergab, dass einige noch immer<br />

nichts unternommen hatten, erließ<br />

man 106 Bußgeldbescheide. Auch dieses<br />

Beispiel zeigt, wie wichtig es ist, zu prüfen,<br />

ob die Vorgaben zur Auftragsdatenverarbeitung<br />

eingehalten werden.<br />

Bis 50 000 Euro Bußgeld<br />

Bei einem Verstoß gegen die Vorgaben zur<br />

Auftragsdatenverarbeitung kann dies mit<br />

einem Bußgeld von bis zu 50 000 Euro<br />

geahndet werden. In § 43 I Nr. 2 b BDSG<br />

heißt es: „Ordnungswidrig handelt, wer<br />

vorsätzlich oder fahrlässig … entgegen<br />

§ 11 Absatz 2 Satz 2 einen Auftrag nicht<br />

richtig, nicht vollständig oder nicht in der<br />

vorgeschriebenen Weise erteilt oder entgegen<br />

§ 11 Absatz 2 Satz 4 sich nicht vor<br />

Beginn der Datenverarbeitung von der<br />

Einhaltung der beim Auftragnehmer<br />

getroffenen technischen<br />

und organisatorischen<br />

Maßnahmen überzeugt.“ Im<br />

Gesetz heißt es weiter: „Die<br />

Geldbuße soll den wirtschaftlichen<br />

Vorteil, den der Täter<br />

aus der Ordnungswidrigkeit<br />

gezogen hat, übersteigen.<br />

Reichen die in Satz 1 genannten<br />

Beträge hierfür nicht aus,<br />

so können sie überschritten<br />

werden.“<br />

Die Aufsichtsbehörden prüfen,<br />

ob Unternehmen sich daran<br />

halten. Ein weiteres Beispiel:<br />

Die Europcar Autovermietung<br />

GmbH hatte einen Teil ihrer<br />

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


Auftragsdatenverarbeitung<br />

Login<br />

Autos ohne Wissen der Mieter per GPS<br />

orten lassen. Der Hamburgische Beauftragte<br />

für Datenschutzschutz und Informationsfreiheit<br />

ahndete dies mit einem<br />

Bußgeld von 54 000 Euro. Die Mieter der<br />

Fahrzeuge wussten nichts von der Ortung<br />

und hatten ihr nicht zugestimmt. Der Vertrag<br />

über die Auftragsdatenverarbeitung<br />

mit dem Ortungsunternehmen fehlte.<br />

An die Auftragsdatenverarbeitung stellt<br />

das Bundesdatenschutzgesetz hohe Anforderungen.<br />

Sobald ein externer Dienstleister<br />

beauftragt wird und dieser personenbezogene<br />

Daten bearbeitet, die er<br />

vom Auftraggeber erhält, muss man sich<br />

mit dem Anbieter unterhalten: Wie steht<br />

es um den Datenschutz? Zwar delegiert<br />

man Aufgaben mit einem Werk- oder<br />

Dienstvertrag. Die Verantwortung für den<br />

Datenschutz für diese Kundendaten kann<br />

man aber oft nicht in derselben Weise<br />

delegieren.<br />

Einen seriösen und kompetenten Dienstleister<br />

erkennt man daran, dass er auf<br />

die Frage nach der Auftragsdatenverarbeitung<br />

nicht die Stirn runzelt, sondern<br />

eine kompetente Antwort parat hat und<br />

vielleicht auch schon einen Vertragsvorschlag,<br />

sofern er nötig ist. Es kann gravierende<br />

Folgen haben, wenn man mit<br />

einem Dienstleister zusammenarbeitet,<br />

der den Datenschutz nicht ernst nimmt.<br />

Den richtigen Dienstleister<br />

auswählen<br />

Das deutsche Datenschutzrecht verlangt:<br />

1. eine Vorabprüfung des Dienstleisters,<br />

2. eine schriftliche Datenschutzvereinbarung<br />

mit dem Dienstleister (sogenannter<br />

Vertrag zur Auftragsdatenverarbeitung),<br />

3. zu kontrollieren, ob die Vereinbarung<br />

eingehalten wird.<br />

Diese Datenschutzvereinbarung ergänzt<br />

den Werk- oder Dienstvertrag für die<br />

Dienstleistung. Das Gesetz regelt genau<br />

den Mindestinhalt einer solchen Vereinbarung.<br />

Einigermaßen kompliziert wird<br />

es, wenn der IT-Dienstleister im Ausland<br />

beziehungsweise außerhalb der Europäischen<br />

Union seinen Sitz hat und dort<br />

die Daten verarbeitet (siehe Kasten<br />

"Server im Ausland)". Spätestens dann<br />

sollte man einen beratenden Anwalt hinzuziehen,<br />

und gegebenenfalls muss man<br />

sich nach einem alternativen Anbieter<br />

umsehen.<br />

Wann liegt Auftragsdatenverarbeitung<br />

vor?<br />

Die sogenannte Auftragsdatenverarbeitung<br />

ist in § 11 des Bundesdatenschutzgesetzes<br />

(BDSG) geregelt. Dort heißt es<br />

in Absatz 1: „Werden personenbezogene<br />

Server im Ausland – welches Recht gilt?<br />

Viele große Cloud-Computing-Anbieter erfassen<br />

Daten in Deutschland, speichern sie jedoch auf<br />

Servern irgendwo außerhalb der EU, etwa in den<br />

USA. Nicht jedes Land bietet ein so hohes Datenschutzniveau<br />

wie Deutschland. Das strenge<br />

deutsche Datenschutzrecht gilt in vielen Fällen<br />

auch dann, wenn im Inland ordnungsgemäß erhobenen<br />

Daten in ein anderes Land übermittelt<br />

werden. Der Auftraggeber sollte sich im Vorfeld<br />

darüber informieren, wo die Daten verarbeitet<br />

werden. Zum Schutz gilt: Diese Daten dürfen<br />

nur innerhalb Deutschlands und der EU, sowie<br />

Norwegen, Island und Liechtenstein ohne Weiteres<br />

von den Unternehmen weiter übermittelt<br />

werden.<br />

Niveau ausreichend<br />

Darüber hinaus hat die Europäische Kommission<br />

einigen Ländern bescheinigt, dass ihr Datenschutzniveau<br />

hoch genug sei. Dazu gehören<br />

etwa: Kanada, Israel, die Schweiz und Argentinien.<br />

Für die USA hat die EU-Kommission die sogenannten<br />

„Safe Harbor Principles“ anerkannt.<br />

Unternehmen, die diese Standards akzeptieren,<br />

gewährleisten von sich aus einen höheren Datenschutz,<br />

als es das Gesetz verlangt. Dies sind etwa<br />

Amazon, Google und Microsoft. Bevor Sie einen<br />

Anbieter auswählen, erkundigen Sie sich, ob mindestens<br />

die „Safe Harbor Principles“ anerkannt<br />

werden. Zudem gibt es bei Datenübertragungen<br />

ins Ausland die Möglichkeit, einen ähnlich hohen<br />

Datenschutz wie in der EU zu vereinbaren, etwa<br />

mit EU-Standardvertragsklauseln [4].<br />

Vorsicht gilt aber, sobald man diese Klauseln modifiziert.<br />

Bei Anbietern aus den USA muss man<br />

zudem wissen: Diese unterliegen dem „Patriot<br />

Act“, der es US Behörden erlaubt, zur Terrorabwehr,<br />

auf Daten der Unternehmen zuzugreifen.<br />

Dies gilt auch für europäische Niederlassungen<br />

von US-Unternehmen. Dies kann Bußgelder für<br />

den Auftraggeber wegen eines Verstoßes gegen<br />

deutsches Datenschutzrecht nach sich ziehen,<br />

wenn man diesen Zugriff nicht bedenkt. Entweder<br />

wählt man einen anderen Anbieter oder<br />

versucht per Vertrag den Speicherstandort festzuklopfen<br />

und/​oder versucht mit anwaltlicher<br />

Hilfe zu prüfen, ob man mit einer klaren vertraglichen<br />

Regelung, den Zugriff der Behörden<br />

auf die Daten ausschließen kann, etwa indem<br />

man die Weitergabe der Daten bei Vertragsstrafe<br />

verbietet, insbesondere an US-Behörden.<br />

Standortfrage<br />

Die Orientierungshilfe der Datenschutzbehörden<br />

zum Cloud Computing: „Durch vertragliche<br />

Vereinbarungen zwischen dem Cloud-Anwender<br />

und dem Cloud-Anbieter muss der Ort der technischen<br />

Verarbeitung personenbezogener Daten<br />

vereinbart werden. Cloud-Anbieter sowie<br />

Unter-Anbieter können so verpflichtet werden,<br />

nur technische Infrastrukturen zu verwenden,<br />

die sich physisch auf dem Gebiet des EWR befinden.<br />

Es ist daher nicht hinnehmbar, dass der<br />

Cloud-Anbieter eine Auskunft zu den Standorten<br />

der Datenverarbeitung verweigert, keinesfalls<br />

dürfte bei einer Verweigerung pauschal von<br />

einer Cloud im innereuropäischen Raum ausgegangen<br />

werden.“<br />

Bei einem IT-Dienstleister, der außerhalb<br />

Deutschlands, aber in der Europäischen Union<br />

arbeitet, ist nach der Europäischen Richtlinie<br />

95/​46/​EG ein Vertrag zur Auftragsdatenverarbeitung<br />

erforderlich. Die „Artikel 29 Gruppe“,<br />

eine Datenschutzgruppe konkretisierte in einem<br />

Working Paper Nr. 196 vom Juli 2012 (S. 16 ff.)<br />

die Inhalte [5].<br />

Darin heißt es: „Sollte der für die Verarbeitung<br />

Verantwortliche Niederlassungen in mehreren<br />

Mitgliedstaaten haben und die Daten als Teil<br />

seiner Tätigkeit in diesen Ländern verarbeiten,<br />

ist jeweils das Recht jedes Mitgliedstaates anzuwenden,<br />

in dem die Verarbeitung stattfindet.“<br />

Auch Kleine verantwortlich<br />

Oft haben KMUs das Problem, dass Cloud Computing<br />

Anbieter die Vertragsklauseln starr<br />

vorgeben. Darauf haben kleinere Kunden nicht<br />

immer einen Einfluss. Das Working Paper dazu:<br />

„Es sollte angemerkt werden, dass Anbieter von<br />

Cloud-Diensten in vielen Fällen Standarddienste<br />

und von den für die Verarbeitung Verantwortlichen<br />

zu unterzeichnende Standardverträge<br />

anbieten, die ein Standardformat für die Verarbeitung<br />

personenbezogener Daten festlegen.<br />

Das Ungleichgewicht in der Vertragsposition<br />

zwischen einem kleinen für die Verarbeitung<br />

Verantwortlichen und großen Dienstleistern darf<br />

nicht als Rechtfertigung dafür gelten, dass für<br />

die Verarbeitung Verantwortliche Vertragsklauseln<br />

und ‐bedingungen akzeptieren, die gegen<br />

das Datenschutzrecht verstoßen.“ Es befreit<br />

den Nutzer von Cloud-Diensten nicht von den<br />

Anforderungen des deutschen Datenschutzrechtes,<br />

wenn sich der mächtigere Cloud-Anbieter<br />

nicht um die Vorgaben nach europäischem Recht<br />

kümmert. Der Kunde bleibt für den Datenschutz<br />

verantwortlich und sollte mit Kontrollen der Aufsichtsbehörden<br />

rechnen.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

17


Login<br />

Auftragsdatenverarbeitung<br />

© stylephotographs, 123RF<br />

Daten im Auftrag durch andere Stellen<br />

erhoben, verarbeitet oder genutzt, ist<br />

der Auftraggeber für die Einhaltung der<br />

Vorschriften dieses Gesetzes und anderer<br />

Vorschriften über den Datenschutz verantwortlich…<br />

." Die Verantwortung für<br />

den Datenschutz trägt weiterhin der Auftraggeber,<br />

wenn ein anderes Unternehmen<br />

die Daten von Kunden im Auftrag<br />

verarbeitet. In der Praxis haben Unternehmen<br />

oft Schwierigkeiten einzustufen,<br />

ob das konkrete Outsourcing-Projekt eine<br />

Auftragsdatenverarbeitung ist oder nicht.<br />

Ein Kriterium ist: Der Dienstleister ist<br />

weisungsgebunden und muss die Anweisungen<br />

des Auftraggebers ausführen.<br />

Anders ist dies bei der sogenannten<br />

Funktionsübertragung, bei der der externe<br />

Dienstleister nicht den Weisungen<br />

des Auftraggebers unterliegt. Ein weiteres<br />

Kriterium für Auftragsdatenverarbeitung<br />

ist, dass der Auftragnehmer die Daten<br />

nur im Rahmen der Weisungen des Auftraggebers<br />

verarbeiten darf. Sobald der<br />

Dienstleister die Daten für eigene Zwecke<br />

nutzt, handelt es sich nicht mehr um<br />

Auftragsdatenverarbeitung. Diese Form<br />

der Datenübermittlung ist dann nach den<br />

§§ 28 ff BDSG zu prüfen. Die Grenze ist<br />

oft nicht eindeutig und fließend.<br />

Beispiele für Auftragsdatenverarbeitung<br />

können je nach konkretem Inhalt des<br />

individuellen Vertrages und Art der Daten<br />

sein: Entsorgungsunternehmen für<br />

Akten oder Daten, Hostingprovider, ASP-<br />

Provider, Archivierungsdienste, Backup-<br />

Dienstleister, Schreibbüros, Rechenzentren,<br />

Adressdienstleister, Newsletterversand<br />

durch Werbeagentur.<br />

Nicht jeder Outsourcing-Prozess<br />

ist Auftragsdatenverarbeitung.<br />

Man sollte sich bei<br />

der Einstufung an der Frage<br />

orientieren: Besteht der Kern<br />

der Dienstleistung darin,<br />

personenbezogene Daten zu<br />

verarbeiten oder nicht. Sieht<br />

eine Supportfirma während<br />

des Supports in einer Datenmaske<br />

personenbezogene<br />

Daten, muss es sich je nach<br />

Auftragsumfang nicht unbedingt<br />

um Auftragsdatenverarbeitung<br />

handeln. Dennoch<br />

sollte man diese Unternehmen<br />

auf die Geheimhaltung<br />

verpflichten oder Daten verschlüsseln.<br />

Bei der Datenübertragung an<br />

einen Steuerberater handelt es sich nicht<br />

um Auftragsdatenverarbeitung.<br />

Schriftform gefordert<br />

Der Auftrag ist schriftlich zu erteilen,<br />

wobei insbesondere im Einzelnen festzulegen<br />

sind:<br />

1. der Gegenstand und die Dauer des<br />

Auftrags,<br />

2. der Umfang, die Art und der Zweck der<br />

vorgesehenen Erhebung, Verarbeitung<br />

oder Nutzung von Daten, die Art der Daten<br />

und der Kreis der Betroffenen,<br />

3. die nach § 9 zu treffenden technischen<br />

und organisatorischen Maßnahmen,<br />

4. die Berichtigung, Löschung und Sperrung<br />

von Daten,<br />

5. die nach Absatz 4 bestehenden Pflichten<br />

des Auftragnehmers, insbesondere<br />

Kontrollen,<br />

6. die etwaige Berechtigung zur Begründung<br />

von Unterauftragsverhältnissen,<br />

7. die Kontrollrechte des Auftraggebers<br />

und die Duldungs- und Mitwirkungspflichten<br />

des Auftragnehmers,<br />

8. mitzuteilende Verstöße des Auftragnehmers<br />

oder der bei ihm beschäftigten<br />

Personen gegen Vorschriften zum Schutz<br />

personenbezogener Daten oder gegen die<br />

im Auftrag getroffenen Festlegungen,<br />

9. der Umfang der Weisungsbefugnisse,<br />

die sich der Auftraggeber gegenüber dem<br />

Auftragnehmer vorbehält,<br />

10. die Rückgabe überlassener Datenträger<br />

und die Löschung beim Auftragnehmer<br />

gespeicherter Daten nach Beendigung<br />

des Auftrags.<br />

Abbildung 2: Wer die Verarbeitung personenbezogener Daten in Auftrag gibt, ist<br />

verpflichtet, den Dienstleister vorher unter die Lupe zu nehmen.<br />

Da der beauftragte Dienstleister seine<br />

Dienstleistung am besten kennt, fragt<br />

man am besten diesen nach einem Muster,<br />

das seine Angaben bereits enthält<br />

und passt dies an den konkreten Auftrag<br />

an. Zur Orientierung dient die von der<br />

BITKOM vorgeschlagene Mustervertragsanlage<br />

[2].<br />

Technische und organisatorische<br />

Maßnahmen<br />

Einen Schwerpunkt der Vereinbarung<br />

bilden die technischen und organisatorischen<br />

Maßnahmen nach § 9 BDSG, die<br />

der Dienstleister garantiert.<br />

§ 9 BDSG regelt: „Öffentliche und nichtöffentliche<br />

Stellen, die selbst oder im Auftrag<br />

personenbezogene Daten erheben,<br />

verarbeiten oder nutzen, haben die technischen<br />

und organisatorischen Maßnahmen<br />

zu treffen, die erforderlich sind, um<br />

die Ausführung der Vorschriften dieses<br />

Gesetzes, insbesondere die in der Anlage<br />

zu diesem Gesetz genannten Anforderungen,<br />

zu gewährleisten. Erforderlich sind<br />

Maßnahmen nur, wenn ihr Aufwand in<br />

einem angemessenen Verhältnis zu dem<br />

angestrebten Schutzzweck steht.“<br />

Die Anlage zu § 9 BDSG sieht die im Kasten<br />

Die acht Gebote der IT-Sicherheit<br />

genannten Gebote vor.<br />

Der Auftraggeber ist in der Pflicht, den<br />

Dienstleister im Vorfeld unter die Lupe<br />

zu nehmen. Mögliche Experten beim<br />

Dienstleister, die man ansprechen kann<br />

sind: Datenschutz- oder IT-Sicherheitsbeauftragter,<br />

IT-Leiter, IT-Revisor oder der<br />

externe IT-Dienstleister. Diese sollte man<br />

nach Dokumentationen fragen,<br />

um die Prüfung vor Ort<br />

vorzubereiten. Anhand des<br />

ersten Eindrucks der Unterlagen<br />

sieht man oft schon, wie<br />

gut der Dienstleister arbeitet<br />

und ob er für die Prüfung vorbereitet<br />

ist und sich mit den<br />

Themen auseinandergesetzt<br />

hat.<br />

Bevor man einen Dienstleister<br />

prüft, sollte man sich einen<br />

Fragenkatalog zusammenstellen,<br />

der sich an der Anlage<br />

nach § 9 BDSG orientiert. Eine<br />

Vorbereitung für die Prüfung<br />

bietet unter anderem der IT-<br />

Grundschutzkatalog des BSI.<br />

18 Ausgabe 01-2013 Admin www.admin-magazin.de


Auftragsdatenverarbeitung<br />

Login<br />

Fragen Sie den Dienstleister, wie er bei<br />

bestimmten Problemen in der Praxis verfährt,<br />

ob es Notfallpläne gibt, wo er die<br />

Daten speichert, wie der Datentransfer<br />

erfolgt, wie die Zugriffsrechte der Mitarbeiter<br />

geregelt sind und vieles mehr.<br />

Ferner gehört in den Fragenkatalog, ob<br />

sich die Mitarbeiter im Unternehmen des<br />

Dienstleisters schriftlich auf das Datengeheimnis<br />

nach § 5 BDSG verpflichtet haben<br />

und über die sich aus diesem Auftrag ergebenden<br />

besonderen Datenschutzpflichten<br />

sowie die bestehende Weisungs- oder<br />

Zweckbindung belehrt sind.<br />

Neben den technischen Einzelheiten liefern<br />

die Antworten einen ersten Eindruck<br />

vom Datenschutz in diesem Unternehmen.<br />

Die Prüfung ist zu protokollieren,<br />

und am Ende sollte eine Anlage zum Vertrag<br />

über die Auftragsdatenverarbeitung<br />

stehen, die die getroffenen technischen<br />

und organisatorischen Vorgaben zusammenfasst.<br />

Einen Mustervertrag der GDD,<br />

an dem man sich gut orientieren kann,<br />

findet man hier [3].<br />

Vor-Ort-Kontrolle nicht<br />

immer möglich<br />

Es ist schwer denkbar, dass ein Cloud<br />

Computing Anbieter am anderen Ende<br />

der Welt zu sich einlädt, um sich prüfen<br />

zu lassen. Der von Google vorgeschlagene<br />

Vertrag für Google Analytics enthält<br />

in der Anlage 2 die technischen und organisatorischen<br />

Maßnahmen. Google hält<br />

für die Prüfung der Maßnahmen einen<br />

Die acht Gebote der IT-Sicherheit<br />

1. Unbefugten den Zutritt zu Datenverarbeitungsanlagen<br />

verwehren, mit denen personenbezogene<br />

Daten verarbeitet oder genutzt<br />

werden (Zutrittskontrolle),<br />

2. Verhindern, dass Unbefugte Datenverarbeitungssysteme<br />

nutzen (Zugangskontrolle),<br />

3. Gewährleisten, dass die zur Benutzung eines<br />

Datenverarbeitungssystems Berechtigten ausschließlich<br />

auf die ihrer Zugriffsberechtigung<br />

unterliegenden Daten zugreifen können, und<br />

dass personenbezogene Daten bei der Verarbeitung,<br />

Nutzung und nach der Speicherung nicht<br />

unbefugt gelesen, kopiert, verändert oder entfernt<br />

werden können (Zugriffskontrolle),<br />

4. Garantieren, dass personenbezogene Daten<br />

bei der elektronischen Übertragung oder während<br />

ihres Transports oder ihrer Speicherung<br />

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

verändert oder entfernt werden können,<br />

Prüfbericht bereit von einem unabhängigen<br />

Wirtschaftsprüfer, der alle 24 Monate<br />

erneuert wird. Dies reicht aus. Es muss<br />

nicht immer eine Vor-Ort-Prüfung sein,<br />

sondern man kann sich aktuelle Prüfberichte,<br />

Testate unabhängiger Instanzen<br />

vorlegen lassen (z.B. Wirtschaftsprüfer,<br />

Revision, Datenschutzbeauftragter, IT-<br />

Sicherheitsabteilung, Datenschutzauditoren,<br />

Qualitätsauditoren) oder eine<br />

geeignete Zertifizierung durch IT-Sicherheits-<br />

oder Datenschutzaudits (z.B. nach<br />

BSI-Grundschutz). Die Unterlagen sollte<br />

man in Kopie verlangen und prüfen und<br />

nicht nur abheften. Nur dann ist die Kontrollpflicht<br />

erfüllt. Es ist ratsam, sich zusätzlich<br />

eine Vor-Ort-Kontrolle vertraglich<br />

vorzubehalten.<br />

Mit der erstmaligen Prüfung vor Auftragsbeginn<br />

ist es nicht getan. „Der Auftraggeber<br />

hat sich vor Beginn der Datenverarbeitung<br />

und sodann regelmäßig von<br />

der Einhaltung der beim Auftragnehmer<br />

getroffenen technischen und organisatorischen<br />

Maßnahmen zu überzeugen.<br />

Das Ergebnis ist zu dokumentieren.“ Man<br />

muss sich in regelmäßigen Abständen<br />

wieder von der IT-Sicherheit überzeugen.<br />

Wie oft dies zu geschehen hat, regelt das<br />

Gesetz nicht. Ein Anlass könnten bekannt<br />

gewordene Sicherheitsmängel sein.<br />

Praxisproblem:<br />

Subunternehmer<br />

In dem Vertrag mit dem IT-Dienstleister<br />

sollten sämtliche Unterauftragnehmer<br />

und dass überprüft und festgestellt werden<br />

kann, an welchen Stellen eine Übermittlung<br />

vorgesehen ist (Weitergabekontrolle),<br />

5. Sorge tragen, dass nachträglich überprüft<br />

und festgestellt werden kann, ob und von wem<br />

personenbezogene Daten in Datenverarbeitungssysteme<br />

eingegeben, verändert oder entfernt<br />

worden sind (Eingabekontrolle),<br />

6. Verantwortung dafür übernehmen, dass personenbezogene<br />

Daten, die im Auftrag verarbeitet<br />

werden, nur entsprechend den Weisungen<br />

des Auftraggebers verarbeitet werden können<br />

(Auftragskontrolle),<br />

7. Gewährleisten, dass personenbezogene Daten<br />

gegen zufällige Zerstörung oder Verlust<br />

geschützt sind (Verfügbarkeitskontrolle),<br />

8. Garantieren, dass zu unterschiedlichen Zwecken<br />

erhobene Daten getrennt verarbeitet werden<br />

können. (Datentrennung)<br />

aufgeführt sein, denen sich der IT-Dienstleister<br />

bedient und geregelt werden, unter<br />

welchen Voraussetzungen dies erlaubt<br />

ist. Der IT-Dienstleister muss den Subunternehmer<br />

ebenfalls nach den Regeln der<br />

Auftragsdatenverarbeitung kontrollieren<br />

und sollte seine Pflichten weiterreichen.<br />

Der Dienstleister sollte einen Datenschutzbeauftragten<br />

benennen. Gesetzlich<br />

vorgeschrieben ist dieser, sofern personenbezogene<br />

Daten erhoben, verarbeitet<br />

oder genutzt werden und damit in der<br />

Regel mindestens 20 Personen beschäftigt<br />

sind. Auch der Auftraggeber tut gut<br />

daran, einen Datenschutzbeauftragten zu<br />

benennen. Wer entgegen dem Gesetz keinen<br />

Datenschutzbeauftragten hat, dem<br />

drohen Sanktionen. Man tut also gut<br />

daran, noch heute den Geschäftsführer<br />

auf Defizite im Bereich Datenschutz hinzuweisen<br />

und vielleicht schon morgen<br />

einen Datenschutzbeauftragten zu benennen,<br />

der Outsourcing-Projekte genau<br />

unter die Lupe nimmt. (jcb)<br />

n<br />

Infos<br />

[1] FAQ des bayerischen Datenschutzbeauftragten:<br />

[http:// www. lda. bayern. de/​<br />

onlinepruefung/ googleanalytics. html# faq]<br />

[2] Mustervorlage des BITKOM: [http://​<br />

www. bitkom. org/ de/ publikationen/​<br />

38336_45940. aspx]<br />

[3] Mustervertrag der GDD: [https:// www. gdd.​<br />

de/ nachrichten/ news/ neues‐gdd‐muster‐zu<br />

r‐auftragsdatenverarbeitung‐gemas‐a7‐11‐<br />

bdsg]<br />

[4] EU-Standardvertragsklauseln: [http://​<br />

eur‐lex. europa. eu/ LexUriServ/ LexUriServ.​<br />

do? uri=OJ:L:2010:039:0005:0018:DE:PDF]<br />

[5] Working Paper der Artikel-29-<br />

Gruppe: [http:// ec. europa. eu/ justice/​<br />

data‐protection/ article‐29/ documentation/​<br />

opinion‐recommendation/ files/ 2012/​<br />

wp196_de. pdf]<br />

Die Autorin<br />

Die Autorin ist Rechtsanwältin & Fachjournalistin<br />

für IT-Recht in Berlin. Sie veröffentlicht seit<br />

1997 zu Fragen des IT-Rechtes. Darüber hinaus<br />

referiert sie zu aktuellen Fragen des Internetrechtes,<br />

gibt Workshops zum<br />

Softwarelizenzrecht oder<br />

zur IT-Sicherheit und unterrichtet<br />

als Lehrbeauftragte<br />

für IT-Recht an der Beuth<br />

Hochschule für Technik.<br />

© Mira Burgund<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

19


Login<br />

Admin-Story<br />

© Mikhail Dudarev, 123RF<br />

Eine Webanwendung mit MongoDB und Bottle<br />

Flaschengeist<br />

Für ein aktuelles Projekt habe ich vor Kurzem nach einem stabilen,<br />

flexiblen und gut skalierbaren Datenbackend für eine Webapplikation<br />

gesucht. Bereits nach kurzer Zeit fiel die Wahl auf die NoSQL-basierte<br />

MongoDB. Thorsten Scherf<br />

Die üblichen Verdächtigen für Datenbank-Systeme<br />

im OpenSource-Bereich<br />

waren in der Vergangenheit schnell ausgemacht.<br />

In Zeiten von Web 2.0 hat sich<br />

jedoch einiges geändert. Statt von MySQL<br />

oder PostgreSQL spricht man heute eher<br />

von CouchDB, FluidDB oder MongoDB.<br />

Diese Datenbanken haben einen ähnlichen<br />

Funktionsumfang wie klassische<br />

SQL-Server, besitzen dabei allerdings<br />

eine wesentlich höhere Performance und<br />

Skalierbarkeit. Diese reicht zwar nicht<br />

an Systeme wie Memcached oder andere<br />

einfache Key/​Value-Store-Systeme<br />

heran, jedoch wird dieses Manko durch<br />

den erhöhten Funktionsumfang bei immer<br />

noch ausgezeichneter Performance<br />

wettgemacht.<br />

Hinzu kommt, dass die Performance von<br />

solchen Systemen sehr gut in der Breite<br />

skaliert. Anstatt also teure Hardware<br />

einkaufen zu müssen, lässt sich eine<br />

Datenbank leicht über mehrere Systeme<br />

verteilen, ohne dass negative Auswirkungen<br />

auf die Funktionalität zu befürchten<br />

wären.<br />

MongoDB<br />

MongoDB ist in allen größeren <strong>Linux</strong>-<br />

Distributionen bereits enthalten. Im<br />

Zusammenspiel mit Python und einem<br />

Webframework lassen sich hiermit in<br />

kurzer Zeit beachtliche Erfolge erzielen.<br />

In meinem Beispiel kommt das Micro-<br />

Webframework Bottle zum Einsatz. Dieses<br />

sehr einfache Framework besteht aus<br />

einer einzelnen Datei, welche mittels<br />

»easy_install« auf dem eigenen System<br />

installiert wird. Das Framework eignet<br />

sich für erste Tests mit MongoDB sehr<br />

gut, da es keinerlei Abhängigkeiten, ausser<br />

auf die Python-Standard-Bibliothek,<br />

besitzt, dabei jedoch eine Menge an<br />

Funktionalität anbietet. So unterstützt es<br />

beispielsweise auch Templates und bringt<br />

einen Webserver von Haus aus mit. Als<br />

Schnittstelle zwischen dem MongoDB-<br />

Service und dem Webframework Bottle<br />

setze ich Pymongo ein, welches ebenfalls<br />

in den meisten Distributionen bereits zur<br />

Verfügung stehen sollte.<br />

MongoDB unterteilt eine Datenbank in<br />

sogenannte Collections, in denen Dokumente<br />

gespeichert sind. Diese enthalten<br />

die Datenbank-Objekte im JSON-Format.<br />

Das Schöne dabei ist, dass die Collections<br />

keinem Schema unterliegen. Das bedeutet,<br />

man kann einfach die gewünschten<br />

Daten in die Datenbank übertragen, ohne<br />

sich groß Gedanken über Schema-Anpassungen<br />

machen zu müssen. Das vereinfacht<br />

die Arbeit ungemein. Die einzelnen<br />

Felder eines Dokuments können dabei<br />

immer noch nach Belieben angefragt<br />

werden, und auch Indizes lassen sich für<br />

oft abgefragte Felder setzen.<br />

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


Admin-Story<br />

Login<br />

Für einen ersten Test verwende ich die<br />

Mongo-Shell, um ein solches Dokument<br />

zu erzeugen (Listing 1).<br />

Schemalos<br />

In dem Beispiel ist schön zu sehen, dass<br />

sich die Datensätze durch das Feld Mitglieder<br />

unterscheiden. In zwei Datensätzen<br />

ist es enthalten, im dritten Dokument<br />

fehlt es komplett, was aber kein Problem<br />

ist, da MongoDB ja über kein fixes<br />

Schema verfügt.<br />

Wer seine Dokumente bereits im JSON-<br />

Format vorliegen hat, der kann diese<br />

Abbildung 1: Über ein einfaches HTML-Eingabeformular<br />

soll der Benutzer seinen Lieblingsverein<br />

angeben.<br />

ganz in einem Streich in die Datenbank<br />

importieren:<br />

# mongoimport ‐d football ‐c clubs ‐‐file U<br />

/tmp/myclubs.json<br />

connected to: 127.0.0.1<br />

Mon Dec 3 08:43:26 imported 23 objects<br />

Ein Dokument mit einem bestimmten<br />

Feld abzufragen, ist auch recht einfach:<br />

> db.clubs.find({Mitglieder: {"$gt": U<br />

100000}}){ "_id" : ObjectId("50bd2169a80eU<br />

4531863ea2a8"), "Name" : "FC Schalke 04", U<br />

"Farben" : "BlauWeiß", "Mitglieder" : U<br />

111000, "Anschrift" : [ { "Strasse" : U<br />

"Ernst‐Kuzorra‐Weg 1", "PLZ" : 45891, U<br />

"Stadt" : "Gelsenkirchen" } ] }<br />

Abbildung 2: Die Auswahl bekommt der Benutzer<br />

dann auf einer neuen Seite angezeigt, zusammen<br />

mit der Information, wie oft der Verein bereits von<br />

anderen Benutzern angegeben wurde.<br />

Für eine kleine Webanwendung fehlt nun<br />

noch ein passendes Framework und ein<br />

Stück Software, welches die Verbindung<br />

zwischen Framework und MongoDB herstellt.<br />

Für Erstes kommt, wie eingangs erwähnt,<br />

das Micro-Framework Bottle zum<br />

01 # mongo<br />

Listing 1: Test<br />

02 MongoDB shell version: 2.2.0<br />

03 connecting to: test<br />

04 > use football<br />

05 switched to db football<br />

06 > db.clubs.save({ Name:"FC Schalke 04",<br />

Farben:"BlauWeiß", Mitglieder:111000,<br />

Anschrift:[{Strasse:<br />

"Ernst‐Kuzorra‐Weg 1", PLZ: 45891, Stadt:<br />

"Gelsenkirchen"}] })<br />

07 > db.clubs.save({ Name:"St. Pauli", Farben:"BraunWeiß",<br />

Mitglieder:15000, Anschrift:[{Strasse:<br />

"Heiligengeistfeld 1", PLZ: 20359, Stadt:<br />

"Hamburg"}] })<br />

08 > db.clubs.save({ Name:"FC Nürnberg", Farben:"RotWeiß",<br />

Anschrift:[{Strasse:"Valznerweiherstrasse 200", PLZ:<br />

90480, Stadt: "Nürnberg"}] }<br />

Anzeige<br />

Die heute führenden Spezialisten stammen oft aus der "Freie Software-Szene" und schulen seit<br />

Jahren im <strong>Linux</strong>hotel. Das erklärt die Breite und Qualität unseres Schulungsangebotes:<br />

AJAX * Amavis * Android * Angriffstechniken * Apache * Asterisk * BaseX * BayesianAnalysis * Bind * C/C++ * Cassandra *<br />

CiviCRM * Cloud * Cluster * ClusterFS * CouchDB * CSS3 * CUPS * Debian * DHCP * DNS * DNSSEC * Echtzeit <strong>Linux</strong> *<br />

Embedded <strong>Linux</strong> * eXist-db * Faces * FAI * Firewall * Forensik * FreeBSD * FreeRADIUS * GeoExt * Git * Grails * GRASS *<br />

Groovy * hadoop * Hochverfügbarkeit * HTML5 * Hudson * iSCSI * IPv6 * ITSM * Java * JavaScript * Jenkins * Kernel * KVM<br />

* LDAP * LibreOffice * <strong>Linux</strong> * LPI * m23 * MacOSX * MapFish * Mapserver * Maven * Mikrocontroller * MVS/380 * MySQL *<br />

Nagios * Node.js * OpenBSD * OpenLayers * OpenOffice * openQRM * OpenVPN * OPSI * OSGi * OTRS * Perl * PHP *<br />

Postfix * PostgreSQL * Puppet * Python * QuantumGIS * R * Rails * RedHat * Routing * Request-Tracker RT * Ruby * Samba<br />

* SAN * Scala * Scribus * Shell * Sicherheit * SNMP * Spacewalk * Spamfilter * SQL * Struts * Subversion * SuSE * TCP/IP *<br />

Tomcat * Treiber * TYPO3 * Ubuntu * UML * Unix * Univention * Virenfilter * Virtualisierung * VoIP * WebGIS * Webservices *<br />

Windows Autoinstall * Windowsintegration * x2go * xen * XML * Xpath * Xquery * z/OS * Zabbix * Zend<br />

Fast 100% der Teilnehmer empfehlen uns weiter. Siehe www.linuxhotel.de<br />

Ja, wir geben es zu und haben überhaupt kein schlechtes Gewissen dabei: Unsere Schulungen machen auch Spaß ;-)<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

21


Login<br />

Admin-Story<br />

Einsatz. Um die Funktionen zu demonstrieren,<br />

greift die Beispielanwendung auf<br />

Templates und Views zurück, auch wenn<br />

dies hier nicht zwingend erforderlich ist.<br />

Pymongo stellt die Schnittstelle zwischen<br />

Framework und Datenbank her und überträgt<br />

die Dokumente im BSON-Format<br />

über das Netz.<br />

Views<br />

Meine Anwendung besteht aus einer<br />

Steuerungsdatei (Listing 2) und 2 View-<br />

Dateien, die als Templates definiert sind<br />

(Listing 3 und 4). Bottle erwartet die<br />

View-Dateien dabei im Ordner »views«<br />

unterhalb der eigentlichen Anwendung.<br />

In der Datei »survey.py« erzeugt der Aufruf<br />

in Zeile 6 ein »connection«-Objekt<br />

zur Kommunikation mit dem MongoDB-<br />

Service auf dem gleichen System, auf<br />

dem auch das Webframework läuft.<br />

Listing 3: »views/​main.tpl«<br />

01 <br />

02 <br />

03 <br />

04 <br />

05 My little Bottle example<br />

06 <br />

07 <br />

08 <br />

09 Hi World..here is my little survey!<br />

10 <br />

Listing 2: »survey.py«<br />

01 #!/usr/bin/python<br />

02 <br />

03 import bottle<br />

04 import pymongo<br />

05 <br />

06 connection = pymongo.Connection('localhost',<br />

27017)<br />

07 db = connection.survey<br />

08 clubs = db.clubs<br />

09 <br />

10 @bottle.route('/')<br />

11 def index():<br />

12 return bottle.template('main')<br />

13 <br />

14 @bottle.post('/survey')<br />

In den Zeilen 7-8 wird dann ein Handler<br />

für die Datenbank und die gewünschte<br />

Collection definiert. In Zeile 10 und Zeile<br />

14 wird jeweils eine Route, sprich, eine<br />

URL mit dem dazugehörigen Code definiert.<br />

Die Einsprungsseite (»/«) gibt<br />

lediglich ein Template zurück, das dem<br />

Benutzer eine einfach Umfrageseite präsentiert<br />

(»main.tpl«). Die daraus resultierende<br />

Post-Anweisung wird über die<br />

zweite URL (»/survey«) verarbeitet. Hier<br />

wird das Ergebnis der Umfrage in einem<br />

Dokument mit einem einzigen Feld<br />

(»club«) in der Datenbank gespeichert,<br />

und der Benutzer bekommt einer Ausgabe,<br />

welchen Verein er denn als seinen<br />

Lieblingsverein angegeben hat, und wie<br />

oft dieser schon von anderen Benutzern<br />

angegeben wurde.<br />

Das zweite Template bekommt dabei eine<br />

Variable »club« und »results« übergeben<br />

(Zeile 25). »club« wird dabei der Inhalt<br />

15 def survey():<br />

16 club = bottle.request.forms.get("club")<br />

17 if (club == None or club == ""):<br />

18 club="No club defined..."<br />

19 <br />

20 clubs.save({"club":club})<br />

21 results= clubs.find({"club":club})<br />

22 results = results.count()<br />

23 <br />

24 <br />

25 return bottle.template('result', {"club":club,<br />

"results":results})<br />

26 <br />

27 bottle.run(host='localhost', port=8080,<br />

debug=1)<br />

11 <br />

12 What is your favorite club?<br />

13 <br />

14 input type="submit" value="Submit"><br />

15 <br />

16 <br />

17 <br />

18 <br />

19 <br />

des Eingabebox aus dem ersten Template<br />

und enthält den angegeben Lieblingsverein.<br />

»results« ist das Ergebnis einer Suche<br />

in der Datenbank, wie oft dieser Verein<br />

dort schon aufgeführt ist. Beide Variable<br />

werden dann in dem View-Template<br />

( Listing 4) in Zeile 9 und Zeile 10 verwendet.<br />

Die Anwendung sieht im Webbrowser<br />

dann so aus wie in Abbilung 1<br />

und Abbildung 2 dargestellt.<br />

Zusammenspiel<br />

Das Beispiel zeigt, wie simpel es ist, mit<br />

der Kombination aus Python, MongoDB,<br />

Bottle und Pymongo eine Webanwendung<br />

zu entwickeln. Das Beispiel ist natürlich<br />

bewusst einfach gehalten, aber<br />

zeigt, wie die einzelnen Komponenten<br />

zusammenarbeiten. Das Beispiel geht<br />

auch davon aus, dass MongoDB nur auf<br />

einem einzelnen Server läuft, und dass<br />

der in Bottle eingebaute Webserver zum<br />

Einsatz kommt. In produktiven Umgebungen<br />

sollte dies natürlich anders sein,<br />

aber für Entwicklungsarbeiten eignet sich<br />

das hier vorgestellte Setup sehr gut.<br />

Mittlerweile bin ich dazu übergegangen,<br />

Test-Anwendungen als PaaS-Apps in<br />

Openshift laufen zu lassen. Hier verweise<br />

ich auf einen anderen Artikel von mir<br />

zu der Thematik [1]. Mittlerweile kennt<br />

Openshift auch eine Cartridge, mit der<br />

sich MongoDB als Erweiterung installieren<br />

lässt.<br />

Wer sich nun näher mit dem Thema auseinandersetzen<br />

möchte, findet unter [2]<br />

jede Menge hilfreiche Dokumentation.<br />

Dort gibts auch genaue Beschreibung,<br />

wie eine Installation von MongoDB unter<br />

Openshift funktioniert. (ofr)<br />

n<br />

Infos<br />

[1] Thorsten Scherf, Auf Knopfdruck, <strong>ADMIN</strong><br />

05/​2011, [http:// www. admin‐magazin. de/ Das‐<br />

Heft/ 2011/ 05/ Tagebuch‐eines‐IT‐Nomaden/]<br />

[2] MongoDB: [http:// mongodb.org]<br />

Listing 4: »views/​result.tpl«<br />

01 <br />

02 <br />

03 <br />

04 <br />

05 Results<br />

06 <br />

07 <br />

08 <br />

09 Favorite club: {{club}}<br />

10 It has mentioned {{results}} times far.<br />

11 <br />

12 <br />

13 <br />

Der Autor<br />

Thorsten Scherf arbeitet als Senior Consultant für<br />

Red Hat EMEA. Er ist oft als<br />

Vortragender auf Konferenzen<br />

anzutreffen. Wenn neben<br />

Arbeit und Familie noch<br />

Zeit bleibt, nimmt er gerne<br />

an Marathonläufen teil.<br />

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


Open Source goes<br />

Präsentieren auch Sie sich auf der größten Sonderausstellung<br />

der CeBIT 2013 in Halle 6 zum Thema <strong>Linux</strong> und freie Software.<br />

Kleine und mittlere Unternehmen treffen hier auf hochrangige<br />

Entscheider. Nirgendwo sonst finden Sie eine bessere Business-<br />

Umgebung für Ihre 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 />

Wir sind dabei!<br />

83degrees South Ltd., agorum®<br />

Software GmbH, Alfresco Software Ltd.,<br />

All for Accounting GmbH, Ancud IT-Beratung<br />

GmbH, B1 Systems GmbH, CADEMIA-Consult<br />

GmbH, FOSS Group GmbH, GRAU DATA AG,<br />

Heinlein Support GmbH, IFE GmbH, Inmedias.it<br />

GmbH, ITOMIG GmbH, Mathias Kettner GmbH,<br />

Metaways Infosystems GmbH, NETWAYS GmbH,<br />

Opensides Sprl, Open Source Press GmbH,<br />

Pentaprise GmbH, Synetics gesellschaft für<br />

systemintegration mbh, uib gmbh, visual4<br />

GmbH, Würth Phoenix GmbH<br />

und viele mehr...<br />

Veranstalter:<br />

pluspol.de<br />

Marketing Kommunikation Internet<br />

In Kooperation mit:<br />

MEDIALINX AG


Netzwerk<br />

Nagios und VoIP<br />

© Natalia Lukiyanova, 123RF<br />

Nagios-Alarme via VoIP einfach realisiert<br />

Nagios am Apparat<br />

Von Hause aus kann Nagios bei Ausfall eines Dienstes die Admins nur per E-Mail alarmieren. Doch diese Mails<br />

können leicht übersehen werden. Ein Anruf wirkt da nachhaltiger. Benjamin Fleckenstein<br />

Ein klingelndes Telefon ist schwer zu<br />

überhören, und so liegt es nahe, Nagios<br />

das Telefonieren beizubringen, damit es<br />

wahrgenommen wird. Das gelingt beispielsweise<br />

mit einer Kombination von<br />

Nagios und Asterisk. Asterisk ist allerdings<br />

nicht trivial zu konfigurieren, und<br />

eine ganze Telefonanalage nur für das<br />

Monitoring aufbauen und betreuen zu<br />

müssen, ist womöglich doch etwas zu<br />

viel des Guten.<br />

Mithilfe eines SIP-Accounts, den man<br />

für wenig Geld im Internet bekommt,<br />

eines CLI-SIP Clients und eines einfachen<br />

Shellskriptes lässt sich das Gleiche mit<br />

weniger Aufwand realisieren.<br />

Zunächst der SIP Account: Hier hat man<br />

die Qual der Wahl, welchen Anbieter<br />

man verwenden möchte. Prinzipiell geht<br />

es mit jedem VoIP-Anbieter. Die Einrichtung<br />

des Accounts ist trivial, man füllt<br />

das entsprechende Online-Formular aus,<br />

wartet auf die Bestätigungsmail und richtet<br />

sich ein Konto ein.<br />

Der passende SIP-Client<br />

Nun der CLI-SIP-Client: Hier wird es etwas<br />

komplizierter. Es gibt zwar einige<br />

VoIP-Clients, die meisten sind jedoch<br />

für den Desktop gedacht und lassen sich<br />

schlecht bis gar nicht per Skript steuern.<br />

Letzlich erwies sich PJSUA als beste<br />

Wahl. PJSUA ist die Referenzimplementierung<br />

von PJSIP, was wiederum eine<br />

Kommunikationsbibliothek für SIP, RTP,<br />

STUN und einige weitere VoIP-bezogene<br />

Protokolle darstellt.<br />

Abbildung 1: Wie zu sehen, fungiert als Kommando, das die Benachrichtigung übernimmt, hier das E-Mail-Skript.<br />

Leider gibt es keine Pakete von PJSUA,<br />

sodass man es sich selbst aus den Quelle<br />

kompilieren muss, was aber zum Glück<br />

leicht gelingt. Die Quellen von PJSIP/​<br />

PJSUA besorgt man sich via:<br />

wget http://www.pjsip.org/release/2.0.U<br />

/pjproject‐2.0.1.tar.bz2<br />

In dem Verzeichnis, in dem man sie entpackt<br />

hat, reicht dann:<br />

./configure<br />

make dep<br />

make<br />

Nun liegt im Verzeichniss »pjsip‐apps/<br />

bin« eine Datei, die mit »pjsua« beginnt.<br />

Das ist der SIP Client. Ihn kopiert man<br />

sich an eine beliebige Stelle des Systems<br />

und macht ihn dort ausführbar. Nun benötigt<br />

man noch eine Konfigurationsdatei<br />

für den Client, in der man die Zugangsdaten<br />

zum SIP-Provider angibt.<br />

Dafür erstellt man eine Textdatei mit den<br />

Inhalt aus Listing 1. Die Daten muss man<br />

natürlich an den eigenen SIP-Provider<br />

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


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

Netzwerk & Security<br />

Inklusive:<br />

Der komplette<br />

Jahrgang 2012!<br />

JAHRES-DVD 2012<br />

Alle Artikel des Jahres auf einer DVD<br />

INHALT<br />

■ Artikel zu Storage, Backup,<br />

Security, Monitoring,<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 />

die admin-toolbox!<br />

Jetzt gleich bestellen!<br />

www.admin-magazin.de/DVD2012 oder 089 - 99 34 11 - 00


Netzwerk<br />

Nagios und VoIP<br />

anpassen, was nicht immer ganz einfach<br />

ist, da die Provider gerne eigene<br />

Bezeichnungen für ID und Realm verwenden.<br />

Im Zweifelsfall hilft die Hotline<br />

des Provider wahrscheinlich gerne weiter.<br />

»‐‐null‐audio« sorgt dafür, dass der Server<br />

keine Audioausgabe verwendet und so<br />

der Rechner das Gespräch nicht über die<br />

Lautsprecher ausgibt.<br />

Das Anruf-Skript<br />

Jetzt braucht man noch ein Skript, das<br />

Nagios im Fall der Fälle aufrufen kann.<br />

Dieses Skript sorgt auch dafür, dass sich<br />

die Benachrichtigungen nicht gegenseitig<br />

in die Quere kommen. Wenn Nagios zwei<br />

Telefonate kurz nacheinander absetzen<br />

muss, so sorgt das Skript dafür, dass der<br />

Listing 1: Provider-Daten<br />

01 ‐‐null‐audio<br />

02 ‐‐registrar sip:sipgate.de<br />

03 ‐‐realm=sipgate.de<br />

04 ‐‐id sip:username@sipgate.de<br />

05 ‐‐username sipgateusername<br />

06 ‐‐password sipgatepasswort<br />

Listing 3: »resource.cfg«<br />

01 # Additional commands, so that nagios can call the<br />

sysadmins<br />

02 define command {<br />

03 command_name notify‐host‐by‐phone<br />

04 command_line /opt/pjsua_wrapper<br />

05 }<br />

06 <br />

07 define command {<br />

08 command_name notify‐service‐by‐phone<br />

09 command_line /opt/pjsua_wrapper<br />

10 }<br />

erste Anruf beendet ist, bevor es den<br />

zweiten startet. Sonst würde der Client<br />

den Dienst verweigern, weil die Leitung<br />

belegt ist, und die zweite Benachrichtigung<br />

würde verloren gehen.<br />

Das Skript benötigt noch zwei weitere<br />

Tools: »expect«, damit es »pjsua« steuern<br />

kann und »text2wave«, damit es aus<br />

einer Textzeile eine WAV Datei erzeugen<br />

kann. Das Tool »text2wave« ist Bestandteil<br />

von Festival, einem Programm zur<br />

Sprachsynthese. Beide Pakete kann man<br />

wieder über die Paketverwaltung installieren.<br />

Danach macht man das Skript aus<br />

Listing 2 ausführbar.<br />

Den Wert von »NUMBER« stellt man auf<br />

die Telefonnummer ein, die Nagios anrufen<br />

soll. »MESSAGE« enthält das, was<br />

der Angerufene zu hören bekommt. Wer<br />

die Telefonnummer nicht fest im Skript<br />

verdrahten möchte, kann Nagios die<br />

Nummer auch übergeben lassen. Über<br />

»DURATION« kann man einstellen, wie<br />

lange der Anruf maximal dauern soll.<br />

Geht in dieser Zeit keiner ans Telefon,<br />

legt das Skript wieder auf. Bei Anrufannahme<br />

spielt es die Nachricht in einer<br />

Schleife ab. In der Zeile, die mit »spawn«<br />

beginnt, muss man gegebenfalls das<br />

letzte Argument an den eigenen SIP Provider<br />

anpassen.<br />

Auf Kommando<br />

Schlussendlich muss man noch Nagios<br />

umkonfigurieren, sodass es das Skript<br />

im Alarmfall aufruft. Zunächst definiert<br />

man dazu ein neues Kommando. Nutzt<br />

man Ubuntu 12.04 und Nagios3, dann<br />

liegt unter »/etc/nagios3/resource.cfg«<br />

die passende Datei. Bei anderen Distributionen<br />

dürfte der Pfad nur geringfühig<br />

unterschiedlich sein. Dort fügt man den<br />

Inhalt von Listing 3 ein.<br />

In Listing 3 ist »/opt/pjsua_wrapper« ist<br />

der Pfad, unter dem das Skript gefunden<br />

werden kann. Gegebenenfalls muss<br />

man ihn anpassen. Anschließend ist nur<br />

noch die »contact«-Definition des Admins<br />

in Nagios anzupassen. Überlicherweise<br />

sieht die Konfiguration etwa so aus:<br />

define contact {<br />

...<br />

service_notification_commands U<br />

notify‐service‐by‐email<br />

host_notification_commands U<br />

notify‐service‐by‐email<br />

...<br />

}<br />

Die beiden Parameter erweitert man einfach<br />

um die neuen Kommandos:<br />

define contact { ...<br />

service_notification_commands<br />

notify-service-by-email,notify-host- U<br />

by-phone host_notification_commands U<br />

notify-service-by-email,<br />

notify-service-by-phone … }<br />

Anschließend Nagios neu starten, und<br />

schon wird der Admin angerufen. (jcb)n<br />

Der Autor<br />

Benjamin Fleckenstein ist Sysadmin bei einem<br />

Hosting und Telekommunikationsunternehmen in<br />

Frankfurt und kümmert sich dort um die Server<br />

namhafter Kunden. In seiner Freizeit beschäftigt<br />

er sich mit Open-Source-Gebäudeautomation und<br />

baut aktuell das notwendige Gebäude.<br />

Listing 2: Anruf-Skript<br />

01 #! /bin/bash<br />

02 <br />

03 EXPECT=/usr/bin/expect<br />

04 PJSUA=/opt/pjsua<br />

05 PJSUACONFIG=/opt/pjsua.conf<br />

06 SOUNDFILE=/tmp/alert.wav<br />

07 TEXT2WAVE=/usr/bin/text2wave<br />

08 DURATION=20<br />

09 NUMBER=01234567890<br />

10 MESSAGE="Monitoring Alert"<br />

11 <br />

12 # Setting a lock file<br />

13 # We can't make more than one call<br />

14 # at a time, because pjsua blocks the port<br />

15 # so we have to make sure that nobody else<br />

tries to call<br />

16 # If there is already a call we have to wait.<br />

17 <br />

18 locked=false<br />

19 while [[ $locked == false ]]; do<br />

20 if [[ ! ‐f /tmp/caller.lock ]]; then<br />

21 touch /tmp/caller.lock<br />

22 locked=true<br />

23 else<br />

24 sleep 5<br />

25 fi<br />

26 done<br />

27 <br />

28 # Generating the message<br />

29 $TEXT2WAVE ‐o $SOUNDFILE ‐f 8000


Netzwerk<br />

IPv6-Migration<br />

© Don Garcia, 123RF<br />

IPv6-Tunneltechnologien<br />

Rausgegraben<br />

Nachdem IPv6 nun das offizielle Internet-Protokoll ist, bleibt nur noch die<br />

Kleinigkeit, alle Rechner im Internet umzustellen. Bis das passiert, verschaffen<br />

Tunneltechnologien eine Übergangslösung. Eric Amberg<br />

Die Migration auf IPv6 nimmt Fahrt auf.<br />

Im Herbst 2012 ließ die Deutsche Telekom<br />

verlauten, dass DSL-Neukunden jetzt mit<br />

Dualstack-Anschlüssen (IPv4+IPv6) angebunden<br />

werden. Auch andere Provider<br />

werden in den nächsten Monaten nachziehen.<br />

In vielen größeren Unternehmen<br />

ist die Umstellung jedoch keine Sache<br />

von wenigen Tagen, sondern von Jahren.<br />

Bereits im Design berücksichtigten die<br />

IPv6-Entwickler, dass die Einführung von<br />

IPv6 in vorhandene IPv4-Netzwerke eine<br />

zum Teil lange Übergangszeit erfordert,<br />

in der beide Technologien nebeneinander<br />

existieren werden. Dieser Artikel erläutert<br />

die verschiedenen Tunneltechnologien<br />

von IPv6.<br />

In der Übergangsphase muss sichergestellt<br />

sein, dass IPv6-Systeme sowohl untereinander<br />

als auch mit IPv4-Systemen<br />

kommunizieren können. Der Begriff<br />

„Knoten“ beschreibt in der IETF-Terminologie<br />

ein aktives System im Netzwerk,<br />

das über IPv4 oder IPv6 kommuniziert.<br />

Dies umfasst neben normalen Workstations<br />

und Servern unter anderem auch<br />

Router. Der RFC 4213 (Transition Mechanisms<br />

for IPv6 Hosts and Routers)<br />

beschreibt folgende Knoten-Typen:<br />

n IPv4-Only-Knoten: Auf dem System<br />

läuft ausschließlich IPv4.<br />

n IPv6-Only-Knoten: Auf dem System<br />

läuft ausschließlich IPv6.<br />

n IPv6/​IPv4-Knoten: Auf dem System<br />

laufen beide IP-Stacks parallel.<br />

n IPv4-Knoten: Das System kommuniziert<br />

mit IPv4. Dies kann entweder<br />

ein IPv4-Only-Knoten oder ein IPv6/​<br />

IPv4-Knoten sein.<br />

n IPv6-Knoten: Das System kommuniziert<br />

mit IPv6. Dies kann entweder<br />

ein IPv6-Only-Knoten oder ein IPv6/​<br />

IPv4-Knoten sein.<br />

Im Folgenden geht es um die Frage, wie<br />

man IPv6 schrittweise und parallel zu<br />

IPv4 einführen kann. Die Herausforderung<br />

dabei besteht in der Überbrückung<br />

und Zusammenführung der beiden Welten.<br />

Hierzu gibt es grundsätzlich die folgenden<br />

Ansätze:<br />

n Dual-Stack: Auf den Systemen im<br />

Netzwerk laufen sowohl IPv4 als auch<br />

IPv6.<br />

n Tunnelmechanismen: In der Regel geht<br />

es hierbei darum, IPv6-Kommunikation<br />

durch IPv4-Bereiche zu tunneln.<br />

Hier werden IPv6-Inseln miteinander<br />

verbunden.<br />

n Translationsmechanismen: Analog<br />

zum NAT-Prinzip kommunizieren<br />

IPv4-Systeme über entsprechende<br />

Mechanismen mit IPv6-Systemen und<br />

umgekehrt.<br />

Während Dual-Stack-Implementationen<br />

die bevorzugte Wahl bei der parallelen<br />

Einführung von IPv6 in ein vorhandenes<br />

IPv4-Netzwerk darstellen, bieten Translationstechnologien<br />

einen Übergang von<br />

einem IP-Stack in den anderen. Jedoch<br />

sind nur Tunneltechnologien in der Lage,<br />

IPv6-Knoten über IPv4-Only-Infrastrukturen<br />

so miteinander zu verbinden, dass<br />

sie direkt über IPv6 miteinander kommunizieren<br />

können.<br />

Tunnel graben<br />

IPv6 wird in vielen Netzwerken schrittweise<br />

und nicht sofort flächendeckend<br />

eingeführt. Ein typisches Szenario in der<br />

Übergangszeit ist also die Kommunikation<br />

von IPv6-Knoten, die über ein IPv4-<br />

Netzwerk miteinander kommunizieren.<br />

Somit muss die IPv6-Kommunikation<br />

über IPv4 transportiert werden, also IPv6<br />

in IPv4 getunnelt. Das bedeutet, dass<br />

das IPv6-Datenpaket in einen IPv4-Header<br />

eingekapselt wird. Der IPv6-Knoten<br />

selbst oder ein Gateway verpackt das<br />

IPv6-Paket in IPv4 und schickt es auf<br />

den Weg. Dabei setzt er das Protocol-Feld<br />

des IPv4-Headers auf den Wert 41. Dies<br />

28 Ausgabe 01-2013 Admin www.admin-magazin.de


IPv6-Migration<br />

Netzwerk<br />

steht laut Standard für „IPv6<br />

in IPv4“ (Abbildung 1).<br />

Der IPv6-Header enthält die<br />

IPv6-Adressen der Ende-zu-<br />

Ende-Kommunikation, also<br />

der kommunizierenden Endpunkte.<br />

Der IPv4-Header enthält<br />

die Quell- und Zieladresse<br />

der Endpunkte innerhalb des<br />

IPv4-Netzwerks. Diese Endpunkte<br />

können bei bestimmten Tunnelmechanismen<br />

den „echten“ Endpunkten<br />

der IPv6-Kommunikation entsprechen.<br />

Meistens wird die Einkapselung jedoch<br />

durch Tunnel-Gateways vorgenommen.<br />

Dies sind regelmäßig die Border-Router<br />

beziehungsweise Firewalls an den Grenzen<br />

des lokalen Netzwerks.<br />

Aus Sicht eines IPv6-Pakets ist die IPv4-<br />

Einkapselung nichts anderes als eine gewöhnliche<br />

Verkapselung auf Link-Layer-<br />

Ebene, analog zu Ethernet. In solchen<br />

Tunnelszenarien kann demnach auf IPv6-<br />

Ebene eine komplett andere Netzstruktur<br />

vorhanden sein als auf IPv4-Ebene. Somit<br />

kann zum Beispiel eine ganze IPv4-Infrastruktur,<br />

bestehend aus vielen Routern<br />

und Netz-Segmenten, aus IPv6-Sicht in<br />

einem „Hop“ zwischen Quelle und Ziel<br />

übersprungen werden.<br />

Der Vorteil von Tunnellösungen liegt in<br />

der Flexibilität, einzelne IPv6-Inseln im<br />

„IPv4-Meer“ zu verbinden. Dennoch sind<br />

Tunneltechnologien gegenüber nativer<br />

IPv6-Kommunikation immer nur zweite<br />

Wahl, da sie zum einen teilweise komplex<br />

zu konfigurieren und zum anderen<br />

fehleranfällig sind. So gilt der Tunnelmechanismus<br />

Teredo als nur bedingt nutzbar,<br />

da er in der überwiegenden Anzahl<br />

aller Fälle nicht korrekt funktioniert [1].<br />

Ähnlich wie VPN-Tunnel lassen sich IPv6-<br />

Tunnel zwischen verschiedenen Punkten<br />

erstellen. RFC 4213 sieht folgende Tunnelkonfigurationen<br />

vor:<br />

n Router-to-Router<br />

n Host-to-Router und Router-to-Host<br />

n Host-to-Host<br />

Dabei verbinden Router-to-Router-Tunnel<br />

IPv6-Infrastrukturen über einen einzige<br />

virtuellen Hop über eine IPv4-Only-Infrastruktur<br />

miteinander. Dies ist der einfachste<br />

und häufigste Fall eines Tunnels,<br />

da die Tunnelkonfiguration nur auf einem<br />

oder wenigen Systemen des Netzwerks<br />

stattfinden muss und die IPv6-Knoten davon<br />

nichts wissen müssen. Ein typisches<br />

Abbildung 1: IPv6 in IPv4 gekapselt: Das IPv6-Paket wird in ein IPv4-Paket<br />

gepackt und wie normale Nutzdaten verschickt.<br />

Beispiel für Router-to-Router-Tunnel ist<br />

ein 6to4-Tunnel. In vielen Fällen verbindet<br />

der Tunnel zwei entsprechende<br />

Router über das IPv4-Internet, um IPv6-<br />

Netzwerke standortübergreifend zu verbinden<br />

(Abbildung 2).<br />

Der Host-to-Router-Tunnel verbindet<br />

einen IPv6/​IPv4-Knoten in einem IPv4-<br />

Only-Netzwerk mit einem IPv6/​IPv4-<br />

Router (Abbildung 3). Hierzu nutzt der<br />

Host ein Tunnel-Interface und entsprechende<br />

Routing-Einträge (zum Beispiel<br />

in Form des Standard-Gateways), die den<br />

entsprechenden Traffic zum Tunnel-Interface<br />

routen. Das Tunnel-Interface verpackt<br />

die IPv6-Pakete in IPv4-Pakete und<br />

sendet sie zum IPv6/​IPv4-Router, der die<br />

IPv6-Pakete zum IPv6-Ziel weiterleitet.<br />

Der Weg zurück (Router-to-Host) funktioniert<br />

analog. ISATAP ist eine Tunneltechnologie,<br />

die nach diesem Prinzip arbeitet.<br />

Dieser Tunnel-Typ dient vorwiegend der<br />

Verbindung von IPv6-Knoten innerhalb<br />

eines Netzwerks einer Organisation.<br />

Ein Host-to-Host-Tunnel verbindet die<br />

kommunizierenden Endpunkte direkt<br />

miteinander über einen IPv4-Tunnel.<br />

Erst am Endpunkt der Kommunikation<br />

wird das gekapselte IPv6-Paket wieder<br />

entpackt. Dieses Prinzip kommt ebenfalls<br />

bei der ISATAP-Tunneltechnologie zum<br />

Einsatz und dient der Kommunikation<br />

zwischen zwei IPv6-Knoten<br />

innerhalb eines IPv4-Unternehmensnetzwerks.<br />

Tunnel-Typen<br />

Es gibt grundsätzlich zwei<br />

verschiedene Arten von IPv6-<br />

Tunnels: konfigurierte Tunnel<br />

und automatische Tunnel. Bei<br />

konfigurierten Tunneln muss der Administrator<br />

die Tunnel manuell auf den jeweiligen<br />

Tunnel-Endpunkten einrichten.<br />

Hierbei wird die IPv4-Zieladresse des<br />

Remote-Endpunkts nicht in der IPv6-<br />

Adresse eingebettet, wie das bei automatischen<br />

Tunneln in der Regel der Fall<br />

ist. Konfigurierte Tunnel nutzen manuell<br />

erstellte Tunnel-Interfaces, die eine feste<br />

Quell- und Zieladresse definieren.<br />

Bei automatischen Tunneln ist keine manuelle<br />

Konfiguration erforderlich. Die<br />

Tunnel werden dynamisch bei Bedarf aufgebaut,<br />

die IPv4-Zieladressen sind meistens<br />

in der IPv6-Adresse eingebettet. Es<br />

gibt verschiedene Tunneltechnologien:<br />

n 6to4: wird für die Verbindung zwischen<br />

IPv6-Knoten über das IPv4-Internet<br />

verwendet.<br />

n 6rd: eine Weiterentwicklung von 6to4<br />

ohne die Einschränkung der fest definierten<br />

6to4-Präfixe.<br />

n ISATAP: für die Verbindung zwischen<br />

IPv6-Knoten in einem IPv4-Intranet.<br />

n Teredo: Ermöglicht die Verbindung<br />

von IPv6-Knoten über NAT.<br />

6to4 – fürs Internet<br />

6to4 kann als Router-to-Router-, Hostto-Router-<br />

und Router-to-Host-Tunnel<br />

dienen [2]. In der Regel baut man den<br />

Abbildung 2: Router-zu-Router-Tunnel verbinden zum Beispiel zwei IPv6-fähige Standorte.<br />

Abbildung 3: Ein Host-zu-Router-Tunnel bindet einen IPv6-fähigen Rechner über ein IPv4 an einen IPv6-<br />

Router an, etwa im Firmennetz.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

29


Netzwerk<br />

IPv6-Migration<br />

Abbildung 4: Ein 6to4-Tunnel kann als Router-to-Router-, Host-to-Router- und<br />

Router-to-Host-Tunnel dienen.<br />

Tunnel jedoch als Router-to-<br />

Router-Konfiguration auf.<br />

Dabei behandelt 6to4 das gesamte<br />

IPv4-Internet als einen<br />

einzigen Link. Das Präfix von<br />

6to4 lautet 2002::/​16, beginnt<br />

also immer mit 2002. Daran<br />

ist eine 6to4-Tunneladresse zu erkennen.<br />

Die nächsten 32 Bit der Adresse enthalten<br />

die hexadezimale IPv4-Adresse des Remote-Endpunkts<br />

des Tunnels, also in der<br />

Regel ein 6to4-Router beziehungsweise<br />

6to4-Relay im Internet. Dann folgen die<br />

16 Bit lange Subnet-ID und die Interface-<br />

ID des Zielsystems (Abbildung 4).<br />

Windows-Systemen ab Windows Vista<br />

erstellen automatisch ein 6to4-Tunnelinterface,<br />

wenn das System auf einer<br />

seiner Schnittstellen eine öffentliche<br />

IPv4-Adresse verwendet und keine andere<br />

IPv6-Konnektivität (nativ oder über<br />

ISATAP) feststellt. In diesem Fall erhält<br />

das 6to4-Tunnelinterface die IPv6-Adresse<br />

2002:WWXX:YYZZ::WWXX:YYZZ,<br />

wobei WWXXYYZZ für die öffentliche<br />

IPv4-Adresse steht. Ist die öffentliche<br />

IPv4-Adresse eines Windows Server<br />

2012-Computers also zum Beispiel<br />

131.107.1.1, so lautet die 6to4-Tunneladresse<br />

2002:836B:101::836B:101.<br />

6to4 nutzt einige Komponenten, die unterschiedliche<br />

Aufgaben übernehmen:<br />

n 6to4-Host: ein nativer IPv6-Host, der<br />

mindestens eine 6to4-Adresse besitzt<br />

(Präfix 2002::/​16), über die er erreichbar<br />

ist. Er hat jedoch kein 6to4-Tunnel-Interface,<br />

da er nicht über IPv4<br />

kommuniziert. Er ist der Endpunkt<br />

einer IPv6-Kommunikation, die über<br />

einen 6to4-Tunnel geleitet wird.<br />

n 6to4-Router: ein IPv6/​IPv4-Router, der<br />

ein 6to4-Tunnel-Interface hat, über das<br />

er Traffic zwischen 6to4-Hosts zu einem<br />

anderen 6to4-Router, 6to4-Relay<br />

oder 6to4-Host weiterleitet. 6to4-Router<br />

müssen entsprechend konfiguriert<br />

werden – egal auf welcher Plattform.<br />

n 6to4-Host/​Router: ein IPv6/​IPv4-Host,<br />

der direkt ans Internet angeschlossen<br />

ist. Im Gegensatz zum 6to4-Router<br />

leitet er nur seinen eigenen Traffic<br />

über 6to4 zu anderen IPv6-Knoten<br />

weiter, nicht aber den Traffic anderer<br />

Systeme.<br />

n 6to4-Relay: im Gegensatz zu 6to4-Routern<br />

leitet ein 6to4-Relay den Traffic<br />

direkt in das IPv6-Internet. Das bedeutet,<br />

dass ein 6to4-Relay über BGP an<br />

das Internet angeschlossen sein muss,<br />

während 6to4-Router ein bestimmtes<br />

IPv6-Unternehmensnetzwerk verbinden.<br />

So funktioniert 6to4<br />

Jede 6to4-Site besitzt ein eigenes 6to4-<br />

Präfix (2002:WWXX:YYZZ::/​48). Der<br />

Rest der 6to4-Adresse definiert das Subnetz<br />

und die Interface-ID des Hosts in der<br />

Site. Aus Sicht eines 6to4-Host/​Routers<br />

besteht die gesamte 6to4-Site aus einem<br />

einzigen Computer: ihm selbst. Für einen<br />

6to4-Router kann die 6to4-Site aus bis<br />

zu 65 536 Subnetzen bestehen. In jedem<br />

Fall sieht er sämtliche Subnetze der Site.<br />

Eine 6to4-Site kann andererseits aus einer<br />

einzigen IPv4-Adresse bestehen, über die<br />

die Site erreichbar ist. Der 6to4-Router<br />

propagiert in seinen Router Advertisements<br />

das 6to4-Präfix an die internen<br />

Knoten, sodass 6to4 auch problemlos mit<br />

Autoconfiguration funktioniert.<br />

Der Trick ist nun, dass die IPv4-Adresse<br />

der Site des Zielhosts in der 6to4-Zieladresse<br />

enthalten ist. Die beteiligten Systeme<br />

extrahieren diese Adresse und nutzen<br />

sie, um den IPv4-Teil der Wegstrecke<br />

zu überbrücken. Im Beispielszenario von<br />

Abbildung 5: WKS1 möchte mit WKS2<br />

Abbildung 5: Ein Beispiel-Szenario für den Einsatz von 6to4.<br />

kommunizieren und löst den<br />

FQDN (Fully Qualified Domain<br />

Name) von WKS2 auf.<br />

Der DNS-Server liefert die<br />

Adresse 2002:9D3C:101:F::1<br />

zurück. Aus dem Präfix entnimmt<br />

WKS1 zunächst, dass<br />

es sich hierbei um eine 6to4-Adresse<br />

handelt. Da er als 6to4-Host/​Router mit<br />

einer öffentlichen IPv4-Adresse selbst in<br />

der Lage ist, das IPv6-Paket in IPv4 zu<br />

tunneln, identifiziert er durch die Bits<br />

17 bis 48 des Präfixes die IPv4-Adresse<br />

des 6to4-Routers als 157.60.1.1. Das getunnelte<br />

Paket wird nun an den 6to4-<br />

Router gesendet, der das Paket wieder<br />

entpackt und entsprechend nach intern<br />

weiterleitet. Da WKS1 seinerseits als Absenderadresse<br />

seine 6to4-Tunneladresse<br />

2002:836B:101::836B:101 verwendet hat,<br />

kann der 6to4-Router das Antwortpaket<br />

von WKS2 an die korrekte IPv4-Adresse<br />

131.107.1.1 zustellen, die er dem Präfix<br />

von WKS1 entnimmt.<br />

Suche Relay<br />

Sollen native IPv6-Adressen im IPv6-Internet<br />

angesprochen werden, sucht der<br />

6to4-Router beziehungsweise 6to4-Host<br />

ein nahes 6to4-Relay. Hierfür existiert die<br />

IPv4-Anycast-Adresse 192.88.99.1. IPv6-<br />

Pakete an native IPv6-Adressen werden<br />

also von 6to4-aktivierten Knoten ebenfalls<br />

eingekapselt, wobei die Zieladresse<br />

des IPv4-Headers 192.88.99.1 ist. Diese<br />

Pakete landen beim nächstgelegenen<br />

6to4-Relay und werden gemäß normaler<br />

IPv6-Routing-Mechanismen zugestellt.<br />

30 Ausgabe 01-2013 Admin www.admin-magazin.de


IPv6-Migration<br />

Netzwerk<br />

Die Rückantwort des IPv6-Only-Knotens<br />

wird ebenfalls über ein 6to4-Relay geroutet,<br />

wobei dies nicht zwangsläufig dasselbe<br />

sein muss wie auf dem Hinweg.<br />

Dies kann in der Praxis zu den typischen,<br />

durch asymmetrisches Routing verursachten<br />

Problemen führen, zum Beispiel<br />

bei Stateful-Firewalls, die Antwortpakete<br />

nicht zuordnen können. In diesem Zusammenhang<br />

muss auch sichergestellt<br />

sein, dass die Knoten im IPv6-Internet<br />

eine Route zu einem 6to4-Relay kennen<br />

– dies ist jedoch derzeit nicht immer der<br />

Fall. Daneben hat 6to4 den Nachteil, dass<br />

NAT nur dann unterstützt wird, wenn<br />

der 6to4-Router beziehungsweise das<br />

6to4-Relay gleichzeitig das NAT-Device<br />

ist. 6to4 wird von den meisten gängigen<br />

Betriebssystem-Plattformen unterstützt.<br />

6rd – die Evolution<br />

Die Tunneltechnologie 6rd [3] basiert auf<br />

6to4 und wurde von Rémi Després entworfen.<br />

6rd und 2007 vom französischen<br />

Provider FREE in wenigen Monaten eingeführt.<br />

Die Buchstaben „RD“ stehen einerseits<br />

für Rapid Deployment und andererseits<br />

für die Initialen des Entwicklers.<br />

Im Gegensatz zu 6to4 arbeitet 6rd mit den<br />

Präfixen der Endkunden, statt ein eigenes<br />

Präfix zu nutzen. Dies vereinfacht die<br />

Einführung deutlich. Nachdem zunächst<br />

ein von Després selbst geschriebener<br />

Informational-RFC veröffentlicht wurde,<br />

bereitet die IETF die Standardisierung<br />

nun im Standard-RFC 5969 vor.<br />

Im Gegensatz zu 6to4 wandern die Daten<br />

für die Kommunikation zwischen in-<br />

Ein Windows-System erstellt für jedes<br />

LAN-Interface, das ein eigenes DNS-Suffix<br />

erhält (und damit in einem eigenen<br />

Subnetz ist), ein separates ISATAP-Tunternen<br />

IPv6-Only-Knoten und externen<br />

IPv6-Only-Knoten, die über das IPv4-<br />

Internet verbunden sind, über Providereigene<br />

6rd-Relays. Der Provider behält<br />

die vollständige Kontrolle über die IPv6-<br />

Kommunikation, die über ihn läuft und<br />

kann daher auch seine eigenen Präfixe<br />

nutzen. Da auch hier die öffentliche<br />

IPv4-Adresse des 6rd-Relays kommuniziert<br />

werden muss, ist sie ebenfalls in die<br />

IPv6-Adresse integriert.<br />

Eine Besonderheit bei 6rd ist allerdings,<br />

dass das einem Provider zugewiesene<br />

Präfix flexibel ist und somit bei längeren<br />

Präfixen nicht mehr genügend Bits in<br />

der IPv6-Adresse zur Verfügung stehen.<br />

Erhält der Provider ein Standard-Präfix<br />

(/​32) von der Regional Internet Registry<br />

(RIR), so kann er zwar die IPv4-Adresse<br />

in den folgenden 32 Bits unterbringen,<br />

dem Kunden aber dann nur noch ein<br />

einzelnes Subnetz zur Verfügung stellen,<br />

da die hinteren 64 Bits der IPv6-Adresse<br />

für die Interface-ID reserviert sind.<br />

Im Fall von FREE erhielt der Provider<br />

später ein /26-Präfix. Die Adresse wurde<br />

so aufgeteilt, dass nach dem Präfix die<br />

IPv4-Adresse hexadezimal eingebettet<br />

ist, dann zwei reservierte Bits folgen<br />

und schließlich die 4 Bit lange Subnet-<br />

ID. Eine andere Variante, um bei längeren<br />

Provider-Präfixen festgelegte Bits zu<br />

sparen, besteht darin, redundante Teile<br />

der IPv4-Adresse auszulassen. Nutzt ein<br />

Provider für seine Kunden zum Beispiel<br />

immer ein bestimmtes /18-Subnetz, kann<br />

er die vorderen 18 Bits der IPv4-Adresse<br />

weglassen, ohne relevante Informationen<br />

zu verlieren. 6rd ist ein interessanter An-<br />

satz mit dem Potenzial, das alte 6to4<br />

mittelfristig weitgehend abzulösen.<br />

ISATAP – fürs Intranet<br />

Das Intra-Site Automatic Tunnel Addressing<br />

Protocol (ISATAP) kommt bei Hostto-Host-,<br />

Host-to-Router- und Router-to-<br />

Host-Verbindungen zum Einsatz. Router-to-Router-Verbindungen<br />

sind nicht<br />

vorgesehen. ISATAP wird genutzt, um<br />

in einem Organisationsnetzwerk IPv6/​<br />

IPv4-Knoten über eine IPv4-Infrastruktur<br />

miteinander zu verbinden. Es ist nicht für<br />

die Verbindung über das Internet konzipiert.<br />

ISATAP sollte nicht in produktiven<br />

Netzwerken eingesetzt werden sollte,<br />

weil es in erster Linie Testzwecken dient<br />

(Abbildung 7).<br />

ISATAP ist in RFC 5214 festgelegt und<br />

erfordert auf den Hosts keine manuelle<br />

Konfiguration. Es wurde von Cisco und<br />

Microsoft entwickelt, wird aber auch von<br />

<strong>Linux</strong> unterstützt [4]. Wie auch 6to4<br />

nutzt ISATAP ein virtuelles Tunnel-Interface,<br />

das automatisch angelegt und mit<br />

einer IPv6-Adresse versehen wird. Dabei<br />

kann ein beliebiges Unicast-/​64-Präfix<br />

genutzt werden (also auch Link-Local).<br />

Die IPv4-Adresse des jeweiligen LAN-<br />

Interfaces wird am Ende der Interface-ID<br />

eingebunden. Je nachdem, ob es sich<br />

um eine globale IPv4-Adresse oder eine<br />

private IPv4-Adresse nach RFC 1918<br />

handelt, haben ISATAP-Adressen das folgende<br />

Format:<br />

n Globale IPv4-Adressen: 64-Bit-Unicast-<br />

Präfix:200:5EFE:w.x.y.z<br />

n Private IPv4-Adressen: 64-Bit-Unicast-<br />

Präfix:0:5EFE:w.x.y.z<br />

Hierbei steht w.x.y.z für eine IPv4-Adresse<br />

in normaler Punktnotation. Eine<br />

mögliche ISATAP-Adresse wäre dann zum<br />

Beispiel 2001:db8:200:5EFE:85.25.66.51.<br />

Das ISATAP-Tunneling-Interface betrachtet<br />

den IPv4-Teil des Netzwerks übrigens<br />

als ein einziges Link-Layer-Segment, analog<br />

zu Ethernet. Die Link-Layer-Verkapselung<br />

geschieht demnach aus Sicht von<br />

ISATAP durch IPv4.<br />

So funktioniert ISATAP<br />

Abbildung 6: Bei 6rd wandern die Daten für die Kommunikation zwischen internen IPv6-Only-Knoten über<br />

Provider-eigene 6rd-Relays.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

31


Netzwerk<br />

IPv6-Migration<br />

neling-Interface. Diese ISATAP-Interfaces<br />

befinden sich ab Vista SP1 zunächst im<br />

Status „Disconnected“, solange der Name<br />

ISATAP nicht aufgelöst werden kann. Hinter<br />

diesem DNS-Namen verbirgt sich die<br />

IPv4-Adresse eines ISATAP-Routers. Kann<br />

der Name „ISATAP“ aufgelöst werden,<br />

geschieht Folgendes:<br />

n Die ISATAP-Interfaces weisen<br />

sich eine Link-local-Adresse zu:<br />

FE80::5EFE:w.x.y.z beziehungsweise<br />

FE80::200:5EFE:w.x.y.z.<br />

n Die ISATAP-Hosts senden über das<br />

ISATAP-Tunneling-Interface per IPv4<br />

eine Router-Solicitation-Nachricht unicast<br />

an die IPv4-Adresse des ISATAP-<br />

Routers<br />

n Der ISATAP-Router antwortet mit einer<br />

IPv4-Router-Advertisement-Nachricht<br />

unicast an die IPv4-Adresse des ISA-<br />

TAP-Hosts, in der er sich selbst als<br />

Standardgateway ankündigt und das<br />

Präfix für das ISATAP-Subnetz propagiert.<br />

Dies kann ein Global-Unicastoder<br />

ein Unique-Local-Präfix sein.<br />

Die Kommunikation mit dem Router<br />

geschieht per IPv4-Unicast, da der normale<br />

Weg per IPv6-Multicast nicht zur<br />

Verfügung steht, um Router Solicitationund<br />

Router-Advertisement-Nachrichten<br />

auszutauschen. IPv4 Multicast kann hier<br />

nicht verwendet werden, da dies eine<br />

subnetzübergreifende IPv4-Multicast-<br />

Infrastruktur erfordern würde.<br />

Der ISATAP-Router ist in einem ISATAP-<br />

Netzwerk zur initialen Aktivierung der<br />

ISATAP-Tunneling-Interfaces nötig. Er<br />

muss aber nicht unbedingt Präfixe zuweisen,<br />

da in einem lokalen ISATAP-<br />

Segment die ISATAP-Hosts untereinander<br />

über ihre Link-Local-Adressen kommunizieren<br />

können. Der ISATAP-Router kann<br />

darüber hinaus jedoch ISATAP-Hosts mit<br />

dem nativen IPv6-Teil des Unternehmens-<br />

Netzwerks verbinden. Dazu ist allerdings<br />

ein Global-Unicast- oder Unique-Local-<br />

Präfix nötig, das über die Router Advertisements<br />

zugewiesen werden muss. In<br />

diesem Fall können die ISATAP-Hosts<br />

über die per Autoconfiguration gebildeten<br />

Adressen auch mit IPv6-Knoten außerhalb<br />

des eigenen ISATAP-Subnetzes<br />

kommunizieren, in dem sie den ISATAP-<br />

Router als Standardgateway verwenden.<br />

Im Gegensatz zu den ISATAP-Hosts muss<br />

der ISATAP-Router entsprechend manuell<br />

konfiguriert werden.<br />

Abbildung 7: Das ISATAP-Protokoll konfiguriert Rechner automatisch. Der Einsatz ist jedoch aufs Intranet<br />

beschränkt und dient vorwiegend Testzwecken.<br />

ISATAP hat unter Windows den Vorteil,<br />

schnell implementiert werden zu können.<br />

Der Nachteil besteht darin, dass die<br />

Kommunikation auf das Unternehmensnetzwerk<br />

beschränkt ist und nicht für die<br />

Kommunikation mit Systemen im Internet<br />

ausgelegt ist. Weiterhin ist ISATAP in<br />

vielen NAT-Szenarien nicht nutzbar.<br />

Teredo<br />

6to4 bietet IPv6-Tunnel über das IPv4-<br />

Internet, hat jedoch den Nachteil, dass<br />

die 6to4-Router immer eine offizielle<br />

IPv4-Adresse benötigen. Liegen sie hinter<br />

einem NAT-Device, funktioniert 6to4<br />

nicht. Hier setzt Teredo an. Dabei handelt<br />

es sich um eine Tunneltechnologie, die<br />

von Mircosoft entwickelt wurde und insbesondere<br />

dort zum Einsatz kommt. Es<br />

gibt jedoch auch eine Implementation für<br />

<strong>Linux</strong> [5]. Der Name leitet sich übrigens<br />

von „Teredo navalis“ ab und ist die Bezeichnung<br />

für einen Schiffsbohrwurm.<br />

Teredo ist in den RFCs 4380 und 5991<br />

definiert und bietet IPv6-Tunnel für IPv6-<br />

Knoten an, die sich hinter NAT-Devices<br />

befinden, die keine 6to4-Router sind.<br />

Dazu tunnelt Teredo die IPv6-Pakete<br />

nicht nur in IPv4, sondern zusätzlich in<br />

UDP. Das bedeutet, dass das originale<br />

IPv6-Paket als Payload von UDP transportiert<br />

wird. Dies erhöht die Chance, durch<br />

NAT-Devices hindurchzukommen. Dabei<br />

kann das getunnelte Paket grundsätzlich<br />

auch problemlos mehrere NAT-Stufen<br />

durchqueren.<br />

Dabei spielen die NAT-Typen eine wichtige<br />

Rolle. Nach RFC 3489 wird unterschieden<br />

in:<br />

n Cone-NAT: Es existiert eine 1-zu-1-<br />

Zuordnung zwischen internen und<br />

externen Adressen, die dementsprechend<br />

auch von extern angesprochen<br />

werden können.<br />

n Restricted-NAT: Die Kontaktaufnahme<br />

von außen kann nur dann geschehen,<br />

wenn von innen bereits eine Verbindung<br />

zuvor aufgebaut wurde.<br />

n Symmetric-NAT: Die interne Adresse<br />

kann verschiedenen externen Adressen<br />

zugewiesen werden und ist daher<br />

von außen nicht eindeutig identifizierbar.<br />

In der Praxis ist diese Unterscheidung jedoch<br />

nur ein Anhaltspunkt, da viele NAT-<br />

Router Mischformen verwenden. Teredo<br />

funktioniert grundsätzlich mit Cone-NAT<br />

und Restricted-NAT. Teredo definert die<br />

folgenden Komponenten:<br />

n Teredo-Clients: Dies sind IPv6/​IPv4-<br />

Knoten, die Teredo-Tunneling-Interfaces<br />

unterstützen (ab Windows XP<br />

SP1).<br />

n Teredo-Server: IPv6/​IPv4-Knoten, die<br />

sowohl an das IPv4- als auch an das<br />

IPv6-Internet angeschlossen sind. Sie<br />

weisen Teredo-Präfixe zu und unterstützen<br />

die Teredo-Clients bei der<br />

Kontaktaufnahme zu anderen Teredo-<br />

Clients oder IPv6-Only-Knoten. Teredo-Server<br />

lauschen per Default auf<br />

Port 3544/​udp.<br />

n Teredo-Relays: IPv6/​IPv4-Router, die<br />

Pakete von Teredo-Clients aus dem<br />

IPv4-Internet in das IPv6-Internet<br />

weiterleiten. Sie arbeiten teilweise mit<br />

Teredo-Servern zusammen.<br />

n Host-spezifisches Teredo-Relay: Dieses<br />

Relay ist ebenfalls im IPv6- und<br />

32 Ausgabe 01-2013 Admin www.admin-magazin.de


IPv6-Migration<br />

Netzwerk<br />

IPv4-Internet angeschlossen. Ist ein<br />

IPv6-Knoten auch IPv4-fähig, kann er<br />

über ein Host-spezifisches Teredo-Relay<br />

direkt über IPv4 mit dem Teredo-<br />

Client kommunizieren. In diesem Fall<br />

ist kein Teredo-Relay notwendig und<br />

damit keine Kommunikation über das<br />

IPv6-Internet.<br />

Die Teredo-Adresse besteht aus einem<br />

32-Bit-Präfix (2001::/​32), gefolgt von der<br />

hexadezimalen IPv4-Adresse des Teredo-<br />

Servers. Die hinteren 64-Bits teilen sich<br />

in drei Bestandteile auf. Die Flags (16<br />

Bits) definieren insbesondere die Art des<br />

NAT. Der chiffrierte externe Port (16 Bits)<br />

gibt den Port an, über den der interne<br />

Teredo-Client durch das NAT-Device von<br />

außen erreichbar ist. Diesen bestimmt<br />

der Teredo-Server durch die Analyse des<br />

Source-Ports der Pakete, die vom Client<br />

bei ihm ankommen und nennt ihn dem<br />

Client im Antwortpaket. Da einige NAT-<br />

Geräte versuchen, eine im Payload enthaltende<br />

Port-Angabe auf die interne<br />

Portnummer zu übersetzen, wird dieser<br />

Wert mit XOR verschlüsselt. Die letzten<br />

32 Bits enthalten die chiffrierte externe<br />

IPv4-Adresse, über die der Client<br />

erreichbar ist.<br />

IPv6-Blase<br />

Teredo-Adressen dieser Art werden ausschließlich<br />

den Teredo-Clients zugewiesen.<br />

Teredo-Server und ‐Relays erhalten<br />

nur native IPv4- beziehungsweise IPv6-<br />

Adressen. Die Kommunikation wird nun<br />

von den Teredo-Clients über die Teredo-<br />

Server initiiert, die den Teredo-Clients<br />

mitteilen, über welche offiziellen IP-<br />

Adressen und Ports sie zu sehen sind.<br />

Mit diesen Informationen macht Teredo<br />

sich die NAT-Session-Einträge zunutze,<br />

um die internen Systeme auch von außen<br />

ansprechen zu können.<br />

Um die NAT-Verbindungen aufrechtzuerhalten,<br />

senden Teredo-Clients in regelmäßigen<br />

Abständen sogenannte Bubble-Pakete<br />

an den Teredo-Server. Dabei handelt<br />

es sich um „leere“ IPv6-Pakete, die in<br />

einem IPv4-UDP-Paket eingekapselt sind.<br />

Möchten zwei Teredo-Clients am selben<br />

Link miteinander kommunizieren, so<br />

nutzen sie Bubble-Pakete als Ersatz für<br />

den Neighbor Discovery-Prozess, um die<br />

Kommunikation zu initiieren. Möchte ein<br />

Teredo-Client mit einem anderen Teredo-<br />

Client einer Remote-Site sprechen, hängt<br />

die Kommunikation vom NAT-Typ ab.<br />

Befinden sich beide Knoten hinter einem<br />

Cone-NAT, können die Systeme<br />

direkt miteinander in Verbindung treten,<br />

da die Verbindungsaufnahme nach<br />

der Definition von Cone-NAT von jeder<br />

Source-IP-Adresse aus möglich ist.<br />

Befinden sich die Knoten jedoch hinter<br />

Routern, die Restricted-NAT verwenden,<br />

so werden zunächst Bubble-Pakete zu<br />

den Remote-Sites und zum Teredo-Server<br />

gesendet, der die Verbindung initiiert. Die<br />

eigentliche Kommunikation geht nach<br />

der initialen Öffnung der Verbindung direkt<br />

zwischen den beiden Kommunikationspartnern,<br />

der Teredo-Server hilft hier<br />

nur beim Verbindungsaufbau.<br />

Im Falle der Verbindung eines Teredo-<br />

Clients mit einem nativen IPv6-Knoten<br />

im IPv6-Internet dient der Teredo-Server<br />

jedoch auch als Router in das IPv6-Internet.<br />

Verbindungen, die vom IPv6-Internet<br />

zu einem Teredo-Client aufgebaut werden<br />

sollen, werden mithilfe des nächstgelegenen<br />

Teredo-Relays beziehungsweise<br />

Host-spezifischen Relays realisiert.<br />

Durch diese komplexen Mechanismen ist<br />

Teredo zum einen sehr langsam beim<br />

Verbindungsaufbau (unter anderem wegen<br />

Timeouts) und zum anderen unzuverlässig,<br />

weil die Verbindungen nur unter<br />

bestimmten Bedingungen überhaupt<br />

aufgebaut werden können. Für einen<br />

produktiven Einsatz ist Teredo derzeit<br />

eher nicht geeignet.<br />

Fazit und Ausblick<br />

Wer die Wahl hat, sollten immer native<br />

IPv6-Verbindungen verwenden. Leider ist<br />

das aber bisher in den seltensten Fällen<br />

möglich. Daher sind IPv6-Tunnel der-<br />

Abbildung 8: Eine Teredo-Adresse kodiert neben dem Teredo-Server die NAT-Flags, den Port und die externe<br />

Adresse. Der Verbindungsaufbau dauert aber seine Zeit.<br />

zeit oft die einzige Möglichkeit, IPv6-<br />

Systeme miteinander zu verbinden. Je<br />

nach Anwendungsgebiet gibt es hierfür<br />

verschiedene, in diesem Artikel vorgestellte<br />

Tunnel-Technologien, von denen<br />

jede ihre Vor- und Nachteile besitzt.<br />

Grundsätzlich ist jedoch kein einziger<br />

Tunnelmechanismus dafür ausgelegt, auf<br />

Dauer zu bestehen – letztlich sollen alle<br />

Tunnel irgendwann durch native IPv6-<br />

Verbindungen ersetzt werden. Dies sollte<br />

man auch bei der Planung der Migration<br />

berücksichtigen. Denn der Abbau eines<br />

etablierter Tunnelmechanismus bedeutet<br />

in einigen Jahren unter Umständen zusätzlichen<br />

Aufwand.<br />

Neben den hier vorgestellten Technologien<br />

existieren zusätzlich sogenannte<br />

Tunnelbroker (wie zum Beispiel SixXS),<br />

die für Enduser die Möglichkeit schaffen,<br />

über verschiedene, teils proprietäre<br />

Technologien inklusive Tunnel-Client-<br />

Software, aus dem internen Netz IPv6-<br />

Systeme im Internet ansprechen zu<br />

können. Doch auch diese Lösungen<br />

sind letztlich Provisorien, die den Zeitraum<br />

bis zur Bereitstellung nativer IPv6-<br />

Anbindungen überbrücken sollen. Die<br />

Erfahrung zeigt aber: Manchmal sind<br />

Provisorien die besten Dauerlösungen<br />

(ofr)<br />

n<br />

Infos<br />

[1] Untersuchung der Effektivität von Teredo:<br />

[http:// www. sigcomm. org/ sites/​<br />

default/ files/ ccr/ papers/ 2012/ October/​<br />

2378956‐2378959. pdf]<br />

[2] 6to4 siehe RFC 3056 (Connection of IPv6<br />

Domains via IPv4 Clouds)<br />

[3] 6rd für <strong>Linux</strong>: [http:// www. litech. org/ 6rd/]<br />

[4] ISATAP für <strong>Linux</strong>: [http:// www.​<br />

saschahlusiak. de/ linux/ isatap. htm]<br />

[5] Teredo für <strong>Linux</strong>:<br />

[http:// www. remlab. net/ miredo/]<br />

Der Autor<br />

Eric Amberg ist Geschäftsführer der ATRACON<br />

GmbH ([http:// www. atracon. de]), seit vielen<br />

Jahren im Bereich IT-Infrastruktur als Trainer<br />

und Consultant tätig und verfügt über langjährige<br />

Projekterfahrung. Sein<br />

besonderer Fokus liegt auf<br />

Netzwerk-Themen. In seinen<br />

Seminaren legt er großen<br />

Wert auf eine praxisnahe<br />

Schulung.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

33


<strong>Enterprise</strong>-<strong>Linux</strong><br />

<strong>Enterprise</strong>-Distributionen<br />

© Wojciech Kaczkowski, 123RF<br />

<strong>Enterprise</strong>-<strong>Linux</strong>-Distributionen<br />

Kurs halten<br />

Red Hat <strong>Enterprise</strong> <strong>Linux</strong> dient als Blaupause für Klone wie Oracle <strong>Linux</strong> oder CentOS. Suse geht dagegen seinen<br />

eigenen Weg. Wir durchforsten den Angebotsdschungel der <strong>Enterprise</strong>-<strong>Linux</strong>e und beleuchten technische Unterschiede,<br />

Subskriptionsmodelle und Kosten. Thomas Drilling<br />

Wer <strong>Linux</strong> schon seit 1995 verwendet,<br />

wird sich vielleicht fragen, was das sein<br />

soll, eine <strong>Enterprise</strong>-Distribution. Der<br />

Name rührt daher, dass sich <strong>Enterprise</strong>-<br />

Betriebssysteme an den mutmaßlichen<br />

Anforderungen von Unternehmen orientieren.<br />

Das sind: Stabilität und möglichst<br />

lange Produktlebenszyklen, innerhalb<br />

derer Unternehmen in Abhängigkeit des<br />

Umfangs der erworbenen Subscription<br />

Unterstützung in Form von Programm-,<br />

System- und Sicherheits-Updates, sowie<br />

Fehlerkorrekturen erhalten. Zudem sind<br />

viele, ebenfalls „<strong>Enterprise</strong>-taugliche“<br />

Software-Pakete wie etwa Oracle-Datenbanken,<br />

nur für <strong>Enterprise</strong>-<strong>Linux</strong>e zertifiziert.<br />

Mit seinem Red Hat <strong>Enterprise</strong> <strong>Linux</strong><br />

(RHEL, Abbildung 1) ist Red Hat heute<br />

Weltmarktführer in dieser Sparte. RHEL<br />

bietet standardmäßig sieben Jahre Unterstützung<br />

für das jeweils aktuelle Release,<br />

das sich ab RHEL 6 nach Bedarf auch<br />

auf 10 Jahre uneingeschränktem Support<br />

ausdehnen lässt. Die Konkurrenz zieht<br />

damit aber gleich: Der Support für Suses<br />

<strong>Enterprise</strong> Server (SLES) lässt sich auf<br />

Wunsch ebenfalls auf bis zu 10 Jahre<br />

ausdehnen.<br />

E Red Hat<br />

Red Hat ist aus wirtschaftlicher Sicht<br />

heute das Vorzeigeunternehmen im <strong>Linux</strong>-Sektor<br />

und verbuchte im Geschäftsjahr<br />

2011/​2012 einen Gesamtumsatz von<br />

1,13 Milliarden US-Dollar. Dass ein großer<br />

Anteil an Red Hats Einnahmen aus<br />

dem Subskriptions-Geschäft resultiert,<br />

zeigt, welchen Stellenwert Red Hat <strong>Enterprise</strong><br />

<strong>Linux</strong> im eigenen Unternehmen genießt,<br />

trotz anderer Red-Hat-Produkte im<br />

Cloud-Sektor, dem Middleware-Bereich<br />

oder dem Storage-Segment.<br />

Gelegentlich hilft Red Hat bei der Weiterentwicklung<br />

neuer Produkte und Technologien<br />

zuweilen auch mit der Akquisition<br />

von Unternehmen und Technologien<br />

nach, etwa bei der JBoss-Middleware<br />

oder im Bereich Virtualisierung. Zumal<br />

Red Hat Schlüsseltechnologien wie KVM<br />

oder Spice nach der Anpassung durch<br />

eigene Entwickler wieder als freie Software<br />

veröffentlicht. Darüber hinaus sind<br />

viele von Red Hat bezahlte Entwickler<br />

in anderen Open-Source-Projekten aktiv,<br />

neben dem Fedora-Projekt auch in der<br />

<strong>Linux</strong>-Kernel-Entwicklung, namentlich<br />

bei den KVM-Komponenten.<br />

In diesem Zusammenhang ist bemerkenswert,<br />

dass sich Red Hat wiederholt<br />

in der Top-10-Unternehmensliste der<br />

<strong>Linux</strong> Foundation platziert hat, deren<br />

Entwickler die meisten Commits zum<br />

<strong>Linux</strong>-Kernel lieferten. So stammten im<br />

Jahr 2010 12,4 Prozent der Arbeiten am<br />

<strong>Linux</strong>-Kernel von Red-Hat-Entwicklern,<br />

Platz 2 hinter „unbekannten Beitragenden“.<br />

Erst im April letzten Jahres ist Red<br />

Hat (in Deutschland auch Gründungsmitglied<br />

der Open Source Business Alliance)<br />

dem Open-Stack-Projekt beigetreten.<br />

36 Ausgabe 01-2013 Admin www.admin-magazin.de


<strong>Enterprise</strong>-Distributionen<br />

<strong>Enterprise</strong>-<strong>Linux</strong><br />

Red Hat stellt sämtliche Quellpakete seiner<br />

RHEL-Distributionen (Server, Desktop,<br />

Workstation) gemäß der GPL-Richtlinien<br />

im Quellcode frei zur Verfügung<br />

[1], allerdings keine Binärpakete und<br />

keine Installations-Images. Nach einmaligem<br />

Registrieren im „Red Hat Customer<br />

Portal“ darf der Anwender aber eine<br />

60-Tage-Testversion von RHEL herunterladen.<br />

Red Hat <strong>Enterprise</strong> <strong>Linux</strong> lässt sich<br />

ausschließlich in Form von Abonnementund<br />

Support-Verträgen (Subscriptions)<br />

nutzen.<br />

Auch als Desktop<br />

Für den Desktop-Bereich offeriert Red<br />

Hat die Abonnement-Varianten Workstation<br />

und Desktop. Die Workstation-<br />

Version schlägt mit 179 US-Dollar in der<br />

sogenannten „Self-support-Subscription“<br />

und mit 299 US-Dollar pro Jahr in der<br />

Standard-Subscription zu Buche. Für<br />

die meisten Unternehmen dürfte eher<br />

die Server-Version von Interesse sein.<br />

Die beginnt für x86-(32/​64)-Systeme bei<br />

349 US-Dollar in der 2-Socket-Version<br />

inklusive Unterstützung für lediglich einen<br />

virtuellen Gast und endet bei der<br />

Premium-Subscription für 6498 US-Dollar<br />

im Jahr für 4-Socket-Systeme und eine<br />

unbegrenzte Anzahl virtueller Gäste.<br />

Eine Übersicht aller Varianten liefert die<br />

zugehörige Seite [2] im Red Hat Store.<br />

Die Subscriptions sind bei Red Hat übrigens<br />

nicht versionsspezifisch, sondern<br />

gelten stets gleichermaßen für alle aktuell<br />

gepflegten Varianten, derzeit RHEL 5 und<br />

RHEL 6.<br />

Installiert der Admin unter RHEL Pakete<br />

aus auf RPM basierenden Fremdquel-<br />

Abbildung 1: Red Hat ist unter Herstellern von <strong>Linux</strong>-<strong>Enterprise</strong>-Distributionen am längsten im Geschäft.<br />

len, wie RPM Fusion oder RPM Forge,<br />

verliert er den Support-Anspruch. Das<br />

macht aber auch wenig Sinn bei einer<br />

<strong>Enterprise</strong>-Distribution, denn deren Wert<br />

liegt gerade in der auf den angebotenen<br />

Paketen basierenden Stabilität. Red Hat<br />

<strong>Enterprise</strong> <strong>Linux</strong> verwaltet sämtliche mit<br />

RHEL gelieferte Pakete, sowie Aktualisierungen<br />

in sogenannten „Channels“ im<br />

„Red Hat Network“ (RHN), dem weltweit<br />

verfügbaren Software-Repository von Red<br />

Hat <strong>Enterprise</strong> <strong>Linux</strong>.<br />

Nur wer eine Subscription erwirbt, hat<br />

nach erstmaliger Registrierung Zugriff<br />

auf das RHN. Die einzelnen Channels<br />

unterscheiden sich je nach erworbener<br />

Subskription. Das gilt auch für die Installationsmedien.<br />

Wer eine Desktop-Subskription<br />

erwirbt, hat auch nur Zugriff<br />

auf den zugehörigen Channel. Außerdem<br />

ist es im Firmennetzwerk jederzeit möglich,<br />

einen eigenen Satellite-Server für<br />

RHN aufzusetzen und zu betreiben. Das<br />

Software-Management selbst basiert auf<br />

RPM-Raketen, mit Yum als Kommandozeilen-Frontend,<br />

das sich auch um das<br />

Auflösen von Abhängigkeiten kümmert.<br />

Von lizenzrechtlich bedingten und gewollten<br />

Unterschieden der einzelnen<br />

RHEL-Versionen, die sich aus der Paketauswahl<br />

in den Channels ergeben, abgesehen,<br />

verwendet RHEL einen von den<br />

Red-Hat-Entwicklern stark modifizierten<br />

Kernel 2.6.32. Der integriert unter anderem<br />

die von Red Hat entwickelte Kernel-<br />

Erweiterung SE <strong>Linux</strong>.<br />

Dass Red Hat seit der RHEL-Version 6 bestrebt<br />

ist, seine Kernel-Patches möglichst<br />

Redpatch und Ksplice<br />

Red Hat liefert seit der RHEL-Version 6 Anfang<br />

2011 seine Änderungen am <strong>Linux</strong>-Kernel nur<br />

noch in Form eines einzigen großen kumulierten<br />

Pakets aus, in dem sämtliche von Red Hat<br />

vorgenommene Anpassungen vermischt sind.<br />

Die Strategieänderung soll vermutlich der Konkurrenz<br />

von Oracle und Novell/​Suse die Arbeit<br />

erschweren. Die müssen seitdem sämtliche Änderungen<br />

selbst ausfindig machen, denn laut<br />

Red Hat bieten Unternehmen wie Oracle und<br />

Novell auch Support für RHEL-Kunden an. Suse<br />

offeriert etwa auf seinen SLES-Produktseiten<br />

einen Migrationspfad für RHEL beziehungsweise<br />

ein Support-Paket, das auch Unterstützung für<br />

Red-Hat-Produkte einschließt [13].<br />

Laut Red-Hat-Chef Brian Stevens könne das<br />

Unternehmen mit der Änderung solchen Tendenzen<br />

entgegensteuern und für das Anbieten<br />

von Support-Leistungen essenzielle Informationen<br />

verbergen, ohne den Grundgedanken von<br />

freier Software zu verletzen. Offenbar betraf die<br />

Änderung aber nicht nur Unternehmen wie Novell,<br />

sondern auch Projekte wie das von Oracle<br />

übernommene Ksplice-Projekte. Da Ksplice auf<br />

das Vorhandensein der einzelnen Patches am<br />

RHEL-Kernel angewiesen ist, hatten die Ksplice-<br />

Entwickler laut Oracle schon kurz nach der Bekanntgabe<br />

von Red Hats Maßnahme ein eigenes<br />

Respository gestartet, das die Änderungen am<br />

RHEL-Kernel in Einzelteile zerlegt.<br />

Seit Kurzem macht Oracle die einzelnen Änderungen<br />

im Rahmen seines Redpatch-Projekt<br />

auch allgemein verfügbar und pflegt im dazu<br />

im eigens aufgesetzten Redpatch-Repository<br />

[14] den Quellcode des RHEL-Kernel in Form<br />

eines öffentlich zugänglichen Git-Depots [15],<br />

das sämtliche von Red Hat vorgenommenen<br />

Änderungen wieder als einzelne Patches zur<br />

Verfügung stellt. Ksplice ist eine von Oracle erworbene<br />

Technologie, die das Anwenden von<br />

Patches auf den <strong>Linux</strong>-Kernel ohne Neustart ermöglicht.<br />

So kann Ksplice beispielsweise viele<br />

Fehler und Sicherheitslücken zur Laufzeit korrigieren.<br />

Oracle verkauft Ksplice übrigens auch als<br />

Service-Dienstleistung an RHEL-Anwender.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

37


<strong>Enterprise</strong>-<strong>Linux</strong><br />

<strong>Enterprise</strong>-Distributionen<br />

schwer nachvollziehbar zu machen, sorgt<br />

übrigens seit einiger Zeit für Unmut in<br />

der Community und hat Konkurrent<br />

Oracle veranlasst, die Kernel-Patches von<br />

RHEL 6 wieder aufzudröseln und in Form<br />

eines eigenen, öffentlich zugänglichen<br />

Repositories (Redpatch-Projekt) der Gemeinschaft<br />

zugänglich zu machen (siehe<br />

Kasten „Redpatch und Ksplice“).<br />

RHEL lässt sich ebenso wie Fedora mithilfe<br />

des grafischen Anaconda-Installers<br />

installieren, unterstützt via Kickstart aber<br />

auch ein automatisiertes Deployment.<br />

Zur Konfiguration stehen neben der Kommandozeile<br />

eine Auswahl von speziell<br />

von Red Hat entwickelten Werkzeugen<br />

zur Verfügung, die allesamt dem Bezeichnungsschema<br />

»system‐config‐name« folgen<br />

und nach den für Red Hat und Fedora<br />

gültigen Prinzipien entwickelt wurden.<br />

Das bedeutet, dass Management-Werkzeuge<br />

zur Systemverwaltung stets nur<br />

eine einzige Aufgabe erfüllen und zudem<br />

keine exklusive Kontrolle über Konfigurationsdateien<br />

benötigen. Trotzdem ist<br />

es unter RHEL unerlässlich, dass Administratoren<br />

in der Lage sind, das System<br />

manuell durch das Bearbeiten von Konfigurationsdateien<br />

zu verwalten.<br />

RHEL: Virtualisierung und<br />

Cluster-Suite<br />

Erwähnenswert im Bereich der Virtualisierungsfunktionen<br />

ist, dass RHEL seit<br />

der Version 6.3 in Gästen 160 statt wie<br />

bisher 64 virtuelle CPUs unterstützt. Ferner<br />

enthält RHEL seit der Version 6.3 das<br />

neue Werkzeug »virt‐v2v«, das es dem<br />

Admin ermöglicht, auf anderen Systemen<br />

wie beispielsweise Xen und VMware ESX<br />

erstellte virtuelle Maschinen zu importieren<br />

beziehungsweise konvertieren.<br />

Mit RHEL 6 wandte sich Red Hat vom<br />

noch in RHEL 5 favorisierten Xen-Hypervisor<br />

zugunsten des aus dem eigenen<br />

Hause stammenden KVM ab, was aber<br />

nicht bedeutet, dass RHEL 6 nicht als<br />

Gastsystem unter Xen läuft. Detaillierte<br />

Informationen zu den Virtualisierungsfunktionen<br />

finden sich unter [3]. Ferner<br />

erlaubt die in RHEL enthaltene Cluster-<br />

Suite ab RHEL 6.3, die HA-Infrastruktur<br />

auch für ein Failover virtueller Maschinen<br />

zu verwenden. RHEL 6 kann zudem auch<br />

als iSCSI-Initiator und Storage-Server arbeiten.<br />

Abbildung 2: Auch Suse gehört zu den Pionieren im <strong>Linux</strong>-Geschäft, bot den <strong>Enterprise</strong>-Server aber erst nach<br />

den frühen Distributionen für Privatanwender an.<br />

Weitere Besonderheiten: RHEL 5 und<br />

RHEL 6 sind LSB-3.1-zertifiziert. Unter<br />

anderem dank SE <strong>Linux</strong> genügen RHEL 5<br />

und RHEL 6 auch den Anforderungen des<br />

US-Sicherheitsstandards „EAL4+“ (EAL4<br />

mit Zusätzen). Die EAL4 (Common Criteria<br />

Evaluation Assurance Level)-Zertifizierung<br />

ist der höchste erreichbare Level,<br />

den ein allgemein verfügbares Standard-<br />

Betriebssystem ohne spezielle Modifikationen<br />

erlangen kann.<br />

Zertifziert<br />

Ferner kann Red Hat der US-Regierung<br />

die IPv6-Tauglichkeit von RHEL nachweisen.<br />

Zudem ist RHEL für SAP zertifiziert.<br />

Bleibt noch zu erwähnen, dass Red Hat<br />

<strong>Enterprise</strong> <strong>Linux</strong> 6 keine Unterstützung<br />

mehr für Intels Itanium-Architektur bietet.<br />

Red Hat lässt sämtliche IA64-Entwicklungen<br />

ausschließlich in Red Hat<br />

<strong>Enterprise</strong> <strong>Linux</strong> 5 einfließen. Die Unterstützung<br />

für RHEL 5 endet im März 2014.<br />

Allerdings können Kunden erweiterten<br />

Support von RHEL 5 für Itanium bis März<br />

2017 erwerben.<br />

RHEL 6 unterstützt auch die POWER-<br />

Architektur und benötigt dazu mindestens<br />

eine POWER6- oder neuere CPU. PO-<br />

WER5-Prozessoren werden von RHEL 6<br />

nicht unterstützt. Übrigens fungiert nicht<br />

nur RHEL selbst als Blaupause für RHEL-<br />

Klone oder zumindest für <strong>Enterprise</strong>-Distris,<br />

die den RHEL-Kernel verwenden,<br />

RHEL ist auch Basis für zahlreiche Cloudund<br />

Middleware-Produkte im eigenen<br />

Unternehmen. So wundert es kaum, dass<br />

auch Red Hats eigene Open-Stack-Variante<br />

Red Hat <strong>Enterprise</strong> <strong>Linux</strong> als Basis<br />

verwendet. Red Hats Open-Stack-Version<br />

wurde mit RHEL 6.3 getestet und benötigt<br />

selbstverständlich außerdem Red<br />

Hats <strong>Enterprise</strong> Virtualization (RHEV).<br />

RHEL ist außerdem ein essenzieller Bestandteil<br />

von Red Hats Plattform-as-a-<br />

Service-Strategie „OpenShift“.<br />

E Suse <strong>Linux</strong><br />

<strong>Enterprise</strong> Server<br />

Red-Hats direkter Konkurrent im Sektor<br />

<strong>Enterprise</strong>-Distributionen ist die nach<br />

der Übernahme von Novells <strong>Linux</strong>-Sparte<br />

durch Attachmate im Mai 2011 wieder<br />

relativ unabhängig agierende Nürnberger<br />

Suse <strong>Linux</strong> GmbH. Sie hat als Pionier der<br />

Branche seit dem Jahr 2000 eine <strong>Enterprise</strong>-Distribution<br />

„Suse <strong>Linux</strong> <strong>Enterprise</strong><br />

Server“ (SLES) [4] im Angebot.<br />

Nach Aussage von Suse nutzen derzeit<br />

13 000 Unternehmen SLES. SLES stellt<br />

damit rein wirtschaftlich zwar keine<br />

Konkurrenz zum RHEL dar, spielt aber<br />

technologisch in der gleichen Liga, hat<br />

historisch bedingt zahlreiche Kunden in<br />

Deutschland und verbucht im Detail den<br />

einen oder anderen Mehrwert gegenüber<br />

38 Ausgabe 01-2013 Admin www.admin-magazin.de


<strong>Enterprise</strong>-Distributionen<br />

<strong>Enterprise</strong>-<strong>Linux</strong><br />

RHEL. Die Suse <strong>Linux</strong> GmbH spricht<br />

zudem von einer Lizenzkostenersparnis<br />

gegenüber dem direkten Konkurrenten<br />

RHEL von 50 Prozent, was sich aber anhand<br />

der Preislisten für die Subscriptions<br />

kaum nachvollziehen lässt.<br />

Die seinerzeit erste SLES-Version „Suse<br />

<strong>Linux</strong> <strong>Enterprise</strong> Server for S/​390“ wurde<br />

von einem kleinen Entwicklerteam speziell<br />

für IBM-Großrechner (S/​390) entwickelt.<br />

Erst mit der Version SLES 7 war<br />

SLES dann 2001 für die x86-Architektur<br />

verfügbar. Die derzeit aktuelle Version<br />

SLES 11 SP2 ist im Februar dieses Jahres<br />

erschienen und für die Plattformen x86/​<br />

x64), Intel Itanium, IBMs System z- und<br />

POWER-Plattformen, sowie in Amazons<br />

EC2-Cloud und als VMware-Appliance<br />

verfügbar.<br />

Wie der Name schon andeutet, ist SLES<br />

eine Server-Distribution. Suse bietet<br />

aber auch ein Desktop-Produkt, das als<br />

Nachfolger des Suse <strong>Linux</strong> Desktop beziehungsweise<br />

des Novell <strong>Linux</strong> Desktop<br />

aktuell auf den Namen Suse <strong>Linux</strong><br />

<strong>Enterprise</strong> Desktop SLED hört. Seit SLES<br />

10 verwenden SLES und SLED eine identische<br />

Code-Basis. Aktuell wird SLES von<br />

Suse in vier Varianten aktiv gepflegt. SLES<br />

9 basiert auf einen Kernel 2.6.5. SLES 10<br />

SP3 nutzt einen Kernel 2.6.16, während<br />

SLES 11 SP1 wie RHEL auf einem Kernel<br />

2.6.32 aufsetzt.<br />

Die aktuelle Version SLES 11 SP2 kann<br />

bereits mit einem aktuellen Kernel 3.0<br />

aufwarten. Im Gegensatz zu zahlreichen<br />

anderen <strong>Enterprise</strong>-<strong>Linux</strong>en basiert SLES<br />

nicht auf RHEL, sondern pflegt sowohl<br />

seinen Kernel als auch seine Paket-Basis<br />

selbst.<br />

Btrfs<br />

Btrfs gilt gemeinhin als <strong>Linux</strong>-Dateisystem der<br />

Zukunft und bietet gegenüber traditionelleren<br />

Dateisystemen interessante Möglichkeiten,<br />

wie etwa eine Unterstützung von Snapshots,<br />

Subvolumes, Kompression und RAID. SLES und<br />

Oracle <strong>Linux</strong> unterstützen Btrfs im Gegensatz<br />

zu RHEL bereits, wenn auch nicht als Standard-<br />

Dateisystem.<br />

Verwendet der SLES-Admin Btrfs für die Root-<br />

Partition, kümmert sich Yast automatisch um<br />

das Einrichten der benötigten Snapper-Infrastruktur.<br />

Die erzeugt mithilfe der in Btrfs enthaltenen<br />

Funktionen eine einstellbare Anzahl<br />

von Snapshots des kompletten Dateisystems,<br />

sodass veränderte oder gelöschte Dateien<br />

stets eine gewisse Zeit verfügbar bleiben.<br />

Auch Suse <strong>Enterprise</strong> <strong>Linux</strong> lässt sich<br />

ausschließlich über Subscriptions nutzen.<br />

Das Angebot ist allerdings etwas anders<br />

gegliedert als bei Red Hat. Der Kunde<br />

muss sich auf der SLES-Bestellseite lediglich<br />

für den CPU-Typ „x86 und x86_64“<br />

oder „Power or Itanium“ entscheiden,<br />

sowie die Anzahl physischer oder virtueller<br />

Kerne angeben. Ist das geschehen,<br />

stehen drei Subscriptions „Basic“,<br />

„Standard“ und „Priority“ zur Verfügung,<br />

wobei zum Beispiel „Basic“ nur Maintenance<br />

enthält, keinen Support. Die preiswerteste<br />

Variante „Basic-Subscription<br />

für x86-CPUs mit 2 physischen Kernen“<br />

schlägt dann mit 349 US-Dollar für den<br />

1-Jahres-Vertrag, 950 US-Dollar für den<br />

3-Jahres-Vertrag und 1400 US-Dollar für<br />

einen 5-Jahres-Vertrag zu Buche.<br />

Neuerer Kernel<br />

Die Suse-Entwickler pflegen einen eigenen<br />

Kernel für ihren <strong>Enterprise</strong>-Server,<br />

sodass die Entwicklung unabhängig vom<br />

Entwicklungsstand des RHEL-Kernels ist.<br />

So enthält die aktuelle SLES-Version SLES<br />

11 SP2 vom Februar 2012 immerhin einen<br />

deutlich aktuelleren Kernel 3.0 und<br />

zeichnet sich gegenüber RHEL dadurch<br />

aus, dass SLES bereits Btrfs-Unterstützung<br />

bietet (siehe Kasten „Btrfs“) und<br />

Funktionen zur Container-Virtualisierung<br />

auf Basis von <strong>Linux</strong> Container (LXC) zur<br />

Verfügung stellt.<br />

Suse weist in seinem LXC-Quickstart-<br />

Guide [5] allerdings auch auf die Nachteile<br />

und Gefahren (hoher Verwaltungsaufwand,<br />

größeres Sicherheitsrisiko, wegen<br />

prinzipiell schlechter gegeneinander<br />

Ferner zeigt ein Snapper-Modul für Yast die<br />

Unterschiede zur aktuellen Datei-Version und<br />

versetzt den Admin in die Lage, gegebenenfalls<br />

Änderungen zurücknehmen zu können. Sogar<br />

eingespielte Updates lassen sich rückgängig<br />

machen.<br />

Für die Boot-Partition lässt sich Btrfs allerdings<br />

nicht nutzen. Daher kann der Admin<br />

etwa Kernel-Updates oder Änderungen an der<br />

Boot-Konfiguration nicht mit Snapper managen.<br />

SLES unterstützt übrigens noch nicht die<br />

Btrfs-Funktion, mehrere Datenträger zu einem<br />

RAID zusammenfassen zu können. Inzwischen<br />

ist auch das Werkzeug fsck.btrfs im Update-<br />

Channel der Distribution verfügbar. Oracle <strong>Linux</strong><br />

bietet ebenfalls Unterstützung für Btrfs.<br />

abgeschirmter VMs) der Container-Virtualisierung<br />

hin und empfiehlt, die Technik<br />

nicht in sicherheitskritischen Bereichen<br />

einzusetzen. Bekanntlich machen Webhoster<br />

häufig von der Container-Virtualisierung<br />

Gebrauch, nutzen jedoch meist<br />

eher das ebenfalls freie OpenVZ oder<br />

dessen kommerziellen Ableger Parallels<br />

Virtouzzo.<br />

Wie bei Red Hat lassen sich die aktuellen<br />

SLES-Versionen nur noch als Xen-Gäste<br />

betreiben, da auch Suse den Xen-Hypervisor<br />

– zumindest in der 32-Bit-Version<br />

– nicht mehr mitliefert und vollständig<br />

auf KVM setzt. Die 64-Bit-Ausgabe enthält<br />

derzeit zwar noch Xen, es ist aber<br />

absehbar, wohin die Reise geht. Unabhängig<br />

davon, was vom Support-Vertrag<br />

abgedeckt ist, unterstützt die Virtualisierung<br />

mit KVM in SLES bis zu 64 Prozessorkerne<br />

im Gastsystem. SLES 11 SP2<br />

enthält erstmals auch VirtFS [6] (Plan 9<br />

folder sharing over Virtio), mit dessen<br />

Hilfe mit Qemu/​KVM betriebene Gäste<br />

auf Wunsch schneller auf Teile des Host-<br />

Dateisystems zugreifen können.<br />

Windows-Gäste<br />

Hinsichtlich der Paravirtualisierung ist<br />

noch erwähnenswert, dass der SLES-<br />

Support in der aktuellen Version auch<br />

den Einsatz von Windows-Gastsystemen<br />

unter KVM einschließt, wozu Suse allerdings<br />

rät, die von Suse angebotenen<br />

kommerziellen Virtio-Treiber des VMDP<br />

[7] (Virtual Machine Driver Pack) zu<br />

verwenden.<br />

Nachdem SLES 11 bei seinem ersten<br />

Erscheinungstermin noch einen Kernel<br />

2.6.27 enthielt, vollzog SLES 11 SP bereits<br />

im Februar diesen Jahres den Sprung vom<br />

Kernel 2.6.32 (SP1) auf einen leidlich aktuellen<br />

Kernel 3.0 im SP2, auf dem Papier<br />

immerhin ein Vorteil gegenüber dem in<br />

RHEL 6.3 noch verwendeten, allerdings<br />

stark modifizierten Kernel 2.6.32. Suse<br />

weist jedoch in den Release Notes darauf<br />

hin, dass offenbar einige Programme aus<br />

dem Tritt geraten, wenn die Versionsnummer<br />

des Kernels mit einer 3 beginnt<br />

und empfiehlt daher, betreffende Programme<br />

mithilfe des mitgelieferten Tools<br />

„name26“ als Parameter aufzurufen.<br />

Laut Suse enthält der SLES-Kernel auch<br />

die im Kernel 3.2 enthaltene Funktion<br />

„CFS Bandwidth Controller“ als Back-<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

39


<strong>Enterprise</strong>-<strong>Linux</strong><br />

<strong>Enterprise</strong>-Distributionen<br />

port, womit es möglich ist, die Prozessorzeit<br />

für einzelne Prozesse einzuschränken,<br />

auch „CPU Hard Limits“ genannt.<br />

Zudem verwendet der SLES-Kernel per<br />

Default Transparent Huge Pages (THP),<br />

womit sich die CPU-Ressourcen zur Speicherverwaltung<br />

besser ausnutzen lassen<br />

sollen. Suse hat die eigene Sicherheits-<br />

Erweiterung App Armor für SLES schon<br />

Mitte 2008 aufgegeben. Die aktuellen<br />

Support-Verträge decken daher seit der<br />

SLES-Version 11 SP1 auch den Einsatz<br />

von Red Hats Sicherheitserweiterung SE<br />

<strong>Linux</strong> ab, allerdings ist SE <strong>Linux</strong> bei Suse<br />

im Gegensatz zu Red Hat per Default deaktiviert.<br />

Außerdem bietet SLES 11 volle<br />

Unterstützung für den Tomcat Servlet<br />

Container in der Version 6<br />

SLES-Treiber<br />

Das Kernel-Update bescherte SLES 11<br />

SP2 übrigens auch eine Reihe neuer Treiber,<br />

etwa für USB 3 oder für die Version<br />

3.0 von Intels „Rapid Storage Technology“<br />

(RSTe3.0). Ferner kann OpenSSL<br />

in SLES 11 SP2 Intels AES-NI (AES New<br />

Instructions) nutzen, eine Funktion, mit<br />

der aktuelle Intel-Prozessoren Aufgaben<br />

beim Ver- oder Entschlüsseln mit AES<br />

(Advanced Encryption Standard) mit<br />

übernehmen. Die Suse-Entwickler haben<br />

zudem die Unterstützung für Intels AMT<br />

(Intel Active Management Technology)<br />

entfernt, weil die Technologie von Intel<br />

offenbar nicht mehr gepflegt wird.<br />

Wie bei RHEL gehört auch beim SLES<br />

der System Security Services Daemon<br />

(SSSD) zum Lieferumfang, der Vermittlungsdienste<br />

beim Authentifizieren über<br />

LDAP oder Kerberos übernimmt. Trotz<br />

eingebauter Btrfs-Unterstützung ist bei<br />

SLES immer noch Ext3 das Standarddateisystem<br />

(bei RHEL 6.32 ist es Ext4), SLES<br />

11 SP2 unterstützt aber auch Reiserfs 3.6<br />

und XFS. Das im Suse-Kernel enthaltene<br />

Ext4-Modul kann Ext4-Dateisysteme nur<br />

lesen und wird bei SLES lediglich zum<br />

Umwandeln von Ext-Dateisystemen nach<br />

Btrfs benötigt. Wer Ext4-Schreib-Untersützung<br />

braucht, muss bei SLES das vom<br />

SLES-Support nicht abgedeckte Kernel-<br />

Modul-Paket (KMP) „ext4-writeable“ installieren.<br />

Alle wichtigen Informationen zur aktuellen<br />

SLES-Version 11 SP2 finden sich<br />

auf der Produkt-Webseite, in den Release<br />

Notes und auf der offiziellen Dokumentationsseite.<br />

Eine 60-Tage Test-Version gibt<br />

es ebenfalls zum Herunterladen. Wie bei<br />

RHEL stehen auch bei Suse-<strong>Enterprise</strong><br />

Server sämtliche Sourcen der einzelnen<br />

Produkte unter zum Download zur Verfügung.<br />

Auch Suse verwendet das RPM-Paket-<br />

Format, als Frontends zum Installieren<br />

von Paketen aus den Online-Paketquellen<br />

des NCC (Novell Customer Service) kommen<br />

Yast oder das in C++ geschriebene<br />

Tool Zypper zum Einsatz. Zugang zu<br />

den Online-Repositorien (auch bei SLES<br />

„Channels“ genannt) erhält nur, wer sich<br />

mit dem beim Erwerb der Subskription<br />

erhaltenen Acivation Code im Novell<br />

Customer Center registriert.<br />

Bei SLES 11 gibt es lediglich einen einzigen<br />

Base-Channel „SLES11-SP1-Pool“,<br />

der sämtliche Pakete enthält und dessen<br />

Inhalt sich über den gesamt Produkt-<br />

Lebenszyklus nicht ändert. SLES bezieht<br />

sämtliche zu installierenden Pakete aus<br />

dieser Quelle, solange es kein Updates<br />

gibt. Updates verwaltet SLES 11 im<br />

Channel „SLES11-SP1-Updates“. Erst mit<br />

SLES 11 SP2 sind zwei weitere Channels<br />

„SLES11-SP2-Core“ und „SLES11-<br />

SP2-Updates“ hinzugekommen, wobei<br />

„SP2-Core“ ein Subset an Paketen aus<br />

„SP1-Pool“ enthält. Bei Suse erscheinen<br />

Service Packs alle 18 Monate. Über<br />

den regulären Support hinaus lässt sich<br />

optional ein „Long Term Service Pack<br />

Support“ erwerben, das jeweils 12, 24<br />

oder 36 Monate über das erste Service<br />

Pack hinaus gehenden Support bietet,<br />

sodass sich auch der SLES-Support wie<br />

bei RHEL im Bedarfsfall über die regulär<br />

maximal möglichen sieben Jahre auf<br />

einen Unterstützungszeitraum von zehn<br />

Jahre ausbauen lässt. Übrigens wird SLES<br />

11 stets mit der zum Zeitpunkt der Veröffentlichung<br />

aktuellen Version der <strong>Linux</strong><br />

Standard Base zertifiziert also LSB 4.0<br />

für SLES 11 SP2. Bei SLES 10 ist das<br />

3.0, bei SLES 9 2.0. Ältere Versionen des<br />

SLES sind nach älteren LSB-Standards<br />

zertifiziert.<br />

RHEL-Klone<br />

Dass es eine ganze Reihe voll kompatibler<br />

Red-Hat-Klone gibt, liegt an der GPL,<br />

die vorschreibt, dass ein unter der GPL<br />

stehendes Produkt wie RHEL im Source-<br />

Code veröffentlicht werden muss. Das<br />

gilt auch für abgeleitete Produkte, an<br />

denen der Hersteller Erweiterungen und<br />

Veränderungen vorgenommen hat. Auch<br />

die SLES-Sourcen sind wie erwähnt frei<br />

verfügbar. Bekannte freie Red-Hat-Klone<br />

sind zum Beispiel CentOS, Scientific<br />

<strong>Linux</strong> oder Yellow Dog <strong>Linux</strong>.<br />

Deren Macher müssen theoretisch nur<br />

die Source-Pakete (SRPMs) vom Red-Hat-<br />

Server laden und können das Produkt<br />

Abbildung 3: Oracle bietet ein eigenes, auf RHEL basierendes Produkt an, das es mit einem optimierten Kernel<br />

versehen hat.<br />

40 Ausgabe 01-2013 Admin www.admin-magazin.de


<strong>Enterprise</strong>-Distributionen<br />

<strong>Enterprise</strong>-<strong>Linux</strong><br />

nach dem Anpassen von Texten, Logos<br />

oder Bildern einfach neu übersetzen,<br />

was einen voll kompatiblen RHEL-Klon<br />

zur Folge hätte. Was theoretisch simpel<br />

klingt, ist in der Praxis nicht ganz so<br />

einfach, woran insbesondere der Kernel<br />

schuld ist. Damit sämtliche Einsprungadressen<br />

an den richtigen Positionen liegen,<br />

muss das Übersetzen mit exakt dem<br />

gleichen gcc-Compiler und identischen<br />

Compiler-Optionen erfolgen, wobei Red<br />

Hat seine Konkurrenten verständlicherweise<br />

nicht unterstützt.<br />

Zudem ist der Red-Hat-Kernel stark modifiziert,<br />

die von Red Hat vorgenommenen<br />

Einzel-Patches lassen sich aber nur<br />

schwer nachvollziehen. Daher dauert es<br />

nach dem Erscheinen eines neues Red Hat<br />

Releases immer einer Weile, bis auch die<br />

Klon-Herstellers nachziehen. So erschien<br />

beispielsweise das aktuelle Cent OS 6.3<br />

am 10. Juli diesen Jahres, knapp drei Wochen<br />

nach dem Original. Neben voll binär<br />

kompatiblen RHEL-Klonen gibt es auch<br />

Tabelle 1: Preise und Supportleistungen<br />

Red Hat Suse Oracle<br />

Basis-Preise für ein Jahr<br />

CPUs/​Cores 2 physische Cores 2 physische Cores unbegrenzt<br />

Support-<br />

Umfang<br />

„Self-Support“: Kein<br />

Support, nur Maintenance<br />

(Updates)<br />

„Basic“: Kein Support,<br />

nur Maintenance<br />

(Updates)<br />

„Network Support“: kein<br />

Support, nur Maintenance<br />

(Patches, Updates,<br />

Security Fixes)<br />

Preis 349 US-Dollar 349 US-Dollar 94 Euro<br />

Standard-Preise für ein Jahr<br />

CPUs/​Cores 4 physische Cores 4 physische Cores 2 Cores / unbegrenzt<br />

Support-<br />

Umfang<br />

„Standard“: Support (12/​<br />

5 via Web, Telefon) +<br />

Maintenance (Updates)<br />

„Standard“: Support (12/​<br />

5 via E-Mail, Web, Chat,<br />

Telefon) + Maintenance<br />

(Updates+Patches)<br />

„Basic Limited Support“:<br />

Support (24/​7 via Web,<br />

Telefon) + Maintenance<br />

(Patches, Updates,<br />

Security Fixes)<br />

Preis 1598 US-Dollar 1598 US-Dollar 396 Euro / 948 Euro<br />

Premium-Preise für ein Jahr<br />

CPUs/​Cores 4 physische Cores 8 physische Cores 2 Cores / unbegrenzt<br />

Support-<br />

Umfang<br />

„Premium“: Support (24/​<br />

7 via, Web, Telefon) +<br />

Maintenance (Updates)<br />

„Priority“: Support (24/​<br />

7 via E-Mail, Web, Chat,<br />

Telefon) + Maintenance<br />

(Updates+Patches)<br />

„Premier Limited<br />

Support“: Support (24/​<br />

7 via Web, Telefon) +<br />

Maintenance (Patches,<br />

Updates, Security Fixes)<br />

Preis 6498 US-Dollar 5996 US-Dollar 1104 Euro / 1812 Euro<br />

Die Admin-Bibel<br />

für <strong>Linux</strong>-Server!<br />

Dieses Buch lässt das Herz eines <strong>Linux</strong>-Administrators<br />

garantiert höher schlagen: Backup, Sicherheit, Samba,<br />

LDAP, Web-, Mail- und FTP-Server, Datenbanken,<br />

Kerberos-Authentifizierung, IPv6, NFSv4 u. v. m.<br />

übersichtlich erklärt!<br />

Mehr Bücher für Administratoren:<br />

www.GalileoComputing.de<br />

948 Seiten, 2. Auflage 2012, 49,90 €, ISBN 978-3-8362-1879-5<br />

Jetzt<br />

reinschauen!<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

41<br />

Wissen, wie’s geht.


<strong>Enterprise</strong>-<strong>Linux</strong><br />

<strong>Enterprise</strong>-Distributionen<br />

eine Reihe von Distributionen, die einen<br />

aktuellen RHEL-Kernel verwenden.<br />

Was die RHEL-Klone angeht, haben wir<br />

auf freie, zum Teil vollständig kompatible<br />

Ableger wie CentOS verzichtet, weil die<br />

mangels Support den primären Zweck einer<br />

<strong>Enterprise</strong>-Distribution nicht erfüllen,<br />

obwohl Sie insbesondere bei Internet-<br />

Providern sehr beliebt sind. Wer nur die<br />

stabile technische Basis einer <strong>Enterprise</strong>-<br />

Distribution genießen möchte, aber keinen<br />

Support braucht, ist mit CentOS gut<br />

bedient. Übrigens bietet pikanterweise<br />

ausgerechnet Microsoft Support für CentOS-Systeme<br />

an, wenn man sie in der<br />

Microsoft-Cloud Azure betreibt.<br />

E Oracle <strong>Linux</strong> (OEL)<br />

Unter den kommerziellen RHEL-Klonen<br />

ist vor allem Oracle <strong>Linux</strong> (OEL) [8]<br />

erwähnenswert, das Oracle im Jahr 2006<br />

auf den Markt brachte. OEL ist auf Paket-<br />

Ebene weitgehend kompatibel mit RHEL,<br />

verwendet aber einen eigens angepassten<br />

Kernel, den Oracle unter dem Namen<br />

„Unbreakable <strong>Enterprise</strong> Kernel R.2“ [9]<br />

anpreist. Bei Oracles Unbreakable <strong>Enterprise</strong><br />

Kernel handelt es sich um einen von<br />

Oracle modifizierten Kernel 3.0.16 für<br />

x86- und x64-Systeme, der insbesondere<br />

die Zusammenarbeit mit Oracles Datenbank-,<br />

Middleware- und Hardware-Systemen<br />

optimiert ist.<br />

Laut Oracle soll OEL <strong>Linux</strong> 75 Prozent<br />

bessere Performance bieten als RHEL<br />

und wie SLES und darüber hinaus Btrfs<br />

und <strong>Linux</strong> Containers (LXC) unterstützen.<br />

Neben seinem Ubreakable Kernel<br />

(UEK) liefert Oracle <strong>Linux</strong> (OEL) stets<br />

auch einen vollständig RHEL-kompatiblen<br />

Kernel (2.6.32) mit. Administratoren,<br />

die planen, den UEK-Kernel einzusetzen,<br />

sollten wissen, dass damit die Binärkompatibilität<br />

bei Treibern verloren gehen,<br />

nicht jedoch die Binärkompatibilität von<br />

Userland-Prozessen.<br />

Unzerbrechlich<br />

auf ganz verschiedene Aspekte. So soll<br />

etwa die Netzwerk-Performance dank<br />

im UEL-Kernel enthaltenen „Receive<br />

Steering“ höher sein. Laut Oracle haben<br />

die eigenen Entwickler außerdem die<br />

asynchrone I/​O-Leistung verbessert und<br />

Optimierung für SSDs eingebaut. Ferner<br />

unterstützt OEL das von Oracle entwickelte<br />

Protokol „Reliable Datagram Sockets<br />

(RDS)“, was ebenfalls eine höhere<br />

Performance in schnellen Netzen mit geringer<br />

Latenz ermöglichen soll, etwa für<br />

die NAS-Anbindung.<br />

Die herausragende Besonderheit beim<br />

UEK ist jedoch die Unterstützung der<br />

Ksplice-Technologie [10] (siehe Kasten<br />

Redpatch und Ksplice). Sie erlaubt es,<br />

Updates für den Kernel, sowie Treiber<br />

ohne einen Reboot einzuspielen, ein bei<br />

Servern interessantes Alleinstellungsmerkmal.<br />

Ksplice erlaubt es im Prinzip,<br />

neue Kernel-Patches unmittelbar in den<br />

Hauptspeicher zu laden, was theoretisch<br />

einen <strong>Linux</strong>-Server ermöglicht, der quasi<br />

ununterbrochen läuft, weil er nie neu<br />

gestartet werden muss.<br />

Seit Ksplice von Oracle übernommen<br />

wurde, ist die Technologie allerdings nur<br />

noch kostenpflichtig für Oracle <strong>Linux</strong><br />

verfügbar. Die sonstigen Eckdaten von<br />

Oracle <strong>Linux</strong> sind weitgehend identisch<br />

mit Red Hat <strong>Enterprise</strong> <strong>Linux</strong>. Auch die<br />

Versionierung folgt dem RHEL-Schema.<br />

Die aktuelle Version von Oracle <strong>Linux</strong><br />

trägt also ebenfalls die Versionsnummer<br />

6.3 und ist am 03. Juli diesen Jahres<br />

erschienen.<br />

Was das Subsciptions-Modell angeht,<br />

ist festzuhalten, dass Oracle <strong>Linux</strong> keines<br />

hat. Jeder kann die ISO-Images von<br />

Oracle <strong>Linux</strong> kostenlos aus der Oracle<br />

Software Delivery Cloud herunterladen.<br />

Das gilt sowohl für die ISO-Images der<br />

Installationsmedien als auch für die Sourcen,<br />

die außerdem auf zahlreichen Spiegelservers<br />

liegen, in Deutschland etwa<br />

unter [11]. Kostenpflichtig ist bei Oracle<br />

<strong>Linux</strong> lediglich der Support. Neue Nutzer<br />

müssen sich allerdings einmalig beim<br />

„Oracle E-Delivery Service“ registrieren.<br />

Die Produktstrategie von OEL basiert<br />

hauptsächlich auf dem Ubreakable Kernel,<br />

der den Hauptanteil an den genannten<br />

Vorteilen von OEL gegenüber RHEL<br />

hat. Der ebenfalls mitgelieferte Standard-<br />

RHEL-Kernel ist mit diesem identisch und<br />

vorrangig an Bord, sollte ein bestimmtet<br />

Programm unter Oracle <strong>Linux</strong> Probleme<br />

bereiten. Die einzelnen Support-Staffeln<br />

von OEL sind im Online-Shop von Oracle<br />

zu finden. Oracle ist grundsätzlich nur<br />

für X86-32-/​64-Plattfomen und Itanium<br />

verfügbar. Letztere wie Red Hat <strong>Enterprise</strong><br />

<strong>Linux</strong> allerdings nur bis einschließlich<br />

der Version 5.5.<br />

Die preiswerteste Stufe (neben dem Verzicht<br />

auf Support) ist „Oracle <strong>Linux</strong> Network<br />

Support“. Der kostet für ein Jahr<br />

93,96 Euro. Weitere Besonderheit bei<br />

Oracle-<strong>Linux</strong>: Jeder Admin kann sich die<br />

Mit „unbreakable“ will Oracle andeuten,<br />

dass man die Stabilität gegenüber dem<br />

RHEL-Kernel verbessert hat. Außerdem<br />

hat Oracle eine Reihe von Funktionen in<br />

seinen UEK eingebaut, die es in sich haben.<br />

Die versprochene bis zu 75 Prozent<br />

höhere Performance bezieht sich indes<br />

Abbildung 4: Ein weiterer Klon der Red-Hat-Distribution ist der Newcomer ROSA <strong>Linux</strong>. Im Gegensatz zu etwa<br />

CentOS hat ROSA aber kommerzielle Ambitionen.<br />

42 Ausgabe 01-2013 Admin www.admin-magazin.de


<strong>Enterprise</strong>-Distributionen<br />

<strong>Enterprise</strong>-<strong>Linux</strong><br />

lizensierte Software auf Wunsch auch<br />

in Form eines physischen Datenträgers<br />

(Media Pack) zusenden lassen. Der kostet<br />

dann 59,20 Euro.<br />

Ein Vergleich der drei bisher vorgestellten<br />

<strong>Enterprise</strong>-Systeme ist noch einmal<br />

in Tabelle 1 zu sehen. Weil jede<br />

Firma bereits eine Fülle unterschiedlicher<br />

Lizenzmodelle und Support-Pakete<br />

bietet und diese sich kaum direkt<br />

vergleichen lassen, kann die Tabelle<br />

nur eine grobe Orientierung geben.<br />

Beispielsweise berechnen Suse und Red<br />

Hat ihre Modelle auf der Basis von Rechnerkernen.<br />

Oracle bietet ein Support-<br />

Modell, das ebenfalls auf Cores basiert,<br />

erlaubt aber beim Basis-Support eine unbegrenzte<br />

Zahl.<br />

E ROSA <strong>Enterprise</strong> <strong>Linux</strong><br />

Ein weiterer relativ junger RHEL-Abkömmling<br />

ist der „ROSA <strong>Enterprise</strong> <strong>Linux</strong><br />

Server (RELS) 2012“ (Codename<br />

Helium), des russischen Distributors<br />

ROSA Labs. ROSA kooperiert bekanntlich<br />

bei seiner Desktop-Distribution „ROSA<br />

Marathon 2012“ mit Mandriva. RELS<br />

dagegen basiert auf RHEL und bietet<br />

fünf Jahre Support bei der kommerziellen<br />

Variante, bietet RELS aber auch als<br />

Community-Version an. Die Distribution<br />

ist ausschließlich für 32- und 64-Bit-x86-<br />

Systeme verfügbar.<br />

ROSA hat seiner Distribution allerdings<br />

im Vergleich zu den Paketen von RHEL<br />

6 einige Aktualisierungen, sowie eine<br />

handvoll zusätzlicher Pakete spendiert<br />

und ein Verwaltungswerkzeug entwickelt.<br />

ROSA Helium ist ebenfalls binärkompatibel<br />

zu RHEL 6. Die freie Version<br />

steht unter [12] zum Herunterladen zur<br />

Verfügung. Die Shop-Seite von Rosalab<br />

war bis Redaktionsschluss noch „Under<br />

Construction“.<br />

Alternativen<br />

Neben den erwähnten Distributionen<br />

gibt es noch eine Reihe kleinerer<br />

Anbieter, die ebenfalls die Nachfrage<br />

von Firmen bedienen, die <strong>Linux</strong> im<br />

Geschäftsumfeld einsetzen wollen.<br />

Das ist etwa der Univention Corporate<br />

Server, der schon mehrfach im <strong>ADMIN</strong><br />

vorgestellt wurde und auf Debian <strong>Linux</strong><br />

aufbaut. Auch für Debian selbst gibt es<br />

einige Anbieter im deutschen Raum, die<br />

kommerziellen Support für die ansonsten<br />

unveränderte Distribution leisten.<br />

Ubuntu-Support gibt es beim Unternehmen<br />

Canonical. Mehr dazu verrät der<br />

Artikel auf den folgenden Seiten.<br />

Fazit<br />

Der Nutzen von <strong>Enterprise</strong>-Distributionen<br />

besteht primär in einer möglichst<br />

langen Support-Dauer. So bieten sowohl<br />

RHEL, als auch SLES die Möglichkeit, ein<br />

System mit uneingeschränktem Herstellersupport<br />

bis zu zehn Jahre lang zu nutzen,<br />

ohne Pakete migrieren zu müssen.<br />

Durch die langen Support-Zeiträume haben<br />

auch große Softwarehäuser wie SAP<br />

ein Interesse daran, das Betriebssystem<br />

für ihre Anwendungen zu zertifizieren,<br />

was <strong>Enterprise</strong>-Distributionen für viele<br />

Firmen interessant macht.<br />

Eine konkrete Empfehlung für eine der<br />

Distributionen ist naturgemäß schwierig,<br />

ein paar Denkanstöße seien aber erlaubt.<br />

RHEL ist der Marktführer, und der Umsatz,<br />

den Red Hat mit RHEL-Subscriptions<br />

erwirtschaftet, sowie die Unternehmensgröße<br />

und die Anzahl installierte<br />

Kundensysteme sprechen jedenfalls für<br />

eine rosige Zukunft. Zudem sind viele<br />

Programme im <strong>Enterprise</strong>-Umfeld explizit<br />

für den RHEL-Kernel getestet , was ebenfalls<br />

für die Distribution spricht.<br />

Zudem ist RHEL nicht einmal der teuerste<br />

Vertreter. Die Subskriptions-Modelle<br />

lassen sich zwar nicht direkt vergleichen<br />

und Subskriptions-Kosten sollten auch<br />

sicher nicht das einzige Auswahlkriterium<br />

sein, auf zumindest auf dem Papier<br />

erscheint SLES kostspieliger. Dafür bietet<br />

SLES aber auch mehr: neben einem aktuelleren<br />

Kernel mit Btrfs- und LXE-Untersützung<br />

auch eine von RHEL unabhängige,<br />

erweiterte Paket-Basis. Bei Oracle<br />

<strong>Linux</strong> ist vor allem der Unbreakable-<br />

Kernel ein Novum und für viele Kunden<br />

sicher ein Argument, zumal Oracle <strong>Linux</strong><br />

das derzeit übersichtlichste und kostengünstigste<br />

Support-Modell anbietet.<br />

Dass Oracle in Teilen der <strong>Linux</strong>-Community<br />

keinen guten Ruf genießt, weil es<br />

im Umgang mit der Freien-Software-Welt<br />

nicht immer glücklich agiert hat, etwa<br />

bei der Klage gegen Google, muss bei<br />

der Kaufentscheidung nicht unbedingt<br />

eine Rolle spielen. Übrigens: Sowohl Red<br />

Hat als auch Suse und Oracle schließen<br />

in ihren <strong>Enterprise</strong>-Distributionen eine<br />

Versicherung ein, die Kunden vor potenziellen<br />

Copyright-und Patentklagen<br />

schützt. (ofr)<br />

n<br />

Infos<br />

[1] RHEL Sourcen: [http:// ftp. redhat. com/​<br />

pub/ redhat/ linux/ enterprise/]<br />

[2] RHEL alle Versionen: [https:// www. redhat.​<br />

com/ wapps/ store/ allProducts. html]<br />

[3] RHEL Virtualisierungsfunktionen: [https://​<br />

access. redhat. com/ knowledge/ docs/​<br />

de‐DE/ Red_Hat_<strong>Enterprise</strong>_<strong>Linux</strong>/ 6/ html/​<br />

Release_Notes/ virtualization. html]<br />

[4] Suse <strong>Linux</strong> <strong>Enterprise</strong> Server: [https://​<br />

www. suse. com/ de‐de/ products/ server/]<br />

[5] SLES-LXC-Quickstart-Guide:<br />

[http:// www. suse. com/ documentation/​<br />

sles11/ singlehtml/ lxc_quickstart/ lxc_<br />

quickstart. html]<br />

[6] VirtFS: [http:// wiki. qemu. org/​<br />

Documentation/ 9psetup]<br />

[7] Suse Virtual Machine Driver Pack:[http://​<br />

www. suse. com/ products/ vmdriverpack/]<br />

[8] Oracle <strong>Linux</strong>: [http:// www. oracle. com/ de/​<br />

technologies/ linux/ overview/ index. html]<br />

[9] Oracle Unbreakable Kernel (UEK): [http://​<br />

www. oracle. com/ us/ technologies/ linux/ ue<br />

k‐r2‐features‐and‐benefits‐1555063. pdf]<br />

[10] Ksplice: [http:// www. ksplice. com]<br />

[11] Sourcen und ISOs OEL 6.3:[http:// mirror.​<br />

netcologne. de/ oracle‐linux/ OL6/ U3/]<br />

[12] ROSA <strong>Enterprise</strong> <strong>Linux</strong> Server (RELS)<br />

2012: [http:// mirror. rosalab. ru/​<br />

rosa‐server2012/ iso/]<br />

[13] Novell-Support für RHEL:[https://​<br />

www. suse. com/ de‐de/ solutions/​<br />

enterprise‐linux‐servers/ redhat‐to‐suseli<br />

nuxenterprise‐migration. html]<br />

[14] Redpatch-Repository: [https:// oss. oracle.​<br />

com/ projects/ RedPatch]<br />

[15] Redpatch Git-Depot: [https:// oss. oracle.​<br />

com/ git/ ? p=redpatch. git;a=shortlog]<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, <strong>Linux</strong>, 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 <strong>Linux</strong>, Open Source und IT-Sicherheit.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

43


<strong>Enterprise</strong>-<strong>Linux</strong><br />

Ubuntu <strong>Enterprise</strong><br />

© Parinya Niranatlumpong, 123RF<br />

Distributionen zumindest aus Kostengesichtspunkten<br />

um je eine Server- und<br />

Desktop-Variante von Ubuntu ergänzen<br />

lässt (siehe Tabelle 1).<br />

Übrigens verspricht Canonical mit dem<br />

Advantage-Programm seinen Kunden<br />

unter dem Namen „Ubuntu Assurance“<br />

auch eine Art Versicherung gegen Patent-Klagen<br />

im Zusammenhang mit dem<br />

Einsatz von Ubuntu im Unternehmen.<br />

Canonical sichert seinem Advantage-<br />

Kunden im Falle eines Falles sowohl die<br />

Verteidigung als auch die Übernahme<br />

der entstandenen Kosten zu. Im Zusammenhang<br />

mit dem Advantage-Programm<br />

ist auch Canonicals Landscape [3] zur<br />

zentralen Verwaltung von Ubuntu-Installationen<br />

erwähnenswert (siehe Kasten<br />

„Landscape“).<br />

Ubuntu Business Desktop Remix 12.04 LTS<br />

Neu gemischt<br />

Mit seiner erstmals mit der Version 11.04 veröffentlichten Variante<br />

„Ubuntu Business Desktop Remix“ möchte Canonical nicht nur Windows<br />

vom Unternehmens-Desktops verdrängen, sondern vor allem auch eine<br />

kostengünstige Alternative zu den Unternehmens-Desktops von Red Hat<br />

und Suse bieten. Thomas Drilling<br />

Zwei Wochen nach der Veröffentlichung<br />

von Ubuntu 12.04 LTS (Long Termin Support)<br />

im Mai 2012 hat Canonical die erste<br />

Aktualisierung seiner „Business Desktop<br />

Remix“ [1] genannten Unternehmens-<br />

Variante herausgegeben. Erstmalig hatte<br />

man sie in der Version 11.10 mit dem Ziel<br />

veröffentlicht, den <strong>Enterprise</strong>-Desktop-<br />

Produkten von Red Hat und Suse eine<br />

Ubuntu-Variante gegenüberzustellen. Mit<br />

der Version 12.04 erlangte auch der Business<br />

Desktop Remix den LTS-Standard<br />

und ist daher aufgrund der von Canonical<br />

für einen Zeitraum von fünf Jahren<br />

garantierten Verfügbarkeit von Updates<br />

möglicherweise eine Alternative zu den<br />

kommerziellen Unternehmens-Desktops<br />

von Red Hat (RHEL für Desktops) und<br />

Suse (SLED – Suse <strong>Linux</strong> <strong>Enterprise</strong><br />

Desktop).<br />

Beim Studium der Papierform wird aber<br />

schnell klar, dass ein Vergleich mit den<br />

genannten <strong>Enterprise</strong>-Desktops hinkt.<br />

Zum einen ist der Ubuntu Business<br />

Desktop Remix im Unterschied zu RHEL<br />

und SLED nach einmaliger Registrierung<br />

kostenlos verfügbar. Zum zweiten unterscheidet<br />

sich die Distribution faktisch<br />

kaum von einer regulären Ubuntu-Distribution;<br />

was die Installation angeht bis<br />

auf den Startbildschirm überhaupt nicht.<br />

Die <strong>Enterprise</strong>-Versionen von Suse und<br />

Red Hat dagegen weichen dagegen erheblich<br />

von Open Suse und Fedora ab.<br />

Vorteil Ubuntu<br />

Im Rahmen des Advantage-Programms<br />

[2] bietet Canonical allerdings auch ein<br />

kostenpflichtiges Support-Programm,<br />

wahlweise für Server-, Desktop- und<br />

Cloud-Dienste beziehungsweise Produkte,<br />

sodass sich auch unsere Übersicht<br />

der aktuell verfügbaren <strong>Enterprise</strong>-<br />

Durchleuchtet<br />

Der Business Desktop Remix steht nach<br />

einer obligatorischen Registrierung zum<br />

kostenlosen Download in 32- und 64-Bit-<br />

Varianten für x86-Systeme zur Verfügung.<br />

Aus technischer Sicht unterscheidet sich<br />

Ubuntu Business Desktop 12.04 nicht<br />

von der Standard-Version, im Gegensatz<br />

zu den Desktop-Produkten von Red Hat<br />

und Suse.<br />

Das Ziel des Ubuntu Desktop Remix besteht<br />

laut Canonical [4] darin, Administratoren<br />

in Unternehmen ein Fundament<br />

zur Verfügung zu stellen, das diese<br />

nach Belieben für ihre Zwecke adaptieren<br />

können. Daher hat Canonical beim<br />

Business-Desktop Remix in erster Linie<br />

Spiele und Anwendungen, die sich mit<br />

sozialen Netzwerken verbinden, sowie<br />

Filesharing-Tools aus der Distribution<br />

Landscape<br />

Neben kommerziellen Support bietet Canonical<br />

mit Landscape auch professionelle Unterstützung<br />

beim „Ausrollen“ der Distribution<br />

an. Landscape ist eine Management-Software,<br />

mit deren Hilfe der Administrator Server-,<br />

Desktop- und Cloud-Dienste verwalten kann,<br />

vergleichbar mit dem Satellite Server von Red<br />

Hat (siehe Artikel in diesem Schwerpunkt).<br />

Mit Landscape ist es beispielsweise möglich,<br />

Sicherheits-Updates auf mehren hundert Maschinen<br />

gleichzeitig einzuspielen. Canonical<br />

bietet Landscape optional zu seinem Advantage-Support-Dienst<br />

an. Darüber hinaus bietet<br />

Landscape dem Admin exklusiven Zugriff auf<br />

Canonicals Knowledge-Datenbank.<br />

46 Ausgabe 01-2013 Admin www.admin-magazin.de


Ubuntu <strong>Enterprise</strong><br />

<strong>Enterprise</strong>-<strong>Linux</strong><br />

Abbildung 1: Remmina ist ein vielseitiger, leistungsfähiger und erweiterbarer<br />

Remotedesktop-Client.<br />

entfernt, ebenso wie eine Reihe weiterer<br />

Programme und Werkzeuge. Das sind im<br />

Prinzip vor allem Programme, die sich an<br />

Heimanwender richten.<br />

Dafür hat Canonical seiner Business-Variante<br />

im Gegenzug eine Reihe von speziell<br />

im Unternehmen nützlichen Anwendungen<br />

spendiert, wie das Adobe Flash<br />

Plugin, OpenJDK und VMware View oder<br />

Unterstützung für MS Windows RDP 7.1<br />

in Form des „Remmina Remote Desktop<br />

Client“ eingebaut (Abbildung 1). Der<br />

universelle Remote-Desktop-Client unterstützt<br />

über Plugins neben RDP auch die<br />

Protokolle für VNC, NX, Telepathy oder<br />

XDMCP.<br />

Alles davon lässt<br />

sich naturgemäß<br />

auch bei einer regulären<br />

Ubuntu-<br />

Varainte nachinstallieren,<br />

allerdings<br />

erspart der<br />

Ubuntu Desktop<br />

Remix dem Administrator,<br />

dank fehlender<br />

Spiele und<br />

Heim-Anwendungen<br />

viel Arbeit.<br />

Darüber hinaus<br />

wird sich der eine<br />

oder andere Admin<br />

über nützliche<br />

Kleinigkeiten,<br />

wie einen Libre-Office-Import-Filter für<br />

Microsoft Visio freuen.<br />

Fazit<br />

Ubuntu Business Desktop klingt auf dem<br />

ersten Blick nach einer interessanten und<br />

preiswerten Alternative zu den <strong>Enterprise</strong>-Versionen<br />

von Suse und Red Hat.<br />

Updates gibt es bei Canonical allerdings<br />

ohnehin kostenlos, bei den LTS-Versionen<br />

sogar fünf Jahre lang. Support kann man<br />

bei Bedarf dazu kaufen und ist in der<br />

Standard-Variante mit 105 US-Dollar im<br />

Jahr auf der sicheren Seite. Das gilt aber<br />

für alle Ubuntu-Versionen.<br />

Tabelle 1: Preise und Supportleistungen<br />

Distribution Ubuntu-Server Ubuntu-Desktop<br />

Basis-Preise für ein Jahr<br />

Anzahl 1 Server –<br />

Support-Umfang „Essential“: Landscape, Ubuntu –<br />

Assurance, Wissensdatenbank,<br />

Installation<br />

Preis 320 US-Dollar –<br />

Standard-Preise für ein Jahr<br />

Anzahl 1 Server 1 Desktop<br />

Support-Umfang „Standard“: Landscape, Ubuntu<br />

Assurance, Wissensdatenbank,<br />

Installation, Windows-Integration,<br />

„Standard“: Landscape, Ubuntu<br />

Assurance, Wissensdatenbank,<br />

Installation<br />

Virtualisierung<br />

Preis 700 US-Dollar 105 US-Dollar<br />

Premium-Preise für ein Jahr<br />

Anzahl 1 Server 1 Desktop<br />

Support-Umfang „Advanced“: Landscape, Ubuntu<br />

Assurance, Wissensdatenbank,<br />

Installation, Windows-Integration,<br />

Virtualisierung, Clustering, angepasstes<br />

„Advanced“: Landscape, Ubuntu<br />

Assurance, Wissensdatenbank,<br />

I nstallation, Desktop-Virtualisierung,<br />

Entwickler-Tools<br />

Paket-Repository<br />

Preis 1300 US-Dollar 165 US-Dollar<br />

Die von Canonical zum Business-Desktop-Remix<br />

formulierte Philosophie [4],<br />

eine Distribution für den Unternehmenseinsatz<br />

zu liefern, ist fundiert. Vorteile<br />

für den Anwender sind hierbei die einfache<br />

Benutzbarkeit, freie Software, zertifizierte<br />

proprietäre Anwendungen und<br />

Viren-Freiheit. Alle diese Vorteile könnte<br />

eine maßgeschneiderte Ubuntu-Variante<br />

liefern, aber so maßgeschneidert ist Business<br />

Remix nicht.<br />

Das soll keine Abwertung einer an sich<br />

gelungenen Distribution sein, sondern<br />

lediglich die Feststellung, dass eine gewöhnliche<br />

LTS-Version von Ubuntu denwohl<br />

vor allem als Marketing-Instrument<br />

konzipiert, das „Business“-Kunden die<br />

bei Heimandwendern populäre Ubuntu-<br />

Distribution nahe bringen soll. Das aber<br />

hat Canonical in Anbetracht seines fairen<br />

Support-Agebots eigentlich aber gar nicht<br />

nötig. Andererseits böte das Thema einer<br />

für den Unternehmens-Einsatz optimierten<br />

Desktop-Variante von Ubuntu durchaus<br />

noch Potenzial.<br />

So oder so stellt derzeit auch ein reguläres<br />

LTS-Ubuntu im Zusammenhang mit<br />

dem Advantage-Support-Paket und der<br />

Verwaltungs-Software Landscape bereits<br />

eine stimmige Lösung für den Einsatz<br />

in kleinen Unternehmen dar, nicht nur,<br />

wenn auch auf Server-Seite ein Ubuntu-<br />

System seinen Dienst verrichtet. (ofr) n<br />

Infos<br />

[1] Ubuntu Business Desktop Remix: [http://​<br />

www. ubuntu. com/ business/ desktop/ remix]<br />

[2] Advantage-Programm: [http:// www. ubuntu.​<br />

com/ business/ advantage]<br />

[3] Ubuntu-Landscape: [http:// www. ubuntu.​<br />

com/ business/ landscape]<br />

[4] Ziele Business Desktop Remix: [http://​<br />

blog. canonical. com/ 2012/ 05/ 10/ the‐new‐b<br />

usiness‐desktop‐remix‐is‐out‐now]<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, <strong>Linux</strong>, 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 <strong>Linux</strong>, Open Source und IT-Sicherheit.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

47


<strong>Enterprise</strong>-<strong>Linux</strong><br />

Satellite Server<br />

© Dirk Ercken, 123RF<br />

<strong>Enterprise</strong> Software Management mit dem Red Hat Satellite Server<br />

Paketversand<br />

Red Hats Satellite Server, ein unternehmenstaugliches Patch-Management-System, hält das gesamte Netzwerk<br />

auf dem Laufenden. James Dade<br />

Unsere Organisation folgt momentan einem<br />

systematischen, händischen Ansatz<br />

beim Patch Management. Das schließt<br />

die Identifikation der Notwendigkeit von<br />

Patches, ihre Beschaffung, das Testen<br />

und die Lösung von Problemen im Zusammenhang<br />

mit Patches sowie das Einspielen<br />

der Patches ein. Bei uns erhalten<br />

die Administratoren Hinweise auf Patches<br />

in der Regel per E-Mail entweder von den<br />

Herstellern oder aufgrund von Recherchen.<br />

Das Information Assurance Team<br />

(IA) veröffentlicht außerdem Sicherheitswarnungen<br />

in der Regel etwa eine Woche<br />

nach den Herstellermeldungen.<br />

Nachdem ein Admin einen Hinweis auf<br />

einen nötigen Patch erhalten hat, lädt<br />

er den Patch von den Webseiten eines<br />

Herstellers herunter und speichert ihn<br />

in einem eigenen Repository. Sobald<br />

der Patch dort angelangt ist, testet ihn<br />

der Admin in einer speziellen Test- oder<br />

Entwicklungsumgebung. Tauchen dabei<br />

Probleme auf, kontaktiert der Admin den<br />

Herausgeber des Patchs und löst sie.<br />

Nach Abschluss der Tests ist der Patch für<br />

das Einspielen auf den Produktivsystemen<br />

im nächsten Wartungsfenster bereit.<br />

Danach wandert der Patch in ein anderes<br />

Repository, wo er archiviert wird.<br />

Red Hats Methode der Automatisierung<br />

solcher Software-Updates ist der Satellite<br />

Server. Seine Rolle entspricht ungefähr<br />

der von Microsofts Systems Management<br />

Server (SMS). Die Einführung eines Satellite<br />

Server muss nicht notwendigerweise<br />

den ganzen Patch-Management-Prozess<br />

umkrempeln, aber ein solcher Server automatisiert<br />

fortan das Abrufen, Speichern<br />

und Ausbringen der Patches. Außerdem<br />

pflegt der Satellite Server eine Sammlung<br />

aller Software Packages auf allen von ihm<br />

verwalteten Systemen. Der Satellite Server<br />

besorgt sich automatisch zu jedem<br />

erforderlichen Patch auch die Dokumentation,<br />

aus der hervorgeht, warum er eingespielt<br />

wurde.<br />

Forschungsansatz<br />

Als primäre Tools für die vorliegende Recherche<br />

dienten die verschiedenen Handbücher<br />

zum Red Hat Satellite Server 5.4.<br />

Red Hats Solutions Architect war ebenfalls<br />

eine hilfreiche Quelle. Drei Monate<br />

lang testeten wir den Red Hat Satellite<br />

Server, der auf einem HP Proliant DL380<br />

48 Ausgabe 01-2013 Admin www.admin-magazin.de


Satellite Server<br />

<strong>Enterprise</strong>-<strong>Linux</strong><br />

G5 installiert war, auf dem RHEL 6.1 mit<br />

einer Basisausstattung an Paketen lief.<br />

Als Test-Clients dienten ein Proliant<br />

DL380 G5 und ein HP Proliant WS 460<br />

G6, der in einem HP Blade-System C7000<br />

steckte. Abbildung 1 zeigt die Testumgebung.<br />

Patchen mit dem Satellite<br />

Server<br />

Red Hat generiert Patches nach Bedarf,<br />

manchmal vier- oder fünfmal die Woche<br />

für bestimmte Programme. Diese Patches<br />

haben oft mehrfache Abhängigkeiten.<br />

Wollte man die Patches manuell einspielen,<br />

könnte es leicht Stunden wenn<br />

nicht Tage dauern, die Abhängigkeiten<br />

aufzulösen und die nötigen Files zu den<br />

Rechnern zu transferieren, die gepatchet<br />

werden sollen.<br />

Theoretisch kann man ein Red-Hat-System<br />

mit nichts als Yum aktuell halten<br />

(siehe Kasten „Patching mit Yum“),<br />

aber in der Praxis führt der Zeitbededarf,<br />

und das Risiko, dass einem ein wichtiger<br />

Patch durch die Lappen geht, dazu, dass<br />

man ein Tool braucht, das die Patches<br />

ordnet, verwaltet, zeitlich plant und einspielt.<br />

Ein solches Werkzeug, das Patches (Security<br />

Fixes wie Funktionserweiterungen)<br />

halbautomatisch implementiert, ist der<br />

Red hat Satellite Server. Die von ihm<br />

verwalteten Server müssen dabei keine<br />

Abbildung 1: Die Testumgebung für die Versuche mit dem Red Hat Satellite Server.<br />

Abbildung 2: Single-Server-Konfiguration: Ein einziger Satellite Server bedient das gesamte interne Netz.<br />

8,90€ *<br />

124 Seiten <strong>Linux</strong><br />

+ DVD<br />

Die aktuelle Ausgabe von <strong>Linux</strong>User Spezial<br />

dringt in die Tiefen des <strong>Linux</strong>-Systems ein<br />

und zeigt, wie Sie Ihren Rechner auf der<br />

Kommandozeile administrieren.<br />

www.admin-magazin.de<br />

Jetzt bestellen<br />

unter: www.linuxuser.de/spezial<br />

Tel.: 089-9934110, Admin Fax: 089-99341199, E-Mail: Ausgabe order@linuxuser.de<br />

01-2013<br />

49


<strong>Enterprise</strong>-<strong>Linux</strong><br />

Satellite Server<br />

Patching mit Yum<br />

Der Yellowdog Updater Modified (Yum) ist ein<br />

freies Kommandozeilentool für den Red Hat<br />

Package Manager, den Red Hat, Suse, Fedora<br />

und einige andere Distributionen nutzen.<br />

Um Yum benutzen zu können, muss der Server<br />

mit dem Internet verbunden sein. Yum unterstützt<br />

eine Anzahl verschiedener Package<br />

Repositories. Wer seine Pakete aus den Repositories<br />

im Red Hat Network bezieht, der muss<br />

das zu patchende System bei einem RHN-Server<br />

registrieren.<br />

Der YUM Package-Management-Prozess öffnet<br />

die folgenden Sicherheitslöcher im Netzwerk:<br />

n Jeder Red Hat Server braucht eine Internetverbindung.<br />

n Die Serverkonfiguration ist für Red Hat einsehbar<br />

und damit im Falle eines Sicherheitslecks<br />

bei Red Hat auch für die Welt.<br />

Die Herangehensweise mit Yum ist akzeptabel,<br />

wenn der fragliche Client ohnehin mit dem Internet<br />

verbunden ist, wie das etwa bei einem<br />

Webserver wäre, der ohnehin offene Ports hat,<br />

und für den Durchlässe in der Firewall sowieso<br />

existieren müssen.<br />

Für alle Server mit Red Hat <strong>Enterprise</strong> <strong>Linux</strong><br />

(RHEL) empfiehlt der Autor jedoch, auf Yum zu<br />

verzichten, weil so zu viele Angriffsmöglichkeiten<br />

eröffnet werden, die unter Umständen das<br />

ganze Netzwerk unsicher machen können. Jeder<br />

Rechner mit RHEL könnte zum Ziel einer Attacke<br />

werden, wenn seine Software auf einem Server<br />

außerhalb des eigenen Kontrollbereichs inventarisiert<br />

wird.<br />

Red Hat-Maschinen sein, Satellite Server<br />

unterstützen auch Solaris- und Microsoft-<br />

Systeme. Der Satellite Server hat eine Internetverbindung<br />

und ist – als einziger<br />

Server – bei dem Server des Red Hat<br />

Network registriert, der die Patches bereitstellt.<br />

Der Admin legt eine Zeit in der<br />

Nacht fest, zu der der Satellite Server im<br />

RHN nach Updates sucht.<br />

Inventar in Datenbank<br />

Der Satellite Server unterhält ein Inventar<br />

der Software auf jedem Client, das<br />

in einer Oracle Datenbank gespeichert<br />

ist, die sich entweder auf dem Satellite<br />

Server oder einem extra Datenbankserver<br />

befinden kann. Sobald alle Patches heruntergeladen<br />

wurden, berechnet der Satellite<br />

Server, wer welchen Patch braucht.<br />

Danach erstellt er für jeden Client einen<br />

Zeitplan. Die eigentliche Installation<br />

des Patches plant dann der Admin des<br />

Clients. Damit bietet der Satellite Server<br />

eine Lösung für Anwender, die eine absolute<br />

Kontrolle benötigen, über die auf<br />

ihren Servern eingespielten Sicherheitspackages<br />

und alle Informationen darüber.<br />

Er erlaubt Red-Hat-Kunden die größte<br />

Flexibilität und zugleich Sicherheit beim<br />

Updaten ihrer Server.<br />

Der Satellite Server braucht wie bereits<br />

erwähnt eine Datenbank, die auf einem<br />

separaten Server oder auf dem Satellite<br />

Server selbst laufen kann. Beide Optionen<br />

sind weitgehend identisch, aber<br />

nicht ganz. Unterschiede ergeben sich<br />

insbesondere bei den Hardwareanforderungen,<br />

bei den Installationsschritten<br />

und bei der Wartung.<br />

Für die Einbindung des Satellite Servers<br />

in ein Netzwerk bieten sich drei verschiedenen<br />

Topologien an: einzelner Satellite<br />

Server, mehrere Satellite Server, horizontal<br />

abgestuft und vertikal abgestufter<br />

Satellite-Proxy.<br />

Die Single-Server-Topologie mit einem<br />

einzigen Satellite Server für das gesamte<br />

Netzwerk zeigt Abbildung 2. Diese Konstellation<br />

ist ideal für Laborumgebungen,<br />

eignet sich aber nicht besonders gut,<br />

wenn das Netz in Subnetze aufgeteilt<br />

ist, wo einzelne Abteilungen ihre eigenen<br />

Server warten. Die Single-Server-<br />

Konfiguration ist vergleichsweise billig<br />

und leicht zu administrieren, ist aber auf<br />

eine nicht-hierarchische Netzwerkstruktur<br />

ausgelegt und skaliert in größeren<br />

Umgebungen schlecht.<br />

Bei der Topologie mit mehreren Satellite<br />

Servern und horizontaler Gliederung,<br />

sind verschiedene Satellite Server mit<br />

Abbildung 3: Mehrere Satellite Server mit horizontaler Gliederung der Topologie: Eine Anzahl Server bedient<br />

jeweils ein Subnetz.<br />

Abbildung 4: Topologie mit einem zentralen Satellite Server und Proxies bei vertikaler Gliederung.<br />

50 Ausgabe 01-2013 Admin www.admin-magazin.de


Satellite-Server-Systemanforderungen<br />

n 8 GByte RAM (2 GByte reichen prinzipiell, mit verbundenen Proxies ist der Server dann aber<br />

sehr langsam).<br />

n 30 GByte Plattenplatz pro Software-Kanal; eine separate Partition /var/​satellite<br />

n 12 GByte Plattenplatz für die eingebettete Datenbank; eine separate Partition /rhnsat<br />

n Intel Multicore-Prozessor mit mindestens 2,4 GHz<br />

n 5 GByte Plattenplatz für RHEL 6.1<br />

n 10 GByte Plattenplatz für den Cache auf einer separaten Partition /var/​cache/​rhn<br />

dem Internet verbunden (Abbildung<br />

3). Jeder Server wird mit allen anderen<br />

synchronisiert. Bei dieser Variante hat<br />

jedes Subnetz oder Projekt seinen eigenen<br />

Satellite Server. Zusätzlich ist ein<br />

Failover möglich, falls einer der Server<br />

ausfällt. Allerdings erhöht diese Variante<br />

mit vielen Servern die Kosten erheblich,<br />

denn jeder Server braucht eine eigene<br />

Lizenz, und das gesamte System ist auch<br />

wesentlich aufwendiger zu konfigurieren<br />

und zu warten.<br />

Mit Proxy<br />

Die Version Satellite Proxy mit vertikaler<br />

Gliederung zeigt Abbildung 4. Einem<br />

einzelnen Satellite Server steht hier eine<br />

Anzahl von Satellite Proxies in den verschiedenen<br />

Subnetzen gegenüber. Der<br />

Proxy-Server fungiert als Pakete-Cache,<br />

der die erforderliche Bandbreite der<br />

Verbindung zum RHN-Server reduziert.<br />

Dabei hat nur der Satellite Server eine<br />

direkte Internetverbindung. Die Proxy-<br />

Server reden nur mit den Clients, die sie<br />

managen, und mit dem Satellite Server.<br />

Zwar liegen die Pakete nun auf den<br />

Proxy-Servern, aber die Profile und User-<br />

Informationen der Clients speichert weiterhin<br />

der Satellite Server. Der Proxy-Server<br />

agiert als Vermittler zwischen Client<br />

und Satellite Server. Sobald Red Hat einen<br />

Patch freigibt, lädt ihn der Satellite<br />

Server herunter und prüft, für welches<br />

Clientsystem er infrage kommt. Dann<br />

verschiebt er den Patch auf den jeweils<br />

zuständigen Proxy-Server [3].<br />

Auf den Proxies werden nur Paket-Dateien<br />

gespeichert. Jede Transaktion wird weiter<br />

durch den Satellite Server authentisiert.<br />

Der Red Hat Update Agent überprüft die<br />

GPG-Signatur jedes Pakets, das er vom<br />

lokalen RHN Proxy Server oder dem Satellite<br />

Server erhält. Die Signaturen werden<br />

bei der Installation erzeugt und jedes<br />

System hat zur Identifikation, eine Kopie<br />

der Signaturen von Satellite und Proxy-<br />

Server. Der Proxy Server kann auch so<br />

konfiguriert werden, dass er neben den<br />

offiziellen Red-Hat-Paketen zusätzlich<br />

solche aus privaten Kanälen verwendet.<br />

Abbildung 5: Realistisches Beispiel einer Proxy-Server-Konfiguration mit vertikaler Gliederung.<br />

www.admin-magazin.de<br />

Ausgabe 01-2013<br />

51


<strong>Enterprise</strong>-<strong>Linux</strong><br />

Satellite Server<br />

Beispielsweise könnte eine Firma ihre<br />

eigene Software entwickeln, paketieren<br />

und mit ihrer eigenen GPG-Signatur signieren.<br />

Die lokalen RHN-Proxies könnten<br />

dann alle individuellen Systeme mit der<br />

neuesten Version dieser Software versorgen.<br />

(Tatsächlich wäre ein vergleichbares<br />

Szenario auch mit den anderen beiden<br />

Topologien realisierbar.)<br />

Empfehlenswert<br />

Abbildung 6: Das Webinterface des Satellite Servers mit der Übersichtsseite.<br />

Die vertikal gegliederte Proxy-Topologie<br />

ist sicher und skalierbar. Sie schont<br />

gleichzeitig die Bandbreite, weil die benötigten<br />

Pakete nur einmal aus dem Internet<br />

heruntergeladen werden müssen,<br />

und sie vereinfacht die Konfiguration für<br />

spezielle Architekturen und Betriebssystemversionen.<br />

Die Proxy-Lizenzen sind<br />

zudem billiger als komplette Satellite-<br />

Server-Lizenzen, was Kosten spart. Auf<br />

der anderen Seite fallen im Vergleich mit<br />

der Single-Server-Version natürlich mehr<br />

Lizenzkosten an, und das Personal muss<br />

trainiert werden, diese Variante zu beherrschen.<br />

Abbildung 5 illustriert, wie<br />

eine Firma die Proxy-Server-Topologie<br />

einsetzen könnte, um Updates und Softwareverteilung<br />

über mehrere Standorte<br />

hinweg zu vereinfachen.<br />

Testresultate<br />

Abbildung 7: Die Systems-Seite zeigt eine Zusammenfassung zu den verwalteten Systemen.<br />

Abbildung 8: Die Errata Page zeigt verfügbare Patches.<br />

Im Zuge der Evaluierung des Satellite Servers<br />

haben wir den Eindruck gewonnen,<br />

dass die Dokumentation von Red Hat<br />

einen guten Überblick verschafft, aber<br />

nicht zu wörtlich genommen werden<br />

sollte. Die Handbücher enthalten eine<br />

Reihe von Fehlern und Auslassungen.<br />

Außerdem hat Red Hat die Namen aller<br />

Kommandos von der vorhergehenden zur<br />

aktuellen Version geändert, aber die Dokumentation<br />

nicht angepasst.<br />

Der Kasten „Satellite Server Systemanforderungen“<br />

enthält eine Zusammenfassung<br />

der Anforderungen. Außerdem<br />

sollte man bedenken, dass für den Satellite<br />

Server eine Reihe von Ports geöffnet<br />

und die Firewallregeln dafür entsprechend<br />

modifiziert werden müssen. Im<br />

Einzelnen geht es dabei um die Ports 80,<br />

443 und 4545 eingehend und ausgehend,<br />

sowie 5222 nur eingehend. Im Fall der<br />

Konfiguration mit Proxy Servern muss<br />

außerdem der Port 5369 offen sein.<br />

52 Ausgabe 01-2013 Admin www.admin-magazin.de


Satellite Server<br />

<strong>Enterprise</strong>-<strong>Linux</strong><br />

Tabelle 1: Kostenvoranschläge (in US-Dollar)<br />

Produkt Anzahl Händler A Händler B Händler C<br />

Satellite Server Subscription 1 4423,19 8100,00 8012,09<br />

Proxy Server Subscription 2 4500,00 3850,00 4006,04<br />

Management/​Provisioning<br />

Subscription<br />

Weiter wird eine Quelle für die Zeitsynchronisation<br />

via NTP benötigt, und der<br />

zugehörige Port 123 muss konfiguriert<br />

werden. Der qualifizierte Domänname<br />

des Servers (FQDN) muss im DNS-System<br />

registriert sein.<br />

Red Hat setzt voraus, dass der Satellit<br />

Server komplett installiert ist, bevor irgendwelche<br />

spezifischen Sicherheitseinstellungen<br />

konfiguriert werden. Per<br />

Abbildung 9: Die Zeitsteuerung für das Einspielen der Patches.<br />

2 339,78 144,00 307,66<br />

Summe 9262,97 12094,00 12325,79<br />

Default sind die folgenden Services abgeschaltet:<br />

Telnet, FTP und TFTP. Zum<br />

Einloggen verwendet man SSH.<br />

Für den Satellite Server 5.4.1 muss sich SE<br />

<strong>Linux</strong> im sogenannten Permissive Mode<br />

befinden im Enforcing Mode kommt es<br />

zu Fehlern (das soll im nächsten Release<br />

behoben sein). Für diesen Test lief der Satellite<br />

Server virtualisiert unter VMware<br />

oder KVM mit eingebetteter Datenbank.<br />

Der Satellite Server wird über ein Webinterface<br />

administriert (Abbildung 6). Sein<br />

Installationsskript richtet dafür einen<br />

Apache Webserver 2.2 ein. Abbildung<br />

6 zeigt die Übersichtsseite, die Aufgaben<br />

und kritische Systeme zusammenfasst.<br />

Um zu der Systems-Seite zu wechseln,<br />

auf der der Administrator die meiste Zeit<br />

verbringen wird, klickt man auf den Reiter<br />

„Systems“ (Abbildung 7).<br />

Administration via Web<br />

Die Legende an der linken Seite ist wichtig<br />

für einen Überblick über den Systemstatus.<br />

Die Icons stehen für spezifische<br />

Zustände. Im Beispiel kann man erkennen,<br />

dass der Server SAS-Testing einige<br />

kritische Patches benötigt, die eingetaktet<br />

werden müssen. Für detaillierte Information<br />

klickt man auf den Servernamen<br />

oder wählt einen der Parameter unter<br />

»Overview«. Wählt man zum Beispiel die<br />

Nummer 4 unter »Errata« für den Server<br />

SAS-Testing, so landet man auf der<br />

Errata-Seite (Abbildung 8). Hier wählt<br />

man »Select All« und dann »Apply Errata«<br />

aus. Auf der nächsten Seite (Abbildung<br />

9) entscheidet man sich dann für einen<br />

Zeitpunkt, zu dem der Patch eingespielt<br />

werden soll, und klickt »Confirm«.<br />

Abbildung 10 zeigt die beiden jetzt zeitlich<br />

eingeplanten Patches und zwei mit<br />

ihnen verbundene Bugfixes. Wieder kann<br />

man entweder jeden Patch einzeln oder<br />

»Select all« und dann »Apply Errata« anklicken.<br />

E<br />

C13<br />

Abbildung 10: Eine Zusammenfassung für das eingetaktete Update.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

53


<strong>Enterprise</strong>-<strong>Linux</strong><br />

Satellite Server<br />

Abbildung 11: Die Details-Page zeigt viele wichtige Einzelheiten.<br />

Eine andere nützliche Zusammenstellung<br />

von Informationen erscheint, wenn man<br />

auf »System Details« klickt (Abbildung<br />

11). Diese Seite zeigt den Typ der verfügbaren<br />

Updates (Kritisch, nicht-kritisch),<br />

die IP-Adresse des Servers, die<br />

Kernelversion und mehr. Klickt man auf<br />

»Packages« (jeder Text in blauer Farbe<br />

ist ein Link), erscheinen die verfügbaren<br />

Updates von Paketen, wie man in<br />

Abbildung 12 sieht. Die Liste enthält<br />

alle installierten Pakete, und man kann<br />

auf einen Paketnamen klicken, um eine<br />

Beschreibung des Paketinhalts zu bekommen.<br />

Ein Klick auf den Paketnamen (oder<br />

auf »Select All«) und danach auf »Install<br />

Selected Packages« startet schließlich den<br />

Installationsprozess.<br />

Lizenzierung<br />

Red Hats Lizenzierung gleicht eher einem<br />

Abo-Modell: Man muss die Subskriptions-Gebühr<br />

jedes Jahr bezahlen,<br />

solange der Server läuft. Wir haben Kostenvoranschläge<br />

von drei autorisierten<br />

Red-Hat-Händlern eingeholt. Tabelle 1<br />

zeigt die Ergebnisse für eine Lizenz des<br />

Red Hat Satellite Server plus Lizenzen<br />

für zwei Proxy Server und Management/​<br />

Provision-Module.<br />

Fazit<br />

Der Satellite Server bietet ein automatisiertes<br />

Verfahren, um Patches auf Server<br />

einzuspielen. Es kann diesen ansonsten<br />

langwierigen und zeitintensiven Prozess<br />

enorm vereinfachen. Nichtsdestotrotz<br />

müssen auch weiterhin alle Patches vorher<br />

getestet werden, doch ist das für den<br />

Admin nun viel einfacher.<br />

Während unserer Tests des Satellite Servers<br />

stießen wir auf ein IDC-Whitepaper<br />

mit dem Titel „<strong>Linux</strong> Management mit<br />

Red Hat Network Satellite: Measuring<br />

Business Impact and ROI“ von Tim Grieser,<br />

Randy Perry und Eric Hatcher. Die<br />

Autoren kommen zu dem Schluss, „…<br />

auf der Grundlage von Interviews mit IT<br />

Managern aus 10 Unternehmen, die Red<br />

Hat Network Satellite einsetzen, ergibt<br />

sich im Durchschnitt ein ROI von 338<br />

Prozent, es wird also das Dreifache der<br />

Investitionskosten erwirtschaftet. Und<br />

das binnen weniger als 5 Monaten.“<br />

Wir empfehlen die Topologie mit Proxy-<br />

Servern und vertikaler Gliederung. Diese<br />

Lösung garantiert eine hohe Granularität<br />

beim Einspielen der Patches. Auch die<br />

Implementierung des Satellite Servers in<br />

einer Virtualisierungsumgebung ist empfehlenswert<br />

(infrage kommen KVM oder<br />

VMware). Das spart deutlich Kosten und<br />

wird von Red Hat auch vollständig unterstützt.<br />

(jcb))<br />

n<br />

Abbildung 12: Die Seite »Packages« zeigt, welche Pakete veraltet sind.<br />

Infos<br />

[1] Red Hat Network Satellite documentation:<br />

[https:// access. redhat. com/ knowledge/​<br />

docs/ Red_Hat_Network_Satellite/]<br />

[2] „The Red Hat <strong>Enterprise</strong> <strong>Linux</strong><br />

Advantage“-Whitepaper: [http:// www.​<br />

redhat. com/ f/ pdf/ rhel/ RHEL6_Advantage_<br />

WP. pdf]<br />

[3] Scott Carpenter:„Patch Management for<br />

the Real World A Managers Guide“ [http://​<br />

www. whitepapersdb. com/ whitepaper/​<br />

9083/ patch‐management‐for‐the‐real‐worl<br />

d‐a‐managers‐guide]<br />

[4] <strong>Linux</strong> Management with Red „Hat Network<br />

Satellite: Measuring Business Impact<br />

and ROI“: [www. redhat. com/ f/ pdf/ rhn/​<br />

IDC_RHN_approach. pdf]<br />

54 Ausgabe 01-2013 Admin www.admin-magazin.de


Know-how<br />

Windows Server 2012<br />

© Jaroslav Machacek, 123RF<br />

Die 12 besten Tricks für Windows Server 2012<br />

Schatztruhe<br />

Anwender von Windows Server 2012 profitieren von zahlreichen Neuerungen,<br />

vor allem in den Bereichen Virtualisierung, Hochverfügbarkeit<br />

und Storage. Wir zeigen Ihnen einige Tricks, die den Umgang mit dem<br />

neuen System deutlich erleichtern. Thomas Joos<br />

Während sich die Anwender noch um<br />

die Usability von Windows 8 streiten,<br />

müssen sich Administratoren Gedanken<br />

um die Nutzung von Windows Server<br />

2012 machen, der entweder auch gekachelt<br />

daherkommt oder auf Wunsch<br />

auch ganz ohne GUI. Darunter hat die<br />

neue Windows-Server-Variante Schätze<br />

zu bieten, die die folgenden Tricks an die<br />

Oberfläche heben.<br />

E Server-Manager<br />

effizient nutzen<br />

Bereits mit Windows Server 2008 R2<br />

konnten Sie Server teilweise mit dem<br />

Server-Manager im Netzwerk verwalten.<br />

Das war allerdings nur sehr rudimentär<br />

möglich. So kann der Server-Manager in<br />

Windows Server 2008 R2 zum Beispiel<br />

keine Rollen über das Netzwerk installieren,<br />

und auch die Verwaltung der Serverrollen<br />

ist nicht sehr effizient gelöst. Hier<br />

ist Windows Server 2012 deutlich besser.<br />

In Windows Server 2012 ist es zum Beispiel<br />

möglich, Serverrollen und Features<br />

über das Netzwerk auf anderen Servern<br />

zu installieren (Abbildung 1).<br />

Den Assistenten zur Installation von<br />

Serverrollen und Features hat Microsoft<br />

zu einem einzelnen Assistenten zusammengefasst.<br />

So lassen sich diese einfacher<br />

und schneller installieren, da nur<br />

ein Installationsvorgang notwendig ist.<br />

Installierte Serverrollen und die entsprechenden<br />

Server zeigt der Server-Manager<br />

automatisch gruppiert an. Verwaltungswerkzeuge<br />

listet der Server-Manager direkt<br />

über das Tools-Menü an. Sie können<br />

das Toolsmenü sogar bearbeiten. Dazu<br />

finden Sie in der Systemsteuerung den<br />

Bereich »System und Sicherheit\Verwaltung«.<br />

Alle Verknüpfungen in diesem<br />

Bereich zeigt der Server-Manager im<br />

Menü »Tools« an. Sie können an dieser<br />

Stelle weitere Verknüpfungen hinzufügen,<br />

Verknüpfungen entfernen und sogar<br />

eine Ordnerstruktur erstellen. Um im<br />

Server-Manager in Windows Server 2012<br />

weitere Server anzubinden, klicken Sie<br />

auf »Verwalten« und dann auf »Server<br />

hinzufügen«. Im Fenster können Sie anschließend<br />

nach Servern suchen, um sie<br />

im lokalen Server-Manager zu verwalten.<br />

Auf diesem Weg erstellen Sie auch<br />

eigene Servergruppen, die Sie im Server-<br />

Manager zusammenfassen. Von diesen<br />

Gruppen können Sie dann Ereignismeldungen<br />

anzeigen lassen. Sie können nur<br />

Serverrollen und ‐Features installieren,<br />

wenn Sie den entsprechenden Server vorher<br />

angebunden haben.<br />

E NIC-Teaming<br />

Windows Server 2012 kann ohne Zusatzwerkzeug<br />

bis zu 32 kompatible Netzwerkkarten<br />

zu Teams zusammenfassen.<br />

Sie können während der Einrichtung auswählen,<br />

ob Sie einzelne Adapter im Team<br />

als Standby-Adapter nutzen wollen, also<br />

zur Ausfallsicherheit, oder ob Sie die Geschwindigkeit<br />

der Adapter zusammenfassen<br />

wollen, um die Leistung zu erhöhen.<br />

Sie können nur Ethernet-Verbindungen<br />

zu Teams zusammenfassen. Bluetooth<br />

56 Ausgabe 01-2013 Admin www.admin-magazin.de


kinderleicht<br />

+ ausgereift<br />

IPTAM ® PBX VoiP Telefonanlage<br />

mit bester ISDN-Integration<br />

Abbildung 1: Mit dem Server-Manager in Windows Server 2012 verwalten Sie alle Rollen und Features in einer<br />

übersichtlichen Oberfläche.<br />

oder WLAN gehören nicht zu den unterstützten<br />

Funktionen. Außerdem müssen<br />

alle Netzwerkkarten mit der gleichen Geschwindigkeit<br />

angeschlossen sein.<br />

Um ein NIC-Team zu erstellen, starten<br />

Sie den Server-Manager, und klicken Sie<br />

auf »Lokaler Server«. Standardmäßig ist<br />

das Teaming deaktiviert. Um die Funktion<br />

zu aktivieren, klicken Sie auf den<br />

Link bei »Deaktiviert«. Anschließend öffnet<br />

sich ein neues Fenster. Hier sehen<br />

Sie im unteren rechten Bereich, welche<br />

Netzwerkadapter im Server kompatibel<br />

zum NIC-Teaming sind. Um ein Team<br />

zu erstellen, klicken Sie mit der rechten<br />

Maustaste in das Fenster bei »Adapter<br />

und Schnittstellen« und wählen »Zum<br />

neuen Team hinzufügen«. Über den Link<br />

»Weitere Eigenschaften« können Sie zusätzliche<br />

Einstellungen vornehmen, um<br />

das NIC-Team zu konfigurieren. Windows<br />

Server 2012 verwendet als MAC-Adresse<br />

des Teams die MAC-Adresse der primären<br />

Netzwerkkarte. Auch Core-Server unterstützen<br />

NIC-Teams. Hier können Sie die<br />

Einrichtung entweder über den Server-<br />

Manager von einem anderen Server aus<br />

durchführen, oder Sie verwenden die<br />

Powershell.<br />

In der Powershell können Sie sich mit<br />

dem Befehl »Get‐NetAdapter« die einzelnen<br />

möglichen Team-Adapter anzeigen<br />

lassen, und mit »Enable‐NetAdapter«<br />

beziehungsweise »Disable‐NetAdapter«<br />

Kinderleichte Administration<br />

n per CD auf einem Server<br />

Ihrer Wahl<br />

n oder als Fertiggerät<br />

(Appliance)<br />

n Vorbildliche Dokumentation:<br />

www.iptam.com/wiki/<br />

Ausgereifte Funktionalität<br />

n Bequeme Bedienung<br />

über Web-Oberfläche<br />

n Einspielen von Patches,<br />

Lizenzerweiterung, ISDN-<br />

Konfiguration mit 3 Klicks<br />

n Und natürlich alle gängigen<br />

Funktionen: Voicemail, Instant<br />

Messaging Server, Fax-Server,<br />

Konferenzräume, Warteschlangen,<br />

Sprachmenüs, Klingelgruppen,<br />

Durchsagefunktion, Konfiguration<br />

der Telefone über die Anlage ....<br />

selber<br />

testen!<br />

Die IPTAM PBX 5<br />

kostenlos<br />

downloaden:<br />

www.iptam.com<br />

Demosystem<br />

online testen:<br />

www.iptam.com/demo<br />

Abbildung 2: Anzeigen des Status des NIC-Teamings.<br />

www.admin-magazin.de<br />

www.iptam.com<br />

Ausgabe 01-2013<br />

57


Know-how<br />

Windows Server 2012<br />

einzelne Adapter aktivieren oder deaktivieren.<br />

Alle Commandlets für die Verwaltung von<br />

NIC-Teams lassen Sie sich mit »Get‐Command<br />

‐Module NetLbfo« anzeigen. Um<br />

ein neues Team zu erstellen, verwenden<br />

Sie das Commandlet »New‐NetLbfoTeam<br />

Teamname Netzwerkkarten«. Die Netzwerkkarten<br />

werden hierbei durch Kommas<br />

getrennt aufgeführt. Windows Server<br />

2012 entfernt die IP-Bindung von den<br />

physischen Netzwerkkarten und verbindet<br />

sie mit dem neuen virtuellen Adapter,<br />

den der Assistent für das Team erstellt.<br />

Sie sehen den Status des Teams, wenn<br />

Sie im Server-Manager in der Kategorie<br />

»Lokaler Server« bei »NIC‐Teamvorgang«<br />

auf den Link »Aktiviert« klicken (Abbildung<br />

2).<br />

Werden das Team und die verbundenen<br />

Karten als »Aktiv« gekennzeichnet, passen<br />

Sie die Netzwerkeinstellungen des<br />

Teams an. Dazu rufen Sie die Adaptereinstellungen<br />

auf, indem Sie »ncpa.cpl«<br />

auf der Startseite eingeben. Hier sehen<br />

Sie das neue Team. Sie können auf Hyper-V-Hosts<br />

mehrere virtuelle Switches<br />

auf Basis der verschiedenen physischen<br />

Netzwerkkarten erstellen und innerhalb<br />

von virtuellen Servern dann NIC-Teams<br />

erstellen. Diese verwenden die einzelnen<br />

virtuellen Switches des Hyper-V-Hosts als<br />

Grundlage.<br />

E VDC – Klonen und<br />

Snapshots<br />

Mit Windows Server 2012 hat Microsoft<br />

den Betrieb von virtuellen Domänencontrollern<br />

optimiert. Im Gegensatz zu<br />

Vorgängerversionen stellen Snapshots<br />

und geklonte Domänencontroller keine<br />

Gefahr mehr für das komplette Active Directory<br />

dar. Damit Sie Domänencontroller<br />

optimal virtualisieren und auch klonen<br />

können, müssen mindestens folgende<br />

Bedingungen eingehalten werden.<br />

Der PDC-Emulator muss sich auf einem<br />

Domänencontroller mit Windows Server<br />

2012 befinden. Den PDC-Emulator<br />

können Sie nicht klonen, er muss während<br />

des Klonvorgangs immer<br />

verfügbar sein. Die Domäne<br />

muss bereits über mindestens<br />

zwei Domänencontroller mit<br />

Windows Server 2012 verfügen,<br />

da Sie nur den zweiten<br />

klonen können. Der erste stellt den PDC-<br />

Emulator zur Verfügung. Die Virtualisierungslösung<br />

muss diese neue Technik<br />

unterstützen (VM-Generation ID). Aktuell<br />

ist das nur Hyper-V in Windows<br />

Server 2012.<br />

Ob die von Ihnen eingesetzte Virtualisierungslösung<br />

die neue VM-Generation<br />

ID unterstützt, erkennen Sie im Geräte-<br />

Manager eines virtualisierten Servers<br />

mit Windows Server 2012. Bei den Systemgeräten<br />

muss der Treiber »Microsoft<br />

Hyper‐V‐Generierungszähler (Microsoft<br />

Hyper‐V Generation Counter)« mit der<br />

Treiberdatei »vmgencounter.sys« existieren.<br />

Bevor Sie einen virtuellen Domänencontroller<br />

klonen, müssen Sie auf dem Server<br />

das Cmdlet »Get‐ADDCCloningExcludedApplicationList«<br />

ausführen. Das Cmdlet<br />

überprüft, ob es auf dem virtuellen Server<br />

Anwendungen gibt, die das Klonen<br />

nicht unterstützen. Entdeckt das Cmdlet<br />

nicht-kompatible Dienste, zum Beispiel<br />

den DHCP-Dienst oder einen installierten<br />

Virenscanner, erhalten Sie entsprechende<br />

Informationen. Die Konfiguration für das<br />

Klonen nehmen Sie in der Datei »DC-<br />

CloneConfig.xml« vor. Die Beispieldatei<br />

»SampleDCCloneConfig.xml« finden Sie<br />

im Ordner »C:\Windows\System32«.<br />

Nachdem Sie die Datei »DCCloneConfig.<br />

xml« erstellt haben, kopieren Sie diese<br />

in den Ordner mit der Active Directory-<br />

Datenbank, also normalerweise in den<br />

Ordner »C:\Windows\NTDS«.<br />

Nicht für alle<br />

Abbildung 3: Windows Server 2012 klont Active Directory auf dem neuen<br />

virtuellen Domänencontroller.<br />

Sie können nur Quelldomänencontroller<br />

klonen, die Mitglied der Gruppe »Klonbare<br />

Domänencontroller« in Active Directory<br />

sind. Sie können außerdem nur<br />

Domänencontroller klonen, die nicht eingeschaltet<br />

sind. Das heißt, Sie müssen<br />

den entsprechenden Domänencontroller<br />

herunterfahren, bevor Sie ihn klonen<br />

können. Bevor Sie den neuen Domänencontroller<br />

in Active Directory aufnehmen<br />

können, müssen Sie die durch den Klonvorgang<br />

angepasste Datei »DCCloneConfig.xml«<br />

vom Quellcomputer in den Ordner<br />

mit der Active Directory-Datenbank,<br />

also normalerweise in den Ordner »C:\<br />

Windows\NTDS« vom Quell- auf den<br />

Zielcomputer kopieren. Windows hat den<br />

Namen der Datei angepasst, um zu zeigen,<br />

dass ein Klonvorgang stattgefunden<br />

hat. Ändern Sie den Namen wieder um<br />

zu »DCCloneConfig.xml«.<br />

Anschließend erstellen Sie entweder einen<br />

neuen virtuellen Computer und verwenden<br />

die kopierte Festplatte, oder Sie<br />

importieren den exportierten Server mit<br />

dem Hyper-V-Manager oder der Power-<br />

Shell. Beim Importieren wählen Sie die<br />

Option »Virtuellen Computer kopieren«<br />

aus. Starten Sie den Domänencontroller,<br />

liest er die Datei »DCCloneConfig.xml«<br />

ein und bereitet sich selbst für das Klonen<br />

vor. Während des Windows-Starts<br />

erhalten Sie auch eine entsprechende<br />

Meldung (Abbildung 3).<br />

E Namen, Ansicht und<br />

IE anpassen<br />

Viele Aufgaben, die zur Grundkonfiguration<br />

des Servers gehören, nehmen Sie<br />

direkt im Server-Manager vor. Dazu klicken<br />

Sie auf »Lokaler Server«. Im mittleren<br />

Bereich sehen Sie die verschiedenen<br />

Aufgaben, deren Assistenten Sie über<br />

einen Klick auf den entsprechenden Link<br />

erreichen.<br />

Über das Menü Ansicht deaktivieren Sie<br />

die »Kachel für Willkommen«, und über<br />

»Verwalten/Server‐Manager‐Eigenschaften«<br />

aktivieren Sie die Option »Server‐Manager<br />

beim Anmelden nicht automatisch<br />

starten«. Für die Installation von Treibern<br />

benötigen Sie normalerweise den Internet<br />

Explorer. Bei Windows Server 2012<br />

ist automatisch die verstärkte Sicherheit<br />

des Internet Explorers aktiv, was beim<br />

Herunterladen von Treibern durchaus<br />

stören kann.<br />

Sie können die erweiterte Sicherheit des<br />

Internet Explorers im Server-Manager deaktivieren:<br />

Öffnen Sie den Server-Manager.<br />

Klicken Sie auf der linken Seite auf<br />

»Lokaler Server«. Klicken Sie im rechten<br />

Bereich im Abschnitt Eigenschaften<br />

neben »Verstärkte<br />

Sicherheitskonfiguration für<br />

IE« auf den Link »Ein«. Deaktivieren<br />

Sie im daraufhin<br />

geöffneten Dialogfeld die Op-<br />

58 Ausgabe 01-2013 Admin www.admin-magazin.de


Windows Server 2012<br />

Know-how<br />

tion für alle Benutzer oder nur für Administratoren.<br />

E Windows Server 2012<br />

mit Win 8 verwalten<br />

Um Windows Server 2012 mit Windows<br />

8 zu verwalten, bietet Microsoft die Remoteserver-Verwaltungstools<br />

(Remote<br />

Server Administration Tools, RSAT) zum<br />

Download an. Mit den Tools installieren<br />

Sie auf einer Arbeitsstation mit Windows<br />

8 alle Verwaltungsprogramme die zur<br />

Verwaltung von Windows Server 2012<br />

notwendig sind.<br />

Neben den verschiedenen Verwaltungstools<br />

der Serverrollen integriert der Installations-Assistent<br />

von RSAT auch den<br />

neuen Server-Manager von Windows<br />

Server 2012 in Windows 8. Über den<br />

Server-Manager binden Sie die verschiedenen<br />

Server im Netzwerk an, auf denen<br />

Windows Server 2012 installiert ist. Sie<br />

können mit dem Server-Manager auf diesem<br />

Weg auch über Windows 8-Arbeitsstationen<br />

aus Serverrollen auf Servern<br />

installieren.<br />

Die Remoteserver-Verwaltungstools für<br />

Windows 8 umfassen Server-Manager,<br />

Verwaltungstools der Serverrollen und<br />

Features von Windows Server 2012, PowerShell<br />

XE „PowerShell“ ‐Cmdlets und<br />

Befehlszeilentools für die Verwaltung von<br />

Rollen und Features. Die Remoteserver-<br />

Verwaltungstools laden Sie als .msu-Datei<br />

direkt im Downloadcenter [1] herunter.<br />

Um im Server-Manager in Windows Server<br />

2012 und Windows 8 weitere Server<br />

anzubinden, klicken Sie auf »Verwalten«<br />

und dann auf »Server hinzufügen«. Im<br />

Fenster können Sie anschließend nach<br />

Servern suchen, um sie im lokalen Server-Manager<br />

zu verwalten.<br />

E Core-Server, Minimal<br />

Server Interface, GUI<br />

stallation des Core-Server-Modus auswählen.<br />

Nach der Installation lassen sich<br />

in Windows Server 2012 aber problemlos<br />

die Verwaltungstools und die grafische<br />

Oberfläche installieren.<br />

Neu in Windows Server 2012, neben der<br />

Möglichkeit, die grafischen Verwaltungstools<br />

auf Core-Servern zu installieren,<br />

ist das »Server Minimal Interface«, auf<br />

deutschen Servern als »minimale Serverschnittstelle«<br />

bezeichnet. Dabei handelt<br />

es sich um eine Installation der wichtigsten<br />

Verwaltungsprogramme für die<br />

grafische Oberfläche, aber keine Zusatzanwendungen<br />

wie Media Player, Explorer<br />

und Internet Explorer. Auch der Desktop<br />

fehlt bei dieser Option.<br />

Viele Programme aus der Systemsteuerung<br />

und die meisten Verwaltungsprogramme<br />

für Serverrollen und Features<br />

funktionieren. Bei der minimalen Serverschnittstelle<br />

(Minimal Server Interface)<br />

handelt es sich um eine Zwischenstufe<br />

zwischen Core-Server und Server mit<br />

grafischer Oberfläche, nur ohne Explorer<br />

und Internet Explorer 10.<br />

Die grafische Oberfläche deinstallieren<br />

Sie entweder im Server-Manager oder der<br />

PowerShell. Im Server-Manager verwenden<br />

Sie »Verwalten/Rollen und Features<br />

entfernen«. Auf der Seite »Features entfernen«<br />

stehen im Bereich »Benutzeroberflächen<br />

und Infrastruktur« drei Optionen<br />

zur Verfügung: »Tools und Infrastruktur<br />

für die grafische Verwaltung« – hierbei<br />

handelt es sich um die Verwaltungskonsolen<br />

der wichtigsten grafischen Werkzeuge<br />

auf dem Server. Ist nur dieses Feature<br />

installiert und nicht die Features »Grafische<br />

Shell für Server und Desktopdarstellung«,<br />

handelt es sich um einen Server<br />

mit dem Minimal Server Interface. »Desktopdarstellung«<br />

– dieses Feature ist vor<br />

allem für Remotedesktop-Server gedacht.<br />

Es wandelt die Oberfläche des Servers<br />

in eine Windows-8-Oberfläche um und<br />

bietet Tools wie Media Player, Fotoverwaltung,<br />

Themes und mehr. »Grafische<br />

Shell für Server« – dieses Feature deinstallieren<br />

Sie zusammen mit der Desktopdarstellung,<br />

um das Server Minimal<br />

Interface zu erhalten. Sie entfernen dabei<br />

auch den Explorer (ehemals Windows<br />

Explorer) und den Internet Explorer vom<br />

Server. Sie können dieses Feature auch<br />

in der Powershell mit dem Befehl »Uninstall‐WindowsFeature<br />

Server‐Gui‐Shell«<br />

entfernen.<br />

Installieren Sie einen Core-Server, fehlen<br />

auf dem Server auch die Binärdateien,<br />

um die grafische Oberfläche zu installieren.<br />

Sie müssen zur Installation entweder<br />

eine Internetverbindung für den<br />

Server konfigurieren, damit dieser die<br />

benötigten Daten von Windows-Update<br />

herunterladen kann, oder Sie müssen den<br />

Ordner mit den Windows Server 2012-Installationsdateien<br />

angeben.<br />

Die Installation können Sie auf Core-<br />

Servern mit der PowerShell und dem<br />

Befehl »Install‐WindowsFeature Server‐Gui‐Mgmt‐Infra«<br />

durchführen, oder<br />

Sie verbinden sich mit dem Server über<br />

den Server-Manager von einem Server im<br />

Netzwerk aus. Alternativ verwenden Sie<br />

die folgenden Befehle in der Powershell:<br />

Jede Installation von Windows Server<br />

2012 besteht als Grundlage aus einem<br />

Core-Server. Dieser bietet alle wesentlichen<br />

Verwaltungsprogramme der Eingabeaufforderung<br />

und der. Es fehlen alle<br />

grafischen Verwaltungstools, Sie müssen<br />

den Server über andere Server oder mit<br />

den Remoteserver-Verwaltungstools von<br />

Windows 8 aus verwalten. Während der<br />

Installation können Sie auch nur die In-<br />

Abbildung 4: Virtuelle Server können Sie kostenlos sichern.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

59


Know-how<br />

Windows Server 2012<br />

Import‐Module Dism<br />

Enable‐WindowsOptionalFeature ‐online U<br />

‐Featurename ServerCore‐FullServer,Server‐U<br />

Gui‐Shell,Server‐Gui‐Mgmt<br />

Alternativ kann der Administrator mit<br />

dem folgenden Befehl die grafische Oberfläche<br />

installieren:<br />

Dism /online /enable‐feature /featurename:U<br />

ServerCore‐FullServer /featurename:Server‐U<br />

Gui‐Shell /featurename:Server‐Gui‐Mgmt<br />

E Virtuelle Server<br />

kostenlos sichern<br />

Der bekannte Hersteller für die Sicherung<br />

von virtuellen Servern, Veeam, bietet<br />

ein kostenloses Tool, mit dem sich<br />

die Datensicherung virtueller Exchange-<br />

Server vollkommen kostenlos auslesen<br />

und einzelne Objekte wiederherstellen<br />

lassen (Single-Item-Recovery). Auch herkömmliche<br />

Server können Sie auf diesem<br />

Weg sichern und wiederherstellen. Basis<br />

des Tools ist das Produkt Veeam Backup<br />

Free Edition [2]. Mit der kostenlosen<br />

Sicherungssoftware lassen sich virtuelle<br />

Server ohne Downtime sichern, nicht nur<br />

virtuelle Exchange-Server.<br />

Die Software unterstützt VMware und Microsoft<br />

Hyper-V. Mit Veeam Backup Free<br />

Edition können Sie sogar System Center<br />

Virtual Machine Manager 2008 R2/​2012<br />

anbinden und auch Hyper-V-Cluster integrieren.<br />

Binden Sie einen SCVMM-Server<br />

an Veeam Backup an, kann die Software<br />

alle angebundenen Server automatisch<br />

einlesen und die darauf gespeicherten<br />

virtuellen Server sichern (Abbildung 4).<br />

Die Software sichert nicht die einzelnen<br />

Virtualisierungshosts, sondern ist auf die<br />

Sicherung der virtuellen Server spezialisiert.<br />

E Replikation in der<br />

Powershell testen<br />

Den Status der Active-Directory-Replikation<br />

erfahren Sie auch in der Powershell.<br />

Dazu verwenden Sie das Commandlet<br />

»Get‐ADReplicationUpToDatenessVector-<br />

Table Servername«. Eine Liste aller Server<br />

liefert:<br />

Um sich die einzelnen Standorte und die<br />

Domänencontroller der Standorte anzuzeigen,<br />

verwenden Sie die beiden Commandlets:<br />

Get‐ADReplicationSite XE "Get‐U<br />

ADReplicationSite" ‐Filter * | ft NameU<br />

Get‐ADDomainController ‐Filter * | ft U<br />

Hostname,Site.<br />

Sie können die Replikationsverbindungen<br />

auch in der Powershell anzeigen. Dazu<br />

verwenden Sie den Befehl »get‐adreplicationconnection«.<br />

Sie können sich in<br />

der PowerShell auch ausführliche Informationen<br />

zu den einzelnen Standorten<br />

anzeigen lassen. Dazu verwenden Sie<br />

den Befehl »Get‐ADReplicationSite ‐Filter<br />

*«. Weitere interessante Commandlets in<br />

diesem Bereich sind:<br />

Get‐ADReplicationPartnerMetadata XE U<br />

"Get‐ADReplicationPartnerMetadata"<br />

Get‐ADReplicationFailure XE U<br />

"Get‐ADReplicationFailure"<br />

Get‐ADReplicationQueueOperation<br />

E Hyper-V-Replikation<br />

nutzen<br />

Mit Hyper-V-Replica lassen sich in Windows<br />

Server 2012 und Hyper-V Server<br />

2012 virtuelle Festplatten und komplette<br />

virtuelle Server asynchron zwischen verschiedenen<br />

Hyper-V-Hosts im Netzwerk<br />

replizieren und synchronisieren. Ein Cluster<br />

ist nicht notwendig. Die Replikationen<br />

lassen sich manuell, automatisiert oder<br />

nach einem Zeitplan ausführen. Fällt ein<br />

Hyper-V-Host aus, lassen sich die replizierten<br />

Server online schalten.<br />

Damit ein Hyper-V-Host für Replikate<br />

zur Verfügung steht, müssen Sie auf<br />

dem entsprechenden Server in den »Hyper‐V‐Einstellungen«<br />

im Bereich »Replikationskonfiguration«<br />

diese Funktion<br />

zunächst aktivieren und konfigurieren.<br />

Sie legen hier den Datenverkehr und die<br />

Server fest, von denen der aktuelle Server<br />

Replikate entgegennimmt. Daher müssen<br />

Sie diese Funktion zunächst auf allen<br />

Hyper-V-Hosts aktivieren. Setzen Sie Hyper-V<br />

Server 2012 ein, können Sie diesen<br />

Server auch über den Hyper-V-Manager<br />

von einem anderen Server aus verwalten<br />

und auf diesem Weg die gleichen Einstellungen<br />

vornehmen. Hier gibt es keinerlei<br />

Unterschiede zu den kostenpflichtigen<br />

Editionen von Windows Server 2012.<br />

Achten Sie darauf, noch die Regel in der<br />

erweiterten Konfiguration der Firewall<br />

(»wf.msc«) für »Hyper‐V‐Replica« zu aktivieren.<br />

Diese hat die Bezeichnung »Hyper‐V‐Replikat<br />

HTTP‐Listener«. Es gibt<br />

auch einen Listener für HTTPS.<br />

Um einen virtuellen Server auf einen anderen<br />

Hyper-V-Host mit Windows Server<br />

2012 oder Hyper-V Server 2012 zu replizieren,<br />

klicken Sie nach der Konfiguration<br />

der Hosts mit der rechten Maustaste<br />

auf den entsprechenden virtuellen Server<br />

und wählen Replikation aktivieren. Es<br />

Get‐ADReplicationUpToDatenessVectorTableU<br />

* | sort Partner,Server | ft<br />

Partner,Server, UsnFilter<br />

Abbildung 5: Mit Hyper-V-Replica replizieren Sie virtuelle Server zwischen Hosts.<br />

60 Ausgabe 01-2013 Admin www.admin-magazin.de


Windows Server 2012<br />

Know-how<br />

Abbildung 6: Konfigurieren der Failoverbeziehung in Windows<br />

Server 2012 stellt DHCP ausfallsicher zur Verfügung.<br />

startet ein Assistent, in dem Sie festlegen,<br />

wie Sie den ausgewählten Server vom<br />

Quellserver auf den Zielserver replizieren.<br />

Der virtuelle Server auf dem Quellserver<br />

bleibt dabei erhalten.<br />

Im Assistenten legen Sie außerdem zunächst<br />

den Zielserver und anschließend<br />

den Authentifizierungstyp fest. Welche<br />

Authentifizierung der Zielserver akzeptiert,<br />

bestimmen Sie wiederum auf dem<br />

Zielserver in den Hyper-V-Einstellungen<br />

über »Replikationskonfiguration«. Außerdem<br />

steuern Sie im Assistenten, welche<br />

virtuellen Festplatten Sie replizieren wollen.<br />

Damit die Replikation funktioniert,<br />

müssen Sie auf dem Zielserver in den<br />

erweiterten Einstellungen der Windows-<br />

Firewall (»wf.msc«) die Regeln für den<br />

HTTP-Listener oder den HTTPS-Listener<br />

aktivieren, je nachdem, welchen Datenverkehr<br />

Sie verwenden wollen. Die<br />

Regeln sind bereits angelegt, aber noch<br />

nicht aktiviert.<br />

E Failover mit Hyper-V-<br />

Replica<br />

Der Vorteil von Hyper-V-Replica ist, dass<br />

Sie bei Ausfall eines Servers ein Failover<br />

durchführen können. Dazu klicken Sie<br />

den entsprechenden virtuellen Server,<br />

den Sie repliziert haben, im Hyper-V-<br />

Manager an und wählen im Kontextmenü<br />

»Replikation | Failover« (Abbildung 5).<br />

Sie können auch ein geplantes Failover<br />

starten. In diesem Fall starten Sie das<br />

Failover vom Server aus, auf dem Sie die<br />

Quell-VM betreiben. Anschließend wählen<br />

Sie aus, zu welchem Wiederherstellungspunkt<br />

Sie den Failover durchführen<br />

wollen und können den Failover starten.<br />

Das funktioniert aber nur, wenn die<br />

Quell-VM auch ausgeschaltet ist. Während<br />

des Failovers startet der Assistent<br />

den replizierten Server, der<br />

im Netzwerk dann zur Verfügung<br />

steht, genau wie die<br />

Quell-VM.<br />

Der Vorteil bei einem geplanten<br />

Failover – vom Quell-<br />

Hyper-V-Host aus – ist, dass<br />

Hyper-V noch nicht replizierte<br />

Änderungen an den Zielserver<br />

senden kann, sodass dieser<br />

über den neuesten Stand verfügt.<br />

Haben Sie ein geplantes<br />

Failover durchgeführt, ist der<br />

alte Quell-VM später die neue Ziel-VM,<br />

und die alte Ziel-VM die neue Quell-VM<br />

für die Replikation. Das heißt, Sie können<br />

diesen Vorgang auch wieder umkehren.<br />

E DHCP für Failover<br />

konfigurieren<br />

DHCP-Failover in Windows Server 2012<br />

ermöglicht die Bereitstellung einer ausfallsicheren<br />

DHCP-Serverstruktur auch<br />

ohne Cluster. DHCP-Failover unterstützt<br />

zwei Server mit IPv4-Konfiguration. Die<br />

Server können auch Mitglied einer Arbeitsgruppe<br />

sein, eine Domänenmitgliedschaft<br />

ist nicht unbedingt erforderlich.<br />

Mit dem DHCP-Failover-Feature können<br />

zwei DHCP-Server IP-Adressen und Optionskonfiguration<br />

für dasselbe Subnetz<br />

oder denselben Bereich bereitstellen.<br />

Zwischen den zwei DHCP-Servern werden<br />

Lease-Informationen repliziert. Es<br />

ist auch möglich, das Failover in einer<br />

Lastausgleichskonfiguration zu konfigurieren,<br />

in der Clientanforderungen auf die<br />

zwei Server verteilt sind.<br />

Öffnen Sie auf dem DHCP-Server die<br />

DHCP-Konsole, klicken Sie mit der rechten<br />

Maustaste auf den DHCP-Bereich den<br />

Sie ausfallsicher betreiben wollen, und<br />

klicken Sie dann auf »Failover konfigurieren«.<br />

Geben Sie auf der zweiten Seite<br />

den Partnerserver, und klicken Sie dann<br />

auf »Weiter«. Legen Sie auch einen gemeinsamen<br />

geheimen Schlüssel für diese<br />

Failover-Beziehung fest. Sie können hier<br />

auch den Modus auswählen, mit dem<br />

Sie die Ausfallsicherheit verwenden wollen.<br />

Sie können Lastenausgleich oder Hot<br />

Standby auswählen. Standardmäßig ist<br />

»Lastenausgleich« ausgewählt. Damit teilen<br />

sich die Server die Anfragen.<br />

Nachdem Sie die Einrichtung angeschlossen<br />

haben, können Sie das Failover in<br />

den Eigenschaften des IP-Bereiches auf<br />

der Registerkarte »Failover« anzeigen<br />

(Abbildung 6).<br />

E iSCSI-Ziele über<br />

virtuelle Disks anbieten<br />

Windows Server 2012 kann nicht nur auf<br />

iSCSI-Ziele zugreifen, sondern kann auch<br />

selbst virtuelle Festplatten als iSCSI-Ziel<br />

im Netzwerk zur Verfügung stellen. Dazu<br />

müssen Sie über den Server-Manager mit<br />

»Verwalten/Rollen und Features hinzufügen«<br />

den Rollendienst »iSCSI‐Zielserver«<br />

über »Datei‐ und Speicherdienste/Dateiund<br />

iSCSI‐Dienste installieren«.<br />

Nach der Installation des Rollendienstes<br />

können Sie über den Server-Manager<br />

und der Auswahl von »Datei‐/Speicherdienste/iSCSI«<br />

virtuelle Festplatten erstellen,<br />

die als iSCSI-Ziel im Netzwerk konfiguriert<br />

werden können. Sie können über<br />

den Assistenten, wie überall im Server-<br />

Manager, auch auf anderen Servern im<br />

Netzwerk virtuelle iSCSI-Ziele erstellen.<br />

Damit das funktioniert, muss auf dem<br />

entsprechenden Server der Rollendienst<br />

iSCSI-Zielserver installiert sein.<br />

Im Rahmen der Einrichtung legen Sie die<br />

Größe und den Speicherort der VHD(X)-<br />

Datei fest. Außerdem können Sie über<br />

den Assistenten steuern, welche Server<br />

im Netzwerk auf das iSCSI-Ziel zugreifen<br />

dürfen. Mit einem iSCSI-Ziel können Sie<br />

auch mehrere virtuelle iSCSI-Festplatten<br />

zur Verfügung stellen. Nachdem Sie die<br />

virtuellen Festplatten erstellt haben, können<br />

Sie über das Kontextmenü die Einstellungen<br />

ändern. (ofr)<br />

n<br />

Infos<br />

[1] Remoteserver-Verwaltungstools für Windows<br />

8:<br />

[http:// www. microsoft. com/ de‐de/​<br />

download/ details. aspx? id=28972]<br />

[2] Veeam Backup Free Edition für VMware<br />

und Hyper-V: [http:// www. veeam. com/​<br />

free‐backup]<br />

Der Autor<br />

Thomas Joos ist freiberuflicher IT-Consultant und<br />

seit über 20 Jahren in der IT tätig. Neben seinen<br />

Projekten schreibt er praxisnahe Fachbücher<br />

und Fachartikel rund um Windows und andere<br />

Microsoft-Themen. Online trifft man ihn unter<br />

[http:// thomasjoos. spaces. live. com].<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

61


Know-how<br />

Prey<br />

© rioblanco, 123RF<br />

Prey lokalisiert gestohlene Laptops und Mobiltelefone<br />

Schwere Beute<br />

Das Programm Prey überprüft regelmäßig den Status von Mobiltelefonen<br />

und Laptops. Meldet der Benutzer das Gerät als gestohlen, versucht das<br />

Tool, seinen Aufenthaltsort zu ermitteln und Spuren zu sichern. Oliver Frommel<br />

Selbst auf den besten Open-Source-Konferenzen<br />

kommt es vor: Man lässt seine<br />

Tasche einen Moment aus den Auge, und<br />

schon ist sie weg. Und damit auch das<br />

schöne neue Macbook, auf dem in unzähligen<br />

Stunden Ubuntu installiert und<br />

so konfiguriert wurde, dass sogar die<br />

Sondertasten alle richtig funktionierten.<br />

Unschuldig sind dabei meist die anderen<br />

Konferenzteilnehmer, denn professionelle<br />

Diebe wissen um die hohe Gerätedichte<br />

auf solchen Veranstaltungen und gehen<br />

dort gezielt auf die Suche nach Opfern.<br />

Deshalb gilt es auch wachsam zu sein,<br />

selbst wenn man sich von gleichgesinnten<br />

Gutmenschen umgeben glaubt.<br />

Das alles hilft aber nichts mehr, wenn die<br />

Maschine erst einmal weg ist. Was dann<br />

allerdings noch helfen kann, ist ein kleines<br />

Programm namens Prey [1], das aber<br />

auch schon installiert sein muss, bevor<br />

der Schaden entstanden ist. Kurz gesagt<br />

läuft Prey regelmäßig auf dem Computer<br />

und tut einfach nichts, solange ein<br />

paar Bedingungen erfüllt sind, die der<br />

Anwender festlegt. Meldet er das Gerät<br />

als gestohlen, liest Prey diesen Status<br />

vom Server und handelt entsprechend:<br />

Es gibt seinen Standort durch, speichert<br />

einen Screenshot und nimmt im Optimalfall<br />

ein Foto des Diebs mit der Laptopkamera<br />

auf.<br />

Viele Plattformen<br />

Los geht es damit, die Prey-Clientsoftware<br />

auf dem eigenen Gerät zu installieren.<br />

Pakete gibt es für Windows, Mac<br />

OS X, <strong>Linux</strong> allgemein und Ubuntu sowie<br />

Mobilgeräte mit iOS und Android.<br />

Unter Ubuntu installieren Sie das Paket<br />

mit dem Paketmanager mit »sudo dpkg ‐i<br />

prey_0.5.3‐ubuntu2_all.deb«. Der Befehl<br />

»apt‐get ‐f install« löst dann die dadurch<br />

entstandenen Abhängigkeiten auf und<br />

installiert die nötigen Pakete aus dem<br />

Ubuntu-Repository nach.<br />

Prey geht davon aus, dass auf dem zu bewachenden<br />

Rechner ein grafischer Desktop<br />

installiert ist, zum Beispiel Gnome.<br />

Dann findet sich nach der Installation<br />

ein grafisches Konfigurationsprogramm,<br />

der Prey Configurator, im Menü »Applications<br />

| System Tools« (Abbildung 1). Auf<br />

der Kommandozeile lässt es sich per »/<br />

usr/share/prey/platform/linux/prey‐config.py«<br />

starten. Dummerweise funktioniert<br />

es nicht mit »sudo«, Sie müssen<br />

also wirklich das Passwort des Benutzers<br />

»root« eingeben (und dies vorher gegebenenfalls<br />

erst erstellen) oder zum Beispiel<br />

mit »sudo su« in einem Terminal in den<br />

Root-Account wechseln.<br />

Bei der Default-Konfiguration verlangt<br />

Prey Root-Rechte und die Konfigurationsdatei<br />

»config« in »/usr/share/prey«<br />

ist entsprechend geschützt. Sie lässt sich<br />

auch ohne das grafische Konfigurationstool<br />

im Editor bearbeiten, was auch<br />

nötig ist, wenn Sie das Programm überhaupt<br />

in Betrieb nehmen wollen. Woran<br />

es noch mangelt, verrät ein Aufruf von<br />

»/usr/share/prey/prey.sh ‐‐check« (Abbildung<br />

2).<br />

Um an die fehlenden Keys zu gelangen,<br />

müssen Anwender sich auf der Prey-<br />

Website registrieren. Nach dem Opt-in<br />

per E-Mail und dem Einloggen gelangen<br />

Sie in den eigenen Administrationsbereich,<br />

wo Sie in den Profilinformationen<br />

auf der linken Seite den API-Key finden.<br />

Haben Sie ihn in der Konfigurationsdatei<br />

als »api_key« eingetragen, führen SIe wieder<br />

das Prey-Skript aus. In der Ausgabe<br />

des Befehls finden sich die folgenden<br />

Zeilen:<br />

‐‐ Gathering PC info...<br />

‐‐ Sending request to Control Panel...<br />

‐‐ Device succesfully added! U<br />

Applying configuration...<br />

Im leider wenig übersichtlichen Verwaltungsbereich<br />

auf der Prey-Site ist nun<br />

das registrierte Gerät zu sehen. Den Device<br />

Key finden Sie wieder auf der linken<br />

Seite, wenn Sie auf das Gerät klicken.<br />

Tragen Sie ihn in der Konfigurationsdatei<br />

als »device_key« ein, sonst legt Prey jedes<br />

Mal ein neues Gerät an, wenn Sie das<br />

Skript starten.<br />

Unter Ubuntu hat die Installationsroutine<br />

des Pakets auch einen Cronjob für<br />

den Benutzer »root« eingerichtet, den<br />

»crontab ‐e« (als Root) anzeigt:<br />

*/25 * * * * /usr/share/prey/prey.sh > U<br />

/var/log/prey.log<br />

62 Ausgabe 01-2013 Admin www.admin-magazin.de


Prey<br />

Know-how<br />

Sie können das Skript aber auch jederzeit<br />

von Hand ausführen, wenn Sie sehen<br />

wollen, was passiert. Der springende<br />

Punkt ist, dass der Cronjob das Prey-<br />

Skript auch ausführt, wenn der Laptop<br />

in falsche Hände gerät.<br />

Online-Check<br />

Bei jedem Durchlauf verbindet sich das<br />

Skript mit der Prey-Website und prüft<br />

dort den aktuellen Status, der OK oder<br />

Missing sein kann. Ist er OK, schreibt das<br />

Skript einfach seine Logdatei und tut ansonsten<br />

nichts. Ist der Laptop gestohlen,<br />

schaltet der Anwender im Webinterface<br />

auf Missing. Nun tritt Prey in Aktion und<br />

führt eine Reihe von Aktionen aus, die<br />

sich im Webinterface einstellen lassen.<br />

So versucht es, über GPS – sofern vorhanden<br />

– oder WLAN-Lokalisierung dein<br />

eigenen Ort zu ermitteln. All dies lässt<br />

sich gefahrlos testen, indem man den<br />

Laptop im Webinterface als vermisst meldet,<br />

denn außer einem selbst bekommt<br />

niemand davon etwas mit.<br />

Prey kann auch Alarme auslösen, den<br />

Bildschirm sperren oder sensible Daten<br />

auf dem Rechner löschen. Hier hat der<br />

Anwender viele Möglichkeiten, sollte<br />

aber gut überlegen, ob es sinnvoll ist,<br />

den Dieb darauf aufmerksam zu machen,<br />

dass man ihm auf der Spur ist. Auch ist<br />

es wenig wünschenswert, wegen eines<br />

Versehens wichtige private Daten durch<br />

das Programm gelöscht zu bekommen.<br />

Auf Wunsch bekommt es noch mehr Details<br />

über die eigene Netzwerkumgebung<br />

sowie andere WLANs in der Umgebung<br />

heraus – vielleicht hilft dies ja bei der Lokalisierung<br />

des Geräts. Prey macht auch<br />

einen Screenshot des Desktops, über<br />

den sich unter Umständen der Benutzer<br />

identifizieren lässt, wenn er gerade<br />

seine Webmail auf dem gestohlenen Gerät<br />

liest. Die Spuren sichert Prey immer<br />

wieder, solange der Cronjob läuft und<br />

der Status des Geräts auf Missing steht.<br />

Alles dies setzt natürlich voraus, dass<br />

der Rechner ans Internet angeschlossen<br />

ist, was die Crux des ganzen Ansatzes<br />

ist. Man ist also darauf angewiesen, dass<br />

der Dieb selbst den Rechner mit dem Internet<br />

verbindet, was wohl nicht in jedem<br />

Fall passieren wird. Alternativ kann Prey<br />

auch offene WLANs verwenden, um sich<br />

selbst mit dem Netz zu verbinden, aber<br />

auch dafür muss man Glück haben.<br />

Mit dem kostenlosen Prey-Dienst lassen<br />

sich bis zu drei Geräte verwalten, für die<br />

es bis zu zehn Reports gibt. Wer mehr<br />

will, kann eines der kostenpflichtigen<br />

Angebote von Prey nutzen, die bei fünf<br />

US-Dollar im Monat starten und bis zu<br />

399 US-Dollar pro Monat gehen und dann<br />

500 Geräte abdecken.<br />

Alternativ lässt sich Prey, dessen Client-<br />

Quellcode unter der GPLv3 frei verfügbar<br />

ist, auch ohne den Prey-Dienst mit einem<br />

eigenen Server verwenden. Dazu aktiviert<br />

man auf dem eigenen Webserver<br />

eine URL, die Prey zur Überprüfung verwendet.<br />

Ist das Gerät gestohlen, löscht<br />

man die URL, geht Prey von einem Diebstahl<br />

aus und schickt seine Benachrichtigungen<br />

los, die der Anwender dann per<br />

E-Mail erhält. Eine<br />

funktionierende<br />

SMTP-Konfigura-<br />

tions ist dann ebenfalls obligatorisch. Als<br />

experimentelles Feature gibt es noch die<br />

Benachrichtigung per SSH beziehungsweise<br />

SFTP. Hierzu sind allerdings wieder<br />

auf dem Laptop abgelegte Public Keys nötig,<br />

die einen Zugang zum eigenen Server<br />

verschaffen, den man dem Dieb vielleicht<br />

nicht unbedingt noch als zusätzliches Geschenk<br />

machen will, wenn man ihn nicht<br />

besonders abgesichert hat.<br />

Fazit<br />

Der Einsatz von Prey ist sicher kontrovers.<br />

Im Optimalfall verhilft das Tool<br />

dazu, einen gestohlenen Laptop oder ein<br />

Mobiltelefon wieder zurückzubekommen.<br />

Entsprechende Erfolgsgeschichten<br />

sind auf der Prey-Website dokumentiert<br />

und bebildert. Andererseits setzt dies<br />

günstige Umstände voraus, etwa eine<br />

funktionierene Netzwerkverbindung<br />

nach dem Diebstahl. Demgegenüber<br />

stehen einige Bedenken, auf dem eigenen<br />

Rechner eine permanente Überwachungsmaschinerie<br />

laufen zu lassen, die<br />

unter Umständen private Daten ins Internet<br />

lädt (etwa Screenshots von eigener<br />

E-Mail). Im Prinzip ist ein Missbrauch<br />

ausgeschlossen, denn man hat im Prey-<br />

Webinterface nur selbst Zugang auf diese<br />

Daten. Wer hierbei keine Bedenken hat,<br />

verschafft sich mit Prey immerhin eine<br />

gewisse Chance, ein gestohlenes Gerät<br />

zurückzubekommen.<br />

n<br />

Infos<br />

[1] Prey: [http:// preyproject. com]<br />

[2] Sourcecode: [https:// github. com/ prey]<br />

[3] Forum: [http:// answers. preyproject. com]<br />

Abbildung 1: Im Prey Configurator lassen sich die Grundeinstellungen für das Tool<br />

vornehmen, für alles andere muss die Konfigurationsdatei herhalten.<br />

Abbildung 2: »prey.sh ‐‐check« verrät hier, dass noch der API-Key und der<br />

Device-Key fehlen, damit Prey funktioniert.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

63


Virtualisierung<br />

Proxmox<br />

© Artem Merzlenko, 123RF<br />

Proxmox Virtual Environment 2.2 unter der Lupe<br />

Virtualisierungswarte<br />

Proxmox Virtual Environment entwickelt sich von Version zu Version vom Geheimtipp zum kostenlosen VMware<br />

ESXi/​vSPhere-Klon. Wir werfen einen Blick auf die Neuerungen der Version 2.2. Thomas Drilling<br />

Proxmox Virtual Environment (PVE) [1]<br />

ist eine Open-Source-Virtualisierungslösung,<br />

die seit 2004 von der Wiener Proxmox<br />

Server Solutions GmbH entwickelt<br />

wird. Da Proxmox VE vollständig unter<br />

der GPLv2 lizensiert ist, bestehen auch<br />

hinsichtlich einer geschäftlichen Nutzung<br />

keine Einschränkungen – im Unterschied<br />

zu manchen Free- oder Personal-Lizenzen<br />

vergleichbarer Konkurrenzprodukte.<br />

Die Proxmox Server Solutions GmbH bietet<br />

allerdings für Unternehmenskunden<br />

auch ein Subskriptions-Modell [2] mit<br />

verschiedenen Support-Leveln zwischen<br />

120 Euro und 800 Euro pro Jahr an.<br />

Die Lösung war von Anfang an als einfach<br />

installierbare Appliance mit Bare-<br />

Metal-Installer konzipiert, die sich über<br />

eine Weboberfläche konfigurieren lässt<br />

und wahlweise KVM-basierte Gäste oder<br />

OpenVZ-Container bereitstellen kann.<br />

Diese relativ ungewöhnliche Kombination<br />

macht deutlich, dass PVE auf den<br />

Unternehmenseinsatz abzielt, wenngleich<br />

die frühen Versionen dafür noch<br />

die eine oder andere Funktion vermissen<br />

ließen.<br />

Auch eine Cluster-Funktion war schon<br />

von Anfang an enthalten, mit deren Hilfe<br />

der Admin aus zwei oder mehr PVE-<br />

Rechnerknoten auch ohne SAN eine redundante<br />

Virtualisierungsumgebung<br />

erstellen konnte. Der Leistungsumgang<br />

steigerte sich von Version zu Version.<br />

Wenn es an früheren Versionen etwas<br />

auszusetzen gab, dann dass die Web-GUI<br />

Funktionen vorspiegelte, die sie allein<br />

nicht hatte. Stattdessen war oft eine vorherige<br />

manuelle Konfiguration auf der<br />

Kommandozeile nötig, etwa im Bereich<br />

der Cluster-Funktionen oder beim Befüllen<br />

eines Storages, sei das ein lokales Verzeichnis<br />

auf dem jeweiligen PVE-Node<br />

oder ein Netzwerkverzeichnis (NFS,<br />

CIFS) oder ein SAN (iSCSI, FC).<br />

Funktionsumfang<br />

Proxmox bezeichnet sich selbst als „Open<br />

Source-Virtualisierungsplattform mit<br />

Web-Oberfläche zum Betrieb und Management<br />

von Virtual Appliances mit integrierter<br />

VNC-Konsole“. Proxmox spielte<br />

schon 2012 vor der Veröffentlichung der<br />

Version 2.0 in einer Liga mit dem (heute<br />

nicht mehr erhältlichen) VMware-Server<br />

und positioniert sich in der aktuellen<br />

Version 2.2 als direkter Konkurrent zu<br />

VMware ESXi und Citrix Xen Server. Laut<br />

einer Vergleichstabelle [5] der Proxmox-<br />

Entwickler kann PVE 2.2 sogar mehr als<br />

vSPhere, XenServer und MS Hyper V.<br />

In der Tat kam die Veröffentlichung der<br />

Version 2.0 im Frühjahr letzten Jahres<br />

mit komplett neuer JavaScript-Weboberfläche,<br />

auf dem Corosync-Cluster-Communication-Stack<br />

basierender HA-Unterstützung,<br />

Backup/​Restore-Funktion via<br />

GUI und seinem RESTful Web API (Proxmox_VE_API)<br />

[6] einem Quantensprung<br />

in der Entwicklung gleich.<br />

Dieser Beitrag soll neben den Neuerungen<br />

der Version 2.2 vorrangig zwei für<br />

Admins interessante Funktionen im Detail<br />

beschreiben, nämlich das Erstellen<br />

eines HA-Clusters und das individuelle<br />

Aufsetzen von Proxmox VE auf einem<br />

Debian-System.<br />

Eine Besonderheit von Proxmox-VE besteht<br />

darin, dass das System im Kern<br />

auf Debian-GNU-<strong>Linux</strong> (aktuell Version<br />

6.0.6) basiert. Das ist – gerade für Windows-Admins<br />

– nicht unbedingt ersichtlich,<br />

weil sich die Software mit ihrem<br />

Bare-Metal-Installer (ohne große Möglichkeiten<br />

der Einflussnahme) in knapp 5<br />

Minuten installieren lässt und die weitere<br />

66 Ausgabe 01-2013 Admin www.admin-magazin.de


Proxmox<br />

Virtualisierung<br />

Konfiguration über das Webinterface erfolgt.<br />

Dank Debian-Fundament kann der<br />

Admin aber beliebige Komponenten aus<br />

dem Debian-Projekt nachinstallieren und<br />

seinen Proxmox-Node so nach Belieben<br />

zu einer kompletten Workstation oder zu<br />

einem Server ausbauen, der neben der<br />

Virtualisierung auch andere Aufgaben<br />

übernimmt. Das Installieren, sowie erste<br />

Konfigurationsschritte im neuen Web-<br />

GUI erläutert der Kasten „Installation<br />

und erste Schritte“.<br />

Clustern mit Proxmox<br />

Wer einen Cluster-Verbund mit PVE aufbauen<br />

will, tut sich leichter, wenn ein<br />

externer Shared-Storage, etwa in Form<br />

eines SAN oder NFS-Servers zur Verfügung<br />

steht. PVE kennt die Storage-Technologien<br />

iSCSI, Fibre Channel, CIFS, NFS,<br />

DRBD und ATA over Ethernet (AoE).<br />

PVE unterstützt schon von je Cluster. Dabei<br />

unterscheidet es zwischen gewöhnlichen<br />

Clustern und Hochverfügbarkeits-<br />

Clustern. Erstere sind ein Verbund von<br />

Rechnern einer PVE-Installation (Virtualisierungsknoten).<br />

Ein solcher Proxmox-<br />

VE-Cluster besteht stets aus einem Master<br />

und mindestens einem Node. Wie<br />

man ein solches Setup aufsetzt, ist im<br />

Proxmox-Wiki [7] beschrieben. Die dortigen<br />

Erläuterungen und Abbildungen<br />

zum Verwenden des Cluster-Setups beziehen<br />

sich jedoch auf die Version 1.9 mit<br />

alter GUI. Nach abgeschlossener Konfiguration<br />

über das GUI lassen sich virtuelle<br />

Maschinen zum Beispiel auf einen<br />

anderen Proxmox-Knoten migrieren. Seit<br />

der Version 2.0 ist das Produkt auch hoch<br />

verfügbar, was in Konkurrenz zu kommerziellen<br />

Lösungen wie VMware ESX<br />

essenziell ist. Zum Realisieren eines HA-<br />

Clusters mit PVE gibt es seit der Version<br />

2.0 zwei Möglichkeiten. Die erste funktioniert<br />

auch mit älteren Versionen. Hat der<br />

Admin einen gewöhnlichen PVE-Cluster<br />

konfiguriert, kann er mithilfe von DRDB<br />

einen sogenannten Two-Node-HA-Cluster<br />

aufsetzen, was ebenfalls im Wiki [8] beschrieben<br />

ist. Das funktioniert, weil PVE<br />

wie erläutert (auch) ein ganz gewöhnliches<br />

Debian-System ist. Eine DRDB-<br />

Konfiguration beschränkt sich stets auf<br />

zwei Knoten und ist im Proxmox-Wiki<br />

ausführlich erläutert [9]. Da DRDB zwei<br />

PVE-Hosts synchronisieren hilft, die so<br />

als Basis für den HA-Cluster dienen, reduziert<br />

sich der Aufwand an benötigten<br />

Komponenten auf zwei PVE-Hosts.<br />

Clustern mit Corosync<br />

Die HA-Fähigkeit eines Proxmox-VE-2-<br />

Clusters beruht dagegen auf dem Corosync-Kommunikations-Stack<br />

[10] sowie<br />

der Red Hat Cluster-Suite [11]. Das<br />

dazu eigens entwickelte Datenbank- und<br />

FUSE-basierte Proxmox Cluster Filesystem<br />

(»pmxcfs«) [12] ermöglicht es, die<br />

Konfiguration der einzelnen Cluster-<br />

Knoten über den Corosync-Kommunikations-Stack<br />

zu nutzen und auf DRBB zu<br />

verzichten.<br />

Da Proxmox auf diese Weise sämtliche<br />

Konfigurationsdateien, die clusterweit<br />

identisch sein müssen, im Pmxcfs vorhält,<br />

können auch alle PVE-Nodes darauf<br />

zugreifen. Ferner unterstützt ein Proxmox-VE-2-Cluster<br />

verschiedene Authen-<br />

tifizierungsverfahren, neben der lokalen<br />

Authentifizierung auch Active Directory<br />

und LDAP. Darüber hinaus beherrscht<br />

er die Rollen-basierte Verwaltung sämtlicher<br />

Cluster-Objekte (Nodes, Storages,<br />

virtuelle Maschinen) und ist außerdem<br />

in der Lage, Multi-Master-Cluster zu erstellen<br />

(wie beschrieben unterstützten<br />

gewöhnliche Proxmox-VE-Cluster nur<br />

Single-Master-Setups).<br />

Cluster Manager Toolkit<br />

Die erforderliche Corosync-Konfiguration<br />

wird mithilfe der Befehle des Proxmox VE<br />

Cluster Manager Toolkit [13] automatisch<br />

auf jedem Knoten erzeugt und ist unter<br />

anderem dafür verantwortlich, dass<br />

die Nodes im Cluster miteinander kommunizieren,<br />

was wiederum voraussetzt,<br />

dass sich sämtliche Nodes im gleichen<br />

Subnetz befinden. Das automatische Abstimmen<br />

der Nodes erfolgt dann via IP<br />

Multicasts, was allerdings bei manchen<br />

Switches eine manuelle Aktivierung erfordert.<br />

Ferner müssen Datum und Zeit<br />

zwischen den Notes synchronisiert sein.<br />

Außerdem nutzt die Konfiguration einen<br />

SSH-Tunnel auf Port 22. Der Datenverkehr<br />

der VNC-Konsole ist dagegen seit<br />

PVE 2.0 über SSL gesichert und nutzt die<br />

Ports 5900 und 5999.<br />

Für das weitere Vorgehen muss der Admin<br />

zunächst auf jedem für den PVE-2-<br />

HA-Cluster vorgesehenen Node PVE über<br />

den Bare-Metal-Intaller installieren.<br />

Dabei muss er darauf achten, gleich zu<br />

Angfang den finalen Hostnamen und eine<br />

statische IP-Konfiguration festzulegen,<br />

weil das Ändern der IP-Adresse oder des<br />

Abbildung 1: Das PVE-Cluster-Manager-Toolkit bietet eine<br />

eigene Kommandoschnittstelle.<br />

Abbildung 2: Zum Hinzufügen eines Nodes zum bestehenden Cluster loggt sich der Admin via SSH auf<br />

einem anderen PVE-Node ein und fügt dort diesen Node zum angegebenen Cluster hinzu.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

67


Virtualisierung<br />

Proxmox<br />

Abbildung 3: Ist der HA-Cluster grundlegend konfiguriert, erfolgt das Verwalten über das Web-GUI.<br />

Hostnamens nach der Cluster-Erzeugung<br />

nicht mehr möglich ist. Auch wenn der<br />

fertige Cluster inzwischen über das Webinterface<br />

verwaltet und genutzt werden<br />

kann, muss der Admin zum Aufsetzen<br />

des PVE-HA-Clusters auf das Proxmox<br />

VE Cluster Manager Toolkit zurückgreifen,<br />

das auf jedem Node die Corosync-<br />

Konfiguration erzeugt. Seine vollständige<br />

Syntax findet sich hier [15].<br />

Um einen Cluster anzulegen, meldet sich<br />

der Admin zunächst via SSH auf dem<br />

ersten VE-Node an und erzeugt mit<br />

»pvecm create Cluster‐Name« einen ersten<br />

Cluster, dessen Status er anschließend<br />

mit »pvecm status« prüfen (Abbildung<br />

1) kann.<br />

Zum Hinzufügen eines Nodes zu einem<br />

bereits existierenden Cluster loggt sich<br />

der Admin via SSH auf einem anderen<br />

PVE-Node ein und fügt dort diesen Node<br />

mit dem Befehl »pvecm add IP‐Cluster«<br />

zum angegebenen Cluster hinzu (Abbildung<br />

2).<br />

Ist das geschehen, lässt sich auch hier<br />

mit »pvecm status« der neue Status des<br />

Clusters verifizieren. Mit »pvecm nodes«<br />

dagegen kann der Admin sämtliche im<br />

Cluster enthaltenen Nodes anzeigen.<br />

Zum Entfernen eines Cluster-Nodes muss<br />

der Admin ebenfalls die Kommandozeile<br />

bemühen. Lediglich das Löschen oder<br />

Migrieren von virtuellen Maschinen kann<br />

und muss über das Webinterface erfolgen.<br />

Soll ein Cluster-Node entfernt werden,<br />

muss der Admin etwaige existente<br />

und noch benötigte VMs vorher durch<br />

Migrieren oder Sichern (Snapshot) erhalten.<br />

Das Löschen des Nodes funktioniert<br />

dann mit »pvecm delnode «.<br />

Wurde die Corosync-Konfiguration auf<br />

diese Weise erstellt, lässt sich im Web-<br />

GUI im Reiter „HA“ (Abbildung 3) wahlweise<br />

eine Failover-Domain hinzufügen<br />

oder eine HA-managed-VM beziehungsweise<br />

ein HA-managed-CT (Ressource-<br />

Container) hinzufügen.<br />

Das GUI zeigt die dazu notwendigen Änderungen<br />

im Bereich „Ausstehende Änderungen“<br />

an.<br />

Mit einen Klick auf „Aktivieren“ lässt sich<br />

die Konfiguration abschließen. Dank Corosync<br />

wird der Zustand jedes Nodes zwischen<br />

allen Knoten repliziert, die in die<br />

Corosync/​HA-Konfiguration eingebunden<br />

sind. Außerdem lassen sich problemlos<br />

VMs oder CTs zwischen den beteiligten<br />

physischen Nodes migrieren (Abbildung<br />

4). Die Konfiguration sorgt außerdem für<br />

ein Cluster-weites Logging.<br />

Proxmox auf Debian<br />

Abbildung 4: Ein Cluster-Setup erlaubt auch das Migrieren einer VM von einem Knoten zum nächsten.<br />

Der Bare-Metal-Installer macht das Aufsetzen<br />

eines PVE-Servers nebst Webinterface<br />

und allem drum und dran zum<br />

Kinderspiel, lässt dem Admin jedoch<br />

wenig Entscheidungsfreiheit und erlaubt<br />

auch kein Partitionieren. Zwar ist es über<br />

Kernel-Parameter in gewissen Umfang<br />

möglich, die Größen für die Root- und<br />

Swap-Partition vorzugeben, ein eigenes<br />

Partitionslayout, das beispielsweise auch<br />

existente Systeme berücksichtigt, ist<br />

mit dem Bare-Metal-Installer allerdings<br />

nicht möglich. Bestehende Partitionen zu<br />

berücksichtigen, entspricht auch nicht<br />

dem Sinn einer Appliance-Lösung, es<br />

mag aber doch den einen oder anderen<br />

Admin geben, der PVE nur ausprobieren<br />

oder aus anderen Gründen auf ei-<br />

68 Ausgabe 01-2013 Admin www.admin-magazin.de


Proxmox<br />

Virtualisierung<br />

nem existenten Debian-Server aufsetzen<br />

möchte. Zudem liegt die Idee nahe, ein<br />

Debian-System nicht nur als Proxmox-<br />

Fundament, sondern auch für andere<br />

Services zu nutzen.<br />

Die Proxmox Server Solutions GmbH<br />

bietet zu diesem Zweck ein eigenes Apt-<br />

Repositoy für Debian-Systeme an, mit<br />

dessen Hilfe es möglich ist, den Proxmox-<br />

Kernel (aktuell ein von den Proxmox-<br />

Entwicklern modifizierter RHEL-Kernel<br />

2.6.32-042) und das eigentliche Proxmox<br />

Virtual Environment (proxmox-ve-2.6.32)<br />

als Deb-Pakete zu installieren. Hat der<br />

Admin ein Debian-System mit individuellem<br />

Partitions-Layout erstellt (die Proxmox-Entwickler<br />

bevorzugen übrigens ein<br />

LVM-basiertes Partitionsschema, was das<br />

spätere Erweitern flexibler macht) oder<br />

ist ein laufendes Debian-System vorhanden,<br />

muss er lediglich das Repository<br />

»http://download.proxmox.com/debian<br />

squeeze pve« in seine »/etc/apt/sources.<br />

list« einfügen:<br />

Ist das erledigt muss der Admin lediglich<br />

noch die Pakete »postfix«, »lvm2«,<br />

»ntp«, »ssh«, »ksm‐control‐daemon« und<br />

»vzprocps« installieren. Ist auch das gedeb<br />

http://ftp.at.debian.org/debian U<br />

squeeze main contrib<br />

deb http://security.debian.org/ U<br />

squeeze/updates main contrib<br />

# PVE‐Pakete<br />

deb http://download.proxmox.com/debian U<br />

squeeze pve<br />

Das Importieren des nötigen Schlüssels<br />

klappt am einfachsten mit<br />

wget http://download.proxmox.comU<br />

/debian/key.asc<br />

apt‐key add key.asc<br />

Anschließend müssen zunächst die Repoliste<br />

und dann das komplette System<br />

aktualisiert werden<br />

aptitude update<br />

aptitude full‐upgrade<br />

Ist das geschehen, ist zunächst der auf<br />

einem RHEL-Kernel basierende Proxmox-<br />

Kernel zu installieren:<br />

apt‐get install pve‐firmware<br />

aptitude install pve‐kernel‐2.6.32‐16‐pve<br />

Die PVE-Kernel-Header werden nur benötigt,<br />

wenn später weitere individuelle<br />

Modifikationen durch das Anpassen des<br />

Kernels oder das Übersetzen von Kernel-<br />

Modulen anstehen. Beim Reboot ist unbedingt<br />

darauf zu achten, dauch tatsächlich<br />

den Proxmox-Kernel zu booten. Normalerweise<br />

sollte Grub2 eine entsprechende<br />

Boot-Auswahl automatisch konfiguriert<br />

haben. Läuft das System mit PVE-Kernel,<br />

kann der Admin das eigentliche Proxmox-<br />

Virtual-Environment mit »apt‐get insstall<br />

proxmox‐ve‐2.6.32« installieren. Das<br />

Aktivieren des Proxmox-Webinterfaces<br />

durch Hinzufügen eines Virtual Hosts mit<br />

anschließendem Apache-Neustart klappt<br />

am schnellsten mit<br />

a2ensite pve‐redirect.conf<br />

/etc/init.d/apache2 restart<br />

Abo abschließen und gewinnen!<br />

Sparen Sie 15% beim<br />

Print- oder Digital-Abo<br />

und gewinnen Sie eins von zwei<br />

Archos 101 XS Gen 10 im Wert<br />

von circa 380 E!<br />

Die Verlosung erfolgt am 28.02.13 um 12 Uhr<br />

unter allen Abonnenten (außer Miniabos)<br />

Die Monatszeitschrift für Android-Fans, Smartphone- und Tablet-Nutzer<br />

Jetzt bestellen unter:<br />

www.android–user.de/abo<br />

Telefon 07131 www.admin-magazin.de<br />

/ 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: Admin abo@android-user.de<br />

Ausgabe 01-2013<br />

69


Virtualisierung<br />

Proxmox<br />

schehen, sollte eine Verbindung zum<br />

Proxmox-Webinterface unter der Adresse<br />

»https://


Proxmox<br />

Virtualisierung<br />

Infos<br />

Abbildung 5: Dank Bare-Metal-Installer ist das System nach wenigen Eingaben einsatzbereit.<br />

Abbildung 6: Essenziell ist das Anlegen eines Storage, im einfachsten Fall ein lokales Verzeichnis.<br />

Abbildung 7: Im Reiter General sind der betreffende Knoten sowie die ID der virtuellen Appliance vorgegeben.<br />

[1] Proxmox-Projektseite:<br />

[http:// www. proxmox. com/]<br />

[2] Proxmox-Shop:<br />

[https:// shop. maurer‐it. com/ cart. php]<br />

[3] Thomas Drilling: Artikel überProxmox VE<br />

in <strong>ADMIN</strong> 05/​2010<br />

[http:// www. admin‐magazin. de/ Das‐Heft/​<br />

2010/ 05/ Container‐und‐Hardware‐Virtuali<br />

sierung‐unter‐einem‐Dach]<br />

[4] Artikel Proxmox VE in LM 10/​2012 von<br />

Martin Loschwitz:<br />

[http:// www. linux‐magazin. de/ Ausgaben/​<br />

2012/ 10/ Proxmox‐VE]<br />

[5] Proxmox im Vergleich mit VMware und<br />

HyperV: [http:// www. proxmox. com/​<br />

products/ proxmox‐ve/ comparison]<br />

[6] Proxmox_VE_API:[http:// pve. proxmox.​<br />

com/ wiki/ Proxmox_VE_API]<br />

[7] Gewöhnlicher PVE-Cluster:<br />

[http:// pve. proxmox. com/ wiki/ Proxmox_<br />

VE_Cluster]<br />

[8] PVE Two-Node_High_Availability_<br />

Cluster:[http:// pve. proxmox. com/ wiki/​<br />

Two‐Node_High_Availability_Cluster]<br />

[9] PVE DRDB:<br />

[http:// pve. proxmox. com/ wiki/ DRBD]<br />

[10] Corosync-Kommunikation-Stack:<br />

[http:// www. corosync. org]<br />

[11] Red Hat Clutser Suite: [https:// access.​<br />

redhat. com/ knowledge/ docs/ de‐DE/​<br />

Red_Hat_<strong>Enterprise</strong>_<strong>Linux</strong>/ 5/ html/​<br />

Cluster_Suite_Overview/ ch. gfscs.​<br />

cluster‐overview‐CSO. html]<br />

[12] Proxmox Cluster Filesystem:<br />

[http:// pve. proxmox. com/ wiki/ Proxmox_<br />

Cluster_file_system_(pmxcfs)]<br />

[13] Proxmox VE cluster manager toolkit:<br />

[https:// pve. proxmox. com/ pve2‐api‐doc/​<br />

man/ pvecm. 1. html]<br />

[15] Synoptic Proxmox VE cluster manager<br />

Toolkit: [https:// pve. proxmox. com/​<br />

pve2‐api‐doc/ man/ pvecm. 1. html]<br />

[16] Proxmox Roadmap:<br />

[http:// pve. proxmox. com/ wiki/ Roadmap]<br />

[17] Ceph: [http:// ceph. com/ docs/ master/]<br />

[18] PVE-Download PVE: [http:// www.​<br />

proxmox. com/ downloads/ proxmox‐ve/​<br />

17‐iso‐images]<br />

[19] Proxmox Hardware-Anforderungen:<br />

[http:// proxmox. com products/<br />

proxmox‐ve/ system‐requirementsproxmox‐ve]<br />

[20] Das Proxmox-Storage Modell:<br />

[http:// pve. proxmox. com/ wiki/ Storage_<br />

Model]<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

71


Virtualisierung<br />

Open Stack<br />

© JY Lee, 123RF<br />

OpenStack-Workshop, Teil 2: Eine Schritt-für-Schritt Cloud-Installation<br />

Einrichtungsberater<br />

Der erste Artikel dieses Workshops hat die Theorie hinter OpenStack beleuchtet, der zweite Teil kümmert sich<br />

um die Praxis: Wie lässt sich eine Open-Stack-Wolke aus dem Boden stampfen? Martin Loschwitz<br />

Eingedenk der am Markt herrschenden<br />

Vielfalt verschiedener Cloud-Lösungen<br />

ist die Auswahl des passenden Systems<br />

für die eigenen Ansprüche eine eher<br />

schwierige Angelegenheit. Haben die Planer<br />

von IT-Umgebungen diesen Schritt<br />

hinter sich gebracht und sich dabei für<br />

Open Stack entschieden, fängt jedoch das<br />

Leiden meist erst richtig an. Denn Open<br />

Stack genießt nicht unbedingt den Ruf,<br />

das bestdokumentierte Projekt der Open-<br />

Source-Szene zu sein. Zwar ist in den<br />

letzten Monaten die Dokumentation ein<br />

ganzes Stück besser geworden, was nicht<br />

zuletzt an der Hartnäckigkeit von Anne<br />

Gentle liegt – der Leiterin des Dokumentationsteams.<br />

Doch hapert es noch immer<br />

an einigen Stellen – so fehlt beispielsweise<br />

ein Dokument, das die Installation<br />

einer Open Stack-Wolke durchgängig von<br />

der Installation der Pakete bis hin zu der<br />

ersten VM erläutert.<br />

Keine Panik: Open Stack wirkt umfangreich,<br />

doch die meisten Teile der ab Werk<br />

gelieferten Konfiguration lassen sich eins<br />

zu eins nutzen. Dieser Text beschäftigt<br />

sich mit der Frage, welche Open-Stack-<br />

Komponenten notwendig für eine Open-<br />

Stack-Basisinstallation sind und wie deren<br />

Konfiguration klappt. Das Ziel ist eine<br />

Open-Stack-Referenzimplementation bestehend<br />

aus drei Knoten: Ein Knoten dient<br />

als Cloud-Controller, ein weiterer fungiert<br />

als Knoten für den Open-Stack-Netzwerkdienst<br />

Quantum, und der dritte Knoten<br />

beheimatet als klassischer Hypervisor die<br />

virtuellen Maschinen der Umgebung.<br />

Zur Vorbereitung: NTP,<br />

RabbitMQ und MySQL<br />

Die gute Nachricht vorweg: NTP und<br />

RabbitMQ bedürfen nach der Installation<br />

auf Alice keiner Veränderungen; beide<br />

Dienste funktionieren unmittelbar nach<br />

der Installation mit Standardwerten.<br />

Etwas anders sieht es für MySQL aus:<br />

Sämtliche Open-Stack-Dienste benötigen<br />

eine eigene Datenbank in MySQL, die<br />

händisch anzulegen ist. Das Listing 1<br />

hat die notwendigen Befehle. Das Beispiel<br />

geht davon aus, dass für den Root-<br />

User in MySQL kein Passwort gesetzt ist.<br />

Falls das im lokalen Setup anders ist,<br />

so ist den MySQL-Aufrufen jeweils der<br />

„-p“-Parameter hinzuzufügen, sodass<br />

der MySQL-Client jeweils nach dem Datenbank-Passwort<br />

fragt. Überdies muss<br />

MySQL so konfiguriert sein, dass es auf<br />

allen Interfaces lauscht – und nicht nur<br />

auf der Localhost-Adresse »127.0.0.1«.<br />

Dazu ist in »/etc/mysql/my.cnf« der Wert<br />

von »bind_address =« auf »0.0.0.0« zu<br />

ändern. Wenn also die Datenbanken angelegt<br />

sind, und die IP-Adresse entsprechend<br />

angepasst ist, kann es mit den<br />

eigentlichen Open-Stack-Komponenten<br />

weitergehen.<br />

Aller Anfang: Open Stack<br />

Keystone<br />

Keystone ist die Autentizifierungskomponente<br />

von Open Stack. Es handelt sich<br />

um den einzigen Dienst, der keinen an-<br />

72 Ausgabe 01-2013 Admin www.admin-magazin.de


Open Stack<br />

Virtualisierung<br />

Benötigte Pakete<br />

Der Artikel geht davon aus, dass Ubuntu 12.04 zum Einsatz kommt. Um in<br />

den Genuss von OpenStack Folsom zu gelangen, reichen die Paketlisten von<br />

Ubuntu 12.04 allerdings nicht aus, denn diese enthalten nur Pakete für die<br />

Vorgängerversion Essex. Glücklicherweise stellt das Ubuntu-Cloud-Team<br />

für Precise Pangolin aber in einem eigenen Repository Pakete von Essex<br />

bereit, die sich wie gehabt installieren lassen. Damit die Installation klappt,<br />

ist das Paket »ubuntu‐cloud‐keyring« notwendig, das den GPG-Schlüssel<br />

des Cloud-Teams enthält. In »/etc/apt/sources.list.d/cloud.list« sorgt im<br />

Anschluss der Eintrag<br />

»deb http://ubuntu‐cloud.archive. canonical.com/ubuntu precise‐updates/<br />

folsom main«<br />

dafür, dass die benötigten Paketlisten tatsächlich auch in die Verwaltung<br />

des Systems gelangen. Die Installation einzelner Pakete erfolgt danach wie<br />

gewohnt über Werkzeuge wie »apt‐get« oder »aptitude«.<br />

Pakete auf dem Cloud Controller<br />

Der Host »alice« spielt im Beispiel den Cloud Controller; damit der Host<br />

diese Aufgabe erfüllen kann, benötigt er den Basis-Satz an Paketen für<br />

OpenStack. Die folgenden Pakete samt Abhängigkeiten sind also Voraussetzung:<br />

n ntp<br />

n tgt / open-iscsi / open-iscsi-utils<br />

n rabbitmq-server<br />

n mysql-server / python-mysqldb<br />

n keystone / python-keystone / python-keystoneclient<br />

n glance / glance-api / glance-common / glance-registry / pythonglance<br />

n nova-api-metadata / nova-api-os-compute / nova-api-os-volume / novaapi-ec2<br />

n nova-cert / nova-common / nova-doc / nova-objectstore / nova-scheduler<br />

n nova-consoleauth / nova-novncproxy / python-nova / python-novaclient<br />

n openvswitch-switch<br />

n quantum-server / python-cliff / python-pyparsing<br />

n cinder-api / cinder-scheduler<br />

n cinder-volume / iscsitarget / open-iscsi / python-cinderclient<br />

n libapache2-mod-wsgi / openstack-dashboard / python-memcache<br />

Auf dem Compute-Host sind ebenfalls ein paar Pakete notwendig, jedoch<br />

deutlich weniger als auf dem Cloud Controller:<br />

n kvm / libvirt-bin / pm-utils<br />

n nova-compute-kvm<br />

n quantum-plugin-openvswitch-agent / bridge-utils<br />

Schließlich gibt es noch den Netzwerk-Knoten, der auch ein Basisset an<br />

Paketen braucht. Damit er tut wie ihm verheißen, dürfen die folgenden<br />

Pakete also nicht fehlen:<br />

n bridge-utils<br />

n quantum-plugin-openvswitch-agent / quantum-l3-agent / quantumdhcp-agent<br />

n python-keystone / python-keystoneclient<br />

deren Dienst voraussetzt. Deshalb ist es<br />

sinnvoll, mit der Keystone-Installation auf<br />

Alice zu beginnen. Direkt nach der Installation<br />

der Keystone-Pakete empfiehlt<br />

es sich, die Keystone-Konfiguration in<br />

»/etc/keystone/keystone.conf« per Editor<br />

zu bearbeiten.<br />

Wichtig ist, dass in der Zeile »admin_token<br />

= « ein entsprechender Wert als Admin-Token<br />

festgelegt wird. Das Admin-<br />

Token ist der Generalschlüssel für Open<br />

Stack: Wer den Wert kennt, kann nach<br />

Belieben Veränderungen in Keystone<br />

vornehmen. Es ist deshalb empfehlenswert,<br />

die Zugriffsrechte von »keystone.<br />

conf« so zu setzen, dass nur »root« die<br />

Datei lesen kann. Für das Beispiel kommt<br />

das Admin-Token »geheim« zum Einsatz.<br />

Keystone muss auch wissen, wo es seine<br />

eigene MySQL-Datenbank erreicht. Das<br />

geht über den SQL-Connection-String,<br />

der in »keystone.conf« innerhalb des<br />

»[sql]«-Blocks definiert ist. In der Standardkonfiguration<br />

verweist die Datei dort<br />

auf eine SQlite-Datenbank, für das konkrete<br />

Beispiel – MySQL ist auf Alice beheimatet<br />

– ist der Eintrag im Hinblick auf<br />

die zuvor angelegte MySQL-Datenbank<br />

wie folgt zu setzen:<br />

[sql]<br />

connection = mysql://keystonedbadmin:U<br />

Ue0Ud7ra@192.168.122.111/keystone<br />

idle_timeout = 200<br />

Damit Keystone weiß, wie es seine<br />

Service-Definitionen zu speichern hat,<br />

sollten in »keystone.conf« außerdem die<br />

folgenden Einträge zugegen sein:<br />

[identity]<br />

driver = keystone.identity.backends.sql.U<br />

Identity<br />

[catalog]<br />

driver = keystone.catalog.backends.sql.U<br />

Catalog<br />

»keystone.conf« ist damit bereits fertig;<br />

wenn die Datei gespeichert und der Editor<br />

geschlossen ist, folgt im nächsten<br />

Schritt das Anlegen aller von Keystone<br />

benötigten Tabellen in seiner Datenbank.<br />

Das geht mit dem dafür vorgesehenen<br />

Listing 1: Datenbanken anlegen<br />

Die folgenden Befehle legen die in MySQL benötigten Datenbanken an:<br />

mysql ‐u root


Virtualisierung<br />

Open Stack<br />

Werkzeug: »keystone‐manage db_sync«.<br />

Im Anschluss startet »service keystone<br />

restart« den Dienst neu, sodass er einsatzbereit<br />

ist.<br />

Des Admins erste Handlung nach der<br />

Konfiguration ist es sinnvollerweise, einen<br />

Grundstock an Tenants und Benutzern<br />

anzulegen. In der Praxis geschieht<br />

das nicht händisch, sondern mittels vorgefertigter<br />

Skripte. Ein speziell auf diesen<br />

Artikel abgestimmtes Skript findet sich<br />

unter [1]. Es nutzt den zuvor in »keystone.conf«<br />

genutzten Schlüssel »geheim«<br />

und legt damit einen Tenant namens<br />

»admin« an, dem ein Benutzer gleichen<br />

Namens angehört und der als Passwort<br />

ebenfalls »geheim« nutzt. Zudem kümmert<br />

sich das Skript darum, dass ein<br />

»service«-Tenant entsteht, der Benutzer<br />

für sämtliche Dienste enthält und für jeden<br />

dieser Benutzer als Passwort auch<br />

Das Netzwerk der Wolke<br />

OpenStack Folsom bringt Quantum als zentrale<br />

Komponente für das Netzwerk. Die Komponente<br />

hilft dabei, Netzwerke zu virtualisieren – damit<br />

sie diese Rolle wahrnehmen kann, muss der Admin<br />

allerdings verstehen, wie Quantum im Ansatz<br />

funktioniert und welche Voraussetzungen<br />

auf den einzelnen Knoten zu erfüllen sind, damit<br />

das Quantum-Prinzip funktioniert.<br />

Grundsätzlich gilt: In Quantum bekommt der<br />

Admin es mit einer Reihe von Netzwerken zu<br />

tun, die die Kommunikation der Knoten untereinander<br />

und der virtuellen Maschinen ermöglichen.<br />

Die Quantum-Entwickler unterscheiden<br />

in diesem Falle zwischen vier verschiedenen<br />

Netzwerken (Abbildung 1)<br />

Das Management-Network ist das Netzwerk, das<br />

die physikalischen Server der OpenStack-Installation<br />

nutzen, um miteinander zu kommunizieren.<br />

Über dieses Netzwerk laufen beispielsweise<br />

interne Anfragen an den Keystone-Dienst, der<br />

für die Autentifizierung innerhalb des Setups<br />

verantwortlich ist. In diesem Beispiel ist das<br />

Management-Netz 192.168.122.0/​24, und alle drei<br />

Knoten haben eine direkte Verbindung in dieses<br />

Netz über die Netzwerkschnittstelle eth0.<br />

»alice« hat dabei die IP-Adresse 192.168.122.111,<br />

»Bob« hat die IP 192.168.122.112 und »Charlie«<br />

hat die IP-Adresse 192.168.122.113. Zudem geht<br />

das Beispiel davon aus, dass die Default-Route<br />

aller drei Rechner zur Außenwelt ebenfalls in<br />

diesem Netzwerk liegt und dass das Default-<br />

Gateway in allen Fällen 192.168.122.1 ist (Abbildung<br />

2). Hinzu kommt das Data Network: Dieses<br />

nutzen die virtuellen Maschinen auf dem Comute-Host<br />

(Bob), um mit dem Netzwerk-Dienst<br />

auf Charlie zu sprechen. Das Data-Netz ist im<br />

Beispiel 192.168.133.0/​24, Bob hat als IP-Adresse<br />

in diesem Netz 192.168.133.112 und Charlie hat<br />

192.168.133.113 – auf beiden Hosts liegt das Netz<br />

auf dem Interface »eth1« an, das seinerseits<br />

auch als Bridge für die virtuellen Maschinen<br />

dient (diese werden IP-Adressen im privaten<br />

Netzwerk 10.5.5.0/​24 haben, um miteinander zu<br />

sprechen).<br />

Weiterhin existiert das »External Network«:<br />

Aus diesem beziehen die virtuellen Maschinen<br />

später öffentliche IP-Adressen. In Ermangelung<br />

echter öffentlicher IPs nutzt das Beispiel für<br />

dieses Netz »192.168.144.0/25«. Weil in Quantum<br />

die einzelnen VMs die öffentlichen IP-Adressen<br />

nicht direkt zugewiesen bekommen, sondern der<br />

Zugriff hierauf über den Netzknoten und dort<br />

gesetzte iptables-DNAT-Regeln funktioniert, benötigt<br />

nur der Host für Quantum, also Charlie,<br />

ein Interface in diesem Netz.<br />

Die Zuteilung einer IP erfolgt durch Quantum automatisch,<br />

sodass auf Charlie nur das Interface<br />

»eth2« vorhanden sein muss – aus der Konfiguration<br />

erfährt Quantum im weiteren Verlauf,<br />

dass es dieses Interface für das öffentliche Netz<br />

nutzen soll.<br />

Schließlich existiert das »API«-Netzwerk: Dieses<br />

ist nicht zwingend vorgeschrieben, erlaubt<br />

es aber, die APIs der OpenStack-Dienste über<br />

ein öffentliches Interface der Außenwelt zur<br />

Verfügung zu stellen. Das Netz kann im gleichen<br />

Segment liegen, wie das External Network<br />

(beispielsweise könnte das gesamte zur<br />

Verfügung stehende Netz<br />

192.168.144.0/​24 sein, auf<br />

Quantum-Ebene ist das<br />

definierte öffentliche Netz<br />

dann 192.168.144.0/​25, und<br />

das Netz 192.168.144.129/​<br />

25 steht als API-Netz zur<br />

Verfügung). Falls die APIs<br />

von OpenStack von außen erreichbar sein wollen,<br />

muss auf Alice dafür ein Interface existieren,<br />

das eine entsprechende IP enthält.<br />

Asynchrones Routing aktivieren<br />

Eine überaus lästige Default-Einstellung in<br />

Ubuntu 12.04 führt bisweilen zu Problemen, gerade<br />

in Setups mit OpenStack Quantum. Ubuntu<br />

setzt ab Werk den Wert für die »rp_filter«-<br />

Syscontrol-Variable auf 1. Das bedeutet, dass<br />

ein Antwortpaket für einen Netzwerkrequest<br />

nur über genau das Interface den Weg in das<br />

System nehmen darf, über das die ursprüngliche<br />

Anfrage das System zuvor verlassen hat.<br />

In Quantum-Setups kann es allerdings durchaus<br />

vorkommen, dass Pakete über andere Interfaces<br />

rausgehen, als deren Antworten den Weg zurück<br />

in das System finden. Es empfiehlt sich daher,<br />

das asynchrone Routing auf Ubuntu großflächig<br />

zu erlauben. In »/etc/sysctl.conf« erledigen das<br />

die folgenden beiden Einträge:<br />

net.ipv4.conf.all.rp_filter = 0<br />

net.ipv4.conf.default.rp_filter = 0<br />

Selbstverständlich muss auch das Packetforwarding<br />

aktiviert sein:<br />

net.ipv4.ip_forward=1<br />

Ein Reboot im Anschluss sorgt dafür, dass die<br />

neue Konfiguration aktiv ist.<br />

IPTables und Masquerading<br />

Last but not least ist freilich auch die Firewall-<br />

Konfiguration der Hosts zu beachten. Grundsätzlich<br />

gilt, dass iptables-Regeln nicht den Traffic<br />

der einzelnen Interfaces behindern sollten.<br />

Kommt wie im Beispiel zudem ein Gateway für<br />

das externe Netzwerk zum Einsatz, das kein<br />

vom Provider separat gesteuerter Router ist,<br />

sondern ein lokaler Rechner, so sind auf diesem<br />

die Regeln für DNAT und SNAT so zu setzen, dass<br />

sie zum Setup passen.<br />

Abbildung 1: Ein OpenStack-Standardsetup sieht mindestens vier<br />

Netzwerke vor, die jeweils eine eigene Rolle spielen.<br />

Abbildung 2: Nach dem Anlegen der Netzwerke in Quantum stehen zwei Netzwerke<br />

sowie ein Router zur Verfügung.<br />

74 Ausgabe 01-2013 Admin www.admin-magazin.de


Open Stack<br />

Virtualisierung<br />

»geheim« verwendet. Das Skript ist lediglich<br />

herunterzuladen und dann auf Alice<br />

über die Kommandozeile auszuführen.<br />

Endpoints in Keystone<br />

definieren<br />

Keystone führt die sogenannte »Endpoint«-<br />

Datenbank. Ein Endpoint in Keystone ist<br />

die Adresse einer API eines der Open-<br />

Stack-Dienste. Möchte ein Open-Stack-<br />

Dienst wissen, wie er mit der API eines<br />

anderen Dienstes direkt kommunizieren<br />

kann, so erhält er diese Information<br />

aus eben dieser Liste in Keystone. Für<br />

Admins bedeutet das, dass sie die Liste<br />

anfänglich anzulegen haben; auch diese<br />

Aufgabe übernimmt ein Skript, das unter<br />

[2] zu finden ist. Wenn das Skript den<br />

Weg auf die Platte gefunden hat, klappt<br />

sein Aufruf so:<br />

./endpoints.sh \<br />

‐m 192.168.122.111 \<br />

‐u keystonedbadmin \<br />

‐D keystone \<br />

‐p Ue0Ud7ra \<br />

‐K 192.168.122.111 \<br />

‐R RegionOne \<br />

‐E "http://192.168.122.111:35357/v2.0" \<br />

‐S 192.168.122.113 \<br />

‐T geheim<br />

Die einzelnen Parameter sind dabei deutlich<br />

weniger kryptisch als es auf den ersten<br />

Blick scheint. »‐m« gibt die Adresse<br />

an, unter der MySQL zu erreichen ist.<br />

»‐u«, »‐D« und »‐p« geben die Zugangsdaten<br />

für MySQL an (der Benutzer ist »keystonedbadmin«,<br />

die Datenbank »keystone«<br />

und das Passwort ist »Ue0Ud7ra«. Der<br />

Parameter »‐K« gibt an, auf welchem Host<br />

Keystone lauscht und »‐R« legt die Open<br />

Stack-Region fest, für die diese Angaben<br />

gelten. Über den Parameter bei »‐E«<br />

erfährt das Script, wo es sich selbst an<br />

Keystone anmelden muss, um die Änderungen<br />

überhaupt machen zu können.<br />

»‐S« gibt die Adresse für die Open<br />

Stack Object Storage Lösung mit Namen<br />

»Swift« an, die nicht Bestandteil dieses<br />

Howtos ist, aber später unter Umständen<br />

trotzdem noch das Setup erweitern soll.<br />

»‐T« bezeichnet das Admin-Token wie in<br />

»keystone.conf« festgelegt. Achtung: Das<br />

Skript ist für die Daten dieses Beispiels<br />

ausgelegt. Kommen beispielsweise andere<br />

IPs zum Einsatz, so ist das Skript<br />

entsprechend zu adaptieren.<br />

Hat das Hinzufügen der Endpoints funktioniert,<br />

ist Keystone bereit für den Einsatz<br />

in Open Stack.<br />

Open Stack-Credentials<br />

speichern<br />

Sobald Keystone scharf geschaltet ist,<br />

bedingt jede Interaktion mit dem Dienst<br />

die vorherige Autentifizierung. Sämtliche<br />

Open Stack-Tools für die Kommandozeile<br />

haben sich allerdings auf Umgebungsvariablen<br />

geeinigt, die die Anmeldung an<br />

Keystone vereinfachen. Sind diese Variablen<br />

definiert, müssen sich Admins nicht<br />

mehr um die händische Autentifizierung<br />

kümmern. Es empfiehlt sich, eine Datei<br />

namens ».openstack‐credentials« im<br />

persönlichen Ordner anzulegen. Im konkreten<br />

Beispiel könnte diese so aussehen<br />

wie in Listing 2.<br />

Anschließend lässt sich diese Datei mittels<br />

». .openstack‐credentials« in die<br />

laufende Umgebung einbinden. Danach<br />

sollten die Open Stack-Befehle auf der<br />

Kommandozeile klaglos funktionieren.<br />

Der Image-Automat Glance<br />

Keine Wolke ohne Images von Betriebssystemen:<br />

Damit Benutzer schnell und<br />

ohne großes Vorwissen virtuelle Maschinen<br />

starten können, haben Admins ihnen<br />

entsprechende Images zur Verfügung zu<br />

stellen – sonst wird es nichts mit der<br />

Wolke. Glance übernimmt in Open Stack<br />

genau diese Aufgabe. De facto besteht<br />

der Dienst aus zwei einzelnen Komponenten:<br />

Der API (»glance‐api«) sowie der<br />

Registry (»glance‐registry«). Erstere bietet<br />

ein Interface für alle anderen Open Stack-<br />

Dienste, zweitere kümmert sich um die<br />

Pflege der Datenbank von Glance selbst.<br />

Den Anfang macht die Konfigurationsdatei<br />

von »glance‐api«. Die liegt in<br />

»/etc/glance/glance‐api.conf«. An ihrem<br />

Ende findet sich ein Eintrag namens<br />

»[keystone_authtoken]«. Ein solcher oder<br />

ähnlicher Eintrag begegnet Open Stack-<br />

Admins häufig – jeder Dienst muss sich,<br />

bevor er mit Keystone sprechen darf,<br />

selbst erstmal bei ihm anmelden. Die zitierte<br />

Stelle in »glance‐api.conf« ist der<br />

richtige Ort, um dafür die Credentials zu<br />

definieren. Der Vorteil: Die Konfiguration<br />

ist für fast alle Open Stack-Dienste ähnlich<br />

aus oder sogar identisch.<br />

Für den weiteren Verlauf des Artikels<br />

gilt deshalb: »auth_host« ist stets<br />

»192.168.122.111 «, »admin_tenant_name«<br />

ist stets »service« und »admin_password«<br />

ist stets »geheim«. »admin_user« ist stets<br />

der Name des Open Stack-Dienstes, der<br />

sich an Keystone anmelden soll, also<br />

»glance« im vorliegenden Fall, » nova« für<br />

Open Stack Nova, »quantum« für Open<br />

Stack Quantum und so weiter. Einige<br />

Dienste fragen nach einer »auth_url« –<br />

diese ist im Rahmen dieses Artikels stets<br />

»http://192.168.122.111:5000/v2.0/«.<br />

Wenn im lokalen Setup andere IPs zum<br />

Einsatz kommen, so sind diese freilich<br />

für »auth_host« und »auth_url« zu nutzen.<br />

Damit steht fest, was in »glance‐api.<br />

conf« für die jeweiligen Werte bei »[keystone_authtoken]«<br />

einzusetzen ist.<br />

Wie zuvor »keystone.conf« findet sich<br />

auch in »glance‐api.conf« die SQL-Anweisung<br />

in einer Zeile, die mit »sql_connection«<br />

beginnt. Nach der Glance-Installation<br />

steht dort eine SQLite-Datenbank,<br />

im konkreten Beispiel ist die SQL-Verbindung<br />

diese:<br />

sql_connection = mysql://glancedbadmin:U<br />

ohC3teiv@192.168.122.111/glance<br />

Weiter unten im File findet sich eine<br />

Sektion namens »[paste_deploy]«. Hier<br />

möchte Glance wissen, welche Authentifizierungs-Methode<br />

es verwenden soll<br />

und wo es nähere Einstellungen dazu<br />

findet. Für »glance‐api.conf« lautet der<br />

korrekte Eintrag bei »config_file =« in<br />

dem Abschnitt folglich »/etc/glance/<br />

glance‐api‐paste.ini« und bei »flavor=«<br />

führt der Wert » keystone« zum gewünschten<br />

Resultat. Nach diesen Änderungen ist<br />

die Datei für den Einsatz bereit. Analog<br />

zu ihr ist »/etc/glance/glance‐registry.<br />

conf« zu bearbeiten: Die Werte für die<br />

verschiedenen »auth_«-Variablen sind<br />

dieselben wie für »glance‐api«, auch die<br />

Datenbankverbindung sowie der Text<br />

Listing 2: Credentials<br />

01 OS_AUTH_URL="http://192.168.122.111:5000/v2.0/"<br />

02 OS_PASSWORD="geheim"<br />

03 OS_TENANT_NAME="admin"<br />

04 OS_USERNAME="admin"<br />

05 OS_NO_CACHE=1<br />

06 <br />

07 export OS_AUTH_URL OS_PASSWORD<br />

08 export OS_TENANT_NAME OS_USERNAME<br />

09 export OS_NO_CACHE<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

75


Virtualisierung<br />

Open Stack<br />

bei »flavor=« sind identisch. Lediglich<br />

bei »config_file« unterscheidet sich der<br />

Eintrag, denn für »glance‐registry.conf«<br />

ist dieser entsprechend »/etc/glance/<br />

glance‐registry‐paste.ini«. Damit ist die<br />

Konfiguration der Glance-Komponenten<br />

fertig.<br />

Höchste Zeit also, die Tabellen in den<br />

Glance-Datenbanken anzulegen. Dabei<br />

hilft »glance‐manage«:<br />

glance‐manage version_control 0<br />

glance‐manage db_sync<br />

Es folgt ein Neustart der beiden Glance-<br />

Dienste mittels »service glance‐api restart<br />

&& service glance‐registry restart«.<br />

Nun ist der Image-Store bereit für das<br />

erste Test-Image. Glücklicherweise unterstützt<br />

der Glance-Client den direkten<br />

Download von Images aus dem Netz. Um<br />

ein Ubuntu-12.04-Cloud-Image in den<br />

Image-Store aufzunehmen, genügt daher<br />

der folgende Befehl aus Listing 3.<br />

Im Anschluss sollte »glance image‐list«<br />

das entsprechende Image auch anzeigen<br />

– sobald im Feld »Status« der Wert »AC-<br />

TIVE« aufscheint, ist das Image bereit für<br />

die Nutzung.<br />

Quantum: Die Netzwerk-<br />

Hydra<br />

Zweifellos die aufwendigste Konfiugurationsarbeit<br />

erwartet Admins, wenn es um<br />

den Netzwerkdienst Quantum geht. Denn<br />

damit dieser funktioniert, sind auf allen<br />

drei Hosts Dienste einzurichten. Den<br />

Anfang macht Alice: Hier muss der eigentliche<br />

Quantum-Server samt entsprechendem<br />

Plugin laufen. Dieses Beispiel<br />

nutzt als Plugin OpenVSwitch, sodass<br />

der Quantum-Server selbst wie auch das<br />

OpenVSwitch-Plugin zu konfigurieren<br />

sind (Abbildung 3).<br />

Nach der Installation ist zunächst »/etc/<br />

quantum/api‐paste.ini« an der Reihe.<br />

Im Abschnitt »[filter:authtoken]« finden<br />

Listing 3: Image integrieren<br />

01 glance image‐create \<br />

02 ‐‐copy‐from http://uec‐images.<br />

ubuntu.com/releases/12.04/release/<br />

ubuntu‐12.04‐server‐cloudimg‐amd64‐disk1.img \<br />

03 ‐‐name="Ubuntu 12.04 cloudimg amd64" \<br />

04 ‐‐is‐public true \<br />

05 ‐‐container‐format ovf \<br />

06 ‐‐disk‐format qcow2<br />

Abbildung 3: Auf der Kommandozeile verrät der Befehl »ovs‐vsctl show«, was Quantum in der OpenVSwitch-<br />

Konfiguration verändert.<br />

sich die schon von Glance her bekannten<br />

Einträge, die durch die Werte für dieses<br />

Beispielsetup zu ersetzen sind. Als<br />

»auth_port« muss zwingend »35357« in<br />

der Datei stehen. Dann folgt die Konfiguration<br />

des OVS-Plugins: Dessen Konfigurationsdatei<br />

ist » /etc/quantum/plugins/<br />

openvswitch/ovs_quantum_plugin.ini«.<br />

Darin findet sich eine Zeile, die mit »sql_<br />

connection« anfängt und die Quantum<br />

verrät, wie es auf seine eigene MySQL-<br />

Datenbank zugreift. Hier lautet der korrekte<br />

Eintrag »sql_connection = mysql://<br />

quantumdbadmin:wozohB8g@192.168.1<br />

22.111/quantum«. Weiter unten sind in<br />

der Datei hinter der Zeile »# Example:<br />

bridge_mappings = physnet1:br-eth1«<br />

folgende drei Zeilen einzutragen:<br />

tenant_network_type = gre<br />

tunnel_id_ranges = 1:1000<br />

enable_tunneling = True<br />

Der Einfachheit halber empfiehlt es sich,<br />

diese Datei nun zu speichern und an die<br />

gleiche Stelle auf »bob« zu kopieren (für<br />

die Hosts Bob und Charlie werden später<br />

allerdings noch Veränderungen notwendig).<br />

Auch »/etc/quantum/api‐paste.ini«<br />

lässt sich eins zu eins auf den beiden<br />

Knoten übernehmen.<br />

Auf Alice lässt sich der Quantum-Server<br />

(Abbildung 4) samt OpenVSwitch-Plugin<br />

nun schon starten: »service quantum‐server<br />

start« erledigt das.<br />

Auf Bob läuft kein Quantum-Server, nachdem<br />

es sich allerdings im Beispiel um den<br />

Computing-Knoten handelt, braucht Bob<br />

zwingend den » quantum‐plugin‐openvswitch‐agent«,<br />

den Agent, der zum<br />

OpenVSwitch-Plugin gehört. Über ihn erhält<br />

Bob später sämtliche relevanten Netzwerkinfos<br />

von Alice (»quantum‐server«)<br />

und Charlie (»DHCP«- und »L3«-Plug in),<br />

um sein eigenes Netzwerk richtig zu konfigurieren.<br />

Das Paket für diesen Agent<br />

sollte bereits vorhanden sein, sodass jetzt<br />

noch die Agent-Konfiguration ansteht.<br />

Die findet sich in » /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.<br />

ini«. Hinter der Zeile »# Example: bridge_<br />

mappings = physnet1:br‐eth1« sorgt der<br />

folgende Absatz für die korrekte Funktion<br />

des Agents auf Bob:<br />

tenant_network_type = gre<br />

tunnel_id_ranges = 1:1000<br />

integration_bridge = br‐int<br />

tunnel_bridge = br‐tun<br />

local_ip = 192.168.133.112<br />

enable_tunneling = True<br />

Mit diesen Zeilen startet der Open-<br />

VSwitch-Agent automatisch einen Tunnel<br />

zwischen Bob und dem Netzwerk-Knoten<br />

Charlie, über den die beiden Hosts dann<br />

Informationen austauschen.<br />

76 Ausgabe 01-2013 Admin www.admin-magazin.de


Open Stack<br />

Virtualisierung<br />

Wenn die Änderungen an »ovs_quantum_plugin.ini«<br />

vollzogen sind, sollte<br />

ein Duplikat der Datei von Bob am gleichen<br />

Ort auf Charlie landen, wobei für<br />

Charlie die IP-Adresse »192.168.133.112«<br />

durch »192.168.133.113« zu ersetzen<br />

ist. Auf beiden Hosts – Bob und Charlie<br />

– ist zusätzlich in » /etc/quantum/<br />

quantum.conf« noch »# rabbit_host« zu<br />

entkommentieren und mit dem Wert<br />

»192.168.122.111« zu versehen – nur so<br />

wissen die Agents auf Bob und Charlie,<br />

wie sie den RabbitMQ-Server auf Alice<br />

erreichen.<br />

Schließlich braucht Charlie noch spezifische<br />

Veränderungen, weil auf ihm<br />

auch der »quantum‐l3‐agent« und der<br />

»quantum‐dhcp‐agent« laufen. Die beiden<br />

Dienste versorgen VMs im Setup<br />

später einerseits mit DHCP-Adressen,<br />

und andererseits stellen sie per »iptables«<br />

die Möglichkeit her, die VMs über<br />

öffentliche IP-Adressen zu erreichen (im<br />

Beispiel 192.168.144.0/​25). Die gute<br />

Nachricht ist: Der DHCP-Agent braucht<br />

überhaupt keine Veränderungen an der<br />

Konfiguration – der L3-Agent hingegen<br />

schon: Seine Konfigurationsdatei ist<br />

»/etc/quantum/l3_agent.ini«.<br />

Externe Netze anlegen<br />

Eingangs sind wie gewohnt die Werte<br />

für die »auth_«-Variablen in die Konfiguration<br />

einzutragen. Weiter unten in<br />

der Datei findet sich überdies der Eintrag<br />

»# metadata_ip =«, der zu entkommentieren<br />

ist und im Beispiel den Wert<br />

»192.168.122.111« enthält – mehr zum<br />

Metadaten-Server später. Die Konfigurationsdatei<br />

bedarf weiterer Anpassungen,<br />

die derzeit allerdings noch nicht möglich<br />

sind. Denn dafür wären die IDs des<br />

externen Routers wie auch die ID des<br />

externen Netwerks nötig, die allerdings<br />

erst exisiteren, nachdem die Netzwerke<br />

entsprechend angelegt sind. Genau das<br />

ist daher der nächste Schritt: Das Anlegen<br />

der Netzwerke in Quantum. Dieser<br />

Schritt findet auf Alice statt.<br />

Weil auch das Anlegen von Netzwerken<br />

einige Kommandos umfasst, stellt der<br />

Autor dieses Artikels ein Skript unter [3]<br />

zur Verfügung. Dieses legt die im Beispiel<br />

vorgesehenen Netzwerke an: Einerseits<br />

ein „privates“ Netzwerk für die Kommunikation<br />

der virtuellen Maschinen untereinander,<br />

andererseits auch das pseudoöffentliche<br />

Netzwerk »192.168.144.0/25«,<br />

aus dem die VMs dann im weiteren Verlauf<br />

dynamische IP-Adressen („floating<br />

IPs“) erhalten. Nach dem Download<br />

und dem Ausführen des Skriptes gilt es,<br />

die Quantum-interne ID des Routers für<br />

das Floating-Netz wie auch die ID des<br />

Floating-Netztes selbst in Erfahrung zu<br />

bringen. Den ersten Wert fördert »quantum<br />

router‐list« auf den Bildschirm – der<br />

Wert bei »ID« in der Zeile für den Router<br />

»provider‐router« ist von Interesse. Dieser<br />

wiederum landet in der eben bereits bearbeiteten<br />

»/etc/quantum/l3_agent.ini« auf<br />

Charlie. Die ID des Floating-Netzwerkes<br />

lässt sich mit »quantum net‐list« erfragen<br />

– dabei ist der Wert des »ID«-Feldes<br />

beim Eintrag interessant, dessen Name<br />

» ext_net« ist. Der Wert landet in »/etc/<br />

quantum/l3_agent.ini« hinter dem Wert<br />

»gateway_external_net_id = «. Beide zu<br />

ändernden Werte sind auch zu entkommentieren,<br />

sodass die Quantum-Agents<br />

sie tatsächlich betrachten. Damit sind die<br />

Quantum-Konfigurationsdateien fertig.<br />

Mit Quantum kann es nun fast losgehen:<br />

Auf Bob und Charlie fehlen nur noch<br />

die internen Bridges, die OpenVSwitch<br />

verwendet, um die Quantum-Interfaces<br />

an die lokale Netzwerk-Konfiguration<br />

anzuschließen. Auf Bob und Charlie legt<br />

»ovs‐vsctl add‐br br‐int« die Bridge an,<br />

die für die VM-interne Kommunikation<br />

zuständig ist. Zusätzlich braucht Charlie<br />

auch die Bridge nach außen: » ovs‐vsctl<br />

add‐br br‐ext« und »ovs‐vsctl add‐port<br />

br‐ext eth2« erledigen die notwendige<br />

Konfiguration. Am Ende des Vorgangs<br />

steht ein Neustart aller Agents auf Bob<br />

und Charlie an: »restart quantum‐plugin‐openvswitch‐agent«<br />

sind sowohl<br />

auf Bob als auch auf Charlie notwen-<br />

dig, auf Charlie sorgt zudem »restart<br />

quantum‐l3‐agent« und »restart quantum‐dhcp‐agent«<br />

dafür, dass die Agents<br />

ihre Konfiguration neu laden.<br />

Direkt angenehm im Vergleich zu Quantum<br />

gestaltet sich die Konfiguration von<br />

Cinder. Die Komponente war in der letzten<br />

Open-Stack-Version Essex noch unter<br />

dem Namen »nova‐volume« Teil der<br />

Computing-Komponente, führt nun aber<br />

ein Eigenleben.<br />

Block-Storage mit Cinder<br />

Voraussetzung dafür, dass Cinder funktioniert,<br />

ist eine LVM-Volume-Gruppe<br />

namens »cinder‐volumes« auf dem Host,<br />

auf dem Cinder läuft. Meistens wird Cinder<br />

auf dem Cloud-Controller beheimatet<br />

sein, auch in diesem Beispiel werkelt das<br />

Programm auf Alice. Welche Storage-Devices<br />

Teil der LVM-Volume-Gruppe sind,<br />

ist Cinder übrigens herzlich egal – wichtig<br />

ist nur, dass es in dieser Volume-Gruppe<br />

selbst Volumes anlegen kann. Auf Alice<br />

ist entsprechend eine Volume-Gruppe<br />

»cinder‐volumes« für dieses Beispiel da.<br />

Nach der Installation der Cinder-Dienste<br />

ist der wichtigste Teil, dass in »/etc/<br />

cinder/cinder.conf« das Programm über<br />

»sql_connection« erfährt, wie es an seine<br />

Datenbank kommt. Der korrekte Eintrag<br />

im Rahmen des Artikels ist »sql_connection<br />

= mysql://cinderdbadmin:ceeShi4<br />

O@192.168.122.111:3306/cinder«. Anschließend<br />

steht »/etc/cinder/api‐paste.<br />

ini« auf dem Programm – die nötigen<br />

Anpassungen sind analog zu den Veränderungen<br />

von »api‐paste.ini« der anderen<br />

Programme, wobei die »service_«-<br />

Einträge die gleichen Werte erhalten wie<br />

ihre »auth_«-Pendants. »admin_user« ist<br />

»cinder«.<br />

Auch Cinder benötigt Tabellen in seiner<br />

MySQL-Datenbank, die das Kommando<br />

»cinder‐manage db sync« anlegt.<br />

Es folgt ein Restart der Cinder-Dienste:<br />

»for i in api scheduler volume; do restart<br />

cinder‐"$i"; done«. Zuletzt gilt es,<br />

einen lästigen Bug im »tgt«-iSCSI-Target<br />

Abbildung 4: Auf dem Cloud Controller läuft in einer Default-Installation nur der eigentliche Quantum-Server.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

77


Virtualisierung<br />

Open Stack<br />

zu umgehen, der sonst die korrekte Funktion<br />

von Cinder verhindert: Dazu ist der<br />

vorhandene Eintrag in »/etc/tgt/targets.<br />

conf« durch den Eintrag »include /etc/<br />

tgt/conf.d/cinder_tgt.conf« zu ersetzen.<br />

Danach ist Cinder bereits fertig – der<br />

Befehl »cinder list« sollte eine leere Liste<br />

ausgeben, es sind ja noch keine Volumes<br />

konfiguriert.<br />

Die Computing-Komponente<br />

Nova<br />

Abbildung 5: Nach der Installation der Compute-Komponenten fungiert Bob als Compute-Knoten.<br />

Bis zu dieser Stelle ist bereits eine bunte<br />

Mischung an Open-Stack-Diensten bereit<br />

für ihren Einsatz – der wichtigste<br />

von allen fehlt aber immer noch: Nova.<br />

Das ist die Computing-Komponente, also<br />

eben jene, die virtuelle Maschinen auf<br />

den Hosts der Wolke startet und sie später<br />

auch wieder stoppt. Um Nova auf<br />

Touren zu bringen, sind in diesem Szenario<br />

Dienste sowohl auf dem Host Alice<br />

als auch auf Bob zu konfigurieren. Der<br />

Host Charlie, der ja in diesem Beispiel<br />

als Netzwerk-Knoten fungiert, braucht<br />

dagegen keine eigene Nova-Komponente<br />

(Abbildung 5).<br />

Zuerst die gute Nachricht: Die Nova-Konfiguration<br />

in »/etc/nova/nova.conf« kann<br />

auf den Hosts Alice und Bob identisch<br />

sein, Gleiches gilt für die API-Paste-Datei<br />

von Nova, die »/etc/nova/api‐paste.ini«<br />

heißt. Bob als Compute-Knoten braucht<br />

im Anschluss nur noch einige kleinere<br />

Anpassungen der Qemu-Konfiguration<br />

von Libvirt, um virtuelle Maschinen starten<br />

zu können. Aber langsam und der<br />

Reihe nach.<br />

Den Anfang macht Alice. In »/etc/nova/<br />

api‐paste.ini« findet sich die Keystone-<br />

Konfiguration des Dienstes in dem Eintrag<br />

»[filter:authtoken]«. Die einzutragenden<br />

Werte sind äquivalent zu denen der<br />

»api‐paste.ini«-Files der anderen Dienste,<br />

als Wert für »admin_user« dient hier aber<br />

»nova«.<br />

Zudem finden sich in der Datei auch noch<br />

diverse Einträge, die den Begriff »volume«<br />

in ihrem Namen haben, zum Beispiel<br />

»[composite:osapi_volume]«. Sämtliche<br />

Einträge dieser Art, in deren Namen also<br />

das Wort »volume« vorkommt, muss<br />

der Admin aus der Konfiguration entfernen,<br />

weil sich unter Umständen sonst<br />

»nova‐api« und »cinder‐api« gegenseitig<br />

in die Haare geraten. Nach dieser Änderung<br />

ist »api‐paste.ini« an die gleiche<br />

Stelle auf Bob zu kopieren.<br />

nova.conf für Open Stack<br />

Compute<br />

Dann folgt die eigentliche Konfigurationsdatei<br />

der Compute-Komponente,<br />

die »/etc/nova/nova.conf« heißt. Eine<br />

generische Version der Datei stellt der<br />

Autor dieses Artikels unter [4] bereit.<br />

Eine Übersicht der möglichen Parameter<br />

für »nova.conf« ist auf der Open Stack-<br />

Website unter [5] verfügbar. Die Beispielkonfiguration<br />

lässt sich so in nahezu<br />

jeder Open-Stack-Umgebung verwenden,<br />

allerdings sind möglicherweise die in ihr<br />

benutzten IP-Adressen zu ändern. Sowohl<br />

Alice als auch Bob sollten die Datei<br />

als »/etc/nova/nova.conf« haben – ist sie<br />

an Ort und Stelle, folgt das Anlegen der<br />

Nova-Tabellen in MySQL auf Alice:<br />

nova‐manage db sync<br />

Die Konfiguration von Nova ist damit<br />

abgeschlossen, auf Bob sind allerdings<br />

noch Veränderungen an der Qemu-Konfiguration<br />

von Libvirt und an der Libvirt-<br />

Konfiugration selbst nötig. Die Qemu-<br />

Konfiguration von Libvirt liegt in »/etc/<br />

libvirt/qemu.conf« – am Ende des Files<br />

sind noch folgende Zeilen anzuhängen:<br />

cgroup_device_acl = [<br />

"/dev/null", "/dev/full", "/dev/zero",<br />

"/dev/random", "/dev/urandom",<br />

"/dev/ptmx", "/dev/kvm", "/dev/kqemu",<br />

"/dev/rtc", "/dev/hpet","/dev/net/tun",<br />

]<br />

Auch die Libvirt-Konfiguration selbst<br />

braucht eine Änderung – an das Ende<br />

von »/etc/libvirt/libvirtd.conf« gehören<br />

die folgenden Zeilen:<br />

listen_tls = 0<br />

listen_tcp = 1<br />

auth_tcp = "none"<br />

Diese Einträge sorgen dafür, dass Libvirt<br />

einen TCP/​IP-Socket öffnet, um später<br />

Funktionen wie Live-Migration zu unterstützen.<br />

Damit das auch wirklich funktioniert,<br />

ist in »/etc/default/libvirt‐bin«<br />

die Zeile »libvirtd_opts="‐d"« durch »libvirtd_opts="‐d<br />

‐l"« zu setzen.<br />

Anschließend wird ein Neustart aller betroffenen<br />

Komponenten fällig, auf Alice<br />

geht das mit »for i in nova‐api‐metadata<br />

nova‐api‐os‐compute nova‐api‐ec2<br />

nova‐objectstore nova‐scheduler<br />

nova‐novncproxy nova‐consoleauth<br />

nova‐cert; do restart "$i"; done«. Auf<br />

Bob sorgt der Befehl »for in in libvirt‐bin<br />

nova‐compute; do restart $i; done« für<br />

den Neustart der wichtigen Komponenten.<br />

Ein »nova‐manage service list « sollte<br />

Abbildung 6: Ist das Dashboard installiert, erlaubt es das bequeme Starten und Stoppen neuer virtueller<br />

Maschinen über die grafische Oberfläche.<br />

78 Ausgabe 01-2013 Admin www.admin-magazin.de


Open Stack<br />

Virtualisierung<br />

danach die Nova-Dienste auf Alice und<br />

Bob auflisten und dabei für jeden Dienst<br />

als Status „:-)“ eingetragen haben.<br />

Im Grunde ist die Wolke damit bereits<br />

einsatzbereit, über die Konsole ließen<br />

sich bereits virtuelle Maschinen starten.<br />

Was noch fehlt, ist das Open Stack-Dashboard<br />

(Abbilung 6), das als Service-Servicing-Portal<br />

Endbenutzern das Anlegen<br />

virtueller Maschinen ermöglicht.<br />

Das Open-Stack-Dashboard<br />

Dessen Konfiguration ist nicht weiter<br />

schwierig: Nach der Installation der benötigten<br />

Pakete auf Alice ist die Datei<br />

»/etc/openstack‐dashboard/local_settings.py«<br />

für diese Aufgabe von Interesse.<br />

Am Ende dieser Datei fehlen ein paar<br />

Einträge für die korrekte Funktion des<br />

Dashboards:<br />

OPENSTACK_HOST = '192.168.122.111'<br />

QUANTUM_ENABLED = True<br />

SWIFT_ENABLED = True<br />

Danach sorgt ein Neustart des Apache2-Webservers<br />

mittels »restart apache2«<br />

dafür, dass das Dashboard seine<br />

Konfiguration neulädt. Direkt im Anschluss<br />

steht das Webinterface unter<br />

»http://192.168.122.111/horizon« zur<br />

Verfügung (Abbildung 7) – der Login<br />

geschieht mit dem Benutzernamen<br />

»admin«, das Passwort ist »geheim«.<br />

Die Sache mit dem<br />

Metadata-Server<br />

Virtuelle Maschinen, die aus speziellen<br />

Images stammen – nämlich aus solchen<br />

Images, die offiziell für Cloud-Umge-<br />

bungen vorbereitet sind – zeichnen sich<br />

durch eine Besonderheit aus: Sie versuchen<br />

nämlich während des Bootvorgangs<br />

per HTTP-Request Informationen über<br />

sich selbst von einem Cloud-Metadatenserver<br />

zu erhalten. Diese Technik stammt<br />

ursprünglich aus Amazons EC2-Umgebung<br />

– sie stellt sicher, dass eine virtuelle<br />

Maschine ihren Hostname kennt und<br />

diverse Parameter beim Systemstart zur<br />

Verfügung hat, beispielsweise die Konfiguration<br />

hinsichtlich des zu startenden<br />

SSH-Servers.<br />

Die Ubuntu-UEC-Images sind ein gutes<br />

Beispiel für den Einsatz dieser Funktion:<br />

Eine Maschine, die aus einem Ubuntu-<br />

Image für UEC-Umgebungen stammt,<br />

führt eben jenes »cloud‐init« genannt<br />

Tool beim Starten aus. Das Schema ist<br />

immer das gleiche: Ein HTTP-Request auf<br />

die URL »http://169.254.169.254:80« soll<br />

die entsprechenden Details beim Cloud-<br />

Controller abfragen. Damit diese Technik<br />

funktioniert, ist einerseits eine entsprechende<br />

IPTables-Regel notwendig, die<br />

jene IP-Adresse auf den Computing-Knoten<br />

auf den „richtigen“ Cloud-Controller<br />

per DNAT-Regel weiterleitet.<br />

Der „richtige“ Controller ist in diesem<br />

Beispiel »nova‐api‐metadata«, der auf<br />

Alice am Port 8775 lauscht. Die gute<br />

Nachricht ist: Die DNAT-Regel setzt der<br />

L2-Agent auf den Compute-Knoten automatisch.<br />

Die schlechte: Damit auch der<br />

Rückkanal vom Cloud-Controller hin zu<br />

den VMs funktioniert, ist auf dem Cloud-<br />

Controller – also Alice – eine entsprechende<br />

Route zu setzen. Diese enthält als<br />

Netzwerk das private VM-Netzwerk (im<br />

Beispiel 10.5.5.0/​24) und als Gateway die<br />

IP-Adresse, die auf dem Netzwerk-Host<br />

als Gateway-IP für virtuelle Maschinen<br />

dient. Je nach Konfiguration unterscheidet<br />

sie sich. Um sie herauszufinden, sind<br />

zwei Arbeitsschritte nötig:<br />

Per »quantum router‐list« ist zunächst die<br />

ID des Routers zu finden, die das externe<br />

Netzwerk nutzt. Danach fördert der Befehl<br />

»quantum port‐list ‐‐ ‐‐device_id ID<br />

‐‐device_owner network:router_gateway<br />

« das Gateway zu Tage, im Beispiel also<br />

192.168.144.100. Die korrekte Route auf<br />

Alice setzt der Admin dann per »ip route<br />

add 10.5.5.0/24 via 192.168.144.100«.<br />

Danach klappt der Zugriff auf den Metadatenserver.<br />

Dieser doch etwas umständliche<br />

Prozess wird wohl in einer<br />

der kommenden Open Stack-Versionen<br />

durch eine neue und bequemere Prozedur<br />

ersetzt werden.<br />

Perspektiven<br />

Die hier vorgestellte Open Stack-Installation<br />

ist das grundlegende Setup, das<br />

aus drei Knoten eine Wolke konstruiert.<br />

Themen wie die Hochverfügbarkeit einzelner<br />

Dienste oder das Zuweisen von<br />

„öffentlichen“ IP-Adressen an die VMs<br />

behandelt dann der dritte Teil der Serie<br />

im kommenden Admin-<strong>Magazin</strong> 02/​2013<br />

ausführlich. (jcb)<br />

n<br />

Infos<br />

[1] Keystone-Data-Skript: [http:// people.​<br />

madkiss. org/ ~madkiss/ openstack/​<br />

keystone_data. sh]<br />

[2] Keystone-Endpoints-Skript: [http://​<br />

people. madkiss. org/ ~madkiss/ openstack/​<br />

endpoints. sh]<br />

[3] Quantum-Networking-Skript: [http://​<br />

people. madkiss. org/ ~madkiss/ openstack/​<br />

quantum‐networking. sh]<br />

[4] Beispielhafte nova.conf [http:// people.​<br />

madkiss. org/ ~madkiss/ openstack/ nova.​<br />

conf]<br />

[5] nova.conf-Referenz: [http:// docs.​<br />

openstack. org/ essex/ openstack‐compute/​<br />

admin/ content/ compute‐options‐reference.​<br />

html]<br />

Abbildung 7: Das Dashboard zeigt zu gestarteten VMs diverse Informationen wie die zugewiesene IP-Adresse<br />

und auch die Hardware-Konfiguration an.<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 <strong>Linux</strong>-Cluster-Stack<br />

für Debian GNU/​<strong>Linux</strong>.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

79


Test<br />

Exchange 2013<br />

© Wojciech Kaczkowski, 123RF<br />

Änderungen in Exchange Server 2013<br />

Neues Gewand<br />

Mit Exchange Server 2013 [1] hat Microsoft die neueste Version seiner<br />

Groupware-Lösung fertiggestellt. Dieser Artikel stellt die Neuerungen des<br />

Servers vor und berichtet, welche Funktionen weggefallen sind. Thomas Joos<br />

Schon während der Installation von Exchange<br />

Server 2013 fällt auf, dass der<br />

neue Server weitaus weniger Optionen<br />

anbietet. Die Serverrollen Hub-Transport<br />

und Unified-Messaging hat Microsoft gestrichen.<br />

Die Funktion der beiden Rollen<br />

übernehmen die Postfachserver und<br />

Clientzugriffserver in der neuen Version.<br />

Für den E-Mail-Transport in Exchange<br />

Server 2013 sind die drei Dienste Front-<br />

End Transport Service (FET), Hub Transport<br />

Service (HT) und Mailbox Transport<br />

Service (MT) zuständig, die jetzt zur<br />

Postfachserver-Rolle gehören.<br />

Die Transportdienste sind auch für die<br />

Umsetzung der verbesserten Transportregeln<br />

zuständig (Abbildung 1). Letztere<br />

tragen die Bezeichnung Data Loss Prevention<br />

(DLP) und sollen verhindern,<br />

dass sensible Daten noch das Firmennetz<br />

verlassen. Zusätzlich ist in Exchange Server<br />

2013 ein Virenscanner integriert. Die<br />

Server scannen alle ein- und ausgehenden<br />

E-Mails nach Viren. Unternehmen,<br />

die auf einen Virenscanner von Drittherstellern<br />

setzen, können diese Funktion<br />

natürlich deaktivieren.<br />

Hot gefixt<br />

Exchange Server 2013 lässt zwar generell<br />

in bestehende Organisationen mit<br />

Exchange Server 2007/​2010 installieren.<br />

Dazu ist aber das SP3 für Exchange Server<br />

2010 notwendig, sowie ein Hotfix für<br />

Exchange Server 2007. Ältere Versionen<br />

wie Exchange Server 2000/​2003 lassen<br />

sich nicht mit Exchange Server 2012 betreiben.<br />

Öffentliche Ordner-Datenbanken gibt es<br />

in Exchange Server 2013 in der bekannten<br />

Form nicht mehr, aber öffentliche<br />

Ordner sind natürlich weiterhin verfügbar.<br />

Gemeinsame Inhalte werden jetzt<br />

über spezielle Postfächer zur Verfügung<br />

gestellt, die wiederum zur Ausfallsicherheit<br />

mit Datenbankverfügbarkeits-Gruppen<br />

(DAG) abgesichert werden. Diese<br />

sind auch in der neuen Version noch<br />

verfügbar. Öffentliche Ordner sind daher<br />

in Exchange Server 2013 als Postfach innerhalb<br />

der Postfachdatenbank abgebildet.<br />

Um öffentliche Ordner zu nutzen,<br />

erstellen Sie zunächst ein Postfach für<br />

öffentliche Ordner und danach die öffentlichen<br />

Ordner in diesem Postfach.<br />

Exchange Administrative<br />

Center<br />

Die Verwaltung der Exchange-Infrastruktur<br />

findet vermehrt im erweiterten und<br />

webbasierten Exchange Administration<br />

Center (EAC) statt. Es gibt auch weiterhin<br />

die Exchange Verwaltungsshell, die jetzt<br />

auf der Powershell 3.0 basiert. Die Exchange-Verwaltungskonsole<br />

gibt es in Exchange<br />

Server 2013 nicht mehr. Die EAC<br />

ist nach der Installation über »https://<br />

Servername/ecp« erreichbar (Abbildung<br />

2). Sie haben auch die Möglichkeit,<br />

Office 365 an diese Konsole anzubinden.<br />

Die Kommunikation von Outlook und<br />

Exchange findet in den neuen Versionen<br />

über HTTP(S) statt, MAPI findet keine<br />

Verwendung mehr. Aus diesem Grund<br />

lassen sich nur noch Outlook 2007/​2010<br />

82 Ausgabe 01-2013 Admin www.admin-magazin.de


Exchange 2013<br />

Test<br />

und 2013 an Exchange Server 2013 anbinden.<br />

Ältere Versionen, zum Beispiel<br />

Outlook 2000/​2003, werden nicht mehr<br />

unterstützt.<br />

Die Datenbankverfügbarkeitsgruppen<br />

(DAG) gibt es bereits in Exchange Server<br />

2010. Diese haben als Betriebssystem<br />

Windows Server 2008/​2008 R2 <strong>Enterprise</strong>/​Datacenter<br />

als Betriebssystem vorausgesetzt.<br />

Da in Windows Server 2012<br />

die Editionen Standard/​Datacenter identisch<br />

sind, und es keine <strong>Enterprise</strong>-Edition<br />

mehr gibt, lassen sich DAG auch mit<br />

Windows Server 2012 Standard nutzen.<br />

DAG sind auch Bestandteil der Standard-<br />

Edition von Exchange Server 2013.<br />

Das Verschieben von Postfächern zu Exchange<br />

Server 2013 hat Microsoft ebenfalls<br />

verbessert. Es lassen sich mehr Postfächer<br />

und E-Mail-Benachrichtigungen<br />

auf einmal verschieben. Bei Problemen<br />

kann der Assistent wiederholen, und<br />

Postfächer können priorisiert werden.<br />

Außerdem besteht die Möglichkeit, den<br />

Zugriff nach dem Verschieben erst nach<br />

einer Überprüfung freizuschalten.<br />

Exchange Server 2013<br />

installieren<br />

Um Exchange Server 2013 zu installieren,<br />

ist auf dem Server die Erweiterung<br />

Microsoft Unified Communications Managed<br />

API 4.0, Core Runtime 64-Bit [2]<br />

notwendig, ebenso wie Microsoft Office<br />

2010 Filter Packs – Version 2.0 [3]<br />

und Microsoft Office 2010 Filter Packs<br />

– Version 2.0 – Service Pack 1 [4]. Diese<br />

drei Voraussetzungen müssen Sie manuell<br />

installieren, alles andere kann der<br />

Exchange-Installationsassistent automatisch<br />

laden. Die neue Version ist nur als<br />

64-Bit-System verfübar. Die Domäne darf<br />

zwar auf Domänencontroller basieren,<br />

die mit 32-Bit-Versionen von Windows<br />

Server 2003 laufen, Microsoft empfiehlt<br />

aber auch, die Domänencontroller mit<br />

einem 64-Bit-System zu installieren.<br />

Microsoft empfiehlt für Postfachserver<br />

mindestens 8 GByte freien Arbeitsspeicher,<br />

für Clientzugriff-Server mindestens<br />

4 GByte. Sie können Exchange nicht auf<br />

Core-Servern installieren, es ist eine vollständige<br />

Installation von Windows Server<br />

2008 R2 oder am besten Windows Server<br />

2012 notwendig. Die Verwaltungstools<br />

von Exchange Server 2013 können Sie<br />

Abbildung 1: Mit neuen Transportregeln lässt sich Exchange Server 2013 besser absichern.<br />

auch auf Arbeitsstationen mit Windows<br />

7/​8 installieren.<br />

Erweitertes Schema<br />

Vor der Installation von Exchange Server<br />

2013 bietet es sich an, über den Server-<br />

Manager die Remoteserververwaltungs-<br />

Tools für Active Directory auf dem Exchange-Server<br />

zu installieren, das Snap-In<br />

Active Directory-Schema zu starten und<br />

über das Kontextmenü eine Verbindung<br />

zum Schemamaster aufzubauen. Wie<br />

jede neue Exchange-Version erweitert<br />

auch Exchange Server 2013 das Schema.<br />

Bei einer Neuinstallation von Exchange<br />

Server 2013 geben Sie den Befehl »setup<br />

Abbildung 2: Die Verwaltung von Exchange Server 2013 findet webbasiert statt.<br />

/prepareAd /IAcceptExchangeServer-<br />

LicenseTerms /OrganizationName: Organisationsname«<br />

ein, damit der Assistent<br />

das Active Directory-Schema erweitert.<br />

Neben Schemaerweiterungen und Rechten,<br />

legen diese Befehle eine neue OU mit<br />

den entsprechenden Sicherheitsgruppen<br />

an. Mit »setup /PrepareAllDomains« bereiten<br />

Sie alle Domänen der Gesamtstruktur<br />

für Exchange vor.<br />

Die Schemaerweiterungen sollten Sie<br />

am besten direkt auf dem Schemamaster<br />

durchführen. Welcher das in der Gesamtstuktur<br />

ist, lässt sich über »dsquery<br />

server ‐hasfsmo schema« erfahren. In<br />

einigen Fällen erscheint ein Schema-Erweiterungsfehler<br />

mit der Nummer 8224.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

83


Test<br />

Exchange 2013<br />

Abbildung 3: Den E-Mail-Fluss verwalten Sie in der Exchange-Verwaltungskonsole an der zentralen Stelle<br />

»Nachrichtenfluss«.<br />

Dieser ist vor allem auf virtuellen Servern<br />

häufig. Das Problem liegt an TCP Chimney<br />

Offload and Receive Side Scaling, da<br />

hier die Funktionen von der CPU, nicht<br />

der Netzwerkkarte berechnet werden.<br />

Das Problem lässt sich lösen, indem man<br />

die beiden Funktionen deaktiviert. Das<br />

funktioniert in der Befehlszeile mit:<br />

netsh int tcp set global rss=disabled<br />

netsh int tcp set global chimney=disabled<br />

Der Befehl »netsh int tcp show global«<br />

zeigt den Status an.<br />

E-Mail-Versand und<br />

‐Empfang konfigurieren<br />

Der Empfang- und Versand von E-Mails<br />

setzt sich aus verschiedenen Bereichen<br />

zusammen. Nach der Installation kann<br />

ein Exchange-Server zunächst noch<br />

keine E-Mails empfangen und senden.<br />

Sie müssen dazu erst einige Einstellungen<br />

in der Exchange-Verwaltungskonsole<br />

vornehmen. Hier fällt auf, dass Microsoft<br />

die verschachtelte Struktur der alten Exchange-Verwaltungskonsole<br />

überarbeitet<br />

und die notwendigen Befehle in einen<br />

gemeinsamen Bereich integriert hat:<br />

»E‐Mail‐Empfang – Exchange« nimmt<br />

zunächst nur E-Mails für Domänen an,<br />

die im Menü »Nachrichtenfluss« bei »Akzeptierte<br />

Domänen« hinterlegt sind (Abbildung<br />

3). Damit ein Exchange-Server<br />

E-Mails entgegennehmen kann, muss ein<br />

Empfangsconnector erstellt und so konfiguriert<br />

sein, dass er E-Mails vom sendenden<br />

Server akzeptiert. Empfangsconnectoren<br />

finden Sie über »Nachrichtenfluss<br />

| Empfangsconnectors«. Standardmäßig<br />

legt Exchange bereits Connectoren an.<br />

Damit Exchange-Server E-Mails intern<br />

zustellen können, muss die E-Mail-<br />

Adresse in der E-Mail in der Organisation<br />

vorhanden sein. Welche E-Mail-<br />

Adressen der Server an die Anwender<br />

verteilt, sehen Sie auf der Registerkarte<br />

»E‐Mail‐Adressenrichtlinie« im Bereich<br />

»Nachrichtenfluss«. Postfächer für Anwender<br />

erstellen Sie über »Empfänger |<br />

Postfächer«. An dieser Stelle können Sie<br />

auch gleich neue Benutzerkonten im Active<br />

Directory anlegen. Damit Exchange<br />

E-Mails nach extern versenden kann,<br />

muss mindestens ein Sendeconnector<br />

erstellt sein. Diese Konfiguration finden<br />

Sie über »Nachrichtenfluss« auf der Registerkarte<br />

»Sendeconnectors«. Nach der<br />

Installation ist noch kein solcher Sendeconnector<br />

vorhanden.<br />

Hilfe bei der SMTP-<br />

Diagnose<br />

Ein wichtiges Diagnoseprogramm für den<br />

E-Mail-Fluss ist Smtpdiag, das Sie von<br />

der Microsoft-Internetseite [5] kostenlos<br />

he runterladen können. Mit diesem Tool<br />

können Sie Probleme beim SMTP-Versand<br />

in der Eingabeaufforderung diagnostizieren<br />

und so die Sendeconnectors des Servers<br />

testen. Die Installationsdateien des<br />

Tools enthalten ein ausführliches Word-<br />

Dokument, das die Verwendung erklärt.<br />

Das Tool überprüft, ob eine E-Mail per<br />

SMTP zugestellt werden kann. Geben Sie<br />

den Befehl »smtpdiag Absenderadresse<br />

Empfängeradresse« ein, zum Beispiel<br />

»smtpdiag joost@contoso.com thomas.<br />

joos@web.de«. Das Tool überprüft dann,<br />

ob der Server die E-Mail durch die DNS-<br />

Auflösung zustellen könnte, und gibt<br />

Probleme sehr detailliert aus. Sie sehen<br />

bei der Ausgabe auch, wenn Server Verbindungen<br />

nicht akzeptieren und können<br />

gezielt bei den entsprechenden Servern<br />

zur Fehlerbehebung ansetzen.<br />

Über die Microsoft-Seite [6] können Sie<br />

die Verbindung Ihrer Exchange-Organisation<br />

mit dem Internet testen. Das Tool<br />

dient zum Testen der Verbindung von<br />

Outlook, Smartphones oder Office 365.<br />

Haben Sie den gewünschten Test ausgewählt,<br />

geben Sie noch die Daten des<br />

Exchange-Servers ein, den Sie testen wollen,<br />

und die Benutzerdaten, mit denen<br />

Sie die Verbindung aufbauen. Anschließend<br />

testet das Tool die Verbindung und<br />

zeigt an, ob die Konfiguration funktioniert<br />

(Abbildung 4).<br />

Exchange Server 2013 und<br />

Sharepoint Server 2013<br />

Unternehmen, die Sharepoint 2013 einsetzen,<br />

können über Sharepoint besser<br />

Postfächer und öffentliche Ordner in Exchange<br />

Server 2013 durchsuchen. Dazu<br />

verwendet der neue Exchange-Server<br />

eine vollkommen neue Suchschnittstelle.<br />

E-Mails die Anwender in Sharepoint 2013<br />

auf Servern mit Exchange Server 2013<br />

finden, lassen sich sogar in PST-Dateien<br />

exportieren. Auch an Fast Search Server<br />

lässt sich Exchange anbinden. Die neue<br />

Exchange-Version lässt sich auch an Domänen<br />

anbinden, die auf Windows Server<br />

2003 basieren, es ist nicht unbedingt<br />

Windows Server 2012 notwendig. Sie können<br />

Exchange Server 2013 zwar auf Domänencontrollern<br />

installieren, Microsoft<br />

empfiehlt das allerdings nicht. Wenn Sie<br />

Exchange installiert haben, können Sie<br />

allerdings den Server weder zu einem<br />

Domänencontroller heraufstufen, noch<br />

einen Domänencontroller herabstufen,<br />

nachdem Exchange installiert ist.<br />

Microsoft gibt Exchange Server 2013 auch<br />

für die Virtualisierung [7] frei. Optimal<br />

dazu geeignet ist Hyper-V in Windows<br />

Server 2012, aber auch Windows Ser-<br />

84 Ausgabe 01-2013 Admin www.admin-magazin.de


Exchange 2013<br />

Test<br />

ver 2008 R2 wird unterstützt.<br />

Outlook 2003 und verknüpfte<br />

Connectoren sind in Exchange<br />

Server 2013 nicht mehr verfügbar.<br />

Diese lassen sich daher<br />

nicht mehr nutzen. Bei<br />

einer solchen Verknüpfung<br />

sendet Exchange alle E-Mails,<br />

die über einen bestimmten<br />

Empfangsconnector eingehen,<br />

unabhängig von anderen<br />

Regeln über den verknüpften<br />

Sendeconnector. Eine solche<br />

Verknüpfung hat immer Vorrang.<br />

Die Verknüpfung erfolgt<br />

über die Exchange-Verwaltungsshell.<br />

Für verknüpfte<br />

Connectoren werden andere<br />

Connectoren und Regeln immer<br />

deaktiviert. Vor dem Einsatz von<br />

Exchange Server 2012 müssen Sie diese<br />

Connectoren daher auflösen.<br />

Auch die verwalteten Ordner sind nicht<br />

mehr verfügbar. Deren Funktionen sind<br />

jetzt in den Retention Policies integriert.<br />

Aktivieren Sie die Anti-Spam-Filter auf<br />

Postfach-Servern, lassen sich diese nur<br />

noch in der Exchange-Verwaltungsshell<br />

verwalten. Die Hub-Transport- und Unfied-Messaging-Serverrollen<br />

sind nicht<br />

mehr verfügbar. Die Funktion dieser<br />

Server übernehmen Postfachserver und<br />

Clientzugriffserver. Die MMC-basierte<br />

Management-Konsole gehört der Vergangenheit<br />

an. Die Verwaltung findet entweder<br />

über die Exchange-Verwaltungsshell<br />

oder die webbasierte Verwaltungskonsole<br />

statt.<br />

Die Verwaltung der Datenbanken, der<br />

angebundenen Smartphones/​Tablets<br />

und der Grenzwerte für Postfächer hat<br />

Microsoft enorm vereinfacht. Es gibt we-<br />

Abbildung 4: Microsoft unterstützt bei der Diagnose von Verbindungen.<br />

niger Menüs und keine verschachtelten<br />

Strukturen mehr.<br />

Die neue Exchange-Version unterstützt<br />

keinen Zugriff mehr auf freigegebene<br />

Postfächer anderer Benutzer, die Moderation<br />

von Verteilerlisten, S/​MIME und Anpassungen<br />

des Lesebereichs in Outlook<br />

Web App. Außerdem hat Microsoft viele<br />

Tools wie den Best Practices Analyzer<br />

entfernt. Die Tools unterstützen nur noch<br />

Exchange Server 2010. Neben diesen Tool<br />

hat Microsoft auch den Log-Viewer und<br />

andere Anwendungen aus der Toolbox<br />

entfernt.<br />

Outlook Web App<br />

Für Anwender hat Microsoft die Oberfläche<br />

von Outlook Web App erneuert.<br />

Diese ist an Outlook 2013 orientiert. Einmal<br />

synchronisiert, können Anwender<br />

auch offline mit Outlook Web App 2013<br />

arbeiten. Neu ist auch die Integration von<br />

Abbildung 5: Die Outlook Web App hat Microsoft an seine aktuelle Design-Strategie angepasst.<br />

Apps für Outlook Web App.<br />

So lässt sich die Oberfläche<br />

mit neuen Funktionen erweitern.<br />

OWA 2013 funktioniert<br />

am besten mit Firefox ab Version<br />

14, Chrome ab Version<br />

18 und Internet Explorer ab<br />

Version 10. Die neue Oberfläche<br />

hat Microsoft auch für<br />

den Touch-Betrieb optimiert,<br />

sodass auch Anwender mit<br />

Tablets und Clients damit<br />

arbeiten können (Abbildung<br />

5). Auch die Ansicht des Kalenders<br />

und der Kontakte hat<br />

Microsoft verbessert.<br />

Exchange-Zertifikat<br />

ändern<br />

Exchange Server 2013 setzt wie die Vorgänger<br />

auf SSL-gesicherte Verbindungen<br />

und Verschlüsselung. Aus diesem Grund<br />

benötigt jeder Exchange-Server ein eigenes<br />

Serverzertifikat. Während der Installation<br />

stellt sich jeder Exchange-Server<br />

ein selbst signiertes Zertifikat aus. Das<br />

Problem dabei ist, dass kein Client dieser<br />

Zertifizierungsstelle vertraut, was in Zertifikatsfehlermeldungen<br />

resultiert. Eine<br />

Lösung für das Problem ist entweder auf<br />

eine interne Zertifizierungsstelle auf Basis<br />

der Active Directory-Zertifikatsdienste zu<br />

setzen, oder ein Zertifikat eines Drittherstellers.<br />

Internen Zertifizierungsstellen<br />

vertrauen Clients, die Mitglied der gleichen<br />

Active Directory-Gesamtstruktur<br />

sind, automatisch. Bei Zertifizierungsstellen<br />

von Drittherstellern müssen Sie<br />

das Zertifikat der Zertifizierungsstelle<br />

manuell in die vertrauenswürdigen<br />

Stammzertifizierungsstellen integrieren,<br />

sofern diese noch nicht bekannt ist.<br />

In Exchange Server 2013 haben Sie die<br />

Möglichkeit, Serverzertifikate direkt in<br />

der webbasierten Exchange-Verwaltungskonsole<br />

zu verwalten. Um dem Server<br />

ein Zertifikat zuzuweisen, klicken Sie in<br />

der Exchange-Verwaltungskonsole auf<br />

Server und dann auf »Zertifikate«. Jeder<br />

Exchange-Server in der Organisation erhält<br />

sein eigenes Zertifikat. Um ein neues<br />

Zertifikat zu installieren, klicken Sie zunächst<br />

auf das Pluszeichen. Der Assistent,<br />

erstellt eine Zertifikatanforderung<br />

die Sie dann entweder über die Active-<br />

Directory-Zertifikatdienste anfordern<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

85


Test<br />

Exchange 2013<br />

oder über das Webfrontend<br />

des Drittherstellers.<br />

Anbinden<br />

den Zertifikaten dieser Zertifizierungsstelle<br />

vertraut.<br />

Fazit<br />

Im ersten Schritt des Assistenten<br />

geben Sie den Namen<br />

ein, mit dem das Zertifikat in<br />

der Konsole angezeigt werden<br />

soll. Auf der nächsten Seite<br />

legen Sie fest, dass Sie auch<br />

untergeordnete Domänen mit<br />

dem gleichen Zertifikat anbinden<br />

wollen. Anschließend<br />

wählen Sie den Server aus,<br />

auf dem Sie die Anforderung<br />

des Zertifikats speichern wollen<br />

(Abbildung 6).<br />

Im Assistenten geben Sie noch den Namen<br />

der Domäne ein, über die von extern<br />

oder intern auf die Server zugegriffen<br />

werden soll. Ihnen zeigt der Assistent<br />

an, welche Domänen im Zertifikat für<br />

den Zugriff hinterlegt sind. Sehr wichtig<br />

an dieser Stelle ist, dass Sie den Namen<br />

mit dem der Server aus dem Internet<br />

erreichbar ist, als allgemeiner Name hinterlegen.<br />

Ansonsten erhalten Clients, die aus dem<br />

Internet auf den Server zugreifen, eine<br />

Fehlermeldung, da der Name des Zertifikats<br />

nicht mit der URL für den Zugriff<br />

übereinstimmt. Dieser Bereich ist<br />

vor allem für die Verwendung von Outlook<br />

Anywhere sehr wichtig. Wenn ein<br />

Zertifikatsfehler in Outlook Web App erscheint,<br />

können Anwender diesen ohne<br />

große Auswirkungen bestätigen, Outlook<br />

verweigert allerdings die Verbindung bei<br />

solchen Fehlern. Auf der nächsten Seite<br />

geben Sie noch Daten zu dem Zertifikat<br />

und Ihrer Organisation an und speichern<br />

anschließend die Anforderung als Text-<br />

Datei. Mit dieser Datei fordern Sie das<br />

Zertifikat anschließend an.<br />

Webkonfiguration<br />

Im nächsten Schritt öffnen Sie das<br />

Webfrontend des Zertifikateausstellers.<br />

Arbeiten Sie mit den Active Directory-<br />

Zertifikatdiensten, können Sie diese über<br />

die Adresse »https://Servername/certsrv«<br />

erreichen. Als Nächstes wählen Sie die<br />

Option »Reichen Sie eine Zertifikatanforderung<br />

ein, die eine Base64‐codierte<br />

CMD‐ oder PKCS10‐Datei verwendet,<br />

Abbildung 6: Über SSL-Zertifkate sichern Sie Exchange vor Gefahren ab.<br />

oder eine Erneuerungsanforderung, die<br />

eine Base64‐codierte PKCS7‐Datei verwendet«.<br />

Im nächsten Fenster, geben Sie im Feld<br />

»Gespeicherte Anforderung« den kompletten<br />

Text der »*.req«-Datei ein, die<br />

Sie im Vorfeld erstellt haben. Sie können<br />

dazu die Datei im Editor öffnen und den<br />

Inhalt in die Zwischenablage kopieren.<br />

Sie müssen den kompletten Text der Datei<br />

dazu verwenden. Klicken Sie dazu in die<br />

Datei, und markieren Sie den kompletten<br />

Text mit [Strg]+[A]. Mit [Strg]+[C]<br />

kopieren Sie den Text in die Zwischenablage,<br />

mit [Strg]+[V] fügen Sie ihn in das<br />

Feld ein. Wählen Sie als Zertifikatvorlage<br />

noch »Webserver«, und klicken Sie dann<br />

auf »Einsenden«.<br />

Anschließend laden Sie das Zertifikat als<br />

»*.cer«-Datei herunter und speichern sie<br />

auf dem Server. Danach wechseln Sie<br />

wieder in die Exchange-Verwaltungskonsole<br />

und klicken auf »Server | Zertifikate«.<br />

Klicken Sie auf das Zertifikat in der Konsole<br />

und dann auf »Abschließen«. Geben<br />

Sie anschließend den Pfad der »*.cer«-<br />

Datei ein, und schließen Sie den Vorgang<br />

ab. Das Zertifikat sollte jetzt als »Gültig«<br />

angezeigt werden. Dazu muss es der Zertifizierungsstelle,<br />

von der Sie das Zertifikat<br />

stammt, bei den vertrauenswürdigen<br />

Stammzertifizierungsstellen auf dem Exchange-Server<br />

hinterlegt sein. Arbeiten<br />

Sie mit den Active-Directory-Zertifikatsdiensten,<br />

installiert der Exchange-Server<br />

das Zertifikat der Vertrauensstellung automatisch<br />

über die Gruppenrichtlinien.<br />

Das Zertifikat der Stammzertifizierungsstelle<br />

muss auf dem Exchange-Server hinterlegt<br />

sein, damit der Exchange-Server<br />

Exchange Server 2013 enthält<br />

zahlreiche Neuerungen, die<br />

nicht unbedingt eine Aktualisierung<br />

von Exchange Server<br />

2007/​2010 rechtfertigen. Lange<br />

erwartete Änderungen wie die<br />

Integration der Datenbanken<br />

in SQL-Server sucht man vergebens.<br />

Die Verwaltung ist<br />

etwas einfacher, allerdings ist<br />

die Weboberfläche nicht ganz<br />

so bequem wie die bewährte<br />

Exchange-Verwaltungskonsole. Die Integration<br />

eines Virenschutzes ist schön,<br />

allerdings hat eh jedes Unternehmen, das<br />

auf Exchange setzt, schon einen Scanner<br />

für Postfächer. Die neuen Transportregeln<br />

dienen vor allem der Sicherheit.<br />

Office 365 lässt sich genauso an Exchange<br />

Server 2010 anbinden wie an Exchange<br />

Server 2013. Aus unserer Sicht<br />

rechtfertigen die Änderungen kaum ein<br />

Update. Nur Unternehmen die von anderen<br />

Systemen zu Exchange wechseln<br />

wollen, sollten gleich die neue Version<br />

verwenden. Diese ist im Vergleich natürlich<br />

etwas schneller, unterstützt Windows<br />

Server 2012 besser und arbeitet besser<br />

mit Sharepoint zusammen. Revolutionäre<br />

Änderungen gibt es nicht. (ofr) n<br />

Infos<br />

[1] Exchange Server 2013: [http:// technet.​<br />

microsoft. com/ en‐US/ exchange/ fp179701]<br />

[2] Unified Communications Managed API 4.0<br />

Runtime: [http:// go. microsoft. com/ fwlink/​<br />

? LinkId=260990]<br />

[3] Microsoft Office 2010 Filter Packs: [http://​<br />

go. microsoft. com/ fwlink/ ? LinkID=191548]<br />

[4] Service Pack 1 for Microsoft Office Filter<br />

Pack 2010: [http:// go. microsoft. com/​<br />

fwlink/ ? LinkId=262358]<br />

[5] Smtpdiag:<br />

[http:// www. microsoft. com/ downloads/​<br />

details. aspx? displaylang=de& FamilyID=bc1<br />

881c7‐925d‐4a29‐bd42‐71e8563c80a9]<br />

[6] Remote Connectivity Analyzer: [https://​<br />

www. testexchangeconnectivity. com]<br />

[7] Exchange 2013 Virtualization:<br />

[http:// technet. microsoft. com/ en‐us/​<br />

library/ jj619301. aspx]<br />

86 Ausgabe 01-2013 Admin www.admin-magazin.de


<strong>Linux</strong>-<strong>Magazin</strong><br />

ACADEMY<br />

JETZT MIT NEUEN<br />

Lernzielen! *<br />

*Anpassung der Lernziele 2012<br />

Online-Training<br />

Prüfungsvorbereitung<br />

für LPIC 1 & 2<br />

20%<br />

Treue-Rabatt für<br />

Abonnenten<br />

Besorgen Sie sich Brief und Siegel für Ihr<br />

<strong>Linux</strong>-Knowhow mit der LPI-Zertifizierung.<br />

- Training für die Prüfungen LPI 101 und 102<br />

- Training für die Prüfungen LPI 201 und 202<br />

Sparen Sie mit Paketpreisen!<br />

Auszug aus dem Inhalt:<br />

❚ Hardware-Einstellungen,<br />

Paketverwaltung<br />

❚ Arbeiten auf der Kommandozeile<br />

❚ Partitionen und Dateisysteme<br />

❚ Shell-Umgebung<br />

❚ Netzkonfiguration und -verwaltung<br />

❚ Protokolle<br />

❚ DNS-Server einrichten und verwalten<br />

❚ Verschlüsselung und Rechteverwaltung<br />

❚ Kernel kompilieren und patchen<br />

❚ RAID-Konfiguration,<br />

Logical Volume Manager<br />

❚ Web-, Proxy-, Samba-Server<br />

Mit vielen Praxisbeispielen!<br />

* Anpassung der Lernziele in 2012<br />

academy.linux-magazin.de/lpic


Test<br />

Low Energy Server<br />

© Sunagatov Dmitry, 123RF<br />

Im Test: Thomas Krenns Low Energy Server<br />

Schön schlank<br />

Kleiner als ein externes CD-Laufwerk, leicht, leise und extrem sparsam im<br />

Energieverbrauch – so präsentiert sich Thomas Krenn’s Low Energy Server.<br />

Das <strong>ADMIN</strong>-<strong>Magazin</strong> hat ihn getestet. Jens-Christoph Brendel<br />

weiter, wenn man das Kistchen als Server<br />

ernst nimmt – als Client für eine Webanwendung<br />

oder eine Desktopvirtualisierung<br />

zum Beispiel ist es so allerdings<br />

nicht nutzbar.<br />

Gut vorstellbar sind aber Anwendungen<br />

als LDAP-Server, als FTP- oder Fileserver,<br />

als Name- oder DHCP-Server, als (kleiner)<br />

Web- oder Mailserver und dergleichen<br />

– an passender Software mangelt<br />

es in den Debian-Repositories jedenfalls<br />

nicht. Hinzukommen manche Bereiche<br />

der Softwareentwicklung, wo es nicht<br />

um Performancetests geht und wo keine<br />

Projekte im Kernel-Format kompiliert<br />

werden. Dort tut der Kleine sicher gute<br />

Dienste. Auch wo der Server mobil sein<br />

soll, beispielsweise für Kunden-Demos,<br />

kann das Modell von Krenn seine Vorteile<br />

ausspielen. Wo genau die Grenzen verlaufen,<br />

sollen Benchmarks klären.<br />

Server werden normalerweise ja mit<br />

dem Hubwagen angeliefert, diesen aber<br />

konnte man getrost einhändig zum<br />

Schreibtisch tragen, denn Thomas Krenns<br />

„Low Energy Server“ im Format einer<br />

Zigarrenkiste (4,5 H x 12 B x 16 T cm)<br />

bringt es nur auf 875 Gramm (Abbildung<br />

1). Das 18-Watt-Netzteil kommt separat,<br />

ein optisches Laufwerk ließe sich auch<br />

nur extern via USB konnektieren, und an<br />

die Stelle einer Grafikkarte tritt Intels in<br />

den Chipsatz integrierter Graphics Media<br />

Accelerator in der kleinsten Ausführung<br />

GMA 500.<br />

Sparsam und schlank<br />

Lohn der Zurückhaltung bei der Ausstattung<br />

ist ein tatsächlich bemerkenswert<br />

niedriger Energieverbrauch: Um die 6<br />

Watt sind es in Ruhe. Selbst wenn man<br />

den kleinen Server etwa mit dem <strong>Linux</strong>-<br />

Tool »stress« schwer beschäftigt, kommt<br />

man unter hoher CPU-Last kaum über<br />

8 Watt und bleibt bei I/​O-Stress immer<br />

noch unter 9 Watt. Ein normaler PC-Tower<br />

schluckt unter diesen Bedingungen<br />

schon mal gerne 150 Watt. Bei all dem<br />

bleibt das Gehäuse handwarm und absolut<br />

lautlos – denn es gibt keinen Lüfter<br />

(Abbildung 2), die Kühlung funktioniert<br />

rein passiv. In unser Exemplar passte<br />

eine optionale, zweite Gigabit-Ethernet-<br />

Schnittstelle, alternativ wäre auch WLAN<br />

möglich gewesen.<br />

Eine reine Serveranwendung bräuchte sicher<br />

keinen permanenten Monitor. Rechnet<br />

man den nämlich mit ein, relativiert<br />

sich der Energiesparvorteil ein wenig,<br />

denn ein Standard-Monitor frisst alleine<br />

dreimal so viel Strom wie der unbelastete<br />

Low Energy Server. In dieser Konstellation<br />

sparte ein Netbook mehr Energie,<br />

das mit einer ähnlichen CPU selbst unter<br />

Last mit 18 Watt auskommt und damit<br />

auch sein – freilich kleineres – Display<br />

versorgt.<br />

Nach dem Booten – was unser Exemplar<br />

dank Intel-SSD an Stelle einer Festplatte<br />

recht zügig absolvierte – landet man in<br />

einem ASCII-Terminal unter einem sehr<br />

schlanken Debian 6.0.6 mit weniger als<br />

300 installierten Paketen. Ein grafischer<br />

Desktop ist nicht am Start. Das stört nicht<br />

Benchmarks<br />

Für diese Benchmarks haben wir eine<br />

Reihe anderer Geräte zum Vergleich<br />

herangezogen. Der am leichtesten zu<br />

schlagende Konkurrent war ein Netbook<br />

HP mini, ebenfalls mit Atom-CPU unter<br />

einem aktuellen Ubuntu 12.04. Eine<br />

Stufe über ihm rangierte ein Mittelklasse<br />

Laptop als Mitbewerber, ein ThinkPad<br />

Edge mit Pentium B940-CPU und 4 GByte<br />

RAM. Und schließlich ließen wir auch<br />

noch einen ausgewachsenen kleinen Server<br />

antreten, einen Dell PowerEdge T110<br />

mit Intel Core i3-CPU und 8 GByte RAM<br />

(Tabelle 1).<br />

Gemessen haben wir mit dem Sysbench-<br />

Benchmark [1], der sowohl Aussagen<br />

über die Rechenleistung als auch über die<br />

I/​O-Performance bietet und gemeinsam<br />

mit MySQL auch eine OLTP-Last bewältigt.<br />

Eigentlich ist dieser Benchmark einmal<br />

für Datenbanken entwickelt worden,<br />

aber das Zusammenspiel seiner Komponenten<br />

ergibt auch für manche andere<br />

Anwendungen einen einen ganz guten<br />

Querschnitt des aktuellen Leistungsvermögens.<br />

Tabelle 1: Die Probanden<br />

Krenn-Server Netbook Laptop DELL-Server<br />

CPU-Typ Intel Atom Z530 Intel Atom N450 Intel Pentium B940 Intel Core i3 530<br />

Takt (GHz) 1,6 1,66 2 2,93<br />

RAM (GByte) 1 1 4 8<br />

Platte/​SSD Intel SSD SA2CW080G3 Hitachi Travelstar 7K500 WDC WD5000BPVT WDC WD1002FBYS<br />

Plattenkapazität (MByte) 80 500 500 1000<br />

88 Ausgabe 01-2013 Admin www.admin-magazin.de


Low Energy Server<br />

Test<br />

Abbildung 1: Ein Server im Format einer<br />

Zigarrenkiste – außerdem geräuschlos und sehr<br />

genügsam im Stromverbrauch.<br />

Das Rechnen, so viel ist schnell klar, ist<br />

nicht die große Stärke des Stromsparservers.<br />

In dieser Disziplin belegt er den<br />

letzten Platz, noch hinter seinem Atom-<br />

Geschwister, dem Netbook. Beide werden<br />

von den Konkurrenten mit den stärkeren<br />

CPUs klar distanziert (Abbildung 3).<br />

Anders sieht es beim I/​O aus: Hier ist<br />

der Stromsparserver in seinem Element,<br />

denn an seine SSD kommen mechanische<br />

Platten natürlich nicht heran (Abbildung<br />

4). Der Dell-Server hat allerdings so viel<br />

RAM, dass die 10 GByte Testfiles fast<br />

komplett in seinen Cache passen. Dadurch<br />

kommt er trotz herkömmlicher<br />

Abbildung 2: Lüfter finden sich keine in dem Mini-<br />

Server, die CPU wird passiv gekühlt und gibt die<br />

Abwärme über das Gehäuse ab.<br />

Festplatte auf kokurrenzfähige Werte.<br />

Die beiden mit RAM nicht so gut ausgestatteten<br />

Probanden stoßen dagegen an<br />

die Grenzen der Plattenmechanik. Die<br />

Kehrseite der Medaille ist freilich, dass<br />

man die drei Rechner mit Platten und<br />

ganz besonders den Dell-Server mit moderaten<br />

Kosten auf viel höhere Speicherkapazitäten<br />

aufrüsten kann, wogegen das<br />

Volumen der SSD des Stromsparservers<br />

nicht auf ein Vielfaches wachsen könnte,<br />

soll er bezahlbar bleiben.<br />

In der Disziplin OLTP-Workload, bei der<br />

sich Zugriffe auf den Massenspeicher mit<br />

Berechnungen mischen, haben wieder die<br />

beiden Testteilnehmer mit den schwachbrüstigen<br />

Atom-CPUs das Nachsehen<br />

(Abbildung 5). Das Rennen machte der<br />

überraschend gut platzierte Laptop Kopf<br />

an Kopf mit dem DELL-Server.<br />

Fazit<br />

Verglichen mit einem Standard-PC kann<br />

man mit dem Low Energy Server im Jahr<br />

vielleicht an die 140 Euro Stromkosten<br />

sparen. Dann hätte er sich in gut drei Jahren<br />

amortisiert – die Preise beginnen bei<br />

500 Euro. Wenn die Entwicklungsabteilung<br />

geschlossen umsteigt, kann sie sich<br />

so die Weihnachtsfeier finanzieren. Das<br />

aber wäre nicht der einzige Vorteil: Es<br />

stünden zusätzlich mehr Platz auf dem<br />

Schreibtisch oder im Serverraum, viel<br />

weniger Lärm und keine Abwärme auf<br />

der Haben-Seite. Wo die Rechenleistung<br />

für den Wechsel ausreicht – das ist das<br />

hauptsächliche Gegenargument – sollte<br />

der sparsame Server Kunden für sich gewinnen<br />

und zufriedenstellen können. n<br />

Infos<br />

[1] Sysbench: [http:// sysbench. sourceforge.​<br />

Primzahlen bis 20 000<br />

Laufzeit der Berechnung (größer ist schlechter)<br />

Random File-I/O<br />

Mittlere Zugriffszeit pro Request (kleiner ist besser)<br />

OLTP-Workload<br />

Transactions pro Sekunde (größer ist besser)<br />

Sekunden<br />

ms<br />

transactions/s<br />

Krenn-<br />

Server<br />

Netbook<br />

Kandidaten<br />

Laptop<br />

DELL-<br />

Server<br />

Krenn-<br />

Server<br />

Netbook<br />

Kandidaten<br />

Laptop<br />

DELL-<br />

Server<br />

Krenn-<br />

Server<br />

Netbook<br />

Kandidaten<br />

Laptop<br />

DELL-<br />

Server<br />

Abbildung 3: In puncto Rechenleistung bewegt sich<br />

der Low Energy Server auf Netbook-Niveau.<br />

Abbildung 4: Dank der eingebauten SSD kann der<br />

Energiesparserver beim I/​O punkten.<br />

Abbildung 5: Der OLTP-Aufgabenmix zwingt die Kontrahenten<br />

mit Atom-CPU deutlich früher in die Knie.<br />

MAGAZIN<br />

ONLINE<br />

<strong>Linux</strong>-<strong>Magazin</strong> newsLetter<br />

Newsletter<br />

informativ<br />

Nachrichten rund um die Themen <strong>Linux</strong> und<br />

Open Source lesen Sie täglich im Newsletter<br />

des <strong>Linux</strong>-<strong>Magazin</strong>s.<br />

kompakt<br />

www.admin-magazin.de<br />

tagesaktuell<br />

www.linux-magazin.de/newsletter<br />

Admin<br />

Ausgabe 01-2013 89


Security<br />

SHA-3<br />

© crstrbrt, 123RF<br />

SHA-3, der neue Hash-Standard<br />

Uneinsichtig<br />

Nach fünf Jahren hat die US-Standardisierungsorganisation vor Kurzem den Algorithmus Keccak zum neuen<br />

kryptographischen Hash-Standard gekürt. In der Praxis lässt jedoch selbst die Umstellung auf den Vorgänger<br />

SHA-2 noch auf sich warten. Hanno Böck<br />

Kryptographische Hash-Funktionen<br />

sind ein wichtiger Baustein bei der sicheren<br />

Kommunikation im Internet. In<br />

den letzten Jahren geriet hier einiges in<br />

Bewegung. Die lange Zeit eingesetzten<br />

Verfahren MD5 und SHA-1 waren sich<br />

plötzlich nicht mehr so sicher wie ursprünglich<br />

gedacht. So nutzte der Virus<br />

Flame, der im Mai diesen Jahres auf<br />

zahlreichen Rechnern im nahen Osten<br />

entdeckt wurde, die Schwäche von MD5,<br />

um sich über den Update-Service von<br />

Windows zu installieren.<br />

Infolge der kryptographischen Durchbrüche<br />

entschied die US-Standardisierungsbehörde<br />

NIST (National Institute<br />

for Standards and Technology), einen<br />

Wettbewerb [1] zur Entwicklung eines<br />

neuen Hash-Standards ins Leben zu rufen.<br />

Vor wenigen Wochen wurde der Sieger<br />

gekürt: Der Algorithmus Keccak [2],<br />

entwickelt von einem belgischen Team<br />

von Wissenschaftlern. Es ist der zweite<br />

Wettbewerb dieser Art: Bereits der symmetrische<br />

Verschlüsselungsstandard AES,<br />

der heute in fast allen kryptographischen<br />

Anwendungen zu finden ist, wurde mithilfe<br />

eines ähnlichen Wettbewerbs 2003<br />

verabschiedet.<br />

Fingerabdruck<br />

Doch worum geht es bei kryptographischen<br />

Hash-Funktionen eigentlich? Kryptographische<br />

Hash-Funktionen bilden<br />

eine beliebige Eingabe, etwa eine Datei,<br />

auf eine Ausgabe fester Länge ab. Die<br />

Ausgabe wird in der Regel als sogenannte<br />

Hexadezimalzahl angegeben. Der MD5-<br />

Hash des Wortes „Hallo“ beträgt etwa<br />

d1bf93299de1b68e6d382c893bf1215f.<br />

Um als sicher zu gelten, muss eine kryptographische<br />

Hash-Funktion zwei Bedingungen<br />

erfüllen:<br />

n Nicht umkehrbar: Es soll extrem<br />

schwierig sein, bei einem gegebenen<br />

Hash eine Eingabe zu finden, die diesen<br />

Hash als Ausgabe produziert.<br />

n Kollisionsresistenz: Es soll extrem<br />

schwierig sein, zwei Eingaben zu<br />

finden, die dieselbe Ausgabe produzieren.<br />

Kryptographische Hash-Funktionen<br />

werden zu vielen Zwecken eingesetzt.<br />

90 Ausgabe 01-2013 Admin www.admin-magazin.de


SHA-3<br />

Security<br />

Der wichtigste sind digitale Signaturen.<br />

Signaturverfahren wie RSA werden dabei<br />

nicht über die gesamte Eingabe gebildet,<br />

sondern nur über den Hash einer<br />

Eingabe. Doch auch an vielen anderen<br />

Stellen finden Hash-Funktionen Anwendung.<br />

Sichere Protokolle wie SSL/​<br />

TLS sind komplexe Konstruktionen, die<br />

Hash-Funktionen als Bausteine für unterschiedliche<br />

Zwecke einsetzen.<br />

MD5 gebrochen, SHA-1<br />

gefährdet<br />

Im Jahr 2004 gelang es einem Team<br />

um die chinesische Wissenschaftlerin<br />

Xiaoyun Wang erstmals, eine praktische<br />

Kollision der MD5-Funktion zu zeigen<br />

und zwei Eingabedateien zu produzieren,<br />

die denselben MD5-Hash besitzen. Doch<br />

Warnsignale gab es schon lange: Bereits<br />

1996 warnte der inzwischen verstorbene<br />

Bochumer Professor Hans Dobbertin vor<br />

Schwächen in MD5.<br />

Die chinesischen Forscher beließen es<br />

jedoch nicht beim Angriff auf MD5: Im<br />

Jahr 2005 verbesserte Wangs Team bekannte<br />

Angriffe gegen den bis dahin als<br />

sicher geltenden Standard SHA-1 mehrmals.<br />

Zwar blieben diese theoretisch –<br />

bis heute konnte noch niemand eine reale<br />

Kollision vorführen – doch klar war: Auch<br />

SHA-1 konnte mittelfristig nicht mehr als<br />

sicher gelten.<br />

Übrig blieben die bis dahin kaum<br />

genutzten Hash-Funktionen der SHA-<br />

2-Familie mit den Namen SHA-224,<br />

SHA-256, SHA-284 und SHA-512. Doch<br />

selbst hier schwante manchen Kryptographen<br />

Unheil: Denn die Methoden, die<br />

bei SHA-2 genutzt werden, unterscheiden<br />

sich nur geringfügig von denen in MD5<br />

und SHA-1.<br />

Die US-Behörde NIST kündigte daraufhin<br />

an, einen neuen Hash-Standard entwi-<br />

Nutzung von SHA-2<br />

Auf Unix-Systemen stehen in der Regel eine<br />

Reihe von Kommandozeilentools bereit, um<br />

Hash-Funktionen zu berechnen. Für die alten,<br />

inzwischen unsicheren Funktionen gibt es<br />

»md5sum« oder »sha1sum«, analog dazu existieren<br />

die Tools »sha256sum«, »sha224sum«,<br />

»sha384sum« und »sha512sum«.<br />

In den meisten modernen Programmiersprachen<br />

stehen Funktionen bereit, um die Hash-<br />

Funktionen zu berechnen. In Python stehen die<br />

ckeln zu wollen. Dafür wurde ein Wettbewerb<br />

ausgerufen: Weltweit sollten die<br />

besten Kryptografen Vorschläge für den<br />

neuen Standard einreichen. Diese wurden<br />

auf mehreren Konferenzen diskutiert<br />

und auf mögliche Schwächen abgeklopft.<br />

Neben den nahe liegenden Gründen war<br />

auch der Ruf lautgeworden, generell dem<br />

Thema mehr Aufmerksamkeit zu widmen.<br />

Kryptografische Hash-Funktionen<br />

seien bislang von der Forschung vernachlässigt<br />

worden.<br />

64 Vorschläge [3] wurden eingereicht,<br />

die sich dann in mehreren Runden zunächst<br />

auf 15 und dann auf 5 Finalisten<br />

reduzierten. Den Kandidaten, die es in<br />

Runde zwei schafften, war es danach<br />

erlaubt, kleine Verbesserungen an ihren<br />

Algorithmen vorzunehmen, um auf mögliche<br />

Kritikpunkte zu reagieren.<br />

Krypto-Wettbewerb<br />

Der Wettbewerb trug nicht nur dazu bei,<br />

dass zahlreiche neue Hash-Funktionen<br />

entwickelt wurden, er verbesserte auch<br />

deutlich das Verständnis der Kryptografen.<br />

Eine nicht unbedeutende Erkenntnis<br />

des Wettbewerbs: Die SHA-2-Funktionen<br />

sind offenbar besser als viele dachten.<br />

Der bekannte Kryptograf Bruce Schneier<br />

schlug wenige Wochen vor der finalen<br />

Entscheidung daher vor, den Wettbewerb<br />

ohne Sieger zu beenden [4]. Keiner der<br />

Finalisten sei deutlich besser als SHA-<br />

512, einige seien geringfügig schneller,<br />

aber nicht so viel schneller dass<br />

es einen neuen Standard rechtfertigen<br />

würde. Schneier selbst hatte zusammen<br />

mit anderen mit der Hashfunktion Skein<br />

einen der aussichtsreichen Kandidaten<br />

für SHA-3 ins Rennen geschickt. Egal,<br />

wie der Wettbewerb ausgeht: Schneier<br />

empfahl allen Anwendungsentwicklern,<br />

unabhängig vom Ausgang zumindest<br />

Funktionen der »hashlib«-Bibliothek zur Verfügung,<br />

ein Aufruf von »hashlib.sha512.("Hallo").<br />

hexdigest()« gibt den hexadezimalen Hash aus.<br />

Die folgenden Zeilen machen das Gleiche mit<br />

PHP:<br />

$input = "Hallo";<br />

echo hash('sha512',$input);<br />

Die die entsprechende Funktion heißt also<br />

»hash« und übernimmt den Typ als Parameter.<br />

vorerst weiterhin auf SHA-512 zu setzen,<br />

da der Algorithmus bewährt und gut untersucht<br />

sei.<br />

Doch Schneiers Worte bleiben ungehört.<br />

Am 2. Oktober verkündete das NIST den<br />

Sieger: Keccak, eine Entwicklung eines<br />

belgischen Wissenschaftsteams, soll zum<br />

neue SHA-3-Standard werden. Für den<br />

Mitentwickler Joan Daemen war dies ein<br />

besonderer Erfolg: Er hatte bereits den<br />

Verschlüsselungsalgorithmus Rijandel<br />

mitentworfen, der später zum Standard<br />

AES wurde.<br />

Das NIST begründete seine Entscheidung<br />

damit, dass Keccak von der internen<br />

Struktur deutlich anders aufgebaut sei<br />

als die bestehenden SHA-2-Funktionen.<br />

Sollten sich in Zukunft doch Probleme<br />

zeigen, hätte man eine Alternative, die<br />

davon höchstwahrscheinlich nicht betroffen<br />

ist. Auch Bruce Schneier konnte mit<br />

der Entscheidung gut leben. Trotz seiner<br />

vorigen Kritik betonte er, dass er keinerlei<br />

Sorgen um die Sicherheit von Keccak<br />

habe und es eine gute Entscheidung sei.<br />

Den endgültigen SHA-3-Standard hat das<br />

NIST bisher noch nicht veröffentlicht,<br />

somit ist auch bisher eine Nutzung von<br />

SHA-3 kaum anzuraten. Der Hintergrund:<br />

Der Keccak-Algorithmus bietet zahlreiche<br />

Varianten, in denen er genutzt werden<br />

kann, erst nach Veröffentlichung des<br />

Standards wird klar sein, mit welchen<br />

genauen Parametern die Funktion dann<br />

genutzt werden soll.<br />

SHA-2 wenig verbreitet<br />

Nach wie vor gilt also: Sichere Anwendungen<br />

sollten vorerst auf die SHA-2-<br />

Funktionen setzen. Doch obwohl die<br />

Prob leme in SHA-1 nun schon seit sieben<br />

Jahren bekannt sind, tun sich hier zahlreiche<br />

Probleme auf. SHA-1 ist noch weit<br />

verbreitet und auch MD5 längst nicht<br />

ausgerottet.<br />

Im Jahr 2008 konnte ein Forscherteam<br />

auf dem 25C3, dem Jahreskongress des<br />

Chaos Computer Clubs, einen Angriff<br />

auf MD5-Signaturen präsentieren [5],<br />

der es ihnen ermöglichte, ein gefälschtes<br />

Root-Zertifikat einer von allen Browsern<br />

unterstützten SSL-Zertifizierungsstelle zu<br />

erzeugen. Erst infolge dieses Praxisangriffs<br />

ließen sich die Zertifizierungsstellen<br />

überzeugen, die Nutzung von MD5<br />

zu beenden. Doch statt direkt auf SHA-2<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

91


Security<br />

SHA-3<br />

01 $$nonumber<br />

zu wechseln, nutzen die meisten<br />

inzwischen den ebenfalls<br />

potenziell anfälligen Algorithmus<br />

SHA-1.<br />

Fehler potenziert<br />

Das Interessante hierbei: Eigentlich<br />

sollte ein solcher Angriff<br />

selbst mit der unsicheren<br />

MD5-Funktion überhaupt<br />

nicht möglich sein. Denn SSL-<br />

Zertifizierungsstellen fügen in<br />

das Zertifikat eine zufällig erzeugte<br />

Seriennummer ein. Für<br />

den erfolgreichen Angriff war<br />

es aber nötig, zwei Zertifikate<br />

mit identischem MD5-Hash zu<br />

erzeugen, die Angreifer mussten<br />

also vorher exakt wissen,<br />

welche Daten in das Zertifikat<br />

eingetragen werden. Doch sie fanden einen<br />

Fehler bei der Zertifizierungsstelle<br />

RapidSSL: Diese fügte keine zufällige<br />

Seriennummer ein, sondern eine inkrementell<br />

erhöhte. Da die Zertifikate relativ<br />

günstig waren, konnten die Angreifer<br />

eine wahrscheinliche Seriennummer raten<br />

und nach mehreren Versuchen gelang<br />

ihnen der Angriff.<br />

Ein Angriff auf MD5 mit ganz praktischen<br />

Auswirkungen wurde dann 2012<br />

bekannt: Der Virus Flame enthielt eine<br />

gültige Code-Signatur von Microsoft [6]<br />

und konnte sich so über den Windows-<br />

Update-Service verbreiten. Die genauen<br />

Details der Attacke sind unbekannt, doch<br />

Kryptografen gehen davon aus, dass die<br />

Programmierer von Flame Wissen über<br />

weitere Schwächen von MD5 haben, die<br />

bisher nicht öffentlich bekannt sind.<br />

Umstellung auf SHA-2<br />

schleppend<br />

Im Jahr 2011 waren noch nahezu alle<br />

SSL-Zertifikate mit einer SHA-1-Signatur<br />

versehen (Abbildung 1). Erst im Jahr 2012<br />

fingen erste Zertifizierungsstellen mit<br />

dem Wechsel auf SHA-2 an. Das Prob lem<br />

hierbei: die Abwärtskompatibilität. Fragte<br />

Listing 1: Apache-Konfiguration<br />

02 SSLProtocol ‐SSLv2 +SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2<br />

03 SSLCipherSuite TLSv1:SSLv3:!SSLv2:HIGH:MEDIUM:!LOW:<br />

!MD5<br />

Abbildung 1: Heute noch absoluter Normalfall: Zertifikat enthält SHA-1-Signatur.<br />

man bei den Zertifizierungsstellen nach,<br />

so erhielt man die Antwort, dass das<br />

nach wie vor häufig genutzte Windows<br />

XP vor dem Service Pack 3 keine SHA-2-<br />

Signaturen unterstützt. Derartige Kompatibilitätsprobleme<br />

dürften in Zukunft<br />

eher noch zunehmen. Wer will schon von<br />

seinem Webservice für einen geringen<br />

Sicherheitsgewinn etwa die Nutzer alter<br />

Smartphones ausschließen?<br />

Noch schwieriger sieht die Situation bei<br />

den Übertragungsprotokollen aus. Der<br />

alte, nach wie vor häufig genutzte SSL-<br />

Standard in der Version 3 unterstützt nur<br />

MD5- und SHA-1-Signaturen. Auch die<br />

Nachfolger TLS 1.0 und 1.1 bringen keine<br />

Besserung, erst mit TLS 1.2 werden neuere<br />

Algorithmen mit SHA-2 unterstützt.<br />

Auf der Serverseite wird für die Aktivierung<br />

von TLS 1.2, etwa im Apache-Webserver,<br />

die Version 1.0.1 von OpenSSL benötigt.<br />

Doch bisher unterstützt einzig der<br />

Opera-Browser TLS 1.2. Somit können<br />

Serveradministratoren zwar den neuen,<br />

sichereren Standard aktivieren, genutzt<br />

wird er aber vermutlich kaum. Und die<br />

Abschaltung der alten Algorithmen dürfte<br />

für die lange Zeit nicht infrage kommen.<br />

Die Abschaltung von MD5-Signaturen ist<br />

aber schon heute bedenkenlos möglich<br />

und empfehlenswert.<br />

Aktiviert werden kann TLS 1.2 – OpenSSL<br />

1.0.1 und eine aktuelle 2.2 oder 2.4-Version<br />

des Apache-Webservers vorausgesetzt<br />

– mit der Konfigurationsoption »SS-<br />

LProtocol«. Eine mögliche Serverkonfiguration<br />

könnte wie in Listing 1<br />

aussehen.<br />

Mit hoher Wahrscheinlichkeit<br />

bestehen heute noch keinerlei<br />

Sicherheitsprobleme, wenn<br />

man SHA-1 verwendet. Doch<br />

die Erfahrung mit MD5 lehrt,<br />

dass die Umstellung weg von<br />

schwachen Algorithmen sehr<br />

lange dauert. Trotz der seit<br />

1996 bekannten Probleme<br />

konnte der Flame-Virus noch<br />

2012 – ganze 18 Jahre später<br />

– erfolgreich die MD5-Signaturen<br />

des Windows-Update-<br />

Service angreifen.<br />

Zukunftsunsicher<br />

Erste Kollisionen von SHA-1<br />

werden vermutlich innerhalb<br />

der nächsten Jahre vermeldet. Für praxisrelevante<br />

Angriffe ist aber die genaue Art<br />

der Kollision entscheidend: Die Probleme<br />

bei MD5 wurden erst dann relevant, als<br />

es auch möglich war, sinnvolle Daten,<br />

etwa Zertifikate, mit einer Kollision zu<br />

erzeugen. Doch das dauerte bei MD5<br />

nur kurze Zeit, und die Angriffe wurden<br />

schnell besser. (ofr)<br />

n<br />

Infos<br />

[1] SHA-3-Wettbewerb beim NIST: [http:// csrc.​<br />

nist. gov/ groups/ ST/ hash/ sha‐3/]<br />

[2] Keccak-Algorithmus: [http:// keccak.​<br />

noekeon. org/]<br />

[3] Alle Vorschläge im SHA-3-Wettbewerb:<br />

[http:// ehash. iaik. tugraz. at/ wiki/ The_<br />

SHA‐3_Zoo]<br />

[4] Blogeintrag von Bruce Schneier: [http://​<br />

www. schneier. com/ blog/ archives/ 2012/ 09/​<br />

sha‐3_will_be_a. html]<br />

[5] Vortrag auf 25C3 über gefälschte MD5-<br />

Signatur: [http:// media. ccc. de/ browse/​<br />

congress/ 2008/ 25c3‐3023‐en‐making_the_<br />

theoretical_possible. html]<br />

[6] Analyse der MD5-Kollision im Flame-Virus:<br />

[http:// www. research. leiden. edu/ news/​<br />

cryptanalyst. html]<br />

Der Autor<br />

Hanno Böck ist freier Journalist und ehrenamtlicher<br />

Entwickler bei Gentoo <strong>Linux</strong>. Nebenher arbeitet<br />

er beim Webhosting-Unternehmen schokokeks.org<br />

mit, das für den Betrieb seiner Dienste<br />

ausschließlich auf freie Software setzt.<br />

92 Ausgabe 01-2013 Admin www.admin-magazin.de


R<br />

CeBIT Open Source<br />

5.–9.3.2013<br />

Werfen Sie einen Blick hinter die Kulissen<br />

von <strong>Linux</strong> und Open Source!<br />

Das tägliche Vortragsprogramm liefert Ihnen<br />

Hintergrundinformationen aus erster Hand!<br />

Jetzt in Halle 6!<br />

Stand F02<br />

Auf der Bühne: Hochkarätige Vertreter der Open-Source-Szene, u.a.<br />

Klaus Knopper,<br />

KNOPPER.NET<br />

Jon „maddog“ Hall,<br />

<strong>Linux</strong> International<br />

Peer Heinlein,<br />

Heinlein Support GmbH<br />

Powered by<br />

Presented by<br />

Sponsored by<br />

<strong>Linux</strong><br />

Professional<br />

Institute


Security<br />

Automatische Portscans<br />

© Paul Vasarhelyi, 123RF<br />

Automatisierte Portscan-Auswertung in großen Netzen<br />

Leider geöffnet<br />

Das eigene Netz regelmäßig mit einem Portscan abzusuchen, beugt ungewollt laufenden Serverdiensten vor.<br />

Bei mehreren Hundert Servern ist das allerdings kein leichtes Unterfangen. Dr. Portscan bietet eine Lösung.<br />

Felix von Eye, Michael Grabatin, Wolfgang Hommel, Stefan Metzger<br />

Eines der Hauptprobleme regelmäßiger<br />

Portscans in großen Netzen ist ihr<br />

Aufwand: Mit der Serveranzahl wächst<br />

die Liste offener Ports schnell in eine<br />

Größenordnung, die manuell nicht mehr<br />

überschaubar ist. Notwendig wäre eine<br />

sorgfältige, deshalb sehr zeitintensive<br />

Auseinandersetzung mit den Scan-Ergebnissen<br />

– aber dafür fehlt oft das Personal.<br />

Zudem gibt es in vielen Organisationen<br />

keinen präzise definierten, zentral verfügbaren<br />

Soll-Zustand, mit dem das Ergebnis<br />

abgeglichen werden könnte. Das<br />

ist insbesondere dann so, wenn einzelne<br />

Abteilungen eigenständig neue Server in<br />

Betrieb nehmen dürfen.<br />

Analysiert man seine Netze zudem von<br />

unterschiedlichen Standorten aus, etwa<br />

organisationsintern und von außen, hat<br />

man zusätzlich mit unterschiedlichen Ergebnislisten<br />

zu kämpfen. Die resultieren<br />

unter anderem aus Verbindungen, die<br />

Firewalls blockieren, oder den Scan-Zeitpunkten.<br />

Die manuelle Auswertung und<br />

das Erkennen von Veränderungen sind<br />

dann noch mühsamer.<br />

Reporting-Tool<br />

Ein im Deutschen Forschungsnetz (DFN)<br />

entstandenes Open-Source-Werkzeug<br />

hilft bei der Automatisierung verteilter<br />

Portscans und deren Auswertung. Dr.<br />

Portscan ist ein Delta-Reporting Tool, das<br />

nahezu beliebige Portscan-Werkzeuge unterstützt,<br />

die parallel oder zeitversetzt in<br />

beliebigen Zeitintervallen beliebig überlappende<br />

Netz- und Portbereiche analysieren.<br />

Die Ergebnisse dieser Scan-Läufe<br />

werden automatisiert aggregiert und<br />

miteinander verglichen. Dabei entdeckte<br />

Veränderungen können in Berichte für<br />

verschiedene Zielgruppen einfließen oder<br />

als Parameter an Skripte und Programme<br />

übergeben werden. Auf dieser Basis können<br />

verfeinerte Diagnosen gestellt und<br />

das Ergebnis mit einem definierten Soll-<br />

Zustand abgeglichen werden.<br />

Im Folgenden beschreiben wir den allgemeinen<br />

Aufbau verteilter Portscan-<br />

Infrastrukturen, die Architektur und<br />

Funktionsweise von Dr. Portscan und<br />

grundlegende Schritte zu Installation und<br />

Inbetriebnahme.<br />

Verteilte Portscans<br />

Der Einsatz von Portscans als proaktive<br />

Sicherheitsmaßnahme muss zunächst<br />

sorgfältig geplant werden, um<br />

zu aussagekräftigen Ergebnissen zu<br />

kommen. Mit den folgenden Fragestellungen<br />

sollte sich der Administrator dabei<br />

auseinandersetzen:<br />

n Welche Portscan-Werkzeuge sollen<br />

eingesetzt werden? Neben dem Klassiker<br />

»nmap« gibt es zahlreiche weitere<br />

kostenlose, aber auch kommerzielle<br />

Scanner. Auch Sicherheits- und<br />

Netzmanagement-Werkzeuge können<br />

explizit oder implizit Informationen<br />

über offene Ports liefern und somit als<br />

Datenquelle dienen.<br />

n Von wie vielen und welchen Systemen<br />

aus sollen die Portscans laufen? Durch<br />

eine entsprechende Platzierung mehrerer<br />

Portscanner lassen sich zum Beispiel<br />

Innen- und Außenansichten der<br />

analysierten Netze unterscheiden.<br />

n Wie häufig soll von diesen Systemen<br />

aus gescannt werden? Dabei ist beispielsweise<br />

zu beachten, dass einige<br />

Internet-basierte Portscan-Dienste nur<br />

fixe Intervalle vorsehen.<br />

n In welchem Umfang soll jeweils gescannt<br />

werden? Portscans von außen<br />

sind im Allgemeinen langsamer als<br />

LAN-interne Scans. Deshalb möchte<br />

man sie eventuell auf einzelne Subnetze<br />

oder nur eine Teilmenge der<br />

möglichen TCP/​UDP-Ports einschränken.<br />

n Wie können die ermittelten offenen<br />

Ports validiert, also einem Soll-Zustand<br />

gegenübergestellt werden? Neben einem<br />

Initialscan mit anschließender<br />

94 Ausgabe 01-2013 Admin www.admin-magazin.de


Automatische Portscans<br />

Security<br />

manueller Prüfung kann gegebenenfalls<br />

der in einer Asset-Datenbank oder<br />

in einem Configuration-Management-<br />

System dokumentierte Soll-Zustand<br />

herangezogen werden.<br />

Abbildung 1 zeigt etwas vereinfacht die<br />

aktuelle Konfiguration als Beispiel, anhand<br />

dessen wir nun auf den Einsatz von<br />

Dr. Portscan eingehen.<br />

Dr. Portscan im Überblick<br />

Im Vergleich zum bekannten Werkzeug<br />

»ndiff«, das die Gegenüberstellung von<br />

genau zwei Nmap-Scan-Ergebnissen<br />

möglich macht, erlaubten die Skripte, auf<br />

die Dr. Portscan zurückgeht, von Anfang<br />

an die Gegenüberstellung einer beliebigen<br />

Anzahl von Portscan-Ergebnislisten,<br />

die von verschiedenen Maschinen aus<br />

erzeugt wurden. Nach einiger Zeit wurde<br />

jedoch das Arbeiten mit in unterschiedlichen<br />

Intervallen erzeugten Outputs so<br />

unübersichtlich und war zudem fest an<br />

ein einziges Portscan-Produkt gebunden,<br />

dass eine vollständig neue, modulare<br />

und um beliebige Portscan-Werkzeuge<br />

erweiterbare, datenbankbasierte Lösung<br />

geschaffen wurde, mit der Portscan-Berichte<br />

erstellt und skriptbasierte Reaktionen<br />

auf Veränderungen in den Portscan-<br />

Ergebnissen gezielt angestoßen werden<br />

können.<br />

Abbildung 2 zeigt die Systemarchitektur<br />

von Dr. Portscan mit ihren wichtigsten<br />

Komponenten: Als Datenquellen<br />

(1) dienen beliebig viele verschiedene<br />

Hosting<br />

Provider<br />

Werkzeug:<br />

Ort:<br />

Intervall:<br />

Scanbereich:<br />

Ports:<br />

W erkzeug: nm ap<br />

O rt:<br />

Intern (zentral)<br />

Intervall: Täglich/4 Stunden<br />

Scanbereich: xxx.xxx.xxx.0/1 6<br />

Ports: alle 65535 TCP/U DP<br />

S1<br />

N etzm anagem ent<br />

CM S<br />

nmap<br />

Extern<br />

28 Tage<br />

xxx.xxx.xxx.0/24<br />

ca. 2500 TCP/UDP<br />

S4<br />

D r. Portscan<br />

Portscan-Werkzeuge. Sogenannte Input-<br />

Agenten (2) sind für das Konvertieren der<br />

produktspezifischen Scan-Ergebnisse in<br />

ein einheitliches Format zuständig. Der<br />

Input-Agent für Nmap enthält beispielsweise<br />

Parser für die XML- und die sogenannte<br />

grep-bare Ausgabe von Nmap<br />

ab Version 5. Der Aufwand für die Implementierung<br />

weiterer Input-Agenten ist<br />

vom anzubindenden Portscan-Werkzeug<br />

abhängig, bleibt in der Regel aber überschaubar,<br />

da durch die anzupassenden<br />

Code-Teile lediglich eine Liste der ermittelten<br />

IP-Adressen und offenen Ports generiert<br />

werden muss.<br />

Der Delta-Reporter (3) überträgt die von<br />

den Input-Agenten gelieferten Ergebnisse<br />

in eine Datenbank (4), die die Ergebnisse<br />

aller Portscans erfasst und auswertet. Die<br />

dabei generierten Informationen weisen<br />

auf Veränderungen gegenüber den letzten<br />

Scan-Läufen hin.<br />

Output-Agenten<br />

Die frei definierbaren Output-Agenten (5)<br />

können eine Gesamtübersicht liefern, Berichte<br />

über Veränderungen in einzelnen<br />

Subnetzen erstellen und per E-Mail an<br />

den zuständigen Administrator verschicken<br />

oder beliebige Skripte anstoßen, um<br />

nähere Informationen über den Dienst,<br />

der hinter einem neu geöffneten Port<br />

steckt, einzuholen oder mit einem definierten<br />

Soll-Zustand abzugleichen.<br />

Dr. Portscan ist auf eine zentrale, relationale<br />

Datenbank ausgelegt, um zunächst<br />

S3<br />

S2<br />

W erkzeug:<br />

O rt:<br />

Intervall:<br />

Scanbereich:<br />

Ports:<br />

Vulnerability-<br />

Scanner<br />

Hosting Provider<br />

W erkzeug:<br />

O rt:<br />

Intervall:<br />

Scanbereich:<br />

Ports:<br />

nm ap<br />

Extern<br />

Täglich<br />

xxx.xxx.xxx.0/23<br />

ca. 1 0000 TCP<br />

sam hain<br />

Intern (System -lokal)<br />

5 M inuten<br />

xxx.xxx.xxx.xxx/32<br />

0-1 023 TCP/U DP<br />

die Ergebnisse der dezentralisiert durchgeführten<br />

Portscans an einer Stelle in<br />

einem einheitlichen Format zu sammeln.<br />

Da sowohl die Input-Agenten, der Delta-<br />

Reporter als auch die Output-Agenten<br />

in Perl implementiert sind, kommt ein<br />

breites Spektrum an Open-Source- und<br />

kommerziellen Datenbank-Produkten in<br />

Frage. Die minimal gehaltene Beispielkonfiguration<br />

setzt auf SQLite. Damit<br />

ist ein schnelles Ausprobieren von Dr.<br />

Portscan möglich, ohne zusätzlich einen<br />

Datenbank-Server und eine neue Datenbank<br />

einrichten zu müssen. Für größere<br />

Installationen bietet sich die Verwendung<br />

von MariaDB, PostgreSQL oder ein anderes<br />

relationales Datenbankmanagementsystem<br />

an, für das Perl-DBI-Module<br />

verfügbar sind.<br />

Die Datenbank speichert alle Informationen<br />

für jede gescannte Maschine und<br />

jeden auffällig gewordenen Port. Ausschlaggebend<br />

dabei sind die Veränderung<br />

gegenüber dem letzten Lauf des Portscanners,<br />

auf den der Eintrag zurückgeht. Die<br />

Tabelle 1 zeigt die derzeit unterstützten<br />

Veränderungstypen.<br />

Datenquellen und Input-<br />

Agenten<br />

Die eigentlichen Datenquellen, also die<br />

Portscan-Werkzeuge, sind zunächst<br />

unabhängig von den Input-Agenten zu<br />

konfigurieren. Beispielsweise könnte<br />

auf einer <strong>Linux</strong>-Maschine das Werkzeug<br />

»nmap« per Cronjob automatisiert einmal<br />

pro Tag wie folgt aufgerufen werden, um<br />

alle Ports eines Netzbereichs zu scannen,<br />

der einem herkömmlichen Class-B-Netz<br />

entspricht:<br />

/usr/bin/nmap ‐v ‐v ‐oG ‐ ‐p 1‐65535 U<br />

10.1.0.0/16 > /tmp/nmap‐results.txt<br />

Jeder Datenquelle ist ein Input-Agent<br />

zugeordnet; seine Hauptaufgabe ist das<br />

Erzeugen einer Liste aller IP-Adressenund<br />

Port-Paare, die von der Datenquelle<br />

als offen erkannt wurden. Er liest die<br />

Ausgabe des Scan-Werkzeugs und parst<br />

sie. Der obige Nmap-Aufruf würde beispielsweise<br />

bei einem Webserver folgende<br />

Textausgabe liefern:<br />

Host: 10.1.123.123 (www.example.com) U<br />

Ports: 80/open/tcp//http///, 443/open/tcpU<br />

Abbildung 1: Beispielszenario für verteilte Portscans mit dem Werkzeug Dr. Portscan.<br />

//https///<br />

Ignored State: filtered<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

95


Security<br />

Automatische Portscans<br />

Nr.<br />

Tabelle 1: Veränderungstypen<br />

Beschreibung<br />

0 Keine Veränderung gegenüber dem<br />

letzten Scan-Lauf<br />

1 Neue Maschine (IP-Adresse ist zum<br />

ersten Mal auffällig geworden)<br />

2 Maschine läuft nicht mehr<br />

4 Veränderter DNS-Name<br />

8 Neuer offener Port, der vorher noch<br />

nie offen war<br />

16 Port inzwischen geschlossen (Port war<br />

früher offen)<br />

32 Port wieder geöffnet, nachdem er zwischenzeitlich<br />

geschlossen war<br />

Das Ergebnis des Input-Agents – eine<br />

einfache Textdatei mit einer IP-Adresse,<br />

einem Port sowie der Protokollangabe<br />

und optional einem Zeitstempel pro Zeile<br />

– wird anschließend entweder zur Abholung<br />

durch den Delta-Reporter hinterlegt<br />

oder im Push-Verfahren, etwa per »scp«,<br />

auf eine andere Maschine übertragen.<br />

Dieser Zwischenschritt ist oft deshalb<br />

notwendig, weil die von Dr. Portscan in<br />

der Default-Konfiguration verwendete<br />

SQLite-Datenbank (ohne Zusatzsoftware<br />

wie cubeSQL) gar nicht über das Netz<br />

erreichbar ist und auch andere Datenbanken<br />

häufig per Firewall gegenüber<br />

Zugriffen aus dem Internet abgeschottet<br />

werden, sodass kein direktes Eintragen<br />

der Ergebnisse in die zentrale Datenbank<br />

möglich wäre.<br />

Delta-Reporter, Output-<br />

Agenten und Reports<br />

Zunächst überträgt der Delta-Reporter<br />

die von den Input-Agenten gelieferten<br />

Portscan-Ergebnisse in die zentrale Datenbank.<br />

Dabei überprüft er für jedes<br />

IP-Adress- und Port-Paar unter Berücksichtigung<br />

des Layer-4-Protokolls, ob<br />

zum entsprechenden Scanner bereits ein<br />

Eintrag vorliegt oder neu erzeugt werden<br />

muss. Bei Aktualisierung vorhandener<br />

Einträge wird der Veränderungstyp entsprechend<br />

gesetzt.<br />

Nach Abschluss des Imports aller<br />

Portscan-Ergebnisse kann der Output-<br />

Agent den zentralen Datenbestand auswerten.<br />

Da primär Veränderungen gegenüber<br />

dem bisherigen Zustand interessant<br />

sind, suchen Output-Agenten in der Regel<br />

nur nach Datenbank-Einträgen mit passendem<br />

Veränderungstyp. Um zu verhindern,<br />

dass ein Output-Agent mehrfach<br />

dasselbe Ereignis bearbeitet, trägt dieser<br />

seinen Identifikator in eine entsprechende<br />

Spalte der Datenbanktabelle ein.<br />

Anzahl und Art der verwendeten Output-<br />

Agenten sind beliebig an den eigenen<br />

Bedarf anpassbar. Dr. Portscan bietet einen<br />

vorgefertigten Output-Agenten, der<br />

dem Administrator einen Gesamtüberblick<br />

über alle Veränderungen seit dem<br />

letzten Bericht liefert. Die Auswertung<br />

durch die Output-Agenten lässt sich aber<br />

auch gezielt einschränken. So ist es denkbar<br />

nur Ereignisse bestimmter Subnetze<br />

zu betrachten, um gezielt dafür zuständige<br />

Server- oder Netzverantwortliche<br />

zu informieren, oder nur ausgewählte<br />

Ereignisse, zum Beispiel neu geöffnete<br />

Ports, um diese einem definierten Soll-<br />

Zustand gegenüberzustellen. Um generell<br />

Mehrfachmeldungen und Fehlalarme zu<br />

vermeiden, empfiehlt sich das folgende<br />

Vorgehen:<br />

n Ports werden erst als offen oder geschlossen<br />

gemeldet, wenn frei konfigurierbare,<br />

Scanner-spezifische<br />

Schwellenwerte überschritten werden.<br />

Diese Schwellenwerte tragen zu einer<br />

Stabilisierung des Portscans bei und<br />

vermeiden Falschmeldungen. Denn es<br />

kommt immer wieder vor, dass ein<br />

gescanntes System just zum Zeitpunkt<br />

des Scans temporär nicht erreichbar<br />

ist oder dass bei Scans aus dem Internet<br />

bei aggressiveren Timing-Werte<br />

der Portscan-Tools nicht immer alle<br />

offenen Ports zuverlässig erkannt werden.<br />

n Bei jeder Meldung wird geprüft, ob sie<br />

bereits durch andere Output-Agenten<br />

mit derselben Report-Zielgruppe beziehungsweise<br />

vom selben Output-Agenten<br />

aufgrund der Ergebnisse eines anderen<br />

Scanners berichtet wurden. In<br />

diesem Fall kann die erneute Meldung<br />

gänzlich unterdrückt oder explizit als<br />

Bestätigung eines bereits bekannten<br />

Sachverhalts gekennzeichnet werden.<br />

n Diskrepanzen zwischen den Ergebnissen<br />

verschiedener Scanner sind im Regelfall<br />

legitim und können etwa durch<br />

unterschiedlichen Scanzeitpunkt,<br />

Scanumfang oder Scannerstandort<br />

verursacht werden. Diese unterschiedlichen<br />

Sichten auf dasselbe System gilt<br />

es im Report geeignet aufzubereiten,<br />

zum Beipsiel indem pro Berichtspunkt<br />

die aktuell vorliegenden Ergebnisse der<br />

unterschiedlichen Scanner aufgeführt<br />

werden. In der Konfiguration wird jeder<br />

Scanner einer Gruppe zugeordnet,<br />

innerhalb derer alle Sensoren dieselbe<br />

Sicht haben sollten, um Inkonsistenzen<br />

erkennen zu können.<br />

Durch Veränderungen der Scanner-Infrastruktur<br />

kann es von Zeit zu Zeit notwendig<br />

werden, den gespeicherten Datenbestand<br />

zu bereinigen. In Dr. Portscan<br />

enthaltene und optional zu verwendende<br />

Skripte löschen beispielsweise Einträge<br />

mit sehr alten Zeitstempeln, eines bestimmten<br />

Scanners, (wenn dieser außer<br />

Betrieb genommen wurde), alle Einträge<br />

in einem bestimmten Netzbereich oder<br />

alle Einträge zu einer IP-Adresse, (zum<br />

Beispiel wenn im eine Maschine durch<br />

eine andere mit derselben IP-Adresse ersetzt<br />

wird).<br />

Installation und<br />

Inbetriebnahme<br />

Die folgende Installationsbeschreibung<br />

geht davon aus, dass der Delta-Reporter,<br />

die Output-Agenten und die Datenbank<br />

auf derselben Maschine installiert werden.<br />

Die Scanner laufen im Gegensatz<br />

dazu auf beliebigen Systemen. Sie müssen<br />

lediglich ihre Scanergebnisse an die<br />

zentrale Delta-Reporting-Instanz übermitteln<br />

können.<br />

Die aktuellste Version von Dr. Portscan<br />

kann über ein git-Repository [1] bezogen<br />

werden. Alternativ zum Download per<br />

Webbrowser erhält man das komplette<br />

Repository mittels<br />

git clone git://git.lrz.de/DrPortScan.git<br />

Voraussetzung für den Betrieb der einfachsten<br />

Installationsvariante sind SQ-<br />

Lite3, Perl und die folgenden Perl-Module,<br />

die sich zum Beispiel über CPAN inklusive<br />

ihrer Abhängigkeiten installieren lassen:<br />

DBD::SQLite, XML::LibXML, DateTime<br />

und DateTime::Format::Strptime.<br />

Die Installation erfolgt durch Aufruf des<br />

Skripts »setup.pl«. Das prüft, ob alle notwendigen<br />

Perl-Module installiert sind.<br />

Sollte dies nicht der Fall sein, wird eine<br />

Meldung ausgegeben, die angibt, welches<br />

Modul nachzuinstallieren ist. Weiterhin<br />

übernimmt dieses Skript auch das Anlegen<br />

der zum Betrieb von Dr. Portscan<br />

96 Ausgabe 01-2013 Admin www.admin-magazin.de


Automatische Portscans<br />

Security<br />

nötigen Verzeichnisstruktur für Ein- und<br />

Ausgabedaten. Das Anlegen und Initialisieren<br />

einer SQLite-Datenbank erfolgt<br />

anschließend durch einen Aufruf des<br />

Skripts »create_db.sh«. Es registriert nach<br />

der Erstellung der Datenbank auch einige<br />

Test-Scanner, die als Vorlage für eigene<br />

Scanner-Definitionen verwendbar sind.<br />

Das bietet die Möglichkeit, beim Einrichten<br />

der Datenbank gleich alle Sensoren<br />

mitzuregistrieren, sodass Nachkonfigurationen<br />

unnötig werden.<br />

Will man von dieser Möglichkeit keinen<br />

Gebrauch machen, kann man die Administration<br />

der Scanner auch später noch<br />

mit dem Skript »configuration.pl« erledigen.<br />

Neben der Auflistung aktuell in der<br />

Datenbank registrierten Scanner erlaubt<br />

dieses Skript auch das Neueintragen, Ändern<br />

und Entfernen eines Scanners.<br />

Scannen mit dem<br />

Standardwerkzeug Nmap<br />

Im Folgenden beschreiben wir die Verwendung<br />

im Zusammenspiel mit dem<br />

Standardwerkzeug Nmap. Für Nmap<br />

bringt Dr. Portscan bereits einen vorkonfigurierten<br />

Input-Agent mit, den wir<br />

nachfolgend über seine XML-Ausgabe<br />

anbinden wollen. Für die Durchführung<br />

eines Nmap-Scans mit detaillierter XML-<br />

Ausgabe kann ein Skript verwendet werden,<br />

dessen Kern der folgende Aufruf<br />

bildet:<br />

nmap ‐oX /pfad/zur/ablage/ nmap‐xml_scannerU<br />

_timestamp.xml IP-Range<br />

Für andere Scanner-Software muss, falls<br />

Dr. Portscan keinen passenden Input-<br />

Zu scannende Systeme<br />

Portscan<br />

Geblockte<br />

Verbindung<br />

Firewall<br />

Portscan<br />

Datenquellen<br />

1<br />

Internes nmap<br />

Externer Scanner<br />

Abbildung 2: Die Systemarchitektur von Dr. Portscan.<br />

1<br />

Agent mitliefert, ein eigener implementiert<br />

werden; das vorhandene Template<br />

kann als Ausgangsbasis dafür verwendet<br />

werden.<br />

Die Ausgabe eines Scans muss letztlich<br />

auf der zentralen Maschine im Eingabeordner<br />

von Dr. Portscan landen. Der<br />

Dateiname der Ausgabedatei muss dabei<br />

einem bestimmten Schema folgen, damit<br />

festgestellt werden kann, mit welchem<br />

Input-Agenten die Datei behandelt<br />

werden soll. Weiterhin muss angegeben<br />

werden, von welchem Scanner die Datei<br />

kommt und zu welchem Zeitpunkt der<br />

Scan durchgeführt wurde.<br />

Dabei ist die Angabe des Scanners diejenige,<br />

mit der der Scanner auch in der<br />

zentralen Datenbank registriert wurde<br />

und das Datum muss in der Form<br />

»YYYYMMDDHHMMSS« formatiert sein.<br />

Somit muss der Dateiname dem Schema<br />

input-agent_scanner_datum.* folgen.<br />

Auf welche Art und Weise die Dateien<br />

von externen Scannern auf die zentrale<br />

Delta-Reporting-Instanz kopiert oder verschoben<br />

werden, ist unerheblich. Es bietet<br />

sich an, »scp« oder »sftp« per Cronjob<br />

zum Abrufen neuer Scan-Ergebnisse zu<br />

verwenden, wenn das Delta-Reporting-<br />

System von außen nicht erreichbar sein<br />

soll.<br />

Delta-Reporting<br />

Die zentrale Komponente von Dr. Portscan<br />

ist die Delta-Reporting-Instanz. Die Überprüfung,<br />

ob neue Scanergebnisse bearbeitet<br />

werden müssen, übernimmt das Skript<br />

»input‐watcher.pl«. Zunächst werden die<br />

Dateien zeitlich sortiert, anschließend<br />

Input-Agenten<br />

2<br />

meldetan<br />

meldetan<br />

2<br />

schreiben in<br />

5<br />

Output-Agent<br />

(z. B. E-Mail)<br />

5<br />

Output-Agent<br />

(z. B. CMS-Abgleich)<br />

Einheitliches<br />

Datenformat<br />

liest und wertet aus<br />

lesen Daten<br />

aus<br />

Delta-Reporter<br />

Datenbank<br />

4<br />

3<br />

schreibt in<br />

der entsprechende Input-Agent gesucht,<br />

die eingelesenen Daten durch diesen in<br />

ein einheitliches Datenformat konvertiert<br />

und an den Delta-Reporter zur Weiterverarbeitung<br />

geschickt. Wird diese Vorverarbeitung<br />

ohne Fehler abgeschlossen,<br />

wird die Datei in das Verzeichnis »old«<br />

verschoben, ansonsten in »failed«. Um<br />

eine regelmäßige Ausführung des Input-<br />

Watcher-Skripts zu gewährleisten, ist<br />

es zweckmäßig, das einem Cronjob zu<br />

übertragen.<br />

Der Delta-Reporter vergleicht nun die aktuellen<br />

Ergebnisse mit denen der letzten<br />

Scans und trägt die Ergebnisse in die<br />

Datenbank ein. Die Output-Agenten bereiten<br />

diese für die weitere Verwendung<br />

geeignet auf. Ein erster Schritt in der<br />

typischen Anwendung ist der Output-<br />

Agent »xml‐out.pl«, der die ermittelten<br />

Änderungen wiederum als XML-Dokument<br />

ausgibt. Dieses kann durch das<br />

Skript »xml2plaintex.pl« in eine textbasierte<br />

Version umgewandelt werden, die<br />

zum Beispiel per E-Mail verschickt wird.<br />

Alternativ dazu lässt sich das XML-Dokument<br />

etwa nach HTML konvertieren,<br />

um die Ergebnisse per Browser einsehen<br />

zu können.<br />

Die Zukunft von Dr.<br />

Portscan<br />

Dr. Portscan wird aktiv weiterentwickelt<br />

und soll in der nächsten Version insbesondere<br />

um ein mandantenfähiges Konfigurations-<br />

und Reportingtool erweitert<br />

werden. So sollen Administratoren, die<br />

nur für einige Teile des gesamten Netzes<br />

zuständig sind, den Scan-Umfang und<br />

die gewünschten Eckdaten der erstellten<br />

Reports über ein Webfrontend selber<br />

frei konfigurieren können. Zudem<br />

soll das Reporting für IPv4-/​IPv6-Dual-<br />

Stack-Umgebungen verbessert werden,<br />

um beispielsweise zueinander inkonsistente<br />

IPv4- und IPv6-Firewall-Regeln<br />

identifizieren zu können. Ebenso ist ein<br />

Output-Agent zur Meldung der Portscan-<br />

Ergebnisse an bekannte Security Information<br />

und Event-Management-Systeme<br />

wie zum Beispiel AlienVault OSSIM in<br />

der Planung. (jcb)<br />

n<br />

Infos<br />

[1] Dr.Portscan: [git://git.lrz.de/DrPortScan.<br />

git]<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

97


Security<br />

SQL-Injections<br />

© Andrei Kuzmik, 123RF<br />

SQL-Injection-Lücken finden<br />

Gift für alle Fälle<br />

Kaum ein Tag vergeht ohne Meldungen über Einbrüche in Regierungs-, Militär- oder Firmen-Server. Wer die Vorgehensweise<br />

der Hacker genauer analysiert, wird schnell feststellen, dass in fast 90 Prozent der Fälle eine sogenannte<br />

SQL-Injection zur Komprimierung des Servers geführt hat. Patrik Fehrenbach<br />

Hacker-Gruppen wie Anonymous oder<br />

Lulzsec sind für jeden Administrator<br />

ein Albtraum. Innerhalb von nur wenigen<br />

Stunden können Angreifer in der<br />

Lage sein, eine vollständige Server-Infrastruktur<br />

kompromittieren. Oft ist das<br />

Einfallstor für die Angreifer ein klassischer<br />

Fehler in einer Webanwendung:<br />

die Anfälligkeit für SQL Injection. Nicht<br />

nur sensible Daten sind in Gefahr, die<br />

gesamte Server-Infrastruktur kann von<br />

Angreifern übernommen werden. Die<br />

bereits seit über zwölf Jahre bekannte<br />

Lücke ist nach wie vor das beliebteste<br />

Angriffsziel von Hackern.<br />

Dieser Artikel beschreibt anhand von realitätsnahen<br />

Beispielen die Angriffsvektoren<br />

einer SQL-Injection, erklärt wie diese<br />

durch Unachtsamkeit auftreten können<br />

und wie weitreichend solch eine Lücke<br />

sein kann. Demonstriert wird dies zunächst<br />

manuell an einem potenziell verwundbaren<br />

Skript und dann mithilfe des<br />

Tools SQLmap in einer Testumgebung mit<br />

entsprechend verwundbarer Software.<br />

Ein Merkmal, das fast alle Webapplikationen<br />

gemeinsam haben, ist die Anbindung<br />

an eine oder mehrere Datenbanken. Ob<br />

zum Abrufen von E-Mails, Einkaufen im<br />

Internet oder zum Lesen von News: Eine<br />

oder gar mehrere Datenbanken stecken<br />

immer dahinter. Egal, in welcher Programmiersprache<br />

die Web-Applikation<br />

geschrieben wurde, die Kommunikation<br />

mit der Datenbank erfolgt immer nach<br />

demselben Prinzip: Das serverseitig abgelegte<br />

Skript übermittelt die SQL-Abfragen<br />

an die Datenbank, wertet die zurückgegeben<br />

Werte aus und liefert diese dem<br />

Anwender zurück.<br />

Ungenügend informiert<br />

Die Ursache für Sicherheitslücken in<br />

Web-Applikationen ist oft im mangelnden<br />

Sicherheitsbewusstsein von Programmierern<br />

zu suchen. Die wesentlichen Probleme<br />

entstehen vor allem durch fehlende<br />

Überprüfung der eingehenden Werte. Das<br />

folgende PHP-Skript, das zu einem gängigen<br />

Login-Screen gehört, demonstriert<br />

einen typischen Programmierfehler.<br />

$query = "SELECT * FROM users WHERE U<br />

user='" . $_POST['username'] . " ' AND U<br />

password=' " . $_POST['password'] . " ' ";<br />

$response = mysql_query($query) ;<br />

Entgegengenommen werden als Werte<br />

der Username und das Passwort. Das<br />

Skript überprüft nun nach Eingabe der<br />

jeweiligen Daten, ob sie mit den in der<br />

Datenbank hinterlegten übereinstimmen.<br />

Wird der jeweilige User in der Datenbank<br />

gefunden, und passt das angegebene<br />

Passwort, so ist der Nutzer legitimiert.<br />

Das hierfür zuständige SQL Statement<br />

wird folgendermaßen übergeben :<br />

SELECT * FROM users WHERE U<br />

user='...' AND password='...'<br />

Die Datenbankabfrage wird demnach<br />

durch die zwei Variablen Username und<br />

Passwort ergänzt. In der Theorie funktioniert<br />

dies, bis ein Angreifer die Abfrage<br />

folgendermaßen abändert:<br />

98 Ausgabe 01-2013 Admin www.admin-magazin.de


SQL-Injections<br />

Security<br />

Password = ' OR 'a' = 'a'<br />

Die Anfrage an die Datenbank sieht nun<br />

folgendermaßen aus :<br />

SELECT * FROM users WHERE user = U<br />

'Patrik' AND password = ' ' OR 'a' = 'a'<br />

Die hierbei neu generierte SQL-Abfrage<br />

prüft zuerst die OR-Verknüpfung und<br />

anschließend die AND-Verknüpfung.<br />

Die OR-Verknüpfung prüft, ob sich mindestens<br />

eines der beiden Argumente als<br />

wahr erweist. Die logische Abfrage, ob ’a’<br />

= ’a’ ergibt, ist immer wahr. Die AND-<br />

Verknüpfung überprüft, ob der Username<br />

»Patrik« in der Datenbank vorhanden ist.<br />

Ist dies der Fall, wird auch dies als wahr<br />

zurückgegeben. Da beide dieser Argumente<br />

sich als wahr erweisen, wird der<br />

Angreifer auf dem System authentifiziert,<br />

ohne überhaupt das Passwort zu kennen.<br />

Weil hier statt einfachen String-Werten<br />

vom böswilligen Anwender SQL-Befehle<br />

in die ursprüngliche Abfrage „injiziert“<br />

wird, spricht man von einer SQL Injection.<br />

Verhindern lässt sich ein solcher Angriff,<br />

indem die Webanwendungen alle Eingaben<br />

prüft und statt einfacher String-<br />

Verkettung sogenannte Prepared Statements<br />

verwendet. Die Skriptsprache stellt<br />

dann sicher, dass nur die gewünschten<br />

Datentypen wie Strings in die Abfrage<br />

gelangen.<br />

Verdammt verletzlich<br />

Um weitere Angriffsmethoden für SQL-<br />

Injection zu demonstrieren, verwendet<br />

der Rest des Artikels eine potenziell verwundbare<br />

Testumgebung. Dies ist ein<br />

XAMPP-Webserver mit einer vorsätzlich<br />

fehlerhaften Anwendung namens DVWA<br />

(Damn Vulnerable Web Application [1]).<br />

Es handelt sich hierbei um eine Web-<br />

Applikation die auf PHP und MySQL aufbaut<br />

und speziell für Sicherheitsspezialisten<br />

konzipiert ist. Damit ist es möglich, in<br />

einem legalen Umfeld verschiedenste Angriffe<br />

auf Web-Applikationen zu testen.<br />

Nach der Installation des Microsoft Windows<br />

Server 2003 und der Einrichtung der<br />

Webapplikation DVWA muss sich der Benutzer<br />

zunächst über das Login-Feld mit<br />

dem Benutzernamen »Admin« und dem<br />

Passwort »Password« auf dem System anmelden.<br />

DVWA bietet drei verschiedene<br />

Schwierigkeitsmodi, die unterschiedliche<br />

Szenarien der Server-Sicherheitseinstellungen<br />

simulieren können. Für die Demonstration<br />

der SQL-Injection muss im<br />

Reiter »DVWA Security« die Einstellungen<br />

auf »Low« gestellt werden, um sicherzustellen,<br />

dass alle Sicherheitsmechanismen,<br />

die eine SQL-Injection verhindern<br />

könnten, ausgeschaltet sind.<br />

Nun kann das entsprechend verwundbare<br />

Modul links im Reiter ausgewählt<br />

werden. In diesem Artikel ist dies das<br />

Modul »SQL‐Injection« (Abbildung 1).<br />

Das Hochkomma<br />

Um nun auf eine potenzielle SQL-Injection<br />

Lücke zu überprüfen, trägt man in<br />

das Feld zunächst ein Hochkomma ein.<br />

Eine SQL Injection ist nur dann möglich,<br />

wenn eine Applikation Benutzereingaben<br />

als Teil einer SQL-Abfrage an den Server<br />

weiterleitet, ohne die Benutzereingaben<br />

auf etwaige enthaltene Metazeichen (umgekehrter<br />

Schrägstrich, Apostroph, Anführungszeichen,<br />

Semikolon) zu prüfen<br />

und diese zu maskieren. Im Testfall gibt<br />

die Datenbank folgende Fehlermeldung<br />

aus:<br />

You have an error in your SQL syntax; U<br />

check the manual that corresponds to your U<br />

MySQL server version for the right syntax U<br />

to use near ''''' at line 1<br />

Dies ist ein erster Hinweis auf eine potenzielle<br />

SQL-Injection-Lücke.<br />

Ziel einer SQL-Injection-Attacke ist es,<br />

möglichst sensible Informationen aus ei-<br />

ner Datenbank zu extrahieren, doch ein<br />

Angriff auf eine Datenbank kann noch<br />

viel weiter reichende Folgen haben.<br />

SQLmap<br />

Abbildung 1: Das SQL-Injection-Modul der Damn Vulnerable Web Application.<br />

Die quelloffene Software SQLmap bietet<br />

die perfekte Basis für einen umfangreichen<br />

Angriff auf Datenbanksysteme. Es<br />

ist in Python geschrieben, daher systemunabhängig<br />

und lässt sich beliebig<br />

durch Module erweitern. SQLmap benötigt<br />

Python mindestens in Version 2.6.<br />

Für die Takeover-Funktionen setzt es eine<br />

Installation des Metasploit-Frameworks<br />

voraus. SQLmap unterstützt alle gängigen<br />

Datenbanksysteme wie MySQL,<br />

PostgreSQL, Oracle und Microsoft SQL<br />

Server. Darüber hinaus kennt es fünf<br />

verschiedene SQL-Injection-Methoden:<br />

boolean-based blind, time-based blind,<br />

error-based, UNION query, stacked queries<br />

und out-of-band. Der Befehl »python<br />

sqlmap.py« startet das Tool auf der Kommandozeile.<br />

Die zu überprüfende URL folgt hinter<br />

dem Parameter »‐u« in Anführungszeichen.<br />

Mit dem Wissen, dass die Sql-Injection-Lücke<br />

im Eingabefeld »ID« zu finden<br />

ist, wird der Aufruf um den Parameter<br />

»‐‐forms« erweitert, der SQLmap anweist,<br />

alle Eingabefelder auf SQL-Injection-Lücken<br />

zu testen. Durch einen früheren<br />

Login-Versuch hat der Benutzer ein Session<br />

Cookie bekommen, das man Sqlmap<br />

unbedingt mitteilen muss, damit der Angriff<br />

gelingt. Dies lässt sich beispielsweise<br />

mit dem Firefox-Plugin „Tamper Data“<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

99


Security<br />

SQL-Injections<br />

python sqlmap.py ‐u "http://127.0.0.1/U<br />

dvwa/vulnerabilities/sqli/?id=1&Submit=U<br />

Submit#" ‐‐cookie="PHPSESSID=ce0aa7922720f3U<br />

190bf9bbff7f24c434;security=low" ‐‐forms U<br />

‐D dvwa ‐T users ‐‐columns ‐‐dump<br />

herausfinden. Der zusammengesetzte<br />

Befehl sieht nun so aus :<br />

sqlmap.py ‐u "http://127.0.0.1/dvwa/U<br />

vulnerabilities/sqli/?id=1&Submit=Submit#"U<br />

‐‐cookie="PHPSESSID=ce0aa7922720f3190bf9U<br />

bbff7f24c434;security=low" ‐‐forms<br />

SQLmap findet nach kurzer Zeit das passende<br />

Feld »ID« und fragt nach, ob dieses<br />

Feld überprüft werden soll. Nach dem Bestätigen<br />

startet die Analyse des Feldes.<br />

GET http://127.0.0.1:80/dvwa/U<br />

vulnerabilities/sqli/?id=&Submit=Submit<br />

Cookie: PHPSESSID=U<br />

ce0aa7922720f3190bf9bbff7f24c434;U<br />

security=low<br />

do you want to test this form? [Y/n/q]<br />

Nach einem erfolgreichen Scan präsentiert<br />

SQLmap die möglichen Angrifsvektoren<br />

in Form fertiger SQL-Statements.<br />

An diesem Punkt kann der Benutzer<br />

entscheiden, ob er den Angriff manuell<br />

fortführt oder ob SQLmap versuchen soll,<br />

die Lücke auszunützen. Nach der Bestätigung<br />

ist die Arbeit erledigt, da es keine<br />

weiterführenden Parameter gibt.<br />

Datenbank auslesen<br />

SQLmap kann beispielsweise mit<br />

»‐‐dump‐all« ungefiltert den kompletten<br />

Inhalt der Datenbank ausgeben, oder nur<br />

Listing 1: Users-Tabelle<br />

01 Table: users<br />

02 [6 columns]<br />

Abbildung 2: Die Password-Knack-Funktion findet mithilfe eines Brute-Force-Angriffs die Passwörter heraus.<br />

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

04 | Column | Type |<br />

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

06 | avatar | varchar(70) |<br />

07 | first_name | varchar(15) |<br />

08 | last_name | varchar(15) |<br />

09 | password | varchar(32) |<br />

10 | user | varchar(15) |<br />

11 | user_id | int(6) |<br />

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

einzelne Datensätze durch »‐‐dbs«. Da<br />

eine Datenbank viele irrelevante Informationen<br />

enthalten kann, ist es sinnvoll,<br />

die Attacke auf die wichtigen Daten zu<br />

beschränken und damit den Vorgang zu<br />

beschleunigen. Die Befehlskette wird um<br />

»‐‐dbs« erweitert, und der Benutzer erhält<br />

die verfügbaren Datenbanken.<br />

available databases [5]:<br />

[*] cdcol<br />

[*] dvwa<br />

[*] information_schema<br />

[*] mysql<br />

[*] test<br />

Besonderes Augenmerk sollte man auf<br />

die Datenbanken »information_schema«<br />

und »dvwa« legen. Die Datenbank »information_schema«<br />

gibt Auskunft über Metadaten<br />

der Datenbank wie Datentypen<br />

oder Zugriffsberechtigungen, dies kann<br />

bei gezielten Attacken als wertvolle Informationsquelle<br />

dienen. »dvwa« ist allem<br />

Anschein nach die Datenbank von Interesse.<br />

Um die darin enthaltenen Datensätze<br />

zu erhalten, wird die Befehlskette<br />

mit der Option »‐D dvwa« erweitert.<br />

Database: dvwa<br />

[2 tables]<br />

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

| guestbook |<br />

| users |<br />

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

Nun hat der User einen Überblick über<br />

die verfügbaren Tabellen der Datenbank.<br />

Um an wertvolle Informationen zu gelangen,<br />

wird die Tabelle »users« näher<br />

betrachtet. Der Befehl wird durch »‐T<br />

users« erweitert. Die Ausgabe listet anschließend<br />

die verfügbaren Spalten aus,<br />

und von welchem Datentyp diese sind<br />

(Listing 1). Um nun den Inhalt der Tabelle<br />

zu erhalten, wird durch »‐‐dump«<br />

erweitert. Die finale Befehlskette sieht<br />

jetzt folgendermaßen aus :<br />

Sqlmap hat erkannt, dass sich in der<br />

Tabelle »password« Passwort-Hashes<br />

befinden, die das Programm mithilfe<br />

von Wörterbuchattacken knacken kann.<br />

Nach wenigen Sekunden sind die Benutzerpasswörter<br />

im Klartext verfügbar<br />

(Abbildung 2).<br />

Innerhalb von nur etwa 35 Sekunden war<br />

SQLmap in der Lage, sensible Daten aus<br />

der Datenbank zu extrahieren.<br />

Takeover<br />

SQLmap bietet in Verbindung mit Metasploit<br />

die Option, das zugrunde liegende<br />

System zu übernehmen. Dabei<br />

kann der Anwender aus verschiedenen<br />

Modulen wählen. Abhängig von der Datenbank<br />

gibt es verschiedene Exploits,<br />

die Zugriff auf den Server verschaffen.<br />

Hier wird die Option »‐‐os‐pwn« verwendet,<br />

die bei Servern mit Windows 2003<br />

R2 eine Remote Shell verschaffen kann.<br />

Nach der Erweiterung des Befehls um<br />

»‐‐os‐pwn« wählt man zum Beispiel<br />

die Option 1 (»TCP : Metasploit Framework«),<br />

wenn das Programm wissen will,<br />

auf welche Art es einen Tunnel erstellen<br />

soll. SQLmap versucht nun, eine Datei<br />

auf dem Server System abzulegen und sie<br />

dann aufzurufen (Abbildung 3).<br />

Angriffsoptionen<br />

Anschließend muss der Benutzer die Payload<br />

wählen (die Funktion, die nach dem<br />

Ausführen des Exploits aufgerufen wird).<br />

Zur Auswahl stehen Meterpreter, Shell<br />

oder VNC. Meterpreter ist eine Sammlung<br />

von Funktionen, die auf dem System<br />

ausgeführt werden können. Shell gibt<br />

dem Benutzer eine System Shell auf dem<br />

gekaperten Server und VNC stellt eine<br />

Verbindung zum Server her, über die der<br />

User Zugriff auf den Desktop bekommt.<br />

Dieser Testangriff beschränkt sich auf<br />

die Shell-Option, für einen umfangreichen<br />

Angriff würde sich die Option des<br />

Meterpreters anbieten. Meterpreter kann<br />

beispielsweise in Prozesse migrieren,<br />

um erweiterte Rechte zu erhalten, oder<br />

sich auf dem System so tief einnisten,<br />

100 Ausgabe 01-2013 Admin www.admin-magazin.de


SQL-Injections<br />

Security<br />

G Abbildung 3: Die durch die SQL-Injection abgelegten Dateien auf dem Server,<br />

die zum Beispiel eine Remote Shell realisieren.<br />

E Abbildung 4: Meterpreter feuert eine ganze Breitseite auf den Server ab und<br />

installiert auf Wunsch sogar Backdoors.<br />

auszubeuten und gar unbrauchbar zu<br />

machen.<br />

SQL-Injections sind nach wie vor die gefährlichsten<br />

Sicherheitslücken, mit denen<br />

Web-Administratoren konfrontiert sind.<br />

Durch die Entwicklung von Tools wie<br />

SQLmap ist es ein Kinderspiel für Hacker,<br />

in Systeme einzubrechen und enormen<br />

Schaden zu verursachen. Umso mehr ist<br />

es für Entwickler und Administratoren<br />

wichtig, den auf dem Server laufenden<br />

Code genau auf diese Schwachstellen zu<br />

überprüfen. Ein striktes Regelwerk für<br />

Programmierer kann zu einer Regulierung<br />

dieser Lücken führen. Auch das regelmäßige<br />

Auditieren von Web Anwendungen<br />

bringt Sicherheit, empfohlen wird bei<br />

umfangreichen Anwendungen, die stedass<br />

er für den Angreifer ständig verfügbar<br />

ist, man spricht hier auch von einer<br />

Backdoor. Diese Funktionalitäten würden<br />

aber den Umfang des Artikels sprengen.<br />

Nach der Auswahl »Shell« stellt SQLmap<br />

mithilfe von Metasploit die Verbindung<br />

zum Server her, der Benutzer erhält eine<br />

Remote-Shell und hat durch diese vollen<br />

Zugriff auf den Server.<br />

Fazit<br />

Durch eine SQL-Injection war es möglich,<br />

Administratorenrechte auf dem betroffenen<br />

System zu erlagen. Angreifer<br />

haben nun kompletten Zugriff auf alle<br />

Systemressourcen des Servers und sind<br />

in der Lage, den Server zu kontrollieren,<br />

tig weiterentwickelt werden, eine monatliche<br />

Überprüfung. Die regelmäßige<br />

Überprüfung der Log-Dateien gibt zudem<br />

Aufschluss über mögliche Angriffe auf<br />

das System. (ofr)<br />

n<br />

Infos<br />

[1] Damn Vulnerable Web Application: [http://​<br />

www. dvwa. co. uk/]<br />

[2] SQLmap: [http:// sqlmap. org]<br />

[3] Metasploit: [http:// www. metasploit. com]<br />

Der Autor<br />

Patrik Fehrenbach ist Student für Computer Networking<br />

an der Hochschule Furtwangen University,<br />

Nerd aus Leidenschaft, und Mitgründer von<br />

IT-Securityguard.<br />

Probelesen ohne risiko<br />

sonDerAkTion!<br />

Testen sie jetzt<br />

3 Ausgaben für<br />

nUr 3€*<br />

www.admin-magazin.de<br />

Admin<br />

Telefon: 07131 /2707 274<br />

Fax: 07131 / 2707 78 601<br />

E-Mail: abo@linux-user.de<br />

Mit großem Gewinnspiel unter:<br />

www.linux-user.de/probeabo<br />

* Angebot gilt innerhalb Deutschlands<br />

und Österreichs. In der Schweiz: SFr 4,50.<br />

Weitere Preise: www.linux-user.de/produkte<br />

Ausgabe 01-2013<br />

101


Programmieren<br />

Flask<br />

Webanwendungen mit Flask<br />

Edler<br />

Tropfen<br />

© Igor Klimov, 123RF<br />

Für Python-Webanwendungen gibt es viele Ansätze. Zu den weniger bekannten<br />

zählt Flask, das dieser Artikel näher vorstellt. Oliver Frommel<br />

Wer sich überlegt, mit Python eine Webanwendung<br />

zu programmieren, stößt<br />

recht schnell auf Django, das einen ähnlichen<br />

Rang in der Python-Welt einnimmt<br />

wie Rails in der Ruby-Community. Eine<br />

Alternative zu Django ist Flask [1], das<br />

seit seiner Entstehung im Jahr 2010 immer<br />

populärer wurde.<br />

Django besitzt den Vorteil, dass es mehr<br />

oder weniger schon alles mitbringt, was<br />

man für viele Webanwendungen braucht:<br />

Templates, Datenbankanbindung, User-<br />

Authentifizierung und so weiter. Dafür<br />

ist es aber auch schwierig, Komponenten<br />

wegzulassen oder auszutauschen. Wer<br />

Listing 1: Simple Flask-App<br />

01 from flask import Flask<br />

02 app = Flask("Meine App")<br />

03 <br />

04 @app.route('/')<br />

05 def homepage():<br />

06 return 'Das ist die Homepage'<br />

07 <br />

08 if __name__ == '__main__':<br />

09 app.run()<br />

es gerne etwas flexibler hat, sollte einen<br />

Blick auf Flask werfen. Von Haus<br />

aus setzt Flask beim Unterbau auf eine<br />

WSGI-Bibliothek namens Werkzeug [2],<br />

die vom Flask-Autor Armin Ronacher<br />

stammt. Ebenso die Template-Bibliothek<br />

Jinja2, die von Flask standardmäßig verwendet<br />

wird.<br />

WSGI<br />

WSGI [3] ist eine Spezifikation, die festlegt,<br />

wie eine Webserver-Software und<br />

eine Webanwendung, die in Python<br />

geschrieben sind, miteinander kommunizieren.<br />

Das können zum Beispiel der<br />

Apache- oder der Nginx-Webserver mithilfe<br />

ihrer WSGI-Module oder spezielle<br />

WSGI-Webserver wie wie Gunicorn oder<br />

uWSGI sein. Für die Entwicklung enthält<br />

auch die Flash-Bibiothek einen eigenen<br />

Webserver.<br />

Die aktuellste Flask-Version 0.9 erschien<br />

im Juli 2012, wann Version 0.10 erscheint,<br />

ist noch ungewiss. Flask setzt mindestens<br />

Python 2.5 voraus, Python 3 wird derzeit<br />

noch nicht unterstützt. Am einfachsten<br />

installieren Sie Flask mit Virtualenv, das<br />

in einem Verzeichnis eine lokale Version<br />

von Python und seinen Modulen pflegt,<br />

die anderen Projekten auf einem Server<br />

nicht ins Gehege kommen. Virtualenv<br />

selbst ist in den meisten <strong>Linux</strong>-Distributionen<br />

vorhanden. Alternativ lässt es sich<br />

mit den Python-Paketmanagement-Tools<br />

»pip« und »easy_install« installieren.<br />

Die folgenden Befehle legen ein neues<br />

Projektverzeichnis an, wechseln in dieses<br />

Verzeichnis und lesen die Shell-Variablen<br />

ein, die die virtuelle Python-Umgebung<br />

bestimmen (Abbildung 1):<br />

virtualenv webprojekt<br />

cd webprojekt<br />

source bin/activate<br />

Wieder zurück in die normale Python-<br />

Umgebung der Systemebene gelangen Sie<br />

mit »deactivate«. Solange Sie sich noch<br />

im Virtualenv befinden, was durch das<br />

Prompt-Präfix »(webprojekt)« angezeigt<br />

wird, können Sie Python-Module installieren,<br />

die dann nur im aktuellen Verzeichnisbau<br />

landen. Installieren Sie mit<br />

»pip install Flask« die Bibliothek, ist sie<br />

danach in »webprojekt/lib/python2.7/<br />

site‐packages/flask« zu finden. Werk-<br />

102 Ausgabe 01-2013 Admin www.admin-magazin.de


zeug und Jinja2 werden dann von Pip<br />

mitinstalliert.<br />

Routing<br />

Flask selbst ist kaum mehr als ein Bindeglied,<br />

das die WSGI-Schicht und die<br />

Template-Bibliothek zusammenhält.<br />

Insbesondere kümmert es sich um das<br />

sogenannte Routing, das URLs auf Funktionen<br />

abbildet. Die Blaupause hierzu<br />

stammt vom Ruby-Framework Sinatra<br />

[5], das seither in zig Varianten in allen<br />

möglichen Programmiersprachen kopiert<br />

wurde. Neben Flask ist Bottle ein weiteres<br />

Python-Beispiel, um das es in der<br />

Admin-Story dieses Heftes geht.<br />

Im Prinzip weist der Programmierer bei<br />

Flask-Anwendungen einzelnen URLs mit<br />

hilfe von Python-Dekoratoren Funktionen<br />

zu, die dann mithilfe von Template<br />

einzelne Webseiten rendern. Im einfachsten<br />

Fall sieht das so aus:<br />

@app.route('/')<br />

def homepage():<br />

return "Das ist die Homepage"<br />

Damit das funktioniert, müssen Sie natürlich<br />

zu Beginn des Skripts das Flask-Modul<br />

importieren. Der Name der Funktion<br />

ist an dieser Stelle erst einmal beliebig.<br />

Wichtig ist nur, dass die im Dekorator »@<br />

app.route« spezifizierte URL »/« mit einer<br />

Funktion verknüpft ist. Die komplette minimale<br />

Webanwendung ist in Listing 1<br />

zu sehen. Das typische Python-Idiom in<br />

Zeile sorgt dafür, dass »app.run()« nur<br />

dann abläuft, wenn das Skript vom Interpreter<br />

aufgerufen und nicht von einem<br />

anderen Modul importiert wird.<br />

Bei Pfadnamen sollte man übrigens auf<br />

den abschließenden Schrägstrich achten.<br />

Schreibt man ihn hin, etwa bei »@app.<br />

route("/artikel/")«, funktioniert die URL<br />

mit oder ohne ihn. Schreibt man dagegen<br />

nur »"/artikel"«, führt ein Aufruf von<br />

»http://Server/artikel/« zu einer 404-Fehlermeldung.<br />

Wer beim Aufruf einer URL<br />

nach dem HTTP-Verb differenzieren<br />

möchte, wie man es typischerweise bei<br />

REST-Anwendungen tut, kann das mit<br />

dem Keyword-Parameter »methods« tun.<br />

Die folgende URL lässt sich so nur per<br />

POST aufrufen:<br />

@app.route('/login', methods=['POST'])<br />

Per Default läuft der eingebaute Webserver<br />

mit der IP-Adresse 127.0.0.1 auf<br />

Port 5000. Um das zu ändern, übergeben<br />

Sie die Keyword-Parameter »host=IP‐Adresse«<br />

und »port=Portnummer« der Methode<br />

»run()«. Dabei muss man unbedingt<br />

darauf achten, die eigene Anwendung<br />

nicht über eine im Internet erreichbare<br />

Adresse anzubieten, wenn sie im<br />

Debug-Mode läuft. Dann ist es nämlich<br />

möglich, über den Webbrowser eigene<br />

Python-Anweisungen auf dem Server<br />

auszuführen!<br />

Templates<br />

Die schlechte alte Zeit, in der Webseiten<br />

noch mit Print-Statements ausgegeben<br />

wurden, sollten längst der Vergangenheit<br />

angehören. Die alte Praxis führt nicht nur<br />

zu unwartbarem Code, sondern öffnet<br />

typischerweise auch leicht Sicherheitslücken.<br />

Die Alternative dazu ist in Templates<br />

zu finden, die Code und Präsentation<br />

trennen. Mit Flask und der Jinja2-Bibliothek<br />

gelingt dies in einer Zeile:<br />

render_template("homepage.html")<br />

E<br />

OSDC.de<br />

OPEN SOURCE DATA<br />

CENTER CONFERENCE<br />

17. - 18. APRIL 2013 | NUREMBERG<br />

wwww.netways.de/osdc<br />

presented by<br />

NETWAYS ®<br />

wwww.netways.de/osdc<br />

Abbildung 1: Virtualenv installiert eine Python-Umgebung in einem Verzeichnis. Neu installierte<br />

Erweiterungsmodule landen dann dort in einem Unterverzeichnis.<br />

www.admin-magazin.de<br />

presented by<br />

wwww.netways.de/osdc<br />

presented by<br />

NETWAYS ®<br />

NETWAYS ®<br />

Ausgabe 01-2013<br />

103


Programmieren<br />

Flask<br />

Weil sich hiermit nur eine statische Seite<br />

ausliefern ließe, verarbeitet »render_template«<br />

selbstverständlich auch die Übergabe<br />

von Variablen, die das Template<br />

mit »{{ Variable }}« ausgibt. Darüber<br />

hinaus gibt es auch Kontrollstrukturen,<br />

etwa For-Loops, die über Sequenzen iterieren<br />

(Listing 2). Diese sind in »{%«<br />

und »%}«, aber die Syntax lässt sich auf<br />

Wunsch auch verändern. Enthält eine<br />

Variable HTML-Code, maskiert Jinja2 sie<br />

automatisch vor der Ausgabe – wieder<br />

eine Maßnahme gegen das ungewollte<br />

Einschleusen von Exploit-Code. Wer sich<br />

der Inhalte einer Variable sicher ist, kann<br />

dieses Verhalten aber auch von Hand<br />

verhindern.<br />

Listing 2: Template<br />

01 <br />

02 <br />

03 {% block head %}<br />

04 <br />

05 {% endblock %}<br />

06 <br />

07 <br />

08 <br />

09 {% for item in seq %}<br />

10 {{ item }}<br />

11 {% endfor %}<br />

12 <br />

13 <br />

14 <br />

Abbildung 2: Flask beschränkt sich auf das Wesentliche: WSGI,<br />

Routing und Templates. Viele andere Funktionen stehen über<br />

Extensions bereit.<br />

Besonders interessant ist, dass<br />

die Templates auch Vererbung<br />

unterstützen. Somit lassen<br />

sich gemeinsame Elemente<br />

aller Webseiten in ein Basis-<br />

Template auslagern, von dem<br />

sich alle anderen Templates<br />

ableiten. Hierbei kann das<br />

Basis-Template Default-Blocks<br />

definieren, die davon abgeleitete<br />

Templates mit jeweils eigenene<br />

Inhalten „überschreiben“.<br />

Alternativ dazu können<br />

Templates andere Templates<br />

einbinden, womit sich die<br />

Webseite ebenfalls modular<br />

strukturieren lässt.<br />

Variablen<br />

Damit aus statischen HTML-<br />

Seiten auch Webanwendungen<br />

werden, müssen sie dynamisch<br />

auf Benutzereingaben<br />

reagieren, die der Webbrowser<br />

mit GET- oder POST-Requests übermittelt.<br />

Folgt etwa hinter dem Verzeichnis<br />

für die Blog-Einträge eine ID, kann Flask<br />

sie im folgenden Code-Block weiterverarbeiten:<br />

@app.route('/blog/')<br />

def show_blog(blog_id):<br />

render_template("blog.html", post_id)<br />

Ergänzend dazu darf man die Variable<br />

auch direkt von einem String in einen<br />

anderen Typ umwandeln, etwa in einen<br />

Integer-Wert: »«.<br />

Um an die Variablen zu kommen, die<br />

zum Beispiel beim Abschicken eines<br />

HTML-Formulars per POST übermittelt<br />

werden, bietet Flask den Zugriff auf das<br />

HTTP-Request-Objekt, das die Anweisung<br />

»from flask import request« ins Skript<br />

importiert. Über das Python-Dictionary<br />

»form« des Requests-Objekts finden Sie<br />

dann die Form-Variablen:<br />

login = request.form['login']<br />

Wird die Variable nicht gefunden, erzeugt<br />

die Methode ein Exception vom<br />

Typ »KeyError«. Kümmert man sich nicht<br />

selbst um diesen Fehler, gibt die Webanwendung<br />

einen HTTP-Fehler 400 „Bad<br />

Request“ aus.<br />

Um Variablen von einem Request zum<br />

nächsten zu speichern, bietet Flask ein<br />

Session-Objekt an, das ebenfalls wie ein<br />

Python-Dictionary funktioniert. Aus Sicherheitsgründen<br />

ist es hierbei wichtig,<br />

auf einen sicheren (das heißt möglichst<br />

zufälligen) Schlüssel zu achten, mit dem<br />

die Sessions signiert werden.<br />

Datenbanken<br />

Auch wenn Flask von Haus aus keine<br />

Datenbank unterstützt, gibt es eine Reihe<br />

von Extensions, mit denen sich Daten<br />

permanent speichern lassen. Natürlich<br />

braucht man hierzu erst einmal gar kein<br />

besonderes Flask-Modul, denn zum Beispiel<br />

kann man im eigenen Code mit<br />

den Python-Standard-Modulen etwa auf<br />

MySQL und PostgreSQL zugreifen. Ein<br />

paar Flask-Extensions bieten dabei aber<br />

etwas mehr Komfort.<br />

Allen voran geht hierbei Flask-<br />

SQLAlchemy, das eines der gebräuchlichsten<br />

Module für den datenbankübergreifenden<br />

objektorientierten Datenbankzugriff<br />

(ORM) in Flask integriert. Weitere<br />

Exntesions gibt es zum Beispiel für beliebte<br />

NoSQL-Datenbanken wie CouchDB<br />

und MongoDB.<br />

Fazit<br />

Flask ist eine interessante Alternative zu<br />

Django für alle Python-Webentwickler,<br />

die nicht gleich den kompletten Funktionsumfang<br />

das Django-Frameworks nutzen<br />

wollen. Insbesondere der saubere<br />

Code und die gute Dokumentation machen<br />

den Einstieg in Django einfacher.<br />

Auch gibt es mittlerweile eine fleißige<br />

Community rund um Flask, die etwa bei<br />

Problemen hilft und Third-Party-Erweiterungen<br />

(Abbildung 2, [6]) beisteuert.<br />

Schade ist nur, dass der Programmautor<br />

Armin Ronacher wegen beruflicher Verpflichtungen<br />

weniger Zeit zur Betreuung<br />

von Flask aufwenden kann. Dank Open<br />

Source können da andere einspringen.n<br />

Infos<br />

[1] Flask: [http:// flask. pocoo. org]<br />

[2] Werkzeug: [http:// werkzeug. pocoo. org]<br />

[3] WSGI: [http:// wsgi. readthedocs. org]<br />

[4] Virtualenv: [http:// www. virtualenv. org]<br />

[5] Sinatra: [http:// www. sinatrarb. com]<br />

[6] Flask Extensions:<br />

[http:// flask. pocoo. org/ extensions]<br />

104 Ausgabe 01-2013 Admin www.admin-magazin.de


Admin-MAGAZIN<br />

im Jahres-Abo<br />

Praktisch anwendbares Wissen und ausführliche<br />

Hintergrundberichte für alle IT-Administratoren<br />

von <strong>Linux</strong>, Unix und Windows.<br />

JETZT Zugreifen<br />

und über 15% Sparen!<br />

IHRE vorteile<br />

• 6 Ausgaben im Jahr Frei Haus<br />

• inklusive 6 <strong>ADMIN</strong>-Specials<br />

(unter anderem zu IPv6 und SSD)<br />

als PDF-Download im Wert von<br />

über 35 Euro<br />

sichern Sie Sich Ihr<br />

gratis Multitool!<br />

Jetzt abonnieren:<br />

www.admin-magazin.de/abo<br />

(Printabo 49,90 Euro, digitales Abo nur 44,90 Euro)<br />

• Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@admin-magazin.de •


Programmieren<br />

Fabric<br />

© Rusty-Elliott, 123RF<br />

Serververwaltung mit Python und Fabric<br />

Patchwork<br />

Fabric macht es einfach, auf einer Vielzahl von Servern sich wiederholende<br />

Tasks auszuführen. Voraussetzung dafür sind nur Python und eine<br />

funktionierende SSH-Konfiguration. Frank Wiles<br />

Die beiden Tools Chef und Puppet [1]<br />

sind hervorragend dazu geeignet, große<br />

Serverlandschaften zu verwalten, erfordern<br />

aber einen ziemlichen Konfigurationsaufwand.<br />

Wer regelmäßig auf mehreren<br />

Servern bestimmte Befehle ausführen<br />

möchte, sollte alternativ einen Blick auf<br />

Fabric [2] werfen, ein beeindruckendes<br />

Python-Modul, das solche Aufgaben als<br />

flexible Kochrezepte verwaltet.<br />

Tägliche Aufgaben in Fabric-Tasks zu<br />

verwandeln, ist eine Hilfe für jeden, der<br />

mit unterschiedlichen Systemen arbeitet.<br />

Diese Tasks lassen sich mit dem Befehl<br />

»fab« ausführen. Ursprünglich verfügte<br />

Fabric nur über ein paar einfache Features,<br />

aber im Lauf der Jahre hat es so<br />

viele dazugewonnen, dass es in manchen<br />

Fällen Chef und Puppet bereits ersetzen<br />

kann.<br />

Setzt auf SSH<br />

Wenn schon eine SSH-Konfiguration<br />

existiert, um sich auf einem anderen<br />

Rechner einzuloggen, kann Fabric davon<br />

Gebrauch machen. Lokal funktioniert<br />

Fabric aber natürlich auch. Fabric kann<br />

einzelne Hosts in bestimmte Tasks einoder<br />

ausschließen, entweder direkt über<br />

ihre Namen oder über zugewiesene Rollen.<br />

Tasks kann Fabric dabei parallel oder<br />

hintereinander ausführen. Zur besseren<br />

Kontrolle zeigt Fabric auf Wunsch immer<br />

an, was es gerade macht – das hilft zum<br />

Beispiel bei der Fehlersuche. Einfache<br />

Fähigkeiten für das Management von<br />

Dateien bringt Fabric im Modul »fabric.<br />

contrib.files« mit. Mithilfe von »pip« ist<br />

Fabric einfach zu installieren:<br />

pip install fabric<br />

Wer Pip nicht installiert hat, kann es<br />

stattdessen mit Easy-Install versuchen:<br />

easy_install fabric<br />

Alternativ funktioniert normalerweise<br />

auch die Installation aus dem Quellcode<br />

ohne große Probleme.<br />

Ruft man »fabric« auf, sucht das Tool<br />

im aktuellen Verzeichnis nach der Datei<br />

»fabfile.py« oder wandert die Verzeichnishierarchie<br />

nach oben, bis es eine<br />

solche Datei findet. Auf diese Art ist es<br />

einfach, in verschiedenen Verzeichnissen<br />

unterschiedliche Tasks zu verwalten. Mit<br />

dem Schalter »‐f« lässt sich das Taskfile<br />

auch direkt angeben.<br />

Ein erster einfacher Fabric-Task sieht in<br />

etwa so aus:<br />

106 Ausgabe 01-2013 Admin www.admin-magazin.de


Fabric<br />

Programmieren<br />

Abbildung 1: Deployment einer Webanwendung mithilfe von Fabric.<br />

from fabric import *<br />

def uptime():<br />

run(uptime)<br />

Er führt das Uptime-Kommando auf jedem<br />

Rechner aus, der beim Aufruf auf<br />

der Kommandozeile aufgeführt wird,<br />

zum Beispiel:<br />

fab ‐H localhost uptime<br />

Eine Liste aller verfügbaren Fabric-Tasks<br />

zeigt »fab ‐l«, allerdings sind dies die<br />

sogenannten „old style“ Tasks, die alle<br />

definierten Funktionen einschließen.<br />

Besser ist es, die new style Tasks zu verwenden,<br />

bei denen nur Tasks angezeigt<br />

werden, die sich auch verwenden lassen<br />

und nicht solche, die nur für interne Zwecke<br />

eingesetzt werden. Definiert man den<br />

obigen Task wie folgt neu:<br />

def uptime():<br />

run(uptime)<br />

definieren. Es verwendet<br />

Fabric,<br />

um eine Website<br />

basierend Git zu<br />

deployen. Weil die<br />

Hosts in der Datei<br />

definiert sind, genügt<br />

es, auf der<br />

Kommandozeile<br />

»fab deploy« auszuführen.<br />

Zuerst verwendet<br />

das Skript das<br />

Python-Datetime-<br />

Modul, um einen<br />

Git-Tag-String<br />

zusammenzusetzen,<br />

welcher den<br />

Deployment-Zeitpunkt<br />

widerspiegelt.<br />

Dieser Task soll nur einmal ausgeführt<br />

werden, dafür sorgt der Dekorator »@<br />

runs_once«. Der »deploy«-Task führt den<br />

»tag_deployment«-Task aus und wechselt<br />

ins Verzeichnis »/home/web«, um dort<br />

das Git-Kommando zu starten. Am Ende<br />

des With-Blocks wechselt das Skript automatisch<br />

wieder zurück ins vorherige<br />

Verzeichnis und startet mit »sudo« den<br />

Apache-Webserver neu. Abbildung 1<br />

zeigt den Ablauf.<br />

Rollenbasierte Verwaltung<br />

In größeren Umgebungen sind oft eine<br />

ganze Reihe von Servern für bestimmte<br />

Aufgaben zuständig. Mit den von Fabric<br />

angebotenen Rollen lassen sie sich zusammenfassen<br />

und in eigenen Skripts<br />

verwenden. Dazu dient die Variable<br />

»roledefs«:<br />

env.hosts = ['www1', 'www2']<br />

env.roledefs = {<br />

'web': ['www1', 'www2']<br />

}<br />

Um einen Task nur für bestimmte Rollen<br />

auszuführen, gibt man ihn auf der<br />

Kommmandozeile hinter dem Schalter<br />

»‐R« an.<br />

Ein etwas komplizierteres Beispiel legt<br />

eine Django-basierte Webanwendung zugrunde,<br />

bei der typischerweise während<br />

der Entwicklung die Datenbank mit sogenannten<br />

Migrations regelmäßig zu aktualisieren<br />

ist (Listing 2). Der dazu gehörige<br />

Fabric-Task aktualisiert also erst die notwendigen<br />

Python-Pakete, installiert den<br />

Code auf allen beteiligten Rechnern und<br />

führt die Datenbankoperationen einmalig<br />

auf dem Datenbank-Server aus. List 3<br />

zeigt das Skript dafür.<br />

Angepasst<br />

Der mit »fab deploy« gestartete »deploy«-<br />

Task führt zuerst auf allen Rechnern »git<br />

pull« im Verzeichnis »/home/web« aus.<br />

Auch die in der Datei »/home/web/requirements.txt«<br />

aufgeführen Python-Pakete<br />

werden auf allen Rechnern aktualisiert.<br />

Der Sub-Task »update_tables« läuft dagegen<br />

nur einmal (»@runs_once«) und<br />

Listing 1: Uptime von zwei Rechnern<br />

01 [web1.example.com] Executing task 'get_uptime'<br />

02 [web1.example.com] run: uptime<br />

03 11:22 up 17 days, 12:13, 5 users, load averages:<br />

1.03 1.88 1.32<br />

04 [web2.example.com] Executing task 'get_uptime'<br />

05 [web2.example.com] run: uptime<br />

06 11:22 up 12 days, 22:11, 3 users, load averages:<br />

1.43 1.38 1.34<br />

@task<br />

Listing 2: Migration einer Django-Datenbank<br />

def get_uptime():<br />

01 def get_code():<br />

14 # Migrate existing tables and data<br />

uptime()<br />

02 with cd("/home/web"):<br />

15 run('./manage.py migrate')<br />

zeigt »fab ‐l« nur noch »get_uptime« an<br />

und übergeht die »uptime«-Funktion. Wie<br />

das Ergebnis aussieht, wenn man den<br />

Task mit zwei Hosts aufruft, zeigt das<br />

Listing 1.<br />

03 run("git pull ‐t origin master")<br />

04 <br />

05 def update_pip():<br />

06 run("pip install ‐U ‐r /home/web/<br />

requirements.txt")<br />

16 <br />

17 @task<br />

18 @roles('web')<br />

19 def restart_apache():<br />

20 sudo("/etc/init.d/apache2 restart")<br />

07 <br />

21 <br />

Hosts in der Datei<br />

08 @task<br />

09 @runs_once<br />

22 @task<br />

23 def deploy():<br />

Die Hosts immer wieder auf der Kommandozeile<br />

anzugeben, ist auf Dauer<br />

mühsam. Wie das nächste Beispiel zeigt,<br />

kann man sie auch direkt in einem Task<br />

10 @roles('db')<br />

11 def update_tables():<br />

12 # Create new tables<br />

13 run('./manage.py syncdb')<br />

24 get_code()<br />

25 update_pip()<br />

26 execute('update_tables')<br />

27 execute('restart_apache')<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

107


Programmieren<br />

Fabric<br />

nur auf dem Datenbank-Server (»@<br />

roles('db')«) ab. Analog wird der Apache-<br />

Servern auf allen Rechnern der »web«-<br />

Rolle neu gestartet.<br />

Parallelisiert<br />

Per Default führt Fabric die definierten<br />

Tasks hintereinander aus, jeweils auf einem<br />

Rechner nach dem anderen. Effizienter<br />

ist es aber, unabhängige Tasks auf<br />

mehreren Rechnern parallel auszuführen,<br />

was aktuelle Fabric-Versionen beherrschen.<br />

Dazu dient der Schalter »‐P«.<br />

Um genau zu kontrollieren, welche Tasks<br />

hintereinander und welche parallel abgearbeitet<br />

werden, bietet Fabric die Dekoratoren<br />

»@serial« und »@parallel«.<br />

Um Tasks flexibler zu gestalten, bietet<br />

Fabric die Möglichkeit, sie zu parametrisieren.<br />

Definiert werden solche Tasks<br />

etwa so:<br />

@task<br />

def apache(cmd):<br />

sudo("/etc/init.d/apache2 %s" % cmd)<br />

Hiermit ruft Fabric das Init-Skript von<br />

Apache mit dem übergebenen Parameter<br />

auf. Der dazu gehörige Aufruf lautet dann<br />

Listing 4: Farbige Ausgabe<br />

01 from fabric.api import *<br />

02 from fabric.colors import green, red<br />

03 <br />

04 @task<br />

Listing 3: »apache.py«<br />

01 from fabric.api import *<br />

02 <br />

03 @task<br />

04 def start():<br />

05 sudo("/etc/init.d/apache2 start")<br />

06 <br />

07 @task<br />

08 def stop():<br />

09 sudo("/etc/init.d/apache2 stop")<br />

10 <br />

11 @task<br />

12 def restart():<br />

13 sudo("/etc/init.d/apache2 restart")<br />

05 def colored_and_silent():<br />

06 print green("Running noisy command silently...")<br />

07 with settings(hide('running', 'stdout',<br />

'stderr')):<br />

08 run('/path/to/noisy‐command')<br />

09 print red("Commands are noisy again")<br />

10 run('/path/to/another‐noisy‐command')<br />

zum Beispiel »fab apache:restart«. Um bei<br />

komplizierten Aufgaben den Überblick<br />

nicht zu verlieren, bietet sich die Modularisierung<br />

von Tasks an. Hierbei lassen<br />

sich Unteraufgaben in eigene Module<br />

ausgliedern, die sich dank Namespaces<br />

nicht gegenseitig ins Gehege kommen.<br />

Ein Beispiel für eine einfach Apache-<br />

Bibliothek zeigt Listing 3.<br />

Unter dem Namen apache.py gespeichert,<br />

lässt sich dieses Modul dann in anderen<br />

Fabfiles verwenden:<br />

from fabric.api import *<br />

import apache<br />

@task<br />

def uptime():<br />

run('uptime')<br />

Nun zeigt »fab ‐l« den in dieser Datei<br />

definierte Task neben den vom Apache-<br />

Modul importieren an:<br />

Available commands:<br />

uptime<br />

apache.start<br />

apache.stop<br />

apache.restart<br />

Parameter und alles andere funktionieren<br />

damit weiterhin, die Namespaces bringen<br />

nur etwas Ordnung in die Skriptsammlung.<br />

Dateioperationen<br />

Wie man es von einem solchen Tool<br />

vielleicht erwarten könnte, bringt es ein<br />

paar eigene Tasks mit, um mit Dateien<br />

zu arbeiten. Die Core-API bietet »put()«<br />

und »get()«, um lokale Dateien auf den<br />

Server zu laden und umgekehrt. Das<br />

Modul »contrib.files« enthält noch einige<br />

Funktionen, die typische Aufgaben abdecken,<br />

etwa:<br />

n »append(Dateiname, Text)« hängt einen<br />

String oder eine Liste von Strings<br />

an eine Datei an, wenn sie noch nicht<br />

in der Datei enthalten sind.<br />

n »comment(Dateiname, Regex)« /<br />

»uncomment(Dateiname, Regex)«<br />

kommentiert eine Zeile in einer Datei<br />

ein oder aus, auf die die aufgeführte<br />

Regular Expression zutrifft.<br />

n »contains(Dateiname, Regex)« gibt<br />

»True« zurück, wenn die Regular Expression<br />

zutrifft.<br />

n »exists(Pfad)« liefert den Wert True,<br />

wenn der Pfad existiert.<br />

n »first(Pfad)« prüft eine Liste von Pfaden<br />

und gibt den ersten zurück, der<br />

existiert. Das ist zum Beispiel praktisch,<br />

wenn man mehrere potenzielle<br />

Orte für Konfigurationsdateien durchgehen<br />

möchte.<br />

Die Funktion »upload_template()« lädt<br />

eine Template-Datei, trägt die übergebenen<br />

Werte ein und lädt das Ergebnis auf<br />

den Server hoch. Per Default verwendet<br />

die Funktion das Python-Format für<br />

String Interpolation. Es ist empfehlenswert,<br />

stattdessen das Jinja2-Template-<br />

Format zu verwenden, das sich mit dem<br />

Parameter »use_jinja=True« einschalten<br />

lässt.<br />

Vielfalt<br />

Mit »‐l« aufgerufen, listet Fabric nur die<br />

definierten Tasks auf, was in vielen Anwendungsfällen<br />

genügt. Wer Wert auf<br />

bessere Dokumentation legt, kann mehr<br />

Informationen zu jedem Task in den typischen<br />

Python-Docstrings ablegen, die<br />

als Erstes nach der Funktions-Definition<br />

folgen und in drei Anführungszeichen<br />

eingeschlossen werden:<br />

@task<br />

def complicated_steps():<br />

""" This task does all of the U<br />

complicated steps for us. """<br />

run(...)<br />

Jetzt listet »fab ‐l« genauso den Task<br />

»complicated_steps« auf, gibt aber dazu<br />

noch die Beschreibung aus.<br />

Einige weitere Funktionen erlauben mehr<br />

Kontrolle über die Ausgabe, das Listing<br />

4 gibt dafür ein Beispiel. So färbt die<br />

Funktion »green()« die Ausgabe grün,<br />

wie die Zeile 6 zeigt. In einem With-Block<br />

eingeschlossen, verhindert das folgende<br />

»hide()« alle Meldungen des ausgeführten<br />

Befehls. Eine Zwischenmeldung wird<br />

mit »red()« rot hervorgehoben, bevor ein<br />

weiterer Befehl wieder die Standard-Meldungen<br />

ausgibt. (ofr)<br />

n<br />

Infos<br />

[1] Thomas Gelf, Am Schnürchen, Konfigurationsverwaltung<br />

mit Puppet, <strong>ADMIN</strong> 06/​<br />

2010, S. 50<br />

[2] Fabric: [http:// fabfile. org]<br />

[3] Oliver Frommel, Eingepackt, RPMs von und<br />

für Python, <strong>ADMIN</strong> 03/​2012, S. 120<br />

108 Ausgabe 01-2013 Admin www.admin-magazin.de


Sonderteil<br />

Auf der folgenden Seite startet der regelmäßige<br />

FreeX-Sonderteil des <strong>ADMIN</strong>-<strong>Magazin</strong>s. Hier finden<br />

Sie Know-how-Artikel und Workshops von erfahrenen<br />

Autoren aus der langen Tradition der FreeX.<br />

Sicher hinter Gittern.................110<br />

Mit seinen Jails bietet FreeBSD einen einzigarti -<br />

gen Mechanismus, um Anwendungen im Interesse<br />

der Sicherheit voneinander zu isolieren.<br />

Neubau ........................... 120<br />

Eine Übersicht über das neue Paketverwaltungssystem<br />

PKG-NG in FreeBSD.<br />

Hochzeit .......................... 124<br />

Wie sich FreeBSD-Server in der KVM-basierten<br />

FOSS-Cloud virtualisieren lassen.<br />

© yewkeo, 123RF<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

109


Jails<br />

© FFernando Gregory, 123RF<br />

Wie man Jails in FreeBSD konfiguriert und benutzt<br />

Sicher hinter<br />

Gittern<br />

Heute, wo IT-Sicherheit eine immer größere Rolle spielt, findet ein Feature<br />

von FreeBSD besondere Beachtung: die Jails. Worin das Sicherheitsplus<br />

besteht, das sie versprechen, beleuchtet dieser Artikel. Jürgen Dankoweit<br />

Die Verwaltung der Zugriffsrechte unter<br />

UNIX und damit auch unter FreeBSD<br />

kennt im Grunde genommen zwei Typen<br />

von Benutzern: User mit und User ohne<br />

Administrator-Privilegien. Dieses Modell<br />

stößt aber an seine Grenzen, wenn zum<br />

Beispiel ein Web-Administrator angelegt<br />

werden soll. Er benötigt Berechtigungen,<br />

um bestimmte Konfigurationsdateien ändern<br />

zu dürfen oder den HTTP-Daemon<br />

neu zu starten – soll aber die Systemkonfiguration<br />

nicht ändern können. Eine Lösung<br />

dieses Problems bestünde in einer<br />

höheren Granularität der Zugriffsrechte.<br />

In FreeBSD gibt es dafür die Möglichkeit<br />

mit File Access Control Lists (FACL) zu<br />

arbeiten oder das Capability- und Sandboxing-Framework<br />

Capsicum einzusetzen.<br />

Doch leider erhöht dies den Verwaltungsaufwand<br />

nicht unerheblich, was<br />

sich wiederum negativ auf die Sicherheit<br />

auswirken kann.<br />

Als ein Ausweg aus diesem Dilemma<br />

wurde einst die Chroot-Umgebung erfunden,<br />

die unter Sicherheitsgesichtspunkten<br />

jedoch Mängel aufweist. Beispielsweise<br />

sind bei einem FTP-Server, der<br />

anonymen Zugriff gestattet, Möglichkeiten<br />

bekannt geworden, aus der Chroot-<br />

Umgebung auszubrechen. Im Laufe der<br />

Zeit kamen einige Verbesserungen hinzu,<br />

aber Probleme wie das Beeinflussen von<br />

Prozessen außerhalb von Chroot, wurden<br />

letztlich nicht behoben.<br />

Das Konzept der Jails<br />

Hier kommt nun das Konzept der Jails ins<br />

Spiel: Es nutzt die positiven Eigenschaften<br />

von Chroot und bietet gleichzeitig<br />

einen absoluten Schutz vor der Manipulation<br />

von Prozessen außerhalb der Jail.<br />

Da eine Jail auf einem Unterverzeichnisbaum<br />

aufsetzt, ist es einem Prozess<br />

innerhalb der Jail nicht mehr möglich,<br />

auf Verzeichnisse und Dateien außerhalb<br />

zuzugreifen. Weiterhin ist es einem Prozess<br />

in einer Jail nicht mehr möglich,<br />

manipulierend auf Prozesse des Hosts<br />

einzuwirken. Damit bieten sich Jails an,<br />

um in ihnen Netzwerkdienste laufen zu<br />

lassen.<br />

Allerdings erhöht ein Jail nicht die Sicherheit<br />

eines Daemons selbst. Wenn<br />

ein FTP-Daemon eine Sicherheitslücke<br />

aufweist, dann hat er sie auch in der<br />

Jail. Ein Angreifer könnte diese Lücke<br />

ausnutzen und sich so Zugang zur Jail<br />

verschaffen und dort womöglich sogar<br />

Root-Rechte erlangen. Dennoch bliebe<br />

ein großer Sicherheitsvorteil bestehen,<br />

denn der Angreifer könnte nur in der Jail<br />

sein Unwesen treiben. Er hätte keinerlei<br />

Zugang zum Hostsystem! Dabei erhöht<br />

110 Ausgabe 01-2013 Admin www.admin-magazin.de


Jails<br />

sich anders als bei einer fein granulierten<br />

Zugriffsverwaltung der Aufwand nur<br />

moderat. Das Ausbrechen von Prozessen<br />

oder die Beeinflussung anderer Prozesse<br />

außerhalb einer Jail sind nicht mehr<br />

möglich.<br />

In einer Jail gibt es wieder einen Root-<br />

User, allerdings mit etwas eingeschränkten<br />

Möglichkeiten. Unter anderem hat<br />

er keine Chance, den Host oder die IP-<br />

Adresse der Jail zu manipulieren. Durch<br />

bestimmte Sysctl-MIBs lassen sich die<br />

Befugnisse von root innerhalb der Jail<br />

noch weiter einschränken. Es ist möglich,<br />

einer Jail keine oder mehrere IPv4- beziehungsweise<br />

IPv6-Adressen zuzuordnen,<br />

was sie zu einer Routing-fähigen Jail<br />

macht. Die Adresse wird beim Start der<br />

Jail mit angegeben. Auch die Loopback-<br />

Adresse 127.0.0.1 und ihr IPv6-Pendant<br />

::1 dürfen mit einer Jail verknüpft werden.<br />

Man spricht dann von einer internen<br />

Jail.<br />

Innerhalb einer Jail steht dem Benutzer<br />

ein komplettes FreeBSD zur Verfügung.<br />

Damit bieten Jails auch eine Art<br />

von Virtualisierung wie VMware oder<br />

Xen. Seit FreeBSD 8 besteht sogar die<br />

Möglichkeit, in einer Jail weitere Jails<br />

anzulegen (Hierachical Jails). Das mit<br />

FreeBSD 4 eingeführte Konzept der Jails<br />

hat vor einiger Zeit auch einen anderen<br />

Betriebssystemanbieter überzeugt: Sun<br />

Microsystems (heute Oracle). In Solaris<br />

heißen die Jails Zones.<br />

Beschränkungen<br />

Innerhalb einer Jail gibt es aufgrund der<br />

Implementierung wichtige Einschrän-<br />

Tools zur Verwaltung von Jails<br />

Um die Verwaltung von Jails vom Hostsystem<br />

aus zu ermöglichen, gibt es ein paar Tools, die<br />

kurz beschrieben werden. jail [-i] [-l ‐u <br />

| ‐U ] <br />

: Startet eine Jail im<br />

angegebenen Pfad, mit der IP-Adresse und dem<br />

Kommando. Falls die Option ‐l gesetzt ist, wird<br />

vor dem Start das Environment auf Standardwerte<br />

gesetzt. Das angegebene Kommando wird<br />

dabei mit den User-Rechten des Hostsystems<br />

(-u) oder mit den Rechten des Users innerhalb<br />

der Jail (-U) ausgeführt. jexec [-u |<br />

‐U ] : Führt ein Kommando mit den<br />

Parametern innerhalb einer Jail aus. Dabei startet<br />

es mit den User-Rechten des Hostsystems<br />

kungen. Remote-Procedure-Calls (RPC)<br />

funktionieren im Jail-Betrieb aus Sicherheitsgründen<br />

nicht mehr. Daher gibt es<br />

keine Möglichkeit, NFS innerhalb einer<br />

Jail zu nutzen. Daemon-Prozesse auf dem<br />

Host müssen sehr sorgfältig konfiguriert<br />

sein, damit es nicht zu Adresskonflikten<br />

zwischen Jail und Host kommt. Das Laden<br />

oder Entladen von Kernelmodulen<br />

ist innerhalb einer Jail genauso unterbunden<br />

wie das Erstellen von Device-<br />

Nodes. Das Mounten und Unmounten<br />

von Dateisystemen ist nicht möglich.<br />

Das Modifizieren der Netzwerkkonfiguration,<br />

der Netzwerkadressen oder auch<br />

der Routing-Tabellen ist verboten. Der<br />

Zugriff auf sogenannte Raw-Sockets des<br />

Hostsystems ist nicht mehr möglich, aber<br />

innerhalb der Jail besteht die Möglichkeit,<br />

auf diesen Typ von Sockets zuzugreifen.<br />

Ebenso ist es nicht gestattet, Semaphoren<br />

des Hostsystems anzusprechen.<br />

Aus den meisten dieser Einschränkungen<br />

resultiert bei genauer Betrachtung ein Sicherheitsgewinn<br />

im Vergleich zu einer<br />

Chroot-Umgebung.<br />

Implementierung der Jails<br />

Bei den Jails lohnt ein Blick hinter die<br />

Kulissen. Das Konzept besteht aus zwei<br />

Komponenten: Zum einen das Tool »jail«,<br />

das die Benutzerschnittstelle zwischen<br />

dem Kernel und dem Userland darstellt,<br />

zum anderen Code im Kernel, der per<br />

Systemcall angesprungen wird.<br />

Das Tool »jail« benötigt folgende Parameter:<br />

den Pfad zur Jail, den Hostnamen der<br />

Jail, die korrespondierende IP-Adresse<br />

und das auszuführende Kommando.<br />

(-u) oder mit den Rechten des Users innerhalb<br />

der Jail (-U). Zur eindeutigen Identifizierung<br />

der Jail ist auch hier wieder die JID anzugeben.<br />

jls: Erzeugt eine Liste aller im Moment<br />

gestarteten Jails. Es werden dabei die Identifizierungsnummer<br />

der Jail (JID), IP-Adresse,<br />

Hostname und Pfad zur Jail ausgegeben. Die JID<br />

ist eine fortlaufende Nummer, unter der die Jail<br />

eindeutig identifiziert wird. Die JID ist für killall<br />

wichtig. killall ‐j - :<br />

Damit wird an einen Prozess innerhalb einer<br />

Jail ein Signal gesendet. Wenn kein Prozessname<br />

und Signal angegeben ist, dann wird die<br />

ganze Jail beendet. „Signal“ bezeichnet die in<br />

UNIX üblichen Signale wie SIGTERM, SIGKILL<br />

et cetera.<br />

Wie in einem Auszug aus dem Quellcode<br />

zu ersehen ist (Listing 1), enthält der<br />

Funktionsaufruf »jail« eine Struktur »jail«<br />

(struct jail: »/usr/include/sys/jail.h«), in<br />

der die eben genannten Parameter gespeichert<br />

sind.<br />

Nachdem die Struktur mit Informationen<br />

versorgt ist, sperrt sich das Tool »jail«<br />

selbst ein »(i = jail(&j))« und erzeugt<br />

in dieser Umgebung einen Tochterprozess,<br />

der das gewünschte Kommando<br />

mittels »execv()« ausführt. Wie eingangs<br />

erwähnt, wird die Kernelfunktion »jail«<br />

aufgerufen:<br />

int jail(struct proc *p, struct U<br />

*jail_args uap);<br />

Diese Funktion kopiert die in »uap«<br />

(struct jail) gespeicherten Informationen<br />

in den Kernel-Memory-Space und<br />

speichert einen Teil der Informationen in<br />

einer C-Struktur »prison«. Danach wird<br />

»chroot()« mit zwei Parametern aufgrufen,<br />

die zum einen den Pfad der Jail<br />

enthalten und zum anderen den aufrufenden<br />

Prozess.<br />

Einschluss<br />

Wie wird ein Prozess in eine Jail „eingesperrt“?<br />

In FreeBSD wird jeder Prozess<br />

durch eine C-Struktur »proc« dargestellt,<br />

die in »/usr/include/sys/proc.h« beschrieben<br />

ist. Sie enthält einen Pointer,<br />

der auf die Struktur »prison« zeigt. Das<br />

Feld »p_flag« mit dem Wert »P_JAILED«<br />

zeigt der Prozessverwaltung an, dass der<br />

Prozess in einer Jail auszuführen ist. E<br />

Listing 1: »struct jail«<br />

101 main(int argc, char **argv)<br />

02 {<br />

03 struct jail j;<br />

04 int i;<br />

05 [...]<br />

06 /* Belegen der Struktur jail */<br />

07 memset(&j, 0, sizeof(j));<br />

08 j.version = 0;<br />

09 j.path = ;<br />

10 j.hostname = ;<br />

11 j.ip_number = ;<br />

12 /* system‐call aufrufen */<br />

13 i = jail(&j);<br />

14 [...]<br />

15 execv(, ...);<br />

16 [...]<br />

17 exit(0);<br />

18 }<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

111


Jails<br />

Die hohe Schutzwirkung begründet sich<br />

in der Art und Weise, wie die Prozess-<br />

Verwaltung des FreeBSD-Kernels die<br />

C-Struktur struct »proc« verarbeitet.<br />

Sobald ein Prozess durch das Zeitscheibenverfahren<br />

wieder Rechenzeit zugewiesen<br />

bekommt, wird anhand von<br />

»proc‐>prison‐>p_flag« geprüft, ob der<br />

Prozess einer Jail angehört oder nicht.<br />

Bei Prozessen, die innerhalb einer Jail<br />

gestartet wurden, ist dieses Flag bedingungslos<br />

gesetzt. Viele andere Kernel-<br />

Dienste entscheiden bei jedem Zugriff<br />

anhand des genannten Flags, ob und wie<br />

auf Ressourcen zugegriffen werden darf.<br />

Ein Auszug aus dem Quellcode verdeutlicht<br />

den Ablauf (Listing 2). Abbildung 1<br />

stellt die Kommunikationswege dar.<br />

Installation, Konfiguration<br />

und Aktualisierung<br />

Die Installation von Jails ist nicht sonderlich<br />

schwer, erfordert aber Sorgfalt bei der<br />

Konfiguration. Schließlich steht die Sicherheit<br />

an vorderster Stelle. Alle Befehle<br />

dürfen nur vom Root-User ausgeführt<br />

werden. Um eine Jail zu erstellen, benötigt<br />

man mindestens 150 MByte freie Plattenkapazität.<br />

Sobald Dienstprogramme<br />

dazukommen natürlich entsprechend<br />

mehr. Als Beispiel sei eine Jail erstellt, die<br />

Web-Services beherbergt. Dafür benötigt<br />

man in etwa 4 GByte Platz. Damit ist es<br />

dann auch möglich, einen FAMP-Server<br />

(FreeBSD, Apache, MySQL, PHP) oder<br />

ein Content-Management-System (CMS)<br />

aufzusetzen. Des Weiteren sollten die<br />

Betriebssystem- und Kernel-Quelltexte<br />

installiert sein. Die Vorgehensweise ist<br />

im Handbuch ausführlich beschrieben.<br />

Um eine Jail zu erstellen, sind die nachfolgenden<br />

Schritte auszuführen:<br />

# mkdir ‐p /jail/www<br />

# cd /usr/src<br />

# make world DESTDIR=/jail/www<br />

# cd etc<br />

# make distribution DESTDIR=/jail/www<br />

# mount_devfs devfs /jail/www/dev<br />

# cd /jail/www<br />

# ln ‐sf dev/null kernel<br />

Nachdem alles kompiliert und installiert<br />

ist, werden der Jail über das Device-<br />

Filesystem (»devfs«) Geräte zugänglich<br />

gemacht. Dieses Mounting muss unbedingt<br />

vor dem Start der Jail abgeschlossen<br />

sein. Weil einige Programme eine<br />

Datei »/kernel« erwarten, wird sie ihnen<br />

mit einem symbolischen Link vorgegaukelt.<br />

Tatsächlich ist aber der Kernel des<br />

Hostsystems für alle Jails zuständig.<br />

Bevor die Jail das erste Mal gestartet<br />

wird, sind einige Dienstprogramme auf<br />

dem Host dahingehend zu prüfen, ob<br />

sie an die IP-Adresse des Hostsystems<br />

gebunden sind. Dies geschieht mit dem<br />

einfachen Befehl<br />

# sockstat | grep "\*:[0‐9]"<br />

In der Beschreibung zu »rc.conf(5)« werden<br />

die Dienste aufgeführt, die per Parameter<br />

an eine feste IP-Adresse gebunden<br />

werden müssen. Ein Beispiel hierfür ist<br />

der Dienst inetd:<br />

inetd_flags="‐wW ‐a IP‐Adresse U<br />

Hostsystem"<br />

Der Mail-Dienst sendmail sollte auf dem<br />

Hostsystem so gestartet werden, dass<br />

er nur noch auf die localhost-Adresse<br />

hört (»sendmail_enable="NO"«). Zum<br />

Abschluss der Installation der Jail wird<br />

das Netzwerk-Interface des Hostsystems<br />

konfiguriert.<br />

Routingfähige Jails<br />

Einer Routing-fähigen Jail muss man mit<br />

folgendem Kommando eine IP-Adresse<br />

zuordnen:<br />

# ifconfig netif0 inet alias<br />

IP‐Adresse Jail/32<br />

Wobei »netif0« das Netzwerk-Interface<br />

ist. Dies sollte auch so in die Datei »/<br />

etc/rc.conf« des Hostsystems eingetragen<br />

werden:<br />

ifconfig_netif0_alias0="inet U<br />

IP‐Adresse Jail netmask U<br />

255.255.255.255"<br />

Eine interne Jail dagegen bekommt immer<br />

die IP-Adresse des Loopback-Interfaces<br />

zugewiesen:<br />

# ifconfig lo0 inet alias<br />

127.0.0.1/32<br />

Wobei »lo0« das Loopback-Interface ist.<br />

Auch dies sollte man so in die Datei<br />

»/etc/rc.conf« des Hostsystems eintragen:<br />

ifconfig_lo0_alias0=U<br />

"inet 127.0.0.1 netmask 255.255.255.255"<br />

Für die folgenden Schritte spielt es keine<br />

Rolle mehr, ob es sich um eine interne<br />

oder Routing-fähige Jail handelt.<br />

Nachdem die Installation soweit abgeschlossen<br />

ist, wird die Jail mit dem<br />

Hostnamen »www.heimnetz.net«, der IP-<br />

Adresse »192.168.1.200« und der Shell<br />

»/bin/sh« für die Konfiguration manuell<br />

gestartet:<br />

Listing 2: Ressourcenzugriff<br />

01 int jail(struct thread *td,<br />

02 struct jail_args *uap)<br />

03 {<br />

04 struct prison *pr, *tpr;<br />

05 struct jail j;<br />

06 struct jail_attach_args jaa;<br />

07 [...]<br />

08 error = copyin(uap‐>jail, &j,<br />

09 sizeof(j));<br />

10 [...]<br />

11 MALLOC(pr, struct prison *,<br />

12 sizeof(*pr),<br />

13 M_PRISON, M_WAITOK | M_ZERO);<br />

14 [...]<br />

15 error = copyinstr(j.path,<br />

16 &pr‐>pr_path, sizeof(pr‐>pr_path), 0);<br />

17 [...]<br />

18 error = copyinstr(j.hostname,<br />

19 &pr‐>pr_host, sizeof(pr‐>pr_host), 0);<br />

20 [...]<br />

21 pr‐>pr_ip = j.ip_number;<br />

22 pr‐>pr_linux = NULL;<br />

23 pr‐>pr_securelevel = securelevel;<br />

24 [...]<br />

25 error = jail_attach(td, &jaa);<br />

26 [...]<br />

27 FREE(pr, M_PRISON);<br />

28 [...]<br />

29 return (error);<br />

30 }<br />

31 <br />

32 int jail_attach(struct thread *td,<br />

33 struct jail_attach_args *uap)<br />

34 {<br />

35 struct proc *p;<br />

36 struct prison *pr;<br />

37 <br />

38 [...]<br />

39 p = td‐>td_proc;<br />

40 [...]<br />

41 error = change_dir(pr‐>pr_root, td));<br />

42 [...]<br />

43 change_root(pr‐>pr_root, td);<br />

44 [...]<br />

45 return (error);<br />

46 }<br />

112 Ausgabe 01-2013 Admin www.admin-magazin.de


Jails<br />

# jail /jail/www www.heimnetz.net U<br />

192.168.1.200 /bin/sh<br />

Ab jetzt befindet sich der Administrator<br />

innerhalb der Jail. Zunächst<br />

ist das Passwort für den Root-User<br />

zu setzen. Es sollte auch ein User<br />

angelegt werden, der wie root der<br />

Gruppe »wheel« angehört und unter<br />

dessen Kennung man sich später<br />

per SSH einloggt. Um Warnungen<br />

wegen einer nicht vorhandenen<br />

Filesystem-Tabelle zu vermeiden,<br />

ist eine leere »/etc/fstab« zu erzeugen.<br />

Die Datei »/etc/rc.conf« sollte<br />

mindestens wie nachfolgend aussehen:<br />

rpcbind_enable="NO"<br />

network_interfaces=""<br />

hostname="www.heimnetz.net"<br />

sshd_enable="YES"<br />

sshd_flags="‐p Port Jail"<br />

sendmail_enable="NO"<br />

syslogd_enable="YES"<br />

syslogd_program="/usr/sbin/syslogd"<br />

syslogd_flags="‐ss"<br />

defaultrouter="IP‐Adresse Router"<br />

Des Weiteren ist die Konfiguration für<br />

den SSH-Daemon in der Datei »/etc/ssh/<br />

sshd_config« zu ändern:<br />

ListenAddress IP‐Adresse Jail<br />

sowie in die Datei »/etc/resolv.conf« den<br />

oder die Domain-Name-Server einzutragen:<br />

»nameserver IP‐Adresse DNS«.<br />

Logs in der Jail<br />

In einer Jail werden genauso wie auf dem<br />

Hostsystem durch den Daemon »syslogd«<br />

Logfiles erzeugt. Um zu kontrollieren,<br />

was in den einzelnen Jails geschieht, ist<br />

es umständlich, sich in jeder Jail anzumelden.<br />

Einfacher geht es, wenn man die<br />

Ausgaben des »syslogd« auf den Host umleitet.<br />

In der Systemkonfiguration »/etc/<br />

rc.conf« der Jail aktiviert man zunächst<br />

den Daemon: »syslogd_enable="YES"«.<br />

In »/etc/syslog.conf« trägt man als einzige<br />

Zeile<br />

*.* @ Adresse des Syslog‐Hosts<br />

FreeBSD-<br />

Userland<br />

ein und startet den Daemon mit »/etc/<br />

rc.d/syslogd restart« neu.<br />

Damit ist die Konfiguration innerhalb<br />

der Jail abgeschlossen, und mit »exit«<br />

verlässt man sie wieder. Für einen ab-<br />

FreeBSD-<br />

Kernel<br />

jail()<br />

jail()<br />

execv()<br />

Prozessverwaltung<br />

chroot()<br />

Treiber<br />

Dateisystem<br />

Wenn das Hostsystem auf den neuesten<br />

Stand gebracht wird, müssen die Jails<br />

ebenfalls aktualisiert werden. Dazu wechschließenden<br />

Test startet man die Jail so,<br />

wie sie später beim Booten hochgefahren<br />

wird<br />

# jail /jail/www www.heimnetz.net<br />

192.168.1.200 /bin/sh /etc/rc<br />

Mit »ssh root@www.heimnetz.net ‐pPort<br />

Jail« meldet man sich an der Jail an.<br />

Wenn alles korrekt konfiguriert ist, erscheint<br />

der Prompt der Jail.<br />

Am Hostsystem müssen noch letzte Konfigurationsarbeiten<br />

erledigt werden. Da<br />

die Jail beim nächsten Systemboot mit<br />

gestartet werden soll, sind in der Datei<br />

»/etc/rc.conf« Ergänzungen vorzunehmen:<br />

jail_enable="YES"<br />

jail_list="www"<br />

jail_www_rootdir="/jails/www"<br />

jail_www_hostname="Hostname Jail"<br />

jail_www_ip="IP‐Adresse Jail"<br />

jail_www_exec="/bin/sh /etc/rc"<br />

jail_www_devfs_enable="YES"<br />

jail_www_devfs_ruleset="devfsrules_jail"<br />

jail-Tool<br />

Kernel<br />

Abbildung 1: Kommunikation zwischen Userland und Kernel beim<br />

Erstellen einer Jail.<br />

Die Bedeutung der einzelnen Zeilen sei<br />

hier kurz erläutert. Um eine Jail zu starten<br />

muss der Eintrag »jail_enable="YES"«<br />

gesetzt sein. Falls mehrere Jails vom<br />

Hostsystem gestartet werden sollen, sind<br />

diese in eine Liste unter dem Schlüsselwort<br />

»jail_list« durch Leerzeichen<br />

getrennt einzutragen. Sie werden dann<br />

auch in der angegebenen Reihenfolge<br />

hochgefahren. Auffallend ist die letzte<br />

Zeile. In ihr wird das Regelwerk für den<br />

Device-Filesystem-Dienst festgelegt. Damit<br />

alles korrekt funktioniert, muss in<br />

eine vorhandene Konfiguration »/etc/<br />

devfs.rules« der Inhalt aus »/etc/defaults/<br />

devfs.rules« eingefügt werden. Die ande-<br />

ren Angaben sind für jede einzelne<br />

Jail zu machen. Zu beachten ist<br />

aber, dass der in »jail_list« angegebene<br />

Name sich in den anderen<br />

Angaben wiederfindet, wie es im<br />

Beispiel zu sehen ist.<br />

Zusätzlich ersetzt oder ergänzt man<br />

in der Konfiguration »/etc/rc.conf«<br />

die Angaben für den Syslog-Daemon<br />

um diesen Eintrag:<br />

syslogd_flags= U<br />

"‐a IP‐Adresse des Netzwerks/24<br />

‐4 U<br />

‐b hostdresse"<br />

Anschließend startet man den Syslog-Daemon<br />

neu.<br />

Starten und Stoppen<br />

Sobald alle Parameter in »/etc/rc.conf«<br />

eingetragen sind, lässt sich die Jail wie<br />

folgt starten:<br />

# /etc/rc.d/jail start Name der Jail<br />

Angehalten wird sie mit »stop Name der<br />

Jail« Wenn alle Jails gestoppt werden sollen,<br />

lässt man den Namen der Jail weg.<br />

Software lässt sich auf die gleiche Art und<br />

Weise installieren wie auf dem Hostsystem.<br />

Entweder in Form von Binärpaketen<br />

mit »pkg_add ‐r Paketname« oder über<br />

die Ports. Dazu muss allerdings der Ports-<br />

Tree vom Hostsystem in die Jail gemountet<br />

werden, und es muss das Verzeichnis<br />

»/usr/ports« in der Jail existieren. Zu<br />

diesem Zweck gibt es das Dateisystem<br />

»nullfs«. Auf dem Hostsystem wird dieser<br />

Befehl ausgeführt:<br />

# mount_nullfs ‐o ro /usr/ports<br />

/jail/www/usr/ports<br />

und man ergänzt »/etc/fstab« des Hosts<br />

um den folgenden Eintrag:<br />

/jails/www/usr/ports /usr/ports<br />

nullfs rw 0 0<br />

Zusätzlich sind dann noch zwei Änderungen<br />

an »/etc/make.conf« der Jail notwendig:<br />

WRKDIRPREFIX=/tmp<br />

DISTDIR=/tmp/distfiles<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

113


Jails<br />

selt man als Root-User in das Verzeichnis<br />

»/usr/src«. Da ein »make buildworld« auf<br />

dem Host meist schon ausgeführt wurde,<br />

ist es für die Jail nicht mehr notwendig.<br />

So genügt<br />

# cd /usr/src<br />

# mergemaster ‐p ‐D Pfad zur Jail<br />

# make installworld DESTDIR=U<br />

Pfad zur Jail<br />

# mergemaster ‐D Pfad zur Jail<br />

Damit ist das Update einer Jail abgeschlossen.<br />

Manchmal ist es wichtig zu<br />

sehen, ob und welche Prozesse innerhalb<br />

einer Jail wirklich laufen. Da hilft das<br />

Kommando »ps ‐ax« weiter. Der folgende<br />

Auszug aus der Prozessliste zeigt, welche<br />

Prozesse in einer Jail laufen. Zu erkennen<br />

ist es am zusätzlichen »J« in der Spalte<br />

Status (STAT).<br />

# ps ‐ax<br />

708 ?? SsJ 0:00,42 /usr/sbin/syslogd ...<br />

722 ?? SsJ 0:17,19 /usr/sbin/named ...<br />

774 ?? SsJ 0:00,12 /usr/sbin/sshd ...<br />

781 ?? IsJ 0:00,87 /usr/sbin/cron ‐s<br />

...<br />

Mit dem Kommando »jls« lassen sich alle<br />

derzeit aktiven Jails anzeigen:<br />

# jls<br />

JID IP Address Hostname Path<br />

1 192.168.1.201 dns.domain.tld<br />

/home/jail/dns<br />

2 192.168.1.202 www.domain.tld<br />

/home/jail/www<br />

3 192.168.1.203 xwindow.domain.tld<br />

/home/jail/xwindow<br />

Jails, vereinfacht<br />

Eine alternative und deutlich einfachere<br />

Möglichkeit Jails auf einem Host zu erstellen,<br />

geschieht mit der Skript-Sammlung<br />

»ezjail«. Sie befindet sich in den Ports in<br />

Listing 3: DHCP-Konfiuration<br />

01 dhcpd_enable="YES"<br />

02 dhcpd_flags="‐q"<br />

03 dhcpd_conf="/usr/local/etc/dhcpd.conf"<br />

04 dhcpd_umask="022"<br />

05 dhcpd_chuser_enable="YES"<br />

06 dhcpd_withuser="dhcpd"<br />

07 dhcpd_withgroup="dhcpd"<br />

08 dhcpd_devfs_enable="YES"<br />

09 dhcpd_makedev_enable="NO"<br />

10 dhcpd_chroot_enable="NO"<br />

11 dhcpd_jail_enable="NO"<br />

12 dhcpd_rootdir="/var/db/dhcpd"<br />

13 dhcpd_hostname="dns"<br />

14 dhcpd_ipaddress=""<br />

der Rubrik »sysutils« und lässt sich mit<br />

»portinstall« oder »pkg_add ‐r« schnell installieren.<br />

Die folgenden Schritte sind als<br />

Root-User auszuführen. Im ersten Schritt<br />

erstellt man eine Basis-Jail, die als Schablone<br />

für alle weiteren Jails dient. Dazu<br />

dient das Kommando<br />

# ezjail‐admin update ‐pP<br />

Dieser Prozess dauert je nach Leistung<br />

des System etwa zwei bis fünf Stunden,<br />

da durch das Ausführen von »make<br />

world« alles neu kompiliert wird. Mit<br />

dem Parameter »‐i« anstelle von »‐pP«<br />

lässt sich diese Prozedur umgehen, da<br />

dann nur noch »make installworld« ausgeführt<br />

wird. Für die weiteren Schritte gilt<br />

wieder, dass der Unterschied zwischen<br />

internen und Routing-fähigen Jails nur in<br />

der Vergabe der IP-Adresse besteht.<br />

Der folgende Schritt erzeugt eine Jail:<br />

# ezjail‐admin create Jail‐Name U<br />

IP‐Adresse<br />

Wie oben beschrieben, sind in »/etc/<br />

rc.conf« die entsprechenden Parameter<br />

für das Netzwerkinterface und die Jails<br />

einzutragen. Sie unterscheiden sich übrigens<br />

nicht. Zusätzlich ist diese Zeile<br />

einzutragen:<br />

# Jails mit ezjail starten<br />

ezjail_enable="YES"<br />

Jetzt lassen sich die Jails mit »/usr/ local/<br />

etc/rc.d/ezjail.sh start« starten. Alternativ<br />

bietet sich sich an: »ezjail‐admin start«.<br />

Der Aktualisierungsprozess gerät mithilfe<br />

von »ezjail« zum Kinderspiel. Ein einfacher<br />

Aufruf von »ezjail‐admin update ‐i«<br />

genügt und die Jail wird auf den neuesten<br />

Stand gebracht. Die Anwendungen innerhalb<br />

der Jail müssen allerdings in einem<br />

weiteren Schritt aktualisiert werden. Wie<br />

der geübte Administrator schnell erkennt,<br />

bedeutet die Skript-Sammlung »ezjail«<br />

eine enorme Arbeitserleichterung. Man<br />

muss nicht mehr die einzelnen »make«-<br />

Befehle eingeben und ausführen lassen.<br />

Viele Dienste, eine Jail<br />

Wie bereits beschrieben, dient eine Jail<br />

unter anderem zur Absicherung des Hosts<br />

vor Hacking-Angriffen auf bestimmte<br />

Dienste. Bekannteste Beispiele sind der<br />

DNS-Dienst »bind« und der Webserver.<br />

Bei allen Diensten kommt es darauf an,<br />

dass sie immer nur an die IP-Adresse<br />

der Jail gebunden werden. Das nächste<br />

Beispiel installiert den DNS-Dienst »bind«<br />

in einer Jail. Für kleine Netzwerke muss<br />

man nicht unbedingt einen eigenen Rechner<br />

für »bind« vorsehen, da genügt eine<br />

Jail auf dem zentralen FreeBSD-Server<br />

vollkommen. Aber Primary- und Secondary-DNS<br />

sollte man niemals jeweils in<br />

einer Jail auf einem Hostsystem laufen<br />

lassen. Würde das Hostsystem ausfallen,<br />

wären weder der Primary- noch der<br />

Secondary-DNS erreichbar. In der Konfigurationsdatei<br />

von »bind« genügt folgender<br />

Eintrag:<br />

listen‐on port 53 {<br />

IP‐Adresse der Jail;<br />

};<br />

Weiterhin muss die Datei »/etc/​resolv.<br />

conf« auf jedem Rechner – einschließlich<br />

des Hostsystems! – im Netzwerk angepasst<br />

werden.<br />

DHCP und Mail in der Jail<br />

Es ist möglich, einen DHCP-Server [10]<br />

in einer Jail zu betreiben. Dazu muss der<br />

Port ISC-DHCP3-SERVER aus dem Verzeichnis<br />

»/usr/ports/net/isc‐dhcp3‐server«<br />

so kompiliert werden:<br />

# make install ‐DDHCP_PARANOIA<br />

‐DDHCP_JAIL ‐DDHCP_SOCKETS<br />

# make clean<br />

In der Jail wird in die Systemkonfiguration<br />

»/etc/rc.conf« eingetragen, was<br />

Listing 3 zeigt.<br />

Die Konfigurationsdatei »/usr/local/etc/<br />

dhcpd.conf« des DHCP-Daemons muss<br />

durch diese Zeile ergänzt werden:<br />

local‐address IP‐Adresse Jail;<br />

Auf dem Hostsystem aktiviert man im<br />

Kernel den Treiber für das Berkeley Packet<br />

Filter (»bpf«). Zusätzlich ist das<br />

Regelwerk für den devfs-Daemon im<br />

Abschnitt [devfsrules_jail=4] um diesen<br />

Eintrag zu erweitern: »add path 'bpf*'<br />

unhide«.<br />

Die HTTP-Dienste Apache oder Lighttp<br />

müssen ebenfalls an eine Adresse gebunden<br />

werden. Der Eintrag in »httpd.conf«<br />

lautet wie folgt: »Listen :80«<br />

Man kann auch einen Mail-Server innerhalb<br />

einer Jail installieren. Die Anpas-<br />

114 Ausgabe 01-2013 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...<br />

eines von zwei tollen Gadgets (das Los entscheidet)<br />

Einsendeschluss ist der 15.03.2013


Jails<br />

NAT<br />

Paket-Filter<br />

PF<br />

Jail 1<br />

-------------<br />

WWW<br />

192.168.1.201<br />

Jail 2<br />

-------------<br />

DNS<br />

192.168.1.202<br />

Hostsystem<br />

server.heimnetz.net<br />

192.168.1.1<br />

Jail 3<br />

-------------<br />

Mail<br />

192.168.1.203<br />

Port 80 Port 53 Port 25<br />

ssh<br />

ssh<br />

ssh<br />

NAT<br />

Paket-Filter<br />

PF<br />

WWW<br />

Jail 1<br />

-------------<br />

WWW<br />

192.168.1.201<br />

Web-GUI für<br />

Datenbank<br />

Port 80 Port 22 Port Datenbank<br />

ssh<br />

Hostsystem mit Datenbank<br />

server.heimnetz.net<br />

192.168.1.1<br />

G Abbildung 3: Datenbank-Server mit WWW-Anbindung.<br />

F Abbildung 2: Server mit Diensten in einer Jail.<br />

Datenbank<br />

sung ist aber umfangreicher, als bei den<br />

vorangegangenen Beispielen. An einem<br />

Mail-Server mit Postfix-MTA [11] mit<br />

Spam-Filter und Viren-Scanner soll die<br />

Vorgehensweise beschrieben werden.<br />

In den Konfigurationsdateien von Postfix<br />

»/usr/local/etc/postfix/main.cf« und<br />

»/usr/local/etc/postfix/master.cf« ist<br />

die IP-Adresse des localhost durch die<br />

IP-Adresse der Jail zu ersetzen. Selbstredend<br />

muss auch der Hostname »localhost«<br />

gegen den Hostnamen der Jail<br />

getauscht werden, sofern die Jail nicht<br />

die IP-Adresse des Localhost verwendet.<br />

Das Gleiche gilt für die Konfiguration des<br />

Spam-Filters und des Viren-Scanners.<br />

Damit nun auf dem Hostsystem E-Mails<br />

Regeln für die Paketfilter PF und IPFW<br />

Damit Routing-fähige Jails auch von außen erreichbar<br />

sind, müssen entsprechende Regeln für<br />

PF und IPFW [9] geschrieben werden. Zunächst<br />

zu PF, dem Paketfilter, der von OpenBSD portiert<br />

wurde.<br />

# NAT‐Regeln fuer PF<br />

# =================<br />

extif = "Internet‐Interface"<br />

intif = "Intranet‐Interface"<br />

nat_jail = "Jail‐IP‐Adresse"<br />

nat on $extif from $intif:network toU<br />

any ‐> ($extif)<br />

rdr on $extif proto tcp from any toU<br />

any port Port ‐> $nat_jail<br />

pass in on $extif inet proto tcp U<br />

from any to $nat_jail port Port<br />

Zunächst wird festgelegt, auf welchem Netzwerk-Interface<br />

(»$extif«) der Datenstrom belauscht<br />

werden soll. Anschließend leitet PF alle<br />

Daten in einer Datenbank besonders<br />

geschützt sein sollten. Daher installiert<br />

man das Datenbanksystem auf dem Host<br />

und kommuniziert über eine IP-Adresse<br />

mit der Datenbank. Ähnliches gilt auch<br />

für Datenbank-Server, die über ein Web-<br />

Interface, administriert werden. Es gelten<br />

dabei besondere Sicherheitsvorkehrungen.<br />

Der WWW-Dienst sollte hierbei<br />

unbedingt in einer Jail laufen, damit im<br />

Falle einer ausgenutzten Schwachstelle<br />

im Daemon-Prozess nicht der gesamte<br />

Datenbestand der Datenbank auf dem<br />

Spiel steht. Abbildung drei zeigt eine solche<br />

Konfiguration.<br />

Dienste, die auf dem RPC-Protokoll basieren,<br />

lassen sich in einer Jail nicht bevom<br />

System weiterhin verschickt werden,<br />

muss der DNS-Dienst im Netzwerk einen<br />

sogenannten MX-Record enthalten.<br />

Alle Jails auf einem Host<br />

Es ist natürlich möglich und für kleine<br />

Firmen und Heim-Netzwerke interessant,<br />

alle Dienste jeweils in einer Jail auf einem<br />

Hostsystem zu installieren. Abbildung<br />

zwei verdeutlicht die Konfiguration.<br />

Oftmals liest man in diversen Foren, dass<br />

es Administratoren gibt, die einen Datenbankserver<br />

in einer Jail installieren.<br />

Das sollte man unterlassen, da einige<br />

Datenbanksysteme über System-V-IPC<br />

kommunizieren beziehungsweise die<br />

TCP-Daten, die über das externe Interface an<br />

Port »Port« gesandt werden, an die IP-Adresse<br />

der Jail (»$nat_jail«) um. Damit die Daten auch<br />

ungehindert durch den Paketfilter fließen, wird<br />

mit »pass« ein Kanal freigeschaltet.<br />

Bei IPFW ist die Sache umfangreicher. Es müssen<br />

das IPFW-Skript und NAT-Regeln für den NAT-<br />

Daemon erstellt werden. Die Regeln für den NAT-<br />

Daemon (»natd«):<br />

# NAT‐Regeln fuer natd<br />

# /etc/natd.conf<br />

# =================<br />

redirect_port tcp : U<br />

<br />

redirect_port tcp : U<br />

<br />

Damit IPFW im System verfügbar ist, müssen<br />

diverse Optionen im Kernel aktiviert sein. Dazu<br />

ist es ratsam, sich die einschlägige Literatur wie<br />

beispielsweise das sehr gute Handbuch durchzulesen.<br />

Damit alles lesbarer ist, setzt man eine<br />

Variable: »fwcmd="/sbin/ipfw ‐f"« Dann muss<br />

auch hier wieder der Datenverkehr, der über<br />

das Interface tun0 führt, für den NAT-Daemon<br />

zugänglich gemacht werden. Die folgende Regel<br />

sollte eine der ersten Angaben im Skript sein:<br />

${fwcmd} add divert natd all from any to<br />

any via tun0<br />

Damit keiner über den umgeleiteten Datenstrom<br />

Schaden anrichten kann, folgt eine weitere Regel:<br />

${fwcmd} add allow tcp from any to any<br />

setup keep‐state<br />

@KL: Die letzte Regel sollte immer sein:<br />

${fwcmd} add deny ip from any to any<br />

Nach dem Einlesen des Konfiguration bei PF<br />

oder dem Ausführen des Skripts für IPFW werden<br />

die Regeln aktiv. Zu jeweiligen Konfiguration<br />

sei dringend auch die Dokumentation zu Tools<br />

empfohlen.<br />

116 Ausgabe 01-2013 Admin www.admin-magazin.de


3 Ausgaben<br />

für nur 5,90 E<br />

Jetzt bestellen: 3 Hefte zum Preis von einem. Sie sparen 66 %!<br />

Kennenlernangebot:<br />

3 Ausgaben<br />

für nur 5,90 E<br />

Jetzt bestellen unter:<br />

www.android–user.de/miniabo<br />

Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@android-user.de


Jails<br />

treiben. Dies trifft insbesondere auf NIS<br />

(Network Information Service) zu. Falls<br />

eine Benutzerverwaltung innerhalb einer<br />

Jail unbedingt erwünscht ist, dann muss<br />

der Systemadministrator entweder die<br />

»/etc/passwd« des Hostsystems in<br />

die Jail kopieren, oder aber er muss<br />

LDAP aufsetzen. Die Vorgehensweise<br />

bei LDAP ist die gleiche, wie bei der<br />

Installation auf einem Client-System.<br />

Zu beachten ist allerdings, dass in einer<br />

Jail keine User-IDs verwendet werden sollten,<br />

die auch auf dem Host angelegt sind.<br />

Der Grund ist einfach: Falls auf dem<br />

Host ein SSH-Dienst läuft, und sofern<br />

ein Benutzerkonto gehackt wurde, hat es<br />

der Angreifer leicht, sich auch auf dem<br />

Hostsystem einzuloggen und Schaden<br />

anzurichten.<br />

Daher gilt, dass man so wenig wie<br />

möglich Benutzerkonten einrichtet und<br />

gleiche Benutzernamen vermeidet. Bei<br />

Systemkonten und dem Root-User lässt<br />

sich das nicht vermeiden. In diesem<br />

Zusammenhang ist es außerordentlich<br />

wichtig, dass die Passwörter des Root-<br />

Users auf dem Host und in der Jail unterschiedlich<br />

sind!<br />

Fensterln mit Jails<br />

Jails lassen sich nicht nur für Sicherheitszwecke<br />

einsetzen, sie sind unter anderem<br />

auch ein gutes Mittel, um Schulungsumgebungen<br />

aufzubauen. Jeder Schulungsteilnehmer<br />

bekommt eine Jail, in der<br />

er seine Kurseinheiten absolviert. Auch<br />

grafische Benutzeroberflächen (GUI) auf<br />

X11-Basis lassen sich zu diesem Zweck in<br />

einer Jail installieren. Ein wichtiger Punkt<br />

ist hierbei, dass der Xserver nicht in einer<br />

Jail funktioniert, da dieser direkten<br />

Zugriff auf die Hardware verlangt. Aber<br />

dank des X11-Protokolls leitet man die<br />

Ausgabe beispielsweise auf einen Thin-<br />

Client um. Die Konfiguration ist nicht<br />

sonderlich schwer, hält aber einige Fallstricke<br />

bereit. Zunächst installiert man in<br />

der Jail die gewünschten X11-Applikationen<br />

entweder über den Ports-Tree oder<br />

mittels »pkg_add ‐r«. In beiden Fällen<br />

werden alle benötigten Bibliotheken und<br />

Programme automatisch mit installiert.<br />

Weiter wird das Programm »xauth« benötigt,<br />

um eine Authentifizierung zu ermöglichen.<br />

Zu finden ist es in »/usr/<br />

ports/x11/xauth«. Im nächsten Schritt<br />

ändert man Einstellungen in »/etc/ssh/<br />

sshd_config« des ssh-Daemons: »X11Forwarding<br />

yes« Damit werden alle X11-Protokoll-Tokens<br />

durch den SSH-Tunnel geleitet.<br />

An dieser Stelle ein wichtiger Hinweis:<br />

Die Namensauflösung muss einwandfrei<br />

funktionieren! Auf der Client-Seite müssen<br />

die Tools »xauth« und »xhost« ebenso<br />

wie ein Display-Manager (»xdm«, »gdm«<br />

oder »kdm«) nach Wahl installiert sein.<br />

Zunächst ergänzt man die Konfiguration<br />

des ssh-Clients um folgende Angaben:<br />

Host *<br />

ForwardAgent yes<br />

ForwardX11 yes<br />

XAuthLocation /usr/bin/xauth<br />

ForwardX11Trusted yes<br />

Ebenso teilt man dem Xserver des Clients<br />

mit, dass er Daten von den X11-Applikationen<br />

der Jail akzeptieren soll:<br />

Wichtige Flags für Jails<br />

Für Jails gibt es sechs MIBs (Management Information Base), die nur vom Hostsystem aus geändert werden dürfen, und zwei Parameter lassen sich vom<br />

Root-User innerhalb der Jail manipulieren. Die Flags werden mittels »sysctl« gesetzt: »sysctl ‐w $MIB=0 oder sysctl ‐w $MIB=1. Mit sysctl $MIB« lässt<br />

sich der aktuelle Status erfragen. Zuerst die MIBs, die vom Hostsystem geändert werden dürfen und sich auf alle Jails gleichermaßen auswirken:<br />

Bezeichnung der MIB Erklärung Standard Soll<br />

security.jail.set_hostname_allowed<br />

security.jail.socket_unixiproute_only<br />

security.jail.sysvipc_allowed<br />

security.jail.allow_raw_sockets<br />

security.jail.getfsstatroot_only<br />

security.jail.chflags_allowed<br />

Der root-User darf innerhalb einer Jail den Hostnamen mit hostname(1), sethostname(3)<br />

oder mit dem MIB kern.hostname ändern.Die Jail nutzt den Hostnamen, um<br />

mit dem Hauptsystem in Verbindung zu bleiben. Daher sollte dieser Parameter immer<br />

auf „0“ gesetzt sein.<br />

Diese MIB entscheidet, ob die Kommunikation der Jail über IP kommuniziert, oder<br />

über UNIX-Sockets. Letzteres ist als gefährlich einzustufen, da dies ein Loch in das<br />

Konzept reißen würde.<br />

Falls dieses Flag gesetzt ist, ist eine Kommunikation mit Prozesses außerhalb der Jail<br />

über mittels System V IPC (Interprocess communication) möglich. Es gibt Datenbanken,<br />

die ein gesetztes Flag unbedingt benötigen. Aber Vorsicht!<br />

Diese MIB erlaubt es, innerhalb einer Jail die sogenannten raw-sockets zu verwenden.<br />

Damit ist es unter anderem möglich, Tools wie ping(8) oder traceroute(8) zu verwenden.<br />

Es ist aber auch zu berücksichtigen, dass die raw-sockets auch vom Netzwerk-<br />

Subsystem verwendet werden!<br />

Damit lässt sich einstellen, ob User innerhalb einer Jail alle Mount-Points sehen können<br />

oder nicht.<br />

Diese MIB kontrolliert, ob ein privilegierter User, die File-Flags (chflags(8)) ändern<br />

darf, oder nicht.<br />

Innerhalb einer Jail dürfen zwei MIBs geändert werden, sofern dies erlaubt wurde!<br />

1 0<br />

1 1<br />

0 0<br />

0 0<br />

1 1<br />

0 0<br />

Bezeichnung des MIBs Erklärung Standard Soll<br />

kern.hostname<br />

Falls im Hostsystem security.jail.set_hostname_allowed = 1 ist, dann kann innerhalb 1 0<br />

der Jail der Jail-Hostname geändert werden.<br />

kern.securelevel Die Jail kann ebenso wie der Host mit verschiedenen Securelevels arbeiten. ‐1<br />

118 Ausgabe 01-2013 Admin www.admin-magazin.de


Jails<br />

Make- Parameter »TARGET=i386«. Die<br />

nächsten Schritte folgen dem weiter oben<br />

dargestellten Schema.<br />

Fazit<br />

Abbildung 4: Rechts ist die in einer Jail gestartete X11-Anwendung (xclock) auf einem Gnome3-Desktop zu<br />

sehen. Im linken Fenster das zugehörige SSH-Terminal.<br />

$ xhost +<br />

Wenn man sich anschließend mit »ssh<br />

user@x11jail X11‐Applikation« an der Jail<br />

anmeldet, so erscheint auf dem Desktop<br />

des Clients ein Fenster mit der in der<br />

Jail gestarteten X11-Anwendung. Siehe<br />

hierzu auch Abbildung 4. Darauf aufbauend<br />

lassen sich mit wenigen Handgriffen<br />

auch <strong>Linux</strong>-Applikationen in einer Jail<br />

betreiben. Interessant ist dies, wenn man<br />

Anwendungen hat, die bereits für <strong>Linux</strong><br />

verfügbar sind, aber für FreeBSD noch<br />

nicht. Man macht sich zunutze, dass es<br />

für FreeBSD Bibliotheken gibt, die eine<br />

<strong>Linux</strong>-Kompatibilität herstellen. Dazu<br />

installiert man auf dem Host den Port<br />

linux_base:<br />

# cd /usr/ports/compat/linux_base<br />

# make install clean<br />

Anschließend mountet man das Verzeichnis<br />

mit den Bibliotheken in das Verzeichnis<br />

der Jail:<br />

# mount_nullfs /compat/<br />

Pfad zur Jail/compat/<br />

# mount ‐t linprocfs linprocfs<br />

Pfad zur Jail/compat/linux/proc<br />

Wichtig ist, dass man auch das <strong>Linux</strong>-<br />

Process-Filesystem mountet, weil die<br />

<strong>Linux</strong>-Prozessverwaltung in einem Dateisystem<br />

abgebildet wird. Damit nach einem<br />

Neustart der Mount erhalten bleibt,<br />

ergänzt man »/etc/fstab« des Hosts entsprechend<br />

um die folgenden jeweils in<br />

einer Zeile geschriebenen Einträge:<br />

Pfad zur Jail/compat/ U<br />

/compat nullfs rw 0 0<br />

linprocfs Pfad zur Jail/compat/U<br />

linux/proc linprocfs rw 0 0<br />

Weiterhin trägt man in die Systemkonfiguration<br />

»/etc/rc.conf« des Hosts<br />

und der Jail diese Zeile ein: »linux_<br />

enable="YES"«.<br />

Zwei Welten, ein System<br />

Die im letzten Abschnitt gezeigten Beispiele<br />

lassen sich zu einer Art Virtualisierungslösung<br />

ausbauen. Das Jails-Konzept<br />

von FreeBSD bietet die Möglichkeit, auf<br />

64-Bit-Hosts Jails bereitzustellen, die<br />

32-Bit-Anwendungen ausführen. Die<br />

Vorgehensweise bei der Installation und<br />

Konfiguration ist bis auf kleine Unterschiede<br />

die gleiche:<br />

# setenv UNAME_m i386<br />

# setenv UNAME_p i386<br />

# cd /usr/src<br />

# make buildworld TARGET=i386<br />

# make installworld TARGET=i386 U<br />

DESTDIR=Pfad zur Jail<br />

# cd etc/<br />

# make distribution DESTDIR=U<br />

Pfad zur Jail<br />

# mount ‐t devfs devfs U<br />

Pfad zur Jail/dev<br />

Zunächst werden die Umgebungsvariablen<br />

für die korrekte Ausgabe des Kommandos<br />

»uname« gesetzt. Nachdem in<br />

das Verzeichnis »/usr/src« gewechselt<br />

worden ist, kommen die Make-Aufrufe<br />

an die Reihe. Damit eine 32-Bit-<br />

Jail erstellt wird, verwendet man den<br />

Das Konzept der Jails unter FreeBSD<br />

ist nicht allein ein Sicherheitskonzept,<br />

sondern es stellt auch eine kleine<br />

Virtualisierungslösung dar. Dadurch<br />

bekommen nicht nur Administratoren in<br />

Rechenzentren ein mächtiges Werkzeug<br />

an die Hand. Auch Internet-Providern<br />

bietet sich hier die Chance, ihren Kunden<br />

Root-Shells zur Verfügung zu stellen und<br />

diese nutzen zu lassen. Die Sicherheit<br />

ist dabei bedingt durch das Konzept in<br />

vollem Umfang gewährleistet.<br />

Den Administratoren eines Heimnetzwerks<br />

bieten die Jails ebenfalls einen<br />

erheblichen Sicherheitsgewinn. Besonders,<br />

wenn sie nicht nur einen kleinen<br />

DNS-Dienst einsperren, sondern beispielsweise<br />

einen Webbrowser in einer<br />

Jail installieren. Alles in allem zeigt sich:<br />

Die Jails unter FreeBSD sind ein echtes<br />

Highlight und zugleich sehr vielseitig<br />

einsetzbar. (jcb)<br />

n<br />

Infos<br />

[1] J. Dankoweit: FreeBSD Installieren – Konfigurieren<br />

– Administrieren, (Hrsg.), C&L-<br />

Verlag<br />

[2] FreeBSD-Handbuch (online): [http:// www.​<br />

freebsd. org/ doc/ de_DE. ISO8859‐1/ books/​<br />

handbook/ index. html]<br />

[3] Evi Nemeth et al.: UNIX-Systemverwaltung<br />

, Markt&Technik<br />

[4] Evan Sarmiento: The Jail Subsystem:<br />

[http:// www. freebsd. org/ doc/ en_US.​<br />

ISO8859‐1/ books/ arch‐handbook/ jail. html]<br />

[5] Poul-Henning Kamp: Jails: Confining the<br />

omnipotent root<br />

[6] Kirk McKusik: The Design and Implementation<br />

of the FreeBSD Operating System,<br />

Chapter 4: The Jail Facility in FreeBSD 5.2<br />

[7] man-pages: jail(8), jexec(8), jls(8),<br />

killall(1), ipfw(8), ezjail-admin(1), mount_<br />

nullfs(8)<br />

[8] Englischsprachiges BSD-Forum: [www.​<br />

bsdforums. org]<br />

[9] Handbuch zum Paketfilter PF: [http://​<br />

www. openbsd. org/ faq/ pf/ de/ index. html]<br />

[10] ISC-DHCP-Daemon: [http:// www. isc. org/​<br />

index. pl]<br />

[11] Postfix-MTA: [www. postfix. org]<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

119


PKG-NG<br />

© Konstantin Semenov, 123RF<br />

Das neue Paketmanagement in FreeBSD<br />

Neubau<br />

Seit Langem warten die FreeBSD-Anwender auf eine Runderneuerung<br />

der in die Jahre gekommenen Paketverwaltung. Im Oktober wurde in<br />

CURRENT mit PKG-NG ein radikaler Schnitt gemacht – bei den Binärpaketen<br />

wird vieles anders und manches besser. Jörg Braun, Rosa Riebl<br />

des Systems und zum Umgang damit,<br />

auch mit Seitenblicken auf OpenBSD und<br />

NetBSD finden sich etwa [1].<br />

Das Paketsystem aller drei BSD-Systeme<br />

legt zur Verwaltung einen Verzeichnisbaum<br />

in »/var/db/pkg/« an. Es ist eine<br />

rein verzeichnisbasierte Datenbank, in<br />

der jedes Softwarepaket ein Unterverzeichnis<br />

mit genau seinem Namen und<br />

der vollen Versionsnummer erhält. In diesem<br />

Verzeichnis befinden sich eine Reihe<br />

Text-Steuerdateien.<br />

Anders als bei Windows und Mac OS<br />

X, bei denen jeder Softwarehersteller für<br />

die Installation und Deinstallation seiner<br />

Anwendung selbst verantwortlich<br />

ist, kümmern sich die Unix-artigen Betriebssysteme<br />

selbst um die verfügbaren<br />

Programme. Bei <strong>Linux</strong> sind die Distributoren,<br />

bei BSD die Projekte für die<br />

hier enthaltenen Daten zuständig. Der<br />

<strong>Linux</strong>-Anwender (außer er arbeitet mit<br />

Gentoo) wählt normalerweise die Binärdateien<br />

der Programme als RPM- oder<br />

Deb-Dateien in einem Frontend, und die<br />

Softwareverwaltung macht den Rest. Das<br />

alles geht schnell, ist aber wenig flexibel,<br />

weil alle Programme mit Voreinstellungen<br />

vorkompiliert sind.<br />

Bei BSD ist das ganz anders. Der erfahrene<br />

Administrator installiert im Regelfall<br />

Programme exakt angepasst aus<br />

deren Quellen. Dieses Verfahren ist bei<br />

FreeBSD, NetBSD und OpenBSD fast<br />

identisch, auch wenn dies bei NetBSD<br />

Package Sources und bei den anderen<br />

beiden Betriebssystemen Ports heißt. Das<br />

Einspielen von Programmen auf diese<br />

Weise ist sehr langwierig. Wer zu schnelleren<br />

Ergebnissen kommen will, kann<br />

die Programme – dann nur mit den Standardvorgaben<br />

– mit den Kommandozeilenprogrammen<br />

»pkg_add« installieren,<br />

mit »pkg_delete« deinstallieren und sich<br />

weiterhin mit »pkg_info« Basisinformationen<br />

zu den installierten Paketen anzeigen<br />

lassen.<br />

Es gibt noch einige weitere Hilfsprogramme,<br />

die aber für die meisten Anwender<br />

nicht von Bedeutung sind. Diese Programme<br />

gibt es bei allen BSD-Betriebssystemen,<br />

die das Paketsystem vor Jahren<br />

von FreeBSD übernommen hatten. Ausführliche<br />

Beschreibungen zum Aufbau<br />

Überarbeitet<br />

Im Oktober 2012 wurde diese Softwareverwaltung<br />

bei FreeBSD CURRENT<br />

durch einen PKG NG genannten Nachfolger<br />

abgelöst. Das Absonderliche ist<br />

nicht, dass endlich die Paketverwaltung<br />

modernisiert wird, sondern dass sich<br />

»pkg« gar nicht im Lieferumfang von<br />

FreeBSD befindet. Ruft man nach der Installation<br />

das Programm auf, wird nur die<br />

Meldung angezeigt, dass das Programm<br />

installiert werden sollte, es befindet sich<br />

nämlich in den Ports und muss erst gebootstrappt<br />

werden. Selbst wenn man<br />

ein Paket des Programms »pkg« vorliegen<br />

hat, nützt das aber nichts – »pkg«<br />

ist ja nicht installiert. Diesen Konflikt<br />

versucht FreeBSD über einen Download<br />

des Binaries zu lösen, was bei diversen<br />

Versuchen fehlschlug.<br />

120 Ausgabe 01-2013 Admin www.admin-magazin.de


PKG-NG<br />

Da das Paket in den Ports vorhanden<br />

ist, reicht alternativ ein »cd /usr/ports/<br />

ports‐mgmt/pkg ; make install clean«,<br />

um anschließend mit dem Programm arbeiten<br />

zu können. Vertrauenerweckend<br />

erscheint diese Einführung der neuen<br />

Paketverwaltung jedoch nicht. Immerhin<br />

weist sie bei der Installation darauf hin,<br />

dass der Aufruf von »pkg2ng« eine alte<br />

Paketdatenbank in das neue Format umzieht.<br />

Er ist aber nur dann nötig, wenn<br />

man »pkg‐ng« bei einer älteren FreeBSD-<br />

Version nutzen möchte, bei der schon<br />

Programme installiert wurden, möglich<br />

ist das ab FreeBSD 8.<br />

Zweiteilung<br />

»pkg‐ng« besteht aus zwei Programmen,<br />

die in »/usr/local/sbin« abgelegt werden<br />

und »pkg« und »pkg‐static« heißen. Nach<br />

der Installation sollte man Letzteres an<br />

einen sicheren Ort wie beispielsweise »/<br />

usr/sbin« kopieren. Weiterhin elementar<br />

ist die Konfiguration<br />

»/usr/local/<br />

etc/pkg.conf«.<br />

Diese Datei gibt<br />

es nach der Installation<br />

aber nicht,<br />

das in »/usr/local/<br />

etc« abgelegte Template »pkg.conf.sample«<br />

muss erst wahlweise umbenannt<br />

oder umkopiert werden. Der auffälligste<br />

Unterschied zum alten Paketsystem ist<br />

aber, dass man nicht mehr einfach Namen<br />

und Version eines installierten Paketes<br />

durch ein »ls« nach »/var/db/pkg«<br />

ermitteln kann. Die Zeiten, in denen mit<br />

den Standardwerkzeugen des Betriebssystems<br />

nach Daten forschen und man<br />

über das Editieren einer Datei einen kleineren<br />

Tweak durchführen konnte, sind<br />

vorbei. Der Entwickler von »pkg« hat sich<br />

der auch schon anderweitig bei freien<br />

Unix-Systemen um sich greifende Unsitte<br />

angeschlossen und schreibt die Daten in<br />

eine SQLite-Datei.<br />

Abbildung 1: Die herkömmlichen Paketverwaltungsprogramme weisen bei<br />

FreeBSD CURRENT auf das neue Programm hin.<br />

Nach der Installation ändert sich aber<br />

sonst bei der Installation eines Paketes<br />

erst einmal nicht sehr viel. Liegt die Paketdatei<br />

lokal vor, ruft man anstelle von<br />

»pkg_add« jetzt nur »pkg add« ohne den<br />

Unterstrich auf. Möchte man Anwendungen<br />

aus dem Internet installieren, heißt<br />

es jetzt nicht mehr »pkg_add ‐r«, sondern<br />

»pkg install«. Gelöscht werden die Daten<br />

mit »pkg delete«. Tabula rasa mit »pkg<br />

delete ‐a« geht aber nicht, der Anwender<br />

muss jetzt mit »‐af« das Löschen erzwingen.<br />

Hier zeigt sich auch die Tücke des<br />

Objekts und warum man »pkg‐static« in<br />

Sicherheit bringen muss: Das Paketverwaltungsprogramm<br />

wird als Paket aus<br />

den Ports gleich mitgelöscht und muss<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<br />

Heftartikel aus dem<br />

<strong>ADMIN</strong>-<strong>Magazin</strong> von<br />

2009 bis 2012!<br />

Volltextsuche<br />

Praxisrelevante Themen<br />

für alle IT-Administratoren<br />

* Angebot gültig nur<br />

für Abonnenten eines<br />

Print- oder vollen<br />

digitalen <strong>ADMIN</strong> Abos<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

Bestellen Sie unter: www.admin-magazin.de/archiv<br />

121


PKG-NG<br />

vor der Installation neuer Pakete erst wieder<br />

installiert werden.<br />

Nicht perfekt<br />

Da »ls /var/db/pkg« keinen Nutzen mehr<br />

bringt, müssen die Daten zur Installation<br />

beim neuen Paketsystem jetzt mit<br />

»pkg info« und »pkg query« abgefragt<br />

werden. Hier zeigt sich leider eine der<br />

großen Schwächen des Paketsystems von<br />

FreeBSD, offensichtlich kennt man die<br />

viel intelligenteren Anwendungen des<br />

Package-Source-Systems von NetBSD<br />

nicht, die auch Wildcards in den Paketnamen<br />

erkennen und intelligent ergänzen.<br />

Die in dieser Hinsicht absolute tumbe<br />

Paketverwaltung von FreeBSD versteht<br />

zwar noch ein »pkg info xorg« und gibt<br />

die Versionsnummer und die einzeilige<br />

Beschreibung aus, um aber zu erfahren,<br />

Tabelle 1: Paket-Befehle<br />

Steueranweisung<br />

add<br />

audit<br />

autoremove<br />

backup<br />

check<br />

clean<br />

create<br />

delete, remove<br />

fetch<br />

help<br />

info<br />

install<br />

query<br />

register<br />

repo<br />

rquery<br />

search<br />

set<br />

shell<br />

shlib<br />

stats<br />

update, upgrade<br />

updating<br />

version<br />

which<br />

welche X-Treiber installiert sind, hilft<br />

kein »pkg info xf86‐drivers«. Hier muss<br />

man das »pkg info ‐a xorg« mit »more«<br />

oder »less« anzeigen oder die Ausgabe<br />

des Befehls mit »grep xf86« durchsuchen,<br />

um eine Liste der Treiber zu sehen.<br />

Die Entwickler des Programms »pkg« heben<br />

hervor, dass man mit ihm in einer<br />

Chroot-Umgebung oder gar einem Jail<br />

arbeiten kann. Man konnte vorher zwar<br />

auch in lokalen Umgebungen Pakete<br />

installieren, es war aber nicht so elegant.<br />

Ein Fortschritt gegenüber dem alten Paketsystem<br />

ist aber, dass mit »pkg update«<br />

und »pkg upgrade« die lokale Repository-<br />

Datenbank und derzeit wenigstens in<br />

Teilen auch die installierten Programme<br />

schnell und bequem auf einen aktuellen<br />

Stand gehoben werden können. <strong>Linux</strong>-<br />

Anwender können über die bisherigen<br />

mühseligen Aktualisierungsversuche mit<br />

Aufgabe<br />

Installiert ein Paket im System.<br />

Meldet sicherheitskritische Pakete.<br />

Löscht überflüssige verwaiste Abhängigkeiten.<br />

Sichert und restauriert die lokale Paketdatenbank.<br />

Prüft die Paketverwaltung.<br />

Löscht alte Pakete aus dem Cache.<br />

Legt Distributionspakete an.<br />

Löscht Pakete vom System und aus der lokalen Datenbank. Die Aufrufe sind<br />

synonym.<br />

Holt Pakete aus dem Remote-Repository.<br />

Anzeigen der Hilfe des Programms.<br />

Gibt Informationen zu installierten Paketen oder zu Paketdateien aus.<br />

Installiert Pakete aus dem Remote-Repository.<br />

Zeigt Informationen zu einem installierten Paket an. Dem Befehl muss ein<br />

recht komplizierter Formatstring übergeben werden, seine zahlreichen Optionen<br />

verrät die Manpage pkg-query.<br />

Meldet ein Paket in der lokalen Datenbank an.<br />

Schreibt einen Paketkatalog.<br />

Ruft Informationen in Repository-Katalogen ab.<br />

Durchsucht den Katalog eines Repositories.<br />

Ändert Paketinformationen in der lokalen Datenbank.<br />

Öffnet eine Debug-Shell.<br />

Zeigt an, welches Paket eine bestimmte Bibliothek benötigt.<br />

Anzeigen der Datenbankstatistik.<br />

Aktualisiert den Paketkatalog und bei Bedarf auch die lokalen Pakete nach<br />

dem Alles-oder-nichts-Prinzip. Einzelpakete lassen sich nicht austauschen. Die<br />

beiden Aufrufe sind ähnlich aber nicht synonym!<br />

Zeigt die Aktualisierungsinformationen zu einem Paket an.<br />

Zeigt die Versionsnummern aller installierten Programmpakete an. Dabei wird<br />

mitgeteilt, ob das Programm auf den aktuellen Stand ist oder nicht, was aber<br />

nicht bedeutet, dass alle veralteten Pakete anschließend mit »pkg update«<br />

ersetzt werden können.<br />

Informiert, welches Paket eine bestimmte Datei installiert hat.<br />

»portupgrade« nur mitleidig lächeln. Eine<br />

Paketaktualisierung dauerte damit ein<br />

Mehrfaches der Zeit, die das komplette<br />

Löschen und Neuinstallieren gedauert<br />

hat. Eine Liste der verfügbaren Befehle<br />

von »pkg« zeigt Tabelle 1. Sie alle erhalten<br />

noch zusätzliche Schalter, die in den<br />

Manpages zu »pkg‐Befehl« nachzulesen<br />

sind.<br />

Fazit<br />

FreeBSD hat sich mit der neuen Paketverwaltung<br />

einen radikalen Schnitt vollzogen.<br />

Dass die Verwaltungssoftware nicht<br />

im Basissystem enthalten ist, überrascht<br />

und ist wenig sinnvoll. Vielleicht möchte<br />

man aber auch erst die Reaktionen der<br />

Anwender testen, bevor man »pkg‐ng«<br />

vom Current in den Release-Zweig<br />

schiebt. Wem das Ganze zu suspekt erscheint,<br />

kann deshalb auch unter CUR-<br />

RENT darauf verzichten. Das gelingt mit<br />

der Variablen »WITH_PKGNG=YES« in<br />

der Datei »/etc/make.conf«.<br />

Nur dann werden selbst kompilierte Anwendungen<br />

nicht im neuen Txz-, sondern<br />

im gewohnten Tbz-Format und mit<br />

dem alten Paketinhalt geschrieben. Hier<br />

liegt auch der größte Nachteil der neuen<br />

Pakete, nämlich dass sie nicht mehr kompatibel<br />

sind. Deshalb findet »pkg_add<br />

‐r« bei FreeBSD 10 auch keine Pakete<br />

mehr im Internet, und der Mutige, der<br />

unter FreeBSD 8 oder 9 »pkg‐ng« testen<br />

will, muss ebenfalls auf die bequeme<br />

und vor allem schnelle Installation der<br />

Programme direkt vom FreeBSD-Server<br />

verzichten.<br />

Mit dem Abschied von »sysinstall« und<br />

der darin enthaltenen und schon lange<br />

nicht mehr gepflegten Softwareverwaltung<br />

ist der Schritt zu etwas ganz Neuem<br />

aber nur konsequent. Fragt sich nur, ob<br />

die FreeBSD-Entwickler dieses Mal etwas<br />

Neues nicht nur grob zusammenschustern<br />

und dann die Anwender damit weghumpeln<br />

lassen, wie es zuletzt bei dem<br />

jämmerlichen BSD-Installer in FreeBSD 9<br />

der Fall ist, oder ob sie wenigstens diese<br />

Baustelle komplett bis zum Ende fertigstellen.<br />

Es wäre wünschenswert. (ofr) n<br />

Infos<br />

[1] Jürgen Dankoweit (Hrsg.): FreeBSD. C&L-<br />

Verlag 2009, ISBN 978-3-936546-41-5./​<br />

122 Ausgabe 01-2013 Admin www.admin-magazin.de


Das <strong>Magazin</strong> für die<br />

mobile Windows-Welt<br />

Digitales Abo: nur 19,90 * Euro (6 PDFs)<br />

NEU!<br />

Ihre Vorteile:<br />

Lesen Sie News und Artikel<br />

schon 1 Woche vor dem<br />

Kiosk-Termin!<br />

Hardware und App-Tests,<br />

Workshops, Tipps und Tricks<br />

für Anfänger und Profis!<br />

Nutzbar auf Smartphone,<br />

Tablet oder Notebook/PC!<br />

Jetzt bestellen unter:<br />

windows-phone-user.de/digisub<br />

Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@windows-phone-user.de<br />

* Abopreis gilt für 1 Jahr, das Angebot gilt innerhalb Deutschlands.


FreeBSD und KVM<br />

© Andrey Bourdioukov, 123RF<br />

FreeBSD und KVM-Virtualisierung<br />

Hochzeit<br />

Die KVM-basierte FOSS-Cloud ist eine Alternative zu teuren kommerziellen<br />

zentralen Virtualisierungslösungen für Windows- und <strong>Linux</strong>-Gäste. Mit<br />

einigen kleineren Vorarbeiten lassen sich damit auch FreeBSD-Server virtualisieren.<br />

Dieser Workshop beschreibt genau, wie es geht. Jörg Braun, Rosa Riebl<br />

Der FreeBSD-Kernel ist wie der <strong>Linux</strong>-<br />

Kernel modular, das heißt, Hardware-<br />

Treiber können in Form von Kernelmodulen<br />

nachgeladen werden. Das Problem<br />

bei FreeBSD 8 und 9 ist aber, dass die<br />

Virtio-Treiber nicht zum Standard-Lieferumfang<br />

gehören, sondern in den Ports<br />

enthalten sind. Erst bei FreeBSD 10, der<br />

aktuellen CURRENT-Version, sind sie im<br />

Standard-Repertoire enthalten.<br />

Selbst gemeistert<br />

In der Ausgabe 5/​2012 der FreeX wurde<br />

ausführlich das Konzept der FOSS-Cloud<br />

[1] als rein opensource-basierte Virtualisierungslösung<br />

beschrieben [2]. Selbst<br />

Windows-XP-Gäste lassen sich auf dem<br />

KVM-basierten Server installieren, wenn<br />

solche Desktops im Netz verteilt werden<br />

sollen [3].<br />

Die FOSS-Cloud sieht als Gäste eigentlich<br />

nur Windows und <strong>Linux</strong>-Distributionen<br />

vor, und Stellschrauben für die<br />

Anpassung gibt es dabei praktisch keine.<br />

Stattdessen wird erwartet, dass der Gast<br />

die Festplatte, das Netzwerk und den<br />

Speicher paravirtualisiert mit den zugehörigen<br />

Virtio-Treibern zugewiesen bekommt.<br />

Diese Virtio-Treiber gibt es auch<br />

für FreeBSD ab Version 8, weshalb es<br />

machbar erscheint, es ebenfalls mit KVM<br />

in der FOSS-Cloud zu virtualisieren.<br />

Treiber verlangt<br />

Die Installation eines Betriebssystems auf<br />

dem Datenträger ist nur möglich, wenn<br />

die notwendigen Festplattentreiber geladen<br />

sind. Das ist bei FreeBSD bei SCSI-,<br />

IDE- und SATA-Platten der Fall [4], und<br />

damit ist die Installation des Betriebssystems<br />

bei allen Virtualisierungslösungen<br />

möglich, die diese Datenträger emulieren.<br />

KVM mit seinen paravirtualisierten<br />

Geräten besitzt jedoch die speziellen Virtio-Devices,<br />

die bei der Betriebssysteminstallation<br />

nur dann akzeptiert werden,<br />

wenn die richtigen Treiber geladen sind.<br />

Um das Betriebssystem überhaupt installieren<br />

zu können, muss deshalb ein<br />

neuer Installations-Datenträger zusammengestellt<br />

werden. Dies ist prinzipiell<br />

sehr einfach, Voraussetzung ist, dass<br />

man genau die richtigen VirtIO-Treiber<br />

für den gewünschten Installations-Datenträger<br />

besitzt. Es ist nicht möglich,<br />

die Treiber beispielsweise unter FreeBSD<br />

9-STABLE für den Installationskernel eines<br />

FreeBSD-9.0-RELEASE zu kompilieren,<br />

die Dateien werden beim Booten von<br />

der CD abgelehnt und nicht geladen.<br />

Da die Installation von 8.x, 9.x und<br />

CURRENT in der FOSS-Cloud aber unterschiedliche<br />

Arbeitsvorbereitungen und<br />

‐abläufe verlangen, sind hier alle drei Betriebssystemvarianten<br />

berücksichtigt.<br />

124 Ausgabe 01-2013 Admin www.admin-magazin.de


FreeBSD und KVM<br />

Paravirtualisierung mit KVM<br />

Die Beschreibungen hier beziehen sich zwar<br />

auf die FOSS-Cloud. Die Treiberproblematik<br />

und die Lösungen gelten aber immer, wenn<br />

FreeBSD in KVM-basierten Umgebungen installiert<br />

werden soll, bei denen die Standard-<br />

Festplatten- und ‐Netzwerkkartenemulationen<br />

nicht verfügbar sind.<br />

FreeBSD, KVM und die Maus<br />

Mit der hier nachzulesenden Beschreibung<br />

kann derzeit nur ein Server beziehungsweise<br />

ein konsolenorientiertes FreeBSD installiert<br />

werden. Die X-Oberfläche funktioniert nicht,<br />

weil die Maus nicht richtig initialisiert wird.<br />

Beim Booten wird richtigerweise ein USB-Gerät<br />

mit dem Namen »QEMU 1.0 QEMU USB Tablet,<br />

class 0/0, rev 1.00/0.0, addr 2« als »/dev/hid0«<br />

angelegt, und dieses Gerät reagiert auch im<br />

Test mit »usbhidctl ‐f /dev/uhid0 ‐l ‐a« richtig,<br />

es gibt aber kein Maus-Device »/dev/ums0« für<br />

die USB-Maus. Der Autor hat leider keinen Weg<br />

gefunden, diesen Fehler zu korrigieren. Falls<br />

jemand die Lösung kennt, wird er/​sie hiermit<br />

gebeten, sie der <strong>ADMIN</strong>-Redaktion zukommen<br />

zu lassen.<br />

Da ohnehin die Original-CD von FreeBSD<br />

oder deren ISO-Image benötigt wird, bietet<br />

es sich an, falls kein FreeBSD auf echter<br />

Hardware installiert ist, die Vorarbeiten<br />

in einer lokalen virtuellen Maschine<br />

auszuführen. Die 32- und die 64-Bit-Version<br />

von FreeBSD lassen sich problemlos<br />

mit VMware Workstation, Parallels<br />

Workstation und Oracle Virtualbox [5]<br />

virtualisieren.<br />

Für eine saubere Installation sollte man<br />

am besten mit der Release-Version einer<br />

aktuellen Version von FreeBSD 8 oder<br />

9 arbeiten. Der Kernel des installierten<br />

Betriebssystems darf gegenüber dem<br />

auf der CD/​DVD nicht aktualisiert sein.<br />

Bei FreeBSD 8 ist die DVD für die FOSS-<br />

Cloud nötig, bei FreeBSD 9 reicht eine<br />

Installations-CD. Alle Arbeiten sind bei<br />

der 32- und der 64-Bit-Version identisch.<br />

Es ist außerdem nicht sinnvoll, ein älteres<br />

FreeBSD 9.0 zu verwenden, weil sich<br />

hier der Pfad der Treiber zwischenzeitlich<br />

geändert hat, was bei der Installation zu<br />

Irritationen führen könnte.<br />

Die Ports können aktualisiert sein, es ist<br />

aber nicht unbedingt nötig. Möchte man<br />

sie auf den neuesten Stand bringen (zu<br />

empfehlen nur bei einem Release, das älter<br />

ist als ein halbes Jahr), geschieht das<br />

am einfachsten mit Root-Rechten auf der<br />

Kommandozeile mit dem Aufruf »portsnap<br />

fetch extract«. Dazu muss das System<br />

natürlich auf das Internet zugreifen können.<br />

Auch alle weiteren hier geschilderten<br />

Arbeiten setzten Administratorrechte<br />

voraus.<br />

Gut angepasst<br />

Regulär legt man einen neuen Distributionsdatenträger<br />

über die Quellen an. Bei<br />

FreeBSD 8 und 9 ist das nicht nötig. Man<br />

kann auch aus der originalen CD oder<br />

DVD eine angepasste anlegen, was sehr<br />

viel schneller geht. Dazu muss zuerst die<br />

Original-Installations-CD eingebunden<br />

werden. Das geschieht nach dem Einlegen<br />

des Datenträgers oder dem Anbinden<br />

der CD oder des ISO-Images in einer Virtualisierungslösung<br />

mit dem Aufruf<br />

mkdir /cdrom<br />

mount ‐t cd9660 /dev/cd0 /cdrom<br />

Das Schreiben eines neuen ISO-Images<br />

erfordert ein Mastering-Verzeichnis, das<br />

nach dem Abschluss der Arbeiten wieder<br />

komplett entfernt werden kann. Weiterhin<br />

bietet es sich an, die Dateien aus<br />

Gründen der Bequemlichkeit mit dem<br />

Midnight Commander (»mc«) anstatt mit<br />

»cp« zu kopieren. Für das Schreiben des<br />

ISO-Images ist weiterhin »mkisofs« aus<br />

den CDR-Tools nötig; um Platz im ISO-<br />

Image zu sparen, das Programm »dupmerge«<br />

[6], das sich ebenfalls in den<br />

Ports befindet. Es lohnt sich nicht, diese<br />

Programme aus den Quelltexten zu installieren,<br />

das Einspielen aller benötigten<br />

Daten direkt vom FreeBSD-FTP-Server<br />

übernimmt:<br />

pkg_add ‐r mc dupmerge cdrtools virtio‐kmod<br />

Ist das eine oder andere Programm bereits<br />

installiert, stört das nicht weiter,<br />

seine Installation wird dann einfach<br />

übergangen. Können die Treiber nicht auf<br />

dem Server gefunden werden, muss man<br />

sie selbst kompilieren. Danach kann mit<br />

Virtio-Treiber aus dem Port<br />

Die Virtio-Treiber sind nicht unbedingt bei jeder<br />

FreeBSD-Unterversion vorkompiliert verfügbar.<br />

Schlägt der Aufruf von »pkg_add ‐r virtio‐kmod«<br />

für ihre Installation fehl, muss man den Port aus<br />

den Quellen installieren. Das ist nur möglich,<br />

wenn auch die Betriebssystemquellen installiert<br />

sind.<br />

Um den Port zu kompilieren, muss man in »/<br />

usr/ports/emulators/virtio‐kmod« den Befehl<br />

»make package« aufrufen. Dieser Hinweis gilt<br />

nicht bei FreeBSD-CURRENT, hier sind die Treiber<br />

im Standardumfang des Kernels enthalten.<br />

Zuerst werden je ein Mastering-Verzeichnis und<br />

eines für den Baum mit den Daten der neuen<br />

dem Mastern der neuen Installations-CD<br />

oder ‐DVD begonnen werden.<br />

Der Parameter »‐p« von »mkdir« legt den<br />

gesamten Pfad in einem Rutsch an, das<br />

»‐Rvp« von »cp« bedeutet, dass alle Daten<br />

rekursiv kopiert werden, dabei das<br />

Programm gesprächig ist und alle aktuellen<br />

Rechte beibehält. Wer es bequemer<br />

will, kopiert die Daten mit dem Midnight<br />

Commander, übergeht dabei aber das<br />

Verzeichnis ».rr_moved«.<br />

Treiber kopieren<br />

Im nächsten Schritt müssen die zuvor<br />

installierten VirtIO-Treiber ebenfalls in<br />

das Mastering-Verzeichnis übertragen<br />

werden. Sie befinden sich in »/boot/modules«:<br />

cp /boot/modules/virt*ko U<br />

/usr/tree/boot/modules<br />

cp /boot/modules/if_vtnet*ko U<br />

/usr/tree/boot/modules<br />

cd /usr/tree/boot/modules<br />

kldxref<br />

Nun muss die Datei »/usr/tree/boot/loader.conf«<br />

angepasst werden. Sie legt fest,<br />

welche externen Gerätetreiber der Kernel<br />

zusätzlich lädt. In der FreeBSD-Version 9<br />

gibt es diese Datei noch nicht. Sie muss<br />

nach dem Editieren, zum Beispiel mit<br />

dem Befehl »ee /usr/tree/boot/loader.<br />

FreeBSD-Installations-CD angelegt, wobei auf<br />

ausreichend freien Platz im Verzeichnis zu<br />

achten ist (bei FreeBSD 9 mit CD knapp 1,5<br />

GByte, bei der DVD-Version insgesamt etwa 4,5<br />

GByte):<br />

mkdir ‐p /usr/cd/tree<br />

cd /usr/tree<br />

chmod 777 /usr/tree<br />

cp ‐Rvp /cdrom/* .<br />

cp ‐p /cdrom/.cshrc* .<br />

cp ‐p /cdrom/.profile* .<br />

Die Angabe des Basisverzeichnisses hier ist nur<br />

ein Vorschlag.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

125


FreeBSD und KVM<br />

Abbildung 1: Alle Treiber wurden wie gewünscht beim Systemstart geladen.<br />

Außer den Virtio-Treibern sind dies auch noch die Module für die <strong>Linux</strong>-<br />

Emulation.<br />

Abbildung 2: Die Aufteilung der virtuellen Festplatte mit einem klassischen<br />

Master Boot Record in FreeBSD 9. Neben der Root-Partition gibt es noch eine<br />

Partition für Swap und eine separate Usr-Partition.<br />

conf«, die folgenden Konfigurationszeilen<br />

enthalten:<br />

virtio_load="YES"<br />

virtio_pci_load="YES"<br />

virtio_blk_load="YES"<br />

if_vtnet_load="YES"<br />

virtio_balloon_load="YES"<br />

Ohne diese Daten ist die Installation zwar<br />

auch möglich, aber extrem umständlich.<br />

Der Installationsdatenträger von FreeBSD<br />

8 und 9 unterscheidet sich an dieser Stelle<br />

übrigens drastisch. Bis inklusive FreeBSD<br />

8 wird nämlich in eine RAM-Disk gebootet,<br />

die von einer Zeile in »loader.conf«<br />

eingeschaltet wird, sodass die Datei am<br />

Schluss so aussehen sollte:<br />

mfsroot_load="YES"<br />

mfsroot_type="mfs_root"<br />

mfsroot_name="/boot/mfsroot"<br />

virtio_load="YES"<br />

virtio_pci_load="YES"<br />

virtio_balloon_load="YES"<br />

virtio_blk_load="YES"<br />

if_vtnet_load="YES"<br />

Von dem so vorbereiteten Datenträger<br />

kann das FreeBSD-System bereits erfolgreich<br />

installiert werden. Besser ist es, außerdem<br />

den Virtio-Port auf dem Datenträger<br />

abzulegen. Falls man ihn kompiliert<br />

hat, ist das kein Problem, er befindet<br />

sich entweder in »/usr/ports/packages/<br />

All« oder, falls »/usr/ports/packages«<br />

nicht vorhanden ist, im Verzeichnis »/<br />

usr/ports/emulators/virtio‐kmod« als Archiv<br />

mit der Endung ».tbz«. Diese Datei<br />

sollte man in ein Verzeichnis »packages/<br />

All« auf den Master kopieren.<br />

Im vorletzten Arbeitsschritt muss jetzt<br />

der Master von Dateiduplikaten befreit<br />

werden. Der Grund ist, dass beim ursprünglichen<br />

Kopieren der ISO-Datei<br />

Links aufgelöst und durch Einzeldateien<br />

im Verzeichnis »tree« ersetzt wurden.<br />

Brennt man einen neuen Master ohne<br />

dies zu berücksichtigen, wird er erheblich<br />

größer als sein Original. Wieder zu<br />

Links werden die jetzigen Dateien durch<br />

einen Aufruf von des Filters »dupmerge«.<br />

Die Syntax des Aufrufs erfährt man mit<br />

»dupmerge ‐h«. Sie lautet hier<br />

cd /usr/cd/tree<br />

find ./ ‐type f ‐print0 | dupmerge<br />

Dies spart etwa 200 000 Blöcke zu je<br />

512 Byte auf dem Datenträger und damit<br />

nicht ganz 100 MByte. Im letzten Arbeitsschritt<br />

wird das ISO-Image gebrannt:<br />

cd /usr/cd<br />

mkisofs ‐R ‐J ‐no‐emul‐boot ‐c boot/.catalog U<br />

‐hide‐rr‐moved ‐b boot/cdboot ‐V "FREEBSD_U<br />

INSTALL" ‐o fbsd91‐foss.iso tree/<br />

chmod 666 fbsd91‐foss.iso<br />

Die Angaben »‐R« und »‐J« legen lange<br />

Dateinamen nach der Unix- (Rockridge)<br />

und Windows-Konvention (Joliet) fest,<br />

die weiteren Parameter werden für das<br />

Bootsystem gebraucht. Sehr wichtig ist<br />

ab FreeBSD 9.0 die Bezeichnung »‐V<br />

"FREEBSD_INSTALL"«, über die das<br />

Installationssystem den Datenträger identifiziert.<br />

Für alle lesbar<br />

Die Rechtevergabe zum Schluss soll sicherstellen,<br />

dass das Image von jedem<br />

beliebigen Benutzerkonto aus auf den<br />

Server mit der FOSS-Cloud-Installation<br />

übertragen und auch gelöscht werden<br />

kann. Außerdem werden die Attribute bei<br />

der Übertragung auf dem Server angeglichen,<br />

und die Datei ist nur so in der FOSS-<br />

Cloud nutzbar. Anschließend kopiert der<br />

folgende Befehl das ISO-Image per »scp«<br />

auf den Server der FOSS-Cloud:<br />

scp fbsd9‐foss.iso root@192.168.0.8:U<br />

/var/virtualization/iso‐choosable/<br />

Hier ist natürlich die richtige IP-Adresse<br />

des Servers anzugeben. »scp« ist im Standardumfang<br />

von FreeBSD enthalten.<br />

FreeBSD 9<br />

Die Installation von FreeBSD in einem<br />

FOSS-Cloud-Template gelingt mit dem<br />

angepassten Image bei FreeBSD 9 in einem<br />

Schritt, bei FreeBSD 8 muss zwischenzeitlich<br />

noch ein zweites Mal von<br />

der DVD gebootet werden. Für FreeBSD<br />

wird im Webfrontend der FOSS-Cloud,<br />

die nur <strong>Linux</strong> und Windows kennt, je<br />

nach Bedarf eine 32- oder 64-Bit-<strong>Linux</strong>-<br />

Installation gewählt, dieser das Image<br />

zugewiesen und dann gebootet.<br />

Die FreeBSD-Installation braucht hier<br />

nicht in aller Ausführlichkeit geschildert<br />

zu werden. Wichtig ist nur, beim Booten<br />

der CD die Virtio-Treiber zu laden. Man<br />

sieht den Ladevorgang bereits beim Booten<br />

des Kernels, muss dafür aber zu diesem<br />

Zeitpunkt schon ein SPICE-Fenster<br />

geöffnet haben. Man kann sich aber auch<br />

später davon überzeugen, wenn man im<br />

ersten Fenster der Setuproutine nicht<br />

zur Installation weitergeht, sondern eine<br />

Shell öffnet und hier den Befehl »kldstat«<br />

aufruft.<br />

Achtung: In dieser Shell ist bei FreeBSD<br />

9.0/​9.1 noch keine deutsche Tastaturbelegung<br />

eingeschaltet, sodass der Slash (/​<br />

) auf der deutschen Tastatur mit dem [-]<br />

126 Ausgabe 01-2013 Admin www.admin-magazin.de


FreeBSD und KVM<br />

zu erreichen ist. Für den Unterstrich (_)<br />

ist [ß] zu drücken (Abbildung 1). Wird<br />

hier nur die Datei »kernel« angezeigt,<br />

stellt sich die Frage, warum die Treiber<br />

nicht eingebunden wurden. Mögliche<br />

Gründe können Tippfehler in der »/boot/<br />

loader.conf« oder nicht zum Kernel passende<br />

Module sein. Im ersten Fall muss<br />

man die Treiber manuell mit »kldload«<br />

nachladen, im zweiten Fall einen neuen<br />

Installa tionsdatenträger mit den richtigen<br />

Dateien schreiben.<br />

Virtuell installiert<br />

Die Installation selbst unterscheidet sich<br />

kaum von der auf echter Hardware und<br />

in anderen Virtualisierungslösungen,<br />

nur dass hier die Festplatte die Kennung<br />

»vtdb« anstelle des gewohnten »ad« beziehungsweise<br />

»da« besitzt und die Netzwerkkarte<br />

den Namen »vtnet0« trägt. Ob<br />

man bei der Festplattenaufteilung GPT<br />

oder MBR nutzt, ist Geschmackssache<br />

In der Weboberfläche stellt man jetzt<br />

die Bootreihenfolge um und startet das<br />

FreeBSD-Template für die weitere Anpassung<br />

des Betriebssystems neu von Festplatte.<br />

Anschließend sollte der Virtio-Port<br />

installiert werden, damit die Zusatztreiber<br />

bei der Softwareverwaltung angemeldet<br />

sind. Man darf allerdings dann die<br />

Ports jedoch auf keinen Fall mehr mit der<br />

Kommandozeilenanweisung »pkg_delete<br />

‐a« vollständig für eine Neuinstallation<br />

löschen und dann neu booten, weil das<br />

System ohne die Treiber nicht mehr von<br />

der virtuellen Festplatte startet.<br />

Anders als bei FreeBSD 9 muss man<br />

FreeBSD 8 zweimal von der Installationsund<br />

für den Betrieb unwichtig (Abbildung<br />

2).<br />

Sind die virtuelle Festplatte strukturiert,<br />

das Netzwerk eingerichtet und<br />

alle restlichen Einstellungen getroffen,<br />

unterscheiden sich die weiteren Schritte<br />

bei FreeBSD 8 und 9, denn im letzten<br />

Schritt muss unbedingt eine »loader.conf«<br />

in der Installation abgelegt werden. Bei<br />

FreeBSD 9 geht das ohne vorherigen Neustart,<br />

wenn man nach dem Abschluss der<br />

Installation direkt eine Shell öffnet (siehe<br />

auch Abbilundg 5). Hier gibt man die<br />

beiden Befehle<br />

umount /mnt/usr<br />

umount ‐f /mnt<br />

ein. Damit wird die aktuell nicht bearbeitbare<br />

Festplatte gewaltsam ausgehängt.<br />

Die Shell springt nach dieser groben Aktion<br />

sofort wieder in das Installationsskript<br />

zurück, das jetzt das Live-System<br />

startet. In ihm wird das Hauptverzeichnis<br />

der Festplatte gemountet, dann die<br />

Treiber und die Konfigurationsdatei auf<br />

die Festplatte kopiert und die Installation<br />

von FreeBSD endgültig abgeschlossen.<br />

Abbildung 3 zeigt dies bei einer MBR-<br />

Installation.<br />

Anders booten<br />

<strong>Linux</strong>-<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 />

Deckt in Teilbereichen auch das Prüfungswissen für LPIC-303-Inhalte ab.<br />

Inklusive Benutzer- und Rechteverwaltung, Authentifizierung, ACLs sowie<br />

wichtige Netzwerkprotokolle und mehr!<br />

Das Grundlagentraining für IT-Sicherheit richtet sich an Systemadministratoren<br />

und solche, die es werden wollen ebenso wie an ambitionierte Heimanwender.<br />

Nur 299 Euro inkl. 19 % MwSt.<br />

@Kirsty Pargeter, 123RF<br />

20%<br />

Treue-Rabatt für<br />

Abonnenten<br />

Informationen und Anmeldung unter:<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

academy.linux-magazin.de/sicherheit<br />

127


FreeBSD und KVM<br />

Abbildung 3: Die Treiberdateien und die »/boot/loader.conf« werden von der<br />

Installations-CD auf die virtuelle Platte übertragen.<br />

Abbildung 4: Die Bestätigung, dass die Installation beendet ist. Hier muss<br />

mit YES eine Konsole geöffnet werden, dann werden »/mnt/usr« und »/mnt«<br />

ausgehängt, worauf sich automatisch die Konsole in Abbildung 6 öffnet. Dies<br />

sieht bei FreeBSD 9 und bei FreeBSD 10 genau gleich aus.<br />

DVD starten. Da ein Live-System benötigt<br />

wird, mit dem die Zusatzdateien auf die<br />

Festplatte kopiert werden, setzt die Installation<br />

die Installations-DVD voraus, was<br />

aber außer wegen des erhöhten Platzbedarfs<br />

keine besondere Rolle spielt. Die<br />

eigentliche Installation läuft auch hier,<br />

wenn die Treiber vom Kernel akzeptiert<br />

werden, ganz normal ab. Die Gerätenamen<br />

sind dieselben wie bei FreeBSD 9.<br />

Geplanter Fehler<br />

Ist die Installation erfolgreich abgeschlossen,<br />

gelangt man wieder in das Hauptmenü<br />

von »sysinstall« zurück. Es ist hier<br />

nicht möglich, die Treiber im Fixit-System<br />

auf die Festplatte zu übertragen, deshalb<br />

wird noch einmal von der DVD gebootet.<br />

Der einfache Neustart schlägt in der<br />

FOSS-Cloud an dieser Stelle grundsätzlich<br />

fehl, man muss die Maschine im<br />

Webfrontend ohne Änderung des Boot-<br />

Devices von CD-ROM auf Platte manuell<br />

aus- und wieder einschalten.<br />

Im Hauptmenü von »sysinstall« wählt<br />

man dann den Punkt »Fixit« und dort<br />

»CDROM/DVD«. Man landet an einem<br />

Prompt mit der Kennung »Fixit#«. Hier<br />

laden die folgenden Befehle die Root-<br />

Partition der Festplatte und übertragen<br />

alle wichtigen Dateien von der Installations-CD:<br />

mount /dev/vtbd0s1a /mnt<br />

cd /mnt/boot/modules<br />

cp /dist/boot/modules/* .<br />

cd ..<br />

cp /dist/boot/loader.conf .<br />

Im letzten Schritt der Installation muss<br />

man noch die soeben kopierte Datei mit<br />

»ee loader.conf« in den Systemeditor laden<br />

und bearbeiten. In der Datei müssen<br />

die ursprünglichen Verweise auf das<br />

Starten von der RAM-Disk entfernt oder<br />

auskommentiert werden:<br />

# mfsroot_load="YES"<br />

# mfsroot_type="mfs_root"<br />

# mfsroot_name="/boot/mfsroot"<br />

virtio_load="YES"<br />

...<br />

Damit ist die Installation von FreeBSD 8<br />

in der FOSS-Cloud beendet. Die Eingabe<br />

von »exit« beendet das Fixit-System. Über<br />

das Hauptmenü von »sysinstall« startet<br />

man das System neu. Im Webfrontend<br />

muss dafür noch die Bootreihenfolge umgestellt<br />

werden. Falls das System jetzt<br />

nicht booten will, wird es noch einmal<br />

gewaltsam im Webfrontend ausgeschaltet<br />

und dann wieder aufgerufen. Sobald es<br />

sauber von Festplatte startet, sind die<br />

Bootprobleme beseitigt.<br />

Bei FreeBSD 10, dem derzeitigen CUR-<br />

RENT, ist das Virtio-System in den normalen<br />

Quelltexten enthalten. Die Treiber<br />

brauchen also nicht mehr aus den Ports<br />

installiert und gesondert auf den Master<br />

übertragen zu werden.<br />

Leider findet man auf dem FTP-Server<br />

des Projekts derzeit keine vorgefertigten<br />

Images, sodass man das System selbst<br />

entweder für jede Installation aus den<br />

Quellen aus FreeBSD 9 aktualisieren<br />

muss (bei einer lokalen Installation akzeptabel)<br />

oder man baut sich für das<br />

spätere serverbasierte Einrichten selbst<br />

zuvor in einer anderen FreeBSD-Installation<br />

eine Installations-CD für CURRENT.<br />

Dazu müssen lokal einmal entweder über<br />

CTM oder aus dem CVS beziehungsweise<br />

SVN die Quellen zentral besorgt und dann<br />

durchkompiliert werden (siehe [4]).<br />

Die folgend gezeigten Schritte gehen davon<br />

aus, dass die Quellen von FreeBSD<br />

10 bereits installiert sind und das System<br />

mit den Aufrufen<br />

cd /usr/src<br />

make buildworld buildkernel<br />

make installkernel installworld<br />

reboot<br />

aktualisiert wurde. Auch das Portverzeichnis<br />

wird benötigt, es wird bei Be-<br />

Listing 1: FreeBSD-10-Installations-CD<br />

01 pkg_delete ‐a # Alle alten Programme müssen weg<br />

02 cd /usr/ports/sysutils/cdrtools # Hier sind die CD‐Hilfsprogramme<br />

03 make install clean # Programmpaket installieren<br />

04 setenv DESTDIR /usr/dist # Zielpfad, nicht im normalen Baum<br />

05 make installworld installkernel # ... und alles dorthin installieren<br />

06 cd /usr/src/etc # Im nächsten Schritt Baum ergänzen<br />

07 make distribution # Die Distribution aufgebauen<br />

08 cd /usr/dist/usr # Das obj‐Verzeichnis ist leer ...<br />

09 rmdir obj # ... und weg damit<br />

10 ln /usr/obj obj # Die Standard‐Dateien umlinken<br />

11 cd /usr/src/release # Der dritte Make‐Schritt<br />

12 make NOPORTS=YES NOSRC=YES cdrom # CD‐ROM in /usr/dist aufbauen<br />

13 cd /usr # Es müssen Sicherheitsflags ge‐<br />

14 chflags ‐R noschg dist/ # löscht werden, damit man am Schluss<br />

15 # den Baum wieder loswerden kann.<br />

16 rm ‐r dist # Und weg mit dem temp. Baum<br />

128 Ausgabe 01-2013 Admin www.admin-magazin.de


FreeBSD und KVM<br />

darf mit »portsnap fetch install«<br />

aufgebaut. Auf keinen<br />

Fall dürfen nach dem Bauen<br />

des neuen Betriebssystems<br />

die Intermediärdateien im<br />

Quellbaum mit »make clean«<br />

gelöscht werden, denn sie<br />

werden noch gebraucht. Nach<br />

dem Neustart muss man außerdem<br />

»uname ‐a« prüfen,<br />

ob tatsächlich ein CURRENT-<br />

System installiert ist. Anschließend<br />

geht es so weiter<br />

wie in Listing 1 gezeigt.<br />

Die Make-Läufe müssen<br />

einmal in »src« selbst, dann<br />

in »src/etc« und abschließend in »src/<br />

release« durchgeführt werden. Die ISO-<br />

Datei befindet sich zum Schluss in »/usr/<br />

obj/usr/src/release/«. Die eigentliche Arbeitsdatei<br />

heißt »release.iso«. Sie enthält<br />

keine modifizierte Kernelkonfiguration.<br />

Beim Booten auf dem FOSS-Cloud-Server<br />

muss man deshalb die Treiber manuell<br />

vor der eigentlichen Installation laden. Im<br />

Verzeichnis »/usr/obj/usr/src/release/«<br />

sind noch weitere Dateien abgelegt, sie<br />

werden aber nicht benötigt.<br />

Image vom Image<br />

Hat man ein Standard-ISO-Image angelegt,<br />

kann man damit auch wieder ein<br />

neues angepasstes erzeugen. Dazu wird<br />

das soeben angelegte ISO-Image zuerst<br />

als Pseudolaufwerk eingebunden, dann<br />

werden die darin enthaltenen Dateien extrahiert<br />

und der neue Master wie oben bereits<br />

beschrieben angepasst und auch mit<br />

zusätzlichen Daten bestückt. Von diesem<br />

Master wird dann wieder ein korrigiertes<br />

Image für die FOSS-Cloud geschrieben.<br />

Wichtig: Aus den Ports oder den Paketen<br />

muss außerdem das Programm »dupmerge«<br />

installiert werden. Eingebunden<br />

wird das Image folgendermaßen:<br />

mkdir /mnt/iso<br />

mdconfig ‐a ‐t vnode ‐f U<br />

/usr/obj/usr/src/release/release.iso<br />

md0<br />

mount ‐t cd9660 /dev/md0 /mnt/iso<br />

»/dev/md0« ist ein Memory-Device, das<br />

nach dem Kopieren der Dateien wieder<br />

freigegeben werden muss. (Ist »md0«<br />

bereits vorher in Betrieb gewesen, wird<br />

automatisch ein Geräteeintrag mit einer<br />

höheren Nummer angelegt.) Zuerst wer-<br />

Abbildung 5: In dieser Konsole werden bei FreeBSD 9 und 10 die Nacharbeiten<br />

durchgeführt. Zum Schluss wird die Live-Session mit »poweroff« beendet.<br />

den aber mit den folgenden Befehlen die<br />

Dateien übertragen:<br />

mkdir ‐p /usr/foss/tree<br />

cd /usr/foss/tree<br />

cp ‐Rp /mnt/iso/* .<br />

cp /mnt/iso/.p* .<br />

cp /mnt/iso/.c* .<br />

find ./ ‐type f ‐print0 | dupmerge<br />

ee boot/loader.conf<br />

Jetzt müssen wie bereits bei der Vorversion<br />

die Treiber in eine neue »boot/<br />

loader.conf« geschrieben werden:<br />

virtio_load="YES"<br />

virtio_pci_load="YES"<br />

if_vtnet_load="YES"<br />

virtio_balloon_load="YES"<br />

Das ursprüngliche Image kann nun mit<br />

umount ‐f /dev/md0<br />

mdconfig ‐l<br />

md0<br />

mdconfig ‐d ‐u md0<br />

mdconfig ‐l<br />

ausgebunden und danach »md0« bei Bedarf<br />

wieder anderweitig genutzt werden.<br />

Hat das Ausbinden des Geräteknotens<br />

geklappt, zeigt ein anschließender Aufruf<br />

von »mdconfig ‐l« kein eingebundenes<br />

Device mehr an. Das hier gezeigte »‐f«<br />

bei »umount« ist nur nötig, wenn das<br />

System meldet, das Device sei noch belegt<br />

ist. Erst ein freigegebenes md-Gerät<br />

kann abgeschaltet werden.<br />

Erst testen<br />

Im letzten Arbeitsschritt wird auch hier<br />

wieder mit demselben Aufruf wie schon<br />

weiter oben gezeigt ein ISO-Image gebrannt,<br />

mit den richtigen Dateiattributen<br />

(666) ausgestattet und per »scp« auf den<br />

Server übertragen. Erst wenn<br />

sich das Image als korrekt erwiesen<br />

hat und die Installation<br />

in der FOSS-Cloud ordnungsgemäß<br />

abläuft (Abbildung 4,<br />

Abbildung 5), sollte der in »/<br />

usr/cd/tree« angelegte Verzeichnisbaum<br />

wieder gelöscht<br />

werden.<br />

Die Installation selbst läuft<br />

dann genauso wie bei FreeBSD<br />

9 ab, nur die Treiber müssen<br />

zum Schluss nicht übertragen<br />

werden. Die »/boot/loader.<br />

conf« braucht man aber natürlich<br />

auch, und sie wird genauso<br />

wie bereits bei FreeBSD 9 geschildert<br />

direkt nach der Installation im Live-<br />

System auf den Server übergespielt. Wer<br />

bei FreeBSD 10 versucht, die virtuelle<br />

Festplatte mit einem Master Boot Record<br />

anstelle des GPT auszustatten, kann das<br />

auch tun, es ist nur etwas frickelig, weil<br />

der Installer hier fehlerhaft ist. Man muss<br />

also etwas herumprobieren, muss aber<br />

keine manuelle Installation mit »fdisk«<br />

und »disklabel« durchführen.<br />

Und es geht doch<br />

Die Ports von FreeBSD 10 waren bei<br />

Redaktionsschluss nicht fehlerfrei, und<br />

es war nicht möglich, einen modernen<br />

Desktop damit aufzubauen, denn das<br />

Kompilieren und auch die Binärinstallationen<br />

von Gnome 2, KDE 3 und KDE 4<br />

waren nicht vollständig möglich. Bei der<br />

FOSS-Cloud und KVM ist das aber nicht<br />

weiter schlimm, weil wegen des defekten<br />

Maustreibers X ohnehin nicht genutzt<br />

werden kann. Ein Serversystem lässt sich<br />

aber allemal einrichten. (ofr)<br />

n<br />

Infos<br />

[1] Webseite der FOSS-Cloud:<br />

[http:// www. foss‐cloud. org/ de/]<br />

[2] Jörg Braun: Der wolkige Desktop. FreeX<br />

5’2012, S. 70<br />

[3] Jörg Braun: XP-Gast in der FOSS-Cloud.<br />

FreeX 5’2012, S. 78<br />

[4] Jürgen Dankoweit (Hrsg.): FreeBSD. C&L-<br />

Verlag 2009, ISBN 978-3-936546-41-5.<br />

[5] Jörg Braun: Das VirtualBox-Buch. C&L-<br />

Verlag 2012, ISBN 978-3-936546-71-2.<br />

[6] Jörg Braun und Dr. Rolf Freitag: Duplikate<br />

von der Platte. FreeX 5’2011, S. 90.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 01-2013<br />

129


Service<br />

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

Impressum ISSN 2190-1066<br />

<strong>ADMIN</strong>-<strong>Magazin</strong> eine Publikation der Medialinx 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 Brian Osborn (Vorstand), bosborn@medialinx-gruppe.de<br />

Hermann Plank (Vorstand), hplank@medialinx-gruppe.de<br />

Chefredakteure Oliver Frommel (V.i.S.d.P.),<br />

ofrommel@admin-magazin.de (ofr)<br />

Jens-Christoph Brendel<br />

jbrendel@admin-magazin.de (jcb)<br />

Redaktion<br />

News/Report<br />

Ulrich Bantle (Ltg.), ubantle@medialinx-gruppe.de (uba)<br />

Mathias Huber, mhuber@medialinx-gruppe.de (mhu)<br />

Software/Test<br />

Marcel Hilzinger, mhilzinger@medialinx-gruppe.de, (mhi)<br />

Kristian Kißling, kkissling@medialinx-gruppe.de, (kki)<br />

Security/Networking Markus Feilner, mfeilner@medialinx-gruppe.de (mfe)<br />

Thomas Leichtenstern, tleichtenstern@medialinx-gruppe.de (tle)<br />

Ständige Mitarbeiter Elke Knitter (Schlussredaktion),<br />

Carsten Schnober, Tim Schürmann, Claudia Thalgott<br />

Produktionsleitung Christian Ullrich, cullrich@medialinx-gruppe.de<br />

Grafik<br />

Klaus Rehfeld, Judith Erb<br />

Titel: Judith Erb, Ausgangsgrafik: alienforce, 123RF<br />

Abo-Infoseite<br />

Abonnenten-Service<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 <strong>Linux</strong>-<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.2012<br />

National<br />

Petra Jaser<br />

Tel.: 089/99 34 11 24, Fax: 089/99 34 11 99<br />

E-Mail: pjaser@medialinx-gruppe.de<br />

michael Seiter<br />

Tel.: 089/99 34 11 23, Fax: 089/99 34 11 99<br />

E-Mail: mseiter@medialinx-gruppe.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. <strong>Linux</strong> 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–2013 Medialinx AG<br />

Inserentenverzeichnis<br />

1&1 Internet AG http://​www.einsundeins.de 14<br />

<strong>ADMIN</strong> http://​www.admin-magazin.de 25, 105, 121<br />

Android User GY http://​www.android-user.de 69, 117<br />

Deutsche Messe AG http://​www.cebit.de 55<br />

DFN-Cert Services GmbH http://​www.dfn-cert.de 27<br />

Fernschule Weber GmbH http://​www.fernschule-weber.de 53<br />

Galileo Press http://​www.galileo-press.de 41<br />

German Unix User Group (GUUG) e.V. http://​www.guug.de 51<br />

Hetzner Online AG http://​www.hetzner.de 132<br />

IPTAM GmbH http://​www.iptam.com 57<br />

Kettner Mathias - <strong>Linux</strong> Experte http://​www.mathias-kettner.de 13<br />

<strong>Linux</strong> New Media AG http://​www.linuxnewmedia.de 93<br />

<strong>Linux</strong> User Spezial http://​www.linux-user.de/​spezial 49<br />

<strong>Linux</strong>-Hotel http://​www.linuxhotel.de 21<br />

<strong>Linux</strong>-<strong>Magazin</strong> http://​www.linux-magazin.de 115<br />

<strong>Linux</strong>-<strong>Magazin</strong> Academy http://​www.academy.linux-magazin.de 87, 127<br />

<strong>Linux</strong>-<strong>Magazin</strong> Online http://​www.linux-magazin.de 89<br />

<strong>Linux</strong>User http://​www.linuxuser.de 101<br />

Netways GmbH http://​www.netways.de 103<br />

outbox AG http://​www.outbox.de 131<br />

pascom - Netzwerktechnik<br />

GmbH & Co.KG http://​www.pascom.net 11<br />

Pluspol GmbH http://​www.pluspol.de 23<br />

PlusServer AG http://​www.plusserver.de 34, 44, 64, 80<br />

Strato AG http://​www.strato.de 2<br />

Thomas Krenn AG http://​www.thomas-krenn.com 9<br />

Webtropia http://​www.webtropia.com 7<br />

Windows Phone User http://​www.windows-phone-user.de 123<br />

Einem Teil dieser Ausgabe liegt ein Beilage der Firma HACKATTACK IT SECURITY GmbH<br />

(http://​www.hackattack.com ) bei. Wir bitten unsere Leser um freundliche Beachtung.<br />

Autoren dieser Ausgabe<br />

Eric Amberg Rausgegraben 28<br />

Jörg Braun Hochzeit 124<br />

Jörg Braun Neubau 120<br />

Hanno Böck Uneinsichtig 90<br />

James Dade Paketversand 48<br />

Jürgen Dankoweit Sicher hinter Gittern 110<br />

Thomas Drilling Kurs halten 36<br />

Thomas Drilling Neu gemischt 46<br />

Thomas Drilling Virtualisierungswarte 66<br />

Felix von Eye Leider geöffnet 94<br />

Patrik Fehrenbach Gift für alle Fälle 98<br />

Benjamin Fleckenstein Nagios am Apparat 24<br />

Michael Grabatin Leider geöffnet 94<br />

Wolfgang Hommel Leider geöffnet 94<br />

Thomas Joos Neues Gewand 82<br />

Thomas Joos Schatztruhe 56<br />

Martin Loschwitz Einrichtungsberater 72<br />

Stefan Metzger Leider geöffnet 94<br />

Vilma Niclas Arbeit im Auftrag 16<br />

Rosa Riebl Hochzeit 124<br />

Rosa Riebl Neubau 120<br />

Thorsten Scherf Im Dickicht 20<br />

Frank Wiles Patchwork 106<br />

VORSCHAU<br />

<strong>ADMIN</strong> 02/2013 erscheint am 14. März 2013<br />

Samba 4<br />

Am Schnürchen<br />

© Roman Dekan, 123RF<br />

Seit Jahren erwartet, ist die Version<br />

4 des Samba-Servers nun endlich<br />

Realität geworden. Wir werfen einen<br />

Blick auf die neuen Fähigkeiten und<br />

zeigen, wie sich Samba 4 in <strong>Linux</strong>und<br />

Windows-Netzwerken einsetzen<br />

lässt.<br />

Software zum zentralen Management<br />

der Rechnerkonfiguration<br />

wird in Serverräumen immer<br />

beliebter. Mit dem auf Puppet<br />

basierenden Foreman gibt es eine<br />

zentrale Stelle für alle Management-Belange.<br />

© Glenda Powers, 123RF<br />

130 Ausgabe 01-2013 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


€ 59<br />

Hetzner Online unterstützt mit der<br />

Verwendung von 100% regenerativem<br />

Strom aktiv den Umweltschutz.<br />

Entscheiden Sie sich gemeinsam<br />

mit uns für eine saubere Zukunft.<br />

49

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!