Aide Mémoire issus du site : http://dawal.chrysalice.org
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
Après avoir tapé le mot de passe deux fois, voici ce que nous donne le fichier /etc/squid/utilisateurs :
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 :
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 :
Puis, modifier la section http_access comme suit :
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 !
2eme partie :
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 :
et bien sûr, dans la section acl :
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 :
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.
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).
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 :
-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 :
puis recharger la configuration de squid par la commande :
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 :
créez un fichier domains (et/ou urls et/ou expressions) et remplissez le comme suit :
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 :
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 :
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 :
-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.
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 :
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 :
soit :
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.
Dernière mise à jour : ( 23-06-2010 )