# IPFire

IPFire est un firewall stateful destiné aux professionnels aussi bien qu'aux particuliers ; il est basé sur Linux From Scratch, une distribution Linux construite entièrement à partir du code source (contrairement aux autres distributions Linux, qui fournissent des paquets pré-compilés), que l'on peut installer sur un PC même un peu âgé, en fonction de ses besoins. On peut considérer l'ensemble comme une « distribution à usage spécifique » ou « distribution dédiée ». IPFire est gratuit.

## Description

IPFire est un firewall, faisant naturellement office de routeur. Il est construit sur une base Linux From Scratch et, à la différence des autres distributions Linux, n'a pas vocation — pour des raisons évidentes de sécurité — à être utilisé en tant que système d'exploitation « normal » ; sa destinée est d'être installé sur un PC qui ne servira que de firewall / routeur et qu'on administrera, la plupart du temps, par le réseau ; typiquement : à partir d'un navigateur web, vers le port du serveur de la WebGUI (WUI) ou d'une connexion SSH, à partir d'un terminal. IPFire est gratuit et librement télachargeable sur le site officiel.

## Concept

IPFire est la reprise, par une équipe de développeurs allemands$^,$, d'IPCop, pare-feu lui-même déjà basé sur Linux From Scratch, dont le développement à cessé en 2017.
L'un des concepts de base de cette distribution est la facilité d'utilisation$^,$, qui s'adresse principalement aux utilisateurs ayant peu de connaissances en administration des réseaux. Néanmoins, les développeurs ont veillé à ce que les administrateurs expérimentés disposent de toutes les options de configuration professionnelles.
D'autre part, la conception « sécurité à la conception (en) » qui est mise en œuvre dans son développement est essentielle pour l'assurance d'une sécurité optimale.
La conception modulaire permet aux utilisateurs de créer un firewall adapté à leurs besoins. Il peut être installé sur du matériel très ancien, mais il est préférable de lui offrir suffisamment de mémoire et un processeur véloce, car un firewall « à état » analyse chaque paquet (datagramme), le confrontant à chaque règle, au fur-et-à-mesure de leur entrée sur le réseau et cela demande pas mal de ressources (fonction du nombre de connexions, donc de la taille du réseau et du nombre de règles), sauf à engorger ledit réseau. Mais cela reste proportionnel aux besoins, un petit réseau local pourra, effectivement, se satisfaire d'un matériel relativement ancien et « faire le boulot », la conception d'IPFire est faite justement pour utiliser le moins possible de ressources, ce qui complique le développement. Son cahier des charges pourrait être résumé en « sécurité, économie des ressources et robustesse ».

## Configuration requise

Au minimum :
* processeur : depuis 2022, un processeur x86_64 ou ARM64 (et quelques autres), cadencé à une fréquence de 1GHz ou plus ;
* RAM : 1GB minimum pour une configuration de base, mais prévoir plus si l'on compte ajouter des add-ons et encore plus selon la taille du réseau ;
* HDD : un disque dur de 2GB minimum est requis, même si le système, en lui-même, nécessite seulement 200MB d'espace de stockage ; pour une configuration « de confort », les développeurs préconisent plutôt 4GB minimum (à cause des journaux et des add-ons) ; N.B. :
** IPFire supporte les disques de 3TB ou plus, de types IDE (PATA), SATA et SCSI. La plupart des contrôleurs RAID du marché sont également supportés.
** On peut utiliser un disque SSD (pour l'installation du système d'exploitation et des add-ons) ce qui aura pour avantage de considérablement réduire les délais de lectures/écritures, mais avec l'inconvénient de la durée de vie relativement courte (7 ans en moyenne, mais beaucoup moins sur un firewall, en raison d'un grand « TBW » (« Terabytes written », soit nombre de Téraoctets écrits)) de ce type de disques et du MTBF (qui dépend directement du TBW).
* NICs : Deux cartes ethernet sont indispensables pour une utilisation minimale (« WAN » + « LAN ») et quatre sont requises pour utiliser la totalité des possibilités d'IPFire :
** une pour le réseau « RED » (la patte « WAN », raccordée au modem / routeur xDSL ou fibre optique connecté au FAI) ;
** une deuxième, indispensable aussi, pour la connexion au LAN « GREEN » (la patte « LAN » du firewall, raccordée au(x) switch(es) du LAN) ;
** une troisième, facultative, pour le réseau « BLUE », raccordée à un point d'accès Wi-Fi (ou à un switch, lui-même connecté à un AP (Access Point / point d'accès)), pour gérer les connections au(x) réseau(x) WiFI à l'intérieur du réseau ;
** enfin, une dernière, facultative également, pour le réseau « ORANGE », dédié à la DMZ.

