Installez votre solution de contrôle parental dans le Cloud avec le proxy Squid + Squidguard

J’ai enfin trouvé le temps de vous présenter un tutoriel complet sur l’installation d’un serveur Proxy Squid dans le Cloud. Pour faire très simple un serveur Proxy joue le rôle d’intermédiaire entre vos appareils et Internet. Vous allez donc pouvoir lui confier quelques missions biens sympathiques comme la suppression des pubs en amont pour accélérer votre navigation Internet, un système de contrôle parental digne de ce nom afin que vos enfants ne se retrouve pas sur YouPorn lorsqu’ils recherchent des photos de chats pour illustrer un exposé, mais un filtrage avancé pour protéger vos propres appareils des sites douteux.

Dans un article récent je vous expliquais comment bloquer les pubs sans ce satané AdBlock Plus qui bouffe les ressources de votre navigateur simplement en utilisant le fichier hosts. Dans ce tutoriel nous allons aller beaucoup plus loin.

Je vais précisément vous expliquer comment déployer un proxy Squid et son module de filtrage parental Squidguard sur une machine virtuelle Linux Debian hébergée sur le cloud OVH. La bonne nouvelle c’est qu’à part la VM OVH qui coûte seulement 3,59 EUR TTC par mois, tout le reste est gratuit.

Grâce à cette solution Proxy dans le Cloud :

  • Vous disposerez d’un cache Internet permettant d’accélérer le chargement des pages déjà visitées.
  • Vous allez filtrer les pubs pour toute la famille sans avoir à utiliser AdBlock Plus bien connu pour ralentir votre navigateur internet et pour se faire payer par les éditeurs pour qu’ils laissent passer des pubs
  • Vous disposerez d’une solution de contrôle parental pour TOUS vos périphériques bien plus efficace que les logiciels du marché.
  • Vous allez surfer bien plus rapidement (si vous déployez votre proxy dans le Cloud) car le filtrage réduit le poids des pages internet visitées polluées par en moyenne 30% de flux inutiles.
  • Vous allez protéger vos ordinateurs des attaques car c’est l’adresse IP de votre proxy qui sera visible sur Internet et non plus celle de votre Box Internet.
  • Vous pourrez partager la solution avec votre entourage. le système étant dans le Cloud vous pourrez autoriser des proches à utiliser la solution afin qu’il améliore le navigation Internet. Attention toutefois de les prévenir que vous avez accès aux logs d’activités et donc des sites visités.

Au programme de ce tuto:

  • ETAPE 1 : La mise en service d’une VM chez OVH (Durée:  15 minutes de l’inscription à l’obtention de la VM Linux)
  • ETAPE 2 : Installation et configuration du proxy Squid (Durée:  25 minutes)
  • ETAPE 3 : Paramétrage des clients PC et smartphones et test de fonctionnement du Proxy Squid (Durée: 2 minutes par appareils)
  • ETAPE 4 : Installation et configuration du filtrage parental SquidGuard (Durée: 15 minutes)
  • ETAPE 5 : Test de fonctionnement du filtrage (Durée: 5 minutes)

En 1 heure environ, en suivant bien les instructions vous disposerez d’une petite solution proxy dans le Cloud qui va révolutionner votre navigation sur Internet et vous permettre si vous êtes débutant de faire vos premiers par dans le monde du Cloud et de la sécurité.

NB: Dans la mesure ou l’adresse IP attribuée à votre serveur est française, l’utilisation du proxy pour faire du téléchargement illégal (films / musiques) ne vous protégera pas de la commission Hadopi. Utilisez pour cela un serveur VPN plus adapté à cet usage.

ETAPE 1: Déployer un serveur dans le Cloud

Pour commencer je déploie un petit serveur dans le Cloud sur lequel j’installerai le proxy Squid. Pour cela je choisi de prendre un simple VPS 2016 à 3,59 TTC par mois chez OVH.

Un VPS est un serveur dédié virtuel c’est à dire un système d’exploitation virtualisé qui m’est entièrement dédié.

OVH_VPS

L’offre VPS SSD 1 vous permet de disposer d’une VM avec 1 vCPU de 2.4 Ghz, 2 Go de RAM et 10 Go d’espace disque performant. C’est amplement suffisant pour votre proxy. Si vous choisissez un VPS chez un autre fournisseur assurez-vous que le trafic est illimité et la bande passante généreuse, c’est le cas chez OVH avec une bande passante de 100 Gb/s entre Internet et votre Proxy Squid.

