Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| netadmin:filtrage-web-squidguard [2017/12/29 14:15] – créée yoann | netadmin:filtrage-web-squidguard [2025/11/19 23:13] (Version actuelle) – yoann | ||
|---|---|---|---|
| Ligne 3: | Ligne 3: | ||
| ====== Filtrage du web avec SquidGuard ====== | ====== Filtrage du web avec SquidGuard ====== | ||
| - | ===== Installation du proxy ===== | + | : |
| - | Squidguard est un plugin de filtrage d'URL à associer au programme | + | Squidguard est un plugin de filtrage d'URL à associer au programme |
| + | |||
| + | Dans cette note, SquidGuard est installé sur une Debian 12 (bookworm). | ||
| + | |||
| + | |||
| + | ===== Installation ===== | ||
| <code bash> | <code bash> | ||
| - | $ sudo apt-get install | + | apt install |
| - | </ | + | |
| - | ===== Configuration de squid ===== | ||
| - | Editer le fichier **/etc/squid3/squid.conf** | + | /usr/bin/squidGuard -v |
| + | SquidGuard: 1.6.0 Berkeley DB 5.3.28: (September | ||
| + | </ | ||
| - | On définit ci-dessous un réseau local **lan** auquel on donnera le droit d’accès. | ||
| - | < | ||
| - | acl lan src 192.168.0.0/ | ||
| - | </ | ||
| - | Avant la directive d' | + | ===== Configuration ===== |
| - | + | ||
| - | < | + | |
| - | http_access allow lan | + | |
| - | http_access deny all | + | |
| - | </ | + | |
| - | ===== Contrôle du service ===== | ||
| - | Le démarrage/ | + | ==== Configuration Squid ==== |
| - | < | + | Modifier le fichier de configuration de Squid '' |
| - | $ sudo service squid3 restart | + | |
| - | </code> | + | |
| - | Pour prendre en compte les modifications du fichier de configuration sans arrêter le service: | + | < |
| + | url_rewrite_program / | ||
| + | url_rewrite_children 10 startup=0 idle=1 concurrency=0 | ||
| + | </ | ||
| + | |||
| + | Valider la syntaxe après modification | ||
| <code bash> | <code bash> | ||
| - | $ sudo squid3 | + | squid -k parse |
| </ | </ | ||
| - | ===== Filtrage ===== | ||
| - | Le module squidguard permet de filtrer l’accès au contenu web. | + | ==== Configuration SquidGuard ==== |
| - | <code bash> | ||
| - | $ sudo apt-get install squidguard | ||
| - | </ | ||
| - | A l'installation | + | C'est dans le fichier de configuration |
| + | * les plages horaires ('' | ||
| + | * les **sources** ('' | ||
| + | * les **listes** ('' | ||
| - | Modifier la configuration de squid pour qu'il utilise squidguard: | ||
| - | < | ||
| - | url_rewrite_program / | ||
| - | url_rewrite_children 10 startup=0 idle=1 concurrency=0 | ||
| - | </ | ||
| - | Modifier le fichier de configuration **/ | + | Via les ACLs va pouvoir utiliser les précédentes déclarations pour contrôler l' |
| - | Indiquer le répertoire conteneur des listes: | + | |
| + | Syntaxe de déclaration d'une plage horaire | ||
| < | < | ||
| + | time workhours { | ||
| + | weekly mtwhf 08:00 - 16:30 | ||
| + | date *-*-01 | ||
| + | } | ||
| </ | </ | ||
| - | Déclarer les sources | + | Un exemple de déclaration de source |
| < | < | ||
| + | src admin { | ||
| + | ip 1.2.3.4 | ||
| + | user root foo bar | ||
| + | within | ||
| + | } | ||
| </ | </ | ||
| - | Déclarer les destinations | + | Un exemple de liste |
| < | < | ||
| + | dest adult { | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | log adult-access.log | ||
| + | |||
| + | } | ||
| </ | </ | ||
| Ligne 77: | Ligne 85: | ||
| </ | </ | ||
| - | Lorsque une ressource destination non autorisée est demandée, la directive **redirect** est utilisée par squiGuard. Des fichiers cgi d' | + | Lorsque une ressource destination non autorisée est demandée, la directive **redirect** est utilisée par squiGuard. |
| - | + | Ci dessous les variables disponibles lors de la redirection: | |
| - | + | ||
| - | ===== Script | + | |
| - | Le script: | + | ^ %a | Adresse IP du client. | |
| - | * Récupère les liste maintenues par l' | + | ^ %i | Identifiant utilsateur (RFC931, LDAP or mySQL) ou " |
| - | * Décompresse l' | + | ^ %n | nom de domaine du client ou " |
| - | | + | ^ %p | URI de la requête | |
| + | ^ %s | source group du client ou " | ||
| + | ^ %t | target group: la destination évaluée or " | ||
| + | ^ %u | URL | | ||
| - | ===== Rendre le proxy transparent | + | ===== Redirection |
| - | Le mode transparent permet de filtrer les postes clients sans configuration spécifique coté client. Il a cependant ces limites notamment avec **https**. Le filtrage transparent ne fonctionnera pas pour tous les sites en https qui considéreront une attaque "man in the middle" | + | <code bash> |
| + | # Installation du serveur web | ||
| + | apt install -y apache2 | ||
| - | ==== Configurer squid ==== | + | # activer les support des scripts CGI |
| + | a2enmod cgi | ||
| + | systemctl restart apache2.service | ||
| + | </ | ||
| - | Activer | + | On utilise |
| - | <file> | + | <code bash> |
| - | http_port 3128 transparent | + | mkdir -p / |
| - | </file> | + | cp / |
| + | chmod a+x / | ||
| + | </code> | ||
| - | Modifier la configuration du système pour autoriser le routage | + | Exemple |
| + | La ressource demandée n'est pas accessible depuis ce réseau car elle est associée à une catégorie non appropriée. | ||
| - | ==== Règles iptables ==== | ||
| - | Dans les règles présentées ci-dessous: | + | Après modification du fichier |
| - | * **lan** est le nom de l' | + | |
| - | * **wan** est le nom de l' | + | |
| - | * **192.168.0.254** est l' | + | |
| + | <code bash> | ||
| + | systemctl reload squid.service | ||
| - | Règles | + | tail / |
| + | </ | ||
| + | |||
| + | |||
| + | ===== Mise à jour des listes ===== | ||
| + | |||
| + | On peut mettre à jour les fichiers .db à l' | ||
| + | |||
| + | On déclanche le processus de mises à jour des fichiers .db via l' | ||
| <code bash> | <code bash> | ||
| - | iptables | + | # L' |
| - | iptables -t filter -A FORWARD -i lan -p tcp --dport 443 -j ACCEPT | + | squidguard |
| - | iptables -t nat -A POSTROUTING -o wan -j SNAT --to-source 192.168.0.254 | + | |
| </ | </ | ||
| - | Règle | + | |
| - | < | + | ===== Script |
| - | iptables -t nat -A PREROUTING -i lan -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.254: | + | |
| - | iptables -t nat -A PREROUTING -i wan -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 | + | Le script: |
| - | </ | + | * Récupère les liste maintenues par l' |
| + | * Décompresse l' | ||
| + | * Lance la construction des bases Berkeley DB | ||
| + | |||
| ===== Configuration des clients ===== | ===== Configuration des clients ===== | ||
| Ligne 150: | Ligne 176: | ||
| application/ | application/ | ||
| </ | </ | ||
| + | |||
| Ligne 160: | Ligne 187: | ||
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| + | * http:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * [[https:// | ||
| + | * https:// | ||