## Système de base

Le système de base est doté des fonctionnalités suivantes :
* serveur proxy avec filtre de contenu et fonctions de mise en cache pour les mises à jour (par exemple, les mises à jour Microsoft Windows, antivirus, etc.)
* système de prévention d'intrusions (IPS) Suricata
* VPN via IPsec et serveur OpenVPN
* serveur DHCP
* serveurs de noms avec mise en cache DNS (avec prise en charge de DNSSEC, dont DNS over TLS (DoT) )
* serveur de temps (NTP)
* Wake-On-LAN (WOL) (réveil depuis le réseau local)
* DNS dynamique (DynDNS, No-IP)
* Qualité de service (QoS)
* pare-feu stateful
* fonctions de surveillance du système et analyse des logs
* système de mises à jour des paquets sécurisée (chiffrée), fiable et facile à utiliser
* filtrage GeoIP (depuis la version 2.17 - Core Update 90)
* portail captif (depuis la version 2.19 - Core Update 115)
* protection SYN flood, contre les DDoS (depuis août 2024, version 2.29 - Core Update 187)

## Pakfire : le gestionnaire de paquets

Pakfire est un système complet — et spécialement développé — de gestion des paquets, à l'instar de ses homologues (APT pour Debian ou YUM pour RedHat, Fedora ou CentOS). Il offre un moyen sûr et simple d'installer les mises à jour des paquets et des modules complémentaires.
Ses fonctionnalités les plus importantes sont :
* chiffrement : tous les paquets et les données transférées sont cryptés et signés numériquement par le serveur. Par conséquent, aucun paquet contrefait ne peut être installé ;
* miroirs : grâce au système de cryptage, on peut faire totalement confiance aux serveurs miroirs ;
* facilité et souplesse d'utilisation : l’installation des paquets est simple, avec sa propre interface graphique (WebGUI), mais si l'on préfère, on peut utiliser la CLI, par l'intermédiaire de SSH, dans un terminal.

## Addons