OVH_VPS_2

Pour ce tutoriel je choisi une VM Linux Debian 8 (Jessie) 64 bits. OVH vous permet de déployer d’autres systèmes, mais si vous voulez suivre ce tuto à la lettre sans anicroches choisissez une Debian. C’est une distribution de Linux particulièrement stable et donc particulièrement appréciée des informaticiens.

Une fois la commande effectuée OVH provisionne le serveur, prêt à l’emploi et connecté à Internet avec une IP V4 dédiée, en moins de 10 minutes, c’est redoutablement efficace. Vous recevez un mail contenant l’IP et le mot de passe du compte root de la VM dès que c’est terminé.

Notez, et c’est important, que c’est VOTRE serveur et vous en êtes l’administrateur. En cas de mauvaise manipulation qui le rendrait inaccessible OVH vous permet de régénérer gratuitement une nouvelle VM avec un nouveau mot de passe. Ce n’est pas le cas chez tous les fournisseurs, profitez donc en bien et n’ayez pas peur de faire des conneries, c’est comme cela que l’on progresse.

Pour vous connecter à votre serveur et passer à la suite du tutoriel utilisez simplement le freeware PuTTy pour établir une connexion en SSH.

putty_configuration_ovh

Authentifiez vous avec le compte root et le mot de passe livré par OVH.

login as: root
root@vpsXXXXXX.ovh.net's password:

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Jun 17 15:58:00 2016 from a.b.c.d
root@vpsXXXXXX:~#

ETAPE 2: Installation et configuration du Proxy Squid

Mise à jour de votre distribution Debian

Une fois connecté en PuTTY mettez à jour votre distribution Linux.

sudo apt-get update && apt-get upgrade

Installation du proxy Squid.

Bonne nouvelle Squid fait parti des dépôts officiels de Debian, ce qui vous évite de télécharger, décompresser et compiler les sources à la mimine et en ligne de commande. Pour installer Squid sur Debian il suffit de lancer la commande suivante :

sudo apt-get install squid3

Notez que j’ai bien spécifié squid3 et non squid comme indiqué sur certains tutoriels. Ce détail a de l’importance car selon les distributions Linux utilisés on ne parle pas de la dernière version. Pour être sur du bon choix consultez toujours la liste des packages inclus dans les dépots officiels de votre distribution. Par exemple sur Debian si vous consultez la liste des packages officiels vous verrez que le package squid3 en date de cet article correspond bien à la dernière version validée sur Debian. Cette version n’est pas nécessairement la dernière version développée par Squid, il y a toujours un petit écart, mais elle a le mérite d’être parfaitement stable.

Configuration du proxy Squid

Toute la configuration de Squid se fait via le fichier de configuration squid.conf

Copier de secours du fichier de conf

Avant de commencer je fais une copie de sauvegarde du fichier original squid.conf

cp /etc/squid3/squid.conf /etc/squid3/squid.conf.initial

Nous allons ensuite épurer un peu le fichier squid.conf en supprimant tous les commentaires explicatifs. Ce fichier contient en effet plus de 7500 lignes.

cat squid.conf.initial | egrep -v -e '^[[:blank:]]*#|^$' > squid.conf

Une fois le fichier épuré il ne reste plus que 24 lignes lignes de config de base. On y voit beaucoup plus clair. Cette configuration par défaut n’est pas fonctionnelle car le proxy bloque tous les accès

acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443		# https
acl Safe_ports port 70		# gopher
acl Safe_ports port 210		# wais
acl Safe_ports port 1025-65535	# unregistered ports
acl Safe_ports port 280		# http-mgmt
acl Safe_ports port 488		# gss-http
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid3
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern .		0	20%	4320

Nous allons maintenant le modifier pour le rendre fonctionnel et sécurisé.

Editer le fichier de conf

Je considère que vous savez éditer un fichier sous Linux. Si toutefois vous n’êtes pas à l’aise avec les éditeurs en ligne de commande comme nano ou vi, je vous recommande d’installer sur votre station Windows l’outil WinSCP qui vous permettra d’éditer le fichier de configuration à distance depuis votre station Windows. C’est comme cela que je procède car je suis loin d’être un expert sous Linux.

Si toutefois nano ne vous fait pas peur, ouvrez le fichier de configuration comme suit :

nano /etc/squid3/squid.conf

