sbarcik.free.fr

28avr/100

Squid + squidGuard

Cet article est le premier d'une série de 3 articles consacrés à squid et à squidguard. Ils datent un peu, puisque écris en 2005, mais certains y trouverons peut-être encore un quelconque intérêt.

Pré requis

Squid

Toutes les distributions intègrent une version de Squid. Vous pouvez utiliser l’outil correspondant à votre distribution, au choix, urpmi, apt-get, yum, rpm, et j’en oublie, ou bien vous rendre sur le site de Squid pour télécharger la dernière version. Par facilité pour l’auteur, la partie installation fera référence à une Redhat ou dérivée.

SquidGuard

Squidguard 1.2.0 nécessite l’utilisation d’une version 3.2.x de la librairie Berkeley db que vous pouvez trouver sur le site de sleepycat , Vous pouvez télécharger un package SquidGuard pour certaines distributions, mais si vous souhaitez le compiler vous même alors, assurez-vous également d’avoir installé make, gcc, bison et flex.
Le redirecteur SquidGuard va nous permettre notamment de :
-  bloquer certains sites selon une base de donnée ou des expressions pré-établies,

-  gérer l’accès à internet en fonction de certaines plages d’adresses IP,

-  gérer l’accès à internet en fonction de certaines plages horaires.

Installation

Squid

Aprés avoir téléchargé le package correspondant à votre distribution (vous pouvez également préférer yum ou apt-get), tapez dans un terminal :
[alchemist@hadopi /]# rpm -ivh squid-2.5-STABLE.i386.rpm
Ca y est, Squid est installé. Il faudra ensuite modifier 2 ou 3 petites choses dans le fichier de configuration pour pouvoir démarrer le service.

SquidGuard

Si vous installez par les rpms, c’est aussi simple que pour squid. Commençons par installer la librairie Berkeley db :
[alchemist@hadopi /]# rpm -ivh db-3.2.9.rpm
puis ensuite le package squidGuard (qui provient ici du repository DAG) :
[alchemist@hadopi /]# rpm -ivh squidguard-1.2.0-2.rh9.dag.i386.rpm

Configuration

Configuration simple de squid

Pour configurer squid simplement, il faut éditer le fichier de configuration /etc/squid/squid.conf. Ce fichier est très bien documenté et, pour peu que vous maîtrisiez suffisamment l’anglais, il vous donnera toutes les informations nécessaires à l’utilisation des directives pouvant être employées. Voilà ce que nous allons modifier :
http_port 8080
Le port par défaut qu’utilise Squid est le port 3128, mais beaucoup préfèrent utiliser le 8080.
cache_dir ufs /var/spool/squid 1024 16 256
cache_dir permet de définir le ou les répertoires qui vont être utilisés pour gérer le cache.
ufs correspond au format de stockage utilisé par squid. Il existe également aufs, mais il n’est pas conseillé.
/var/spool/squid correspond au chemin absolu du répertoire utilisé pour stocker les objets du cache.
Vous pouvez utiliser plusieurs répertoires pour le cache, vous utiliserez alors, 2 fois la directive cache_dir.
1024 16 256 correspondent respectivement à la quantité en Mo d’espace disque disponible dans ce répertoire, au nombre de sous-répertoires créés dans le répertoire /var/spool/squid, et au nombre de sous-repertoires créés dans chaque sous-répertoire précédemment créé. Vous pouvez bien sûr laisser les options par défaut.
cache_access_log /var/log/squid/access.log

cache_log /var/log/squid/cache.log

cache_store_log /var/log/squid/store.log

cache_swap_log /var/log/squid/cache_swap.log
Les différents fichiers de logs peuvent-être laissés par défaut.
emulate_httpd_log on
Placée sur on, cette directive permet d’avoir un affichage des logs à la manière d’Apache, ce qui permet d’utiliser un outil comme awstats pour créer des statistiques journalières sur l’utilisation de Squid.
Placée sur off, l’affichage des logs est l’affichage natif de Squid.
redirect_program /usr/bin/squidGuard -c /etc/squidGuard.conf
Cette directive est très importante, puisque c’est elle qui va permettre de dire quel redirecteur utiliser, avec quel fichier de configuration.
redirect_children 5
Correspond au nombre de processus SquidGuard lancés en simultané. Chaque requête faite à Squid va être « passée » à SquidGuard. Attention donc, de bien dimensionner le nombre de processus sous peine de ralentissements. Je vois des petits malins qui vont en mettre 50 pour ne pas être embêtés. Les processus vont alors utiliser de la RAM et des ressources systèmes supplémentaires, ce qui reviendra au même que de ne pas en mettre assez. Prudence donc.

Configuration des Acls

