# pfSense

Sécurité sans compromis, connectivité sans frontières : pfsense, votre rempart numérique inébranlable !  
(by ChatGPT)

# [pfSense] Installation

## Introduction

**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.

Il s'installe aussi bien en machine virtuelle qu'en physique et requiert au minimum 2 cartes réseaux pour pouvoir faire la jonction entre les deux réseaux et contrôler les fluxs.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/oSEimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/oSEimage.png)

## Installation

Commencez par télécharger l'[ISO](https://www.pfsense.org/download/) sur le site officiel en choisissant l'architecture, le type de support et le miroir.

Nous sélectionnerons **AMD64**, DVD Image **ISO** et le miroir de **Francfort**.

Démarrez sur le système puis suivez les étapes d'installation (j'ai pour habitude de tout laisser par défaut car cela fonctionne très bien).

Lorsque le système redémarre, il vous sera demandé si vous souhaitez configurer les **VLANs**, choisissez non :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/VZJimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/VZJimage.png)

Il vous sera ensuite demandé de saisir l'interface **WAN**.

Pour cela, déterminez quelle est l'interface entre **vtnet0** et **vtnet1** qui possède **l'adresse MAC** de la carte réseau qui doit être définie comme le WAN.

Dans mon cas, il s'agit de vtnet0 :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/oldimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/oldimage.png)

<p class="callout warning">Le clavier est en **qwerty**, vous ne devez donc pas appuyer sur MAJ ou Shit pour saisir les nombres</p>

Enfin, il vous demandera de saisir l'interface qui sera utilisé comme **LAN**, dans mon cas **vtnet1** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/NvNimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/NvNimage.png)

Une confirmation vous sera demandée, tapez **y** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/gNAimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/gNAimage.png)

Attendez que la configuration soit mise en place puis vous devriez arriver sur **l'interface de pfSense** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/3qNimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/3qNimage.png)

## Assignation des interfaces

Il est possible de modifier quelle interface doit être utilisée comme WAN ou comme LAN en choisissant **l'option 1**.

## Configuration des adresses IP

On peut choisir la configuration IP de chaque interface en choisissant **l'option 2**.

Il nous sera demandé si on souhaite configurer l'interface avec le **DHCP** ou en **statique** (recommandé).

Ensuite, on nous demandera si le **serveur DHCP** doit être activé sur l'interface (recommandé pour l'interface LAN).

# [pfSense] Accéder au panel depuis le WAN

## Introduction

Par défaut, le pare-feu protège le système de sorte à ne pouvoir modifier la configuration que depuis le LAN.

Dans de nombreuses configurations je ne trouve pas cela pertinent car le LAN représente souvent le réseau des utilisateurs tandis que le WAN représente le réseau de l'administrateur.

Bien que ce ne soit pas vrai tout le temps, ce type de configuration reste courante.

## Manuel

Pour pouvoir accéder à l'interface web de pfSense depuis le réseau WAN, vous allez devoir commencer par désactiver le pare-feu.

Ouvrez donc un shell avec **l'option 8** puis entrez la commande **pfctl -d** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/yUPimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/yUPimage.png)

<p class="callout warning"> La touche du tiret du 6 (-) en qwerty se situe juste à droite du 0 (n'appuyez pas sur Shift ou MAJ).</p>

Ensuite, connectez vous à l'interface web et allez dans **Interface &gt; WAN** pour désactiver les deux options suivantes :

- **Block private networks and loopback addresses**
- **Block bogon networks**

Puis rendez-vous dans **Firewall &gt; Rules** puis **Add** pour créer une nouvelle règle avec les caractéristiques suivantes :

- Interface : **WAN**
- Source : **Any**
- Destination : **WAN address**
- Protocol : **Any**
- Description : **Allow all**

<p class="callout danger">**Pour une raison inconnue, un redémarrage de pfSense est nécessaire pour que la solution fonctionne.**</p>

# [pfSense] Règles de pare-feu

## Introduction

Vous pouvez configurer aisément vos propres règles de pare-feu sur pfSense depuis l'interface web.

Cependant, vous devez comprendre quelques notions primordiales pour pouvoir le faire.

## Manuel

#### Accéder à la table des règles

Tout d'abord, depuis l'interface web, rendez vous dans **Firewall &gt; Rules** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/2FNimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/2FNimage.png)

