OpenBSD Packet Filter - un exemple basique
Par zokar le mardi, août 31 2010, 14:43 - Sysadmin - Lien permanent
Un petit billet à nouveau qui sert de mémo pour une config "de base" pour un fichier pf.conf
Premièrement, désactiver pf sur votre OpenBSD par la commande suivante :
# pfctl -d
On édite le fichier /etc/pf.conf, et voilà à quoi ressemble le mien :
# $OpenBSD: pf.conf,v 1.49 2009/09/17 06:39:03 jmc Exp $ # # See pf.conf(5) for syntax and examples. # Remember to set net.inet.ip.forwarding=1 and/or net.inet6.ip6.forwarding=1 # in /etc/sysctl.conf if packets are to be forwarded between interfaces. # Configuration des interfaces int_if="bge0" ext_if="pppoe0" # Adresses connues table <addr_connues> {1.2.3.4} # Machines connues addr_fw="192.168.0.210" addr_samba="192.168.0.211" addr_old="192.168.0.253" # On autorise tout sur l'interface locale set skip on lo # On autorise la sortie depuis le réseau interne match out on $ext_if from ($int_if:network) nat-to ($ext_if) # On bloque le loging block log # On autorise tout en entrée/sortie sur l'interface interne pass on $int_if # On autorise tout en sortie sur l'interface publique pass out on $ext_if # On autorise le ping pass in on $ext_if proto icmp # On autorise Les adresses connues à se connecter a des ports spécifiques pass in on $ext_if from <addr_connues> to ($int_if:network) port {8081 8082 ssh 2222 2223 5666 5667 5668} # On autorise les connections publiques aux ports suivants pass in on $ext_if proto tcp from any to ($ext_if) port {http} # Redirrections de ports pass in on $ext_if proto tcp from <addr_connues> to ($ext_if) port 2222 rdr-to $addr_samba port ssh pass in on $ext_if proto tcp from <addr_connues> to ($ext_if) port 2223 rdr-to $addr_old port ssh pass in on $ext_if proto tcp from <addr_connues> to ($ext_if) port 5667 rdr-to $addr_samba port 5666 pass in on $ext_if proto tcp from <addr_connues> to ($ext_if) port 5668 rdr-to $addr_old port 5666 pass in on $ext_if proto tcp from <addr_connues> to ($ext_if) port http rdr-to $addr_old pass in on $ext_if proto tcp from <addr_connues> to ($ext_if) port 8081 rdr-to $addr_fw port http pass in on $ext_if proto tcp from <addr_connues> to ($ext_if) port 8082 rdr-to $addr_samba port http
Les explications :
- $ext_if est l'appel d'une variable, dans notre cas, c'est un nom d'interface réseau
- ($ext_if) et l'appel d'un calcul dans notre cas, c'est l'adresse IP associée au nom d'interface réseau
- ($int_if:network) est l'appel d'un calcul dans notre cas, et renvoie le réseau de l'interface prise en paramètre
- http ou ssh sont des constantes de pf et définissent des ports standards
Dans notre cas, on utilise le NAT. Il faudra donc penser à activer le forwarding dans /etc/sysctl.conf :
net.inet6.ip6.forwarding=1 net.inet.ip.forwarding=1
Pour réactiver pf :
# pfctl -ef /etc/pf.conf
Pour terminer, pour recharger les règles pf (après modification) :
# pfctl -f /etc/pf.conf
Commentaires
merci, ça m'a bien aidé pour ma première configuration de PF