# PfSense

pfSense est un système d'exploitation open source ayant pour but la mise en place de routeur/pare-feu basé sur le système d'exploitation FreeBSD. À l'origine un fork de m0n0wall, il utilise le pare-feu à états Packet Filter ainsi que des fonctions de routage et de NAT lui permettant de connecter plusieurs réseaux informatiques. Il comporte l'équivalent libre des outils et services utilisés habituellement sur des routeurs professionnels propriétaires. pfSense convient pour la sécurisation d'un réseau domestique ou d'entreprise.
Après l'installation manuelle nécessaire pour assigner les interfaces réseaux, il s'administre ensuite à distance depuis l'interface web. pfSense gère nativement les VLAN (802.1q).
Comme sur les distributions Linux, pfSense intègre aussi un gestionnaire de paquets pour installer des fonctionnalités supplémentaires, comme un proxy ou un serveur de voix sur IP.

## Hardware

pfSense peut fonctionner sur du matériel de serveur ou domestique, sur des solutions embarquées, sans toutefois demander beaucoup de ressources ni de matériel puissant.
La plate-forme doit être x86 ou x64, mais d'autres architectures pourraient être supportées à l'avenir.

### Configuration requise

| | Configuration minimale | Configuration recommandée |
| Processeur | 600 MHz | 1 GHz |
| Mémoire vive | 512 Mo | 1 Go |
| Stockage | > 4 Go | > 4 Go |

#### NAT et processeur

Dans le cas du NAT où tout le réseau privé se partage une unique adresse IPv4 publique, la puissance du processeur est négligeable pour des débits de l'ordre de $^{10}$⁄$_{100}$ Mbit/s, comme dans le cas de l'ADSL ou la bande passante n'excède pas 20 Mbit/s dans les meilleures conditions. Un processeur cadencé à 1 GHz suffit amplement.
Cependant, pour obtenir du 1 Gbit/s, comme avec la fibre optique, il faut un processeur plus puissant, de préférence multi-cœur d'au moins 2 GHz.

#### Cartes réseaux

pfSense supporte la majorité des cartes réseaux, mais il est préférable d'avoir des cartes réseaux Intel pour optimiser les performances. La liste de compatibilité matérielle actuelle (BSD 10.1) se trouve ici. Certains modèles de cartes réseaux ne supportent pas les VLAN (802.1q).
Certaines cartes réseaux sans fil sont supportées, mais tous les modes de fonctionnement ne sont pas disponibles pour chacune d'entre elles. Le site officiel propose une liste de cartes recommandées.

## Déclinaisons de pfSense

pfSense peut être téléchargé en différentes versions selon le type d'utilisation et d'installation (avec un moniteur et un clavier, ou par liaison série) :
* Live CD with Installer, pour pouvoir l'installer vers le disque dur depuis un CD d'installation classique.
* Live CD with Installer (on USB Memstick), adapté pour une installation depuis une clé USB.
* Embedded Ce type d'installation est typiquement utilisé sur les systèmes embarqués où par manque de place, pfSense est installé directement sur une carte mémoire ou sur une clé USB, sans recourir à un disque dur. Cette version fonctionne spécialement sous NanoBSD pour réduire les accès à la carte mémoire afin de ne pas l'endommager.

### Version Embedded avec une clé USB

Le démarrage de pfSense est possible avec une clé USB, mais cela nécessite un délai supplémentaire pour charger correctement les pilotes$^,$.
Pour un usage quotidien avec une clé USB, il faut modifier dans /boot/loader.conf.local (depuis l'interface web : Diagnostics > Edit file)

## Historique

Le projet pfSense, est basé sur un fork de m0n0wall réalisé en 2004 par Chris Buechler et Scott Ullrich.
La version 1.0 a été lancée le 4 octobre 2006.
La version 2.0 finale est arrivée fin décembre 2011.

## Fonctionnalités

pfSense permet :
* Filtrage par IP source et destination, port du protocole, IP source et destination pour le trafic TCP et UDP
* IPv6
* Capable de limiter les connexions simultanées sur une base de règle
** pfSense utilise p0f, un utilitaire permettant de filtrer le trafic en fonction du système d'exploitation qui initie la connexion.
** Possibilité d'enregistrer ou de ne pas enregistrer le trafic correspondant à chaque règle.
** Politique très souple de routage possible en sélectionnant une passerelle sur une base par règle (pour l'équilibrage de charge, basculement, connexions WAN multiples, etc)
** Utilisation d'alias permettant le regroupement et la désignation des adresses IP, des réseaux et des ports, rendant ainsi votre jeu de règles de pare-feu propre et facile à comprendre, surtout dans des environnements avec plusieurs adresses IP publiques et de nombreux serveurs.
** Filtrage transparent au niveau de la Couche 2, le pare-feu est capable d'agir en pont filtrant.
** La normalisation des paquets est utilisée, il n'y a donc aucune ambiguïté dans l'interprétation de la destination finale du paquet. La directive « scrub » ré-assemble aussi des paquets fragmentés, protège les systèmes d'exploitation de certaines formes d'attaque, et laisse les paquets TCP contenant des combinaisons de Flags invalides.
Cette dernière option est connue pour provoquer des problèmes pour certaines implémentations NFS. Le filtre de pare-feu peut être désactivé pour configurer pfSense comme un routeur pur.
* Network address translation (NAT)
Par défaut, le NAT redirige tout le trafic sortant vers l'adresse IP WAN. Dans le cas de connexions WAN multiples, le NAT redirige le trafic sortant vers l'adresse IP de l'interface WAN utilisée.
* Basculement base sur CARP et pfsync
Common Address Redundancy Protocol (Protocole Commun De Redondance D'Adresse) ou CARP est un protocole permettant à un groupe d'hôtes sur un même segment réseau de partager une adresse IP. Cette notion en doit pas être confondue avec « Cache Array Routing Protocol » utilisée pour faire de la répartition de charge de mandataires caches web.
* pfsync assure la table d'état du pare-feu qui est répliquée sur tous les pare-feu configurés de basculement. Cela signifie que les connexions existantes seront maintenues dans le cas d'échec, ce qui est important pour prévenir les perturbations du réseau.
* Répartition de charge
La répartition de charge du trafic sortant est utilisée avec plusieurs connexions WAN pour assurer la répartition de charge et des capacités de basculement. Le trafic est dirigé vers la passerelle souhaitée ou le groupe d'équilibrage local.

### VPN

pfSense offre quatre options de connectivité VPN :
* IPSec,
* OpenVPN,
* Point-to-Point Tunneling Protocol ou PPTP et
* Layer 2 Tunneling Protocol ou L2TP.

### RRD Graphiques

Les graphiques RRD de pfSense mettent à jour des informations historiques sur les points suivants :
* L'utilisation du processeur
* Le débit total
* État de Firewall
* Débit individuel pour toutes les interfaces
* Paquets par seconde taux pour toutes les interfaces
* Interface WAN passerelle(s) de temps de réponse ping
* Trafic des files d'attente de mise en forme sur les systèmes avec lissage du trafic activé.

### Dynamic DNS

Un client DNS dynamique est inclus pour vous permettre d'enregistrer votre adresse IP publique avec un certain nombre de fournisseurs de services DNS dynamiques.
* DynDNS
* DHS
* dnsExit
* DYNS
* easyDNS
* FreeDNS
* HE.net
* Loopia
* Namecheap
* No-IP
* ODS.org
* OpenDNS
* ZoneEdit

### Captive portal

Un portail captif permet de forcer l'authentification, ou la redirection vers une page pour l'accès au réseau. Ceci est communément utilisé sur les réseaux de point d'accès à Internet sans fil (hot spots), mais est également largement utilisé dans les réseaux d'entreprise pour une couche supplémentaire de sécurité sur l'accès sans fil ou Internet.
Liste des fonctionnalités du portail captif de pfSense :
* Connexions simultanées maximum : limite le nombre de connexions au portail lui-même par client IP. Cette fonctionnalité empêche un déni de service à partir d'ordinateurs clients établissant des connexions réseau à plusieurs reprises sans authentification.
* Délai d'inactivité : délai après lequel les sessions inactives seront fermées.
* Disk timeout : force une déconnexion de tous les clients après le nombre défini de minutes.
* Logon fenêtre pop-up : option pour faire apparaître une fenêtre avec un bouton de déconnexion.
* Redirection d'URL : près authentification ou en cliquant sur le portail captif, les utilisateurs peuvent être redirigés vers l'URL définie.
* Filtrage MAC : les filtres pfSense utilisent des adresses MAC. Pour un sous-réseau derrière un routeur sur une interface compatible de portail captif, chaque machine derrière le routeur sera autorisée dès qu'un utilisateur est autorisé. Le filtrage MAC peut être désactivé pour ces scénarios.
Les options d'authentification sont les suivantes :
* Aucune authentification - Cela signifie que l'utilisateur verra s'afficher votre page de portail sans avoir à entrer d'information d'identification.
* Gestionnaire d'utilisateur local - Une base de données d'utilisateur local peut être configurée et utilisée pour l'authentification.
* Authentification RADIUS - Méthode d'authentification lorsque la base de données d'utilisateur est déportée sur un serveur. La négociation entre pfSense et le serveur utilisera la norme RADIUS.
* Ré-authentification forcée - Possibilité de demander à forcer une ré-authentification. authentification MAC RADIUS - Permet au portail captif d'utiliser l'adresse MAC du client pour l'authentification à un serveur RADIUS au lieu du login. HTTP ou HTTPS - La page du portail peut être configurée pour utiliser le protocole HTTP ou HTTPS. Pass-Through adresses MAC et IP - des adresses MAC et IP peuvent être white-listées pour contourner le portail. Toutes les machines s'authentifiant avec les adresses MAC et IP listées seront autorisées sans avoir besoin de passer par le portail captif. Vous pouvez exclure certaines machines pour d'autres raisons. Gestionnaire de fichiers - Ceci vous permet de télécharger des images pour les utiliser dans vos pages du portail.
pfSense comprend à la fois les fonctionnalités de serveur DHCP et de relais DHCP.