Greboca  

Suport technique et veille technologique

Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.

C’est alors la barrière de la prise en main qui fait peur, et pourtant...

Les logiciels libres

L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.

Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.

Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.

Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.

DLFP - Dépêches  -  À la découverte de FreeBSD

 -  Août 2020 - 

Une petite dépêche collaborative et complétement subjective, pour présenter de façon concrète les aspects les plus « importants » de ce système d’exploitation et ainsi susciter des vocations à l’essayer et l’adopter.

FreeBSD est un système d’exploitation de type UNIX fonctionnant sur des architectures Intel, PowerPC, ARM et encore pour un temps SPARC64. Il comprend tout ce qu’il faut pour compiler, installer, configurer et démarrer un système sachant faire du réseau, ainsi que l’infrastructure pour installer des logiciels tiers.

« We came for the licence, we stay for the efficiency » [Netflix]

Sommaire

Pour qui ?

FreeBSD n’est pas seulement un système d’exploitation exotique pour les curieux, les sysadmins, les fans de Slackware, les allergiques à systemd, pour ceux qui ont envie de retrouver ce côté « roots » de leurs premières années sous Linux ou de laisser pousser leurs poils. C’est un système d’exploitation inspiré d’Unix, sobre, d’une grande stabilité dans le temps et disposant d’une licence uniforme et permissive.

Pour quels usages ?

FreeBSD est historiquement destiné aux serveurs, et même s’il est simple d’installer un environnement de bureau, il existe également des variantes proposant une distribution complète axée sur l’utilisation en tant que bureau.

Traditionnellement, les grands usages sont le stockage et le réseau, mais aussi dans l’embarqué. FreeBSD s’installe sur du matériel dédié ou dans des machines virtuelles sur à peu près tous les hyperviseurs du marché (il fonctionne aussi sous VMWare mais les VMWare Tools ne seront pas vu comme « green » par vSphere), également disponible en modèle d’installation chez les fournisseurs de « cloud » les plus courants.
Il offre une excellente alternative à GNU/Linux lorsqu’on a besoin d’une licence plus libre ou simplement de mitiger les risques avec une certaine diversité.

Mais qui contribue au projet et se sert de FreeBSD ?

Une part importante du code provient d’autres projets libres. Des dizaines de milliers de personnes à travers le monde se servent de FreeBSD quotidiennement pour héberger des services ou même comme système d’exploitation de bureau. Parmi les grands utilisateurs, on citera Netflix, Yandex et Mail.ru, mais également la majorité des constructeurs de baies de stockage (NetApp et EMC), les équipements Juniper ou Stormshield, la PS4 de Sony, la Nintendo Switch, les serveurs de cache de Netflix (ces derniers ont apporté d’énormes contributions sur la pile réseau)…

Une fondation s’occupe de financer la vie du projet et un certain nombre de développements. Le reste du code provient soit de contributions issues d’entreprises (Intel, Dell EMC, NetApp, DARPA, Netflix, Gandi, IxSystems et Apple en son temps), de projets universitaires ou encore de contributeurs bénévoles.

Les contributions ne se font pas seulement en lignes de code mais sont également pécuniaires, les trois plus gros sponsors de 2020 sont ARM, NGINX et Netflix.

Comment contribuer ?

Contribuer à la documentation est par exemple un bon point d’entrée dans un projet, soit en effectuant des traductions soit en affinant la version dans la langue de votre choix. Une aide détaillée, ici en anglais, est fournie afin de produire la qualité requise pour la documentation FreeBSD.

Vous pouvez également devenir le mainteneur d’un paquet de votre choix.

