L'interface d'administration de la BBox est accessible via l'url suivante : gestionbbox.lan. Utiliser l'adresse IP (par défaut 192.168.1.254) redirige vers gestionbbox.lan. Que se passe-t-il si vous utilisez un serveur DNS perso et pas celui de la BBox ? Réponse : le nom de domaine gestionbbox.lan n'existe pas, et l'interface est alors inaccessible. Heureusement cela peut se corriger rapidement, il suffit de créer une zone. Voici les paramètres à ajouter pour bind.
/etc/bind/named.conf.local (ou named.conf selon la distribution) :
zone "gestionbbox.lan" {
type master;
file "/etc/bind/gestionbbox.lan";
};
/etc/bind/gestionbbox.lan :
$TTL 604800
@ IN SOA gestionbbox.lan. hostmaster.gestionbbox.lan. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS gestionbbox.lan.
@ IN A 192.168.1.254
Les jails permettent de créer des VPS sur un système FreeBSD. Les processus sont emprisonnés dans un niveau d'exécution et un environnement distinct. L'équivalent sur Linux est OpenVZ / VServer / LXC mais le système de jails sous FreeBSD est intégré au système et plutôt mature.
La documentation de FreeBSD décrit le processus manuel de création de jails. Je recommande la lecture et le suivi de l’exercice proposé afin d'acquérir les bases. Il est aussi mentionné la possibilité d'utiliser un "squelette" commun à toutes les jails, ces dernières n'ayant que les répertoires susceptibles d'être modifié. Cela évite d'avoir 10 fois la même arborescence alors que beaucoup d'éléments sont communs. ezjail est un outil permettant d'automatiser tout ceci, et nous allons voir que c'est plutôt bien foutu.
Depuis la version 9, l'installeur a été simplifié au point qu'il n'est plus nécessaire de le détailler. Le choix des sets importe peu sur le résultat final, mais personnellement j'ajoute les sources car j'estime que cela fait partie de l'OS.
La suite de l'installation ne nécessite pas de paramétrage particulier.
Vous pouvez commencer par mettre à jour le système :
# freebsd-update fetch # freebsd-update install # reboot
Nous allons maintenant installer ezjail. Il y a deux solutions : le compiler à partir des ports, ou le télécharger sous forme binaire avec pkg_add.
Commencez par télécharger l'arbre des ports :
# portsnap fetch extract
Puis compilez et installez sysutils/ezjail :
# cd /usr/ports/sysutils/ezjail # make install clean
Il faut ensuite autoriser ezjail à se lancer :
echo ezjail_enable="YES" >> /etc/rc.conf
Utilisez la commande suivante :
# pkg_add -r ezjail
Il faut ensuite autoriser ezjail à se lancer :
echo ezjail_enable="YES" >> /etc/rc.conf
La commande suivante va préparer la jail de base :
# ezjail-admin install
Utilisez la commande suivante :
# ezjail-admin create dns 'em0|192.168.0.2'
Voici la commande :
# ezjail-admin start dns
ezjail-admin stop dns
La jail de base va être mise à jour, ce qui va répandre les modifications sur toutes les jails.
# ezjail-admin update -u
La commande est la suivante :
# ezjail-admin delete -wf dns
Cas concret : vous voulez activer SSH sur toutes les jails créées. C'est faisable ! La jail "modèle" est située ici : /usr/jails/newjail. Donc il faut éditer/créer le fichier /usr/jails/newjail/etc/rc.conf :
# echo sshd_enable="YES" >> /usr/jails/newjail/etc/rc.conf
Et voilà !
D'autres usages sont possibles, certains seront intéressés par les possibilités offertes avec l'intégration ZFS.
Dans l'épisode 1 je signalais des freezes à répétition sur DragonflyBSD fonctionnant dans VMware. Le problème s'est reproduit sur une autre VM qui avait été épargnée jusqu'ici. J'ai donc migré de VMware à VirtualBox (il suffit de créer une VM en utilisant le disque .vmdk existant, puis de changer le contrôleur IDE en SAS) pour voir si les choses s'améliorent.
Les warning kernel qui s'affichaient semblent avoir disparu... en revanche j'ai toujours des avertissements relatifs à "sendmail/postfix" (quoi ? sendmail ? je me suis battu des heures pour qu'il se taise car j'utilise postfix !! ). L'autre point étrange c'est que je reçois par mail des rapports de fonctionnement (logwatch) qui me signalent l'existence de vulnérabilités dans les paquets tiers installés :
Fetching package vulnerabilities database: Checking pkgsrc packages for vulnerabilities: Package perl-5.14.2nb5 has a arbitrary-code-execution vulnerability, see http://secunia.com/advisories/51498/ Package perl-5.14.2nb5 has a denial-of-service vulnerability, see http://secunia.com/advisories/52472/ Package dovecot-2.1.9 has a denial-of-service vulnerability, see http://secunia.com/advisories/51455/ Package curl-7.27.0 has a remote-system-access vulnerability, see http://secunia.com/advisories/52103/ Package curl-7.27.0 has a remote-information-disclosure vulnerability, see http://secunia.com/advisories/53051/ Package scmgit-base-1.7.12nb1 has a man-in-the-middle-attack vulnerability, see http://secunia.com/advisories/52361/
C'est très bien mais... que puis-je faire ? Ces logiciels ont été installés à partir de pkgin et ils sont déjà à jour. A quoi bon me signaler l'existence de vulnérabilités puisque je ne peux rien faire à part attendre que ce soit corrigé dans les dépôts de pkgin ? Mieux : pourquoi y a-t-il autant de vulnérabilités sur les logiciels fournis par pkgin ???
Du côté de FreeBSD difficile de juger, puisque l'outil pkgng (équivalent de pkgin) n'est pas pleinement utilisable. En effet les dépôts publics sont fermés depuis plusieurs mois suite à des problèmes de sécurité ! Donc le seul moyen de tester pkgng c'est de créer vous-même votre dépôt... Ce que je n'ai pas vraiment envie de faire.
DragonflyBSD offre beaucoup de points intéressants, mais semble avoir des problèmes de comportement en environnement VMware et avec certains logiciels tiers. FreeBSD est encore en phase de transition vers pkgng mais se comporte plutôt bien dans les différents cas où je l'ai testé.
J'ai mis en place plusieurs machines virtuelles sous VMware qui ont les rôles suivants :
FreeBSD et CentOS se comportent bien, en revanche DragonflyBSD ne semble pas aimer VMware. Parfois le boot n'aboutit pas, parfois le système se freeze. A l'heure où j'écris ce billet, le serveur Jabber ne répond pas, alors que le mail oui. Ce qui me laisse penser que la VM Jabber a planté.
La gestion des ports (tous systèmes *BSD confondus) est à mon sens problématique, surtout lors de l'installation d'un logiciel qui en remplace un autre dans le système de base (Postfix pour Sendmail par exemple). DragonflyBSD embarque pkgin qui facilite l'installation mais pas la configuration. Cas concret : j'ai installé Postfix sur DragonflyBSD pour remplacer Sendmail (car je ne le connais pas du tout). La configuration s'est bien passé, la réception des mails fonctionne. En revanche en installant fetchmail je me suis rendu compte que le système s'appuyait sur Sendmail. Or comme ce dernier n'est pas configuré, les messages ont été envoyés dans une dimension parallèle.
Une distribution Linux sous forme de paquets RPM ou DEB me semble donc bien plus propre que la séparation "world" et "port" que l'on trouve sous FreeBSD et les autres. Sous Debian l'installation de Postfix retire complètement Exim les risques de confusion sont donc réduits. Sous FreeBSD et dérivés, l'impossibilité de retirer Sendmail (sauf par recompilation du world avec le bon src.conf) peut au contraire poser des problèmes.
Je dois quand même dire que Pkgin est un excellent outil qui permet d'avoir une vraie gestion des paquets et de leur mises à jour. Étant implémenté dans NetBSD et DragonflyBSD il est amené à évoluer assez rapidement. Quelques exemples d'utilisation :
# pkgin update # pkgin search postfix # pkgin install postfix # pkgin upgrade
Si on s'en tient au système de base, tout va beaucoup mieux. L'implémentation de Bind sous FreeBSD est très correct et chrootée par défaut. Les fichiers sont situés dans /var/named/etc/namedb mais vus par l'application comme /etc/namedb. La mise en place de mon fichier de zone s'est bien passé, ainsi que l'ajout d'un fichier named.conf.local appelé par un Include (oui je suis trop habitué à Debian et aux fichiers de configuration modulaires).
A bientôt pour de nouvelles aventures.
Depuis environ 2 semaines Logwatch m'indique des erreurs de lecture/écriture sur la partition système. Il s'agit probablement du SSD bas de gamme de 32GB que j'utilise, choisi uniquement pour le silence et pas les performances. N'ayant pas accès physiquement au serveur je n'ai rien pu faire, jusqu'au moment où il est devenu impossible d'écrire des données. J'ai donc lancé un reboot et je suis maintenant sans nouvelles du serveur :/
En attendant de pouvoir accéder au serveur j'ai mis en place des machines virtuelles de backup. Elles tournent sous VMware (sur mon laptop) ce qui m'offre une plus grande souplesse dans le choix des OS. (Voir article suivant)