Ensuite, sélectionnez l'interface sur laquelle vous souhaitez appliquer la règle (ici DMZ300) :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/S8wimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/S8wimage.png)

#### Fonctionnement de la table

Pour chaque interface, vous pouvez voir apparaître les règles qui seront appliquées pour **chaque paquet** qui passe sur l'interface **dans l'ordre du haut vers le bas**.

Le paquet va donc être testé par chacune des règles :

- Dans le cas où la règle match avec le paquet, l'action définie lui sera appliquée (**PASS**, **BLOCK** ou **REJECTED**).
- Dans le cas où la règle ne match pas avec le paquet, le paquet va être testé par la règle en dessous et ainsi de suite.

<p class="callout warning">Vous remarquerez que l'ordre des règles est capital.</p>

#### Autoriser un flux

Pour l'exemple, nous allons créer une règle pour autoriser les connexions sortantes HTTP sur l'interface de la DMZ300.

Commencez par cliquer sur Add et définissez les options suivantes :

- Action : **PASS**
- Protocol : **TCP**
- Source : **DMZ300 Net**
- Destination : **any**
- Destination **Port Range : From HTTP (80) to HTTP (80)**
- Description : **Allow HTTP**

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/JIYimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/JIYimage.png)

Vous pouvez appuyer sur **Save** puis **Apply Changes** pour appliquer les changements :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/qveimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/qveimage.png)

#### Bloquer un flux

Maintenant si vous souhaitez bloquer un flux, vous pouvez procéder à la même opération en modifiant simplement l'action PASS par **BLOCK**.

# [pfSense] Règle NAT

## Introduction

Le **NAT** pour *Network Address Translation* permet de rediriger le flux entrant de l'interface d'un réseau vers l'interface d'un autre réseau.

La plupart du temps cette fonctionnalité est utilisée pour rediriger un flux qui entre sur le **WAN** vers le **LAN**.

Dans le jargon, on appelle cela une redirection de port ou une ouverture de port.

## Manuel

Pour créer une règle NAT, rendez vous sur l'interface web puis dans **Firewall &gt; NAT** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/2ufimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/2ufimage.png)

Ensuite, dans l'onglet **Port Forward**, cliquez sur **Add** pour créer une règle :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/gsJimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/gsJimage.png)

Admettons que vous souhaitez déployer une règle NAT pour rediriger le flux HTTPS qui entre sur l'interface WAN de votre pfSense, vers votre serveur web situé dans votre WAN qui a pour IP 192.168.1.100.

Vous devrez alors indiquer les paramètres suivants :

- Interface : **WAN**
- Protocol : **TCP**
- Destination : **WAN address**
- Destination port range : **from HTTP (80) to HTTP (80)**
- Redirect target IP : **Single Host** &gt; **192.168.1.100**
- Redirect target Port : **HTTP (80)**
- Description : **Redirection to web server**

<p class="callout success">Vous pouvez appuyez sur **Save** puis **Apply Changes** pour appliquer les changements.</p>

# [pfSense] OpenVPN

## Introduction

Les pare-feu pfSense permettent la mise en place de VPN **client-to-site** ou **site-to-site** avec le logiciel OpenVPN notamment.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-12/scaled-1680-/Stmimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-12/Stmimage.png)

## Installation client-to-site

- [https://www.it-connect.fr/pfsense-configurer-un-vpn-ssl-client-to-site-avec-openvpn/](https://www.it-connect.fr/pfsense-configurer-un-vpn-ssl-client-to-site-avec-openvpn/)

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-12/scaled-1680-/18Pimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-12/18Pimage.png)

# [pfSense] Wireguard

## Introduction

Wireguard supporte depuis récemment l'installation d'un VPN wiregard qui est le plus rapide et performant du marché des VPNs open source.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/t8jimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/t8jimage.png)

## Installation