Les points subjectivement positifs

  • la licence BSD très libérale ;
  • la documentation, l’un des gros points forts du projet ;
  • la communauté compétente et disponible :-) ;
  • la simplicité d’administration, sous FreeBSD tout est bien rangé aux mêmes endroits et finalement tout est très simple à administrer ;
  • l’hyper-stabilité (en usage serveur) ;
  • ce côté « la prod avant le hype » : il s’agit, je pense, du point qui m’attire le plus dans ce système d’exploitation ; il y a cette sensation que les choses ne seront pas « cassées » demain par un changement dans le fonctionnement du système, la possibilité de mettre en place ses services configurés aux petits oignons, la création d’une politique de sauvegardes, quelques mises à jour de temps en temps et au revoir, à dans dix ans ;
  • les performances réseau à la pointe ;
  • la consommation des ressources [sobriété] ;
  • Dtrace / Flamegraph ;
  • le cloisonnement par jails ;
  • le mode de gestion du projet en « cathédrale » (?!) ;
  • la cohérence globale du système ;
  • les sauvegardes super simples : rc.conf, pf.conf (si vous utilisez PF comme pare‑feu), vos jails, votre liste de paquets, vos données et vous avez un environnement à l’épreuve des balles.

Les points subjectivement négatifs

  • la compatibilité du matériel moderne (plus sur les postes personnels) ;
  • les outils de visioconférence modernes pas vraiment pris en charge (genre Zoom) ;
  • hum, il est où Docker / Podman ?
  • le mode de gestion du projet en « cathédrale » ;
  • tout de même moins avancé que GNU/Linux en usage bureautique, KDE est réservé à ceux qui veulent utiliser la liste de discussion, très active d’ailleurs ; cela dit, pour qui veut un environnement de bureau léger, Xfce par exemple, reste extrêmement stable et totalement utilisable ; pour les plus sobres d’entre vous, la plupart des gestionnaires de fenêtres « pavants » existent également ;
  • beaucoup de « wrappers » jail en fonction du système de fichiers utilisé, pas du tout indispensables au demeurant ;
  • pas sûr que ça soit spécialement un système d’exploitation pour les joueurs non plus ;
  • la syntaxe de l’outil de rotation des journaux newsyslog un peu plus alambiquée que sous GNU/Linux, quand même.

L’installation

Vous avez déjà installé une Debian ? Vous saurez donc installer FreeBSD.

Plus sérieusement, dès les premières étapes à l’installation, le système annonce la couleur. L’assistant d’installation (BSDinstall) fait dans le strict minimum et, fait surprenant, vous ne démarrez pas avec le shell Bash par défaut. Mais avec /bin/sh, /bin/csh ou /bin/tcsh. Cela dit, vous pouvez bien évidemment installer bash, zsh ou le shell de votre choix avec pkg.

À la fin de l’installation, FreeBSD vous proposera diverses options de « durcissement ». Si vous n’avez pas de contraintes particulières, activez‑les toutes !

FreeBSD vous propose, nativement et par défaut, le choix entre deux systèmes de fichiers : ZFS ou UFS. À titre personnel, hormis pour un usage pur NAS, je n’utilise pas ZFS qui, je trouve, ralentit considérablement les accès au disque sur les configurations avec un seul disque même sur SSD. De plus, même si de nombreux efforts ont été réalisés avec les versions, la consommation mémoire reste nettement supérieure à celle d’UFS.

Une fois l’installation terminée, je vous invite à regarder le retour de la commande free ou l’usage disque d’un df -h qui vous prouveront par leur consommation de ressources ridicule que vous partez sur une bonne base.

Les pare‑feux

FreeBSD possède trois pare‑feux. Certains pensent que c’est trop, mais FreeBSD n’aime pas casser la compatibilité et beaucoup de personnes les utilisent encore. Il existe :

  • le vénérable pf(4) d’OpenBSD ;
  • le plus minimaliste IPFW ;
  • et le plus ancien IPFILTER.

Par exemple avec pf (Packet Filter étant le seul que je connais, j’aurais du mal à vous parler des autres), une fois encore sous FreeBSD la configuration du pare‑feu se définit autour d’un fichier (ici /etc/pf.conf).

Packet Filter mériterait à lui seul un article complet, cependant voici ce que l’on peut retenir sa syntaxe est très claire :

  • variables : cela vous permet d’affecter des variables à vos ports déclarées dans votre fichier de configuration ;
  • un système de table : très pratique, vous pouvez charger dynamiquement des tableaux d’adresses IP et les comparer par rapport à différentes règles, ajouter supprimer une adresse IP dans cette table selon des conditions (attaque en force brute, etc.) ;
  • redirection avant règles de filtrage ;
  • filtrage et traduction d’adresse réseau (NAT) ;
  • sait gérer de l’IPv4 et de l’IPv6 dans la même configuration.