Autoriser l’utilisation du proxy depuis votre domicile uniquement

Je créé le groupe d’autorisation homeaccess que j’associe à l’adresse IP public fournie par mon fournisseur d’accès. Si vous ne connaissez pas votre IP publique récupérez la simplement sur un site comme WhatIsMyIPAdress. Remplacer l’IP en exemple ici par votre adresse IP sinon vous allez autoriser ma Freebox à accéder à votre proxy ;-).

acl CONNECT method CONNECT
acl homeaccess src 82.232.228.17/32

J’autorise ensuite le groupe homeaccess précédemment créé à utiliser mon proxy. Notez qu’il est important que cette règle soit placée dans le fichier AVANT la règle http_access deny all dont le rôle est d’exclure toutes les autres IP, sinon ça ne marchera pas.

http_access allow localhost
http_access allow homeaccess
http_access deny all

Vous avez compris que dans le même esprit vous pouvez créer d’autres règles afin de pouvoir utiliser votre proxy depuis d’autres lieux.

Masquer l’utilisation du proxy sur Internet

Pour surfer sur Internet via le proxy Squid sans que celui ci soit détecté j’ajoute la ligne suivante à la fin de mon fichier :

forwarded_for off

Autoriser les ports non standards

Autant dans une entreprise l’administrateur pourrait vouloir bloquer certains ports en sortie afin que les utilisateurs ne puissent pas utiliser certains services spécifiques, autant pour mon utilisation personnelle cette restriction activée par défaut n’a pas d’intérêt.

Pour faire sauter ce blocage je recherche la ligne suivante :

http_access deny !Safe_ports

et je la commente avec un # pour la désactiver.

# http_access deny !Safe_ports

Fichier de configuration final


acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443		# https
acl Safe_ports port 70		# gopher
acl Safe_ports port 210		# wais
acl Safe_ports port 1025-65535	# unregistered ports
acl Safe_ports port 280		# http-mgmt
acl Safe_ports port 488		# gss-http
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl CONNECT method CONNECT
acl homeaccess src 82.232.228.17/32
# http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access allow homeaccess
http_access deny all
http_port 3128
coredump_dir /var/spool/squid3
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern .		0	20%	4320
forwarded_for off

Redémarrer le Squid pour prendre en compte les changements

Après avoir enregistré mon squid.conf je redémarrer le service Squid pour que les changements soient prise en compte

sudo /etc/init.d/squid3 restart

ETAPE 3: Paramétrage du proxy sur le PC, Tablettes et Smartphones

Avant d’aller plus loin et d’installer le module de filtrage SquidGuard, il est important de faire un premier test afin de vérifier le bon fonctionnement du Proxy Squid.

Configurer le proxy sur mon PC

Je paramètre le navigateur Chrome de mon PC pour qu’il passe par mon proxy lorsque je vais sur Internet. Notez que cela paramètre également automatiquement mes autres navigateurs de mon PC, la configuration est en effet commune. Dans le champ adresse indiquer l’IP ou le nom d’hôte fourni par OVH et dans le champ port indiquez 3128, le port par défaut de Squid.

monsquid

Pour tester si mon Proxy répond j’effectue volontairement une recherche erronée. Je constate que c’est bien mon proxy Squid chez OVH qui me répond, bonne nouvelle ça marche.

Erreur_Squid

Plus professionnel pour tester que je suis bien sur mon proxy, je visite le site WhatIsMyIPAdress pour m’assurer que c’est bien l’IP OVH de mon proxy qui est vue en frontal sur Internet.

Petit conseil, plutôt que de paramétrer votre proxy dans les paramètres réseaux je vous recommande d’utiliser l’extension Chrome FoxyProxy qui vous permettra d’activer / désactiver le proxy Squid en 1 clic.

FoxyProxy

Configurer le proxy sur les smartphones / tablette de la maison

Pour les tablettes et les smartphones je ne vais pas configurer le proxy en dur dans le navigateur mais dans les paramètres avancés de la connexion Wi-Fi. De cette manière à chaque fois qu’un appareil configuré va utiliser mon réseau Wi-Fi il va surfer « Safe ». A l’inverse lorsque le smartphone quitte le domicile il se connecte à Internet normalement soit en 3G / 4G ou via un autre Wi-Fi. Alors bien sur il est tout à fait possible de créer des règles d’accès sur le Squid basées sur les adresses Mac plutôt que les IP afin que le smartphone passe systématiquement par le Proxy. Je présenterai cette possibilité à une autre occasion.

