Un serveur proxy avec squid / squidguard / clamav

Un serveur proxy est un serveur mandataire qui joue le rôle d’intermédiaire dans les échanges pour accéder à internet.
Il permet à l’administrateur de surveiller et restreindre les échanges entre un réseau local et internet. Il permet aussi d’optimiser la bande passante utilisé par les utilisateurs par la biais de la mise en cache

Pour ce tutoriel nous allons utiliser :
Squid : Le serveur proxy
Squidguard : Filtrage URL avec utilisation de blacklists
Clamav : Antivirus

J’ai réalisé cette installation sur Debian 7, je vous conseille d’utiliser les mêmes dépôts que moi

Etape 1 : Installation et configuration de squid

Pour installer notre serveur proxy un simple apt suffit :

On redémarre maintenant squid pour prendre en compte la configuration :

Si vous obtenez cette erreur au redémarrage de squid c’est parce que le dossier contenant le cache n’est pas créé.

Starting Squid HTTP Proxy 3.x: squid3/etc/init.d/squid3: 72: cd: can’t cd to /var/cache/squid/
. ok

On crée le dossier et on redémarre squid :

On peut voir que le proxy est bien lancé avec la commande suivante :

Voici les informations nécessaires à la configuration du proxy sous votre navigateur :

proxy192.168.0.30 : Correspond à l’adresse ip de votre proxy à modifier en fonction de votre configuration

3128 : Correspond au port sur lequel squid écoute

Essayez d’ouvrir un site web si vous avez cette erreur :

squidvous devez modifier la ligne acl LocalNet src 192.168.1.0/24 dans le fichier /etc/squid3/squid.conf en remplaçant 192.168.1.0/24 par le réseau de votre client.

Cela va autoriser le poste qui est sur votre réseau à se connecter au proxy.

Je vais maintenant prendre le temps de détailler les différentes directives du fichier de configuration de squid :

Pour rappel cette ACL suivi de sa réglè permet aux utilisateurs du réseau 192.168.1.0/24 de se connecter au proxy:

 

Etape 2 : Installation de SquidGuard

SquidGuard est un plugin qui va nous permettre de gérer les blacklists pour notre proxy, il vient se greffer sur squid.

On modifie le fichier squid.conf pour charger la configuration de squidguard au lancement

rajouter les deux lignes suivantes à la fin du fichier :

On configure basiquement squidguard pour nous autoriser à nous connecter.

On va maintenant rajouter la page qui s’affichera dans le navigateur lorsqu’un site sera bloqué.

Remplacez 192.168.0.10 par l’ip de votre poste client

On relance squid pour prendre en compte la nouvelle configuration

Etape 3 : Installation de l’antivirus

On va maintenant coupler un antivirus avec squid, il aura pour but d’analyser les données transmises en http, identifier les menaces et les bloquer en amont des utilisateurs.

on lance l’update de la base de signature de virus

On récupére l’installation du plugin squidclamav

et on le compile :

On modifie le fichier de configuration icap pour qu’il démarre automatiquement

Ajoutez la ligne suivante dans le fichier c-icap.conf :

Rajoutez les lignes suivantes dans la configuration de squid pour qu’il prenne en compte le module que nous venons de rajouter

On va maintenant rajouter la page qui s’affichera dans le navigateur lorsqu’un virus sera détecté.

Modifier la ligne suivante :

Modifier localhost par l’ip de votre serveur.

Nous allons installer la cgi en français dans le répertoire /usr/lib/cgi-bin/

On redémarre les services pour la prise en compte de la configuration :

Pour tester le bon fonctionnement de l’antivirus rendez-vous sur le site suivant : http://securite-informatique.info/virus/eicar/
et essayer de télécharger un des fichiers nommés Eicar qui contient une signature inoffensive permettant de tester le bon fonctionnement des antivirus, vous devriez voir cette page apparaitre dans votre navigateur

squidclamav

Par défaut l’antivirus scan tout ce qui transite par le proxy vous pouvez affiner la configuration de squidclamav en modifiant le fichier /etc/squidclamav.conf.

Etape 4 : Configuration des blacklists de SquidGuard

Nous allons maintenant configurer SquidGuard pour qu’il utilise les blacklists et bloque les sites que nous souhaitons en fonction de l’ip de l’utilisateur.

L’administrateur défini par l’ip 192.168.0.10 ne subira pas de restriction.
Les utilisateurs définis par la plage ip 192.168.1.0/24 n’auront pas accès au site web défini dans la configuration de SquidGuard par nos blacklists.
Je vous mets à dispositions mon fichier de configuration de SquidGuard, les principales blacklists y sont utilisées.

Modifiez le fichier de configuration de squidGuard et copiez la configuration ci-dessous en tachant de modifier les IPs en fonction de vos plans d’adressages

