Update cybersecurity/Network Reputation Service/ReadMe.md
This commit is contained in:
@@ -1,62 +1,295 @@
|
||||
# Audit de Filtrage Web par PowerShell
|
||||
# 🛡️ Audit Firewall - Network Reputation Service
|
||||
|
||||
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
|
||||
Un outil d'audit PowerShell professionnel pour évaluer l'efficacité du filtrage de votre firewall en testant des URLs catégorisées selon leur réputation réseau.
|
||||
|
||||
- **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.
|
||||
## 📋 Table des matières
|
||||
|
||||
## Prérequis
|
||||
- [Aperçu](#-aperçu)
|
||||
- [Fonctionnalités](#-fonctionnalités)
|
||||
- [Prérequis](#-prérequis)
|
||||
- [Installation](#-installation)
|
||||
- [Utilisation](#-utilisation)
|
||||
- [Configuration](#-configuration)
|
||||
- [Rapport généré](#-rapport-généré)
|
||||
- [Structure des données](#-structure-des-données)
|
||||
- [Système de scoring](#-système-de-scoring)
|
||||
- [Dépannage](#-dépannage)
|
||||
- [Contribution](#-contribution)
|
||||
- [Licence](#-licence)
|
||||
|
||||
- **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
|
||||
```
|
||||
## 🎯 Aperçu
|
||||
|
||||
## Installation
|
||||
Ce script PowerShell teste l'efficacité de votre firewall en vérifiant si des URLs malveillantes sont correctement bloquées et si des sites légitimes restent accessibles. Il génère un rapport HTML professionnel avec scoring, statistiques et recommandations.
|
||||
|
||||
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.
|
||||
**Auteur :** Hubert Cornet
|
||||
**Version :** 1.3
|
||||
**Date :** 03/09/2025
|
||||
|
||||
## Configuration
|
||||
## ✨ Fonctionnalités
|
||||
|
||||
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.
|
||||
- 🔍 **Test automatisé** de centaines d'URLs catégorisées
|
||||
- 📊 **Scoring intelligent** avec notes de A+ à F
|
||||
- 📱 **Rapport HTML responsive** avec interface interactive
|
||||
- 🔧 **Support des proxies** avec authentification
|
||||
- ⚡ **Barres de progression** en temps réel
|
||||
- 🎨 **Visualisations colorées** des résultats
|
||||
- 💾 **Export JSON** des données brutes
|
||||
- 🌐 **Détection multi-méthodes** des blocages
|
||||
|
||||
### Structure du fichier `urls.json`
|
||||
## 📋 Prérequis
|
||||
|
||||
### Système requis
|
||||
- Windows 10/11 ou Windows Server 2016+
|
||||
- PowerShell 5.1 ou supérieur
|
||||
- Connexion Internet active
|
||||
- Droits d'écriture dans le répertoire du script
|
||||
|
||||
### Modules PowerShell (installés automatiquement)
|
||||
- `PSWriteHTML`
|
||||
- `PSWriteColor`
|
||||
|
||||
### Fichiers requis
|
||||
- `file-nrs.json` - Base de données des URLs catégorisées
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
1. **Téléchargez le script** dans un dossier dédié
|
||||
2. **Téléchargez le fichier JSON** depuis :
|
||||
```
|
||||
https://gitea.tips-of-mine.com/Tips-Of-Mine/Powershell/src/branch/main/cybersecurity/Network%20Reputation%20Service/file-nrs.json
|
||||
```
|
||||
3. **Placez les deux fichiers** dans le même répertoire
|
||||
|
||||
## 💻 Utilisation
|
||||
|
||||
### Utilisation basique
|
||||
```powershell
|
||||
.\AuditFirewall.ps1
|
||||
```
|
||||
|
||||
### Avec proxy
|
||||
```powershell
|
||||
.\AuditFirewall.ps1 -ProxyUrl "http://proxy.entreprise.com:8080"
|
||||
```
|
||||
|
||||
### Avec authentification proxy
|
||||
```powershell
|
||||
.\AuditFirewall.ps1 -ProxyUrl "http://proxy.entreprise.com:8080" -ProxyUseAuthentication
|
||||
```
|
||||
|
||||
### Avec timeout personnalisé
|
||||
```powershell
|
||||
.\AuditFirewall.ps1 -TimeoutSeconds 15
|
||||
```
|
||||
|
||||
## ⚙️ Configuration
|
||||
|
||||
### Paramètres disponibles
|
||||
|
||||
| Paramètre | Type | Description | Défaut |
|
||||
|-----------|------|-------------|---------|
|
||||
| `ProxyUrl` | String | URL du proxy réseau | Aucun |
|
||||
| `ProxyUseAuthentication` | Switch | Active l'auth proxy | False |
|
||||
| `TimeoutSeconds` | Integer | Délai d'attente par URL | 10 |
|
||||
|
||||
### Personnalisation des mots-clés de blocage
|
||||
Modifiez la variable `$BlockKeywords` dans le script :
|
||||
```powershell
|
||||
$BlockKeywords = @("site bloqué", "access denied", "filtrage web", "Access Denied", "Site Blocked")
|
||||
```
|
||||
|
||||
## 📊 Rapport généré
|
||||
|
||||
Le script génère automatiquement :
|
||||
|
||||
### 📁 Structure des fichiers de sortie
|
||||
```
|
||||
Rapports/
|
||||
└── [Date et Heure]/
|
||||
├── Audit_Firewall_Report.html # Rapport principal
|
||||
└── Results.json # Données brutes
|
||||
```
|
||||
|
||||
### 🎨 Contenu du rapport HTML
|
||||
- **Résumé exécutif** : Score global et statistiques clés
|
||||
- **Tableau des scores** : Performance par catégorie
|
||||
- **Détails interactifs** : Tests individuels par URL
|
||||
- **Barème de notation** : Explication du système de scoring
|
||||
|
||||
## 📁 Structure des données
|
||||
|
||||
### Format du fichier `file-nrs.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" }
|
||||
]
|
||||
}
|
||||
```
|
||||
{
|
||||
"categorie": [
|
||||
{
|
||||
"id": "malware",
|
||||
"nom": "Malware",
|
||||
"description": "Sites distribuant des logiciels malveillants",
|
||||
"urls": [
|
||||
{
|
||||
"url": "http://example-malware.com",
|
||||
"reputation": "malicious",
|
||||
"expected_action": "block"
|
||||
},
|
||||
{
|
||||
"url": "https://legitimate-site.com",
|
||||
"reputation": "safe",
|
||||
"expected_action": "allow"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Actions attendues
|
||||
- `"block"` : L'URL doit être bloquée par le firewall
|
||||
- `"allow"` : L'URL doit rester accessible
|
||||
|
||||
## 📈 Système de scoring
|
||||
|
||||
### Barème de notation
|
||||
|
||||
| Note | Score | Interprétation |
|
||||
|------|--------|---------------|
|
||||
| **A+** | 95-100% | 🟢 Excellent / Parfait |
|
||||
| **A** | 90-95% | 🟢 Très bon niveau de filtrage |
|
||||
| **B+** | 85-90% | 🟡 Très bon |
|
||||
| **B** | 80-85% | 🟡 Bon, quelques ajustements |
|
||||
| **C+** | 75-80% | 🟠 Assez bon |
|
||||
| **C** | 70-75% | 🟠 Moyen, lacunes importantes |
|
||||
| **D+** | 65-70% | 🔴 Passable |
|
||||
| **D** | 60-65% | 🔴 Faible, filtrage inefficace |
|
||||
| **E+** | 55-60% | 🔴 Très faible |
|
||||
| **E** | 50-55% | 🔴 Insuffisant |
|
||||
| **F+** | 45-50% | ⚫ Critique |
|
||||
| **F** | 0-45% | ⚫ Action immédiate requise |
|
||||
|
||||
### Méthode de calcul
|
||||
```
|
||||
Score = (URLs correctement filtrées / Total URLs testées) × 100
|
||||
```
|
||||
|
||||
## 🔍 Méthodes de détection
|
||||
|
||||
### Comment le script détecte un blocage :
|
||||
1. **Analyse du contenu** : Recherche de mots-clés de pages de blocage
|
||||
2. **Timeouts réseau** : Requêtes qui expirent (probable blocage firewall)
|
||||
3. **Erreurs de connexion** : Impossibilité d'atteindre le serveur
|
||||
4. **Codes de statut HTTP** : Analyse des réponses serveur
|
||||
|
||||
### Headers HTTP simulés :
|
||||
Le script simule un navigateur moderne pour éviter la détection :
|
||||
```
|
||||
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...
|
||||
Accept: text/html,application/xhtml+xml,application/xml...
|
||||
Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7
|
||||
```
|
||||
|
||||
## 🔧 Dépannage
|
||||
|
||||
### Problèmes courants
|
||||
|
||||
#### ❌ "Le fichier 'file-nrs.json' n'existe pas!"
|
||||
**Solution :** Téléchargez le fichier JSON depuis le lien fourni et placez-le dans le même dossier que le script.
|
||||
|
||||
#### ❌ "Impossible d'installer le module X"
|
||||
**Solution :** Exécutez PowerShell en tant qu'administrateur ou utilisez :
|
||||
```powershell
|
||||
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
||||
```
|
||||
|
||||
#### ❌ Timeouts fréquents
|
||||
**Solutions :**
|
||||
- Augmentez la valeur de `-TimeoutSeconds`
|
||||
- Vérifiez votre connexion réseau
|
||||
- Configurez correctement les paramètres proxy
|
||||
|
||||
#### ❌ Faux positifs/négatifs
|
||||
**Solutions :**
|
||||
- Mettez à jour les mots-clés de blocage
|
||||
- Vérifiez la configuration de votre firewall
|
||||
- Adaptez le fichier JSON à votre environnement
|
||||
|
||||
## 🏢 Cas d'usage recommandés
|
||||
|
||||
### 📅 Utilisation périodique
|
||||
- **Audit mensuel** de l'efficacité du firewall
|
||||
- **Validation** après mise à jour des règles
|
||||
- **Benchmarking** entre solutions de sécurité
|
||||
|
||||
### 👥 Reporting managérial
|
||||
- **Tableaux de bord** pour la direction IT
|
||||
- **KPIs de sécurité** mesurables
|
||||
- **Justification** des investissements sécurité
|
||||
|
||||
### 🔧 Tests de configuration
|
||||
- **Validation** après changements réseau
|
||||
- **Tests de régression** des règles firewall
|
||||
- **Audit de conformité** sécurité
|
||||
|
||||
## ⚠️ Limitations techniques
|
||||
|
||||
### Points d'attention :
|
||||
- **Tests séquentiels** : Pas de parallélisation (peut être lent)
|
||||
- **Détection basique** : Repose sur des mots-clés prédéfinis
|
||||
- **Faux positifs** : Sites légitimes temporairement inaccessibles
|
||||
- **Sécurité** : Le script contacte réellement les URLs testées
|
||||
|
||||
### Bonnes pratiques :
|
||||
1. 🕐 Exécuter en heures creuses
|
||||
2. 📊 Analyser les résultats dans le contexte
|
||||
3. 🔄 Maintenir à jour le fichier JSON
|
||||
4. 📈 Suivre l'évolution des scores dans le temps
|
||||
|
||||
## 🤝 Contribution
|
||||
|
||||
### Pour contribuer :
|
||||
1. Fork le projet
|
||||
2. Créez votre branche feature
|
||||
3. Committez vos changements
|
||||
4. Poussez vers la branche
|
||||
5. Ouvrez une Pull Request
|
||||
|
||||
### Idées d'améliorations :
|
||||
- [ ] Parallélisation des tests pour améliorer les performances
|
||||
- [ ] Détection plus sophistiquée des pages de blocage
|
||||
- [ ] Support de bases de données de réputations externes
|
||||
- [ ] Interface graphique pour la configuration
|
||||
- [ ] Intégration avec des APIs de threat intelligence
|
||||
|
||||
## 🎯 Roadmap
|
||||
|
||||
### Version 1.4 (prévue)
|
||||
- [ ] Tests parallèles pour améliorer les performances
|
||||
- [ ] Support des certificats SSL personnalisés
|
||||
- [ ] Notifications par email des résultats
|
||||
|
||||
### Version 2.0 (future)
|
||||
- [ ] Interface web pour la configuration
|
||||
- [ ] Intégration avec des solutions SIEM
|
||||
- [ ] API REST pour l'automatisation
|
||||
|
||||
## 📞 Support
|
||||
|
||||
Pour obtenir de l'aide ou signaler des problèmes :
|
||||
- 📧 Contactez l'auteur : Hubert Cornet
|
||||
- 🐛 Ouvrez une issue sur le dépôt du projet
|
||||
- 📚 Consultez la documentation technique
|
||||
|
||||
## 📄 Licence
|
||||
|
||||
Ce projet est sous licence MIT. Voir le fichier `LICENSE` pour plus de détails.
|
||||
|
||||
---
|
||||
|
||||
**⭐ Si ce script vous a été utile, n'hésitez pas à lui donner une étoile !**
|
||||
|
||||
---
|
||||
|
||||
*Dernière mise à jour : 03 septembre 2025*
|
Reference in New Issue
Block a user