HLab

Julien Hautefeuille

Pont filtrant et Openbsd

Pont filtrant sous OpenBSD

Introduction

L’objectif est de protéger une partie de mon réseau local d’autres machines du réseau local.

La mise en place d’un pont filtrant est la solution que j’ai retenue.

Cette solution permet également de faire des audits de trafic puisqu’une grande partie du trafic internet passera par ce pont filtrant.

Cette solution se base sur le système d’exploitation OpenBSD.

Configuration du système

Certains recommandent la même configuration que pour le routage.

On active donc dans /etc/sysctl.conf :

net.inet.ip.forwarding=1

On crée le fichier /etc/rc.conf.local :

pf=YES

Configuration des interfaces

Je dispose des interfaces suivantes sis0 et xl0. La carte sis0 est la patte tournée vers l’intérieur du réseau à protéger. La carte xl0 est la carte de la patte tournée vers le routeur (vers l’extérieur).

modem ---- routeur ---- switch ---- xl0 pont sis0 ---- switch safe

Créer les 2 fichiers /etc/hostname.sis0 et /etc/hostname.xl0.

Pour /etc/hostname.sis0 :

192.168.0.4 255.255.255.0

Pour /etc/hostname.xl0 :

up

On positionne une adresse ip statique sur la patte intérieure du réseau à protéger, cela permet d’accéder au pont filtrant.

Configuration du pont

On crée le fichier /etc/hostname.bridge0 :

add sis0
add xl0
up

Configuration de packet filter

La configuration du firewall est largement personnalisable en fonction des besoins de chacun. Je propose donc ici une configuration minimale du firewall.

L’important dans cette configuration est de laisser le trafic entrant et sortant libre sur l’interface interne du réseau à protéger. Le filtrage s’effectue sur la patte extérieure du pont filtrant.

Ici on laisse sortir le trafic du réseau protégé vers l’extérieur mais on empêche tout trafic étranger de pénétrer sur le réseau protégé. On autorise uniquement le ping.

On édite le fichier /etc/pf.conf :

lan_if = "sis0"
wan_if = "xl0"
pass in quick on $lan_if
pass out quick on $lan_if
block in log on $wan_if all
pass out quick on $wan_if all
pass in on $wan_if inet proto icmp

On reboot la machine pour prendre en compte les modifications effectuées.

Contrôle des règles

On peut également contrôler le trafic sur l’interface du routeur avec tcpdump pour vérifier la véracité des règles du firewall :

# tcpdump -enttti pflog0
# tcpdump -enttti pflog0 host 192.168.0.111
# tcpdump -enttti pflog0 host 192.168.0.17 and tcp port 25