Détails du fichier de configuration squidGuard.conf
Ici on défini la localisation des blacklists et des logs :

Ici on défini nos groupes d’utilisateurs :

On peut aussi définir des périodes comme ceci :

On déclare nos blacklists dans la configuration de squid :

On ajoute les acl pour les règles de filtrages de contenu entre la balise: acl { } :

Dans l’exemple ci-dessus :
Pendant les heures de travail (workhours) pour le réseau 192.168.1.0/24 (workers) on bloque les jeux (!games) et la violence (!violence) et on laisse passer le reste (any).

En dehors des heures de travail (else) on laisse tout passer (any) pour le réseau (192.168.1.0/24) hormis ce qui touche à la violence.

Nous allons utiliser les blacklists fournies par l’université de Toulouse.
Nous allons les télécharger dans le répertoire de squidguard dédié aux blacklists

Nous redémarrons squid3 pour qu’il prenne en compte la nouvelle configuration de squidguard et nous créons une base de données des blacklists défini dans squidGuard.conf ce qui aura pour effet d’améliorer les temps d’accès .

Vous pouvez suivre le bon déroulement des opérations grâce au fichier de log de squidGuard :

Voici ce que vous obtiendrez lorsque vous accéderez à un site inclus dans une blacklist :

squidguard_block

 

Dans l’optique d’automatiser la mise à jour des blacklists voici un script que j’ai découvert ici :

Créez le fichier blacklist.sh et copiez le code ci-dessus.

On va maintenant ajouter une entrée au crontab pour automatiser le fonctionnement du script.

et ajoutez l’entrée suivante :

On redémarre cron pour la prise en compte de l’opération:

Les blacklists se mettrons à jour tous les lundi à 6 heures du matin.

Etape 5 : Détails des fichiers de log

 

Plusieurs sites mon aidé à réaliser ce tutoriel, les voici :

http://irp.nain-t.net/doku.php/220squid:020_squid
http://www.server-world.info/en/note?os=Debian_7.0&p=clamav
http://www.server-world.info/en/note?os=Debian_7.0&p=squid&f=2
http://www.dsfc.net/logiciel-libre/squid/squid-script-mise-a-jour-blacklist-squidguard/

14 réflexions au sujet de « Un serveur proxy avec squid / squidguard / clamav »

  1. Bonjour à toi.
    J’ai suivi ton tuto et il fonctionne bien cependant j’ai quelques soucis.
    J’ai rajouté des acl pour la pornographie. Jusqu’à la tout va bien. Je bloque bien les sites pornographiques ainsi que les jeux.
    J’ai voulu poussé l’expérience plus loin et j’ai rajouté des acl pour la drogue, le phishing et la violence. J’ai tout déclaré de la même façon, tout devrait fonctionner et la … Hic ! Marche pas ! Pourtant j’ai bien tapé la commande :

    /etc/init.d/squid3 restart
    squidGuard -C all -d

    Mais rien n’y fait … Alors j’ai fouiné un peu dans les fichiers et il se trouve que dans /var/lib/squidguard/db/blacklists/porn il y a un fichier usage ( pas que là, dans tous) qui contient 3 lignes :
    black
    porn
    adult

    Alors je me suis demandé pourquoi il y avait ces lignes. Je me suis empressé de regarder dans le répertoire /games et il y a ce même fichier mais sans les 2 dernieres lignes. C’est a dire :

    black

    Je ne comprends absolument pas pourquoi ça fonctionne avec porn, adult et games et pas avec drugs par exemple. Peux-tu m’éclairer ?

    Merci à toi.
    Bonnes fêtes
    Cordialement

    1. Salut,

      As-tu fais attention au fait que mon fichier de configuration utilisé l’heure et le jour de la semaine pour bloquer certaines catégories et pas d’autres ?
      C’est expliqué dans l’étape 4 :-)

      Ophyde

    1. Ce que je ne comprend pas c’est que dans ton fichier de configuration, je ne vois nul par la configuration des catégories drogue, phishing et violence ?!
      Peux tu me fournir les logs de SquidGuard ?

      Ophyde

  2. C’est bon, problème resolu.
    Le problème venait du fait que lors de la commande squidGuard -c all -d, je créais les fichiers domains.db et urls.db. Il fallait simplement réattribuer les droits d’accès a l’utilisateur « pi ».
    Merci encore !

  3. En tout cas bravo pour ton tuto, je vais bientot le tester car il m’interesse
    Je souhaite installer un squid en debian 7 avec clamav en plus
    Que du bonheur.
    Continue .

  4. Salut ,

    la commande « Service squidclamav squidclamav.so » me retourne l’erreur suivante: « squidclamav: unrecognized service ».

    pouvez vous me dire ou ça bloque ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *