Proxy Web avec Antivirus ( Squid+Dansguardian+Clamav )

But recherché

Pouvoir assurer une analyse antivirus du traffic http que vont recevoir les postes clients de mon réseau.

Attention ! Ce type de proxy n’empêche pas le fait que le poste client final DOIT avoir un antivirus à jour.

En effet, les postes clients lisent aussi des cdroms, ou des supports amovibles ( disquettes, clef usb ).

Les virus les plus répandus actuellement se propagent via messagerie et donc hors d’atteinte de notre proxy.

Enfin, les virus sont parfois contenus dans des archives multiples que ne saura recomposer que le pc destinataire.

Je vais utiliser dans cet article les outils suivants :
SQUID le célèbre proxy http et je pense le plus répandu dans les entreprises et les appliances,
ClamAV un antivirus libre très performant,
DansGuardian un proxy qui analyse le contenu des requetes http et qui va faire le lien avec le proxy SQUID,
DansGuardian Antivirus plugin qui permet à DansGuardian d’envoyer son flux en entrée de l’antivirus afin de l’analyser.
Apache, le fameux serveur web sera nécessaire pour afficher la page d’erreur que recevra le poste client en cas de virus.

Mise en œuvre

Attention, si votre proxy SQUID est sur un serveur différent de votre proxy DansGuardian, il vous faudra en tenir compte et adapter la configuration de SQUID et de DansGuardian en fonction.

SQUID est en général installé en standard dans une installation de type « serveur » de CentOS. Si ce n’est pas le cas chez vous, installez-le avec la commande yum -y install squid.

Pensez à l’activer au démarrage avec la commande chkconfig squid on.

On le démarre avec la commande service squid start

Mêmes remarques pour Apache :

yum -y install httpd
chkconfig httpd on
service httpd start

Squid ne doit être accessible que pour l’interface de loopback car c’est le proxy dansguardian local qui va l’interroger.

Pour ce faire, voici les paramètres minimas à donner au squid dans son fichier /etc/squid/squid.conf.

http_port 3128
acl localhost src 127.0.0.1/255.255.255.255
http_access allow localhost
http_access deny all

Normalement, ce sont les paramètres de base du SQUID installé par CentOS. Vous ne devriez donc pas avoir a changer quoi que ce soit si vous n’avez pas modifié le squid.conf de l’installation.

DansGuardian avec le patch antivirus n’est pas un paquet fourni en standard dans distribution CentOS. Il faut utiliser le dépot de SecurityTeam US pour l’implémenter. On ajoute donc ces dépots dans l’architecture de YUM.

rpm -ihv http://repo.securityteam.us/repository/redhat/securityteamus-repo-latest.rpm

Enfin, on installe le paquet dansguardian-av qui installera clamav dans ses dépendances.

yum -y install dansguardian-av

ClamAV installe un démon nommé « clamd » qui sera lancé automatiquement au démarrage. On va tout de même le lancer « à la main » pour ne pas attendre le prochain reboot qui n’est pas si fréquent sur un serveur LINUX 🙂

service clamd start

Les mises à jour des signatures se feront automatiquement via cron, mais vous pouvez les forcer avec la commande freshclam.

Par défaut clamd se met en « écoute » sur 127.0.0.1:3310.

Le paramétrage de DansGuardian se fait dans le fichier /etc/dansguardain/dansguardian.conf.

Fichier dansguardian.conf

reportinglevel = 3
languagedir = '/etc/dansguardian/languages'
language = 'french'
loglevel = 3
logexceptionhits = on
logfileformat = 1
filterip =
filterport = 8080
proxyip = 127.0.0.1
proxyport = 3128
accessdeniedaddress = 'http://IP.DE.MA.MACHINE/dansguardian/dansguardian.pl'
nonstandarddelimiter = on
usecustombannedimage = 1
custombannedimagefile = '/etc/dansguardian/transparent1x1.gif'
filtergroups = 1
filtergroupslist = '/etc/dansguardian/filtergroupslist'
bannediplist = '/etc/dansguardian/bannediplist'
exceptioniplist = '/etc/dansguardian/exceptioniplist'
banneduserlist = '/etc/dansguardian/banneduserlist'
exceptionuserlist = '/etc/dansguardian/exceptionuserlist'
showweightedfound = on
weightedphrasemode = 0
urlcachenumber = 3000
urlcacheage = 900
phrasefiltermode = 2
preservecase = 0
hexdecodecontent = 0
forcequicksearch = 0
reverseaddresslookups = off
reverseclientiplookups = off
createlistcachefiles = on
maxuploadsize = -1
maxcontentfiltersize = 2048
usernameidmethodproxyauth = on
usernameidmethodident = off
preemptivebanning = on
forwardedfor = off
usexforwardedfor = off
logconnectionhandlingerrors = on
maxchildren = 180
minchildren = 32
minsparechildren = 8
preforkchildren = 10
maxsparechildren = 64
maxagechildren = 500
ipcfilename = '/tmp/.dguardianipc'
urlipcfilename = '/tmp/.dguardianurlipc'
nodaemon = off
nologger = off
softrestart = off
virusscan = on
virusengine = 'clamav'
tricklelength = 32768
forkscanlength = 32768
firsttrickledelay = 10
followingtrickledelay = 10
maxcontentscansize = 41904304
virusscanexceptions = on
urlcachecleanonly = on
virusscannertimeout = 60
notify = 0
emaildomain = 'monfai.fr'
postmaster = 'MonEmail@monfai.fr'
emailserver = '127.0.0.1:25'
downloaddir = '/tmp/dgvirus'
clmaxfiles = 1500
clmaxreclevel = 9
clmaxfilesize = 10485760
clblockencryptedarchives = off
cldetectbroken = off
clamdsocket = '127.0.0.1:3310'

