mardi 3 août 2010

Building PFSense Firewall appliance

Depuis quelques temps maintenant, j'utilise les appliances virtuelles pfSense, FreeBSD based, avec un grand succés: stabilité et fonctionnalité.

Je me suis lancé dans la customisation des iso pour nos usages internes.
Pour ce faire, il faut recompiler l'appliance en Embedded mais avec les packages kivonbien: arping (indispensable), openBGPD, enlever la stack OLSR et autres choses inutiles pour nous (captive portal etc...) et préconfigurer la distribution.

Une partie de tout cela ne sera pas publiée, car la configuration interne de nos réseaux n'a rien à faire sur Internet.

Par contre, à partir des indications du site www.pfsense.org, je me suis construit un script de "building from scratch" des sources pour la distribution 2.0 qui marche pas mal (un peu brouillon, mais c'est un début).

1) il faut installer un FreeBSD 8.1-RELEASE (pas envie de faire ca dans une jail, VMWare is your friend)
2) il faut ajouter dans /etc/make.conf
WITHOUT_X11=yes
BATCH=yes
NO_PROFILE=no
NO_MANCOMPRESS=no

3) lancer "sh launch_build.sh"
====================================================================
#! /bin/sh

BASEDIR=/usr/home/pfsense

test_make_conf(){
        grep -q ^$1 /etc/make.conf
        if [ $? -ne 0 ]; then
                echo $1 >> /etc/make.conf
        fi
}

safe_mkdir(){
        if [ ! -d ${BASEDIR}/$1 ]; then
                mkdir -p ${BASEDIR}/$1
        fi
}

ports_install(){
        cd /usr/ports/$1
        make check-already-installed 2>&1 > /dev/null && make install distclean
}

test_make_conf WITHOUT_X11=yes
test_make_conf BATCH=yes
test_make_conf NO_PROFILE=no
test_make_conf NO_MANCOMPRESS=no

safe_mkdir pfSenseGITREPO
safe_mkdir installer
safe_mkdir freesbie2
if [ ! -d /usr/pfSensesrc ]; then
        mkdir -p /usr/pfSensesrc
fi

echo "Updateting ports"
/usr/sbin/portsnap fetch && /usr/sbin/portsnap update
echo "Update vulnerabilities DB"
if [ ! -f /usr/local/sbin/portaudit ]; then ports_install ports-mgmt/portaudit; fi
/usr/local/sbin/portaudit -Fq
ports_install textproc/expat2
ports_install devel/git
ports_install sysutils/fastest_cvsup
rehash

cd ${BASEDIR}

echo "GIT checkout"
if [ -d tools ]; then rm -rf tools; fi
git clone http://gitweb.pfsense.org/pfsense-tools/mainline.git tools
if [ -d freesbie2 ]; then rm -rf freesbie2; fi
cd ${BASEDIR}/tools/builder_scripts && chmod a+rx *.sh

echo "Getting FreeBSD sources"
csup -h `fastest_cvsup -c tld -q` /usr/share/examples/cvsup/standard-supfile

cd ${BASEDIR}/tools/builder_scripts
./menu.sh
============================================================================
4) Choisir la version RELENG_8_1
5) lancer le build d'une image ISO pour commencer.

... à suivre