Beinahe enzyklopädisch behandelt unser Schwerpunkt-Artikel über IPSEC verschlüsselte Verbindungen zwischen Linux, Windows, BSD, Solaris, Cisco- sowie ... (mehr)

FreeBSD-Jails

Die Jails von FreeBSD stellen eine Weiterentwicklung der auch bei anderen UNIX-Derivaten und bei Linux vorhandenen »chroot« -Umgebung dar. Sie enthalten weitere Sicherheitsmechanismen. Man richtet damit virtuelle Maschinen ein. Im Gegensatz zu anderen Virtualisierungslösungen wird stets ein und derselbe Systemkern verwendet.

Die im FreeBSD-Handbuch beschriebene Methode Jails anzulegen ist zwar die technisch beste, dabei eventuell auftretende Fehler überfordern jedoch den Ein- und Umsteiger. Eine alternative Methode besteht darin, zunächst die Grundausstattung eines jeden FreeBSD-Systems vom Installationsmedium in ein Verzeichnis zu kopieren. Man findet die nötigen Dateien unter dem Einhängepunkt » ?/?/RELEASE/base « , hier also unter »/media/cdrom/8.2-RELEASE/base« . Die Grundausstattung wird im geschilderten Fall per »sftp« auf den NAS-Rechner übertragen, sodass man ein Verzeichnis »/usr/jail-skel« erhält.

Für einige Konfigurationsdateien legt man jetzt das Verzeichnis »/usr/jail-konf« an. Die Datei »/etc/rc.conf« wird hier hineinkopiert und wie folgt angepasst:

# This file now contains just the
# overrides from /etc/defaults/rc.conf.
font8x8="iso15-8x8"
font8x14="iso15-8x14"
font8x16="iso15-8x16"
syslogd_enable="YES"
syslogd_program="/usr/sbin/syslogd"
syslogd_flags="ss"
keymap="german.iso"
network_interfaces=""
sshd_enable="YES"
sshd_flags="-p <I>71NN<I>"
hostname="<I>Hostname<I>"

Die letzten beiden Zeilen werden für jedes Jail zutreffend geändert.

Anschließend konfiguriert man den im Grundsystem laufenden SSH-Daemon so, dass er nur auf einer IP-Adresse kommuniziert. Dazu wird in seiner Konfigurationsdatei »/etc/ssh/ssh_conf« der Eintrag »ListenAddress« mit einer IP-Adresse belegt und das Kommentarzeichen am Zeilenanfang entfernt. Mittels »/etc/rc.d/sshd restart« wird dem Daemon die Änderung bekanntgegeben.

Der Datenspeicher darf normalerweise keine Verbindung zum Internet erlangen. Aus diesem Grunde werden keine Angaben zum Default-Gateway und -Router gemacht. Für Jails müssen auch für eventuelle weitere Netzwerkkarten Aliase (siehe weiter unten) vergeben werden. Der Eintrag in der »/etc/rc.conf« für eine so konfigurierte Netzwerkarte lautet damit:

# -- Netzwerkkarte für Datenzugriff
ifconfig_rl0="inet 192.168.1.25 netmask 255.255.255.0"
ipv6_enable="YES"
hostname="daten1.??????????.de"

Der Rechner verfügt damit über je eine eigene Anbindung für Daten und für die Administration. Er kann auf Wunsch auch in ein tagged VLAN eingebunden werden. In diesem Falle lautet der Konfigurationseintrag in der »/etc/rc.conf« wie folgt:

cloned_interfaces="vlan1 vlan3"
ifconfig_vlan1="inet 192.168.0.25 netmask 255.255.255.0 vlan 1 vlandev ae0"
ifconfig_vlan3="inet 192.168.1.25 netmask 255.255.255.0 vlan 3 vlandev ae0"
ifconfig_ae0="up"
ipv6_enable="YES"
defaultrouter="192.168.0.1"
hostname="daten1.??????????.de"

Für jedes Jail muss bei der Netzwerkkonfiguration ein Alias vergeben werden, und das bei jeder dafür verwendeten Netzwerkkarte! Hierfür werden in »/etc/rc.conf« ebenfalls gesonderte Einträge notwendig:

ifconfig_ae0_alias0="inet 192.168.0.65 netmask 255.255.255.255"
ifconfig_ae0_alias1="inet 192.168.0.66 netmask 255.255.255.255"
ifconfig_ae0_alias2="inet 192.168.0.67 netmask 255.255.255.255"

Wichtig ist, dass beim Schlüsselwort »alias« die Zählung mit 0 beginnt und sich der Wert je Zeile jeweils um eins erhöht. Der manuelle Start eines Netzwerk-Aliases erfolgt mit der Eingabe:

ifconfig ae0 inet alias 192.168.0.65/32

