Update cybersecurity/Network Reputation Service/ReadMe.md
This commit is contained in:
@@ -1,117 +1,62 @@
|
||||
Audit de Filtrage Web par PowerShell
|
||||
# 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
|
||||
## Fonctionnalités
|
||||
|
||||
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.
|
||||
- **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.
|
||||
|
||||
Structure du fichier urls.json
|
||||
json
|
||||
## Prérequis
|
||||
|
||||
{
|
||||
"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.
|
||||
- **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
|
||||
```
|
||||
|
||||
Commande de base
|
||||
powershell
|
||||
## Installation
|
||||
|
||||
.\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 :
|
||||
1. Créez un dossier pour votre projet (par exemple, `C:\Scripts\AuditFirewall`).
|
||||
2. Copiez le script principal (par exemple, `Audit-WebFilter.ps1`) dans ce dossier.
|
||||
3. Créez un fichier nommé `urls.json` dans le même dossier.
|
||||
|
||||
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
|
||||
## Configuration
|
||||
|
||||
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.
|
||||
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
|
||||
{"categorie": [
|
||||
{
|
||||
"id": 1,
|
||||
"nom": "Alcool",
|
||||
"description": "Pages web qui promeuvent, préconisent ou vendent de l'alcool, y compris de la bière, du vin et des alcools forts.",
|
||||
"urls" : [
|
||||
{ "url": "https://www.wine-searcher.com", "reputation": "Information sur l'alcool", "expected_action": "allow" },
|
||||
{ "url": "https://www.alcool-info-service.fr", "reputation": "Prévention alcool", "expected_action": "allow" },
|
||||
{ "url": "https://www.thebar.com", "reputation": "Bars", "expected_action": "block" },
|
||||
{ "url": "https://www.cocktaildb.com", "reputation": "Cocktails", "expected_action": "block" },
|
||||
{ "url": "https://www.diffordsguide.com", "reputation": "Cocktails", "expected_action": "allow" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"nom": "Anonymiseur",
|
||||
"description": "Pages web qui font la promotion de serveurs mandataires et d'anonymiseurs pour la navigation sur des sites web dans le but de contourner les filtres.",
|
||||
"urls" : [
|
||||
{ "url": "https://www.whonix.org", "reputation": "Navigateurs anonymes", "expected_action": "block" },
|
||||
{ "url": "https://brave.com", "reputation": "Navigateurs anonymes", "expected_action": "allow" },
|
||||
{ "url": "https://duckduckgo.com", "reputation": "Services de confidentialité", "expected_action": "allow" },
|
||||
{ "url": "https://startpage.com", "reputation": "Services de confidentialité", "expected_action": "allow" },
|
||||
{ "url": "https://www.ghostery.com", "reputation": "Services de confidentialité", "expected_action": "allow" }
|
||||
]
|
||||
}
|
||||
```
|
Reference in New Issue
Block a user