IPFire offre une grande quantité d'add-ons, qui sont régulièrement mis à jour par PakFire.
À ce jour (juillet 2024), il y a 99 add-ons disponibles, parmi lesquels on trouve :
* Tor pour transformer IPFire en proxy Tor, grâce à Squid ;
* plusieurs serveurs de fichiers comme NFS, Samba, TFTPD (lequel est très pratique pour héberger les images systèmes et les mises à jour des switches) ;
* Wireless Access Point, pour, à l'aide d'une carte Wi-Fi, transformer IPFire en point d'accès directement relié au réseau « BLUE » ;
* le serveur d'impressions CUPS, pour gérer les imprimantes du réseau ;
* Bacula ou rsnapshot, entre autres, comme solutions de backup ;
* socat (pour « SOcket CAT »), un couteau-suisse des transmissions, sorte de relais proxy pour les transferts bidirectionnels de données entre deux canaux (il en existe énormément, voir la doc) indépendants ; un nc amélioré ;
* postfix, le MTA bien connu sous Unix et fetchmail, pour récupérer, le cas échéant, le courrier sur un serveur POP ou IMAP ;
* Transmission, le client BitTorrent… même si c'est une très mauvaise idée d'ouvrir inutilement des ports externes sur un firewall, mieux vaut utiliser, par exemple, une machine dédiée qui sera dans la DMZ (le réseau « ORANGE ») ;
* FreeRadius, offrant une solution centralisée d'authentification (communiquant avec LDAP (Active Directory, sous Windows), RADIUS et d'autres protocoles) ;
* Lynis pour auditer les machines du réseau ou le firewall lui-même ; Spectre Meltdown Checker pour vérifier que le(s) CPU(s) ne sont pas sensibles à des vulnérabilités connues telles que Spectre ; ou encore Guardian, l'ancien IDS, encore très utile pour les attaques SSH en « force brute » ;
* Suricata le nouvel IPS.
* Près de 25 outils réseau, parmi lesquels :
** avahi : découverte de services sur le réseau ;
** bwm-ng : monitoring de bande passante en mode texte ;
** fping : ping sous stéroïdes ;
** netcat / ncat : « GNU-netcat » (« nc » de son petit-nom) est « le couteau-suisse de l'administrateur réseau » depuis 2004 ;
** nginx : le descendant d'Apache, mini-serveur pouvant servir de proxy, de serveur mail et de serveur web, évidemment, à faibles coûts ; à placer aussi en DMZ ;
** nmap : le scanner de ports le plus connu au monde, qu'on ne présente plus ;
** speedtest-cli : testeur de bande passante en CLI, qui interroge le site Speedtest.net ;
** stunnel : proxy permettant d'initier un tunnel chiffré TLS ;
** tcpdump : permet de capturer des trames et d'analyser le trafic réseau (en CLI) ;
** traceroute : plus besoin de le présenter non plus ;
** tshark : un analyseur de trames similaire à tcpdump, mais beaucoup plus puissant (la version CLI de wireshark).
* Une grosse dizaine d'outils de surveillance, parmi lesquels :
** apcupsd : permet la gestion simple des onduleurs (de la marque APC (American Power Conversion de Schneider Electric) du LAN ;
** NUT (Network_UPS_Tools (en)) : idem à apcupsd ci-dessus, mais non limité à la marque APC et beaucoup plus puissant ;
** NRPE : permet d’interagir avec le Nagios Remote Plugin Executor (NRPE) installé sur un serveur Nagios du LAN ;
** watchdog : redémarre le système en cas de détection d'un problème sérieux ;
** wio : service de surveillance intégré indiquant quels appareils du LAN sont connectés ou en ligne et qui peut également envoyer des alarmes, il est en mode graphique et hautement configurable ;
** Zabbix Agent : permet d’interagir avec le serveur Zabbix du LAN afin de surveiller une instance d'IPFire par l'intermédiaire d'un tableau de bord graphique.
* Et bien d'autres, parmi lesquels :
** 7zip : l'archiveur ultra-rapide, qui supporte les formats 7z, ZIP, CAB, ARJ, GZIP, BZIP2, TAR, CPIO, RPM et DEB ;
** ddrescue : solution « de survie » pour tenter de récupérer des données perdues sur un support de stockage en mode blocs (il est basé sur dd) ;
** firmware-update et flashrom : le premier met à jour les micro-logiciels inclus dans beaucoup de matériels actuels et le second permet de lire, voire d'écrire dans une ROM (donc, un firmware, un BIOS / EFI / coreboot, etc.) ;
** htop : la version en mode semi-graphique (grâce à la bibliothèque ncurses, liée) de top, le moniteur d'utilisation mémoire (mémoire vive et mémoire partagée) et CPU, constamment rafraîchi ;
** Libvirt et QEMU : la première est la bibliothèque / API permettant au second d'émuler des architectures, offrant une solution de virtualisation correcte ;
** lshw : affiche des informations très détaillées sur la partie matérielle de l'ordinateur sur lequel tourne IPFire ;
** le fameux mc : gestionnaire de fichiers en mode semi-graphique, très pratique, puisqu'utilisable dans un terminal, dérivé de l'application Norton Commander sous DOS (MS-DOS, en l'occurrence);
** minicom : l'incontournable émulateur ANSI et VT100, permettant de communiquer (en mode texte) avec le port RS-232 (« port série ») ce qui se révèle extrêmement utile quand on veut installer, configurer un switch ou un routeur sur lequel on n'a pas encore la main ;
** rsync : une des meilleures solutions simples de synchronisation sécurisée (sauvegardes incrémentielles ou différentielles), en local ou à distance (via SSH) ;
** Tmux : un multiplexeur de terminaux en mode texte, à l'instar de screen ;
** wavemon : une application de surveillance des niveaux de signal, des statistiques de paquets (datagrammes) et de configuration du matériel Wi-Fi.
* Enfin, il en existe également une petite dizaine d'autres, dédiés au multimédia.