Voici les principaux paramètres que j’ai modifié dans le fichier de configuration par défaut.

Je n’inclue pas les valeurs maximales comme le taille des fichiers à analyser, car c’est un choix personnel, les valeurs par défaut devraient suffires. A vous de lire le commentaire dans le fichier dansguardian.conf d’origine afin de déterminer si vous avez besoin de les changer.

language = 'french' , devinez pourquoi…

accessdeniedaddress = 'http://IP.DE.MA.MACHINE/dansguardian/dansguardian.pl', page Web affichée à l’utilisateur en cas de blocage de la page demandée.

Elle sera remplie avec le contenu du fichier /etc/dansguardian/language/french/template.html que vous pourrez modifier pour la rendre plus à votre goût. C’est cette page web qui nécessitte Apache.

filtergroups = 1
filtergroupslist = '/etc/dansguardian/filtergroupslist'
bannediplist = '/etc/dansguardian/bannediplist'
exceptioniplist = '/etc/dansguardian/exceptioniplist'
banneduserlist = '/etc/dansguardian/banneduserlist'
exceptionuserlist = '/etc/dansguardian/exceptionuserlist'

Bloc utilisé par dansguardain pour faire du filtrage de contenu.

filtergroups = 1 lui indique de regarder le contenu du fichier dansguardianf1.conf pour obtenir les paramètres de don analyse de contenu.

Attention, consultez bien ce fichier et caux auxquel il se référe. Pour ma part j’ai vidé ces fichiers d’analyse de contenu et d’extensions de bloquées, car je ne souhaite utiliser que la fonction antivirus.

virusengine = 'clamav' l’option clamdscan ne focntionne pas.


emaildomain = 'monfai.fr'
postmaster = 'MonEmail@monfai.fr'
emailserver = '127.0.0.1:25'

A modifier si vous envoyez des emails à l’admin du serveur. Ceci va avec la fonction notify, ici à 0 donc désactivée.

clmaxreclevel = 9, valeur à 3 par défaut, c’est le nombre de niveaux d’archives que clamav doit ouvrir à la recherche de virus. Je n’ai pas pû dépasser 9, car dansguardian n’acceptait plus la configuration. Cette valeur est aussi paramétrée dans le fichier de conf de clamd, elles doivent donc être fixées en accord l’une de l’autre.

Pour analyser des archives, il faut que votre système puisse les ouvrir. Pensez donc à installer unzip, unarj ou tout autre décompacteur dont vous pourriez avoir besoin.

Dansguardian étant paramétré on pense à l’activer au démarrage du serveur avec la commande chkconfig dansguardian on.

Enfin, on démarre dansguardian en ayant pris soin de recharger apache afin qu’il prenne en compte les modifications faites pas dansguardian lors de son installation.

service httpd reload
service dansguardian start

Si votre configuration est correcte, dansguardian devrait démarrer sans indiquer d’erreurs.

Test du fonctionnement

Paramétrez un navigateur avec les paramètres suivants :
– adresse du proxy : adresse ip de votre serveur
– port du proxy : 8080 ( ne pas utiliser le 3128 du squid bien évidemment… )

Ouvrez maintenant votre navigateur et rendez-vous sur le site http://securite-informatique.info/virus/eicar/.

Ce site implémente plusieurs type de fichiers contenant le « virus de test » EICAR, qui n’a aucune fonction virale, mais qui est reconnu par tous les antivirus libres ou commerciaux.

Vous devriez alors obtenir l’affichage d’une page web vous indiquant que Eicar a été détecté dans la page.

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.