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