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
Partager la publication "INSTALLATION ET CONFIGURATION PROXY SQUID ET SQUIDGUARD SUR DEBIAN SQUEEZE"