Überprüfung durch »ifconfig ae0« . Das Grundsystem ist damit bereit. Dafür wurden die folgenden Schritte absolviert:

  • Grundausstattung in ein Verzeichnis der Systemplatte kopieren
  • »/etc/ssh/sshd_conf« : ListenAdress festlegen
  • weitere Netzwerkkarte konfigurieren oder
  • Aliase für Jails in »/etc/rc.conf« eintragen

Nun lassen sich die Jails anlegen.

Jails anlegen

Es sind einige Arbeitsschritte notwendig, bis auf dem FreeBSD-NAS ein Jail läuft. Im Folgenden fasst dieser Artikel alle Handgriffe stichpunktartig zusammen. Für weitere Informationen stehen die Manualseiten und das FreeBSD-Handbuch bereit:

ZFS: Dateisystem für Jail in ZFS-Pool anlegen ( Listing 2 ). Überprüfen der Aktion mit »zfs list« .

Listing 2

zfs create

 

Jail: Shell-Variable für Zielverzeichnis setzen und prüfen ( Listing 3 ). Es ist gegebenenfalls notwendig, vorher nochmals eine Shell zu starten ( »sh« ), damit Variablen gesetzt werden dürfen.

Listing 3

Variable setzen

 

Jail: Wechsel in das Verzeichnis »/usr/jail-skel« und Aufruf von »install.sh« .

Jail: In das Jail-Verzeichnis »/etc« wechseln und dort eine leere Datei »fstab« anlegen.

Jail: Kopieren der Datei »/usr/jail-konf/rc.conf« nach »/daten/daten1/etc« und Anpassen der letzten beiden Zeilen (SSH-Port und Hostname), hier: »7165« und »daten1« . Dort werden keine Netzwerkgeräte festgelegt! Weitere Änderungen sind vorerst nicht notwendig.

SSHD: Wechsel in das Verzeichnis »/daten/daten1/jail/ssh« , dort Bearbeitung der Datei »sshd_config« : Bei »ListenAdress« Eintrag des ersten Netzwerkaliases ( »192.168.0.65« ).

Jail: Testweiser Start des Jails mit

jail /daten/daten1 daten1 192.168.0.65 /bin/sh

Jail: Ausführen von »newaliases« , die Fehlermeldung kann ignoriert werden. Kontrolle mit »hostname« , es muss der Hostname des Jails angezeigt werden.

Jail: Vergabe des »Root« -Passwortes: »passwd« eingeben, Kennwort bestätigen.

Jail: Benutzer für den Wartungszugang anlegen. Es gilt wie beim Hauptsystem, dass dieser Benutzer der Gruppe wheel angehören muss. Man kann dies auch per Skript »adduser« ausführen, wie in Listing 4 dargestellt. Wichtig dabei ist, dass dieser Benutzer eine Shell benötigt ( »sh« ) und dass ein Kennwort vergeben wird!

Listing 4

Nutzer anlegen

 

Jail: Einrichten der Datei »/etc/resolv.conf« mit folgendem Inhalt:

domain Domainname nameserver 192.168.0.1

Jail: Beenden mit »exit« .

Jail: Testweiser kompletter Start des Jails mit

mount -t devfs devfs /daten/daten1/dev
jail /daten/daten1 daten1 192.168.0.65 /bin/sh /etc/rc

Nach dem Jail-Kommando wird der absolute Pfad, der Hostname, die IP-Adresse und die auszuführenden Programme, hier die Shell, angegeben. Es laufen anschließend viele Meldungen über den Bildschirm, weil weitere, automatische Konfigurationsabläufe starten.

Jail: Vorbereitung für Software-Installationen: Kopieren des Port-Verzeichnisses: »cp -r /usr/ports /daten/daten1/usr«

Jail: Testen der Erreichbarkeit mittels »ssh« mit dem Jail als Wartungsbenutzer: »ssh -p 7165 wartung@192.168.0.65« , nach erfolgreicher Anmeldung Identitätswechsel mit »su -« durchführen

Jail: Software-Installation durchführen. Testweise wird der kleine Editor »nano« installiert:

cd /usr/ports/editors/nano
make install clean

Es laufen eine Menge Meldungen über den Bildschirm. Das hat damit zu tun, dass Abhängigkeiten aufgelöst werden und die ganzen Hilfsprogramme wie Linker und Compiler erstmals mitinstalliert werden.

Damit sind die wichtigsten Einstellungen erledigt. In der Praxis nehmen diese Arbeiten nur Minuten in Anspruch. Jetzt installiert man auf die gleiche Art die gewünschte Serveranwendung, also SAMBA und/oder einen FTP-Server. Bei der Feinkonfiguration dieser Dienste ist immer zwingend die Alias-IP-Adresse des Jails einzutragen. Bei mehrfach vorhandenen Diensten bedarf es zudem abweichender Portnummern.

Ähnliche Artikel

comments powered by Disqus
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

Ausgabe /2023