Passons aux ACLs ou Access Control List. On commence par définir tout ce qui existe sur le réseau, tout ce qu’on va vouloir utiliser et plus loin dans la configuration, on créera les règles d’autorisation d’accés.
Vous pouvez laisser par défaut :
#Recommended minimum configuration:

acl all src 0.0.0.0/0.0.0.0

acl manager proto cache_object

acl localhost src 127.0.0.1/255.255.255.255

acl SSL_ports port 443 563

acl Safe_ports port 80                # http

acl Safe_ports port 21                # ftp

acl Safe_ports port 443 563        # https, snews

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 CONNECT method CONNECT
mais, je vous conseille quand même de rajouter la ligne suivante pour définir votre réseau local :
acl mon_reseau src 192.168.1.0/255.255.255.0
mon_reseau nom que vous voulez donner à votre réseau (peut être toto ou Ximoruf, ça n’a pas d’importance)
192.168.1.0 plage d’adresses ip de votre réseau local 255.255.255.0 masque de sous réseau
En plus des directives par défaut de http_access, vous devez rajouter :
http_access allow mon_reseau

http_access deny all
afin de permettre seulement à votre réseau local d’accéder à Squid.
A ce stade, vous pouvez initialiser les répertoires de cache de squid par la commande
[alchemist@hadopi /]# squid -z 2005/01/05 20:14:47| Creating Swap Directories

Configuration simple de SquidGuard

Commencez par éditer le fichier de configuration /etc/squidGuard.conf.
Les deux lignes suivantes définissent le répertoire contenant la base de données ainsi que le répertoire de logs.
dbhome /var/lib/squidguard

logdir /var/log/squidguard
Récupérez la dernière version de la base de données sur le site de squidGuard et décompressez le fichier dans le répertoire indiqué par la directive dbhome.
[alchemist@hadopi /]# tar xzvf blacklists.tgz
ce qui crée un répertoire appelé blacklists (ou listes noires) qui contient des sous-répertoires au nom on ne peut plus explicite. Généralement, chaque sous-répertoire contient trois fichiers :
-  domains,

-  urls,

-  expressions (basé sur des expressions rationnelles, donc consommatrices de ressources. A utiliser avec modération).

configurer les types de blacklist

Dans le fichier squidGuard.conf, vous pouvez créer des zones pour chaque type de sites que vous désirez bloquer. On indique les fichiers que squidGuard doit prendre en compte et l’url de redirection. Je vous conseille d’ailleurs fortement de créer votre propre page de redirection afin d’informer l’utilisateur de ce qui lui arrive.
dest porn {

domainlist      dest/porn/domains

urllist         dest/porn/urls

expressionlist  dest/porn/expressions

redirect        http://www.xline.fr

}

Créer les adresses sources

En se basant sur l’adressage ip, nous pouvons facilement créer des profils utilisateurs, un profil serveurs et un profil stagiaires.
src serveurs {

ip              192.168.1.1-192.168.1.10

}

src utilisateurs {

ip                                         192.168.1.50-192.168.1.200

}

src stagiaires {

ip                                         192.168.1.201-192.168.1.220

}

Créer les ACLs

Les ACLs sont les droits d’accès associés aux adresses sources. Supposons que nous désirions autoriser internet pour les serveurs sans aucune restriction, interdire les sites contenus dans la base porn aux utilisateurs et interdire totalement internet aux stagiaires :
acl {

serveurs {

pass all

}
utilisateurs {

pass !porn all

}

stagiaires {

pass none

}

default {

pass none

}

}
Plusieurs choses à remarquer :
-  l’instruction default en fin de directive permet de créer des ACLs pour tout ce qui ne rentre pas dans les ACLs définis précédemment,

-  le point d’exclamation devant le mot « porn » signifie différent de, les autorisations se lisent de gauche à droite. Pour les utilisateurs, vous devez lire : autoriser ce qui est différent du contenu de la liste porn, puis tout le reste..
Autres fonctionnalités
Il existe bien évidemment foule d’autres possibilités comme par exemple mettre en place des autorisations d’accès en fonction de dates ou de plages horaires ou bien encore créer ses propres listes autorisées ou non.
Vous pouvez également configurer Squid pour permettre une authentification et de ce fait créer des ACLs plus sécurisées que celles utilisant les adresses ip.
Lors du prochain numéro de Xline, nous verrons comment sécuriser notre configuration de squid, comment authentifier les utilisateurs et comment mettre à jour et créer de nouvelles blacklists au format Db.

DeliciousFacebookDigg
RSS FeedStumbleUponTwitter
Commentaires (0) Trackbacks (0)

Aucun commentaire pour l'instant


Laisser un commentaire


Aucun trackbacks pour l'instant