Tout d'abord, installez le paquet **WireGuard** depuis le menu **System &gt; Package Manager &gt; Available Packages** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/RGWimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/RGWimage.png)

Cliquez sur **Install** puis **Confirm** et attendez que le message suivant apparaisse :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/rZNimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/rZNimage.png)

Ensuite, rendez vous dans l'onglet **VPN &gt; Wireguard** et cliquez sur **Add tunnel** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/sdDimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/sdDimage.png)

Pour la configuration du tunnel, saisissez en **description** le nom de votre VPN puis générez une paire de clés en cliquant sur **Generate** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/M9Himage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/M9Himage.png)

Dans la configuration de l'interface, saisissez l'adresse IP privée du routeur associée à l'interface du tunnel :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/X2gimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/X2gimage.png)

Cliquez sur **Save** et rendez vous dans l'onglet **Peer** puis cliquez sur **Add Peer** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/zACimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/zACimage.png)

Sélectionnez votre **Tunnel** dans le menu déroulant et mettez le nom de votre client en **Description** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/rzRimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/rzRimage.png)

Depuis votre client Wireguard, générez une paire de clés publique/privée :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/K97image.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/K97image.png)

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/jF3image.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/jF3image.png)

```bash
wg genkey | tee wg-private.key
```

```bash
cat wg-private.key | wg pubkey | tee wg-public.key
```

Et renseignez la clé publique dans la configuration du peer sur pfsense :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/seeimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/seeimage.png)

Et n'oubliez pas de décocher **Dynamic Endpoint** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/fAXimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/fAXimage.png)

Saisissez ensuite l'adresse IP de l'**Endpoint** (IP publique de votre routeur qui sera atteinte pour se connecter au VPN) :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/pb4image.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/pb4image.png)

Dans la configuration d'adressage, vous pouvez choisir les réseaux accessibles via le VPN.

Vous devez saisir l'IP du peer ainsi que les sous-réseaux de destination que vous souhaitez autoriser :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/S2cimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/S2cimage.png)

Cliquez sur **Save** puis rendez vous dans l'onglet **Settings** pour activer le service Wireguard et cliquez sur **Save** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/hJ8image.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/hJ8image.png)

Cliquez sur **Apply Changes** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/aD3image.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/aD3image.png)

Après, allez sur **Interfaces &gt; Assignements**, sélectionnez l'interface du tunnel et cliquez sur **Add** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/7cyimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/7cyimage.png)

Cliquez sur le nom de la nouvelle interface créée pour accéder à sa configuration puis activez l'interface et modifiez son nom :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/49Eimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/49Eimage.png)

En **IPv4 Configuration Type** sélectionnez **Static IPv4** puis dans Static IPv4 Configuration renseignez l'adresse du routeur sur le réseau VPN (définie précédemment) :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/5etimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/5etimage.png)

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/HG8image.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/HG8image.png)

Cliquez sur **Add a new gateway** puis renseignez les informations et cliquez sur **Add** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/c2eimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/c2eimage.png)

Cliquez ensuite sur **Save** et **Apply Changes**.

On doit ensuite configurer le pare-feu pour autoriser les connexions en allant dans le menu **Firewall &gt; Rules &gt; WG** puis **Add** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/jHVimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/jHVimage.png)

Faite une règle pour autoriser tout le trafic ou seulement ce que vous souhaitez si vous souhaitez affiner vos règles et cliquez sur **Save** et **Apply Changes** :

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/scaled-1680-/Jz9image.png)](https://wiki.neopipe.fr/uploads/images/gallery/2024-05/Jz9image.png)

<p class="callout warning">Vous devez aussi créer une règle sur votre **WAN** pour autoriser le flux **UDP/51820** vers votre pare-feu.</p>

La dernière étape consiste à créer le fichier de configuration du client VPN :

```
[Interface]
PrivateKey = <PEER_PRIV_KEY>
Address = 10.1.0.2/24

[Peer]
PublicKey = <SRV_PUB_KEY>
AllowedIPs = 10.1.0.0/24, 192.168.5.0/24
Endpoint = <SRV_PUBLIC_IP>:51820
```