Configuration de Shorewall (Firewall)

De Travail-Ivan 2

Shorewall : Présentation

Shorewall (Shoreline Firewall) est un outil de gestion de pare-feu basé sur iptables, conçu pour simplifier la configuration et la gestion de pare-feu sous Linux. Shorewall permet de créer des règles de sécurité réseau complexes en définissant des zones, des interfaces, et des politiques de sécurité, rendant la configuration plus accessible que décrire directement des règles iptables.

Fonctionnalités principales

Shorewall permet aux administrateurs de :

  • Gérer les politiques de filtrage entre les zones de réseau (par exemple, LAN, Internet, DMZ).
  • Contrôler les interfaces réseau et restreindre le trafic entrant et sortant.
  • Configurer le NAT (Network Address Translation) et le masquerading pour permettre aux machines d’un réseau local de communiquer avec lextérieur.
  • Définir des règles spécifiques pour des services ou applications, comme le SSH, HTTP, ou dautres ports personnalisés.
  • Effectuer des redirections de ports (DNAT) pour accéder aux services internes depuis l’extérieur.

Structure de configuration

Shorewall utilise plusieurs fichiers de configuration pour organiser les paramètres du pare-feu :

  • /etc/shorewall/zones : Définit les zones de réseau (par exemple, fw pour le firewall, net pour le réseau externe).
  • /etc/shorewall/interfaces : Associe les interfaces réseau aux zones.
  • /etc/shorewall/policy : Définit les politiques de filtrage par défaut entre les zones.
  • /etc/shorewall/rules : Spécifie les règles spécifiques pour le trafic réseau (par exemple, autoriser SSH ou HTTP).
  • /etc/shorewall/snat : Configure le masquerading ou le NAT pour masquer les adresses IP locales derrière une IP publique.

Ces fichiers permettent une séparation logique des paramètres, rendant la gestion et la maintenance du pare-feu plus claires et modulaires.

Installation des paquets

Sur la machine virtuelle vmlb, installez les paquets suivants :

# apt install shorewall tcpdump nmap

Configuration des fichiers de Shorewall

Les fichiers de configuration de Shorewall sont modifiés pour définir les zones, les interfaces, les politiques, le SNAT, les variables de paramètres et les règles daccès.

Fichier des zones

Définissez les zones dans /etc/shorewall/zones :

# cat /etc/shorewall/zones
fw  firewall
net ipv4
lan ipv4
  • fw : Zone représentant le firewall lui-même.
  • net : Zone pour le réseau externe (Internet).
  • lan : Zone pour le réseau local (LAN).

Fichier des interfaces

Associez les interfaces réseau aux zones dans /etc/shorewall/interfaces :

# cat /etc/shorewall/interfaces
?FORMAT 2
net enp0s3 dhcp,tcpflags,nosmurfs,sourceroute=0
lan enp0s8 tcpflags,nosmurfs,sourceroute=0
  • enp0s3 : Interface pour le réseau externe avec des options de sécurité activées.
  • enp0s8 : Interface pour le réseau local, également avec options de sécurité.

Fichier des politiques

Définissez les politiques de filtrage de Shorewall dans /etc/shorewall/policy :

# cat /etc/shorewall/policy
lan     net     ACCEPT
lan     $FW     ACCEPT

$FW     net     ACCEPT
$FW     lan     ACCEPT

net     all     DROP    info
all     all     REJECT  info
  • ACCEPT : Autorise le trafic entre lan vers net et le firewall ($FW).
  • DROP : Bloque tout trafic entrant du réseau net par défaut, avec enregistrement.
  • REJECT : Rejette tout autre trafic, avec enregistrement.

Fichier SNAT

Pour effectuer du masquerading, configurez le fichier /etc/shorewall/snat :

# cat /etc/shorewall/snat
MASQUERADE 192.168.72.0/24 enp0s3
  • MASQUERADE : Applique le NAT source (SNAT) pour masquer les adresses du réseau local 192.168.72.0/24 à travers linterface externe enp0s3.

Fichier des paramètres (params)

Définissez une variable de paramètres dans /etc/shorewall/params :

# cat /etc/shorewall/params
IP_GCH=192.168.1.18
  • IP_GCH : Définit l’adresse IP externe spécifique utilisée dans certaines règles.

Fichier des règles

Définissez les règles de filtrage spécifiques dans /etc/shorewall/rules :

# cat /etc/shorewall/rules
ACCEPT   all     all     icmp    8

ACCEPT   net:$IP_GCH    $FW     tcp     22

ACCEPT   net     $FW     tcp     80

ACCEPT   net:$IP_GCH    $FW     tcp     8282

# DNAT
DNAT     net:$IP_GCH    lan:192.168.72.11:22    tcp     2221
DNAT     net:$IP_GCH    lan:192.168.72.12:22    tcp     2222
  • ACCEPT :
 * Autorise les paquets ICMP de type 8 (ping) de nimporte quelle source vers nimporte quelle destination.
 * Permet laccès SSH (port 22), HTTP (port 80), et 8282 à partir de lIP définie par IP_GCH vers le firewall.
  • DNAT :
 * Redirige le trafic externe vers l’IP 192.168.1.18 sur les ports 2221 et 2222 vers les adresses locales 192.168.72.11:22 et 192.168.72.12:22 respectivement (pour le SSH).

Validation et démarrage de Shorewall

Exécutez les commandes suivantes pour vérifier et démarrer Shorewall :

# shorewall check
# shorewall safe-start
# systemctl enable shorewall

Test de configuration avec nmap

Depuis une machine externe, testez la configuration du pare-feu avec nmap en scannant les ports autorisés :

$ nmap -p 22,80,8282,2221,2222 IP_FIREWALL

Le test doit vérifier que les ports 22, 80, 8282, 2221, et 2222 sont ouverts sur IP_FIREWALL, conformément aux règles de Shorewall définies dans la configuration.