Gestion du Pare-feu sur votre serveur

Critères requis :

Historiquement, le pare-feu par défaut sur votre serveur est Netfilter, avec le frontend IPTable facilitant sa gestion.

D'autres outils se basant sur IPTables, plus simple à prendre en main permette de mettre en place un pare-feu rapidement sur votre serveur.

Il existe plusieurs types de pare-feu, comme le pare-feu applicatif, qui va vérifier la conformité du paquet en fonction du port de destination, ou de ce qui est autorisé.

Dans notre cas, nous ne mettrons en place qu'un pare-feu à état (mais qui peut faire bien plus de choses que cela !).

UFW

UFW, ou Uncomplicated FireWall, est un frontend à IPTables simplifiant la gestion de votre pare-feu.
Il a notamment l'avantage de créer des règles à la fois pour IPv4 & pour IPv6, ce qui simplifie la création.
C'est celui que nous utiliserons dans ce tutoriel.

Commençons par l'installer :

sudo apt-get install ufw

Les politiques de sécurités

La politique de sécurité à appliquer dépend de vos besoins et de vos applicatifs.
La plus sécurisée consiste à bloquer tout le trafic, entrant & sortant, et n'autoriser les ports qu'au cas par cas.

Dans notre cas, nous utiliserons une politique qui bloquera les paquets entrants, et autorisera les paquets sortant, par défaut.

Il ne nous restera donc qu'à autoriser les paquets entrants au cas par cas.

Mettons donc en place notre politique :

sudo ufw default deny

Par défaut, on refuse tout.

sudo ufw default allow outgoing

Puis, nous autorisons le trafic sortant

Établissement des règles

Pour définir vos règles, il vous faut savoir ce que vous faites / allez faire tourner comme services et les ports associés.

Dans notre exemple, nous aurons un serveur SSH, HTTP(S), et un serveur DNS.

Chaque protocole connu a un port associé dans les Well Known Ports. Vous pouvez vérifier ce lien pour les connaître : https://fr.wikipedia.org/wiki/Liste_de_ports_logiciels

Dans notre cas, nous utiliserons :

  • Le port 22 sur TCP pour SSH
  • Le port 80 sur TCP pour HTTP
  • Le port 443 sur TCP pour HTTPS
  • Le port 53 sur TCP & UDP pour DNS

Voici les commandes à utiliser :

  • Autorisation du SSH : sudo ufw allow 22/tcp
  • Autorisation du HTTP : sudo ufw allow 80/tcp
  • Autorisation du HTTPS : sudo ufw allow 443/tcp
  • Autorisation du DNS : sudo ufw allow 53 # Ici nous ne précisons pas TCP puisque nous voulons qu'il autorise TCP & UDP

Maintenant que nos règles sont définies, il va falloir les activer :

sudo ufw enable

Maintenant que nos règles sont établies, visualisons le résultat :

sudo ufw status numbered

Nous pouvons donc voir toutes nos règles en place :

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 443/tcp                    ALLOW IN    Anywhere
[ 4] 53                         ALLOW IN    Anywhere
[ 5] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 6] 80/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 7] 443/tcp (v6)               ALLOW IN    Anywhere (v6)
[ 8] 53 (v6)                    ALLOW IN    Anywhere (v6)

Et voilà, vous avez un pare-feu, somme toute basique, mais fonctionnel, sur votre serveur !

Ajouter des règles

Maintenant que votre pare-feu est activé, si vous souhaitez ajouter des règles, rien de plus simple :

sudo ufw allow 25/TCP

Ici, j'autorise la connexion sur le port 25 (SMTP) sur le serveur.

Supprimer des règles

Il arrive que des règles établies ne correspondent plus à votre besoin.
Vous aurez peut-être remarqué, précédemment, lors du listage des règles, un numéro devant ces dernières.

C'est le numéro de la règle tel qu'UFW l'a enregistré.

Pour supprimer la règle en question :

sudo ufw delete NUMERO

En adaptant bien évidemment avec le numéro de la règle.

Aller plus loin

UFW est très pratique puisqu'il vous permet de mettre en place un pare-feu très facilement et très rapidement.

Mais il ne se limite pas qu'au blocage de port. Vous pouvez par exemple faire du rate-limit avec ce dernier (blocage du nombre de connexions par IP), et bien d'autres choses.

N'hésitez pas à consulter la page du man :

man ufw

Et le site officiel : https://wiki.ubuntu.com/UncomplicatedFirewall

Cependant, sachez qu'il a aussi ses limitations, et que certaines actions avancées ne sont pour le moment disponible qu'avec IPTables.