ETAPE 4: Installez et configurer le module de filtrage Squidguard

En suivant scrupuleusement les étapes suivantes vous disposerez d’une solution de filtrage d’URL pleinement opérationnelle qui se concentre sur le filtrage des sites pornographiques, des publicités qui vous envahissent et des sites à caractère violent.

Installation de SquidGuard

Installer SquidGuard

L’installation du module SquidGuard se fait directement depuis le dépôt Debian, pratique.

apt-get install squidguard

Intégration du module SquidGuard dans Squid

Cette commande à ajouter à votre fichier de configuration squid.conf (voir chapitre précédent) permet de charger Squidguard au démarrage du service Squid.

url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf 

Mise en place d’une liste de filtrage – Blacklist

Télécharger la liste noire

Bien que vous puissiez créer votre liste vous même, je vous recommande fortement de vous appuyer sur une liste existante. S’il en existe de nombreuses, la liste noire de l’université de Toulouse est largement utilisée par de nombreux acteurs de solutions de sécurité. C’est donc sur celle ci que je vais m’appuyer. Bien entendu vous avez toujours la possibilité de rajouter votre propose restrictions en compléments dès que vous aurez pigé le truc.

wget http://dsi.ut-capitole.fr/blacklists/download/blacklists.tar.gz

Mise en place de la liste noire 

Pour la mise en place rien de très compliqué, je décompresse la liste :

tar -xzf blacklists.tar.gz

Et je la copie dans le répertoire de squidguard

cp -R blacklists/* /var/lib/squidguard/db/

Je m’assure que Squid puisse y accéder

chmod -R 770 /var/lib/squidguard/db/*
chown -R proxy:proxy /var/log/squid3 /var/lib/squidguard

Et je génère une base de données.

squidGuard -C all

Dans un prochain tuto je vous donnerai la commande pour planifier automatiquement la MAJ de la blacklist via une tâche planifiée sous Linux (CRON).

Configuration du SquidGuard

Copie de secours du fichier de configuration de SquidGuard

Avant de commencer je fais une copie de sauvegarde du fichier original squidguard.conf

cp /etc/squidguard/squidGuard.conf /etc/squidguard/squidGuard.conf.origin

Paramétrage du fichier de configuration de SquidGuard

Comme pour la configuration du Squid n’hésitez pas le faire depuis votre Windows avec WinSCP, sinon voici le process en mode terminal :

nano /etc/squidguard/squidGuard.conf

Je copie le code suivant dans le fichier de configuration.

#
# CONFIG FILE FOR SQUIDGUARD
#

dbhome /var/lib/squidguard/db
logdir /var/log/squid3

# Déclaration des groupes de filtrage sur lesquels on souhaite agir
dest adult {
        domainlist adult/domains
        urllist adult/urls
        expressionlist adult/very_restrictive_expression
}
dest publicite {
        domainlist publicite/domains
        urllist publicite/urls
}
dest agressif {
        domainlist aggressive/domains
        urllist aggressive/urls
}

###Forcer réécriture https vers http
rew safesearch {
 s@(google..*/search?.*q=.*)@ &safe=active@i
  s@(google..*/images.*q=.*)@ &safe=active@i
 s@(google..*/groups.*q=.*)@ &safe=active@i
  s@(google..*/news.*q=.*)@ &safe=active@i
 s@(yandex..*/yandsearch?.*text=.*)@ &fyandex=1@i
  s@(search.yahoo..*/search.*p=.*)@ &vm=r&v=1@i
 s@(search.live..*/.*q=.*)@ &adlt=strict@i
  s@(search.msn..*/.*q=.*)@ &adlt=strict@i
 s@(.bing..*/.*q=.*)@ &adlt=strict@i
  log block.log
 }

# Autorisation des règles (Ici les 3 groupes créés précédemment seront interdit)
acl {
  default {
        pass !adult !publicite !agressif all  ##Interdiction des groupes déclarés précédemment
        redirect  http://google.fr ##les sites interdits sont redirigés vers Google
  }
}

Je ne vais pas rentrer trop dans les détails mais pour faire simple et si vous avez eu la curiosité de regarder le répertoire qui contient l’extraction de la blacklist téléchargée dans /var/lib/squidguard/dbil y a pleins de répertoires qui correspondent chacun à une catégorie de type de sites.

