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 ;)