INSTALLATION ET CONFIGURATION PROXY SQUID ET SQUIDGUARD SUR DEBIAN SQUEEZE

Squid est un logiciel libre distribué sous licence GNU GPL qui fait le rôle de proxy. Squidguard est un plugin qui va nous permettre d’autoriser certaines adresses web ou d’interdir certaines pages selon des listes pré-définis.

Sources :

http://doc.ubuntu-fr.org/tutoriel/comment_mettre_en_place_un_controle_parental

 

1 – Installation et Configuration de Squid

aptitude install squid

 

Copie du fichier de configuration

Afin de conserver une copie du fichier de configuration nous allons copier le fichier d’origine.

cp /etc/squid/squid.conf /etc/squid/squid.conf.old

Modification du fichier de configuration

 

nano /etc/squid/squid.conf

 

# Port d’écoute du proxy

    http_port 3128 transparent

 

 

# Utilisateur et Groupe qui initialise Squid

#    cache_effective_user proxy

#    cache_effective_group proxy

 

# Intégration du module squidguard

 

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

 

# Nom affiché dans le navigateur

    visible_hostname monserveur

 

# Configuration du cache et de la taille du cache (Dans mon cas 100Mo) Si modification lancer squid -f /etc/squid/squid.conf -z

    cache_dir ufs /var/spool/squid 100 16 256

 

# Emplacement des fichiers LOG

    cache_access_log /var/log/squid/access.log

    cache_log /var/log/squid/cache.log

    cache_store_log /var/log/squid/store.log

 

 

####### Définition des ACLs #######

 

# ACL désignant toutes les adresses ip possibles

    acl all src 0.0.0.0/0.0.0.0

 

# ACL désignant le poste qui héberge le proxy

    acl localhost src 127.0.0.1/255.255.255.255

 

    acl to_localhost dst 127.0.0.0/8

    acl manager proto cache_object

    acl monserveur src IP.DE.MON.SERVEUR

 

# ACL désignant le réseau local

    acl NOM_RESEAU src MONRESEAU\MASQUE

 

# ACL désignant les ports autorisés

    acl SSL_ports port 443 563

    acl Safe_ports port 80 # http

    acl Safe_ports port 20 # ftp-data

    acl Safe_ports port 21 # ftp

    acl Safe_ports port 443 563 # ssl

    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 Safe_ports port 631 # cups

    acl Safe_ports port 873 # rsync

    acl Safe_ports port 901 # SWAT

 

# ACL désignant la purge

    acl purge method PURGE

 

# ACL Désignant une connexion directe sur le proxy

    acl CONNECT method CONNECT

 

# Règles d’accès

    http_access allow MONSERVEUR

    http_access allow manager localhost

    http_access deny manager

    http_access allow purge localhost

    http_access deny purge

    http_access allow all

 

# Empêche les personnes extérieures au réseau de passer par le proxy. ATTENTION mettre cette ACL a la fin.

    http_access deny all

 

 

# On rejette tous les ports différents de ceux déclarer dans les acl

    http_access allow !Safe_ports

 

# Autorise les réponses pour tout le monde (par défaut)

    http_reply_access allow all

 

# Autorise le protocole icp pour tout le monde (par défaut)

    icp_access allow all

 

Autorisation ou Blacage de site avec Squid

Squid permet de bloquer ou d’autoriser l’accès à un ou plusieurs sites et par des mots interdits dans l’URL. Pour faire cette fonctionnalité, je ferai avec squidguard qui permet de faire plus de choses

Création des fichiers White et Black

 

Créer deux fichier dans /etc/squid nommer black et white ou comme le nom que vous désirez

nano /etc/squid/black

Saisir les URLs que vous souhaitez bloquer

exemple1.fr

exemple2.fr

 

Faire de même pour le fichier white

nano /etc/squid/black

Saisir les URLs que vous souhaitez autoriser

exemple1.fr

exemple2.fr

 

Ajout des ACLs

 

