Pare-feu : bloquer tout les programmes d'un dossier

Résolu
Bonjour,

Je souhaite, depuis le pare-feu Windows 7, bloquer l’accès internet de tout les programmes .exe d'un dossier.

En effet je souhaite bloquer une liste de X programmes dans le dossier C:\Program Files\"DOSSIER"
Aucun problème pour bloquer les .exe un par un mais c'est vraiment très long !

Avez-vous une solution rapide ?

Merci d'avance !

16 réponses

Résumé de la discussion

Blocage de l’accès Internet pour tous les exécutables d’un dossier via le pare-feu Windows 7 est envisagé afin de bloquer rapidement une liste de programmes dans C:\Program Files\DOSSIER. Des propositions techniques préconisent d’utiliser netsh adv firewall add rule en bloc pour les programmes, en privilégiant la direction sortante dir=out ou, selon certains conseils, en utilisant dir=in. Des scripts PowerShell permettent d’énumérer les .exe d’un répertoire et de générer des règles de blocage outbound, mais certains remettent en cause la faisabilité avec des chemins complexes et des sous-dossiers. Certains échanges indiquent que les règles créées ne s’appliquent pas toujours et que la vérification passe par la consultation du journal des événements ou le test des applications concernées.

Bobot (l’IA à votre service)
  1. Non, il n'accepte pas d'avoir dir=in et dir=out.
    Toutefois vous pouvez refaire l'ensemble en laissant juste dir=in.
    3
    1. J'ai rajouté une ligne et ca fonctionne nickel

      cd "C:\Program Files (x86)\Common Files\Gestionnaire d'installation SOLIDWORKS"
      $appli = ls * -recurse | where {$_.name -like "*.exe"}
      foreach ($app in $appli)
      {
      $name = $app.name
      $path = $app.fullname
      netsh adv firewall add rule name=$name dir=in action=block program=$path
      netsh adv firewall add rule name=$name dir=out action=block program=$path
      }


      Merci pour votre aide !
      0
  2. Bonjour,

    Pour faire ce dont tu as besoin, je te propose un petit block powershell.
    Tu dois donc exécuter powershell en mode administrateur.
    Ensuite tape ceci :
    cd "ton dossier"
    $appli = ls *.exe
    foreach ($app in $appli)
    {
    $name = $app.name
    netsh adv firewall add rule name=$name dir=out action=block program=$app.fullpath
    }

    ton dossier est l'emplacement où sont tes applications que tu veux bloquer.
    Ceci va créer une règle avec comme nom, le nom de ton application, qui va bloquer le trafic sortant.
    1
    1. Bonjour,

      Merci beaucoup pour cette réponse.

      En gros je dois taper tout simplement ceci ? :

      cd C:\Program Files\"DOSSIER"
      $appli = ls *.exe
      foreach ($app in $appli)
      {
      $name = $app.name
      netsh adv firewall add rule name=$name dir=out action=block program=$app.fullpath
      }


      Ce code bloque donc tout le trafic sortant de TOUTES les applications dans C:\Program Files\"DOSSIER" ?

      Et si je souhaite désactivé ce blocage ?

      Encore merci !
      0
  3. En effet, au temps pour moi.
    Allez, on change encore une fois :)

    cd "C:\Program Files (x86)\Common Files\Gestionnaire d'installation SOLIDWORKS"
    $appli = ls * -recurse | where {$_.name -like "*.exe"}
    foreach ($app in $appli)
    {
    $name = $app.name
    $path = $app.fullname
    netsh adv firewall add rule name=$name dir=out action=block program=$path
    }


    Cette fois devrait être la bonne
    1
    1. Merci, ça à l'air de marcher à merveille !

      est-il possible d'ajouter aussi une restriction en trafic entrant ?

      du style

      cd "C:\Program Files (x86)\Common Files\Gestionnaire d'installation SOLIDWORKS"
      $appli = ls * -recurse | where {$_.name -like "*.exe"}
      foreach ($app in $appli)
      {
      $name = $app.name
      $path = $app.fullname
      netsh adv firewall add rule name=$name dir=in dir=out action=block program=$path
      }
      0
  4. Ok impeccable.

    Bonne journée
    1
    1. Bonjour,
      Si le dossier dont il est question s'appelle exactement "DOSSIER" (avec les guillemets, la première commande est
      cd 'C:\program Files\"DOSSIER"'

      Ensuite, j'ai vu une erreur sur la deuxième ligne : il faut ajouter -recurse à la fin. Ce qui donne :
      $appli = ls *.exe -recurse


      Oui, ce code bloque le trafic d'absolument tous les fichiers .exe du dossier C:\program Files\"DOSSIER".

      Pour supprimer toutes les règles précédemment créées, utilise ce code de la même manière :
      cd 'C:\program Files\"DOSSIER"'
      $appli = ls *.exe
      foreach ($app in $appli)
      {
      $name = $app.name
      netsh adv firewall delete rule name=$name
      }
      0
      1. Bonjour,

        Merci pour cette réponse mais ça ne fonctionne pas.

        J'ai Copier Coller ce code tel quel dans Windows PowerShell (%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe) en mode admin :

        cd 'C:\Program Files (x86)\Common Files\DOSSIER'
        $appli = ls *.exe -recurse
        foreach ($app in $appli)
        {
        $name = $app.name
        netsh adv firewall add rule name=$name dir=out action=block program=$app.fullpath
        }


        Comment être sur que la commande a bien été prise en compte ?

        Les Soft présents dans C:\Program Files (x86)\Common Files\DOSSIER se connecte toujours sur le net !

        Merci
        0
    2. Est ce que vous avez des messages d'erreurs ?

      Si la commande c'est bien exécutée, vous pouvez voir les règle dans "Pare-feu Windows avec fonctions avancées de sécurité", catégorie "Règles de trafic sortant"
      0
      1. Pas de message d'erreur, voulez-vous que je vous envoie une capture du powershell ?

        Dans le "Pare-feu Windows avec fonctions avancées de sécurité", catégorie "Règles de trafic sortant" je n'ai pas vu apparaître de nouvel règle.
        0
    3. Oui en effet, je veux bien une capture.
      Merci
      0
      1. http://img15.hostingpics.net/pics/480751Sanstitre.png
        0
    4. Appuyez une ou deux fois sur entrée.
      Vous devriez avoir des "ok" ou des erreurs.
      0
      1. En appuyant sur entrée j'ai juste ceci qui apparaît à chaque "entrée"

        >>
        >>
        >>
        0
      2. J'ai eu une erreur, je vous poste le screen de suite
        0
      3. http://img15.hostingpics.net/pics/958061Sanstitre.png
        0
    5. Ok, au lieu de la première et dernière apostrophe de la première ligne, mettez des guillemet. Le problème viens de l'apostrophe de "d'installation"
      0
      1. Merci,

        J'ai à nouveau un message en appuyant 2 fois de suite sur entrée

        http://img15.hostingpics.net/pics/764881Sanstitre.png
        0
      2. C'est de ma faute : il n'y a pas de .exe dans le répertoire spécifié mais dans plusieurs sous-dossier.

        Est-il possible d'améliorer ce code en ajoutant aussi TOUS les sous dossiers ?
        0
    6. C'est ce qu'est censé faire le -recurse à la suite de ls.
      Est ce que vous pouvez faire
      ls *.exe* -recurse
      et faire un screen du résultat ?
      0
      1. Même message

        http://img15.hostingpics.net/pics/750853Sanstitre.png
        0
    7. Faites juste
      ls *.exe* -recurse
      en dehors du bloc.
      Je voudrais m'assurer s'il trouve des choses
      0
      1. Juste taper
        ls *.exe* -recurse


        Ça ne fait rien, voila le résultat :

        PS C:\Users\User> ls *.exe* -recurse
        PS C:\Users\User>
        0
    8. Ok ensuite, taper :
      cd "C:\Program Files (x86)\Common Files\Gestionnaire d'installation SOLIDWORKS"
      ls -recurse


      Et vérifier s'il sort des fichiers .exe
      0
      1. Il me liste a priori tout les fichiers présent dans C:\Program Files (x86)\Common Files\Gestionnaire d'installation SOLIDWORKS

        Les DLL, .exe, .htm, .gif, .... ETC
        0
      2. ... et tout les fichiers des sous-dossiers
        0
    9. Et si à la suite vous faites
      ls *.exe -recurse

      Il sort des choses ?
      0
      1. Aucun listing

        PS C:\Users\User> cd "C:\Program Files (x86)\Common Files\Gestionnaire d'installation SOLIDWORKS"
        PS C:\Program Files (x86)\Common Files\Gestionnaire d'installation SOLIDWORKS> ls *.exe -recurse
        PS C:\Program Files (x86)\Common Files\Gestionnaire d'installation SOLIDWORKS>
        0
      2. Avez-vous une piste ?
        0
    10. Ben là s'il a rien ressorti la dernière fois c'est qu'il n'y a pas d'exe dans les sous-dossiers.
      Vous me confirmez que vous en avez en cherchant directement dans l'explorateur windows ?
      0
      1. Oui j'ai bien des .exe dans différents sous-dossiers de C:\Program Files (x86)\Common Files\Gestionnaire d'installation SOLIDWORKS

        Je pense que la commande
        ls *.exe -recurse
        ne marche pas.

        Par contre la commande
         cd "C:\Program Files (x86)\Common Files\Gestionnaire d'installation SOLIDWORKS"
        ls -recurse
        fonctionne bien.

        Voici une capture d'une parti du résultat de la commande ci-dessus ou l'on remarque qu'il ressort bien en autre des .exe

        http://img15.hostingpics.net/pics/934668Sanstitre.png

        Merci !
        0
      2. Nous avançons : quand je tape la commande
        cd "C:\Program Files (x86)\Common Files\Gestionnaire d'installation SOLIDWORKS\CheckForUpdates"
        ls *.exe -recurse
        il me trouve bien les .exe de ce dossier, mais seulement ce dossier, il ne va pas plus loin
        0
    11. ok, il y a des choses étranges qui se passent :)
      On va essayer autre chose.
      Dans le dossier solidworks :
      ls * -recurse | where {$_.name -like "*.exe"}
      0
      1. ok la commande
        cd "C:\Program Files (x86)\Common Files\Gestionnaire d'installation SOLIDWORKS"
        ls * -recurse | where {$_.name -like "*.exe"}


        marche parfaitement, il me trouve tous les .exe de tout les sous-dossiers compris dans C:\Program Files (x86)\Common Files\Gestionnaire d'installation SOLIDWORKS
        à savoir 7 .exe
        0
    12. C'est déjà une bonne chose.
      Le bloc devient donc

      cd "C:\Program Files (x86)\Common Files\Gestionnaire d'installation SOLIDWORKS"
      $appli = ls * -recurse | where {$_.name -like "*.exe"}
      foreach ($app in $appli)
      {
      $name = $app.name
      netsh adv firewall add rule name=$name dir=out action=block program=$app.fullpath
      }

      0
      1. Ok, il prend bien en compte la commande et bloque bien les 7 .exe ; j'ai 7 fois OK (les règles sont bien ajoutées dans le pare-feu) mais ne marche pas.

        En effet les .exe se connectent toujours au net et le chemin me parait erroné. Voir capture :

        http://img15.hostingpics.net/pics/874902Sanstitre.png
        0