Tutoriel | Installer et configurer le firewall Shorewall
Article publié le 23 Juin 2016
Un petit tuto sur le firewall Shorewall qui simplifie grandement la configuration d’IPTABLES. En effet avec Shorewall vous pouvez configurer de manière très efficace IPTABLE juste avec une petite poignée de fichiers de configuration (très utile pour de nombreux serveurs dédiés piratés…)
1) Installation
Sous Debian/ Ubuntu:
apt-get install shorewall shorewall-core
(sans oublier shorewall6 si vous avez une interface réseau avec une adresse IPV6)
Sous RedHat/Centos
Shorewall n’est pas dans les dépots officiels de ces distributions. Pour cela il est nécessaire de rajouter les dépôts de shorewall:
Créez le fichier /etc/yum.repos.d/shorewall.repo et rajouter les lignes suivantes:
[shorewall]
name = RHEL $releasever – Shorewall – sysadminguide.net
baseurl = http://mirror.sysadminguide.net/shorewall
enabled = 1
protect = 0
gpgcheck = 0
Puis installez shorewall:
yum install shorewall, shorewall-core
(Sans oublier shorewall6 si vous avez une interface réseau avec une adresse IPV6;-))
2) Configuration
2.1) Sous Debian:
Copiez les fichiers de configurations depuis le répertoire /usr/share/doc/shorewall/examples/one-interface vers /etc/shorewall
cd /usr/share/doc/shorewall/examples/one-interface && cp {interfaces, policy, shorewall.conf.gz, zones} /etc/shorewall && gunzip /etc/shorewall/shorewall.conf.gz
cd /usr/share/doc/shorewall6/examples/one-interface && cp {interfaces, policy, shorewall.conf.gz, zones} /etc/shorewall6 && gunzip /etc/shorewall6/shorewall.cong.gz (si vous avez une adresse IPv6)
Créez le fichier /etc/shorewall/rules (également pour /etc/shorewall6/rules le cas échéant) et ajoutez y les lignes suivantes:
?SECTION NEW
SHELL cat /etc/shorewall/rules.d/*.rules 2> /dev/null || true
Puis créez le répertoire /etc/shorewall/rules
mkdir /etc/shorewall/rules.d
(mkdir /etc/shorewall6/rules.d)
2.2) RedHat
La procédure est presque identique à celle de Debian.
Copier les fichiers disponibles ICI dans le répertoire /etc/shorewall/ et /etc/shorewall6 (si vous avec une adresse IPv6).
Créer les répertoire /etc/shorewall/rules.d et /etc/shorewall6/rules.d
mkdir /etc/shorewall/rules.d (mkdir /etc/shorewall6/rules.d).
3) Paramétrage du Firewall
La politique appliquée ici (étant une best practice) est de tout bloquer et d’ouvrir uniquement les ports utilisés.
Pour cela il suffit de créer des fichiers contenant les règles dans le répertoires /etc/shorewall/rules.d
Exemple pour rendre accessible le port SSH que pour certaines IP:
vi /etc/shorewall/rules.d/ssh.rules
ACCEPT net:<ip autorisée> $FW tcp 22
ACCEPT net:<deuxième ip autorisée> $FW tcp 22
Il est également possible d’autoriser une plage d’IP:
vi /etc/shorewall/rules.d/votreservice.rules
ACCEPT net:<ip autorisée> $FW tcp 7896,9800:9809
ACCEPT net:<deuxième ip autorisée> $FW tcp 7896,9800:9809
# UDP
ACCEPT net:<ip autorisée> $FW udp 7896,9800:9809
ACCEPT net:<deuxième ip autorisée> $FW udp 7896,9800:9809
Une fois votre configuration effectuée nous allons activer shorewall.
- Editez le fichier /etc/shorewall/shorewall.conf et modifier la ligne « STARTUP_ENABLED=No » par « STARTUP_ENABLED=Yes »
- Editez le fichier /etc/default/shorewall et remplacez « startup=0 » par « startup=1 »
- Lancez shorewall avec la commande service shorewall start
Il ne reste plus qu’à vérifier que votre firewall contient toutes les règles que vous avez paramétré avec la commande iptables -L
Certains serveurs dédiés (notamment chez OVH) possèdent une adresse IPv4 et IPv6 sur 2 interfaces. Je tiens à souligner l’importance du paramétrage du firewall sur l’interface IPv6 avec shorewall6 (répertoire de configuration /etc/shorewall6). Un oubli pourrait transformer votre machine en passoire.