OVH Cloud OVH Cloud

[OpenBSD] pf

12 réponses
Avatar
François RONVAUX
Bonjour,


Je suis en train de réfléchir à la migration de ma gateway/firewall sous
Linux à OpenBSD. L'essentiel de ce travail consiste à porter le jeu de
règles Netfilter vers pf. J'ai (pour l'instant) deux questions.



QUESTION 1)
-----------

Mon architecture réseau ressemble à ceci :


LAN ---- LAN_IF [OpenBSD] EXT_IF ---- (Internet)


En lisant la documentation et les quelques exemples qu'elle contient* je
ne parviens pas à déterminer comment autoriser la trafic sortant du LAN
(et de la DMZ, mais la syntaxe sera la même). Laquelle de ces deux
règles faut il utiliser ?

pass in quick on $LAN_IF inet proto tcp from ($LAN_IF:network) \
to any port xyz modulate state

pass out quick on $EXT_IF inet proto tcp from ($LAN_IF:network) \
to any port xyz modulate state



QUESTION 2)
-----------

Quelles sont vraiment les différences entre les options "antispoof" et
"urpf-failed" ?

J'ai lu la doc et pour ce que j'en comprend, les deux font la même choses.



*je trouve d'ailleurs qu'il y a sur Internet bien plus de jeux de règles
Netfilter que pf pour assister le débutant, si vous connaissez quelques
liens qui pourraient m'aider...



Merci d'avance pour vos réponses.

2 réponses

1 2
Avatar
Erik LE VACON
Arnal a écrit :
François RONVAUX a écrit :
Re-bonjour,


J'ai une nouvelle question, sur la résolution des adresses IP par pf.

Est il possible d'autoriser les connexions vers l'ensemble d'un
domaine ? Ce qui donnerait par exemple :

pass out from any to *.domain.com


Je n'ai rien vu dans la doc à ce sujet :-(


Merci d'avance.


Non, mais on peut créer une table et avec un script la charger et la
recharger à interval régulier

Par exemple pour charger la table bogon j'ai un script comme celui ci

#!/bin/sh
BOGON_CUR=/etc/ip-bogon
BOGON_NEW=/root/bogon-bn-agg.txt
PFCTL=/sbin/pfctl
WGET='/usr/bin/ftp'
BOGON_DL='http://www.cymru.com/Documents/bogon-bn-agg.txt'

echo ""
echo -n "Fetching bogon list: "
cd /root
$WGET $BOGON_DL
if [ -s $BOGON_NEW ]
then
echo "bogon table found, comparing to current..."
diff $BOGON_CUR $BOGON_NEW > /root/bogon-diff.txt
if [ -s /root/bogon-diff.txt ]
then
echo "Bogon table appears to have changed."
echo -n "Attempting to load new bogon table: "
mv $BOGON_NEW $BOGON_CUR
$PFCTL -t bogon -T flush
if [ `$PFCTL -T load -f /etc/pf.conf` ]
then
echo "something went wrong!"
else
echo "success!"
echo 'Diffs: (< Old > New)'
/bin/cat /root/bogon-diff.txt
fi
else
echo "Bogon table NOT changed."
/bin/rm $BOGON_NEW
fi
/bin/rm /root/bogon-diff.txt
else
echo "bogon table NOT found."
fi
cd




Bonjour,

Alors là je suis surpris, et la doc suivante:
http://www.openbsd.org/faq/pf/fr/nat.html est en désaccord avec la
réponse ci dessus. J' ai moi même des règles qui contiennent des
adresses FQDN et une fois que PF a chargé le lot de règles, celles ci
sont résolues.

A mon avis, celà est possible (j' ai un OpenBSD 4.2) et pf en standard.

Erik LE VACON
Avatar
Erik LE VACON
Erik LE VACON a écrit :
Arnal a écrit :
François RONVAUX a écrit :
Re-bonjour,


J'ai une nouvelle question, sur la résolution des adresses IP par pf.

Est il possible d'autoriser les connexions vers l'ensemble d'un
domaine ? Ce qui donnerait par exemple :

pass out from any to *.domain.com


Je n'ai rien vu dans la doc à ce sujet :-(


Merci d'avance.


Non, mais on peut créer une table et avec un script la charger et la
recharger à interval régulier

Par exemple pour charger la table bogon j'ai un script comme celui ci

#!/bin/sh
BOGON_CUR=/etc/ip-bogon
BOGON_NEW=/root/bogon-bn-agg.txt
PFCTL=/sbin/pfctl
WGET='/usr/bin/ftp'
BOGON_DL='http://www.cymru.com/Documents/bogon-bn-agg.txt'

echo ""
echo -n "Fetching bogon list: "
cd /root
$WGET $BOGON_DL
if [ -s $BOGON_NEW ]
then
echo "bogon table found, comparing to current..."
diff $BOGON_CUR $BOGON_NEW > /root/bogon-diff.txt
if [ -s /root/bogon-diff.txt ]
then
echo "Bogon table appears to have changed."
echo -n "Attempting to load new bogon table: "
mv $BOGON_NEW $BOGON_CUR
$PFCTL -t bogon -T flush
if [ `$PFCTL -T load -f /etc/pf.conf` ]
then
echo "something went wrong!"
else
echo "success!"
echo 'Diffs: (< Old > New)'
/bin/cat /root/bogon-diff.txt
fi
else
echo "Bogon table NOT changed."
/bin/rm $BOGON_NEW
fi
/bin/rm /root/bogon-diff.txt
else
echo "bogon table NOT found."
fi
cd




Bonjour,

Alors là je suis surpris, et la doc suivante:
http://www.openbsd.org/faq/pf/fr/nat.html est en désaccord avec la
réponse ci dessus. J' ai moi même des règles qui contiennent des
adresses FQDN et une fois que PF a chargé le lot de règles, celles ci
sont résolues.

A mon avis, celà est possible (j' ai un OpenBSD 4.2) et pf en standard.

Erik LE VACON




Pour préciser, les variables src_addr et dst_addr peuvent etre
spécifiées sous forme de FQDN, toujours d' après la doc, et vérifié en
prod chez moi.

Erik LE VACON
1 2