Installation et configuration de shorewall par nc4d.
Contexte : ordinateur de bureau, avec une seule carte réseau (“one-interface”).
Ce tutoriel est destiné aux personnes cherchant à mettre en place un pare-feu efficace sans se plonger dans la documentation iptables.
Objectif : configuration pour une utilisation standard, avec tous les ports masqués et requêtes icmp (ping) ignorées.
Commande à exécuter en root
$ Commande à exécuter en simple utilisateur
Sommaire
1- Introduction
2- Installation
3- Configuration
_3.1- /etc/shorewall/interfaces
_3.2- /etc/shorewall/zones
_3.3- /etc/shorewall/policy
_3.4- /etc/shorewall/rules
4- Lancement automatique au démarrage
5- Démarrage
6- Commandes utiles
7- Tester son firewall
8- Plus d’infos sur shorewall
1_Introduction
Shorewall (The Shoreline Firewall) est un outil puissant en ligne de commandes.
Il permet de configurer netfilter, le pare-feu intégré au noyau linux.
C’est un programme libre, disponible dans les dépôts “main” de debian, qui est à mon avis plus abordable que l’écriture d’un script iptables.
2_Installation
- Désinstallez éventuellement firestarter:
- Installation de shorewall (disponible dans synaptic):
3_Configuration
La configuration de shorewall passe essentiellement par quatre fichiers : interfaces, policy, zones et rules.
- Copiez provisoirement les fichiers d’exemple de configuration dans votre home:
Vous pouvez jeter un coup d’oeil au README.txt
- Copiez interfaces, policy, zones et rules dans le répertoire de shorewall:
- Effaçez le répertoire créé provisoirement dans votre home:
- Editez les fichiers de configuration pour les adapter à vos besoins:
Il sont très commentés et contiennent de nombreuses informations, je conseille de s’y attarder.
J’utilise vim, modifiez pour utiliser votre éditeur de texte préféré.
3.1- /etc/shorewall/interfaces
(carte réseau sur laquelle shorewall filtre les paquets)
Si votre ordinateur possède une adresse IP statique, supprimez l’option “norfc1918”.
Sinon ne rien modifier, enregistrez / quittez.
3.2- /etc/shorewall/zones
(il y à deux zones, le firewall et internet)
Ne rien modifier, enregistrez / quittez.
3.3- /etc/shorewall/policy
(politique par défaut du pare-feu)
Ne rien modifier, enregistrez / quittez.
Par défaut, shorewall ignore les paquets provenant du net a destination du firewall (connexions entrantes); et accepte les paquets provenant du firewall a destination du net (connexions sortantes).
Cette politique convient pour un ordinateur de bureau, pour un serveur il est judicieux de bloquer également les connexions sortantes et de n’autoriser que le trafic désiré grâce au fichier rules que nous allons voir.
3.4- /etc/shorewall/rules
(fichier contenant les exceptions à la politique par défaut)
Le fichier rules est le plus important. Après avoir établi une politique par défaut dans le fichier policy, le fichier rules permet de lister les exceptions vis à vis de cette politique par défaut, c’est à dire les ports que l’on souhaite ouvrir.
A savoir avant de modifier :
On a deux zones le “net” et le “$FW” (firewall)
Trois actions (pour faire simple):
ACCEPT = accepter
REJECT = refuser
DROP = ignorer (preferez-le à reject)
La politique par défaut est d’ignorer toutes les connexions entrantes / d’accepter toutes les connexions sortantes.
Une fois les modifications effectuées, enregistrez / quittez.
Exemple de configuration du fichier rules:
[code]#############################################################################################################
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/
PORT PORT(S) DEST LIMIT GROUP
Ping
DROP net $FW icmp
ACCEPT $FW net icmp
Masquer identité
DROP net $FW tcp 113
aMule (exemple)
#ACCEPT net $FW tcp 4662
#ACCEPT net $FW udp 4672
Ftp en mode passif (exemple)
#ACCEPT net $FW tcp 21
#ACCEPT $FW net tcp 21
#ACCEPT net $FW tcp 50000:50100
#ACCEPT $FW net tcp 50000:50100
#LAST LINE – ADD YOUR ENTRIES BEFORE THIS ONE – DO NOT REMOVE[/code]
Explications :
- On rejette le ping venant du net a destination du firewall, et on autorise l’inverse.
- Masquer identité, permet de masquer le port 113.
On peut aussi éditer le fichier /etc/inetd.conf et commenter la ligne suivante:
#ident stream tcp wait identd /usr/sbin/identd identd - aMule avec les ports par défaut.
- Ouvrir une plage de port avec l’exemple du ftp passif:
pour ouvrir un plage de ports utilisez le symbole “:”, ici la plage de ports 50000 à 50100 est ouverte. Pour ouvrir deux ports ou plus utilisez “,” (20,21,80 par exemple). - A la place du numéro de port vous pouvez écrire le nom du service (ftp,www par exemple).
- Vous trouverez une liste des ports et des applications qui les utilisent dans le fichier /etc/services.
4_Activez shorewall au démarrage du système
et remplacez “startup=0” par “startup=1”
5_Lancez shorewall
… 'tention les yeux, ça va démarrer , surveillez bien le log de démarrage pour vérifier l’absence d’erreur(s) lors de l’activation des règles.
6_Commandes utiles
- Vérifier état de shorewall:
- Relancer shorewall après une modification:
- Afficher les 20 derniers paquets loggués:
- Afficher les connexions IP en cours:
- Remettre à zéro le conteur des bytes / paquets:
- Monitoring des paquets rejetés / ignorés:
7_Tester son firewall
- Depuis un autre poste à l’aide de nmap:
https://www.grc.com/x/ne.dll?bh0bkyd2
http://probe.hackerwatch.org/probe/probe.asp
8_Plus d’infos sur shorewall
man shorewall
/usr/share/doc/shorewall
/usr/share/doc/shorewall/default-config/
http://www.shorewall.net/
http://www.shorewall.net/Documentation.htm#Rules
N’hésitez pas à apporter votre contribution à ce document.
Vos suggestions / commentaires / corrections (insultes… ) sont les bienvenus.
nc4d : nc4d(point)negundo(A)gmail(point)com
edit: correction fautes d’orthographe / de frappe.