Je regroupe ici mes notes sur Packet Filter le pare-feu du système d'exploitation OpenBSD
/etc/pf.conf
/usr/share/pf
pfctl -nf /etc/pf.conf
pfctl -nvf /etc/pf.conf
pfctl -f /etc/pf.conf
pfctl -F rules
pfctl -F all
pfctl -s rules
pfctl -s info
pfctl -s all
pfctl -s state
pfctl -k host | network
tcp_services = "{ ssh, domain, www, https }"
pass out proto tcp to any port $tcp_services keep state
pf=YES #activer PF pf_rules=/etc/pf.conf # précise l'emplacement du fichier de regles (optionnel)
pfctl -e #Enable : active PF pfctl -ef /etc/pf.conf #File : permet de préciser un fichier de règles à charger.
block in all #bloquer tout le trafic entrant block all #bloquer le trafic entrant et sortant. A mettre en premier. pass out all keep state #keep state (conserver l'état) comportement par défaut (keep state flags S/SA, laisse passer le flux de retour correspondant à cette connexion. no state pour ne pas prendre en compte l'état)
# sysctl net.inet.ip.forwarding=1
# sysctl net.inet6.ip6.forwarding=1
Il faut éditer le fichier /etc/sysctl.conf.
net.inet.ip.forwarding=1 net.inet6.ip6.forwarding=1
#MACROS ext_if = "re0" int_if = "re1" localnet = $int_if:network #NAT match out on $ext_if from $localnet to any nat-to $ext_if #FILTRAGE block all pass from { lo0, $localnet } to any keep state
A savoir : Les règles sont lues de haut en bas. C'est la dernière règle qui correspondra qui sera appliquée. Le mot clé quick permet de s'affranchir de cet ordre. Lorsqu'un paquet correspond à une règle quick, il est traité selon cette règle.
NB : il est de bon usage de placer ses règles de NAT avant ses règles de filtrage.
#MACROS ext_if = "re0" int_if = "re1" client_out = "{ ftp-data, ftp, ssh, domain, pop3, auth, nntp, http, https, 446, cvspserver, 2628, 5999, 8000, 8080 }" udp_services = "{ domain, ntp }" localnet = $int_if:network #NAT match out on $ext_if from $localnet to any nat-to $ext_if #FILTRAGE block all pass inet proto tcp from $localnet to any port $client_out keep state pass quick inet proto { tcp, udp } from $localnet to any port $udp_services keep state
Redirection ANY:22 vers 10.0.0.2 22 :
pass in quick on $ext_if proto tcp from any to any port ssh rdr-to 10.0.0.2 port ssh
pass in inet proto tcp from any to $ext_if port ssh keep state
Contact :