PF propose une adhérence forte avec tcpdump qui vous permettra de véritablement jouer l’œil de Moscou sur votre machine. Il est en effet possible de déclarer une interface virtuelle ne pouvant être lue que par tcpdump vous permettant d’analyser tout ce qui entre ou sort de votre machine (ou qui tente de), les administrateurs réseau adoreront.

Petite remarque côté réseau : sous FreeBSD, la commande netstat -avecpleindoptions existe mais une alternative se présente, sockstat -l4, et je la trouve plus simple à retenir pour avoir quelque chose de lisible.

Une autre commande dans la lignée des outils en [..]top existe, il s’agit de pftop, qui vous donne en temps réel l’activité de votre pare‑feu.

/etc/rc.conf et la gestion des services

Fichier « angulaire » du système d’exploitation, ce dernier vous permet de configurer la quasi‑totalité de votre système. Réseau, nom d’hôte, service au démarrage…

Exemple de contenu d’un fichier rc.conf :

hostname="MyBSD"
keymap="fr.acc.kbd"

# Config réseau re0 est ici l’eth0 de Linux (en fait le nom diverge selon le modèle de votre contrôleur réseau)
ifconfig_re0="inet 192.168.0.50 netmask 255.255.255.0"
defaultrouter="192.168.0.100"

sshd_enable="YES"

ntpdate_enable="YES"

# Mode Gateway enable si l’on veut avoir un sous-réseau de jails par exemple et NATer
gateway_enable="YES"

# Création d’une interface virtuelle pour les jails
cloned_interfaces="lo1"

# Notez la façon dont sont déclarées les adresses IP virtuelles, ces IP seront attribuées aux jails
# Ces dernières bénéficieront de plus de la protection du pare-feu.
ipv4_addrs_lo1="172.16.0.1-8/24"

pf_enable="YES"
iocage_enable="YES"

L’un des gros avantages de la configuration par un fichier unique est qu’il suffit de sauvegarder ce fichier pour sauvegarder votre configuration. Il vous suffira donc de déplacer ce fichier vers une installation toute neuve pour retrouver votre machine (c’est quand même loin d’être suffisant il faut quand même s’assurer que l’interface réseau est la même, installer les paquets, etc.). Ce fichier, peut également être fragmenté dans /etc/rc.conf.d/, ce qui facilite l’automatisation des configurations et leur portabilité en fonction des besoins, par l’atomisation de celles‑ci.

La commande sysrc

Il y a deux façons d’éditer ce fichier, soit vim (ou votre éditeur de fichier favori) soit en utilisant la commande sysrc. Cette dernière se révélera plus pratique dans le cas d’usage, par exemple, d’un outil de déploiement automatique de type Ansible ou en utilisant un script.

Pour avoir une synthèse du contenu du fichier rc.conf :

sysrc -a
clear_tmp_enable: YES
cloned_interfaces: lo1
defaultrouter: 192.168.0.100
dumpdev: NO
gateway_enable: YES
hostname: frontal
ifconfig_re0: inet 192.168.0.50 netmask 255.255.255.0
iocage_enable: YES

Je souhaite changer mon nom d’hôte :

# sysrc hostname=MonBSD
hostname: MyBSD -> MonBSD

La commande service, quant à elle, vous permet de gérer l’état d’un service.

Avoir la liste des services qui tournent sur votre machine se fait par exemple avec la commande service -e :

/etc/rc.d/hostid
/etc/rc.d/cleanvar
/etc/rc.d/devd
/etc/rc.d/pf
[…]
/etc/rc.d/ntpdate
/etc/rc.d/nfsclient

Et pour redémarrer un service (ici sshd) :

service sshd restart

Les jails et leurs différents wrappers

Les jails sont en quelque sorte du chroot sous stéroïde, puisqu’il s’agit d’un espace de système de fichiers cloisonné bénéficiant d’une adresse IP, virtuelle, ou « NATée » à l’intérieur d’un sous‑réseau propre à l’hôte qui héberge. Proposant en plus diverses options avancées de cloisonnement processeur et mémoire, et même de quotas d’espace disque avec ZFS.

