HLab

Julien Hautefeuille

Pf et Openbsd

Le firewall utilisé ici est le firewall PF disponible sous le système d’exploitation Openbsd.

La version du système Openbsd utilisée est la version 5.0.

PF est une solution de routage efficace, puissante et gratuite.

Le principe est ici simple, on ne filtre que les paquets entrants. Tous les paquets sortants sont autorisés.

Le NAT est utilisé pour la translation d’adresses.

La gestion de la bande passante est appliquée aux flux entrants et sortants.

Et diverses fonctions de sécurité sont ici employées et fournies par défaut par le firewall PF (antispoofing, sonde de détection des scanners de ports).

Exemple d’un firewall destiné à protéger une petite structure

Exemple :

lan_if = "re0"
wan_if = "sis0"
lan_net = "192.168.0.0/24"
nas = "192.168.0.99"
antec = "192.168.0.50"

tcp_services = "{ 22 113 }"
icmp_types = "echoreq"

altq on $wan_if priq bandwidth 600Kb queue { q_pri, q_def }
    queue q_pri priority 7
    queue q_def priority 1 priq(default)

set skip on lo0
set block-policy return
set loginterface $wan_if

anchor "ftp-proxy/*"
pass in quick on $lan_if inet proto tcp to any port ftp divert-to \
127.0.0.1 port 8021

match in all scrub (no-df)
match out on egress inet from !(egress) to any nat-to (egress:0)

table <bruteforce>
block drop in log quick from <bruteforce> to any
block in log
block in quick from urpf-failed

pass out quick queue (q_def, q_pri)

antispoof quick for { lo $lan_if }

pass in on egress inet proto tcp from any to egress port $tcp_services flags S/SA keep state \
(max-src-conn-rate 3/30,overload <bruteforce> flush global) queue (q_def, q_pri) 

pass in inet proto icmp all icmp-type $icmp_types queue (q_def, q_pri)

#pass in on egress inet proto tcp to (egress) port 80 rdr-to  \ 
$antec synproxy state queue (q_def, q_pri)

pass in on $lan_if queue (q_def, q_pri)