From 8bdfb1156af0e5caa77feaf8fe291d3e94a4e7f6 Mon Sep 17 00:00:00 2001 From: Hubert Cornet Date: Thu, 4 Sep 2025 10:14:14 +0200 Subject: [PATCH] Add cybersecurity/Network Reputation Service/ReadMe.md --- .../Network Reputation Service/ReadMe.md | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 cybersecurity/Network Reputation Service/ReadMe.md diff --git a/cybersecurity/Network Reputation Service/ReadMe.md b/cybersecurity/Network Reputation Service/ReadMe.md new file mode 100644 index 0000000..b44fb2f --- /dev/null +++ b/cybersecurity/Network Reputation Service/ReadMe.md @@ -0,0 +1,117 @@ +Audit de Filtrage Web par PowerShell +Ce projet contient un script PowerShell conçu pour auditer l'efficacité des politiques de filtrage web d'un pare-feu ou d'un proxy. Il teste une liste d'URLs prédéfinies, vérifie si le résultat (bloqué ou autorisé) correspond à l'attente, et génère un rapport de conformité. + +Fonctionnalités +Audit basé sur des catégories : Testez des listes d'URLs organisées par catégories (Réseaux sociaux, Adulte, Actualités, etc.). +Configuration flexible via JSON : Toutes les catégories et URLs sont définies dans un fichier urls.json facile à éditer. +Validation à double sens : Vérifie non seulement que les sites interdits sont bien bloqués, mais aussi que les sites autorisés sont bien accessibles. +Calcul de score : Attribue un score de conformité global et par catégorie. +Support des Proxys : Peut fonctionner à travers un proxy HTTP, avec ou sans authentification. +Simulation d'un navigateur : Utilise un User-Agent de navigateur standard pour éviter les blocages anti-bots qui pourraient fausser les résultats. +(À venir) Génération d'un rapport HTML interactif. +Prérequis +PowerShell 5.1 ou une version supérieure. +Accès à Internet depuis la machine exécutant le script. +Les permissions nécessaires pour exécuter des scripts PowerShell. Si vous rencontrez une erreur, vous pouvez l'autoriser pour la session en cours avec la commande : +powershell + +Set-ExecutionPolicy RemoteSigned -Scope Process +Installation +Créez un dossier pour votre projet (par exemple, C:\Scripts\AuditFirewall). +Copiez le script principal (par exemple, Audit-WebFilter.ps1) dans ce dossier. +Créez un fichier nommé urls.json dans le même dossier. +Configuration +Le cœur de l'audit réside dans le fichier urls.json. Il définit les catégories et les URLs à tester, ainsi que le résultat attendu pour chacune. + +Structure du fichier urls.json +json + +{ + "categories": [ + { + "name": "Réseaux Sociaux (à bloquer)", + "urls": [ + { + "url": "https://www.tiktok.com", + "expected_action": "block" + }, + { + "url": "https://www.facebook.com", + "expected_action": "block" + } + ] + }, + { + "name": "Outils de travail (à autoriser)", + "urls": [ + { + "url": "https://www.github.com", + "expected_action": "allow" + }, + { + "url": "https://stackoverflow.com", + "expected_action": "allow" + }, + { + "url": "https://www.microsoft.com", + "expected_action": "allow" + } + ] + }, + { + "name": "Contenu Adulte (à bloquer)", + "urls": [ + { + "url": "http://www.unepornstar.com", + "expected_action": "block" + } + ] + } + ] +} +Explication des champs +name: Le nom de la catégorie qui apparaîtra dans le rapport. +urls: Une liste d'objets, chacun représentant un site à tester. +url: L'URL complète du site. +expected_action: Le résultat attendu. Doit être : +"block": Le script s'attend à ce que l'accès au site soit bloqué (par un timeout, une erreur, ou une page de blocage). +"allow": Le script s'attend à ce que le site soit accessible. +Utilisation +Le script est conçu pour être lancé depuis une console PowerShell. Placez-vous dans le dossier du projet et exécutez la commande. + +Commande de base +powershell + +.\Audit-WebFilter.ps1 -JsonPath ".\urls.json" -ReportPath ".\rapport_audit.html" +Paramètres du script +-JsonPath (Obligatoire) : Chemin vers votre fichier de configuration urls.json. +-ReportPath (Obligatoire) : Chemin où le rapport HTML final sera sauvegardé. +-BlockPageKeywords (Optionnel) : Un tableau de chaînes de caractères à rechercher pour identifier une page de blocage. Par défaut : @("site bloqué", "access denied", "filtrage web", "blocked content"). +-ProxyAddress (Optionnel) : L'adresse de votre proxy (ex: "http://proxy.votre-entreprise.com:8080"). +-ProxyUseAuthentication (Optionnel) : Si spécifié (-ProxyUseAuthentication), une fenêtre demandera les identifiants pour le proxy. +Fonctionnement interne +Lecture de la configuration : Le script lit le fichier urls.json. +Configuration de la session : Il s'assure d'utiliser les protocoles de sécurité modernes (TLS 1.2/1.3). +Boucle de test : Pour chaque URL, le script : +Appelle la fonction Test-UrlFiltering. +Cette fonction envoie une requête web en simulant un navigateur Chrome (via le User-Agent) pour paraître légitime. +Elle analyse la réponse : +Succès (HTTP 200) : Considéré comme "Autorisé". +Timeout ou erreur réseau : Considéré comme "Bloqué". +Page contenant des mots-clés : Considéré comme "Bloqué". +Calcul du score : Le script compare le résultat obtenu (ActualResult) avec le résultat attendu (ExpectedAction). Si les deux correspondent, le test est réussi (score de 1), sinon il échoue (score de 0). +Génération du rapport : Les résultats sont compilés pour créer les scores par catégorie et le score global, qui sont ensuite formatés dans un fichier HTML. +Dépannage +Le script obtient un timeout alors que le site fonctionne dans mon navigateur +C'est généralement dû au fait que le serveur web ou un équipement de sécurité identifie le script comme un "bot". La version actuelle du script minimise ce risque en utilisant un User-Agent de navigateur. Si le problème persiste : + +Vérifiez que la ligne [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12, [Net.SecurityProtocolType]::Tls13 est bien au début du script. +Augmentez la valeur du timeout dans la fonction Test-UrlFiltering. +Assurez-vous que le pare-feu local de la machine n'interfère pas avec les requêtes PowerShell. +Le script refuse de s'exécuter à cause de la "politique d'exécution" +C'est une mesure de sécurité de PowerShell. Exécutez la commande suivante pour l'autoriser uniquement pour la session en cours, puis relancez votre script : Set-ExecutionPolicy RemoteSigned -Scope Process + +Améliorations Possibles +Tests en parallèle pour accélérer l'exécution sur de grosses listes d'URLs. +Ajout d'une option pour exporter les résultats en CSV. +Interface graphique simple pour lancer l'audit et visualiser les résultats.