À l’intérieur d’une jail, il est possible de réinstaller un système complet en allant jusqu’à faire tourner des jails à l’intérieur d’une jail et également des pare‑feux. Ou, à l’opposé, de limiter énormément de choses allant du ping (désactivé par défaut) à un montage de disque ou un partage NFS externe.

Il existe beaucoup de wrappers pour les jails (Qjail, eZjail, iocage…) et pour la plupart très simples, s’agissant de scripts shell, peu de code et très faciles à maintenir.

Cela dit, pour qui veut réellement comprendre le mécanisme des jails en profondeur, il est tout à fait possible d’utiliser les jails sans aucun wrapper.

Il y a globalement deux écoles selon le système de fichiers que vous utilisez (UFS ou ZFS). Votre wrapper devra prendre en compte l’adhérence à ZFS pour une prise en charge des fonctionnalités de ce dernier.

iocage semble devenir le standard de fait avec ZFS (car porté et choisi par FreeNAS). Cependant, ce dernier n’est pas exempt de quelques bogues mineurs (lui n’est pas un script sh…), il bénéficie toutefois grâce à FreeNAS de beaucoup de cas d’usage et son projet sur GitHub est très actif.

Pour qui veut du parfaitement stable, le combo UFS + qjail fait des merveilles : rapide, fiable, sauvegarde et restauration de façon ultra véloce sur un SSD. Qjail est d’ailleurs un wrapper tellement fiable qu’il n’a plus reçu de mise à jour depuis 2017… Courriel envoyé au développeur pour avoir confirmation : « Of course it’s maintained, but there is no bug! »

Keep It Simple!

Il existe également le projet CBSD : un gestionnaire qui prend en charge tous les systèmes de fichiers et gérant tout ce que FreeBSD a à proposer en termes de virtualisation. Il est évidemment possible de réaliser de la virtualisation de type KVM avec Bhyve, je dois avouer que je n’ai jamais eu à me servir de cet outil jusqu’ici.

Le système de paquets pkg

https://www.freshports.org/

Premier point intéressant, pkg ne gère que les paquets, en aucun cas il ne s’occupe de mettre à jour le système. [C’est aussi quelque chose qui risque de changer, car il y a beaucoup de discussions à ce sujet pour que base puisse être un paquet].

Actuellement, c’est une autre mécanique qui s’occupe de cela freebsd-update. Par conséquent, pkg update ne mettra à jour que vos logiciels tiers et pas le système d’exploitation, contrairement par exemple à une Debian où apt met à jour à la fois le système et les logiciels.

pkg, apparu sous FreeBSD 9.1, est désormais le logiciel de gestion de paquets officiel de FreeBSD. Les dépôts officiels proposent désormais près de 30 000 paquets compilés pour FreeBSD.

Les paquets sont très à jour, il n’y a pas de système de « gel » par branche de version, vous êtes en simili publication en continu (rolling release) sur les versions de production de chaque logiciel. Il faut cependant que le logiciel soit empaqueté par le mainteneur.

Vous y trouverez par exemple à ce jour et peu importe la version de FreeBSD que vous utilisez :

  • php7[1-4] ;
  • nginx-1.18.1 ;
  • gitea-1.10.4 ;
  • mariadb-10-[1-4];
  • bash-5.0.16 ;
  • openssl-1.1.1d ;
  • python37-3.7.6 ;
  • zsh-5.7.1 ;
  • vim-console-8.1.2372.

N. B. — Les versions auront forcément bougé durant la rédaction, il faut retenir que vous aurez les dernières versions stables, les mainteneurs sont très réactifs.

FreeBSD est un système d’exploitation qui offre une sensation de cohérence dans la gestion des paquets. De ce fait, une fois installé, la configuration de vos services (Apache, PHP, Nginx, MariaDB…) se retrouvera à chaque fois dans le même répertoire /usr/local/etc.

Le cas ZFS

Le passage récent d’OpenZFS vers le format ZoLdéchaîné les passions dans la communauté. Certains membres ont eu peur de voir apparaître des bogues précédemment corrigés sur OpenZFS, d’autres la crainte de n’être plus que des suiveurs devant se coller au standard imposé par la communauté Linux. Toutefois, cette fusion est claire : elle vise à plus de cohérence globale dans le projet et une meilleure interopérabilité. De plus, les développeurs sont formels : « aucune régression ne saura être acceptée ».

