Obtenir le pare-feu Windows pour ignorer les versions de test


2

J'ai un système d'intégration continue en cours d'exécution sur mon ordinateur qui place les sorties de la version de test dans des fichiers temporaires sur le système.
Malheureusement, cela signifie que le Pare-feu Windows considère chaque application comme une application distincte et affiche une notification pour chaque génération, qui est plusieurs au cours d'une exécution de test.
Ces versions communiquent exclusivement via localhost, il n’ya donc aucune raison de les laisser passer à travers le pare-feu. Ils utilisent actuellement le port 8081mais peuvent être réglés sur n'importe quoi.

Existe-t-il un moyen de faire en sorte que le pare-feu Windows laisse simplement tous les programmes %TEMP%bloqués?

pare-feu Windows a bloqué certaines fonctionnalités de cette application

Réponses:


1

Vous recevez cette invite car il n'y a pas de règle explicite relative à l'application. La stratégie de pare-feu par défaut autorise les connexions sortantes ne correspondant à aucune règle. Cela concerne donc généralement l’application qui accepte les connexions entrantes, qui sont bloquées par défaut et qui nécessitent donc l’existence d’une règle de pare-feu spécifique avant de les autoriser à travers le pare-feu.

Le pare-feu Windows considère vos versions comme des programmes distincts car il s'agit d'exécutables différents avec des chemins d'accès différents.

Il existe un certain nombre de moyens possibles pour résoudre ce problème:

Demandez à chaque construction de définir une règle

Vous pouvez créer une règle de pare-feu, soit dans le code de l'application, soit au cours d'une étape de post-génération exécutée par votre outil de CI.

Si vous ne souhaitez pas ajouter de code spécifique à votre exécutable (ou processus de configuration) pour configurer une règle, vous pouvez faire en sorte que votre outil de configuration exécute un script PowerShell similaire à celui présenté ci-dessous.

Ce script supprime toutes les règles de pare-feu de génération de test existantes et ajoute une règle autorisant les connexions entrantes pour la génération actuelle:

Param
(
    [Parameter(Mandatory=$true)]
    [string] $BuildPath
)
function Add-TestBuildFirewallRule
{
    Param
    (
        [Parameter(Mandatory=$true)]
        [string] $BuildPath
    )
    $existingRule = Get-NetFirewallRule -Name YourApp-LatestTestBuild -ErrorAction SilentlyContinue
    if($existingRule -ne $null)
    {
        Remove-NetFirewallRule -Name YourApp-LatestTestBuild
    }
    New-NetFirewallRule -Name "YourApp-TestBuild" -DisplayName "Latest Test Build" -Description "Allow the latest test build to accept incomming connections" -Enabled True -Direction Inbound -Program $BuildPath
}
Add-TestBuildFirewallRule -BuildPath $BuildPath

Pour utiliser le script fourni, vous devez:

  1. Avez-vous installé PowerShell v4.0 sur le serveur CI? Cela devrait être le cas pour Windows 8x ou Server 2012
  2. Enregistrez le script dans un répertoire sur lequel votre outil de CI dispose des droits de lecture et d'exécution dans un fichier avec une .ps1extension.
  3. Exécuter le script en tant qu'administrateur - cela est nécessaire car la modification des règles de pare-feu est une opération privilégiée
  4. Demandez à votre outil de configuration d’exécuter le script à l’aide d’une commande similaire à: powershell.exe -ExecutionPolicy Bypass Add-BuildFirewallRule.ps1 -BuildPath %FULL_BUILD_PATHVous devez remplacer %FULL_BUILD_PATH%dans la commande ci-dessus le chemin complet de l’exécutable construit - votre outil de configuration doit pouvoir le faire assez facilement.

Débloquer le port cible

Vous pouvez avoir le pare-feu Windows autoriser tout le trafic (ou tout le trafic d'un certain protocole) sur des ports spécifiques. Cela permettrait à vos versions (et à toute autre application utilisant ce port) de communiquer. Vous pourrez peut-être spécifier que la communication doit être limitée à la machine locale à l'aide de l'interface utilisateur du Pare-feu Windows avec sécurité avancée pour créer la règle, mais je l'éviterais quand même.


0

Grâce à des recherches, j'ai réalisé que je liais toutes les adresses de l'ordinateur, y compris les adresses externes, ce qui a déclenché le pare-feu. J'ai changé les tests pour qu'ils se lient explicitement à 127.0.0.1et le pare-feu ne s'est pas plaint depuis.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.