Tutoriel Proxy avec Squid, SquidGuard et Clamav sous Debian 8

Bonjour, aujourd’hui on se retrouve pour configurer un Serveur proxy avec Squid, gérér les blacklist avec squidguard et mettre en place un antivirus avec clamav.

Très utilisé par les lycées et entreprise, le proxy permet entre autre de :

  • Changer son IP
  • Bloquer l’accès à certains sites ou domaines
  • Avoir une fonction de cache lorsque les utilisateurs sont nombreux et/ou que la bande passante est faible

Je vais essayer d’être le plus clair et le plus explicite possible dans mon tutoriel afin que de chez vous cela marche facilement, si vous avez des erreurs ou des questions, laissez un commentaire.

Nous allons nous y prendre en trois parties :

I – Squid
II – SquidGuard
III – Clamav

Ne perdons pas de temps, comme d’habitude, mettez à jour votre serveur.

apt-get update && apt-get upgrade

I – Squid

On installe Squid

apt-get -y install squid3
Ensuite, modifions le fichier de conf de squid pour y ajoutez les lignes de base, sur internet, vous trouverez surement d’autres lignes, mais dans cet article, je vous donne l’essentiel.
nano /etc/squid3/squid.conf

Puis ajoutez les lignes ci-dessous a l’emplacement que je vous indique ( pour savoir a quelle ligne vous êtes, faites ctrl+c sous nano), vous pouvez les mettre à la fin du fichier, mais chez moi ça n’a pas fonctionné, je vous conseille donc de suivre mon conseil.