UFS n’est pas en reste : stable, performant, issu d’un développement très long, il gère très bien les périphériques modernes comme les SSD et reste un système de fichiers de choix pour qui veut un système véloce et fiable. Il me semble que dorénavant UFS propose également un système de quota et des instantanés façon LVM.

Votre seule sécurité reste de toute façon la même depuis les débuts de l’informatique : les sauvegardes.

Ce qu’il faut retenir

FreeBSD est un système d’exploitation simple d’utilisation et d’administration.

La politique de développement se veut peut‑être plus lente que dans une distribution GNU/Linux, mais les choix réalisés le sont dans une optique de long terme. Mais en complément les paquets tiers de tous les logiciels proposés sont particulièrement à jour. En usage serveur, il sera un allié de choix vous offrant une stabilité technologique et vous permettant de mettre à disposition des services de façon fiable pour de longues années.

Par exemple, j’aime à troller mon entreprise qui développe un outil empaquetant une Red Hat 7 embarquant des conteneurs Docker. En effet, la migration vers Red Hat 8 est loin d’être simple, puisqu’il faut complètement réempaqueter l’intégralité des applicatifs avec Podman (décidément, Docker que l’on nous vendait comme l’outil prodige il y a quelques années n’aura pas été adopté par toutes les distributions très longtemps par défaut).

Sous FreeBSD, il aurait fallu migrer ses jails et/ou passer une commande de mise à jour. ;)

Si ce genre de basculement technologique toutes les deux versions vous irrite, alors FreeBSD est définitivement fait pour vous.

La « complexité » d’implémentation arrivera cependant lorsque vous souhaiterez mettre en place une architecture basée sur différentes jails + votre pare‑feu visant à cloisonner différents services. Toutefois, cette relative complexité est liée aux problématiques d’architecture ainsi qu’à la gestion du réseau, pas intrinsèquement aux outils.

FreeBSD propose évidemment des fonctions avancées de grappe de serveurs comme le CARP (mécanisme d’adresse IP virtuelle partagée par plusieurs machines).

Les distributions clef en main

Pour le bureau :

  • FuryBSD ;
  • GhostBSD ;
  • MidnightBSD ;
  • TrueOS (anciennement PC-BSD, le développement a été tout récemment arrêté et il est conseillé de voir du côté des alternatives comme FuryBSD, NomadBSD, GhostBSD ou MidnightBSD).

Autonome (live) :

Pour le stockage :

Routeur :

Embarqué, minimaliste :

Commentaires : voir le flux Atom ouvrir dans le navigateur

par Kwiknclean, tankey, Joris Dedieu, palm123, Benoît Sibaud, zurvan, theojouedubanjo, olivierweb, Davy Defaud, David Marec, Lawless, David Demelier, Adrien Dorsaz, Pierre Jarillon, Ysabeau, bobble bubble

DLFP - Dépêches

LinuxFr.org

Entretien avec GValiente à propos de Butano

 -  16 avril - 

GValiente développe un SDK pour créer des jeux pour la console Game Boy Advance : Butano.Cet entretien revient sur son parcours et les raisons (...)


Nouveautés d'avril 2024 de la communauté Scenari

 -  11 avril - 

Scenari est un ensemble de logiciels open source dédiés à la production collaborative, publication et diffusion de documents multi-support. Vous (...)


Annuaire de projets libres (mais pas de logiciels)

 -  9 avril - 

Les communs sont une source énorme de partage !S’il est plutôt facile dans le monde francophone de trouver des ressources logicielles (Merci (...)


Les enchères en temps réel, un danger pour la vie privée mais aussi pour la sécurité européenne

 -  7 avril - 

Les enchères en temps réel, ou Real-Time Bidding (RTB), sont une technologie publicitaire omniprésente sur les sites web et applications mobiles (...)


XZ et liblzma: Faille de sécurité volontairement introduite depuis au moins deux mois

 -  31 mars - 

Andres Freund, un développeur Postgres, s’est rendu compte dans les derniers jours que xz et liblzma ont été corrompus par l’un des mainteneurs du (...)