pf.conf pour FreeBSD + IPv6 tunnel

Mon serveur tourne sur FreeBSD 10 et les services sont fournis par des jails sous Debian GNU/kFreeBSD. J'ai activé pf, le pare-feu sur l'hôte avec quelques règles de filtrage pour grosso modo tout autoriser en sortie, mais bloquer en entrée ce qui n'est pas désiré. Ces règles n'agissent que sur la partie IPv6 car je me repose sur le NAT de la box et les redirections de port pour filtrer ce qui entre l'IPv4.

Exemple

Dans l'exemple ci-dessous on va considérer les adresses suivantes :

  • Serveur IPv6 Address : 2001:470:c851::1
  • Client IPv6 Address : 2001:470:c851::2
  • www jail : 2001:470:c851::1001 (on va ouvrir les ports 80 et 443)
  • mail jail : 2001:470:c851::1002 (on va ouvrir les ports 25, 143 et 587)

Configuration

Note : Je me suis basé sur cette documentation chez SixXs.

/etc/rc.conf.local

# PF
pf_enable="YES"
pflog_enable="YES"

/etc/pf.conf/

# Macros
sendpoint = "2001:470:c851::1" # Votre Server IPv6 Address
cendpoint = "2001:470:c851::2" # Votre Client IPv6 Address
www = "2001:470:c851::1001" # ip de la jail www
mail = "2001:470:c851::1002" # ip de la jail mail
ext_inf = "gif0" # Mon interface tunnel

# don't filter l0
set skip on l0

# scrub incomming packets
scrub in all

# block in/out on $tun_if
block in log on $ext_inf inet6
block out log on $ext_inf inet6

# allow heartbeat ping
pass in quick on $ext_inf inet6 proto { ipv6-icmp } from $sendpoint to $cendpoin
t keep state

# pass tcp, udp, and icmp6 out on the ipv6 tunnel interface.
pass out quick on $ext_inf inet6 proto { tcp udp ipv6-icmp } keep state

# www jail
pass in quick on $ext_inf inet6 proto tcp from any to $www port { 80 443 }

# mail jail
pass in quick on $ext_inf inet6 proto tcp from any to $mail port { 25 143 587 }

Vérifier

pf dispose d'une commande pour vérifier un fichier de configuration :

# pfctl -vnf /etc/pf.conf

Charger

Lorsque la vérification est OK, on peut charger :

# service pf restart

Test en ligne

Certains sites vous proposent de scanner vos ports en ligne, notamment ce site. Il supporte les navigateurs en mode texte donc vous pouvez faire le scan directement depuis votre serveur ;)

Ressources

Vus : 565
Publié par Maniatux : 95