====== FreeBSD, le système BSD le plus Populaire et Polyvalent ====== Le **logo** de **FreeBSD** : {{ :wiki:systemes_d_exploitation:bsd_unix:logo-freebsd.png?nolink&400 |}} ===== Présentation de FreeBSD ===== **FreeBSD** est une **distribution BSD UNIX** sous **Licence FreeBSD** (**Licence BSD permissive**) qui est basée sur **4.4BSD Lite Release 2** du **CSRG** de l' **Université de Californie à Berkeley** (**//UCB//**) également appelé **4.4BSD-Lite2**, la première version de **FreeBSD**, **FreeBSD 1.0-RELEASE**, publiée le 1 novembre 1993, était à l'origine basée sur **386BSD 0.1** de **Lynne et William Jolitz** puis sur **4.4BSD Lite Release 1** ou plus simplement **4.4BSD-Lite** de l' **UCB** à partir de **FreeBSD 2.0-RELEASE** publiée le 22 novembre 1994 et **FreeBSD 3.0-RELEASE**, publiée le 16 octobre 1998 est la première version à être issue de **4.4BSD Lite Release 2**. L' actuelle et dernière version de ''production'' de **FreeBSD** est **FreeBSD 14.2-RELEASE** publiée le 3 décembre 2024 et l'ancienne version de ''production'' toujours ''maintenue'' et ''mise à jour'' est **FreeBSD 13.4-RELEASE** publiée le 17 septembre 2024. À l'origine **FreeBSD** a été crée pour fonctionner uniquement sur l'**architecture processeur Intel i386** car c'était l'**architecture** la plus utilisée et populaire à cette époque mais au fur et à mesure que les versions de **FreeBSD** se sont succédées, **FreeBSD** a été ''porté'' sur de plus en plus d' **architectures processeurs** différentes, à commencer par l' **architecture Intel i386**, **Intel x86-64**, **ARM** , **PowerPC** et **RISC-V**, certaines ont été retirées comme l' **architecture processeur Alpha** de **DEC** ou alors l' **Intel IA-64** (**processeur Itanium** et **Itanium 2**), car les **ordinateurs** basés sur ses **processeurs** ne sont plus ''produits'' et sont jugé comme ''obsolètes'' pour **FreeBSD** et cet **OS** cherche avant tout à être ''compatible'', avec les **processeurs** les plus couramment utilisés. **FreeBSD** est sans aucun doute la **distribution BSD** la plus utilisée et est également le **BSD** que l'on peut utiliser dans le plus de ''domaines'' différents et contrairement à se que l'on peut penser, **FreeBSD** n'est pas seulement un **OS** pour les **serveurs informatiques** mais peut très bien être utilisé pour se creer une **station de travail** ''professionnelle'' ou bien même pour la **bureautique**, **multimedia** mais **FreeBSD** étant un **système d'exploitation** ayant été prévu à l'origine plutôt pour les **serveurs**, il n'y a pas d' **interface graphique** installée par défaut donc il faut avoir un minimum de ''connaissance'' pour configurer son **OS** à son image après ''installation''. À la différence de **GNU/Linux** les **distributions BSD** sont des **OS** complets, qui comporte à la fois leurs propres **utilitaires Unix** et un **noyau monolithique modulaire** (pour **FreeBSD** et [[wiki:systemes_d_exploitation:bsd_unix:netbsd|NetBSD]]) et les **daemons** (**//services//** de base), comme **FTP**, **NFS**, **SSH**, **NTP**,...etc, en clair tous les **composants** d'un **système BSD** sont crées par la même ''entité'', en l'occurence les **membres** du ''développement'' de **FreeBSD**. De plus le nombre de **logiciels** disponibles dans les **dépôts** de **FreeBSD** sont relativement conséquents, la plupart des **logiciels** disponibles sous **GNU/Linux** le sont aussi sous **FreeBSD**, mis à part les **programmes** qui sont spécifiques à **GNU/Linux**. Les **sites internet** ''officiels'' de **FreeBSD** : * Le [[https://www.freebsd.org/|site officiel]] de **FreeBSD**. * La [[https://docs.freebsd.org/en/books/handbook/|documentation officiel]] en anglais de **FreeBSD** et celle en [[https://docs.freebsd.org/fr/books/handbook/|français]]. La **documentation** française est moins à jour que l'anglaise. * La [[https://docs.freebsd.org/en/books/faq/|FAQ]] **FreeBSD** et en [[https://docs.freebsd.org/fr/books/faq/|français]] * Le [[https://forums.freebsd.org/|forum officiel]] **FreeBSD** Si **FreeBSD** est acutellement le **système d'exploitation** de type **BSD** le plus utilisé et le plus ''populaire'' c'est en premier lieu parce que l' ''entreprise'' **Walnut Creek CDROM Inc** qui fournissait des **CDROMs** sur les **logiciels libres** (**open source**) à distribuée **FreeBSD** sur **CD** et **DVD**, là où **Internet** était encore peu utilisé, ce qui a propulsé **FreeBSD** et lui a permit de se faire connaître. **FreeBSD** c'est également focalisé sur l'**architecture processeur** **Intel i386** qui était l'**architecture** des **PC** (**//Ordinateur Personnel//** ou en anglais **//Personal Computer//**) qui était et sont les **ordinateurs** les plus ''populaires'' auprès du grand publique. Les **systèmes BSD** sont certainement les plus ''stables'', ''robustes'', ''sécurisés'', ils sont **développés** depuis plus de ''40 ans'', ''46 ans'' pour être précis et ça, sa fait toute la différence par rapport à d'autres **OS** beaucoup moins ''matures''. Raison pour laquelle ils sont utilisés sur certains des plus importants **data center** (salle contenant une multitude de **serveurs informatiques** en **rack**). [[https://fr.wikipedia.org/wiki/Centre_de_donn%C3%A9es#/media/Fichier:Cern_datacenter.jpg|Photo]] d'une salle de **data center** (**centre de données** en français). ==== Sites Officiels FreeBSD ==== * [[https://www.freebsd.org/|Le Site Officiel de FreeBSD]]. * [[https://wiki.freebsd.org/|Le Wiki Officiel]]. * [[https://forums.freebsd.org/|Le Forum Officiel]]. * [[https://docs.freebsd.org/en/|La Documentation FreeBSD]] et [[https://docs.freebsd.org/fr/|français]] * [[https://docs.freebsd.org/en/books/handbook/|Manuel de Référence Officiel]] et en [[https://docs.freebsd.org/fr/books/handbook/|français]]. * [[https://man.freebsd.org/cgi/man.cgi|Les pages de manuel]]. * [[https://www.freebsd.org/where/|Téléchargement de FreeBSD]]. * Et enfin [[https://freebsdfoundation.org/|La Fondation FreeBSD]]. ===== Les différentes Branches de FreeBSD ===== * La ''branche'' **RELEASE** (**RELENG**) : est la version à privilégier pour la ''production'', les **logiciels** qui la compose sont figés, ils ne reçoivent que des **correctifs de séciurité**, c'est donc la **branche** la plus ''stable'' de **FreeBSD** et celle qui est recommandée par le **projet FreeBSD**. Elle est idéale pour les **serveurs informatiques** et pour les personnes souhaitants un **OS** ''solide'' comme un roc. * La ''branche'' **STABLE** : cette **branche** sert de base à la future version ''majeure'' de **FreeBSD-RELEASE**, c'est une bonne option pour avoir des **logiciels** plus récents que la **branche** **RELEASE** et elle est relativement ''stable''. Donc pour un **poste de travail** c'est une bonne candidate. * La ''branche'' **CURRENT** : c'est une **branche** qui est purement ''expérimentale'', qui sert au ''développement'' de la future **RELEASE**, elle est en constante évolution, les **logiciels** qui y sont inclus change constament de version, elle est donc imprévisible mais fournis les denières **technologies** de **FreeBSD**. Cette **branche** n'est évidement pas conseillée en ''production'', elle est plutôt déstinée aux **développeurs**, **testeurs** et **utilisateurs** avancés. ===== Spécifications et caractéristiques de FreeBSD ===== ==== FreeBSD un Système d'Exploitation Complet ==== Tout d'abord, comme mentionné précédement, tous les **systèmes d'exploitation** de type **BSD**, sont des **OS** ''complets'', qui comportent les **utilitaires Unix** en **ligne de commande**, le **noyau BSD** spécifique à chaque **distributions BSD**, les **daemons** (**services** en français) et tout ce que nécessite un **système d'exploitation** complet après installation et pour une utilisation optimale et **FreeBSD** ne déroge pas à cette règle. **FreeBSD** utilise par défaut les **shells Unix**, **tcsh** pour un **utilisateur ordinaire** (**non-privilégié**) et **sh** (**ash**) pour le **compte** de **root** (**superutilisateur**), il est à noter que **FreeBSD** dispose d'un **compte** du nom de **toor**, qui a les même privilèges que **root** mais sur lequel on peut associer un **shell Unix** des **dépôts tiers** comme le populaire **bash**. **FreeBSD** dispose d'un **noyau** de ''type'' **monolithique modulaire**, c'est à dire qu'il est possible d'installer des **modules** (équivalent des **pilotes** sous **Windows**) externes qui ne sont pas intégrés au **noyau** par défaut, celà permet d'avoir un **noyau monolithique** qui prend moins de place sur la **mémoire de masse** et qui donne la possiblité de prendre en ''charge'' du **matériel informatique** supplémentaire. Tout ce qui compose **FreeBSD** (**utilitaires Unix**, **noyau FreeBSD**, **daemons de base**, **pilotes de périphériques** et plus encore) est ''développé'' en interne par les ''membres'' du **projet FreeBSD** spécialisés dans le ''développement'' de cet **OS**. Par contre, si vous souhaitez faire de **FreeBSD** votre **poste de travail**, il vous faut installer l'**environnement de bureau** de votre choix par vos propres moyens car **FreeBSD** n'installe pas d'**interface graphique** par défaut après installation et c'est un choix délibéré pour vous laissez le choix de créer votre **système d'exploitation** selon vos besoins (**serveur** ou **poste bureautique**) mais surtout pour une histoire de **licence**, car **FreeBSD** a fait de choix d'inclure un maximum de **logiciels** sous **licence BSD**, mais pour les plus pressés d'entre vous, sachez qu'il existe une **distribution BSD** basée sur **FreeBSD** du nom de [[wiki:systemes_d_exploitation:bsd_unix:ghostbsd|GhostBSD]] qui vous permet au choix, d'installer l'**environnement de bureau** appelé **MATE** (**fork** de **GNOME2**) ou **Xfce** qui est non pas géré par le **projet** ''officiel'' de **GhostBSD** comme **MATE** mais par sa **communauté**. Si par mégarde pour avez installés **FreeBSD** avec la **disposition clavier** **QWERTY** et souhaitez passer votre **clavier** en **AZERTY**, exécutez cette commande : ''kbdcontrol -l fr.iso.acc'' (ceci n'est que ''temporaire''), pour passer votre **clavier** en **AZERTY** de manière ''définitive'' il faut ajouter cette **disposition** au **fichier** ''/etc/rc.conf'' en ajoutant : ''keymap="fr.acc.kbd"'' à ''/etc/rc.conf''. ==== Le Noyau FreeBSD ==== Le **noyau** (**kernel** en anglais) de **FreeBSD** est de type **monolithique modulaire** tout comme **Linux**. Pour gérer les **modules** du **noyau**, il y a ''trois'' **commandes Unix** qui sont : **kldload** pour charger les **modules**, **kldunload** pour les décharger et **kldstat** pour savoir quels **modules** du **noyau** sont chargés. Dans le **FHS** de **FreeBSD** les **modules** du **noyau** installés par défaut se trouvent dans ''/boot/kernel'' et la plupart des **modules** externes, dans ''/boot/modules''. Le **noyau** en lui même est le **fichier** ''/boot/kernel/kernel''. **FreeBSD** intègre **KMS** (**//Kernel-based Mode-Setting//**) qui est un **pilote graphique** qui se charge de la **gestion** des modes d'**affichage graphique**. **FreeBSD** et ses **dérivés** sont les seuls **systèmes BSD** à supporter le **pilote propriétaire** **NVIDIA** via les **logiciels tiers**, pour les **cartes graphiques** produitent par **NVIDIA** !!! ==== Installateur de FreeBSD ==== L'**installateur** de **FreeBSD** se nomme **bsdinstall**, il a été adopté dans **FreeBSD 9.0** le 12 janvier 2012. L'**installateur** précédent était **sysinstall** apparu dans **FreeBSD 2.0** le 22 novembre 1994 et en fonction jusqu'à **FreeBSD 8.4** sorti le 1er août 2015. L'**installateur** **bsdinstall** est nettement plus conviviale et cohérent que **sysinstall** et il permet, même après installation l'**administration** de son **FreeBSD** est ça permet par certains aspects de simplifier certaine **tâche** qui serait plus complexe pour un **utilisateur** non initié aux **système** de type **BSD**. Parmi ses **tâches**, ont peut énumérer : la possibilité de créer une **Jail**, de configurer le **clavier**, **configuration** du **non d'hôte** (**hostname**) et du **réseau**, la **partition** des **disques durs**, l'ajout d'**utilisateur**,... ==== Système d’initialisation de FreeBSD ==== Le **système d’initialisation** de **FreeBSD** est **rc**, très ''stable'', ''simplissime'', ''éprouvé'' et bien moins complexe à gérer que **systemd** de **GNU/Linux**. Pour résumer, le **système d’initialisation rc** lance le **programme init** (''1er'' **processus** du **système**), qui lit le **script** ''/etc/rc'' (qui est le ''coeur'' du **système d’initialisation**) qui éxecute les **daemons** (**services**) indiqués dans le **fichier** ''/etc/rc.conf'', les **scripts d’initialisation** de chaque **daemon** se trouvent dans ''/etc/rc.d'' pour les **scripts** internes et dans ''/usr/local/etc/rc.d'' pour les **scripts** externes (ne faisant à l'origine pas partie de **FreeBSD**). ==== Compilateur Logiciel sous FreeBSD ==== **FreeBSD** est passé du **compilateur GCC** (**//GNU Compiler Collection//**) sous **licence GNU GPL** à ''droit d'auteur'' **copyleft** au **compilateur Clang** et ses **bibliothèques LLVM** qui sont sous **licence libre permissive** et de se fait **FreeBSD** n'est plus contraint à la ''notion'' de **copyleft**. Désormais tous les **logiciels** par défaut de **FreeBSD** sont **compilés** avec l'association **Clang/LLVM** ainsi que les **logiciels** ''tiers'' dans le **catalogue des logiciels portés**. Le principal but de **Clang/LLVM** est d'être une alternative ''viable'' à **GCC**. Derrière les ''composants'' de se **compilateur**, se trouvent les **entreprises** : **Apple**, **Microsoft**, **Google**, **ARM**, **Sony**, **Intel**, **AMD** et **Mozilla** (en ce qui concerne les **bibliothèques LLVM**). **Clang** prend en charge les **langages de programmation** **C**, **C++**, **Objective-C** et **Objective-C++**. Les **développeurs** de **Clang** affirment qu'il utilise moins de **mémoire vive** et est plus rapide que le **compilateur GCC**. **Clang** est également le **compilateur** par défaut de **macOS**. À noter que le **débogueur DTrace** provenant de **Sun Microsystems** pour le **projet** et **OS** **OpenSolaris** fait partie intégrante de **FreeBSD**. ==== Installation de Logiciels par Défaut ==== En ce qui concerne l'installation de **logiciels** de manière ''officielle'', il existe deux ''méthodologies'', soit vous utilisez le **catalogue des logiciels portés** qui se trouve dans ''/usr/ports'' et vous vous rendez dans le **répertoire** du **logiciel** souhaité qui comporte en autres des **fichiers Makefile** qui sont une suite d'**instructions** pour **compliler** le **logiciel** et ses possibles **dépendances** , cette pratique consiste à **compiler** les **logiciels** en questions et toutes leurs **dépendances** de manière automatisée. Le seul **utilitaire make** en **ligne de commande** permet d'effectuer le **processus** d'installation.\\ L'autre option qui est nettement plus ''rapide'' est d'opter pour les **logiciels pré-compilés** avec l'**utilitaire** en **ligne de commande** du nom de **pkg**, le **programme** complet s'appel **pkgng**, crée par **Baptiste Daroussin** apparu sous **FreeBSD 9.1**, qui est un **gestionnaire de paquets** en **ligne de commande** extrèment complet qui utilise les **dépôts** de **paquets** de son choix, il permet à la fois d'installer un **paquet logiciel** et ses **dépendances** mais aussi de rechercher des **logiciels** en fonction de différents ''critères'', de mettre à jour les **logiciels** installés, que ça soit par le biais des **logiciels pré-compilés** ou du **catalogue des logiciels portés**, enfin c'est un **gestionnaire de paquets** doté de très nombreuses ''fonctionnalités''. Il était de coutûme d'installer les **logiciels** par **compilation** sous les **distributions BSD** mais là, c'est de l'histoire ancienne. Il existe également une **interface graphique** pour **pkg** appelée **octopkg** mais malheureusement, elle n'utilise qu'un faible ''potentiel'' de cet **outil** extraordinaire qu'est **pkg**. Tous les **logiciels** installés soi même se logent dans le **répertoire** ''/usr/local''. Les **logiciels** provenant du **catalogue des logiciels portés** s'appellent des **ports** sous **FreeBSD** alors que les **ports** sont pour la ''plupart'' des **système Unix** des **architectures processeurs** pour les **OS** en question. ==== Organisation du Système de Fichiers ==== Le **FHS** (**//Filesystem Hierarchy Standard//**) est pleinement ''compatible'' **POSIX** et est bien mieux ''compartimenté'' que sous **GNU/Linux**, les **utilitaires utilisateur BSD fondamentaux** sont dans ''/bin'', les **utilitaires administrateur fondamentaux** sont dans ''/sbin'', les **utilitaires utilisateur courants, outils de programmation et applications** sont dans ''/usr/bin'' et les **utilitaires administrateur et daemons système** sont dans ''/usr/sbin'', les **utilitaires et daemons système exécutés par des programmes** sont dans ''/usr/libexec''. En ce qui concerne les **fichiers de configurations** interne à **FreeBSD**, ils se trouvent dans ''/etc'' et les **fichiers de configurations** externes, suite à l'installation de **logiciels** se situent dans ''/usr/local/etc''. Pour plus d'informations sur le l ''organisation'' du **système de fichiers FreeBSD**, exécuter la **commande** composé **man hier**. Sous **FreeBSD**, ''/home'' n'est qu'un **lien symbolique** vers le vrai **répertoire home** ''/usr/home'' donc sous **FreeBSD**, **home** ne se trouve pas à la **racine** ''/'' du **système** comme la ''plupart'' des **système Unix** mais dans ''/usr''. Le **répertoire home** est l'endroit où se trouve les **répertoires** de chaque **utilisateur**, par exemple ''/home/david'' pointe vers le **répertoire** ''/usr/home/david''. ==== Stockage sous FreeBSD ==== Au moment de l'installation de **FreeBSD** vous avez la possibilité d'opter pour deux **systèmes de fichiers** différents, le ''traditionnel'' **UFS** (**//Unix File System//**), précisément **UFS2** ou **ZFS** (**OpenZFS** pour **FreeBSD**) sous **licence CDDL**, le **système de fichiers** ayant le plus de ''fonctionnalités'', le mieux adapté au **partage de fichiers** en **réseau** et étant le plus à même d'acceillir des **disques durs** ou **SSD** de très grande ''capacité''. **ZFS** utilise une **structure de données** de type **B-tree**, il n'est d'ailleurs pas necessaire de **partitionner** son **périphérique de stockage** à l'avance. Le **système de fichiers** **ZFS** a de nombreuses ''fonctionnalités'' tel que : les **pools de stockage** qui comme **LVM** de **Linux** permettent de ''concaténer'' des **périphériques de stockage** (**disque dur**, **SSD**,...) à une **mémoire de masse** déjà existance, une **protection** contre les ''pannes'' de **disque dur**, **SSD** ; le **RAID logiciel** plus précisément **RAID-Z** qui propose les types de **RAID**: **RAID-Z1**, **RAID-Z2**, **RAID-Z3**, qui offrent une **redondance** similaire à **RAID 5** et **RAID 6** (**RAID** ''traditionnel'') ; les **snapshots** qui permettent des **copies instantanées** du **système de fichiers** à un instant donné, la création de **clones** ; la **compression des données** ; la **déduplication** qui élimine les **blocs de données** identiques ; la **vérification** de l'**intégrité des données** par le biais de **checksums** (**md5**,**sha512**,...) ; la **gestion des quotas** pour les **utilisateurs** et les **groupes** ; les **réservations** qui garantissent qu'il y aura toujours de l'espace libre sur un **pool** ; la ''gestion'' des **ACL** (**//Access Control List//**). En lieu et place du **gestionnaire de volumes logiques** de **Linux**, du nom de **LVM** (**//Logical Volume Management//**), **FreeBSD** intégre **Vinum**, qui est un **gestionnaire de volumes** et a des ''fonctionnalités'' de **RAID logiciel** (**RAID 0, 1, 5**). **FreeBSD** à son propre **gestionnaire de partition** du nom de **gpart**, qui est un **utilitaire** en **ligne de commande** relativement complet, qui fonctionne avec **GEOM**. C'est l'**utilitaire** principal pour ''partionner'' un **disque dur** ou **SSD** que l'on veut ajouter à son **ordinateur** sous **FreeBSD**. ==== Le Réseau sous FreeBSD ==== La mise en ''réseau'' de **FreeBSD** fait partie de ses grands atouts. La **pile TCP/IP** de **FreeBSD** se base sur celle de **4.4BSD** en ayant été énormément améliorée, en plus du **protocole IPv4**, elle prend en ''charge'' **IPv6**, le **protocole SCTP** (**//Stream Control Transmission Protocol//**),**IPsec** (**//Internet Protocol Security//**) qui est une **suite de protocoles** de **réseau** ''sécurisés'' qui sert en autres pour créer un **réseau VPN** (**//Virtual private network//**), les **réseaux** sans fil **Wi-Fi** et encore bien d'autres **protocoles réseaux**. **IPv6** et **IPsec** ont été à la base repris du **projet KAME**. La **pile TCP/IP** de **FreeBSD** est ''mature'', ''robuste'' et ''fiable'', utilisée par des **data center** (en français **centre de données**) de grande importance, un **data center** est une multitude de **serveurs informatiques** regroupés dans une ''salle sécurisée'' qui ''hébergent'' énormément de **données**. ==== Sécurité sous FreeBSD ==== **FreeBSD** est fournit par défaut de trois **pare-feu** (en anglais **firewall**) : **IPFW**, **PF** et **IPFilter**. Courte description des ses trois **pare-feu** : * **IPFW** (**//IpFirewall//**), sous **licence BSD** est un **pare-feu IP** à **états**, un **filtre de paquets** et un **outil de comptabilisation du trafic** qui a été crée et maintenu par la **team FreeBSD**, Il peut être utilisé comme un **module** du **noyau FreeBSD** ou incorporé dans le **noyau**, son **jeu de règles** est similaire à celle de nombreux autres **filtres de paquets**. * **PF** (**//Packet Filter//**), également sous **licence BSD** est un **filtre de paquets**, un **logiciel** central pour les **pare-feu** créée à l'origine par et pour **OpenBSD** (**système BSD** axé sur la **sécurité**) mais à depuis été **porté** sur **FreeBSD**, **NetBSD**, **DragonFly BSD**, **Debian GNU/kFreeBSD** (version de **Debian** alternative avec **noyau FreeBSD**), **Oracle Solaris** de l' ''entreprise'' **Oracle Corporation**, **QNX** de la ''société'' **BlackBerry** et est également le **pare-feu** par défaut de **macOS**, **iOS** et tous les autres **OS** d'**Apple**. La **syntaxe de filtrage** a des similitudes avec **IPFilter** mais est toutefois nettement améliorée et beaucoup plus ''cohérente'', **PF** a intégré la **traduction d'adresses réseau** (**//NAT//**) et la **qualité de service** (**//QoS//**) et étendu les ''fonctionnalités'' telles que **pfsync** et **CARP** pour le basculement et la ''redondance'', **authpf** pour l'**authentification de session** et **ftp-proxy** pour faciliter les ''régles'' du **pare-feu** pour le **protocole FTP**, une fonction de **journalisation** innovante est configurable par **règle** dans le **fichier** **pf.conf** et ses journaux sont émis via une **interface pseudo-réseau** appelée **pflog**, qui est le seul moyen de récupérer les **données** du **mode noyau** pour les **programmes** de **niveau utilisateur**, de plus les **journaux** peuvent être surveillés avec des **utilitaires standards** comme **tcpdump**,ou sauvegardés sur **disque** dans le **format binaire** de **tcpdump/pcap** en utilisant le **daemon pflogd**. **PF** supporte également le **SMP** (**//Symmetric Multiprocessing//**) et le **STO** (**//Stateful Tracking Options//**). Enfin, en mon sens **PF** est le **pare-feu** le plus ''abouti'', ayant plus de ''fonctionnalités'' et le plus ''compréhensible'' sur les **systèmes Unix**. * **IPFilter** et sa **commande ipf** est un **pare-feu logiciel** qui comporte tous les **services** de **pare-feu** et de **traduction d'adresses réseau** (**//NAT//**), il a été crée par **Darren Reed** et est ou a été disponible pour de nombreux **systèmes d'exploitation UNIX** ou de **Type Unix**, tel que **FreeBSD**, **NetBSD**, **Solaris**, **illumos** (**OpenIndiana**), **Linux**, **HP-UX**, enfin c'était le **pare-feu** de choix pour **Unix** avant l'arrivée de **PF** (**//Packet Filter//**) qui a largement remplacé celui-ci. **IPFilter** peut être installé en tant que **module** du **noyau FreeBSD** ou directement intégré au **noyau FreeBSD**. **Packet Filter** (**//PF//**) est le **pare-feu logiciel** par défaut de **pfSense** ([[https://pfsense.org/|Site Officiel]]) de l' ''entreprise'' [[https://www.netgate.com/|Netgate]] et son **fork** nommé **OPNsense** ([[https://opnsense.org/|site officiel]]), tous deux des **distributions BSD** dédiées aux **pare-feu** issu de **m0n0wall** basés sur **FreeBSD**. Pour la partie **matériels informatiques**, vous pouvez trouver des **routeurs** et **pare-feu** [[https://shop.netgate.com/|ici]] pour **pfSense** et [[https://shop.opnsense.com/|sur se site]] pour **OPNsense**. Sachez qu'il est tout à fait possible de se faire son propre **pare-feu matériel** avec **OPNsense**, il vous suffit de disposer d'un **ordinateur** à base de **processeur Intel** ou **AMD** récent, disposant de l'**architecture processeur AMD64** appelée aussi **Intel x86_64**, il vous suffit de télécharger **OPNsense** [[https://opnsense.org/download/|ici]] et d'installer l'**image** sélectionnée sur votre **ordinateur**. **FreeBSD** intègre également **OpenSSH**, une **implémentation** ''libre'' du **protocole SSH** (**//Secure Shell//**) qui est une suite d'**utilitaires réseau**, la **commande Unix ssh** (partie **client**) permet de se connectée à ''distance'' de manière ''sécurisée'' par le biais de la **cryptographie asymétrique** à un **système Unix** et désormais également à **Windows** sur un **serveur OpenSSH** (**commande sshd**). **OpenSSH** est un **logiciel client-serveur** pour le **protocole SSH** qui remplace en autres **Telnet** et **rlogin** et qui a été créée par le **projet OpenBSD**, la première version a été publiée 1er décembre 1995 et a été intégrée dans **FreeBSD 4.8-RELEASE**. **OpenSSH** est aujourd'hui utilisé par la plupart des **systèmes d'exploitation**, tels que les **distributions GNU/Linux**, toutes les **distributions BSD** (**macOS** d'**Apple** y compris), les **systèmes UNIX** ''commercials'' et les **distributions Illumos** ainsi que **Windows**, **Windows 10** étant la première version à l'avoir intégré. Le **protocole SSH** d'**OpenBSD**, **OpenSSH** mérite une page ''complète'' tellement il est riche et complet !!! Pour rappel, **OpenSSH**, le **logiciel** exploitant le **protocole SSH**, est le plus utilisé parmi les **OS** **Unix** et il est y compris disponible sur **Microsoft Windows**, à partir de **Windows 10**. ==== Couche de Compatibilité Binaire avec d'autres OS==== **FreeBSD** comporte une **compatibilité binaire** avec **Windows** pour les **pilotes** de **carte réseau** via **NDIS** (**//Network Driver Interface Specification//**) qui est une **interface de programmation d'application** que l'on appelle plus simplement **API** (**//Application Programming Interface//**) qui permet d'installer des **pilotes Windows** (sous **FreeBSD** les **pilotes** s'appellent des **modules**) sous **FreeBSD** pour les **cartes réseaux** n'étant pas reconnus par défaut sous le **noyau FreeBSD**. **FreeBSD** permet également d'installer des **logiciels** prévus pour **Windows** via le **projet** et **logiciel** du nom de **Wine**, se **logiciel** ne fait pas partie de la **distribution FreeBSD** par défaut mais est installable via les **logiciels tiers** en passant par les **logiciels pré-compilés** ou le **catalogue des logiciels portés**. **FreeBSD** a également une **compatibilité binaire** avec **Linux** qui n'est pas une **émulation** mais utilise les **appels systèmes** appelé **ABI** (**//Application Binary Interface//**) de **Linux**, cette ''compatibilté'' peut être activée par le biais d'un **module** du **noyau FreeBSD** qui se nomme **linux.ko** ou/et **linux64.ko** pour les **programmes** ''64 bits'', pour activer cette ''compatibilté'' au ''démarrage'' et de manière définitive, il suffit d'ajouter ''linux_enable="YES"'' au **fichier** ''/etc/rc.conf''. Les **exécutables** et **bibliothèques partagées** de **Linux** sont executés comme les **exécutables** et **bibliothèques partagées** de **FreeBSD** donc l'execution d'un **logiciel Linux** est quasiment identique à l'execution d'un **logiciel** sous **FreeBSD** en ce qui concerne les ''performances''. La **couche de compatibilité binaire Linux** fonctionne aussi bien pour les **programmes** ''32 bits'' et ''64 bits'' provenant de **GNU/Linux**. Le **FHS** (**//Filesystem Hierarchy Standard//**) de **Linux** se situe par défaut dans ''/compat/linux''. Par défaut vous pouvez installer via les **logiciels** ''tiers'' des **dépôts officiels** de **FreeBSD** les **distributions Linux** **CentOS 7** ou **Rocky Linux** qui est basée sur le **code source** de **Red Hat Enterprise Linux** (**//RHEL//**) et qui est pleinement ''compatible'' au niveau **binaire** avec la **RHEL**. Si vous n'êtes pas fan des **distributions Linux** basées sur **RHEL**, vous pouvez également installer une **distribution** basée sur **Debian** (ou autres) telle que **Ubuntu** à l' aide de l'**utilitaire** en **ligne de commande** du nom de **debootstrap** mais l'installation est légèrement plus complexe et ''manuelle''. La **compatibilité binaire** **Linux** permet de faire fonctionner la ''plupart'' des **logiciels** conçus pour **Linux**. ==== Virtualisation et Conteneurisation par Défaut sous FreeBSD ==== === Hyperviseur Bhyve développé par FreeBSD === **Bhyve** est un **hyperviseur** de ''type 2'', tout comme l'est **VirtualBox**, installé par défaut sous **FreeBSD**, il a été intégré à **FreeBSD** à partir de la version **FreeBSD 10.0-RELEASE**, il est relativement récent mais est très ''prometteur'' et est d'ores et déjà en mesure de **virtualiser**, divers **distributions GNU/Linux**, tel que : **Debian**, **Ubuntu**, **Fedora**, **Alpine Linux**..., du côté des **distributions Illumos** on peut citer : **OpenIndiana**, **SmartOS**, **OmniOS** et plus encore et bien évidemment la plupart des **distributions BSD** comme : **FreeBSD**, **NetBSD**, **OpenBSD** mais aussi **Windows** de **Microsoft**. La version initiale de **bhyve** a été créée en 2014 par les **développeurs** de **FreeBSD**. Pour le moment, il n'existe pas d'**interface graphique** pour **bhyve** mais il y a des **outils** en **ligne de commande** tels que : **iohyve**, **vm-bhyve** pour les plus courants permettant de gérer en intégralité l'**hyperviseur** spécifique à **FreeBSD**. Si vous n'êtes pas fan de la **ligne de commande**, vous pouvez vous orienter vers une **interface Web** ''légère'' du nom de **BVCP** disponible à cette [[https://bhyve.npulse.net/|adresse]]. Parmi les ''fonctionnalités'', **bhyve** prend en ''charge'' les installations **UEFI** (**//Unified Extensible Firmware Interface//**),les **interfaces émulées** de **KVM**, **VirtIO**, pour la prise en charge des **périphériques** tels que les **contrôleurs USB** avec la ''spécification'' **xHCI** (**//eXtensible Host Controller Interface//**), les **contrôleurs NVM Express** (**//NVMe//**), les **contrôleurs audio** ''haute définition'', le **périphérique** de **mémoire tampon** d'**image brute** connecté au **serveur VNC** (**sortie vidéo**) et le **relais AHCI / PCI**. Sachez qu'il est tout à fait possible installer via les **logiciels tiers** l'**hyperiveur** d'**Oracle**, **VirtualBox**. L'**OS** d'**Apple** **macOS** à un **portage** de **bhyve** du nom de **xhyve**. Se **port logiciel**, est utilisé par l'**hyperviseur** de **macOS** appelé **HyperKit**, qui permet de faire fonctionner **Docker**, le **logiciel** de **conteneurs** le plus ''populaire''. L'**hyperviseur xhyve** peut tout à fait être utilisé pour faire tourner de nombreux **systèmes d'exploitation** différents. === Conteneurs (Jails) de FreeBSD === Les **Jails** (**Prisons** en français) de **FreeBSD** qui sont des **conteneurs** (en anglais **containers**) comme **LXC** (**//Linux Containers//**) mais qui ressemble davantage aux **conteneurs** de **Solaris** d'**Oracle Corporation**, les **Zones Solaris**, également présentes dans les **distributions illumos**. Pour faire simple, les **jails** permettent d'avoir plusieurs **systèmes FreeBSD** totalement ''isolés'' du **système FreeBSD** ''principal'', appelé l'**Hôte**, sur la même **machine**. Les **Jails** ''virtualisent'' uniquement l'**espace utilisateur** (**userland** en anglais), le **noyau FreeBSD** est le même pour la ou les **jails** que le **système Hôte**. Se procédé existe depuis longtemps sous **Unix** via l'**appel système** **chroot** et la **commande Unix** du même nom mais les **jails** renforcent l' ''isolation'', si une **jail** est ''infectée'', les autres **jails** ne le seront pas ainsi que le **système Hôte**. Les principales ''fonctionnalités'' des **jails** sont : * Chaque **jail** à son propre **environnement virtuelle** : ses **fichiers**, **processus**, **comptes utilisateur** et **superutilisateur** (**root**) et son propre **hostname** (**nom d'hôte**). Les **Jails** de **FreeBSD** sont donc des **systèmes** **FreeBSD** complets, hormis le **noyau**, qui est le **noyau** de l'**hôte FreeBSD**. * Toutes les **jails** sont ''isolées'' les unes des autres et évidemment du **système FreeBSD** ''principal'' (de l'**Hôte**). Le **système FreeBSD** ''principal'' a les ''droits'' d'accès aux **jails** mais pas l'inverse. * Les **jails** permettent d'avoir un **système FreeBSD** tel qu'un **serveur Web** de ''test'' ou de ''production'' totalement ''autonome'' et ''isolé'' du **système FreeBSD** ''principal'', ce qui permet d'avoir une multitude de **systèmes FreeBSD** installés sur le même **ordinateur**. * Étant donné que les **jails** utilisent le **noyau FreeBSD** de l'**Hôte**, il n'y a pour ainsi dire pas de perte de ''performance'', les **processus** des **jails** s'executent aussi ''vite'' que ceux de l'**Hôte FreeBSD**. Via l'**émulation binaire Linux**, il est désormais possible d'avoir des **jails** sous **Linux** sur **FreeBSD**, enfin bref, les **jails** ont tout pour séduire un **administrateur système Unix** ou **Linux**. Les **Jails** sont idéales pour avoir un **serveur Web** de ''test'' ou de ''productrion'' qui a sa propre **adresse IP**, elles peuvent également servir pour se faire un **environment de développement**, enfin tout ce qui permet d'avoir une multitude de **systèmes FreeBSD**, isolés de l'**OS FreeBSD Hôte** et des autres **Jails** et désormais plusieurs **GNU/Linux** au sein de l'**ordinateur**. Par les **logiciels tiers**, il est également possible d'installer **Docker** mais je n'y vois pas trop d' ''intérêt''. ==== Quelques Daemons (Services) et Logiciels installés par défaut sous FreeBSD ==== === Exemple de Daemons installés par Défaut === * **OpenSSH**, **protocole SSH** (**//Secure Shell//**) par défaut sur la plupart des **systèmes UNIX**. Créée à l'origine par et pour l'**OS** **OpenBSD**. * **FTP** (**//File Transfer Protocol//**), qui est un **protocole** qui a été créée avant même l'arrivée du **Web**. * **NFS** (**//Network File System//**), un **système** de **partage de fichiers**. * **inetd** qui est en quelque sorte un **serveur** de **serveur**. * **TFTP** (**//Trivial File Transfer Protocol//**) est un **protocole** simplifié de **transfert de fichiers**. * **LPD** (**//Line Printer Daemon Protocol//**) qui est un **serveur d'impression**. * **NTP** (**//Network Time Protocol//**) qui permet d'avoir un **système** à l'heure exaxte via des **serveurs de temps**. * enfin tous les **daemons** essentiels aux **systèmes** **UNIX** modernes. === Logiciels d'intérêt installés par Défaut === * **Sendmail** comme ** serveur de messagerie électronique**. * **Bhyve**, l'**hyperviseur** créée par **FreeBSD**. * Le **compilateur** **Clang** et ses **bibliothèques** **LLVM**. * Tous les **outils** necessaires pour gérer le **réseau**. * **ZFS** et tous ses **utilitaires** qui est un **système de fichier** ultra complet. * **Pkgng** et sa **commande** **pkg**, le **gestionnaire de paquets** ''binaire'' qui est très complet, créée par la **Fondation FreeBSD**. * **Jails** qui permet d'avoir autant de **système** **FreeBSD** ou **Linux** que l'on souhaite, spécifique à **FreeBSD**. * ... Par défaut, tous les **daemons** sous **FreeBSD** sont désactivés. Ils sont tous activables dans ''/etc/rc.conf''. Exemple, ajoutez ''inetd_enable="YES"'' à ''/etc/rc.conf''. **FreeBSD** est d'une conception très ''sécurisée'' par défaut, et le fait que tous les **daemons** intégrés au **système** soient désactivés par défaut, il n'y a aucun risque de ''sécurité'' à se qu'ils soient préinstallés. ==== Mise à Jour ou à Niveau de FreeBSD ==== L'**outil** en **ligne de commande** pour mettre à jour ou mettre à niveau **FreeBSD** se nomme **freebsd-update**. Il est extrèment ''fiable'' pour qui connaît cet **OS** ! Les mise à jour ou à niveau sont à effectuer avec le **compte root** (**super-utilisateur**) ou **sudo** ou **doas**. Pour passer en mode **root** sous **FreeBSD** : su - Puis tapez votre **mot de passe** à l'aveugle et appuyer sur la touche **Enter**. === Mise à Jour === Pour faire une simple ''mise à jour'' : freebsd-update fetch puis : freebsd-update install Reboot et c'est tout !!! En cas d'erreur de votre part vous pouvez revenir en arrère pour ''restaurer'' le **système** freebsd-update rollback === Mise à Niveau === Il existe deux types de ''mise à niveau'', ''mineure'' et ''majeure''. La mise à niveau ''mineure'' est par exemple de passer de **FreeBSD 14.1** à **14.2** et la mise à niveau ''majeure'' est par exemple de passer de **13.3** à **14.2**, pour faire une mise à niveau ''mineure'' : Pensez à vérifier que votre **système** est à ''jour'' freebsd-update fetch ; freebsd-update install Pour passer de **14.1** à **14.2** : freebsd-update -r 14.2-RELEASE upgrade Vous aurez à répondre à plusieurs questions (''attention'', prenez votre temps et ne vous trompez pas dans vos réponses !!!) puis : freebsd-update install pour mettre à niveau le **noyau FreeBSD** Une fois terminé, vous redémarrez : shutdown -r now Une fois booter sur le nouveau **noyau** vous exécutez à nouveau : freebsd-update install ce qui va mettre le **système** au ''complet'' à niveau. Cest fini !!! Pour faire une mise à niveau ''majeure'', le **processus** est exactement le même, sauf qu'il faut penser à mettre à jour les **logiciels tiers** (externes) avec **pkgng** comme ceci : pkg update Puis : pkg upgrade Contrairement à certaines **distributions Linux**, la **mise à niveau** sous **FreeBSD** est très ''fiable'', elle résussie à coup sûr si vous avez de bonne connaissance sous **FreeBSD**. L'une des raisons pour laquelle une **mise à niveau** est en général plus ''fiable'' que sous **GNU/Linux** vient du fait que les **logiciels** fournis par défaut sous **FreeBSD**, sont séparés des **logiciels tiers** (externes) qui se trouvent dans leur propre **répertoire**, ''/usr/local'' (principe que l'on retrouve dans toutes les **distributions BSD** confondues. ===== Suppléments de documentation sur FreeBSD ===== Dans cette ''section'' vous trouverez des [[wiki:systemes_d_exploitation:bsd_unix:freebsd:tutoriels sur FreeBSD]] pour de plus amples informations sur la **distribution FreeBSD**. Pour davantage d'informations, il existe un **manuel** de ''référence'' en français sur **FreeBSD** sur son **site officiel**, à cette [[https://docs.freebsd.org/fr/books/handbook/|adresse]] et la version en anglais (plus ''à jour''), [[https://docs.freebsd.org/en/books/handbook/|ici]].