ligne 1056: ajoutez une acl pour autoriser votre réseau, remplacez l’IP et le masque par ceux que vous utilisez.
acl lan src 10.0.0.0/24
ligne 1211: acceptez l’acl que vous venez de créer
http_access allow lan
ligne 4168: faire le lien entre squid et squidguard ( cela nous sera utile)
url_rewrite_program /usr/bin/squidGuard
ligne 4855: ajoutez le groupe de lignes suivantes
request_header_access Referer deny all
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all
ligne 5184: choisissez un nom pour votre proxy
visible_hostname proxy.florian
ligne 7354: on masque l’IP de notre proxy
forwarded_for off
Enfin, on redémarre squid
systemctl restart squid3
Vous aurez une erreur ne vous inquiètez pas, en effet, nous avons ajouté une ligne pour squiguard mais nous ne l’avons pas encore installé…
C’est ce que nous allons faire maintenant
II – SquidGuard
On installe squidguard
apt-get -y install squidguard
Et la redémarrez squidguard, vous verrez l’erreur aura disparue.
systemctl restart squid3
Ensuite, nous allons télécharger les blacklists de l’Université Toulouse 1, ils font un formidable travail, elles sont très complètes et souvent mises à jour.
Ensuite, on extrait les blacklists.
tar -xzf blacklists.tar.gz
Nous allons copier ces blacklists dans le répertoire de squidguard.
cp -R blacklists/* /var/lib/squidguard/db/
Nous allons sauvegarder le fichier de conf de squidguard avant de le modifier.
cp /etc/squidguard/squidGuard.conf /etc/squidguard/squidGuard.back
Ensuite, configurons squidguard:
nano etc/squidguard/squidGuard.conf
Voici mon fichier de conf, il est fonctionnel et c’est un bon début, vous pouvez le prendre, et ensuite l’ajuster suivant vos besoin, je vais vous l’expliquer.

# CONFIG FILE FOR SQUIDGUARD
#
# Caution: do NOT use comments inside { }

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

dest agressif {
domainlist agressif/domains
urllist agressif/urls
}

 

dest adult {
domainlist adult/domains
urllist adult/urls
expressionlist adult/very_restrictive_expression
}

acl {
default {

pass !agressif !adult all

redirect http://example.com/
}
}

les dest ( permettent en fait d’ajouter une liste de blocage a votre proxy (j’ai choisi adult et agressif, mais vous pouvez mettre drogues, jeux… pour voir les listes disponibles, rendez vous dans ls /var/lib/squidguard/db et trouvez celles qui vous plaisent, la syntaxe est la même que dans mon fichier remplacez juste adult par le nom de la liste.)

Ensuite l’acl default autorise tout sauf les listes qu’on a mis au dessus, donc si vous ajoutez des listes, ajoutez les dans l’acl, et on voit que pour l’exemple, les requêtes sont redirigées vers http://example.com, bien sur, vous pouvez changer l’URL et rediriger par exemple vers une page que vous aurez codé en html.

Maintenant, nous allons faire pointer squidguard.conf dans le dossier squid3

ln -s /etc/squidguard/squidGuard.conf /etc/squid3/

Maintenant, attribuons les bons droits aux bons dossiers

chown -R proxy:proxy /var/log/squid3 /var/lib/squidguard

Ensuite, faites cette commande, il faudra la faire à chaque fois que vous modifiez le fichier squidgard.conf. En fait, le -C all suffit mais je prefère cette commande car plus complète et on peut voir en direct la base se regénérer.

squidGuard -d -b -P -C all

Aussi, n’oubliez pas de faire après chaque modification pour être sur.

systemctl restart squid3

Normalement, après avoir fait tous ça, ajoutez le proxy à votre navigateur ( IP:3128), videz bien le cache et testez un site blacklisté, si vous rentrez directement l’URL, cela vous redirigera vers le site que vous avez mis dans le fichier de conf, et vous accèder au site via une recherche google vous aurez une erreur.

Chez moi cela a pris quelques minutes, donc si des sites blacklistés passent toujours, attendez un peu, faites les deux commandes ci-dessous et videz bien votre cache, au bout d’un moment, cela devrait se mettre en route.

Si cela vous intéresse, je vous propose un script pour faire automatiquement les mise à jour de nos blacklistes, si cela ne vous intéresse pas, passez et rendez vous directement à la partie III.

nano majblacklist

Dans ce fichier, mettez ceci:

#!/bin/bash
cd /tmp
wget http://dsi.ut-capitole.fr/blacklists/download/blacklists.tar.gz
tar -xzf blacklists.tar.gz
cp -rf blacklists/* /var/lib/squidguard/db/
rm -Rf blacklists*
squidGuard -C all
service squid3 restart

Puis, déplacez le dans cron.weekly.

mv majblacklist /etc/cron.weekly/

III – Clamav

Enfin, nous allons configurer clamav pour que ce dernier analyse les flux avant de nous les afficher.

Installons les dépendances:

aptget install gcc make curl libcurl4gnutlsdev cicap libicapapidev
Maintenant installons clamavd:
apt-get install clamav-daemon
Installons le plugin clamav et installons le:
cd /tmp/
wget wget https://sourceforge.net/projects/squidclamav/files/latest/download
tar zxvf download
cd squidclamav-6.16
./configure –with-c-icap
make
make install
Maintenant, modifier le fichier ic-cap pour qu’il se lance au démarrage
nano /etc/default/cicap
Passez le START a yes.
Ensuite, ajoutez la ligne suivante dans ce fichier
nano /etc/cicap/cicap.conf
Service squidclamav squidclamav.so
Une fois ceci fait, il va falloir retourner dans le fichier de conf de squid pour ajouter les lignes suivante, encore une fois, je vais vous indiquer ou les mettre, je vous conseil de faire comme moi, vous pouvez essayer de les mettre à la fin du fichier mais je ne peux pas vous garantir le résultat dans ce cas.
nano /etc/squid3/squid.conf 
Ajoutez les lignes suivantes à l’endroit ou je vous indique
# ligne 6534:
icap_enable on
# ligne 6644:
adaptation_send_client_ip on# ligne 6654:

adaptation_send_username on

# ligne 6659:
icap_client_username_header X-Authenticated-User

# ligne 6755:
icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_req allow all

icap_service service_resp respmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_resp allow all

Ensuite on redémarre squid3
systemctl restart squid3
Enfin, nous allons modifier une petite valeur cruciale qui empêchait clamav de fonctionner correctement. J’ai mis beaucoup de temps a trouver l’erreur, en fait il suffit de passer une variable à 1 dans le fichier ci-dessous.
nano /etc/cicap/squidclamav.conf
Passez la varibable SafeBrowsing à 1.
Il faut aussi que vous mettiez un  # devant la ligne redirect de ce fichier, car en commentant cette ligne, clamav redigire vers la page par défaut, ce qui me va tres bien, évidemment, vous pouvez changer la redirection pour mettre la page que vous voulez
Avant de continuer, je vous invite a redémarrer les 3 services suivants, n’hésitez pas à en abuser lorsque vous faites des modifications  (il serait bête de chercher une erreur alors qu’il suffisait juste de rédémarrer des services)
systemctl restart clamav-daemon
systemctl restart c-icap
systemctl restart squid3
Ensuite, pour tester que notre antivirus fonctionne bien, nous allons faire semblant de télécharger un virus (inoffensif bien sur) en allant sur ce site http://securite-informatique.info/virus/eicar/
L’affichage de la page peut mettre un peu de temps, du moins chez moi ce fut le cas, laissez tourner, si vous avez un message de votre navigateur ne vous inquiètez pas, acceptez.
Puis une fois que la page est chargée cliquez sur n’importe quel fichier eicar.zip, normalement, vous devriez être automatiquement redirigé par la page d’erreur de clamav, ce qui montre que notre antivirus est bien fonctionnel.
Voici ce que m’affiche le navigateur lorsque j’essaie de télécharger le virus:

Screenshot_1
Merci d’avoir suivi cet article, si vous avez des erreurs, n’hésitez pas à laisser un commentaire.

 

 

 

 

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s