« The Book of PF », version française

Posté par  (site web personnel) . Modéré par patrick_g.
Étiquettes :
26
6
juil.
2009
Culture
Ça y est, la traduction de l'excellent « The Book of PF » de Peter N.M. Hansteen vient d'être publiée, chez Eyrolles, sous le titre « Le Livre de Packet Filter » (collection Cahiers de l'Admin).

Ce livre, basé sur le célèbre didacticiel que l'auteur avait rédigé comme support de conférence, est l'un des très rares ouvrages (le seul en français) à couvrir ce filtre de paquets développé par Daniel Hartmeier pour OpenBSD, puis repris et intégré par FreeBSD et NetBSD. Il intéressera les professionnels (administrateurs système et/ou réseau, etc.) désireux d'apprendre à se servir de ce petit bijou qu'est PF, ou de se perfectionner dans sa maîtrise, ainsi que les amateurs de bidouille réseau qui y trouveront largement de quoi s'amuser quelques temps.

Comme son titre l'indique, ce livre ambitionne de servir de support à l'apprentissage et à la maîtrise de tous les aspects de Packet Filter. Couverture-du-livre
Une fois les présentations terminées (qu'est-ce que PF, pourquoi ce n'est pas disponible dans le monde GNU/Linux, etc.), on enchaîne sur un premier chapitre qui sert d'introduction, présentant les grandes lignes de l'histoire du développement de PF et expliquant les bases de la terminologie employée (NAT, IPv4/IPv6, différences entre filtre réseau et pare-feu, etc.).

On en arrive alors, au deuxième chapitre, à la configuration basique de PF, de son activation à l'écriture d'un tout premier jeu de règles pour une machine seule et autonome ; tout est détaillé pour OpenBSD, FreeBSD et NetBSD. L'auteur touche également deux mots à propos des statistiques que peut nous donner pfctl(8) si on lui demande gentiment.

Les choses sérieuses commencent au troisième chapitre : on débute par la gestion de la NAT, avec une mention spéciale pour le protocole FTP dans un réseau NATé (ftp-sesame, pftpx et bien entendu ftp-proxy), on continue par le debugging réseau (protocole ICMP pour le ping, traceroute, et la MTU path discovery), et on termine par l'explication de pourquoi les tables c'est bien. Notez qu'à chaque fois, les détails sont donnés pour les implémentations de PF d'OpenBSD, de FreeBSD et de NetBSD.

Le chapitre 4 est tout entier consacré aux réseaux sans-fil (Wi-Fi) : généralités d'usage, configuration d'une interface Wi-Fi côté client et côté routeur (avec le morceau de script /etc/pf.conf qui va bien), et on termine bien entendu par la spécialité locale : la création d'une passerelle authentifiante grâce à authpf.

Au cinquième chapitre, l'auteur termine son tour des fonctionnalités basiques de PF, que tout administrateur ou passionné se doit de maîtriser pour utiliser PF dans une vraie configuration : mise en place d'une DMZ (avec ou sans NAT), filtrage de service (accessibilité depuis l'extérieur et/ou depuis le LAN), répartition de charge avec hoststated, utilisation des tags (étiquettes) pour clarifier le jeu de règles de filtrage. L'auteur ajoute à cela la mise en place d'un pare-feu ponté (décrite pour OpenBSD, FreeBSD et NetBSD), et une petite astuce pour gérer le fait que les adresses IPv4 non routables ne devraient jamais ni envoyer ni recevoir de trafic par Internet.

Au chapitre 6, l'auteur traite ce qui est peut-être LE sujet par excellence quand on touche à OpenBSD : la défense pro-active. C'est ainsi qu'il (re-)donne l'astuce qui a fait la célébrité de son didacticiel en ligne : la gestion des attaques par force brute grâce à une liste noire et à quelques options (max-src-conn, max-src-conn-rate, overload, et flush global). Ensuite, l'auteur explique en détail la mise en place d'une stratégie antispam grâce à spamd ; au menu : liste noire, liste grise (greylisting), greytrapping, et utilisation des outils associés que sont spamdb et spamlogd. Insistons là-dessus : ce chapitre constitue la seule vraie documentation sur spamd existant en français à l'heure actuelle, alors ne boudons pas notre plaisir...

Quant au septième chapitre, il conviendra aux plus barbus : ALTQ est détaillé sur une vingtaine de pages, et le couple CARP/pfsync sur une dizaine. Au vu du faible nombre de documentations existant en français sur ces sujets, les connaisseurs apprécieront...

Enfin, le chapitre 8 est consacré à la journalisation et aux statistiques (pflog, syslog, labels pour les règles, pftop, pfstat, pfflowd), et le neuvième et dernier chapitre donne une référence aux options utiles mais non couvertes dans le reste du livre, notamment la normalisation de trafic (scrub).

Vous trouverez en outre deux annexes, qui donnent respectivement des références documentaires et des remarques de l'auteur concernant la prise en charge du matériel.

A noter que l'intégralité du livre a été mise à jour pour être en concordance avec les dernières modifications survenues dans PF entre la sortie de la dernière version en date (OpenBSD 4.5) et celle qui sortira le 1er novembre prochain (OpenBSD 4.6), je pense notamment à scrub. Vous savez sur qui taper en cas de problème. ;-)

Vous l'aurez compris, cet ouvrage est une mine d'or pour qui cherche à apprendre à se servir de Packet Filter, que ce soit dans un cadre professionnel ou amateur. Allez, juste pour vous mettre l'eau à la bouche, voici la traduction du fameux haïku PF que Jason Dixon a publié sur la liste de diffusion de PF, le 20 mai 2004, et qui conclut l'avant-propos du livre :

Comparé à iptables, PF est comme ce haïku :
A breath of fresh air,
floating on white rose petals,
eating strawberries.

Un souffle d'air frais,
Flottant sur de blancs pétales,
En mangeant des fraises.


Et voilà que je m'emporte :
Hartmeier codes now,
Henning knows not why it fails,
fails only for n00b.
Tables load my lists,
tarpit for the asshole spammer,
death to his mail store.
CARP due to Cisco,
redundant blessed packets,
licensed free for me.

Hartmeier développe
Henning ne comprend pas
Pourquoi les nuls n'y arrivent pas.
Des tables chargent mes listes,
Punition pour les spammers.
Mort à leur commerce !
CARP vient de Cisco,
Paquets redondants bénis,
Sous licence libre.

Aller plus loin

  • # juste parce que je suis un gros ignorant...

    Posté par  . Évalué à 10.

    et que l'admin sys n'est vraiment pas mon domaine....

    Pourquoi (expliqué de façon simple) Packet Filter ne peut pas actuellement être implémentable sous linux? Je suppose que c'est à cause d'un choix architecturel, mais lequel??
  • # Petite précision

    Posté par  . Évalué à 10.

    ce filtre de paquets développé par Daniel Hartmeier pour OpenBSD

    Il faut rendre à césar ce qui lui appartient.. PF à été developpé à l'origine par Daniel Hartmeier comme remplacement 'feature-compatible' de l'IPF de Darren Reed, mais tout les développements et extensions faites depuis maintenant deux ans sont l'oeuvre principalement de Henning Brauer (henning@) et Ryan Mc Bride (mcbride@), ainsi que de beaucoup d'autres dans une moindre mesure.
  • # amis sysadmins linux ^^

    Posté par  (site web personnel) . Évalué à 5.

    Avec une mauvaise foi évidente on dit souvent : linux est meilleur, (et c'est souvent vrai).

    Par contre, la première fois que l'on compare des régles PF avec iptables on est un peu surpris : C'est comme comparer du C et du perl en terme de verbosité et de lisiblité pour parser un fichier.

    De même que je préfère perl au C pour parser un fichier, je trouve pf cool. Comme le C iptables a ses avantages. Ils ne me concernent pas, je trouve pas les règles de fw bandantes mais seulement utiles et j'aime qu'elles soient faciles à écrire (donc moins d'erreur) et maintenir.

    Non je n'ai pas la plus grosse, oui je suis fainéant, et pour tout ceux qui raisonnent ainsi pf est cool. pour les pros iptables est bon : mangez en.

    Pour les clients : préférez vous un pro qui fait des trucs compliqués et qui coûte cher, ou un qui résous le problème rapidement et simplement ? ^_^
  • # IP v6

    Posté par  (site web personnel, Mastodon) . Évalué à 10.

    Ce livre aborde-t-il IP v6 ?
    (C'est pas que ça soit plus compliqué, mais il y a moins d'exemples disponibles sur le net)
    • [^] # Re: IP v6

      Posté par  (site web personnel) . Évalué à 3.

      Euh, non, et maintenant que j'y pense c'est vrai que l'ouvrage est même clairement IPv4-only...
      • [^] # Re: IP v6

        Posté par  (site web personnel, Mastodon) . Évalué à 5.

        Alors ce sera pour la seconde édition ;-)
        • [^] # Re: IP v6

          Posté par  (site web personnel) . Évalué à 6.

          http://www.openbsd.org/faq/pf/fr/filter.html#syntax

          ne pas oublier la bonne doc en français d'OpenBSD

          « Il est possible de spécifier la famille d'adresses IP à laquelle appliquer une règle à l'aide de ce mot-clef. Les deux valeurs possibles sont inet pour les adresses IPv4 et inet6 pour IPv6. PF peut généralement déterminer à quelle famille appartient un paquet à partir de ses adresses source et destination.  »
      • [^] # Re: IP v6

        Posté par  (site web personnel) . Évalué à 2.

        En même temps il suffit de remplacer inet par inet6 dans le jeu de règle. Et on peut dire adieux au nat par la même occasion.

        Sinon il est vrai que quelques spécificité sur certain protocole ne serait pas forcement un luxe bien qu'il me semble qu'une fois le bouquin lu, on ai plus vraiment besoin pour adapter pf à IPv6 grâce à sa syntaxe plus que clair.
        • [^] # Re: IP v6

          Posté par  (site web personnel) . Évalué à 3.

          C'est une bien belle vulgarisation de l'IPv6, j'aimerais bien que ce soit aussi simple :)
        • [^] # Re: IP v6

          Posté par  . Évalué à 5.

          Dans IPv6 la taille des adresses est loin d'être la seule chose à avoir changé. En particulier c'est la révolution au niveau d'ICMP, il y a l'attribution automatique des adresses, l'arborescence logique utilisée pour l'adressage, etc. Si un admin doit faire un firewall IPv6, il a tout de même intérêt à sérieusement se documenter.
          • [^] # Re: IP v6

            Posté par  (site web personnel) . Évalué à 3.

            Tu fais de l'attribution d'IP avec un firewall ? Marrant moi j'utilise rtadvd et non PF pour ça mais bon vu que tu semble connaitre bien ton sujet, explique moi comment je fais marcher mon /48 sur mon réseau via une OpenBSD ?

            Et pour ce qui est de la petite révolution niveau ICMP, c'est justement de ça dont je parle avec les protocoles spécifique IPv6. Mais bon quand on sait ce qu'on fait, il n'est pas forcement des plus dur de remplir la section protocole d'une ligne de PF.

            Je ne dis pas que la documentation est inutile mais plutôt que si l'on connait bien PF, on peut faire un passage sans problème en IPv6 sans pour autant avoir un énorme bouquin sur le sujet.

            Pour pas mourir idiot voila une doc sur la configuration de PF pour IPv6 avec des exemples https://solarflux.org/pf/pf+IPv6.php

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.