Recherche de site Web

Shorewall - Un pare-feu de haut niveau pour les serveurs Linux


La mise en place d’un pare-feu sous Linux peut être très intimidante pour un débutant, ou quelqu’un qui n’est pas très familier avec iptables. Heureusement, il existe une solution très facile à utiliser dans Shorewall.

Dans ce tutoriel en plusieurs parties, je vais vous familiariser avec Shorewall et vous guider à travers des sujets plus avancés avec cet excellent système de pare-feu.

Qu’est-ce que Shorewall ?

Shorewall est essentiellement une interface frontale d’iptables, mais il s’agit d’une interface d’environnement en ligne de commande qui utilise plusieurs fichiers texte pour sa configuration. Bien que Shorewall soit un système de pare-feu robuste qui peut être étendu à de très grands réseaux desservant de nombreuses machines, nous allons commencer par une configuration de base à deux interfaces et définir les bases.

Une configuration à deux interfaces se compose d’une machine avec deux ports Ethernet, l’un entrant et l’autre sortant du réseau local.

Installer Shorewall Firewall sous Linux

Shorewall peut être installé à l’aide des outils de gestion de paquets apt et yum.

sudo apt install shorewall    [On Debian-based Sysems]
sudo yum install shorewall    [On RHEL-based Sysems]

Après l’installation, nous devons copier un exemple de configuration du répertoire « /usr/share/doc/shorewall » dans le répertoire par défaut de Shorewall « /etc/shorewall ».

sudo cp /usr/share/doc/shorewall/example/two-interfaces/* /etc/shorewall
cd /etc/shorewall

Si nous jetons un coup d’œil dans ce répertoire, nous voyons un tas de fichiers et le fichier shorewall.conf.

Shorewall considère le réseau comme un groupe de différentes zones, donc le premier fichier que nous voulons examiner est le fichier « /etc/shorewall/zones ».

sudo nano /etc/shorewall/zones

Ici, nous voyons qu’il y a trois zones définies par défaut : fw, net et loc. Il est important de noter que Shorewall traite la machine de pare-feu elle-même comme sa propre zone et la stocke dans une variable appelée $fw.

Le fichier « /etc/shorewall/zones » est assez explicite. Vous avez la zone net (interface orientée vers Internet), la zone loc (interface orientée vers le réseau local) et fw, qui est tout.

Cette configuration abandonne les éléments suivants :

  • Il permet toutes les demandes de connexion de la zone loc (LAN) à la zone net (Internet).
  • Abandonne toutes les demandes de connexion (ignorées) de la zone réseau vers le pare-feu et le réseau local.
  • Rejette et consigne toutes les autres demandes.

Le bit LOG LEVEL devrait être familier à tous ceux qui ont fait de l’administration avec Apache, MySQL ou tout autre nombre d’autres programmes FOSS. Dans ce cas, nous disons à Shorewall d’utiliser le niveau info de la journalisation.

Maintenant que nos zones et notre politique sont définies, nous devons configurer nos interfaces. Pour ce faire, vous devez modifier le fichier « /etc/shorewall/interfaces ».

sudo nano /etc/shorewall/interfaces

Ici, nous avons défini notre interface Internet comme eth0 pour la zone net. Du côté de notre LAN, nous avons défini l’autre interface, eth1, sur la zone loc. Veuillez ajuster ce fichier pour qu’il s’adapte correctement à votre configuration.

Les différentes options que vous pouvez placer pour l’une ou l’autre de ces interfaces sont nombreuses et sont mieux expliquées en détail sur la page de manuel.

man shorewall-interfaces

Voici un bref aperçu de certains d’entre eux :

  • Nosmurfs – paquets de filtre avec une adresse de diffusion comme source.
  • Logmartiens – paquets de journaux avec l’adresse source impossible.
  • RouteFilter – Filtrage des routes du noyau pour la lutte contre l’usurpation d’identité.

Bien sûr, maintenant que notre système est protégé par un pare-feu, nous allons avoir besoin que certaines connexions soient autorisées afin de faire ce que nous devons faire. Vous les définissez dans le fichier de règles à l’adresse « /etc/shorewall/rules ».

sudo nano /etc/shorewall/rules

Ce fichier semble déroutant au début, principalement parce que les colonnes se chevauchent, mais les en-têtes sont assez explicites. Tout d’abord, vous avez la colonne ACTION, qui décrit ce que vous voulez effectuer.

Ensuite, vous avez un en-tête SOURCE dans lequel vous définissez la zone d’où provient le paquet. Ensuite, vous avez votre DEST, ou destination, qui est la zone ou l’adresse IP de la destination. Prenons un exemple.

Supposons que vous souhaitiez exécuter un serveur SSH derrière votre pare-feu sur la machine avec l’adresse IP 192.168.1.25. Non seulement vous allez devoir ouvrir un port dans votre pare-feu, mais vous allez devoir dire au pare-feu que tout trafic arrivant sur le port 22 doit être acheminé vers la machine à l’adresse 192.168.1.25.

C’est ce qu’on appelle la redirection de port. Il s’agit d’une caractéristique commune à la plupart des pare-feu/routeurs. Dans « /etc/shorewall/rules », vous accompliriez cela en ajoutant une ligne comme celle-ci :

SSH(DNAT)	net		loc:192.168.1.25

Ci-dessus, nous avons défini que tous les paquets destinés à SSH provenant de la zone réseau vers le pare-feu doivent être acheminés (DNAT) vers le port 22 sur une machine avec l’adresse 192.168.1.25.

C’est ce qu’on appelle la traduction d’adresses réseau ou NAT. Le « D » indique simplement à Shorewall qu’il s’agit d’un NAT pour une adresse de destination.

Pour que cela fonctionne, vous devez avoir activé le support NAT dans votre noyau. Si vous avez besoin de NAT et que vous ne l’avez pas, veuillez consulter mon tutoriel sur la recompilation d’un noyau Debian.

Dans le prochain article, nous explorerons les différentes configurations et options de Shorewall. Cependant, il devrait y avoir suffisamment d’informations ici pour vous aider à commencer pour le moment. Comme toujours, veuillez vous référer aux pages de manuel pour une compréhension plus approfondie.

Articles connexes: