wiki/HowtoOpenBSD/PacketFilter.md

212 lines
4.3 KiB
Markdown
Raw Normal View History

2017-01-20 11:17:20 +01:00
---
categories: openbsd network firewall
2017-11-29 11:11:08 +01:00
title: Howto PacketFilter
2017-01-20 11:17:20 +01:00
---
2016-12-29 11:25:39 +01:00
## Tips & Astuces
2017-11-29 11:09:45 +01:00
### Général
Activer PacketFilter :
> Note : Attention, comme les règles qui seront activées n'auront pas d'état, pf va couper **toutes** les connexions.
2017-11-29 11:09:45 +01:00
~~~
# pfctl -e
~~~
Désactiver PacketFilter :
~~~
# pfctl -d
~~~
Vérifier la configuration sans la charger :
2016-12-29 11:25:39 +01:00
~~~
# pfctl -nf /etc/pf.conf
~~~
Recharger la configuration :
~~~
# pfctl -f /etc/pf.conf
~~~
2017-11-29 11:09:45 +01:00
### Utilisation détaillée
#### Observation
2016-12-29 11:25:39 +01:00
Voir la QoS en temps réel :
~~~
# systat queue
# pfctl -s queue -vv
~~~
2017-11-29 11:09:45 +01:00
Voir toutes les règles actuellement en place :
2017-09-13 20:54:45 +02:00
~~~
2017-11-29 11:09:45 +01:00
# pfctl -sr
2017-09-13 20:54:45 +02:00
~~~
2017-11-29 11:09:45 +01:00
Voir toutes les règles actuellement en place, avec les statistiques :
2016-12-29 11:25:39 +01:00
~~~
2017-11-29 11:09:45 +01:00
# pfctl -vsr
2016-12-29 11:25:39 +01:00
~~~
2017-10-20 17:58:19 +02:00
Obtenir la règle numéro 42 :
~~~
# pfctl -sr -R42
~~~
2016-12-29 11:25:39 +01:00
Liste des états :
~~~
# pfctl -s states | less
~~~
Liste des états avec statistiques, notamment l'âge et l'expiration de l'état :
~~~
# pfctl -vs states | less
~~~
Obtenir le nombre d'états :
~~~
2017-11-29 11:09:45 +01:00
# pfctl -si | grep curr
~~~
2017-11-29 11:09:45 +01:00
Toutes les infos sur PF :
~~~
# pfctl -sa | less
~~~
#### Action
2016-12-29 11:25:39 +01:00
Flush des états :
~~~
# pfctl -F states
~~~
2017-11-29 11:09:45 +01:00
Gestion des tables :
2016-12-29 11:25:39 +01:00
~~~
2017-11-29 11:09:45 +01:00
# pfctl -t <table> -T show/flush/kill/add/delete
2016-12-29 11:25:39 +01:00
~~~
2017-06-14 23:58:37 +02:00
2017-11-29 11:09:45 +01:00
#### Logs
Voir les logs :
2017-06-14 23:58:37 +02:00
~~~
2017-11-29 11:09:45 +01:00
# tcpdump -n -e -ttt -r /var/log/pflog
~~~
Voir les vieux logs :
~~~
# zcat /var/log/pflog.0.gz |tcpdump -ne -ttt -r -
~~~
Voir les logs en temps réel :
~~~
# tcpdump -n -e -ttt -i pflog0
2017-06-14 23:58:37 +02:00
~~~
## FAQ
### pfctl: warning: namespace collision with \<table\> global table.
2017-06-14 23:58:37 +02:00
2017-09-13 20:53:44 +02:00
Il faut a priori effacer la table avec
2017-06-20 21:54:55 +02:00
~~~
# pfctl -t <table> -T kill
~~~
2017-10-31 15:30:02 +01:00
### Valeurs des timeout
2017-11-29 11:09:45 +01:00
D'après le man :
2017-10-31 15:30:02 +01:00
~~~
set optimization environment
Optimize state timeouts for one of the following network
environments:
aggressive
Aggressively expire connections. This can greatly reduce
the memory usage of the firewall at the cost of dropping
idle connections early.
conservative
Extremely conservative settings. Avoid dropping
legitimate connections at the expense of greater memory
utilization (possibly much greater on a busy network) and
slightly increased processor utilization.
high-latency
A high-latency environment (such as a satellite
connection).
normal A normal network environment. Suitable for almost all
networks.
satellite
Alias for high-latency.
~~~
2017-11-29 16:53:05 +01:00
Comparaison des valeurs des modes *aggressif* et *normal*
~~~
Agressive Normal
tcp.first 30s 120s
tcp.opening 5s 30s
tcp.established 18000s 86400s
tcp.closing 60s 900s
tcp.finwait 30s 45s
tcp.closed 30s 90s
tcp.tsdiff 10s 30s
udp.first 60s 60s
udp.single 30s 30s
udp.multiple 60s 60s
icmp.first 20s 20s
icmp.error 10s 10s
other.first 60s 60s
other.single 30s 30s
other.multiple 60s 60s
frag 60s 60s
interval 10s 10s
adaptive.start 6000 states 6000 states
adaptive.end 12000 states 12000 states
src.track 0s 0s
~~~
À titre d'indication, en mode *satellite*
2017-10-31 15:30:02 +01:00
~~~
tcp.first 180s
tcp.opening 35s
tcp.established 86400s
tcp.closing 905s
tcp.finwait 50s
tcp.closed 95s
tcp.tsdiff 60s
udp.first 60s
udp.single 30s
udp.multiple 60s
icmp.first 20s
icmp.error 10s
other.first 60s
other.single 30s
other.multiple 60s
frag 60s
interval 10s
adaptive.start 6000 states
adaptive.end 12000 states
src.track 0s
~~~