Dans le fichier de configuration j’ai créé les 3 restrictions adult / publicite et agressif qui correspondent à 3 répertoires de la blacklist, le nom du répertoire correspondant dans dans /var/lib/squidguard/db est identifié via les variables domainlist et urllist.

J’ai créé 3 restrictions correspondant à 3 répertoires alors qu’il existe dans la blacklist de Toulouse une soixantaine d’autres répertoires comme par exemple Astrology, Dialer, Forums, Lingerie, Malware, Child, … Autant vous dire que vous avez la possibilité de durcir d’avantages les restrictions, faites selon vos objectifs.

Pour mieux comprendre le principe le site officiel de Squidguard est l’endroit idéal.

Néanmoins en copiant simplement cette configuration vous bloquerez un paquet de sites pornos, une grande majorité des publicités et les sites à caractères violent.

Redémarrage du service Squid

Il faut évidemment redémarrer votre proxy Squid pour que tout soit bien prise en compte.

sudo /etc/init.d/squid3 restart

ETAPE 5: Tester le filtrage Squidguard

Pour les tests c’est très simple, ouvrez votre navigateur et tentez d’accéder à des sites comme YouPorn et autres. Vous devez êtes redirigé vers Google.

En Conclusion

Le tutoriel est terminé et j’espère qu’il a été concluant. Si vous avez une difficulté n’hésitez pas à me solliciter, mais si vous suivez scrupuleusement le tutoriel vous devriez vous en sortir.

J’aurais l’occasion de publier d’autres articles sur la personnalisation de Squidguard mais dans l’état il est parfaitement fonctionnel et vous le verrez redoutablement efficace. Depuis que j’utilise Squid je n’utilise plus de bloqueurs de publicités comme Adblock Plus. Vous noterez que de plus en plus de sites d’informations, excédés par le manque à gagner en revenus publicitaires décident de bloquer le contenu à ceux qui utilisent AdBlock Plus. Je ne sais pas si c’est la bonne solution et je ne le fais pas sur SysKB, mais notez qu’avec mon Squid je peux visiter ces sites sans pub et sans blocage … chuuut ;-).

10 thoughts on “Installez votre solution de contrôle parental dans le Cloud avec le proxy Squid + Squidguard

  1. Bonjour,

    J’ai un soucis lors de cette étape :
    url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
    une fois la ligne inscrite dans squid.conf et le proxy redémarré tout est bloqué aucun site n’est accessible ?

    Aurai-je loupé quelque chose ?

    Merci

  2. Bonjour,

    Merci pour ce tuto
    Avez-vous déja installé une IHM pour avoir les stats de squidguard ? si oui qu’utilisez-vous pour les consulter ?

    Mr X

  3. Un petit OpenVPN tout à fait, mais pas pour télécharger car l’IP chez OVH est française. Sinon tu peux choisir un VPS étranger dans un pays pas regardant sur les torrents. Mais franchement pour cet usage un VPN payant qui tient la route est bien plus adapté car tu choisis ton pays de connexion en 1 clic.

    OC.

  4. Oui c’est tout à fait possible avec un DHCP.

    Le DHCP fournit les adresses IP à tes systèmes, et il est possible de lui demander de fournir également un fichier de configuration automatique de proxy (proxy.pac) à tes périphériques.

    Problème … le DHCP des box opérateurs ne proposent pas cette fonctionnalité.

    Pour cela il te faut un vrai routeur qui te servira au passage à bénéficier d’un vrai réseau Wi-Fi qui tient la route et qui dépote.

    OC.

  5. Bonjour,

    url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
    => Ceci est une commande à ajouter dans squid.conf , non?
    Pas très explicite en suivant le tuto !

  6. Bonjour, merci pour cet article
    Est il possible d’avoir un fichier de config du proxy qui soit automatiquement appliqué à tous les équipements se connectant sur le reseau local ?
    Afin d’éviter de configurer le proxy sur chaque équipement.

    Merci

  7. Je précise le VPN uniquement pour une utilisation sur smartphone lorsque je connecte mon tél ou pc sur hotspot public.
    Par contre pour en revenir au tuto étant chez Orange pas d’IP fixe donc pas possible de me creer un homeaccess malheureusement et je doute que cette manipulation fonctionne avec un service comme dynDNS ou autre ?
    Encore merci

  8. Merci pour le tutoriel.
    Plus qu’a reinstaller mon VPN sur ce même VPS

Laissez un commentaire