LOG de PF: https://www.openbsd.org/faq/pf/logging.html __Manipulation en ligne de commande avec pfctl__ La commande pfctl accepte en paramètre exactement les mêmes types d'informations comme adresse (adresses IP, noms DNS, interfaces, …) que cité précédemment. Ajoutons que celle-ci n'est d'ailleurs pas cantonnée à l'unique manipulation des tables. Les exemples qui suivent seront basés sur la déclaration d'une table nommée blacklist visant à interdire les paquets de certaines adresses IP suite à des activités plus ou moins obscures : table { 125.60.86.214 208.159.106.199 81.237.54.31 76.89.10.213 } __Limitations de pfctl__ Il faut savoir que pfctl est soumis à certaines restrictions de la part du système et de l'implémentation de la commande elle-même : La commande pfctl n'altère que le contenu des tables en mémoire et ne répercute en aucun cas les différents changements demandés sur un quelconque fichier de configuration. Si vous avez besoin de synchroniser ces modifications en vue de les réappliquer au prochain démarrage de Packet Filter vous devrez le faire manuellement ou éventuellement à l'aide d'un script. Il vous sera impossible d'agir sur les tables à l'aide de pfctl si le niveau de sécurité du noyau atteint la valeur 2 sur NetBSD ou OpenBSD et la valeur 3 pour FreeBSD. Cette restriction concerne de manière plus générale les règles de filtrage qui sont ainsi chargées une bonne fois pour toutes avant le changement de ce niveau de sécurité. __Lister les adresses d'une table__ Vous pouvez à tout moment consulter le contenu d'une table à l'aide de pfctl. Illustration avec notre table blacklist : pfctl (-v) -t blacklist -T show Qui produira la sortie suivante : 76.89.10.213 81.237.54.31 125.60.86.214 208.159.106.199 __Ajouter des adresses à une table__ Imaginons maintenant que nous voulions ajouter de nouvelles adresses à notre liste noire : pfctl (-v) -t blacklist -T add 216.194.109.203 88.240.211.27 Notre table sera désormais composée des six adresses suivantes : 76.89.10.213 81.237.54.31 88.240.211.27 125.60.86.214 208.159.106.199 216.194.109.203 La table sera créée si celle-ci n'existe pas déjà. __Supprimer des adresses à une table__ Nous avons besoin de supprimer deux adresses de celle-ci : pfctl (-v) -t blacklist -T delete 125.60.86.214 76.89.10.213 Cette table contiendra de nouveau quatre adresses : 81.237.54.31 88.240.211.27 208.159.106.199 216.194.109.203 __Recharger le contenu de la table__ Nous souhaitons réinitialiser une table à partir de sa déclaration : pfctl (-v) -t blacklist -T load -f /root/pf.conf L'option -f est nécessaire pour indiquer le fichier où est définie la table en question. Nous obtenons bien le contenu tel que la table a été déclarée : 76.89.10.213 81.237.54.31 125.60.86.214 208.159.106.199 __Remplacer l'ensemble des adresses__ Il est possible d'aller un peu plus loin en remplaçant l'intégralité des adresses actuelles d'une liste par de nouvelles. Pour cela on utilise la sous-commande replace, exemple : pfctl (-v) -t blacklist -T replace 115.79.79.48 143.59.174.112 139.102.183.50 Le contenu sera désormais le suivant : 115.79.79.48 139.102.183.50 143.59.174.112 La sous-commande replace, comme add, crée la table si cette dernière n'existe pas. __Tester si une adresse fait partie de la table__ pfctl vous permet même de savoir si une adresse est actuellement définie dans la table donnée : pfctl (-vv) -t blacklist -T test 115.79.79.48 www.developpez.com Indiquera qu'il y a correspondance avec l'une des deux adresses (sur 115.79.79.48 et aucune avec www.developpez.com).