PF – Configuration de base sous FreeBSD

Démarrage de PF

Pour commencer, pf doit être autoriser à démarrer en ajoutant les lignes suivantes au fichier de configuration /etc/rc.conf :

> pf_enable="YES"
> pflog_enable="YES"

Sous FreeBSD pf est un module du noyau, il est chargeable de la façon suivante :

> sudo kldload pf

en tapant la commande

> sudo pfctl -e

doit donner le résultat :

No ALTQ support in kernel
ALTQ related functions disabled
pf enabled

Pour démarrer pf :

> sudo /etc/rc.d/pf start

et pour l’arrêter

> sudo /etc/rc.d/pf stop

Règles minimales

Fichier de configuration

Le fichier de configuration de PF se situe dans /etc et se nomme pf.conf.

En y écrivant les lignes suivantes, on dispose d’une configuration minimaliste du firewall :

> block in all pass out all keep state

La première ligne interdit tout trafic sortant. La seconde autorise toutes les requêtes sortantes et les réponses qui leur sont liées. PF garde un état (keep state) des demandes afin d’autoriser les réponses.

Chargement des règles

> sudo pfctl -ef /etc/pf.conf

Définition de macros

Dans l’ensemble de règles proposé précédemment, on autorise toutes les demandes sortantes, on peut vouloir être plus précis et n’autoriser que certains protocoles. Au lieu d’écrire une règle pour chaque protocole, il est possible de factoriser en définissant des macros.

> tcp-services = "{ssh, smtp, smtps, domain, www, https, auth, imaps}"
> udp-services = "{domain}"

Ainsi, deux macros ont été définies. Pour autoriser un nouveau protocole, il suffit d’ajouter son port ou son nom tel que défini dans /etc/services. Le fichier de configuration pf.cont réécrit en utilisant les macros est :

> block in all 
> pass out proto tcp to any port $tcp\_services 
> pass proto udp to any port $udp\_services

Une fois modifié, pf doit prendre en compte ces nouvelles règles :

> sudo pfctl -f /etc/pf.conf

comments powered by Disqus