debian + squid + dansguardian + antivirus + havp

Je vais expliquer rapidement comment installer et configurer un serveur proxy transparent sur une debian dans mon cas c’est Lenny.

Le serveur proxy filtera aussi les contenu des site visités avec Dansguardian et vérifiera si les fichiers reçus par l’utilisateur contient des virus avec Clamav. Dans la configuration le proxy n’agira que sur le protocole HTTP sur le port 80 si vous cherchez un ‘full transparent’ utiliser plutôt tproxy . Le principe est simple, on redirige les trafics sur le port 80 vers le port 8080 de Dansguardian qui filtre selon les règles puis redirige sur le port 8090 de HAVP enfin Squid le reçoit sur le port par défaut 3128.

Selon les informations sur le net Squid est plus performant sur une partition en resiserfs qui gère mieux une grande quantité de petits fichiers. Choisissez aussi des disques rapides.

Dans l’exemple j’ai utilisé Debian 5.0 ou Lenny, ajouter cette ligne dans /etc/apt/sources.list :

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

Puis on installe les packets :

aptitude update
aptitude install squid3 dansguardian clamav clamav-base havp

Configuration de dansguardian :

Le fichier de configuration est le /etc/dansguardian/dansguardian.conf

cp /etc/dansguardian/dansguardian.conf /etc/dansguardian/dansguardian.conf.orig

Modifier le fichier et ça donne :


# grep -v '^#' dansguardian.conf | sed -e '/^$/d'
reportinglevel = 3
languagedir = '/etc/dansguardian/languages'
language = 'french'
loglevel = 2
logexceptionhits = 2
logfileformat = 3
syslog = on
loglocation = '/var/log/dansguardian/access.log'
filterip = 192.168.0.200
filterport = 8080
proxyip = 127.0.0.1
proxyport = 8090
accessdeniedaddress = 'http://YOURSERVER.YOURDOMAIN/cgi-bin/dansguardian.pl'
nonstandarddelimiter = on
usecustombannedimage = on
custombannedimagefile = '/usr/share/dansguardian/transparent1x1.gif'
filtergroups = 1
filtergroupslist = '/etc/dansguardian/lists/filtergroupslist'
bannediplist = '/etc/dansguardian/lists/bannediplist'
exceptioniplist = '/etc/dansguardian/lists/exceptioniplist'
showweightedfound = on
weightedphrasemode = 2
urlcachenumber = 5000
urlcacheage = 900
scancleancache = on
phrasefiltermode = 2
preservecase = 0
hexdecodecontent = off
forcequicksearch = off
reverseaddresslookups = off
reverseclientiplookups = off
logclienthostnames = off
createlistcachefiles = on
maxuploadsize = -1
maxcontentfiltersize = 128
maxcontentramcachescansize = 2000
maxcontentfilecachescansize = 20000
filecachedir = '/tmp'
deletedownloadedtempfiles = on
initialtrickledelay = 20
trickledelay = 10
downloadmanager = '/etc/dansguardian/downloadmanagers/fancy.conf'
downloadmanager = '/etc/dansguardian/downloadmanagers/default.conf'
contentscannertimeout = 60
contentscanexceptions = off
recheckreplacedurls = off
forwardedfor = off
usexforwardedfor = off
logconnectionhandlingerrors = on
logchildprocesshandling = off
maxchildren = 180
minchildren = 32
minsparechildren = 8
preforkchildren = 10
maxsparechildren = 64
maxagechildren = 500
maxips = 0
ipcfilename = '/tmp/.dguardianipc'
urlipcfilename = '/tmp/.dguardianurlipc'
ipipcfilename = '/tmp/.dguardianipipc'
nodaemon = off
nologger = off
logadblocks = off
loguseragent = off
softrestart = off
mailer = '/usr/sbin/sendmail -t'
root@proxy:/etc/dansguardian#

Vous avez remarqué que mon proxy utilise l’IP 192.168.0.200 . Passons à HAVP, la configuration est simple :


