Ezjail

On installe ensuite ezjail.

cd /usr/ports/sysutils/ezjail make install clean

Afin de s’adapter à l’environnement particulier du Kimsufi d’OVH, on va baser les jails dans /home. Les deux code premières choses à faire sont donc de créer /home/jails et de modifier la configuration par défaut d’ezjail pour refléter ce changement.

mkdir /home/jails sed -i ’’ ’s:# ezjail_jaildir=/usr/jails:ezjail_jaildir=/home/jails:’ /usr/local/etc/ezjail.conf

Toutes les jails créées via ezjail partagent le même système de base monté en lecture seule via nullfs, créons donc celui-ci en y adjoignant un arbres des ports.

ezjail-admin install -p

Pour pouvoir résoudre à l’intérieur d’une jail, il pourrait être intéressant d’y avoir une copie du resolv.conf de l’hôte ajoutée à la création de celle-ci.

cp /etc/resolv.conf /home/jails/newjail/etc/

Et pour éviter d’encombrer ses mails des analyses quotidiennes, hebdomadaires et mensuelles de toutes les jails tout en les gardant de côté au cas où :

printf ‘daily_output="/var/log/daily.log"\nweekly_output="/var/log/weekly.log"\nmonthly_output="/var/log/monthly.log"\ndaily_status_security_output="/var/log/daily-security.log"\nweekly_status_security_output="/var/log/weekly-security.log"\nmonthly_status_security_output="/var/log/monthly-security.log"\n’ > /home/jails/newjail/etc/periodic.conf

La création est ensuite des plus simples, il suffit de fournir un nom et une IP. En prime le script vous signale les serveurs que vous auriez laissé en écoute sur toutes les IP, c’est magique.

sh -c ‘for jail in dns ftp git http mail mariadb php trac; do ezjail-admin create $jail 12.34.56.78; done’

jexec, le binaire qui vous permet de lancer des programmes dans une jail, peut les identifier en fonction de leur JID ou de leur nom. Seulement pour pouvoir utiliser le dernier il vous faudra le spécifier dans /etc/rc.conf à l’aide d’une ligne comme jail_name_flags="-n name".
On en profitera d’ailleurs pour y ajouter ezjail_enable="YES", qui activera ezjail au démarrage et nous permettra d’utiliser les arguments start et stop du script /usr/local/etc/rc.d/ezjail.

ezjail_enable=“YES”

jail_dns_flags="-n dns" jail_ftp_flags="-n ftp" jail_git_flags="-n git" jail_http_flags="-n http" jail_mail_flags="-n mail" jail_mariadb_flags="-n mariadb" jail_php_flags="-n php" jail_trac_flags="-n trac"

On peut alors enfin lancer ezjail.

/usr/local/etc/rc.d/ezjail start