Re: Jail erstellen, buildworld

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Mon, 17 Dec 2012 12:09:11 +0100 (CET)

Es hat bisher keienr geantwortet, daher versuche ich mich
mal daran ...

Gerhard Brauer wrote:
> ich habe mal wieder eine Verständnisfrage.
> Habe die letzten Tage meinen Heimserver(chen) (AMD E-450, 2x1,6 GHz)
> auf FreeBSD umgestellt.
> Für meinen Mail+Imap+fetchmail-Server habe ich diesen in ein Jail gepackt.
>
> Laut Handbuch ist ja am Host ein "make buildworld" vorgesehen. Das
> brachte meinen Zeitplan aber erheblichst durcheinander, da der
> Vorgang etwa 5 Stunden dauerte bis ich endlich das Jail
> aktivieren/aufsetzen konnte.
>
> Ich habe ja den Host kurz vorher mit 9.0-Release aufgesetzt. Ist für
> ein Jail dann das buildworld notwendig/sinnvoll gewesen? Sicher, für
> Jails/Jailverwaltung gibt es sicher bessere Methoden, gerade wenn
> man viel damit arbeitet.
> Hätte ich mir das buildworld also sparen können, oder hättet ihr es
> anders gemacht? Ich dachte später evtl. daran, einfach base.tgz im
> Jail zu entpacken und ggf. mit freebsd-update (ohne Kernel) auf den
> aktuellen Stand zu bringen. Wäre das ein gangbarer Weg gewesen? (Das
> Hostsystem habe ich ja auch so aufgesetzt).

Es gibt viele verschiedene Verfahren, wie man ein Jail
aufsetzen kann. Das Handbook beschreibt im wesentlichen
nur eine davon.

Man kann theoretisch anstelle des "make buildworld" auch
einfach das existierende Host-System kopieren. Bitte
nicht mit cp -r oder tar, denn das macht die Hardlinks
kaputt. Ich persönlich favorisiere cpdup (aus der Ports-
Collection). Eine andere Möglichkeit ist find+cpio;
Kochrezept:

# cd /
# find -d -x . | cpio -dump /irgendwo/jail
# cd /var
# find -d -x . | cpio -dump /irgendwo/jail/var
# cd /usr
# find -d -x . | cpio -dump /irgendwo/jail/usr

(Kommt natürlich immer drauf an, welche Dateisysteme man
hat; ggf. muss man es noch für /usr/local wiederholen.)

Im Anschluss kann man im jail-Verzeichnis noch ein wenig
aufräumen, um Platz zu sparen. Beispielsweise wird man
in einem Jail i.allg. kein /rescue benötigen, keine
statischen Libraries (*.a), kein /usr/include usw., auch
/var/ und /etc sollte man im Jail rigoros aufräumen,
insbesondere unnötige Accounts (Passwörter!) aus passwd
und group entfernen.

Es gibt beim Erstellen eines Jails auch die gegenteilige
Vorgehensweise: Nicht erst alles reinkopieren und dann
unnötige Sachen löschen, sondern von Anfang an nur das
hineinkopieren, was man braucht. Das ist vor allem dann
zu empfehlen, wenn in dem Jail nur ein bestimmter Dienst
laufen soll, der wenige Abhängigkeiten hat.

Beispiel: Ich habe gerade kürzlich ein Jail aufgesetzt,
dessen einziger Zweck es ist, sich mit tip(1) auf eine
serielle Schnittstelle zu connecten. Also habe ich in das
Jail erstmal nur /usr/bin/tip hineinkpiert. Mit ldd(1)
kann man dann nachsehen, welche Libraries man braucht; das
war in diesem Fall nur /lib/libc.so.7. Außerdem braucht
man den Runtime-Linker /libexec/ld-elf.so.1. tip selbst
benötigt noch die Datei /etc/remote und das Verzeichnis
/var/spool/lock. Ferner wird devfs benötigt mit /dev/null
und /dev/cuau1 (die betreffende serielle Schnittstelle),
und /var/log/aculog ein Symlink auf /dev/null. Als Letztes
wird noch ein Home-Verzeichnis für den Jail-User benötigt,
weil sich jail(8) mit der Option -u sonst weigert (aber das
Verzeichnis muss den User nicht gehören). Das habe ich
auch nur durch Versuch-und-Irrtum herausgefunden.

Wenn man so vorgeht, erhält man ein Maximum an Sicherheit,
da in dem Jail wirklich nichts Unnötiges vorhanden ist,
in diesem Fall nicht einmal eine Shell. Bei komplexeren
Jails (z.B. Apache, PHP, ...) ist das aber meistens zu
aufwendig.

Gruß
   Olli

-- 
Oliver Fromme,  secnetix GmbH & Co. KG,  Marktplatz 29, 85567 Grafing
Handelsregister:  Amtsgericht Muenchen, HRA 74606, Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsreg.: Amtsgericht München,
HRB 125758, Geschäftsführer:  Maik Bachmann,  Olaf Erb,  Ralf Gebhart
FreeBSD-Dienstleistungen/-Produkte + mehr: http://www.secnetix.de/bsd
"If you aim the gun at your foot and pull the trigger, it's
UNIX's job to ensure reliable delivery of the bullet to
where you aimed the gun (in this case, Mr. Foot)."
        -- Terry Lambert, FreeBSD-hackers mailing list.
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 17 Dec 2012 - 12:09:23 CET

search this site