Mit den Tipps und Workshops im ADMIN-Magazin 03/2013 sichern Administratoren ihre Webserver und Netze gegen Angriffe ab: gegen Abhören sensibler Informationen, ... (mehr)

Manchmal besser: Verzicht auf Komprimierung

Die folgenden drei Verzeichnisse kommen ebenfalls ohne Kompression aus, weil die abgelegten Daten größtenteils Binärdaten oder wie »/var/run« Unix-Sockets enthalten:

zfs create -o exec=off -o setuid=off fbsd/var/db
zfs create -o exec=off -o setuid=off fbsd/var/run

Wenn alle Datensätze angelegt sind, verlässt man die Shell mit »exit« oder [Strg]+[D] und setzt die Installation mit Hilfe von BSDInstall fort. Am Ende der Installation wechselt man ein weiteres Mal in die Shell, um einige wichtige Einstellungen vorzunehmen: Damit die ZFS-Module beim Booten geladen werden, trägt man sie in »/boot/loader.conf« ein. Während der Installationsphase ist diese Datei im Verzeichnis »/mnt/boot/loader.conf« zu finden:

echo 'zfs_load="YES"' >> /mnt/boot/loader.conf
echo 'zfs_load="YES"' >> /mnt/boot/loader.conf

Ein Eintrag in »/mnt/etc/rc.conf« sorgt für das Laden der ZFS-Module:

echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf

Damit der Kernel weiß, von welchem Laufwerk er booten soll, muss der Administrator in »/mnt/boot/loader.conf« diese Zeile eintragen:

echo 'vfs.root.mountfrom="zfs:fbsd"' >>/mnt/boot/loader.conf

Bei einer normalen Installation trägt BSDInstall die Laufwerke mit der Swap-Partition automatisch in »/etc/fstab« ein. Bei dem hier beschrittenen Weg ist das nicht der Fall. Diese Zeilen sind notwendig:

/dev/gpt/swap0 none swap sw 0 0
/dev/gpt/swap1 none swap sw 0 0

Abschließend teilt man der ZFS-Verwaltung die Mountpoints mit, wie Listing 2 zeigt.

Listing 2

Mountpoints melden

 

Die folgenden Kommandos schreiben alle Tabellen in den ZPool und bringen ZFS in einen ordnungsgemäßen Zustand:

cd /
zfs export fbsd
zpool import -o altroot=/tmp/fbsd -o cachefile=/tmp/zpool.cache fbsd
cd /tmp/fbsd/boot/zfs
cp /tmp/zpool.cache .
cd /

Nach einem Reboot startet FreeBSD vom ZPool und der weiteren Administration steht nichts mehr im Wege. Wenn man sich das System wie gewünscht eingerichtet hat, hat man die Möglichkeit von den relevanten Verzeichnissen Snapshots zu erzeugen.

FreeBSD-Jails mit ZFS

Eines der bekanntesten Features von FreeBSD sind die Jails. Sie sind ein Sicherheitskonzept, welches das Konzept von »chroot()« erheblich erweitert. Programme, die in einer Jail gestartet werden, haben keine Möglichkeit, auf Resourcen des Hosts zuzugreifen. Es gibt aber auch Ausnahmen. Wenn beispielsweise einem Kunden eine Jail unter der Maßgabe zur Verfügung gestellt werden soll, dass er Datasets innerhalb der Jail selber anlegen darf. Hierfür bietet die ZFS-Implementierung in FreeBSD eine Lösung an.

Nachdem man eine FreeBSD-Jail erstellt hat, muss sichergestellt sein, dass sie auf »/dev/zfs« zugreifen kann. Über dieses Device läuft die Kommunikation mit ZFS. Dies ermöglicht in der Konfiguration des Device-Managers »/etc/devfs.rules« der folgende Eintrag:

[zfs=10]
add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login
add path 'zfs' unhide

In der Systemkonfiguration des Hosts »/etc/rc.conf« ändert man für die gewünschte Jail die Einträge nach folgendem Muster:

jail_Jailname_devfs_enable="YES"
jail_Jailname_devfs_ruleset="zfs"

Um das Mounten von ZFS-Datasets in der Jail zu erlauben, trägt man in »/etc/sysctl.conf« diese beiden Zeilen ein:

security.jail.mount_allowed=1
security.jail.enforce_statfs=0

Der SysCtl-MIB »security.jail.mount_allowed« bewirkt, dass der Anwender innerhalb der Jail Mount-Operationen durchführen darf. Der zweite SysCtl-MIB »security.jail.enforce_statfs« lässt alle gemounteten Dateisysteme sichtbar werden. Das Setzen beider Werte ist für das Funktionieren von ZFS innerhalb einer Jail nötig, reduziert allerdings die Sicherheit des Hostsystems. Danach erstellt man ein ZFS-Dataset:

zfs create fbsd/jail
zfs set jailed=on fbsd/jail

Das ZFS-Dataset muss anschließend der gewünschten Jail zugeordnet werden. Dazu ermittelt man mit »jls« die Identifikationsnummer der Jail (JID) und übergibt sie ZFS:

jls
  JID  IP Address  Hostname Path
    1  IP-Adresse Jail-Name Jail-Pfad
zfs jail 1 fbsd/jail

Danach hat man die Möglichkeit, das ZFS-Dataset innerhalb der Jail zu administrieren. Allerdings sollte man beachten, dass nach jedem Systemstart das Dataset wieder der Jail zugeordnet werden muss. Mit einem kleinen Skript ist das schnell erledigt.

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