Ajouter les lignes suivantes dans le fichier squid.conf

 

nano /etc/squid/squid.conf

 

acl whitelist dstdomain « /etc/squid/white »

acl blacklist dstdomain « /etc/squid/black »

 

Ajout des régles d’accès

Ajouter les lignes suivantes dans le fichier squid.conf. Faire attention à l’ordre des ACLs.

nano /etc/squid/squid.conf

 

http_access allow whitelist

http_access deny blacklist

 

2 – Installation et configuration de SquidGuard

 

Installation de Squid guard.

aptitude install squidguard

Téléchargement de la blacklist

Comme vous pouvez l’imaginer, nous n’allons pas saisir les sites à blacklister un par un. Il existe des blacklist régulièrement mises à jour.

wget ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz

Extraction du fichier

tar -xzf blacklists.tar.gz

Changement du propriétaire sur le dossier extrait

chown -R proxy:proxy blacklists

Copie du dossier Blacklist dans le répertoire de squid

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

Mise à jour hebdomadaire automatique

 

Pour permettre la mise à jour automatique de ces listes noires, créer un fichier squidguard_update_blacklists dans /etc/cron.weekly
nano /etc/cron.weekly/squidguard_update_blacklists
Saisir les lignes suivantes

 

#!/bin/sh

#

# Fichier /etc/cron.weekly/squidguard_blacklists

#

# Télécharge chaque semaine les listes noires pour SquidGuard

# et met à jour les bases de ce dernier.

 

