Iptable avec linux debian

Bonjour, j'aimerais iptable un block de environ 100 packet d'ip sur ma machine (baser sous debian) et j'aimerais savoir si il existe une commande iptable ou l'on peut mettre tout les ip d'un coup de façon a éviter de mettre devant chaque ip la commande

(C'est pour faire un firewall fonctionnant avec iptable dans /firewall)

Exemple commande pour ip table ip fin de la commande

J'aimerais début de la commande ip (plusieur) fin de la commande

Merci d'avance

18 réponses

Résumé de la discussion

Blocage d'un lot d'adresses IP avec iptables sous Debian est discuté pour éviter d'entrer chaque IP manuellement et cibler le trafic entrant de manière automatisée et fiable. Plusieurs propositions incluent l'utilisation d'une boucle shell pour lire un fichier d'adresses IP et ajouter une règle DROP avec -s pour chaque entrée, afin d'automatiser le blocage. D'autres échanges insistent sur la nécessité d'un fichier IP par ligne, sur le choix de l'interface et sur le contrôle des permissions root pour modifier iptables. Pour de meilleures performances lorsque le blocage porte sur de nombreuses IP, l'emploi d'iptables avec ipset permet de charger des listes et d'éviter une multiplication des règles.

Bobot (l’IA à votre service)
  1. Bonjour,

    Je te suggère de faire une liste dans un fichier, et de boucler sur cette liste avec un script, qui executera les commandes iptables à ta place.

    0
    1. Modérateur
      Salut,

      En root quelque chose de genre

      for ip in $(cat fichier_avec_les_ip_un_par_ligne);do iptables -A INPUT -i INTERFACE -s $ip -j DROP;done


      GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
      106485010510997108
      0
      1. exactement, j'ai eu la flemme de l'écrire :)
        Ceci n'est que pour le cas ou il veut bannir cette liste d'IP
        0
      2. Modérateur
        Re,

        Ceci n'est que pour le cas ou il veut bannir cette liste d'IP
        Oui effectivement
        0
    2. Donc je doi crée une commande qui s'exécute dans /firewall et qui va chercher les ip banni dans un fichier ??

      Mais comment construire cette commande ?

      car dans

      for ip in $(cat fichier_avec_les_ip_un_par_ligne);do iptables -A INPUT -i INTERFACE -s $ip -j DROP;done

      for ip in $(cat fichier_avec_les_ip_un_par_ligne) <--- la je doi mettre le chemin vers le txt avec les ip ?
      0
      1. c'est ça :)

        j'ai envie de dire OSEF de ou il s'execute, l'essentiel c'est la permission root d'écriture dans iptables
        0
        1. for ip in $(cd /bin/ip.txt);do iptables -A INPUT -i INTERFACE -s $ip -j DROP;done

          Donc cela pourrais marcher avec 1 ip par ligne ?

          Et bien evidament chmod 777 a ip.txt

          ?
          0
          1. Modérateur
            Re,

            Et bien evidament chmod 777 a ip.txt
            Pas besoin chmod 0600 suffit

            N'oublie pas qu'il faut remplacer INTERFACE avec la tienne.
            Le fichier mets le dans /etc pas dans /bin

            0
            1. Remplacer par mon INTERFACE c'est a dire ??

              je debute avec iptable donc je ne vois pas trop
              0
              1. Modérateur
                Re,

                Affiche le résultat de
                 /sbin/ifconfig
                0
            2. Sa affiche

              lo Link encap:Local Loopback
              inet addr:127.0.0.1 Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING MTU:16436 Metric:1
              RX packets:3574 errors:0 dropped:0 overruns:0 frame:0
              TX packets:3574 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:286218 (279.5 KiB) TX bytes:286218 (279.5 KiB)

              venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
              inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0 Mask:255.255.255.255
              UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
              RX packets:54557820 errors:0 dropped:0 overruns:0 frame:0
              TX packets:112479764 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:6626234619 (6.1 GiB) TX bytes:15096512268 (14.0 GiB)

              venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
              inet addr:ip de mon dedier P-t-P:ip de mon dedier Bcast:0.0.0.0 Mask:255.255.255.255
              UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1

              Jai masquer lip de mon dedier
              0
              1. Modérateur
                Re,

                C'est venet0
                0
              2. jamais vu ce type de nom d'interface
                0
              3. bien vu
                0
            3. Il me dit

              : command not found: ip
              : command not found: ip

              /etc/ip.txt: Ligne ip: command not found

              jai remplacer les ip par ip pour vou monter les erreur et a chaque foi il me dit ce qu'il y a a commande not found a chaque ip
              0
              1. essaie:
                for $ip in $(cat fichier_avec_les_ip_un_par_ligne);do iptables -A INPUT -i INTERFACE -s $ip -j DROP;done
                0
            4. Modérateur
              Re,

              /etc/ip.txt n'est pas une commande mais un fichier qui contient les IP que tu veux les bloqués.

              La commande est normalement (à faire ne root)

              for ip in $(cat /etc/ip.txt);do iptables -A INPUT -i venet0 -s $ip -j DROP;done 


              --
              GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
              106485010510997108
              0
              1. Il arrive pas a executer la commande il met des erreur
                0
                1. Modérateur
                  Re,

                  Ca sera plus simple d'afficher ici la commande que tu tapes ainsi que les résultats (bref, ce que tu vois à l'écran).
                  Je vais regarder ce soir à la maison si entre temps tu n'auras pas de réponse
                  0
              2. Sa m'affiche ce que jai mi jai juste mi ip a la place des ip pour ne pas que tout le monde les voye.
                0
                1. J'attend ta reponce alors merci d'avance :)
                  0
                  1. Modérateur
                    Re,

                    C'est moi qui attends ta réponse
                    Je ne t'ai demande pas de m'afficher les IP.
                    Tu peux mettre à la place xxx.xxx.xxx.xxx, mais j'ai besoin de voir ce que tu fais si non je ne peux pas t'aider]

                    On peut faire plus simple juste pour un IP pour voir, donc tape

                    iptables -A INPUT -i venet0 -s xxx.xxx.xxx.xxx -j DROP


                    N'oublie pas de remplacer les xxx avec ton ip, et ensuite pour affichage de les remettre.
                    Ensuite affiche aussi le résultat de
                    egrep -c '([0-9]{1,3}\.){3}[0-9]{1,3}' /etc/ip.txt
                     wc -l < /etc/ip.txt
                    0
                2. oui mais vue que jai plus de 100 ip jaimerais un truck pour aller plus vite.
                  0
                  1. egrep -c '([0-9]{1,3}\.){3}[0-9]{1,3}' /etc/ip.txt
                    wc -l < /etc/ip.txt

                    a laire de marcher merci
                    0
                    1. Modérateur
                      Re,

                      Affiche le résultat.

                      Tape aussi une commande pour un seul ip comme je t'ai demandé dans mon message précédent
                      0
                  2. Sa affiche riens cela ne reagi pas
                    0
                    1. Modérateur
                      Re,

                      On ne se comprends pas.
                      Si tu n'affiche pas les commandes que tu tapes, je m'arrête là.
                      Je ne suis pas devant ton écran, donc si tu veux que je t'aide alors aide moi.

                      Donc tape et affiche ça

                      egrep -c '([0-9]{1,3}\.){3}[0-9]{1,3}' /etc/ip.txt
                      wc -l < /etc/ip.txt 


                      Voici comment tu dois m'afficher (j'ai créer un fichier bidon avec 3 ip)

                      lami20j@debian-acer:~$ egrep -c '([0-9]{1,3}\.){3}[0-9]{1,3}' /etc/ip.txt
                      3
                      lami20j@debian-acer:~$ wc -l < /etc/ip.txt
                      3
                      lami20j@debian-acer:~$ 


                      Vas-y, à toi maintenant.
                      0
                  3. vps:~# egrep -c '([0-9]{1,3}\.){3}[0-9]{1,3}' /etc/ip.txt
                    127
                    vps:~# wc -l < /etc/ip.txt
                    154

                    C'est donc que sa marche ?
                    0
                    1. Modérateur
                      Salut,

                      Ben, il y a un problème avec ton fichier puisque le résultat aurai du être le même.
                      La 1ère commande compte seulement les lignes qui contient au moins un ip
                      La 2ème commande comptes toutes les lignes de ton fichier.

                      Donc soit il y a des lignes vides dans ton fichier soit il y a autre choses.

                      Bref ton fichier doit avoir cette forme

                      xxx.xxx.xxx.xxx
                      yyy.yyy.yyy.yyy
                      zzz.zzz.zzz.zzz


                      Donc un ip par ligne.
                      Allez on va vérifié ton fichier. Par sécurité les ip seront remplacer avec des X, donc tu peux afficher le résultat ici

                      Chez moi sur le fichier test que j'ai crée

                      lami20j@debian-acer:~$ perl -pe 's/(\d{1,3})/"X" x length($1)/ge' /etc/ip.txt
                      XX.X.X.X
                      XXX.XXX.X.X
                      XXX.XX.XXX.XX


                      Donc tu dois taper la commande qui est en gras.

                      A toi.
                      0