Obwohl Linux als freie Software kostenlos verfügbar ist, setzen viele beim Unternehmenseinsatz auf Enterprise-Distributionen mit Support. Wo die Stärken der ... (mehr)

Fensterln mit Jails

Jails lassen sich nicht nur für Sicherheitszwecke einsetzen, sie sind unter anderem auch ein gutes Mittel, um Schulungsumgebungen aufzubauen. Jeder Schulungsteilnehmer bekommt eine Jail, in der er seine Kurseinheiten absolviert. Auch grafische Benutzeroberflächen (GUI) auf X11-Basis lassen sich zu diesem Zweck in einer Jail installieren. Ein wichtiger Punkt ist hierbei, dass der Xserver nicht in einer Jail funktioniert, da dieser direkten Zugriff auf die Hardware verlangt. Aber dank des X11-Protokolls leitet man die Ausgabe beispielsweise auf einen Thin-Client um. Die Konfiguration ist nicht sonderlich schwer, hält aber einige Fallstricke bereit. Zunächst installiert man in der Jail die gewünschten X11-Applikationen entweder über den Ports-Tree oder mittels »pkg_add -r« . In beiden Fällen werden alle benötigten Bibliotheken und Programme automatisch mit installiert. Weiter wird das Programm »xauth« benötigt, um eine Authentifizierung zu ermöglichen. Zu finden ist es in »/usr/ports/x11/xauth« . Im nächsten Schritt ändert man Einstellungen in »/etc/ssh/sshd_config« des ssh-Daemons: »X11Forwarding yes« Damit werden alle X11-Protokoll-Tokens durch den SSH-Tunnel geleitet. An dieser Stelle ein wichtiger Hinweis: Die Namensauflösung muss einwandfrei funktionieren! Auf der Client-Seite müssen die Tools »xauth« und »xhost« ebenso wie ein Display-Manager (»xdm« , »gdm« oder »kdm« ) nach Wahl installiert sein. Zunächst ergänzt man die Konfiguration des ssh-Clients um folgende Angaben:

Host *
   ForwardAgent yes
   ForwardX11 yes
   XAuthLocation /usr/bin/xauth
   ForwardX11Trusted yes

Ebenso teilt man dem Xserver des Clients mit, dass er Daten von den X11-Applikationen der Jail akzeptieren soll:

$ xhost +<IP-Adresse der Jail>

Wenn man sich anschließend mit »ssh user@x11jail X11-Applikation« an der Jail anmeldet, so erscheint auf dem Desktop des Clients ein Fenster mit der in der Jail gestarteten X11-Anwendung. Siehe hierzu auch Abbildung 4. Darauf aufbauend lassen sich mit wenigen Handgriffen auch Linux-Applikationen in einer Jail betreiben. Interessant ist dies, wenn man Anwendungen hat, die bereits für Linux verfügbar sind, aber für FreeBSD noch nicht. Man macht sich zunutze, dass es für FreeBSD Bibliotheken gibt, die eine Linux-Kompatibilität herstellen. Dazu installiert man auf dem Host den Port linux_base:

Abbildung 4: Rechts ist die in einer Jail gestartete X11-Anwendung (xclock) auf einem Gnome3-Desktop zu sehen. Im linken Fenster das zugehörige SSH-Terminal.
# cd /usr/ports/compat/linux_base
# make install clean

Anschließend mountet man das Verzeichnis mit den Bibliotheken in das Verzeichnis der Jail:

# mount_nullfs /compat/
Pfad zur Jail/compat/
# mount -t linprocfs linprocfs
Pfad zur Jail/compat/linux/proc

Wichtig ist, dass man auch das Linux-Process-Filesystem mountet, weil die Linux-Prozessverwaltung in einem Dateisystem abgebildet wird. Damit nach einem Neustart der Mount erhalten bleibt, ergänzt man »/etc/fstab« des Hosts entsprechend um die folgenden jeweils in einer Zeile geschriebenen Einträge:

Pfad zur Jail/compat/ /compat nullfs rw 0 0
linprocfs Pfad zur Jail/compat/linux/proc linprocfs rw 0 0

Weiterhin trägt man in die Systemkonfiguration »/etc/rc.conf« des Hosts und der Jail diese Zeile ein: »linux_enable="YES"« .

Zwei Welten, ein System

Die im letzten Abschnitt gezeigten Beispiele lassen sich zu einer Art Virtualisierungslösung ausbauen. Das Jails-Konzept von FreeBSD bietet die Möglichkeit, auf 64-Bit-Hosts Jails bereitzustellen, die 32-Bit-Anwendungen ausführen. Die Vorgehensweise bei der Installation und Konfiguration ist bis auf kleine Unterschiede die gleiche:

# setenv UNAME_m i386
# setenv UNAME_p i386
# cd /usr/src
# make buildworld TARGET=i386
# make installworld TARGET=i386 DESTDIR=Pfad zur Jail
# cd etc/
# make distribution DESTDIR=Pfad zur Jail
# mount -t devfs devfs Pfad zur Jail/dev

Zunächst werden die Umgebungsvariablen für die korrekte Ausgabe des Kommandos »uname« gesetzt. Nachdem in das Verzeichnis »/usr/src« gewechselt worden ist, kommen die Make-Aufrufe an die Reihe. Damit eine 32-Bit-Jail erstellt wird, verwendet man den Make-Parameter »TARGET=i386« . Die nächsten Schritte folgen dem weiter oben dargestellten Schema.

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019