Retour

Bridge/Firewall transparent OpenBSD

Abstract

OpenBSD est un système d'exploitation dérivé de 4.4BSD, spécialement bien adapté pour les tâches qui ont un rapport avec la sécurité informatique, par exemple pour créer un firewall, un bridge transparent, etc... Il est disponible pour les plateformes i386, sparc, sparc64, alpha, powerpc, vax.

Le choix

Alors pourquoi pas choisir Linux? Tout simplement une question de compétence. D'autres systèmes sont plus particulièrement destinés à un usage de serveur, de bureautique ou autre, mais dans ce cas précis, OpenBSD est le système qui répond le mieux à un besoin spécifique.

Le cas qui m'intéresse est la protection d'un réseau local, connecté à un autre réseau local. Notez que ce cas pourrait aussi s'appliquer à la protection d'un réseau local connecté à l'Internet via une liaison xDSL, par exemple.

Software

OpenBSD 3.2 (la version que j'ai utilisée) peut être téléchargé (environ 125 Mb) depuis un des nombreux sites mirroir. La meilleure chose à faire est d'acheter le pack de CD officiels, chose qui permet aux développeurs de vivre et de continuer à améliorer OpenBSD.

Hardware

Bon je préviens que la machine de test est une "poubelle", mais c'est bien pour ça qu'elle a été choisie ...

Installation de l'OS

L'installation se fait soit par le réseau, soit avec un CD. J'ai installé l'os avec un CD bootable que j'ai fait moi-même après avoir téléchargé le répertoire "/pub/OpenBSD/3.2/i386/" de ftp.openbsd.org. Tous les composants de base à l'exception de X sont installés:

[X] base32.tgz
[X] etc32.tgz
[X] misc32.tgz
[X] comp32.tgz
[X] man32.tgz
[X] game32.tgz
[ ] xbase32.tgz
[ ] xshare32.tgz
[ ] xfont32.tgz
[ ] xserv32.tgz
[X] bsd

Patches

Après l'installation, j'ai téléchargé et installé les patches suivants:

# cd /usr/src
# patch -p0 < 002_pfbridge.patch
# patch -p0 < 005_pool.patch

Ensuite j'ai recompilé le kernel.

Configuration

Pour obtenir un bridge transparent qui fait office de firewall, nous allons modifier quelques paramètres de la configuration par défaut. Editer /etc/sysctl.conf et enlever le commentaire "#" devant la ligne:

net.inet.ip.forwarding=1

et activer le firewall "PF" dans /etc/rc.conf:

pf = YES

Les deux cartes réseau ont pour nom xl0 et xl1. Il faut commencer par effaçer leurs définitions:

# ifconfig xl0 delete
# ifconfig xl1 delete

Ensuite il faut activer les 2 cartes et créer la définition du bridge:

# echo "up" > /etc/hostname.xl0
# echo "up" > /etc/hostname.xl1
# echo "add xl0 add xl1 up" > /etc/bridgename.bridge0

Ensuite on redémarre la machine:

# reboot

On va créer une configuration qui bloque tout le traffic dans /etc/pf.conf:

# Définition des interfaces
ext_if = "xl0"			# Externe (modem ADSL) non-sécurisé
int_if = "xl1" # Interne (hub/switch) sécurisé # En mode bridge, on ne filter qu'une seule interface pass in quick on $ext_if all
pass out quick on $ext_if all # Bloque tout par défaut et LOG sur l'interface interne (sécurisée) block in log on $int_if all

Le fichier de configuration /etc/pf.conf est chargé comme suit:

# pfctl -R -f /etc/pf.conf

On peut visualiser les règles du filtre avec

# pfctl -s rules

Test du bridge

Vérifier le fonctionnement du bridge:

# ifconfig -a
...
bridge0: flags=41 <UP,RUNNING> mtu 1500
...

L'utilitaire tcpdump permet de sniffer ce qui se passe sur l'interface de pf en temps réel:

# tcpdump -i pflog0

Créer un CD bootable

Le shell script qui crée l'image ISO est:

#!/bin/sh
/usr/local/bin/mkisofs -v \
	-r \
	-l \
	-L \
	-T \
	-J \
	-V "OpenBSD-3.2" \
	-A "OpenBSD v3.2-Release, Custom ISO (Wilou), 11-01-2002." \
	-b 3.2/i386/cdrom32.fs \
	-c boot.catalog \
	-o openbsd-i386-3.2.iso \
	-x openbsd-i386-3.2.iso \
	/export/backup/images/bsd

Le répertoire de base est "/export/backup/images/bsd". C'est dans ce répertoire que l'image ISO "openbsd-i386-3.2.iso" va être déposée. Les fichiers qui constituent OpenBSD pour l'architecture i386 se trouvent dans un sous-répertoire "/export/backup/images/bsd/3.2/i386".

L'option "-b" indique le chemin d'accès au fichier de boot, cdrom32.fs.

Une fois que l'image est faite, il ne reste plus qu'à la graver sur un CD et de booter une machine avec!

Ressources


master@wilou.ch - 04.08.2003