diff --git a/de_DE.ISO8859-1/books/fdp-primer/tools/chapter.sgml b/de_DE.ISO8859-1/books/fdp-primer/tools/chapter.sgml index c83d8e4593..9c5642eb6d 100644 --- a/de_DE.ISO8859-1/books/fdp-primer/tools/chapter.sgml +++ b/de_DE.ISO8859-1/books/fdp-primer/tools/chapter.sgml @@ -1,340 +1,334 @@ Die Werkzeuge Innerhalb des FDPs werden verschiedene Programme für die Verwaltung der FreeBSD-Dokumentation, ihrer Transformation in verschiede Formate und weitere Aufgaben eingesetzt. Wer an der FreeBSD-Dokumentation mitarbeiten möchte, wird diese Programme benötigen. Doch dies ist kein Grund zur Angst, da alle notwendigen Programme als FreeBSD-Ports und fertige Pakete vorhanden sind, wodurch sich die Installation drastisch vereinfacht. Allerdings müssen diese Programme installiert werden, bevor alle Beispiele der folgenden Kapitel ausprobiert werden können. Wenn es möglich ist, sollte der Port <filename role="package">textproc/docproj</filename> verwendet werden Durch die Installation des Ports textproc/docproj kann die Installation vereinfacht und eine Menge Zeit gespart werden. Bei diesem Port handelt es sich um einen Metaport, der selbst keine Programme oder ähnliches installiert. Stattdessen enthält er eine Vielzahl von Abhängigkeiten zu anderen Ports und setzt deren korrekte Installation voraus. Durch seine Installation sollten automatisch alle Pakete, die in diesem Kapitel genannt werden, auf den Rechner geladen und dort installiert werden. Ein nur unter bestimmten Umständen benötigter Port ist das JadeTeX-Makro-Paket, das seinerseits eine &tex;-Installation voraussetzt. &tex; ist ein ziemlich großes Programmpaket und sollte nur installiert werden, sofern Zieldokumente im PostScript- oder PDF-Format generiert werden sollen. Um den Platz und die Zeit für die Installation von JadeTeX und &tex; zu sparen, muß bei der Installation angeben werden, ob JadeTeX (und damit auch &tex;) installiert werden soll oder nicht. Daher sollte der docproj-Port entweder mit &prompt.root; make JADETEX=yes install oder mit &prompt.root; make JADETEX=no install installiert werden, je nachdem was gewünscht wird. - Sie können stattdessen die Ports + Alternativ können Sie auch direkt die Ports textproc/docproj-jadetex oder textproc/docproj-nojadetex installieren. Die Variable JADETEX wird - von diesen Ports automatisch definiert. Ohne + von diesen Ports automatisch entsprechend gesetzt. Ohne JadeTeX können Sie nur die Formate HTML und ASCII erzeugen. Die Formate PostScript und PDF erfordern &tex;. Notwendige Werkzeuge Software - Die folgenden Programme sind notwendig, bevor man sinnvoll + Die folgenden Programme sind notwendig, um sinnvoll an der FreeBSD-Dokumentation arbeiten und diese in andere - Formate wie HTML, reinen Text und RTF umwandeln kann. - - - - - + Formate wie HTML, reinen Text und RTF umwandeln zu + können. Sie müssen diese aber nicht seperat + installieren, da alle Programme automatisch durch den + Metaport textproc/docproj installiert + werden. Jade (textproc/jade) Eine DSSSL-Implementierung. Sie wird gebraucht, um Dokumente in andere Formate wie HTML und &tex; zu übersetzen. Tidy (www/tidy) Ein Formatierer, mit dem man Teile der automatisch generierten HTML-Dateien neuformatieren kann, um ihre Lesbarkeit zu erhöhen. Links (www/links) Ein Textbrowser, der HTML-Dateien in einfache Textdateien umwandeln kann. peps (graphics/peps) Einige der Dokumente enthalten Grafiken, die nur im EPS-Format vorliegen. Damit diese von dem meisten Webbrowsern angezeigt werden können, müssen sie nach PNG konvertiert werden. Die DTDs und die Entitäten Das FDP benutzt verschiedene DTDs und Entitätensätze, die installiert sein müssen, bevor mit der Arbeit an einem beliebigen Dokument begonnen werden kann. HTML DTD (textproc/html) HTML ist die bevorzugte Auszeichnungssprache des World Wide Web und wird durchgängig für die FreeBSD-Webseite genutzt. DocBook DTD (textproc/docbook) DocBook ist als Auszeichnungssprache für technische Dokumentationen entwickelt worden. Die gesamte FreeBSD-Dokumentation wird mittels DocBook erstellt. ISO 8879-Entitäten (textproc/iso8879) 19 der ISO 8879:1986-Zeichensätze, die von vielen DTDs benötigt werden. Darin enthalten sind mathematische Symbole, zusätzliche Zeichen, die für auf dem lateinischen beruhende Alphabete benötigt werden sowie griechische Zeichen. Die Stilvorlagen Die Stilvorlagen werden während der Transformation und der Formatierung von Dokumenten, beispielsweise für die Bildschirmdarstellung oder den Druck, benutzt. Modular DocBook Stylesheets (textproc/dsssl-docbook-modular) Die Modular DocBook Stylesheets werden benötigt, wenn mittels DocBook erstellte Dokumente in Formate wie HTML oder RTF konvertiert werden sollen. Optionale Werkzeuge Die in diesem Kapitel genannten Programme müssen nicht unbedingt installiert werden. Allerdings können sie die Arbeit an der Dokumentation erleichtern und die Anzahl an möglichen Ausgabeformaten erhöhen. Software JadeTeX und teTeX (print/jadetex und print/teTeX) Jade und teTeX werden eingesetzt, um DocBook-Dokumente nach DVI, Postscript und PDF zu konvertieren. Hierfür müssen die JadeTeX Makros installiert sein. Ist es nicht geplant, die Dokumente in einem dieser Formate zu erzeugen, wenn also HTML, Text und RTF ausreichend sind, brauchen JadeTeX und teTeX nicht installiert zu werden. Da die Installation von teTeX insgesamt 30 MB benötigt, kann so Zeit und Plattenplatz gespart werden. Wird sich für die Installation von JadeTeX und teTeX entschieden, muß teTeX anschließend noch eingerichtet werden. Die Datei print/jadetex/pkg-message enthält detailierte Angaben zu den dafür notwendigen Schritten. Emacs oder XEmacs (editors/emacs oder editors/xemacs) Beide Texteditoren haben einen speziellen Modus zur Bearbeitung von SGML-Dokumenten entsprechend den Vorgaben einer SGML-DTD. Zusätzlich bieten sie Funktionen an, mit denen sich der Tippaufwand reduzieren und Fehlerwahrscheinlichkeit senken läßt. Natürlich muß nicht mit einem dieser Texteditoren gearbeitet werden; jeder andere Editor kann dafür genausogut genutzt werden, doch vielleicht wird die Arbeit durch sie als effektiver empfunden werden. Sofern Sie Vorschläge haben, welche andere Software für die Verarbeitung oder Bearbeitung von SGML-Dokumenten in diese Liste mitaufgenommen werden sollte, senden Sie diese bitte an &a.doceng;. diff --git a/de_DE.ISO8859-1/books/handbook/jails/chapter.sgml b/de_DE.ISO8859-1/books/handbook/jails/chapter.sgml index 172249d244..ac6d41b3e4 100644 --- a/de_DE.ISO8859-1/books/handbook/jails/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/jails/chapter.sgml @@ -1,31 +1,1085 @@ - + + + + Matteo + Riondato + Beigetragen von + + + + + Oliver + Peter + Übersetzt von + + + Dirk + Arlt + + + Johann + Kois + + + + + Jails + + jails + + + Übersicht + + Dieses Kapitel erklärt, was &os;-Jails sind und wie man sie + einsetzt. Jails, manchmal als Ersatz für + chroot-Umgebungen bezeichnet, sind ein sehr + mächtiges Werkzeug für Systemadministratoren, jedoch kann + deren grundlegende Verwendung auch für fortgeschrittene Anwender + nützlich sein. + + Nachdem Sie dieses Kapitel gelesen haben, werden Sie + + + + Wissen, was eine Jail ist und welche Verwendungszwecke + es dafür unter &os; gibt. + + + + Wissen, wie man eine Jail erstellt, startet und + und anhält. + + + + Die Grundlagen der Jail-Administration (sowohl + innerhalb als auch ausserhalb des Jails) kennen. + + + + Weitere nützliche Informationen über Jails + sind beispielsweise in folgenden Quellen zu finden: + + + + Der &man.jail.8; Manualpage. Diese umfassende Referenz + beschreibt, wie man unter &os; eine Jail startet, anhält + und kontrolliert. + + + + Den Mailinglisten und deren Archive. Die Archive der + Mailingliste &a.questions; und anderen Mailinglisten, welche + vom &a.mailman.lists; bereitgestellt werden, beinhalten bereits + umfangreiche Informationen zu Jails. Daher ist es sinnvoll, + bei Problemen mit Jails zuerst die Archive der Mailinglisten + zu durchsuchen, bevor Sie eine neue Anfrage auf der + Mailingliste &a.questions.name; stellen. + + + + + + Jails - Definitionen + + Um die für den Einsatz von Jails benötigten + FreeBSD-Funktionen, deren Interna sowie die Art und Weise, mit der + diese mit anderen Teilen des Betriebssystems interagieren, zu + erläutern, werden in diesem Kapitel folgende Definitionen + verwendet: + + + + &man.chroot.2; (-Befehl) + + Ein &os;-Systemaufruf, der das root-Verzeichnis eines + Prozesses und dessen Abkömmlinge verändert. + + + + + &man.chroot.2; (-Umgebung) + + Die Umgebung eines Prozesses, der in einem + chroot läuft. Diese beinhaltet + Ressourcen, wie zum Beispiel sichtbare Abschnitte + des Dateisystems, verfügbare Benutzer- und + Gruppenkennungen, Netzwerkschnittstellen und weitere + IPC-Mechanismen und so weiter. + + + + + &man.jail.8; (-Befehl) + + Das Systemadministrationswerkzeug, welches es erlaubt, + Prozesse innerhalb der Jail-Umgebung zu starten. + + + + + Host (-Benutzer, -Prozess, -System) + + Das verwaltende System einer Jail-Umgebung. Das + Host-System hat Zugriff auf alle verfügbaren + Hardwareressourcen und kann sowohl innerhalb als auch + ausserhalb der Jail-Umgebung Prozesse steuern. Einer der + wichtigsten Unterschiede des Host-System einer Jails ist, + dass die Einschränkungen, welche für die + Superuser-Prozesse innerhalb eines Jails gelten, nicht + für die Prozesse des Host-Systems gelten. + + + + + Gast (-Benutzer, -Prozess, -System) + + Ein Prozess, ein Benutzer oder eine andere Instanz, + deren Zugriff durch eine &os;-Jail eingeschränkt + ist. + + + + + + + Einführung + + Da die Systemadministration oft eine schwierige Aufgabe ist, + wurden viele mächtige Werkzeuge entwickelt, die + Administratoren bei Installation, Konfiguration und Wartung ihrer + Systeme unterstützen sollen. Eine wichtige Aufgabe eines + Administrators ist es, Systeme so abzusichern, dass es im + regulären Betrieb zu keinen Sicherheitsverstößen + kommt. + + Eines der Werkzeuge, mit dem die Sicherheit eines &os;-Systems + verbessert werden kann, sind Jails. Jails wurden schon in + &os; 4.X von &a.phk; eingeführt, wurden jedoch mit + &os; 5.X stark verbessert, sodass sie inzwischen zu einem + mächtigen und flexiblen Subsystem herangereift sind. Trotzdem + geht die Entwicklung nach wie vor weiter. Wichtige Ziele sind + derzeit: Bessere Zweckmäßigkeit, Leistung, + Ausfallsicherheit und allgemeine Sicherheit. + + + Was ist eine Jail? + + BSD-ähnliche Betriebssysteme besitzen seit den Zeiten + von 4.2BSD &man.chroot.2;. Das Werkzeug &man.chroot.2; kann dazu + benutzt werden, das root-Verzeichnis einer Reihe von Prozessen + zu ändern, um so eine seperate sichere Umgebung (abgeschnitten + vom Rest des Systems) zu schaffen. Prozesse, die in einer + chroot-Umgebung erstellt wurden, können nicht auf Dateien + oder Ressourcen zugreifen, die sich ausserhalb der Umgebung + befinden. Dadurch ist es einem kompromittierten Dienst nicht + möglich, das gesamte System zu kompromittieren. + &man.chroot.8; eignet sich für einfache Aufgaben, die keine + flexiblen, komplexen oder fortgeschrittenen Funktionen + benötigen. Obwohl seit der Entwicklung des chroot-Konzepts + zahlreiche Sicherheitslöcher geschlossen wurden, die es + einem Prozess erlauben konnten, aus einer Jail auszubrechen, + war seit langer Zeit klar, dass &man.chroot.2; nicht die ideale + Lösung ist, einen Dienst sicher zu machen. + + Dies ist einer der Hauptgründe, warum + Jails entwickelt wurden. + + Jails setzen auf dem traditionellen &man.chroot.2;-Konzept + auf und verbessern es auf unterschiedlichste Art und Weise. In + einer traditionellen &man.chroot.2;-Umgebung sind Prozesse auf + den Bereich des Dateisystems beschränkt, auf den sie + zugreifen können. Der Rest der Systemressourcen (wie zum + Beispiel eine Reihe von Systembenutzern, die laufenden Prozesse + oder das Netzwerk-Subsystem) teilen sich die chroot-Prozesse mit + dem Host-System. Jails dehnen dieses Modell nicht nur auf die + Virtualisierung des Zugriffs auf das Dateisystem, sondern auch + auf eine Reihe von Benutzern, das Netzwerk-Subsystem des + &os;-Kernels und weitere Bereiche aus. Eine ausführlichere + Übersicht der ausgefeilten Bedienelemente zur Konfiguration + einer Jail-Umgebung finden Sie im Abschnitt des Handbuchs. + + Eine Jail zeichnet sich durch folgende Merkmale aus: + + + + Einen Unterverzeichnisbaum, der die Jail enthält. + Einem Prozess, der innerhalb der Jail läft, ist es + nicht mehr möglich, aus diesem auszubrechen. Von + der traditionellen &man.chroot.2;-Umgebung bekannte + Sicherheitsprobleme existieren bei &os;-Jails nicht + mehr. + + + + Einen Hostname, der innerhalb der Jail verwendet wird. + Jails werden vor allem dazu verwendet, Netzwerkdienste + anzubieten, daher ist es für Systemadministratoren + von großem Nutzen, dass jede Jail einen beschreibenden + Hostname haben kann. + + + + Eine IP Adresse, die der Jail + zugewiesen wird und nicht verändert werden kann, + solange das Jail läft. Die IP-Adresse einer Jails + ist üblicherweise ein Adress-Alias auf eine + existierende Netzwerkschnittstelle. Dies ist jedoch + nicht zwingend erforderlich. + + + + Einen Befehl (genauer den Pfad einer ausführbaren + Datei) der innerhalb der Jail ausgefürht werden soll. + Dieser Pfad wird relativ zum root-Verzeichnis einer + Jail-Umgebung angegeben und kann sehr unterschiedlich + aussehen (je nachdem, wie die Jail-Umgebung konfiguriert + wurde). + + + + Unabhängig davon können Jails eine Reihe eigener + Benutzer und einen eigenen Benutzer root + haben. Selbstverständlich sind die Rechte des Benutzers + root nur auf die Jail-Umgebung + beschränkt. Aus der Sicht des Host-Systems ist der + Benutzer root der Jail-Umgebung kein + allmächtiger Benutzer, da der Benutzer + root der Jail-Umgebung nicht dazu + berechtigt ist, kritische Operationen am System ausserhalb der + angebundenen &man.jail.8;-Umgebung durchzuführen. + Weitere Informationen über die Einsatzmöglichkeiten + und Beschränkungen des Benutzers root + werden im Abschnitt des + Handbuchs besprochen. + + + + + Einrichtung und Verwaltung von Jails + + Einige Administratoren unterscheiden zwei verschiedene + Jail-Arten: Komplette Jails, die ein echtes + &os; darstellen und Jails für einen bestimmten + Dienst, die nur einer bestimmten Anwendung + oder einem Dienst (der möglicherweise mit besonderen + Privilegien laufen soll) gewidmet sind. Dies ist aber nur + eine konzeptuelle Unterscheidung, die Einrichtung einer + Jail bleibt davon gänzlich unberührt. + + &prompt.root; setenv D /hier/ist/die/jail +&prompt.root; mkdir -p $D +&prompt.root; cd /usr/src +&prompt.root; make world DESTDIR=$D +&prompt.root; cd etc/ Dieser +Schritt ist seit &os; 6.0 nicht mehr notwendig. +&prompt.root; make distribution DESTDIR=$D +&prompt.root; mount -t devfs devfs $D/dev + + + + Das Festlegen des Installationsorts für das Jail + eignet sich am besten als Startpunkt. Hier wird sich die + Jail innerhalb des Host-Dateisystems befinden. Eine gute + Möglichkeit wäre etwa /usr/jail/name_der_jail, + wobei name_der_jail den Hostname + darstellt, über den die Jail identifiziert werden + soll. Das Dateisystem unterhalb von /usr/ stellt normalerweise + aussreichend Platz für eine Jail zur Verfügung + (bedenken Sie, dass eine komplette Jail + ein Replikat einer jeden Datei der Standardinstallation des + &os;-Basissystems enthält. + + + + Dieser Befehl wird den Verzeichnisbaum mit allen + notwendigen Binärdateien, Bibliotheken, Manualpages + usw. an dem für die Jail gewählten physikalischen + Ort erstellen. Dies geschieht im typischen &os;-Stil — + Zuerst wird alles gebaut/kompiliert und anschließend + in das Zielverzeichnis installiert. + + + + Der distribution-Befehl + lässt make alle + benötigten Konfigurationsdateien installieren, es + werden also alle installierbaren Dateien aus + /usr/src/etc/ in + das Verzeichnis /etc + der Jail installiert (also nach $D/etc/). + + + + Das Einhängen des &man.devfs.8;-Dateisystems + innerhalb der Jail ist nicht unbedingt notwendig. + Allerdings benötigt fast jede Anwendung Zugriff auf + wenigstens ein Gerät. Es ist daher sehr wichtig, + den Zugriff auf Devices aus der Jail heraus zu + kontrollieren, da unsaubere Einstellungen es einem + Angreifer erlauben könnten, in das System einzudringen. + Die Kontrolle über &man.devfs.8; erfolgt durch die in + den Manualpages &man.devfs.8; und &man.devfs.conf.5; + beschriebenen Regeln. + + + + Ist eine Jail einmal erst erstellt, kann sie durch + &man.jail.8; gestartet werden. &man.jail.8; benötigt + zwingend mindestens vier Argumente, die im Abschnitt des Handbuchs beschrieben sind. Weitere + Argumente sind möglich, um beispielsweise die Jail mit den + Berechtigungen eines bestimmten Benutzers laufen zu lassen. Das + Argument + hängt vom Typ der Jail ab; für ein virtuelles + System ist /etc/rc eine gute + Wahl, da dies dem Startvorgang eines echten &os;-Systems + entspricht. Bei einer Service-Jail + hängt dieses von der Art des Dienstes ab, der in der Jail + laufen soll. + + Jails werden häufig mit dem Betriebssystem gestartet, + da der rc-Mechanismus von &os; dafür + eine einfach zu realisierende Möglichkeit bietet. + + + + Eine Liste der Jails, die mit dem Betriebssystem + gestartet werden sollen, wird in die Datei &man.rc.conf.5; + geschrieben: + + jail_enable="YES" # Set to NO to disable starting of any jails +jail_list="www" # Space separated list of names of jails + + + + Für jede Jail in der jail_list + sollten in &man.rc.conf.5; einige Einstellungen + vorgenommen werden: + + jail_www_rootdir="/usr/jail/www" # jail's root directory +jail_www_hostname="www.example.org" # jail's hostname +jail_www_ip="192.168.0.10" # jail's IP address +jail_www_devfs_enable="YES" # mount devfs in the jail +jail_www_devfs_ruleset="www_ruleset" # devfs ruleset to apply to jail + + Beim Start einer in &man.rc.conf.5; konfigurierten Jail + wird das /etc/rc-Skript der Jail (das + "annimmt", dass es sich in einem kompletten System befindet) + aufgerufen. Für Service-Jails sollten die Startskripte + der Jail durch das Setzen der Option + jail_jailname_exec_start + entsprechend angepasst werden. + + + Eine vollständige Liste der Optionen findet sich + in der Manualpage zu &man.rc.conf.5;. + + + + + Das /etc/rc.d/jail-Skript kann + zum manuellen Starten und Stoppen der Jail genutzt werden, + wenn ein Eintrag in rc.conf angelegt + wurde: + + &prompt.root; /etc/rc.d/jail start www +&prompt.root; /etc/rc.d/jail stop www + + Es gibt momentan keinen sauberen Weg, eine &man.jail.8; zu + stoppen. Dies liegt daran, dass die Kommandos zum sauberen + Herunterfahren eines Systems innerhalb einer Jail nicht + ausgeführt werden können. Der beste Weg eine Jail zu + beenden ist es daher, innerhalb der Jail den folgenden Befehl + auszuführen (alternativ können Sie auch &man.jexec.8; + von außerhalb der Jail aufrufen): + + &prompt.root; sh /etc/rc.shutdown + + Weitere Informationen zu diesem Thema finden Sie in der + Manualpage &man.jail.8;. + + + + Feinabstimmung und Administration + + Es gibt verschiedene Optionen, die für jede Jail + gesetzt werden können und verschiedene Wege, ein + &os;-Host-System mit Jails zu kombinieren. Dieser Abschnitt + zeigt Ihnen: + + + + Einige zur Verfügung stehende Optionen zur + Abstimmung des Verhaltens und der Sicherheitseinstellungen, + die mit einer Jail-Installation ausgeführt werden + können. + + + + Einige der Anwendungsprogramme für das + Jail-Management, die über die &os; Ports-Sammlung + verfügbar sind und genutzt werden können, um + Jail-basierte Lösungen allumfassend umzusetzen. + + + + + Systemwerkzeuge zur Feinabstimmung von Jails in &os; + + Die Feinabstimmung einer Jail-Konfiguration erfolgt zum + Großteil durch das Setzen von &man.sysctl.8;-Variablen. + Es gibt einen speziellen sysctl-Zweig, der als Basis für + die Organisation aller relevanten Optionen dient: Die + security.jail.*-Hierarchie der + &os;-Kerneloptionen. Die folgende Liste enthält alle + jail-bezogenen sysctls (inklusiver ihrer Voreinstellungen). + Die Namen sollten selbsterklärend sein, für + weitergehende Informationen lesen Sie bitte die Manualpages + &man.jail.8; und &man.sysctl.8;. + + + + security.jail.set_hostname_allowed: + 1 + + + + security.jail.socket_unixiproute_only: + 1 + + + + security.jail.sysvipc_allowed: + 0 + + + + security.jail.enforce_statfs: + 2 + + + + security.jail.allow_raw_sockets: + 0 + + + + security.jail.chflags_allowed: + 0 + + + + security.jail.jailed: 0 + + + + Diese Variablen können vom Administrator des + Host-Systems genutzt werden, um + Beschränkungen hinzuzufügen oder aufzuheben, die dem + Benutzer root als Vorgabe auferlegt sind. + Beachten Sie, dass es einige Beschränkungen gibt, die nicht + verändert werden können. Der Benutzer + root darf innheralb der &man.jail.8; keine + Dateisysteme mounten und unmounten. Ebenso ist es ihm untersagt, + das &man.devfs.8;-Regelwerk zu laden oder zu entladen. Er darf + weder Firewallregeln setzen, noch administrative Aufgaben + erledigen, die Modifikationen am Kernel selbst erfordern + (wie bespielsweise das Setzen des Securelevels + des Kernel. + + Das &os;-Basissystem enthält einen Basissatz an + Werkzeugen, um Informationen über aktive Jails zu erlangen + und einer Jail administrative Befehle zuzuordnen. Die Befehle + &man.jls.8; und &man.jexec.8; sind Teil des &os;-Basissystems + und können für folgende Aufgaben verwendet werden: + + + + Das Anzeigen einer Liste der aktiven Jails und ihrer + zugehörigen Jail Identifier (JID), + ihrer IP-Addresse, ihres Hostnames und + ihres Pfades. + + + + Das Herstellen einer Verbindung mit einer laufenden + Jail, das Starten eines Befehls aus dem gastgebenen + System heraus oder das Ausführen einer administrativen + Aufgabe innerhalb der Jail selbst. Dies ist insbesondere + dann nützlich, wenn der Benutzer + root die Jail sauber herunterfahren + möchte. &man.jexec.8; kann auch zum Starten einer + Shell innerhalb der Jail genutzt werden, um adminstrative + Aufgaben durchzuführen: + + &prompt.root; jexec 1 tcsh + + + + + + High-Level-Werkzeuge zur Jail-Administration in der &os; + Ports-Sammlung + + Unter den zahlreichen Fremdwerkzeugen für die Administration + von Jails sind die sysutils/jailutils die + vollständigsten und brauchbarsten. Dabei handelt es sich um + eine Sammlung kleiner Anwendungen, die das &man.jail.8;-Management + vereinfachen. Weitere Informationen zu diesen Werkzeugen finden + Sie auf den entsprechenden Internetseiten. + + + + + Anwendung von Jails + + + + + + Daniel + Gerzo + Beigetragen von + + + + + + Service-Jails + + Dieser Abschnitt basiert auf einer von &a.simon; auf + präsentierten Idee und einem aktualisierten + Artikel von Ken Tom (locals@gmail.com). Er + beschreibt, wie ein &os;-System durch Benutzung der + &man.jail.8;-Funktion mit zusätzlichen + Sicherheitsebenen ausgestattet werden kann. Es wird dabei + angenommen, dass auf Ihrem &os;-System RELENG_6_0 oder neuer + installiert ist und dass Sie die Informationen aus den + vorangehenden Abschnitten gelesen und verstanden haben. + + + Design + + Eines der Hauptprobleme bei Jails ist das Management + ihres Upgrade-Prozesses. Dieser neigt dazu, problematisch zu + sein, da jede Jail bei jedem Upgrade komplett neu gebaut + werden muss. Das stellt normalerweise kein Problem dar, wenn + es sich um eine einzelne Jail handelt, da der Upgrade-Prozess + recht einfach ist. Verwenden Sie aber eine größere + Anzahl von Jails, kann dieser Prozess sehr zeitaufwendig + werden. + + + Diese Konfiguration erfordert fortgeschrittene + Kenntnisse im Umgang mit &os; sowie der Benutzung seiner + Funktionen. Sollten die unten vorgestellten Schritte zu + kompliziert wirken, wird empfohlen, sich einfachere Verfahren + wie sysutils/ezjail + anzusehen, da diese einfachere Methoden zur Administration + von Jails verwenden und daher nicht so anspruchsvoll sind + wie der hier beschriebene Aufbau. + + + Diese Konfiguration basiert darauf, Jails so weit als + möglich gemeinsam zu verwalten. Dies passiert auf sichere + Art und Weise durch den Einsatz von &man.mount.nullfs.8;-Mounts + (read-only). Dadurch werden Aktualisierungen erleichtert und + das Verteilen von verschiedenen Diensten auf verschiedene + Jails wird attraktiver. Außerdem bietet dieses Verfahren + einen einfachen Weg, Jails hinzuzufügen, zu entfernen und + zu aktualisieren. + + + Beispiele für Dienste sind in diesem + Zusammenhang: Ein HTTP-Server, ein + DNS-Server, ein + SMTP-Server und so weiter. + + + Die Ziele des in diesem Abschnitt beschriebenen Aufbaus + sind: + + + + Das Erstellen einer einfachen und gut + verständlichen Struktur von Jails. Dies beinhaltet, + nicht für jede Jail ein + vollständiges installworld laufen lassen zu + müssen. + + + + Es einfach zu machen, neue Jails zu erstellen oder + alte zu entfernen. + + + + Es einfach zu machen, bestehende Jails zu + aktualisieren. + + + + Es einfach zu machen, einen angepassten &os;-Zweig zu + nutzen. + + + + Paranoid bezüglich Sicherheit zu sein und + Angriffsmöglickeiten weitgehend zu reduzieren. + + + + Soviel Platz und Inodes wie möglich + einzusparen. + + + + Wie bereits erwähnt, ist dieses Design stark darauf + angewiesen, dass eine read-only-Hauptvorlage in jede Jail + hinein gemountet wird (bekannt als + nullfs), und dass jede Jail + über wenigstens ein beschreibbares Gerät + verfügt. Das Gerät kann hierbei eine separate + physikalische Platte oder ein vnode unterstütztes + &man.md.4;-Gerät sein. Im folgenden Beispiel wird ein + nullfs-Mount genutzt, auf den + nur Lesezugriff erlaubt ist. + + Das Layout des Dateisystems wird in der folgenden Liste + beschrieben: + + + + Jede Jail wird unterhalb des /home/j-Verzeichnisses + gemountet. + + + + /home/j/mroot + ist die Vorlage für jede Jail und die nur lesbare + Partition für alle Jails. + + + + Unterhalb von /home/j wird für jede + Jail ein leeres Verzeichnis angelegt. + + + + Jede Jail bekommt ein /s-Verzeichnis, das zum + read/write-Teilbereich des Systems verlinkt wird. + + + + Jede Jail bekommt ihr eigenes read/write-System, + das auf /home/j/skel basiert. + + + + Jeder Jailbereich (genauer der read/write-Teilbereich + jeder Jail) wird in /home/js erstellt. + + + + + Es wird angenommen, dass die Jails sich unterhalb des + /home Verzeichnisses + befinden. Dieser Ort kann von Ihnen natürlich + geändert werden. Allerdings müssen die Pfade + in den folgenden Beispielen dann entsprechend angepasst + werden. + + + + + + Erstellen der Vorlage + + Dieser Abschnitt beschreibt die Schritte, die zum + Erstellen der Hauptvorlage (die den nur lesbaren Bereich + für alle weiteren Jails darstellt) notwendig sind. + + Es ist immer eine gute Idee, &os; auf den aktuellen + -RELEASE-Zweig zu aktualisieren. Lesen Sie das entsprechende + Kapitel des + Handbuchs für Informationen zu diesem Thema. Selbst wenn + Sie auf eine Aktualisierung des Betriebssystems verzichten, + müssen Sie dennoch ein buildworld durchführen, um + fortfahren zu können. Außerdem müssen Sie + das Paket sysutils/cpdup + installiert sein. In diesem Beispiel wird &man.portsnap.8; + verwendet, um die aktuelle &os; Ports-Sammlung herunterzuladen. + Der Abschnitt Portsnap des + Handbuchs beschreibt, wie Sie dieses Werkzeug effektiv + einsetzen. + + + + Zuerst erstellen wir eine Verzeichnissstruktur + für das read-only-Dateisystem, das die + &os;-Binärdateien für unsere Jails enthalten + wird. Anschließend wechseln wir in den + &os;-Quellcodebaum und installieren das + read-only-Dateisystem in die (Vorlage-)Jail. + + &prompt.root; mkdir /home/j /home/j/mroot +&prompt.root; cd /usr/src +&prompt.root; make installworld DESTDIR=/home/j/mroot + + + + Als nächstes bereiten wir die Ports-Sammlung + fü die Jails vor und kopieren den &os; Quellcodebaum + in die Jail, da dieser für + mergemaster benötigt wird: + + &prompt.root; cd /home/j/mroot +&prompt.root; mkdir usr/ports +&prompt.root; portsnap -p /home/j/mroot/usr/ports fetch extract +&prompt.root; cpdup /usr/src /home/j/mroot/usr/src + + + + Danach wird die Struktur für den + read/write-Bereich des Systems erstellt: + + &prompt.root; mkdir /home/j/skel /home/j/skel/home /home/j/skel/usr-X11R6 /home/j/skel/distfiles +&prompt.root; mv etc /home/j/skel +&prompt.root; mv usr/local /home/j/skel/usr-local +&prompt.root; mv tmp /home/j/skel +&prompt.root; mv var /home/j/skel +&prompt.root; mv root /home/j/skel + + + + Nutzen Sie mergemaster, um + fehlende Konfigurationsdateien zu installieren. + Anschließend werden die von + mergemaster erstellten + Extra-Verzeichnisse entfernt: + + &prompt.root; mergemaster -t /home/j/skel/var/tmp/temproot -D /home/j/skel -i +&prompt.root; cd /home/j/skel +&prompt.root; rm -R bin boot lib libexec mnt proc rescue sbin sys usr dev + + + + Nun wird das read/write-Dateisystem mit dem + read-only-Dateisystem verlinkt. Bitte vergewissern Sie + sich, dass die symbolischen Links an den korrekten + s/ Positionen + erstellt werden. Echte Verzeichnisse oder an falschen + Positionen erstellte Verzeichnisse lassen die Installation + fehlschlagen. + + &prompt.root; cd /home/j/mroot +&prompt.root; mkdir s +&prompt.root; ln -s s/etc etc +&prompt.root; ln -s s/home home +&prompt.root; ln -s s/root root +&prompt.root; ln -s ../s/usr-local usr/local +&prompt.root; ln -s ../s/usr-X11R6 usr/X11R6 +&prompt.root; ln -s ../../s/distfiles usr/ports/distfiles +&prompt.root; ln -s s/tmp tmp +&prompt.root; ln -s s/var var + + + + Zuletzt erstellen Sie eine allgemeine + /home/j/skel/etc/make.conf mit + folgendem Inhalt: + + WRKDIRPREFIX?= /s/portbuild + + Ein gesetztes WRKDIRPREFIX + erlaubt es, die &os;-Ports innerhalb jeder Jail + zu kompilieren. Das Ports-Verzeichnis ist Teil des + read-only System. Der angepasste Pfad des + WRKDIRPREFIX macht es möglich, + innerhalb des read/write-Bereichs der Jail Ports zu + bauen. + + + + + + Jails erstellen + + Da nun eine komplette &os;-Jailvorlage vorliegt, sind wir + nun in der Lage, Jails einrichten und in + /etc/rc.conf zu konfigurieren. Dieses + Beispiel zeigt das Erstellen von drei Jails: + NS, MAIL und + WWW. + + + + Fügen Sie die folgenden Zeilen in + /etc/fstab ein, damit die + read-only-Vorlage und der read/write-Bereich für + alle Jails verfügbar sind: + + /home/j/mroot /home/j/ns nullfs ro 0 0 +/home/j/mroot /home/j/mail nullfs ro 0 0 +/home/j/mroot /home/j/www nullfs ro 0 0 +/home/js/ns /home/j/ns/s nullfs rw 0 0 +/home/js/mail /home/j/mail/s nullfs rw 0 0 +/home/js/www /home/j/www/s nullfs rw 0 0 + + + Mit der Pass-Nummer 0 markierte Partitionen werden + beim Booten des Systems nicht von &man.fsck.8; + geprüft, mit 0 als Dump-Nummer markierte Partitonen + werden von &man.dump.8; nicht gesichert. Wir wollen + nicht, dass fsck unsere + nullfs-Mounts prüft oder + dass dump die nur lesbaren + nullfs-Mounts unserer Jails sichert. Deshalb werden + diese Bereiche in den letzten beiden Spalten der + obenstehenden fstab mit + 0 0 markiert. + + + + + Konfigurieren Sie die Jails in + /etc/rc.conf: + + jail_enable="YES" +jail_set_hostname_allow="NO" +jail_list="ns mail www" +jail_ns_hostname="ns.example.org" +jail_ns_ip="192.168.3.17" +jail_ns_rootdir="/usr/home/j/ns" +jail_ns_devfs_enable="YES" +jail_mail_hostname="mail.example.org" +jail_mail_ip="192.168.3.18" +jail_mail_rootdir="/usr/home/j/mail" +jail_mail_devfs_enable="YES" +jail_www_hostname="www.example.org" +jail_www_ip="62.123.43.14" +jail_www_rootdir="/usr/home/j/www" +jail_www_devfs_enable="YES" + + + Der Grund dafür, dass die Variablen + jail_name_rootdir + nach /usr/home + statt nach /home + zeigen, liegt darin, dass der physikalische Pfad des + /home-Verzeichnisses unter + &os; /usr/home + lautet. Die Variable + jail_name_rootdir + darf im Pfad aber keinen symbolischen + Link enthalten, weil das Jail ansonsten + nicht gestartet werden kann. Verwenden Sie + &man.realpath.1;, um den korrekten Wert für diese + Variable zu bestimmen. Weitere Informationen finden + Sie im Security Advisory &os;-SA-07:01.jail. + + + + + Erstellen Sie die notwendigen Mountpunkte für + die nur lesbaren Bereiche jeder Jail: + + &prompt.root; mkdir /home/j/ns /home/j/mail /home/j/www + + + + Installieren Sie die read/write-Vorlage in jede + Jail. Benutzen Sie hierfür sysutils/cpdup, welches es + erleichtert, eine korrekte Kopie jedes Verzeichnisses + zu erstellen: + + + + &prompt.root; mkdir /home/js +&prompt.root; cpdup /home/j/skel /home/js/ns +&prompt.root; cpdup /home/j/skel /home/js/mail +&prompt.root; cpdup /home/j/skel /home/js/www + + + + An dieser Stelle werden die Jails erstellt und + fü den Betrieb vorbereitet. Zuerst mounten Sie die + notwendigen Dateisysteme für jede Jail und starten + diese dann mit dem Skript + /etc/rc.d/jail: + + &prompt.root; mount -a +&prompt.root; /etc/rc.d/jail start + + + + Die Jails sollten nun laufen. Um zu prüfen, ob sie + korrekt gestartet wurden, verwenden Sie &man.jls.8;. Nach + dem Aufruf dieses Befehls sollten Sie eine Ausgabe + ähnlich der folgenden erhalten: + + &prompt.root; jls + JID IP Address Hostname Path + 3 192.168.3.17 ns.example.org /home/j/ns + 2 192.168.3.18 mail.example.org /home/j/mail + 1 62.123.43.14 www.example.org /home/j/www + + An diesem Punkt sollte es möglich sein, sich an + jeder Jail anzumelden, Benutzer anzulegen und Dienste zu + konfigurieren. Die Spalte JID gibt die + Jail-Identifikationsnummer jeder laufenden Jail an. Nutzen Sie + den folgenden Befehl, um administrative Aufgaben in der Jail + mit der JID 3 durchzuführen: + + &prompt.root; jexec 3 tcsh + + + + Jails aktualisieren + + Mit der Zeit wird es notwendig sein, das System auf + eine neuere Version von &os; zu aktualisieren. Zum einen aus + Sicherheitsgründen, zum anderen, um neu eingeführte + Funktionen nutzen zu können, die für die bestehenden + Jails sinnvoll sind. Das Design dieses Aufbaus bietet einen + einfachen Weg, bestehende Jails zu aktualisieren. Zudem + reduziert es die Downtime, da die Jails erst im allerletzten + Schritt gestoppt werden müssen. Außerdem bietet + es die Möglichkeit, zu älteren Versionen + zurückzukehren, falls irgendwelche Probleme auftreten. + + + + Im ersten Schritt wird das Host-System aktualisiert. + Anschließend wird eine temporäre neue + read-only Vorlage /home/j/mroot2 erstellt. + + &prompt.root; mkdir /home/j/mroot2 +&prompt.root; cd /usr/src +&prompt.root; make installworld DESTDIR=/home/j/mroot2 +&prompt.root; cd /home/j/mroot2 +&prompt.root; cpdup /usr/src usr/src +&prompt.root; mkdir s + + Der installworld-Durchlauf + erzeugt einige unnötige Verzeichnisse, die nun entfernt + werden sollten: + + &prompt.root; chflags -R 0 var +&prompt.root; rm -R etc var root usr/local tmp + + + + Erzeugen Sie neue symbolische Links für das + Hauptdateisystem: + + &prompt.root; ln -s s/etc etc +&prompt.root; ln -s s/root root +&prompt.root; ln -s s/home home +&prompt.root; ln -s ../s/usr-local usr/local +&prompt.root; ln -s ../s/usr-X11R6 usr/X11R6 +&prompt.root; ln -s s/tmp tmp +&prompt.root; ln -s s/var var + + + + Nun ist es an der Zeit, die Jails zu stoppen: + + &prompt.root; /etc/rc.d/jail stop + + + + Unmounten des originalen Dateisystems: + + + + &prompt.root; umount /home/j/ns/s +&prompt.root; umount /home/j/ns +&prompt.root; umount /home/j/mail/s +&prompt.root; umount /home/j/mail +&prompt.root; umount /home/j/www/s +&prompt.root; umount /home/j/www + + + Die read/write-Systeme sind an das read-only + System angehängt (/s), das daher zuerst + ausgehängt werden muss. + + + + + Verschieben Sie das alte read-only-Dateisystem und + ersetzen Sie es durch das neue Dateisystem. Das alte + Dateisystem kann so als Backup dienen, falls etwas schief + geht. Die Namensgebung entspricht hier derjenigen bei der + Erstellung eines neuen read-only-Dateisystems. Verschieben + Sie die originale &os; Ports-Sammlung in das neue + Dateisystem, um Platz und Inodes zu sparen: + + &prompt.root; cd /home/j +&prompt.root; mv mroot mroot.20060601 +&prompt.root; mv mroot2 mroot +&prompt.root; mv mroot.20060601/usr/ports mroot/usr + + + + Nun ist die neue read-only-Vorlage fertig. Sie + müssen daher nur noch die Dateisysteme erneut mounten + und die Jails starten: - Jails (noch nicht übersetzt) + &prompt.root; mount -a +&prompt.root; /etc/rc.d/jail start + + - Dieses Kapitel ist noch nicht übersetzt. - Lesen Sie bitte - das Original in englischer Sprache. Wenn Sie helfen - wollen, dieses Kapitel zu übersetzen, senden Sie bitte - eine E-Mail an die Mailingliste &a.de.translators;. + Nutzen Sie &man.jls.8; um zu prüfen, ob die Jails + korrekt gestartet wurden. Vergessen Sie nicht, innerhalb jeder + Jail mergemaster laufen zu lassen. Die + Konfigurationsdateien müssen (ebenso wie die + rc.d-Skripten) aktualisiert werden. + + +