Firewall redondant avec OpenBSD et PF en mode bridge et RSTP
Ce document est une traduction de l'espagnol de la présentation
réalisée par Jordi Espasa Clofent lors du Barcelona BSDCon 2008.
Le problème / Candidats
Trouver une solution de pare-feux répondant aux critères suivants, avec les choix possibles.
- Évolutivif : une bonne implémentation de TCP/IP
- Ne pas altérer la topologie du réseau : Bridge
- Basée sur des logiciels libres : *BSD, GNU/Linux
- Redondante : (R)STP
- Simple : PF, IPFW
- Puissant : PF, IPFW
Matrice de choix
La table ci-dessous évalue par critére la satisfaction apportée par chaque solution retenue.
Un certains nombre de ses critères sont bien entendu subjectifs
| Critères | OpenBSD + PF | FreeBSD + PF | FreeBSD + IPFW | GNU/Linux + iptables |
|---|---|---|---|---|
| Puissance | | | | |
| Simplicité | | | | |
| Pile TCP/IP | | | | |
| Solidité | | | | |
| Support RSTP | | | | |
Choix retenu
Le choix retenu à été OpenBSD avec Packet Filter pour les raisons suivantes :
- sécurité apportée par OpenBSD (audit constant du code, peu de vieux bugs)
- support de RSTP depuis la v4.1
- Bons résultats dans des test de perf réalisés au moyen de iperf et netperf
Redondance en mode bridge : RSTP
- redondance IP : CARP - redondance en mode bridge : STCP/RSTCP - synchro entre noeud atif/pasif : pfsync
Choix du matériel
CPU : mono processeur
Le choix du mono processeur est motivé par le mauvaise support du multiprocesseur par OpenBSD et donc par PF.
Mémoire : L'élément clé
La majorité des traitements effectués par PF se déroulent en mémoire. On doit considérer avec soin cet élément.
Disque dur
Sauf si nous souhaitons effectuer des traces, le disque sera un élément sous employé. On peut même envisager de le remplacer par une carte flash.
Carte réseau
Les drivers suivants sont supportés par OpenBSD :
- em(4) : Intel(R) PRO/1000 Gigabit Ethernet adapter drive
- bge(4): Broadcom BCM570x/5714/5721/5750/5751/5752/5789 PCI Gigabit Ethernet adapter driver
- sk(4) : SysKonnect SK-984x and SK-982x PCI Gigabit Ethernet adapter driver
Malgré la forte préférence de Théo pour sk, notre choix se portera sur em(4).
IRQ / Bus de données
Afin que notre architecture soit cohérente, nous optons pour une carte GB ethernet sur PCI Express
Configuration des interfaces réseau
# Identifier et monter les cartes réseau $ echo "up" > /etc/hostname.em0 $ echo "up" > /etc/hostname.em1
$cat /etc/bridgename.bridge0 #Configuration du bridge add em1 add em0 -learn em1 -learn em0 stp em1 # requis sinon pas de stp stp em0 # requis sinon pas de stp up
Configuration de la redondance : maitre
# Configuration de la machine maitre $ ifconfig em1 10.10.10.1 netmask 255.255.255.0 $ ifconfig pfsync0 syncdev em1 $ ifconfig pfsync0 up
# Ajout des valeurs de manière permanente $ cat /etc/hostname.em3 inet 10.10.10.1 255.255.255.255.0 NONE
# Montage de la l'interface réseau $cat /et/hostname.pfsync0 up syncdev em3
Configuration de la redondance : esclave
# Configuration de la machine esclave $ ifconfig em1 10.10.10.2 netmask 255.255.255.0 $ ifconfig pfsync0 syncdev em1 $ ifconfig pfsync0 up
# Ajout des valeurs de manière permanente $ cat /etc/hostname.em3 inet 10.10.10.2 255.255.255.255.0 NONE
# Montage de la l'interface réseau $cat /et/hostname.pfsync0 up syncdev em3
Outils de motorisations du pare feux
- Les outils PF
- pfstats
- pftop
- D'autres outils
- Les classique top, vmstat,ps….
Autres liens (extra-ball)
Deux articles sur undeadly aka “The OpenBSD journal”