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

Logs in der Jail

In einer Jail werden genauso wie auf dem Hostsystem durch den Daemon »syslogd« Logfiles erzeugt. Um zu kontrollieren, was in den einzelnen Jails geschieht, ist es umständlich, sich in jeder Jail anzumelden. Einfacher geht es, wenn man die Ausgaben des »syslogd« auf den Host umleitet. In der Systemkonfiguration »/etc/rc.conf« der Jail aktiviert man zunächst den Daemon: »syslogd_enable="YES"« . In »/etc/syslog.conf« trägt man als einzige Zeile

*.* @ Adresse des Syslog-Hosts

ein und startet den Daemon mit »/etc/rc.d/syslogd restart« neu.

Damit ist die Konfiguration innerhalb der Jail abgeschlossen, und mit »exit« verlässt man sie wieder. Für einen abschließenden Test startet man die Jail so, wie sie später beim Booten hochgefahren wird

# jail /jail/www www.heimnetz.net
  192.168.1.200 /bin/sh /etc/rc

Mit »ssh root@www.heimnetz.net -pPort Jail« meldet man sich an der Jail an. Wenn alles korrekt konfiguriert ist, erscheint der Prompt der Jail.

Am Hostsystem müssen noch letzte Konfigurationsarbeiten erledigt werden. Da die Jail beim nächsten Systemboot mit gestartet werden soll, sind in der Datei »/etc/rc.conf« Ergänzungen vorzunehmen:

jail_enable="YES"
jail_list="www"
jail_www_rootdir="/jails/www"
jail_www_hostname="Hostname Jail"
jail_www_ip="IP-Adresse Jail"
jail_www_exec="/bin/sh /etc/rc"
jail_www_devfs_enable="YES"
jail_www_devfs_ruleset="devfsrules_jail"

Die Bedeutung der einzelnen Zeilen sei hier kurz erläutert. Um eine Jail zu starten muss der Eintrag »jail_enable="YES"« gesetzt sein. Falls mehrere Jails vom Hostsystem gestartet werden sollen, sind diese in eine Liste unter dem Schlüsselwort »jail_list« durch Leerzeichen getrennt einzutragen. Sie werden dann auch in der angegebenen Reihenfolge hochgefahren. Auffallend ist die letzte Zeile. In ihr wird das Regelwerk für den Device-Filesystem-Dienst festgelegt. Damit alles korrekt funktioniert, muss in eine vorhandene Konfiguration »/etc/devfs.rules« der Inhalt aus »/etc/defaults/devfs.rules« eingefügt werden. Die anderen Angaben sind für jede einzelne Jail zu machen. Zu beachten ist aber, dass der in »jail_list« angegebene Name sich in den anderen Angaben wiederfindet, wie es im Beispiel zu sehen ist.

Zusätzlich ersetzt oder ergänzt man in der Konfiguration »/etc/rc.conf« die Angaben für den Syslog-Daemon um diesen Eintrag:

syslogd_flags= "-a <I>IP-Adresse des Netzwerks<I>/24 -4 -b <I>hostdresse<I>"

Anschließend startet man den Syslog-Daemon neu.

Starten und Stoppen

Sobald alle Parameter in »/etc/rc.conf« eingetragen sind, lässt sich die Jail wie folgt starten:

# /etc/rc.d/jail start Name der Jail

Angehalten wird sie mit »stop Name der Jail« Wenn alle Jails gestoppt werden sollen, lässt man den Namen der Jail weg.

Software lässt sich auf die gleiche Art und Weise installieren wie auf dem Hostsystem. Entweder in Form von Binärpaketen mit »pkg_add -r Paketname« oder über die Ports. Dazu muss allerdings der Ports-Tree vom Hostsystem in die Jail gemountet werden, und es muss das Verzeichnis »/usr/ports« in der Jail existieren. Zu diesem Zweck gibt es das Dateisystem »nullfs« . Auf dem Hostsystem wird dieser Befehl ausgeführt:

# mount_nullfs -o ro /usr/ports
  /jail/www/usr/ports

und man ergänzt »/etc/fstab« des Hosts um den folgenden Eintrag:

/jails/www/usr/ports /usr/ports
 nullfs rw 0 0

Zusätzlich sind dann noch zwei Änderungen an »/etc/make.conf« der Jail notwendig:

WRKDIRPREFIX=/tmp
DISTDIR=/tmp/distfiles

Wenn das Hostsystem auf den neuesten Stand gebracht wird, müssen die Jails ebenfalls aktualisiert werden. Dazu wechselt man als Root-User in das Verzeichnis »/usr/src« . Da ein »make buildworld« auf dem Host meist schon ausgeführt wurde, ist es für die Jail nicht mehr notwendig. So genügt

# cd /usr/src
# mergemaster -p -D Pfad zur Jail
# make installworld DESTDIR=<I>Pfad zur Jail<I>
# mergemaster -D Pfad zur Jail

Damit ist das Update einer Jail abgeschlossen. Manchmal ist es wichtig zu sehen, ob und welche Prozesse innerhalb einer Jail wirklich laufen. Da hilft das Kommando »ps -ax« weiter. Der folgende Auszug aus der Prozessliste zeigt, welche Prozesse in einer Jail laufen. Zu erkennen ist es am zusätzlichen »J« in der Spalte Status (STAT).

# ps -ax
708 ?? SsJ 0:00,42 /usr/sbin/syslogd ...
722 ?? SsJ 0:17,19 /usr/sbin/named ...
774 ?? SsJ 0:00,12 /usr/sbin/sshd ...
781 ?? IsJ 0:00,87 /usr/sbin/cron -s
...

Mit dem Kommando »jls« lassen sich alle derzeit aktiven Jails anzeigen:

# jls
JID IP Address Hostname Path
 1 192.168.1.201 dns.domain.tld
  /home/jail/dns
 2 192.168.1.202 www.domain.tld
  /home/jail/www
 3 192.168.1.203 xwindow.domain.tld
  /home/jail/xwindow
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