root@proxy:~# grep -v '^#' /etc/havp/havp.config | sed -e '/^$/d'
PARENTPROXY 127.0.0.1
PARENTPORT 3128
FORWARDED_IP true
PORT 8090
BIND_ADDRESS 127.0.0.1
TEMPLATEPATH /etc/havp/templates/fr
ENABLECLAMLIB true
ENABLECLAMD false
ENABLEFPROT false
ENABLEAVG false
ENABLEAVESERVER false
ENABLESOPHIE false
ENABLETROPHIE false
ENABLENOD32 false
ENABLEAVAST false
ENABLEARCAVIR false
ENABLEDRWEB false
root@proxy:~#

Comme vous l’avez constaté HAVP peut être utilisé avec d’autre antivirus Avast, Nod32, … dans notre cas nous utilisons Clamav. Dans le fichier de configuration de HAVP nous avons redirigé les  traffic sur 127.0.0.1:3128, c’est le port par défaut de Squid.

Modifier votre fichier de configuration de Squid, changer la ligne qui commence par http_port :

http_port 127.0.0.1:3128 transparent

Pour spécifier la taille maximale de votre cache vous pouvez changer la ligne suivante ici dans l’exemple spécifie que squid peut utiliser 12000MB :

cache_dir ufs /var/spool/squid3 12000 16 256

Redémarrer les services :


# /etc/init.d/dansguardian restart
# /etc/init.d/havp restart
# /etc/init.d/squid3 restart

Il nous reste qu’à rediriger le trafic, vous pouvez utiliser des logiciels comme Shorewall, mais  ici pour simplifier, on utilise directement iptables :


# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

Pour tester que ça marche vous pouvez vérifier avec les fichiers log

root@proxy:~# tail -f /var/log/dansguardian/access.log
root@proxy:~# tail -f /var/log/squid3/access.log
root@proxy:~# tail -f /var/log/havp/access.log

Vita tompoko, j’espère que ce petit post vous a aidé.

12 réactions sur “debian + squid + dansguardian + antivirus + havp

  1. Pingback: Comment monter un serveur DNS cache avec bind « Gasy geek

  2. Salut!!
    Mon projet consiste à filtrer tous les téléchargements(exe,iso,rar,zip,mp3,…) mais les téléchargements à une taille donnée ne passeront pas. De plus, pour ceux qui voudront télécharger des fichiers > à cette taille donnée, il devront passer vers une page d’authentification(mot de passe temporaire).Comment peut-on procéder à cela?

  3. salut,

    Je ne sais pas si c’est possible car on ne sait pas à l’avance la taille de chaque fichier et je pense que ce sera au niveau de squid mais non pas au niveau de dansguardian. En passant, si c’est un proxy transparent, les utilisateurs peuvent faire ce qu’ils veulent sur d’autre port que 80 (sauf firewall).
    Donc on va télécharger avant de dire à l’utilisateur que la taille est supérieure à la limite donc on va le supprimer…

    • oui c’est bien un proxy transparent!et je crois que j’ai déjà bloquer tous les autres ports via le firewall.et si on ne limite pas la taille mais on bloque seulement tous les téléchargements.comment peut-on faire pour l’authentification pour les autoriser?

      • quel genre d’utilisateurs as-tu ? c’est pour savoir si ce sera par IP, login, pour on peut imaginer un active portal … cela dépend du contexte.

        As tu un annuaire comme ldap (openldap, active directory, db, …) ou se sera un fichier plat ?

  4. Pingback: squid + active directory + dansguardian + sarg « 'Gasy geek

  5. Slt Thierry ! merci pour ce tuto mais j’aimerais te demander si tu peux envoyer un tuto pour mettre un proxy squid qui filtre par IP les postes pour aller à internet, filtrer des sites (empêcher des sites) et permet de voir quel site est en train de visité par chaque poste client du reseau ! merci sous debian 6.0 mazava hoazy !

  6. Pingback: Bloquer le réseau Tor sur son proxy Squid | 'Gasy geek

Répondre à Fitahiantsoa Annuler la réponse.