if [ -d /var/lib/squidguard ]; then

    wget ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz -O /var/lib/squidguard/blacklists.tar.gz

    tar zxvf /var/lib/squidguard/blacklists.tar.gz -C /var/lib/squidguard/

    rm -rf /var/lib/squidguard/db

    mkdir /var/lib/squidguard/db || true

    mv -f /var/lib/squidguard/blacklists/* /var/lib/squidguard/db/

    chmod 2770 /var/lib/squidguard/db

    rm -rf /var/lib/squidguard/blacklists /var/lib/squidguard/blacklists.tar.gz

    /usr/bin/squidGuard -C all

    chown -R proxy:proxy /etc/squid /var/log/squid /var/spool/squid /usr/lib/squid /usr/sbin/squid /var/lib/squidguard

    /etc/init.d/squid restart

fi

 

Rendre le fichier exécutable

chmod +x /etc/cron.weekly/squidguard_update_blacklists

Test

Saisir la commande suivante pour tester si le script fonctionne.

/etc/cron.weekly/squidguard_update_blacklists

Configuration de squid

Dans un premier temps, nous allons copier le fichier d’origine afin d’en garder une copie

cp /etc/squid/squidGuard.conf /etc/squid/squidGuard.conf.old

Modification du fichier de configuration

nano /etc/squid/squidGuard.conf

Saisir les informations suivantes :

 

# Emplacement de la base

dbhome /var/lib/squidguard/db

 

# Emplacement des fichiers LOGs

logdir /var/log/squid

 

# Sources d’adresse

 

source utilisateurs_MALISTE {

        ip        IP.DE.MON.CLIENT

}

 

 

# Définition des bases de données utilisées pour le filtrage

dest MALISTE {

domainlist MALISTE.destdomainlist

logfile     /var/log/squid/MALISTE.log

}

 

 

dest violence {

domainlist     violence/domains

urllist     violence/urls

expressionlist violence/expressions

logfile     /var/log/squid/violence.log

}

 

dest sports {

domainlist     sports/domains

logfile     /var/log/squid/sports.log

}

 

dest social_networks {

domainlist     social_networks/domains

urllist     social_networks/urls

logfile     /var/log/squid/social_networks.log

}

 

 

dest shopping {

domainlist     shopping/domains

urllist     shopping/urls

logfile     /var/log/squid/shopping.log

}

 

 

dest sexual_education {

domainlist     sexual_education/domains

urllist     sexual_education/urls

logfile     /var/log/squid/sexual_education.log

}

 

dest sect {

domainlist     sect/domains

urllist     sect/urls

logfile     /var/log/squid/sect.log

}

 

dest remote-controler {

domainlist     remote-control/domains

urllist     remote-control/urls

logfile     /var/log/squid/remote-controler.log

}

 

dest proxy {

domainlist     proxy/domains

urllist     proxy/urls

expressionlist proxy/expressions

logfile     /var/log/squid/proxy.log

}

 

dest porn {

domainlist     porn/domains

urllist     porn/urls

expressionlist porn/expressions

logfile     /var/log/squid/porn.log

}

 

dest press {

domainlist     press/domains

urllist     press/urls

logfile     /var/log/squid/press.log

}

 

dest manga {

domainlist     manga/domains

urllist     manga/urls

logfile     /var/log/squid/manga.log

}

 

 

dest malware {

domainlist     malware/domains

urllist     malware/urls

logfile     /var/log/squid/malware.log

}

 

dest liste_bu {

domainlist     liste_bu/domains

urllist     liste_bu/urls

logfile     /var/log/squid/liste_bu.log

}

 

 

dest lingerie {

domainlist     lingerie/domains

logfile     /var/log/squid/lingerie.log

}

 

 

dest jobsearch {

domainlist     jobsearch/domains

 

logfile     /var/log/squid/jobsearch.log

}

 

dest cooking {

domainlist     cooking/domains

logfile     /var/log/squid/cooking.log

}

 

 

dest child {

domainlist     child/domains

urllist     child/urls

logfile     /var/log/squid/child.log

}

 

dest chat {

domainlist     chat/domains

urllist     chat/urls

logfile     /var/log/squid/chat.log

}

 

dest celebrity {

domainlist     celebrity/domains

urllist     celebrity/urls

logfile     /var/log/squid/celebrity.log

}

 

 

dest bank {

domainlist     bank/domains

logfile     /var/log/squid/bank.log

}

 

 

dest arjel {

domainlist     arjel/domains

logfile     /var/log/squid/arjel.log

}

 

dest cleaning {

domainlist cleaning/domains

urllist cleaning/urls

logfile     /var/log/squid/cleaning.log

}

 

# dest sexual_education {

# domainlist sexual_education/domains

# urllist sexual_education/urls

# logfile     /var/log/squid/sexual_education.log

# }

 

dest adult {

domainlist adult/domains

expressionlist adult/expressions

urllist adult/urls

logfile     /var/log/squid/adult.log

}

 

dest agressif {

domainlist agressif/domains

expressionlist agressif/expressions

urllist agressif/urls

logfile     /var/log/squid/agressif.log

}

 

dest audio-video {

domainlist audio-video/domains

urllist audio-video/urls

logfile     /var/log/squid/audio-video.log

}

 

dest blog {

domainlist blog/domains

urllist blog/urls

logfile     log/blog.log

}

 

dest dangerous_material {

domainlist dangerous_material/domains

urllist dangerous_material/urls

logfile     /var/log/squid/dangerous_material.log

}

 

dest drogue {

domainlist drogue/domains

urllist drogue/urls

logfile     /var/log/squid/drogue.log

}

 

dest financial {

domainlist financial/domains

logfile     /var/log/squid/financial.log

}

 

dest forums {

domainlist forums/domains

expressionlist forums/expressions

urllist forums/urls

logfile     /var/log/squid/forums.log

}

 

dest gambling {

domainlist gambling/domains

urllist gambling/urls

logfile     /var/log/squid/gambling.log

}

 

dest hacking {

domainlist hacking/domains

urllist hacking/urls

logfile     /var/log/squid/hacking.log

}

 

dest mobile-phone {

domainlist mobile-phone/domains

urllist mobile-phone/urls

logfile     /var/log/squid/mobile-phone.log

}

 

dest phishing {

domainlist phishing/domains

urllist phishing/urls

logfile     /var/log/squid/phishing.log

}

 

dest publicite {

domainlist publicite/domains

expressionlist publicite/expressions

urllist publicite/urls

logfile     /var/log/squid/publicite.log

redirect     http://192.168.0.1:81/images/null.gif

}

 

dest radio {

domainlist radio/domains

urllist radio/urls

logfile     /var/log/squid/radio.log

}

 

dest redirector {

domainlist redirector/domains

expressionlist redirector/expressions

urllist redirector/urls

logfile     /var/log/squid/redirector.log

}

 

dest strict_redirector {

domainlist strict_redirector/domains

expressionlist strict_redirector/expressions

urllist strict_redirector/urls

logfile     /var/log/squid/strict_redirector.log

}

 

dest strong_redirector {

domainlist strong_redirector/domains

expressionlist strong_redirector/expressions

urllist strong_redirector/urls

logfile     /var/log/squid/strong_redirector.log

}

 

dest tricheur {

domainlist tricheur/domains

urllist tricheur/urls

logfile     /var/log/squid/tricheur.log

}

 

dest warez {

domainlist warez/domains

expressionlist warez/expressions

urllist warez/urls

logfile     /var/log/squid/warez.log

}

 

dest webmail {

domainlist webmail/domains

urllist webmail/urls

logfile     /var/log/squid/webmail.log

}

 

dest games {

domainlist games/domains

urllist games/urls

logfile     /var/log/squid/games.log

}

 

dest mixed_adult {

domainlist mixed_adult/domains

urllist mixed_adult/urls

logfile     /var/log/squid/mixed_adult.log

}

 

dest filehosting {

domainlist filehosting/domains

urllist filehosting/urls

logfile     /var/log/squid/filehosting.log

}

 

dest reaffected {

domainlist reaffected/domains

urllist reaffected/urls

logfile     /var/log/squid/reaffected.log

}

 

# dest shopping {

# domainlist shopping/domains

# urllist shopping/urls

# logfile     /var/log/squid/shopping.log

# }

 

dest dating {

domainlist dating/domains

urllist dating/urls

logfile     /var/log/squid/dating.log

}

 

dest marketingware {

domainlist marketingware/domains

urllist marketingware/urls

logfile     /var/log/squid/marketingware.log

}

 

dest astrology {

domainlist astrology/domains

urllist astrology/urls

logfile     /var/log/squid/astrology.log

}

 

dest local {

    domainlist    local/domains

    urllist    local/urls

    logfile     /var/log/squid/local.log

}

 

 

# Definition des ACLs

 

acl {

    utilisateurs_MALISTE {

        pass MALISTE local none

    }

 

default {

        pass    local    none

        redirect http://127.0.0.1/cgi-bin/acces_interdit.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u

    }

}

Création d’une liste personnalisée

 

Il est possible de créer des listes personnalisées pour interdir ou autoriser certains sites.

Créer un fichier dans /var/lib/squidguard/db. Dans mon cas le fichier va se nommer MALISTE.destdomainlist

Saisir dans ce fichier les adresses des sites que vous désirez bloquer ou autoriser

nano /var/lib/squidguard/db/ MALISTE.destdomainlist

 

site1.fr

site2.fr

site3.fr

Génération de la base de données

 

Saisir la commande suivante qui va permettre de générer la base de donnée. Cette action peut prendre du temps

squidGuard -C all

Changement du propriétaire sur certains dossiers et fichiers

chown -R proxy:proxy /etc/squid /var/log/squid /var/spool/squid /usr/lib/squid /usr/sbin/squid /var/lib/squidguard

Stopper le service squid

/etc/init.d/squid stop

Initiatisation du cache et configuration de squid d’après le fichier de conf

squid -f /etc/squid/squid.conf –z

Lancement du service squid

/etc/init.d/squid start

Le proxy squid avec squidguard est maintenant opérationnel. Vous pouvez personnaliser les accès en vous créant vous-même les listes de site.

 

Auteur : POMENTE Guillaume