Journal Iptable et les listes noires

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
16
9
jan.
2012

Bonjour,

Tout d'abord, étant donné qu'il s'agit de mon premier journal, je tiens à remercier tout les contributeurs de Linuxfr. Je consulte en effet souvent ce site tout en restant silencieux.
Entrons maintenant dans le sujet de ce journal.

Pourquoi filtrer?

Bien que je sois un opposant du filtrage imposé, je pense qu'il est intéressant si il est librement choisi et si il est contrôlé par la communauté( comme DroneBL).

En effet de nombreuses machines sont des menaces pour Internet, on peut notamment penser au spam, aux botnets, etc. Je pense qu'il est légitime de bloquer ces machines car, il faut être honnête, madame Michu ne se préoccupe pas du fait que sa machine fasse parti d'un botnet. En revanche si elle est bloquée sur de nombreux sites, elle commencera à agir (ou son FAI le fera si son IP est dynamique).

Le filtrage et les pares-feu

Je me suis récemment penché sur les différentes méthodes de filtrage applicable aux pares-feu sous GNU/Linux mais j'ai vite déchanté.

En effet si des solutions de filtrage sont très largement disponibles pour des services (mail,http,irc…), les choix sont beaucoup plus restreints au niveau pare-feu. On peut en effet:

  • Écrire les règles directement dans iptable mais le résultat n'est pas maintenable et peut devenir lent dès qu'on a un grand nombre d'adresse.
  • Utiliser ipset qui résout le problème de lenteur mais il n'y a pas de liste d'IP disponible publiquement, mise-à-jour et facilement parsable par un script (ou alors je n'ai pas assez cherché).
  • Filtrer en utilisant DNSBL, mais cela n'est pas supporté par iptable et il n'existe à ma connaissance qu'un seul démon le faisant en espace utilisateur.

Packetbl

Ce démon est Packetbl mais il n'est (presque?) pas maintenu, n'a pas l'air de fonctionner chez moi et ne propose pas certaines fonctionnalités comme marquer un paquet pour traitement ultérieur dans iptable (il ne peut que ACCEPT ou DROP un paquet).

NFDNSBL

C'est pourquoi j'ai créé NFDNSBL (oui ce journal est un journal d'autopromotion et oui ce nom est imbitable), un petit démon qui permet de filtrer les paquets qu'on lui envoie via une DNSBL et qui agit en conséquence (ACCEPT,DROP,marquer le paquet et renvoyer à iptable…).

Le coût du filtrage est relativement faible si iptable est correctement configuré (on n'a en effet besoin que de vérifier le premier paquet d'une connexion et les adresses sont mises en cache pour une vérification plus rapide des connexions ultérieures).

Enfin je tiens à signaler que ce programme est très récent, non testé, non portable (j'utilise netfilter), probablement plein de bugs mais je voulais vous le faire partager.

Merci de votre attention et désolé pour les fautes.

  • # Ipset et script de mises à jours

    Posté par  . Évalué à 4.

    Bonjour et merci pour ton journal, tu m'auras fait découvrir les DNSBL :)

    Je rebondis sur la partie concernant ipset et "un script facilement parsable". En effet, je me sers de scripts trouvés sur un forum gentoo, pour parcourir certaines listes publiques comme celle de Dhield.org et mettre à jour mon set.

    Cela peux toujours être utile, et être une bonne base de départ pour adapter à d'autres listes.

  • # The World's Worst Spam Support ISPs

    Posté par  . Évalué à 4.

    Un peu off-topic mais d'après spamhaus (qui centralise les plus grosses DNS Block list pour filtrer smtp) OVH serait le pire spammeur de la planète: http://www.spamhaus.org/statistics/networks.lasso

    envoyé depuis mon clavier bépo

    • [^] # Re: The World's Worst Spam Support ISPs

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

      Très intéressant, je ne connaissais pas cette page.
      C'est peu surprenant étant donné qu'OVH est le plus gros hébergeur d'Europe. Néanmoins j'ai quand même un doute sur le classement FAI (peut-être que le double rôle FAI/Hébergeur d'OVH fausse les statistiques?).

    • [^] # Re: The World's Worst Spam Support ISPs

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

      Il faut savoir qu'avant la mise en place du filtrage du port 25 par les 3 principaux FAI français ceux-ci étaient habitués au top 3 du World's Worst Spam Support ISP alors qu'ils ne semblent plus y être.

      Pour OVH je ne suis pas étonné. On retrouve très souvent leurs réseaux dans les différentes DNSRBL. La mauvaise réputation d'OVH fait qu'un professionnel aura du mal à utiliser son serveur chez OVH dans des conditions idéales pour envoyer du courrier électroniques. Ils sont victimes de la popularité de leurs bas prix mais je crois qu'ils ont modifié les conditions de location de serveur chez eux (le paiement doit être accompagné d'une copie de la carte d'identité au même nom ou un truc du genre) pour éviter l'usage de moyens de paiement volés par les spammeurs.

    • [^] # Re: The World's Worst Spam Support ISPs

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

      En même temps, OVH est certes censé agir, si les gens se plaignent bien sûr, mais bloquer par plages entières, c'est mal. Quand on bloque, on doit le faire machine par machine, sinon on punit des innocents avec les coupables.

    • [^] # Re: The World's Worst Spam Support ISPs

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

      OVH serait le pire spammeur de la planète

      Oui et non. Cette page donne la liste des tickets ouverts à l'instant t pas le nombre total de tickets. Ça veut surtout dire que OVH n'est pas très sérieux dans le traitement des rapports d'abuse et ne met pas beaucoup la pression à ses clients sur ce point. Visiblement ils font ça par lot (toutes les semaines, mois ????). Du coup ils disparaissent pour quelque temps et reviennent dans le top.

  • # Ptit oubli

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

    Juste un ptit truc que j'ai pu lire : quand on arrive sur la page d'accueil du projet, on tombe sur

    NFDNSBL is a daemon that filter etc.

    Ça devrait être :

    NFDNSBL is a daemon that filters

    (Rapport à la troisième personne du présent singulier qui prend toujours un s).

    Ça fait plus classe si tu t'adresses à un lectorat anglophone.

    • [^] # petit exercice d'anglais

      Posté par  . Évalué à 2.

      À ce propos voici un petit exercice d'anglais.

      Formulez la question dont la réponse est : "It cost 3 dollars."
      (mettez à la forme interrogative)

      • [^] # Re: petit exercice d'anglais

        Posté par  . Évalué à 1.

        L'anglais n'est pas mon point fort, mais je dirais ça :
        How much does it cost ?

      • [^] # Re: petit exercice d'anglais

        Posté par  . Évalué à 2.

        • "How much do information technologies cost ?"
        • "It cost 3 dollars"
        • Et c'est cheap.
        • Are you my tailor ?
      • [^] # Re: petit exercice d'anglais

        Posté par  . Évalué à 6.

        Challenge accepted : "How much for the frappuccino, bro' ?"

      • [^] # Re: petit exercice d'anglais

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

        Je suppose que c'est un piège avec les indénombrables pluriels? (« Julo faut le faire » m'a un peu gâché le plaisir avec sa réponse si rapide si c'est bien ça)

        Je partirai donc sur "How much do the police cost?" (3$ c'est pas cher non plus ;-))

      • [^] # Re: petit exercice d'anglais

        Posté par  . Évalué à 3.

        "How much it cost?"

        Parce que c'est bien beau de nous faire faire des exercices de grammaire en Anglais, mais quand on relit des Américains, natifs, des fois ça fait aussi peur que nos djeunz SMSiens.

        • [^] # Re: petit exercice d'anglais

          Posté par  . Évalué à 3.

          Oui, il suffit de lire les commentaires YouTube d'à peu près n'importe quelle vidéo pour voir des horreurs, mais ça n'excuse rien du tout.

        • [^] # Re: petit exercice d'anglais

          Posté par  . Évalué à 0.

          En fait en amérique on ne diras pas "How much it cost" mais bien la "How much is it ?".

          • [^] # Re: petit exercice d'anglais

            Posté par  . Évalué à 2.

            In France we ask la question in le sophisticated way.

            THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.

    • [^] # Re: Ptit oubli

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

      Hum... en effet.

      J'ai toujours eu du mal avec ces s. Je sais qu'il faut les mettre, je vois quand je lis quelqu'un d'autre qui les a oubliés mais je fait très souvent la faute quand j'écris.

      Merci

  • # Sécurité

    Posté par  . Évalué à 5.

    Je voulais savoir si tu avais pensé à divers aspects de sécurité concernant l'utilisation aveugle des DNSBL ?

    Typiquement, est-ce que c'est une bonne idée de déléguer à un service que tu ne gères pas (puisque c'est manifestement l'idée) pour autoriser ou non telle ou telle connexion sur ton serveur ? En gros tu peux te voir refuser l'accès à ton serveur du jour au lendemain. Peut-être résoudre ce problème avec une whitelist (acceptant des masks).

    En outre, je vois dans le code :

    if(!ip_addr) //Something is wrong, paranoia is good
    »·······return 0;

    Manifestement, ça arrive quand tu n'as pas réussi à extraire l'adresse IP du paquet, et tu droppes par défaut. Ce n'est pas un peu dangereux ? Ne vaut-il mieux pas accepter dans le doute ?

    • [^] # Re: Sécurité

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

      Le problème repose comme toujours sur la confiance que l'on accorde à un tiers. Rien ne t'empêche de maintenir ton propre serveur DNS et ta propre liste afin d'éviter cela ( bien sur cela enlève une partie de l'intérêt ).

      Il y a de plus les failles inhérentes aux DNS ( je devrais creuser du côté de DNSSec ).

      Concernant la whitelist c'est en effet une bonne idée mais je pense que c'est à iptable de le gérer (ou à une autre instance du démon ou les verdicts sont inversé ;-))

      Quant au problème de l'extraction de l'IP (mince! une personne qui lit effectivement le code source! ;-)), c'est en effet un sujet à débattre. Peut-être devrai-je mettre option pour laisser le choix?

      PS: D'ailleurs ça me fait penser au fait que j'ai omis de dire que ce programme ne supporte pas IPv6 (pour l'instant)

      PS2: Mon style de code et mon absence de commentaire ne gène pas trop la lecture?

      • [^] # Re: Sécurité

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

        Il y a de plus les failles inhérentes aux DNS (je devrais creuser du côté de DNSSec).

        Si tu n'as pas déjà un peu de documentation sur le sujet, voilà un bon point de départ pour comprendre la théorie et la mise en pratique de DNSSEC :

        DNSSEC HOWTO, a tutorial in disguise (en anglais, aspirine non fournie)

        Pour la partie qui pourrait te concerner, il faudrait prévoir de vérifier la signature de l'enregistrement du serveur, (grosso-modo ce que fait un dig +dnssec A server.example.net en vérifiant la présence du bit ad - authenticated data). Malheureusement, ce n'est pas couvert dans le document ci-dessus et je ne connais pas de documentation qui pourrait illustrer cela.

        Et pour terminer, vu le déploiement actuel de DNSSEC, il ne faut pas encore donner trop d'importance à un test de ce genre.

        • [^] # Re: Sécurité

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

          DNSSEC HOWTO, a tutorial in disguise (en anglais, aspirine non fournie)

          Merci pour le lien. Je ne pense pas le lire ce soir, rien que le sommaire me donne mal au crâne ;-)

          Et pour terminer, vu le déploiement actuel de DNSSEC, il ne faut pas encore donner trop d'importance à un test de ce genre.

          En effet, malheureusement, DNSSEC n'est que peu répandu. Quant à son implémentation... disons que ce n'est pas ma priorité :-P

          • [^] # Re: Sécurité

            Posté par  . Évalué à 4.

            A mon avis sur DNSSEC il vaut mieux lire d'abord http://www.bortzmeyer.org/4033.html ce lien est bien moins complet (d'ailleurs il faut aussi référence au HOW-TO) mais beaucoup plus simple, ça permet de monter en difficulté plus doucement..

Suivre le flux des commentaires

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