sbarcik.free.fr

28avr/100

Squid + squidGuard (2eme partie)

Proxy authentifié

Intérêts de l’authentification :

L’inconvénient de créer des règles de filtrage en fonction des adresses ip est qu’il suffit qu’un utilisateur, un peu plus au fait que les autres, change son adresse ip pour que toutes vos règles longuement élaborées et réfléchies deviennent inutiles. Il se fera de plus une joie de transmettre l’information à ses petits camarades, qui en feront autant. :-(

Le fait d’authentifier vos utilisateurs va permettre une surveillance accrue de votre réseau [1] et surtout, la possibilité de gérer des règles quels que soient le poste de travail et le navigateur utilisé.

Squid possède plusieurs modes d’authentification natifs :

- LDAP : Utilise une authentification par LDAP
- NCSA : Utilise un fichier d’utilisateurs et de mot de passe de type NCSA
- MSNT : S’authentifie sur un domaine Windows NT
- PAM : Utilise Pluggable Authentication Modules
- SMB : Utilise un serveur SMB comme windows NT ou Samba
- getpwam : Utilise l’ancien style de fichier de mot de passe Unix.
- sasl : Utilise les librairies SASL
- winbind : Utilise Samba pour s’authentifier dans un domaine Windows

Dans un environnement Unix, nous aurons tendance à utiliser LDAP, tandis que pour un environnement Windows, nous utiliserons plutôt winbind.

Le but ici étant de montrer comment utiliser l’authentification avec Squid, nous utiliserons NCSA pour sa simplicité de configuration et parce qu’il est présent par défaut dans les rpm de squid.

Le principe est simple, il faut commencer par créer les utilisateurs. Pour cela, vous devrez installer apache, car nous allons les créer à l’aide de la commande htpasswd :

- -c : pour créer un nouveau fichier de mot de passe, à n’utiliser que pour créer le premier utilisateur
- utilisateurs.pwd : nom du fichier de mot de passe
- steph : nom de l’utilisateur
- 123 : mot de passe super compliqué pour l’exemple

[alchemist@hadopi squid]# htpasswd -c utilisateurs.pwd steph
New password:
Re-type new password:
Adding password for user steph

Après avoir tapé le mot de passe deux fois, voici ce que nous donne le fichier /etc/squid/utilisateurs :

[alchemist@hadopi /]# cat /etc/squid/utilisateurs.pwd
steph:i.SWk6QsaoY5.

Comme vous pouvez le constater, le format du fichier est simple. A noter que le mot de passe est encrypté. Continuez à ajouter autant d’utilisateurs que nécessaire.

Reprenons maintenant notre fichier de configuration /etc/squid/squid.conf afin de faire quelques modifications. Il faut tout d’abord indiquer à Squid que nous voulons utiliser une authentification. Pour cela, dans la section auth_param, rajoutez les lignes suivantes :

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/utilisateurs.pwd
auth_param basic children 5
auth_param basic realm Serveur Proxy de Dawal.org
auth_param basic credentialsttl 2 hours

Ce qui signifie que :
- Nous allons utiliser le programme ncsa_auth pour gérer l’authentification à partir du fichier utilisateurs.pwd.
- Il y aura 5 processus enfant démarrés.
- Le nom de la boîte de dialogue pour l’authentification est Serveur Proxy de Dawal.org
- Et la durée d’une session authentifiée est de 2 heures

Définissons maintenant dans les acls (ou Access Control List)de squid, qu’il est obligatoire d’être authentifié pour utiliser le proxy :

acl Utilisateurs proxy_auth REQUIRED

Puis, modifier la section http_access comme suit :

http_access allow Utilisateurs
http_access deny all

de manière à n’autoriser que les utilisateurs authentifiés à accéder à Internet.

Attention ! si vous souhaitez installer squid en Proxy transparent [2], vous ne pourrez pas authentifier vos utilisateurs!

SquidGuard et les Utilisateurs

Une fois que vous avez configuré squid pour n’accepter que les utilisateurs authentifiés, vous allez pouvoir les utiliser dans les acls de squidguard.

Dans la section définition des sources, nous pouvons rajouter :

src administrateurs{
user              steph
}

et bien sûr, dans la section acl :

acl {
administrateurs {
pass all
}

Attention toutefois à ne pas vous enfermer dans un fichier de configuration trop complexe, avec une gestion par adresses ip et par utilisateurs. Préférez utiliser l’un ou l’autre, car elle sont complémentaires :

src administrateurs{
ip                192.168.1.1
user              steph
}

Dans ce cas, l’administrateur Steph aura accès au Web uniquement à partir de l’ordinateur possédant l’adresse ip 192.168.1.1.

Gestion des listes

La gestion des blacklists est quelque chose de complexe. En effet, de par l’essence même d’internet, il est impossible de référencer tous les sites à caractère pornographique, d’incitation à la haine, ou à la violence. Le blocage par mot clés ou expressions régulières pose deux problèmes :
- D’une part, cela accroît l’utilisation des ressources du serveur,
- D’autre part, bloquer le mot sexe peut vous interdire l’accés à tous les sites médicaux.

Il est cependant nécessaire de les mettre à jour de temps en temps. L’un des problèmes rencontrés avec les bases téléchargeables sur le site de squidGuard est qu’elles concernent une majorité de sites anglophones. Vous pouvez récupérer les blacklists officielles et certaines non officielles, mais fort utiles sur le site de l’université de Toulouse

Après avoir récupéré le fichier blacklists.tar.gz, décompressez-le dans le répertoire contenant les listes (dbhome).

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

Les listes existent sous deux formes, fichiers textes ou en .db. A chaque démarrage de Squid, squidGuard lit les fichiers de blacklists et, s’ils sont au format texte, crée une base de donnée à "la volée". Par contre, s’ils sont au format .db, les bases sont déjà créées et le lancement de squid est plus rapide. Il faut donc générer les bases :

squidGuard -d -c /etc/squid/squidguard.conf -C all /var/lib/squidguard

- -d : permet d’envoyer toutes les erreurs sur la sortie standard,
- -c : indique le fichier de configuration à utiliser,
- -C : pour créer les bases .db. Vous pouvez utiliser all pour générer toutes les bases ou uniquement le fichier domains ou urls qui vous intéresse,
- /var/lib/squidguard : le répertoire où se trouvent les fichiers de blacklists.

Pensez à changer le proprietaire des fichiers qui doit être l’utilisateur qui exécute squid :

[root@hadopi /]# chown -R squid.squid /var/lib/squidguard/

puis recharger la configuration de squid par la commande :

[root@hadopi /]# squid -k reconfigure

Ajouter des blacklists

Vous pouvez également créer votre propre blacklist. Dans le répertoire qui contient les blacklists, créez un nouveau répertoire dawal :

[root@hadopi /]# mkdir /var/lib/squidguard/dawal

créez un fichier domains (et/ou urls et/ou expressions) et remplissez le comme suit :

dawal.org
free.fr
yahoo.fr
debian.org
redhat.com
tootella.org

soit un domaine par ligne. Pour les autres fichiers, vous pouvez les éditer afin de voir comment ils sont conçus. Il faut ensuite rajouter cette zone dans le fichier de configuration de squidGuard :

dest dawal {
domainlist      dawal/domains
urllist         dawal/urls
expressionlist  dawal/expressions
redirect        http://www.lesitequevousvoulez.fr
}

Attention : ne mettez que les fichiers que vous avez créés. S’il n’y a pas de fichier urls ou expressions, mettez les lignes en commentaire sous peine d’erreur au redémarrage de squid.

Regénérez vous bases comme vu précédemment et rechargez squid.

Ajouter/supprimer dans les listes

Vous pouvez à tout moment ajouter ou supprimer des domaines ou des urls dans les listes installées. Il existe deux méthodes :

- ajouter/supprimer "online", soit directement dans les fichiers db,
- ajouter/supprimer "offline", soit dans les fichiers textes, mais nécessite une reconstruction des bases.

Dans les deux cas, il sera nécessaire de recharger squid.

Vous vous douterez bien que je préfère la première méthode et c’est celle que je conseille bien évidemment.

Ajout/suppression online

Il faut créer un fichier domains.diff ou urls.diff selon ce que vous souhaitez modifier. Par exemple, vous aimeriez interdire ou autoriser l’accés à certains sites ou domaines. Votre fichier diff sera construit ainsi :

+dawal.org
+linuxfr.org
+lesitequejeveux.com
-sitecochon.fr
-anti-productivite.org
-telecharger.spyware.biz

- A chaque ligne correspond un domaine.
- Avec le signe ’plus’, on ajoute dans les .db.
- Avec le signe ’moins’, on supprime le domaine des bases.

Extrêmement simple non ?

Il vous suffit ensuite d’indiquer à squidGuard qu’il doit se mettre à jour :

[root@hadopi /]# squidguard -c /etc/squid/squidguard.conf -u

- -c : indique le fichier de configuration à utiliser,
- -u : update - mettre à jour les bases db

puis rechargez squid.

Ajout/suppression offline

Il faut modifier les listes manuellement et régénérer les .db.

Profil Horaire

Au sein d’une entreprise, vous pouvez interdire l’accés à internet en dehors des heures de bureau et le week-end. Squid vous permet de mettre en place des profils horaires assez pointus, puisque vous pouvez gérer les accés en fonction des heures, des jours voire de date trés précise.

Nous pouvons envisager une définition des horaires dans le squidguard.conf comme suit :

time hors_bureau {
weekly   * 00:00-08:30        # nuit
weekly   * 18:00-24:00        # soirée
weekly     saturdays sundays  # week-end
date     *.05.01              # Fête du travail
}

Ce qui signifie pour la première ligne :

weekly : semaine * : tous les jours 00:00-08:30 : de minuit à 8h30 du matin

L’ensemble de la définition signifie que la période hors_bureau s’applique tous les jours de la semaine de 18h00 à 8h30, le week-end et tous les ans le premier mai.

Enfin, il ne nous reste qu’à indiquer dans la section Acls ce que nous souhaitons faire de ces horaire. Soit :

utilisateurs within hors_bureau {
pass    dawal none
} else {
pass any
}

soit :

utilisateurs outside hors_bureau {
pass    any
} else {
pass dawal none
}

Dans le premier cas, en utilisant l’attribut within, l’acl signifie : Pendant les horaires hors_bureau, ne laisser passer que les sites de la blacklist dawal, et en dehors de ces horaires, laisser tout passer

Dans le second cas, l’attribut outside signifie : En dehors de la plage hors_bureau, laisser tout passer, et pendant la plage horaire ne laisser passer que les sites de la blacklist dawal.

Conclusion

Voilà qui clotûre ce deuxième article sur Squid et squidGuard. Comme vous vous en serez certainement aperçu, Squid offre beaucoup de possibilités de configuration en laissant libre cours à votre imagination.

Cependant pensez toujours à faire le plus simple possible et le strict nécessaire au risque d’avoir des difficultés à maintenir le proxy.

Vous pouvez également associer un logiciel de statistiques tel que webalizer ou awstats afin d’obtenir des informations sur l’utilisation de votre proxy.

Bon courage ...

DeliciousFacebookDigg
RSS FeedStumbleUponTwitter
Commentaires (0) Trackbacks (0)

Aucun commentaire pour l'instant


Laisser un commentaire


Aucun trackbacks pour l'instant