Listing 3
# export JAILDIR=/mnt/home/jails/dns
# mkdir -p ${JAILDIR}
# make MALLOC_PRODUCTION=yes buildworld
# make DESTDIR=${JAILDIR} DB_FROM_SRC=1 installworld distribution
# umount /mnt
# mdconfig -d -u md0
# dd if=/home/raspberry/rpi.img of=/dev/da0 bs=1m
Die weiteren Konfigurationsarbeiten finden direkt auf dem Raspberry Pi statt. Dafür setzen Sie die SD-Karte wieder in den Raspberry ein, booten das System und melden sich als Root-User an. Als ersten Schritt erstellen Sie dann eine Konfigurationsdatei für die Jails und legen sie im Verzeichnis /etc unter dem Namen jail.conf ab (Listing 4).
Listing 4
exec.start = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
exec.clean;
path = "/home/jails/$name";
dns {
host.hostname = "dns.example.home";
ip4.addr = 192.168.1.9;
interface = fxp0;
mount.devfs;
}
Die ersten drei Zeilen bezeichnen die Kommandos zum Starten und Beenden der Jail. Die darauffolgende Angabe path beschreibt das Verzeichnis, das die Jails enthält. Die Variable $name erhält dabei den Namen der Jail. Der Abschnitt dns beschreibt die Jail-Einstellungen mit dem gewünschten Hostnamen, der IP-Adresse und dem Netzwerk-Interface. Weiterhin legt mount.devfs fest, dass der Device-Driver-Manager von FreeBSD die Gerätetreiber auch in der Jail zur Verfügung stellt. Wie üblich erfolgt der Start der Jail über die Konsole (Listing 5).
Listing 5
# jail -c path=/home/jails/dns mount.devfs host.hostname=dns.example.home ip4.addr=192.168.1.9 command=/bin/sh
Danach finden alle weiteren Konfigurationsarbeiten innerhalb der Jail statt. Zunächst legen Sie mit touch /etc/fstab eine leere Fstab an. Des Weiteren generieren Sie eine einfache Konfigurationsdatei /etc/rc.conf (Listing 6). Den SSH-Daemon passt die Konfigurationsdatei /etc/ssh/sshd_config an die Jail an (Listing 7). Abschließend legen Sie einen Login-User an, hier admin, und vergeben ein Passwort an Root (Listing 8).
Listing 6
sendmail_enable="NO" inetd_flags="-wW -a 192.168.1.9" rpcbind_enable="NO" defaultrouter="192.168.1.1"
Listing 7
ListenAddress 192.168.1.9 Port 10053
Listing 8
# pw user add admin -g wheel # passwd admin # passwd root
Das exit-Kommando verlässt nun die Jail. Anschließend geht die Konfiguration auf dem Host-Hauptsystem weiter, indem Sie in der Systemkonfiguration /etc/rc.conf über folgende Zeile den Start von Jails zulassen:
jail_enable="YES"
Existieren die Unterverzeichnisse von /usr/local in der Jail noch nicht, holen Sie dies mit einem kleinen Trick nach. Dabei kommt der Dateisystemtreiber nullfs zum Einsatz, um Verzeichnisse vom Host in die Jail zu mounten. Der Vorteil dieser Methode: Eventuelle Updates müssen nur auf dem Host stattfinden, die Anwendungen innerhalb der Jail bringen Sie damit ebenfalls auf den aktuellen Stand.
Die scheint auf den ersten Blick die Sicherheitsbarriere zwischen Jail und Host zu durchlöchern. Dem ist aber nicht so, da das Prozessmanagement des Betriebssystems für die Prozesse innerhalb der Jail das Jail-Bit setzt. Das verhindert, dass Prozesse aus der Jail ausbrechen. Auf dem Host ergänzen Sie dazu die Datei /etc/fstab um die Einträge aus Listing 9.
Listing 9
/usr/local/bin /home/jails/dns/usr/local/bin nullfs ro 0 0 /usr/local/sbin /home/jails/dns/usr/local/sbin nullfs ro 0 0 /usr/local/lib /home/jails/dns/usr/local/lib nullfs ro 0 0 /usr/local/libdata /home/jails/dns/usr/local/libdata nullfs ro 0 0 /usr/local/share /home/jails/dns/usr/local/share nullfs ro 0 0
Das Verzeichnis /usr/local/etc und seine Unterverzeichnisse dürfen hingegen nicht in der Jail landen, da sie teilweise Konfigurationsdateien mit Einträgen enthalten, die verborgen bleiben müssen. Gleiches gilt für /usr/local/etc/rc.d. Daher legen Sie dieses Verzeichnis für die Jail manuell an (Listing 10). Es folgen der Start der Jail und die erste Anmeldung mittels ssh. Den Status der Jail verrät das Kommando service (Listing 11).
Listing 10
# mkdir -p /home/jails/dns/usr/local/etc/rc.d # service jail start dns # ssh [email protected] # service jail status dns JID IP Address Hostname Path dns 192.168.1.9 dns... /home/jails/dns
Listing 11
# service jail status dns JID IP Address Hostname Path dns 192.168.1.9 dns... /home/jails/dns





