Jail Flavours
Flavours sind das beste Feature seit geschnitten Brot - diese nehmen einem immer wiederkehrende Aufgaben beim Erstellen einer neuen Jail ab.
Ich habe einen Großteil aus dem example
Ordner übernommen, und mir einen
flavour mit dem Namen self
erstellt:
find /usr/jails/flavours/self
/usr/jails/flavours/self
/usr/jails/flavours/self/usr
/usr/jails/flavours/self/usr/home
/usr/jails/flavours/self/usr/home/user
/usr/jails/flavours/self/usr/home/user/.ssh
/usr/jails/flavours/self/usr/home/user/.ssh/authorized_keys
/usr/jails/flavours/self/usr/local
/usr/jails/flavours/self/usr/local/etc
/usr/jails/flavours/self/usr/local/etc/sudoers
/usr/jails/flavours/self/etc
/usr/jails/flavours/self/etc/resolv.conf
/usr/jails/flavours/self/etc/rc.conf
/usr/jails/flavours/self/etc/make.conf
/usr/jails/flavours/self/etc/periodic.conf
/usr/jails/flavours/self/etc/rc.d
/usr/jails/flavours/self/etc/rc.d/ezjail_flavour
/usr/jails/flavours/self/pkg
-
Darauf achten, dass die Rechte passend gesetzt sind (
home
;~/.ssh
; executable flags; …). -
Die
resolv.conf
wurde vom Host kopiert. -
Die
make.conf
ist an die des Hosts angelehnt. -
Nach langem debugging habe ich folgendes herausgefunden:
-
/pkg
wird bei der Installation gesucht, und nicht gefunden. Deshalb ist das mit im Flavour, und wird im Startup Script wieder gelöscht (Dies tritt nur bei Verwendung von Flavours auf, ohne wird nicht nach/pkg
gesucht… wtf?!?). -
Das Flavour Script darf keine Punkte im Dateinamen haben. Scheint ein recht neues Verhalten zu sein (Sehr gut, dass das Beispiel eben welche hat…).
-
Mein ezjail_flavour
Script schaut in etwa so aus:
#!/bin/sh
#
# BEFORE: DAEMON
# PROVIDE: ezjail.self.config
#
# customized ezjail flavour
. /etc/rc.subr
name=ezjail_flavour
start_cmd=flavour_setup
flavour_setup() {
# Remove traces of ourself
rm -f "/etc/rc.d/ezjail_flavour"
###
# Timezone - Uhr auf Kartoffel stellen
ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
###
# Groups
pw groupadd -q -n user
###
# User
#
# Den SHA512 Hash kann man sich entweder aus der
# /etc/master.passwd ziehen, oder manuell generieren:
# python -c 'import crypt; print crypt.crypt("password", "$6$saltSALTsaltSALT$")'
# Daran denken, der Salt hat 16 Stellen
echo -n "$6$saltSALTsaltSALT$/AvblmZPXYozjA6BrX3kTfO7hmUjwG9RkmHZwXkE9zD2sRY1Y6RT809yDoBG0ZgjDENLFTbipaDgtqYf.gnnY0" |\
pw useradd \
-n user -u 1001 -c 'Awesome Jail User' \
-d /usr/home/user -m \
-s /bin/csh \
-g user -G wheel \
-H 0
###
# symlink user directories
ln -s /usr/home /home
###
# Files
chown -R user:user /usr/home/user
###
# Packages
[ -d /pkg ] && rm -rfv /pkg
###
# remove adjkerntz from crontab
cat /etc/crontab | grep -E -v -i "(adjkerntz|adjust the time zone)" > /etc/crontab.temp
mv /etc/crontab.temp /etc/crontab
}
run_rc_command "$1"
Das eigene Flavour in der /usr/local/etc/ezjail.conf
als
Standard definieren:
ezjail_default_flavour="self"
Sind die Flavours fertig, sollten wir uns um die Firewall und das Routing kümmern.
last update: 2024-01-28 12:40:56 +0100