Installation d un Proxy Squid et SquidGuard



Documents pareils
Squid. Olivier Aubert 1/19

But de cette présentation. Proxy filtrant avec Squid et SquidGuard. Serveur proxy. Serveur proxy. Hainaut P

Installation et Configuration de Squid et SquidGuard sous Debian 7

Serveur proxy Squid3 et SquidGuard

Configurer Squid comme serveur proxy

Configuration de SquidGuard sous Fedora Core 4-1 / 6 -

MISE EN PLACE D UN FIREWALL ET D UN SERVEUR PROXY SOUS LINUX MANDRIVA.

Proxy SQUID sous Debian

Installation d'un service mandataire (Proxy SQUID) 1

Linux sécurité des réseaux

Serveur Mandataire SQUID

MANUEL D INSTALLATION D UN PROXY

Proxy et reverse proxy. Serveurs mandataires et relais inverses

Mise en place d un serveur Proxy sous Ubuntu / Debian

Squid/SquidGuard.

PROXY SQUID-SQARD. procédure

SQUID Configuration et administration d un proxy

Zemma Mery BTS SIO SISR. Session Projets Personnels Encadrés

Comment surfer tranquille au bureau

Squid. Squid est un logiciel permettant la réalisation d'un cache pour les clients web. Squid peut aussi jouer le rôle de filtre http.

Editer un script de configuration automatique du proxy

Mise en place d un proxy Squid avec authentification Active Directory

TAGREROUT Seyf Allah TMRIM

SQUID P r o x y L i b r e p o u r U n i x e t L i n u x

SQUID I- Squid, c'est quoi? II- Comment ca marche? III- Où trouver des informations?

12 - Configuration de SquidGuard - De base.doc. A) Sous /etc/squid/squid.conf

But de cette présentation

SÉCURITÉ DU SI. Authentification centralisée et SSO. Denoun Jérémy De Daniloff Cyril Bettan Michael SUJET (2): Version : 1.0

Live box et Nas Synology

Procédure d utilisation et de paramétrage (filtrage) avec IPFIRE

Administration de Parc Informatique TP07 : Installation de Linux Debian

Live box et Nas Synology

Mandataires, caches et filtres

Assistance à distance sous Windows

FreeNAS Shere. Par THOREZ Nicolas

Dynamic Host Configuration Protocol

Administration Linux - Proxy

Les différentes méthodes pour se connecter

Les réseaux des EPLEFPA. Guide «PfSense»

OpenDNS: Un DNS rapide et utile

PLANNING DES ACTIVITES PROFESSIONNELLES

Microsoft Hosted Exchange 2010 DOCUMENT D EXPLOITATION

WEB APPLICATION FIREWALL AVEC APACHE ET MOD_SECURITY

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

MISE EN PLACE DU FIREWALL SHOREWALL

LINUX REMPLAÇANT WINDOWS NT

IPCOP 1.4.x. Mise en œuvre du Pare Feu. Des Addons

Le serveur SLIS - Utilisation de base

vcenter Server 1. Interface Lancez le vsphere Client et connectez vous à vcenter Server. Voici la page d accueil de vcenter Server.

Configurez votre Neufbox Evolution

Eléments techniques tome I Installation Serveur Windows 2012

Sécurité du Système d Information. Authentification centralisée et SSO

INSTALLATION DE WINDOWS 2000 SERVER POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

CAMERA DOME AMELIORÉE DE SURVEILLANCE EN RÉSEAU GUIDE D INSTALLATION

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET. Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date :

Tutoriel réalisé par luo. Version du 22/02/14

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel

TP Service HTTP Serveur Apache Linux Debian

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

Cours 420-KEG-LG, Gestion de réseaux et support technique. Atelier No2 :

OpenMediaVault installation

Mise en place d un firewall d entreprise avec PfSense


CONFIGURATION DE BASE. 6, Rue de l'industrie BP130 SOULTZ GUEBWILLER Cedex. Fax.: Tel.:

Edutab. gestion centralisée de tablettes Android

L exemple d un serveur Proxy sous Windows NT 4 SERVER MICROSOFT PROXY SERVER 2 Installation et configuration Auteur : Eliane Bouillaux SERIA5

Installation et configuration du CWAS dans une architecture à 2 pare-feux

Un serveur web, difficile?

Mettre en place un accès sécurisé à travers Internet

Installation et configuration de Vulture Lundi 2 février 2009

Contrôle Parental Numericable. Guide d installation et d utilisation

Création d'un site web avec identification NT

La double authentification dans SharePoint 2007

Sauvegarde de postes clients avec BackupPC

Le filtrage de niveau IP

FAIRE UN PAIEMENT TIPI

Installation de Windows 2000 Serveur

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

WINDOWS 2000 SERVEUR

Installation et Réinstallation de Windows XP

Administration Centrale : Opérations

Contrôle de la DreamBox à travers un canal SSH

Configuration du serveur ESX

Contrôle Parental Numericable. Guide d installation et d utilisation

Serveur FTP. 20 décembre. Windows Server 2008R2

BIND : installer un serveur DNS

Date : NOM Prénom : TP n /5 ET ADMINISTRATION D'UN

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

ADF Reverse Proxy. Thierry DOSTES

Accès au Serveur de PAIE «SPV» par INTERNET Paramétrage du poste de travail «Windows»

La Clé informatique. Formation Internet Explorer Aide-mémoire

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Transcription:

TERNISIEN D OUVILLE Guillaume V1.1 Annexe I Installation d un Proxy Squid et SquidGuard Ternisien d Ouville Guillaume Juillet 2005 A- 1

Introduction Le but de cette installation est de créer un proxy-cache permettant également de filtrer l accès à Internet. Un proxy est un serveur mandataire, c'est-à-dire que les ordinateurs d un réseau local ne vont pas directement ce connecter à Internet mais passer par l intermédiaire de ce serveur. De plus les pages Internet visitées par un ordinateur seront mise en cache (copiées sur le disque dur), ainsi si la même page est demandée par une autre personne du réseau il n y aura pas besoin d aller la chercher sur le web mais seulement sur le disque dur du proxy, d où une meilleur utilisation de la bande passante. Comme toutes les connexions à un site Internet passeront par le proxy il est capable de les filtrer, on peut ainsi limiter l accès à Internet pour une entreprise. J ai choisi de faire ce proxy sous linux, car c est un système d exploitation libre, de même que les logiciels utilisés (Squid et SquidGuard). J utiliserai squid comme proxy-cache, et SquidGuard pour filtrer les sites web. Ces deux logiciels fonctionnent parfaitement ensemble. Voici un schéma expliquant le fonctionnement du serveur proxy. Le but de ce proxy sera de mettre certain site en cache et de bloquer l accès aux sites pornographiques et de téléchargements illégaux Ternisien d Ouville Guillaume Juillet 2005 A- 2

I) Installation... A) Fedora Core 4... 1) Préférences... 2) Configuration du réseau... 3) Configuration des utilisateurs... B) Squid... C) SquidGuard... D) Webmin et les modules nécessaires... II) Utilisation de Squid (mode terminal)... A) Configuration... 1) Paramètres et cache de squid... 2) Configuration des ACL... B) Lancement de squid... C) Configuration des clients... III) Utilisation de SquidGuard (mode terminal)... A) Configuration... 1) Paramètre... 2) Sources... 3) Dest... 4) Droit d accès... B) Création de la base de donnée... C) Lancement de SquiGuard... IV) Utilisation de Squid (avecwebmin)... V) Utilisation de SquidGuard (avec Webmin)... VI) Utilisation des logs... A) Les logs... 1) Squid... 2)SquidGuard... B) Utilisation des logs avec Webmin... 1) Webalizer... 2) SARG... VII) Améliorations possibles... Utilisation d un fichier pac Blacklist Divers Démarrage de Squid au boot Limite taille des logs Ternisien d Ouville Guillaume Juillet 2005 A- 3

I. Installation A) Fedora Core 4 1) Préférences Il est préférable de créer une partition sur votre disque dur pour les logs et la cache de Squid. Dans mon cas j ai créé une partition de 5 Go pour la cache et les logs, cette partition se trouve dans /home. Il est recommandé d installer fedora en serveur et d y installer un navigateur Internet graphique. 2) Configuration du réseau Voici les adresses réseaux pour ma configuration : Adresse IP : 172.16.0.249 Mask : 255.255.0.0 GW : 172.16.0.254 DNS 1 : 172.16.0.1 DNS2 : 172.16.0.2 Nom de l hôte : kic-proxy.keops-ic.fr Chemin DNS : keops-ic.fr 3) Configuration des utilisateurs Une fois l installation de Fedora terminée nous allons créer un utilisateur squid dans le groupe squid, c est cet utilisateur qui fera tourner notre proxy. Pour cela tapez dans la console : Groupadd squid Useradd squid g squid Passwd 123456789 B) Squid Normalement squid2 est déjà installé sur la fedora, mais cette version est antérieure à celle que nous allons installer, il faut donc la supprimer. Pour cela utilisez la commande rpm e squid dans le terminal. Vous devez ensuite télécharger squid2.5 STABLE 9. Allez sur le site http://rpmfind.net et cherchez le rpm valable pour la distribution fedora. Il sera peut être nécessaire d insérer les cd-rom de Fedora pour installer les packages dépendants. Le dossier /etc/squid est créé, il contient entre autre le fichier squid.conf, qui sert à configurer squid. Ternisien d Ouville Guillaume Juillet 2005 A- 4

C) SquidGuard Comme pour Squid il faut chercher le rpm sur le site http://rpmfind.net et l installer. Un fichier squidguard.conf apparaît dans le dossier /etc/squid. La Fedora Core 4 étant récente on ne trouve pas le rpm spécifique à cette version, cependant le rpm pour la FC 3 marche parfaitement bien. D) Webmin et les modules nécessaires Cette fois nous allons trouver notre rpm directement sur le site de webmin! (www.webmin.com/download.html) Une fois le rpm installé on se connecte à webmin avec un navigateur Internet grâce à l adresse ip du proxy sur le port 10000, http://127.0.0.1:10000 si l on se trouve sur le pc où webmin est installé. http://adresseipduproxy:10000 si l on se trouve sur un autre pc (et que webmin est configuré pour accepter la connexion!) On obtient ceci : A ce stade Webmin est inutilisable pour contrôler squid et SquidGuard. En effet malgré ses capacités il faut lui installer 2 modules pour contrôler squid ainsi que SquidGuard. Le module pour squid se trouve à l adresse : http://www.webmin.com/download/modules/squid.wbm.gz Celui pour SquidGuard : http://www.niemueller.de/webmin/modules/squidguard/squidguard-0.91.2.wbm.gz Ternisien d Ouville Guillaume Juillet 2005 A- 5

Nous allons maintenant configurer Webmin : Cliquons sur «configuration de Webmin». Annexe I Dans le premier icône on pourra configurer les ip ayant accès à la console Webmin. Ce qui nous intéresse le plus est l icône «Modules Webmin» grâce auquel nous allons pouvoir installer les modules précédemment téléchargés. Pour cela il suffit de mettre le lien du fichier WDM, on installera d abord le module de Squid et ensuite le module de SquidGuard. Une fois les deux modules installés Webmin va pourvoir configurer Squid et SquidGuard. II. Utilisation de Squid (mode terminal) Squid utilise des dossiers pour stocker sa cache et ses logs. J ai donc crée les répertoires /home/fichier_proxy/squid/log et /home/fichier_proxy/squid/cache. Ces deux dossiers se trouvent dans la partition que j ai créée pour le proxy. ATTENTION, ces dossiers doivent appartenir à l utilisateur Squid, pour cela faite un clic droit sur le dossier et dans l onglet permission changer l utilisateur et le groupe. Ternisien d Ouville Guillaume Juillet 2005 A- 6

A) Configuration Un seul fichier sert à configurer squid : squid.conf. On trouve ce fichier dans le dossier /etc/squid/squid.conf Le fichier de configuration de base est très imposant et nous n avons pas besoin de toutes les options que Squid offre pour faire ce que l on veut. Voici mon fichier squid.conf que je vais expliquer. ######### squid.conf version 3 par guigui 18/07/05 bloque google clubic ########## #port de com pour le proxy http_port 8080 #port de com avec autre proxy voisin (desactive avec 0) icp_port 0 #page a ne pas garder en cache acl QUERY urlpath_regex cgi_bin\? \.cgi \.pl \.php3 \.asp no_cache deny QUERY # taille de la cache memoire cache_mem 32000 bytes #emplacement cache (taille max en Mo,nbre sous repertoire,nbre sous sous repertoire) cache_dir ufs /home/fichier_proxy/squid/cache 10 10 50 #taille max objet ds cache maximum_object_size 2000000 bytes #emplacement log cache_store_log /home/fichier_proxy/squid/log/store.log cache_log /home/fichier_proxy/squid/log/cache.log cache_access_log /home/fichier_proxy/squid/log/access.log #mail responable proxy cache_mgr ternisieng@keops.net log_icp_queries off buffered_logs on #def des ACL (reseaulocal, localhost, ip possible,connection directe sur proxy, port sur) acl intranet src 172.16.0.0/255.255.0.0 acl localhost src 127.0.0.1/255.255.255.255 acl all src 0.0.0.0/0.0.0.0 acl CONNECT method CONNECT acl SSL_pots port 443 acl safe_ports port 0-65535 acl interdit dstdomain.clubic.com acl mots_interdits url_regex yahoo #droit access #on autorise reseau a ce connecter au proxy http_reply_access deny interdit http_reply_access deny mots_interdits http_access deny CONNECT!SSL_ports http_access deny!safe_ports http_access allow intranet http_access allow localhost http_access deny all redirect_program /usr/bin/squidguard -c /etc/squid/squidguard.conf Ternisien d Ouville Guillaume Juillet 2005 A- 7

1) Paramètres et cache de squid http_port http_port permet d indiquer le port que vous souhaitez utiliser. Le plus fréquent est 8080. Il faut donc changer cette valeur car par défaut Squid utilise 3128. icp_port Icp_port permet de choisir le port pour communiquer avec des proxy-cache voisins. Comme il n y en a pas dans notre cas nous mettons 0 pour le désactiver. acl QUERY urlpath_regex cgi-bin \? \.cgi \.pl \.php3 \.asp et no_cache deny QUERY : Définit le type de page à ne pas garder dans le cache afin de ne pas avoir à conserver les données d'un formulaire par exemple. cache_mem Indique la cache mémoire, la valeur dépend de votre système. Par défaut Squid utilise 8 Mo. Cette taille doit être la plus grande possible afin d'améliorer les performances (Considérez 1/3 de la mémoire que vous réservez à Squid). On peut avec cache_mem régler cache_mem_low et cache_mem_high qui sont les valeurs limites de remplissage du cache mémoire. Par défaut les valeurs sont 75 % et 90 %. Lorsque la valeur de 90 % est atteinte le cache mémoire se vide jusqu'à 75 %. cache_dir Vous indiquez ici le volume de votre cache. Si vous avez plusieurs disques, utilisez plusieurs fois cette ligne. cache_dir ufs /home/fichier_proxy/squid/cache 10 10 50 Cette ligne correspond à une cache de 10Mo, de plus Squid va placer cette cache dans le répertoire /home/fichier_proxy/squid/cache, il va y créer 10 répertoires contenant 50 sous répertoires. ATTENTION Pensez à créer les répertoires où sera stockée la cache! maximum_object_size Indique la taille maximale de l'objet qui sera sauvegardé sur le disque. Mon fichier indique une taille maximale de 2Mo cache_access_log ; cache_log ; cache_store_log Indique l'endroit où se trouve les logs. Si vous ne souhaitez pas avoir de logs (par exemple des objets cache_store_log), indiquez cache_store_log none. ATTENTION Pensez à créer les répertoires où seront stockés les logs! Cache_mgr Spécifie l adresse mail du responsable du proxy. Log_icp_queries off Indique qu on ne souhaite pas logger les requêtes ICP. Buffered_logs on Permet d accélérer l écriture de certains logs. Ternisien d Ouville Guillaume Juillet 2005 A- 8

2) Configuration des ACL Pour contrôler tout ce qui passe par votre proxy vous devez utiliser les ACL (Access Control List). Elles ont donc deux grandes fonctionnalités : contrôler qui a le droit d'utiliser votre proxy-cache et contrôler les requêtes que font les postes clients. Pour interdire certains sites on utilise les ACL. On peut interdire en fonction du domaine, de l url, de l'adresse IP ou d'un mot. La syntaxe d'une ACL est la suivante : Acl aclname acltype string[string2] http_access allow deny [!]aclname http_reply_access allow deny [!]aclname acltype peut prendre comme valeur : src (pour la source) : indication de l'adresse IP du client sous la forme adresse/masque. On peut aussi donner une plage d'adresse sous la forme adresse_ip_debut-adresse_ip_fin port : indique les ports Internet. dstdomain : Le domaine de destination. url_regex : Une chaîne contenue dans l'url. urlpath_regex : Une chaîne comparée avec le chemin de l'url. Ensuite on autorise ou non cette ACL avec http_access si l acl correspond à une ip qui a le droit ou non de se connecter au proxy, ou avec http_reply_access si l ACL correspond à un site dont l accès sera prohibé ou non. On peut placer un point d exclamation avant l acl pour indiquer le contraire. Et maintenant l explication de mes ACL : acl intranet src 172.16.0.0/255.255.0.0 : ACL désignant le réseau local acl localhost src 127.0.0.1/255.255.255.255 : ACL désignant le poste qui héberge le proxy acl all src 0.0.0.0/0.0.0.0 : ACL désignant toutes les adresses ip possibles. acl CONNECT method CONNECT : ACL désignant une connexion directe sur le proxy acl SSL_ports port 443 563 : ACL désignant les ports SSL acl safe_ports port 0-65535 : ACL désignant les ports dit de confiances, dans notre cas tout les ports car le réseau contient un pare-feu acl interdit dstdomain.clubic.com : ACL désignant un nom de domaine que l on va interdire Ternisien d Ouville Guillaume Juillet 2005 A- 9

acl mots_interdits url_regex yahoo : ACL désignant un mot dans une adresse URL que l on va interdire http_reply_access deny interdit : On refuse au client l ACL interdit, le site clubic.com sera donc bloqué. http_reply_access deny mots_interdits : On refuse au client l ACL interdit, tous les sites contenants dans leur url le mot yahoo seront bloqués. http_access deny CONNECT!SSL_ports : On refuse l ACL CONNECT pour éviter que des personnes puissent se connecter au proxy, mais on autorise les ports 443 utilisé par le protocole SSL. http_access deny!safe_ports : On refuse tous les ports sauf ceux de l ACL safe_ports http_access allow intranet : On accepte l ACL intranet pour que toutes les personnes du réseau local puissent passer par le proxy. http_access allow localhost : idem pour la machine http_access deny all : on refuse l ACL all pour empêcher une personne extérieure au réseau de passer par le proxy. ATTENTION cette ACL doit obligatoirement se trouver à la fin, il ne doit pas y avoir d autre acl après!! redirect_program /usr/bin/squidguard -c /etc/squid/squidguard.conf Spécifie à squid d utiliser le programme squidguard, inutile si vous n avez pas squidguard! (Plus de détails dans la partie III)) Voilà squid maintenant configuré et prêt à marcher!! Récapitulons ce que cette configuration permet : -utiliser très peu de cache (minimum possible) -autoriser le réseau local à se connecter au proxy et empêcher toute autre personne de s y connecter. -bloquer le site www.clubic.com -bloquer les url contenants le mot yahoo Il ne vous reste plus qu à le configurer pour vos envies! B) Lancement de squid Comme nous l avons dit tout à l heure nous voulons que ce soit l utilisateur squid qui lance le proxy. Il faut donc paramétrer les droits d accès des dossiers de squid. Pour cela il suffit de faire un clic droit sur un dossier ou fichier et d aller dans l onglet permission. Ternisien d Ouville Guillaume Juillet 2005 A- 10

Le fichier /etc/init.d/squid doit être le propriétaire de l utilisateur squid du groupe squid, de même que le fichier squid.conf. De plus il faut autoriser squid à écrire dans les répertoires des logs et de la cache (fait précédemment normalement). Il faut avant tout initialiser la cache avec les options de configuration que l on vient de voir : Pour cela tapez dans la console : cd /etc/squid/ squid -z Si votre fichier squid.conf contient une erreur de syntaxe, un message d erreur apparaîtra sinon «creating swap directories» s affichera à l écran. Lancer maintenant Squid avec la commande : cd /etc/squid/ squid D Squid fonctionne correctement, il ne reste plus qu a paramétrer les clients pour qu ils se connectent au proxy! On peut également démarrer, stopper, ou redémarrer squid grâce aux commandes : Service squid start stop restart C) Configuration des clients Il ne vous reste plus qu à configurer les postes clients, pour cela rien de plus simple il suffit d aller dans les paramètres de connexion de votre navigateur et de spécifier l usage d un proxy en entrant sont adresse ip et son port (configurer dans squid). Dans la partie VII. une autre méthode est expliquer pour configurer les postes clients. III. Utilisation de SquidGuard (mode terminal) SquidGuard utilise des dossiers pour stocker sa base de donnée et ses logs. J ai donc crée les répertoires /home/fichier_proxy/squidguard/log et /home/fichier_proxy/squidguard/lib. Ces deux dossiers se trouvent dans la partition que j ai créée pour le proxy. ATTENTION, ces dossiers doivent appartenir à l utilisateur Squid!, pour cela faite un clique droit sur le dossier et dans l onglet permission changer l utilisateur et le groupe. Ternisien d Ouville Guillaume Juillet 2005 A- 11

A) Configuration Avant toute chose il faut intégrer SquidGuard à squid, ce n est pas compliqué il suffit de rajouter cette ligne à la fin du fichier squid.conf (vu précédemment): Redirect_program /etc/bin/squidguard -c /etc/squid/squidguard.conf Cette ligne spécifie le lien vers le programme et «-c /etc/squid/squidguard.conf» le fichier de configuration à charger au lancement de SquidGuard SquidGuard va nous permettre de filtrer les pages web, il offre bien plus de fonctions que Squid pour cela. En effet SquidGuard utilise des fichiers textes contenants des listes de domaines, d urls ou d expressions. C est sa librairie. SquidGuard convertira ces fichiers en.db pour les utiliser. Il redirigera les pages bloquées sur un site de notre choix. Nous allons procéder de la même façon que pour squid pour expliquer comment le paramétrer. Voici donc mon fichier de config : ##### SquidGuard.conf par guigui 18/07/05 ####### #localisation des fichier de squidguard dbhome /home/fichier_proxy/squidguard/lib logdir /home/fichier_proxy/squidguard/log #adresse du reseau local source reseau { ip 172.16.0.0/16 #lien vers les listes de sites, domaines, ou expressions destination test { domainlist test.destdomainlist #ACL acl { reseau { pass!test redirect http://guicloud.free.fr/interdit.html default { pass none redirect http://guicloud.free.fr/interdit.html Ternisien d Ouville Guillaume Juillet 2005 A- 12

1) Paramètres Annexe I dbhome /home/fichier_proxy/squidguard/lib logdir /home/fichier_proxy/squidguard/log On indique les répertoires que SquidGuard va utiliser pour stocker ses fichiers contenants les sites à bannir ou autoriser (lib), et des ses fichiers logs. 2) Sources source nomdelasource { ip 172.16.0.0/16 On définit une classe d adresses Ip clientes (source), dans ce cas toutes les adresses du réseau local. Nous allons pouvoir ensuite paramétrer les droits d accès de cette source, les sources sont utiles pour permettre un droit d accès propre au client, ou alors rediriger des groupes de personnes sur différents sites. 3) Dest destination nomdeladest { domainlist nomdeladest.destdomainlist urllist nomdeladest.desturllist expressionlist nomdeladest.destdexprlist Les dest ou destination permettent de définir les types et l emplacement des fichiers de la librairie de squidguard, dans cet exemple le fichier contenant une liste de domaine sera dans le dossier /var/lib/squidguard et ce sera le fichier portant le nom «nomdeladest.destdomainlist». De même pour le fichier des urls et des expressions. On peut donc créer plusieurs classes de sites, on peut faire par exemple une dest pour les sites pornographiques, une pour les sites de P2P etc. Nous verrons un peu plus loin comment créer ces fichiers. 4) Droit d accès Les ACL permettent de définire les droits d accès pour chaque source, dans notre cas il n y a qu une source, le réseau local. Mais on pourrait éventuellement définir des sous réseaux ayant des droits d accès différents. Ternisien d Ouville Guillaume Juillet 2005 A- 13

acl { nomdelasource { pass!nomdeladest redirect http://guicloud.free.fr/interdit.html default { pass none redirect http://guicloud.free.fr/interdit.html On définit les ACL pour la source réseau, dans le cas présent, toutes personnes du réseau local pourront accéder à toutes les pages Internet sauf celles spécifiées par «nomdeladest». Les pages interdites seront redirigées vers le site http://guicloud.free.fr/interdit.html. On pourrait également marquer : «pass!nomdeladest any» (on passe tout sauf nomdeladest, même chose que précédemment) «pass nomdeladest none» (on ne passe rien sauf nomdeladest ) On définit également une ACL default, au cas où une personne non définie dans les sources soit connectée au proxy, dans ce cas toutes les pages sont refusées et redirigées. ATTENTION, si la ligne redirect contient une erreur squidguard ne redirigera rien et laissera passer les sites à bloquer! B) Création de la base de donnée Comme nous l avons vu squid utilise une base de donnée ou librairie. Nous avons spécifié précédemment que squidguard utilise un fichier nommé «nomdeladest.destdomainlist». Nous devons créer ce fichier dans le répertoire /var/lib/squidguard (répertoire mentionné dans le fichier de configuration). Pour faire ce fichier il suffit de l ouvrir avec un éditeur de texte et de rentrer ligne après ligne les noms de domaine, sans le «www.» Il en va de même avec les fichiers nomdeladest.desturllist et nomdeladest.destexpressionlist Voici un exemple de syntaxe pour chaque fichier : # domainlist google.com wanadoo.com yahoo.fr yahoo.com # urllist free.fr/adsl sports.fr/fr/f1 # expressionlist p2p jeux Ternisien d Ouville Guillaume Juillet 2005 A- 14

C) Lancement de SquidGuard Avant de lancer squidguard il faut faire comme squid au niveau des permissions, en effet il faut que ce soit l utilisateur squid (le même que Squid) qui soit propriétaire de squidguard. Il faut donc changer les permissions pour les fichier /etc/squid/squidguard.conf, /etc/bin/squidguard et les dossiers qu utilise squidguard. Pour initialiser les fichiers contenants les urls, domaines ou expressions, il faut que squidguard les lisent. Pour cela lancer la commande : /usr/bin/squidguard C all SquidGuard va alors créer à partir des fichiers textes sa base de donnée (fichier.db), on peut le vérifier dans le dossier /var/lib/squidguard. On relance squid avec un «service squid restart» normalement tout fonctionne... IV. Utilisation de squid (avec webmin) Tous ce qui a été fait dans la partie précédente n est pas perdu lorsque vous utilisez Webmin pour contrôler Squid, le module va directement prendre le paramètre de votre fichier squid.conf Cette partie est extraite du site http://christian.caleca.free.fr/squid/ Les notes soulignées correspondent au changement que j ai effectué pour ma configuration. Comme Webmin est bien installé, mis à jour et tout, et que le module pour squid est bien présent, utilisons-le : Ternisien d Ouville Guillaume Juillet 2005 A- 15

Les ACL (Access Control Lists) permettent de définir des conditions sur les PIs, les ports, le contenu de certains textes, et j'en passe. Si vous voulez tout savoir sur les diverses ACL de Squid, ne comptez pas sur moi, comptez plutôt sur la documentation officielle. Les restrictions indiquent quoi faire lorsque ces conditions sont vérifiées. On autorise ou on interdit en fonction d'une ACL ou d'un groupe d'acls, le sens de "restriction" est donc à prendre avec un peu de recul, une restriction pouvant être une autorisation. La première "restriction" vérifiée est la bonne, d'où l'importance de l'ordre dans lequel elles sont placées. Sans faire une analyse détaillée, nous voyons que dans la configuration par défaut, seul "localhost" peut utiliser le proxy (Allow localhost). Il nous faut donc faire intervenir la notion de réseau local. Créer une ACL représentant le LAN Nous sélectionnons dans la liste déroulante "Client Address" et cliquons sur "Create New ACL" : Ternisien d Ouville Guillaume Juillet 2005 A- 16

Nous pouvons définir une étendue, ou toute une classe, comme c'est le cas dans l'exemple. Notre LAN fonctionne avec la classe 192.168.0.0. Save... La classe de notre réseau est 172.16.0.0 Une nouvelle ligne est apparue dans la liste des ACLs, appelée"localnet" Nous allons maintenant sur "Add proxy restriction, choisissons "Allow" et sélectionnons "LocalNet" dans la liste "Match ACLs". Save... Enfin, au moyen des flèches de la colonne de droite, nous montons cette nouvelle restriction juste au dessus de "Deny all" N'oublions pas de faire un "Apply changes", et refaisons un essai : Ternisien d Ouville Guillaume Juillet 2005 A- 17

Ca marche! Bien entendu, l'idée de faire plutôt "Allow all" est une mauvaise idée. Si votre proxy a un pied dans l'internet (s'il est installé sur la passerelle), vous risquez un proxy ouvert, avec tous les usages pervertis que l'on peut en faire... Ternisien d Ouville Guillaume Juillet 2005 A- 18

V. Utilisation de squidguard (avec webmin) Tous ce qui a été fait dans la partie précédente n est pas perdu lorsque vous utilisez Webmin pour contrôler SquidGuard, le module va directement prendre le paramètre de votre fichier squidguard.conf Cette partie est extraite du site http://christian.caleca.free.fr/squid/ Les notes soulignées correspondent au changement par rapport à ma configuration. Comme nous avons renommé le fichier de configuration par défaut, il n'y en a plus. Le module squidguard de Webmin va nous aider à en faire un autre, tout neuf. Depuis, l'onglet "Servers" de Webmin, démarrons ce module. Il pourra se faire qu'il soit mal ou pas configuré et qu'il apparaisse ainsi : Indiquez le chemin où l'on doit disposer du fichier de configuration. Mais ce n'est pas tout : Ternisien d Ouville Guillaume Juillet 2005 A- 19

Il faut aussi savoir sous quels UID/GID squidguard doit tourner. Il constituera des processus fils pour squid, c'est donc le même utilisateur que pour squid, "proxy" par défaut pour Debian. Le module va maintenant créer un squidguard.conf minimum : L utilisateur est squid ainsi que le groupe pour notre configuration. Vous n'avez pas le choix... "Create" donc. Ternisien d Ouville Guillaume Juillet 2005 A- 20

Indiquez les chemins par défaut pour Debian et, surtout, faites attention à bien sélectionner "No traffic" pour la règle par défaut. Si l'on est en train de s'embêter, ce n'est pas pour réaliser une passoire! Pour nous le dossier de la base de donnée est /home/fichier_proxy/squidguard/lib, celui des logs est /home/fichier_proxy/squidguard/log. Comme ce module est intelligent, il va constater que squid n'est pas configuré pour utiliser le "helper" squidguard. Il va donc vous en avertir : Ternisien d Ouville Guillaume Juillet 2005 A- 21

Configurez donc Squid. Vous pourrez vérifier, toujours au moyen de Webmin, mais avec le module Squid : Dans la pratique, Webmin a ajouté pour vous la ligne : redirect_program /usr/bin/squidguard -c /etc/squid/squidguard.conf Dans le fichier de configuration de Squid : /etc/squid.conf. Nous devrions avoir ceci dans la fenêtre Webmin de gestion de SquidGuard : Ternisien d Ouville Guillaume Juillet 2005 A- 22

Mais nous sommes encore très loin du compte... Puisqu'on n'est pas là pour réaliser une passoire, signalons tout de même ceci : squidquard redirige les URI interdits vers un URI local, généralement destiné à expliquer pourquoi le site convoité a été bloqué. Généralement, il s'agit d'un script CGI. Si cet URI de redirection n'est pas indiqué, ne sachant pas où rediriger les requêtes interdites, squidguard les laissera tout de même passer, réalisant ainsi une pernicieuse passoire!!! Il est donc impératif d'installer un tel script ou, à défaut, une page d'avertissement quelconque vers laquelle rediriger les URI interdits. Le paquetage Debian de squidguard n'installe rien à ce propos, mais vous trouverez dans /usr/share/doc/squidguard/examples deux scripts dont vous pourrez vous inspirer ou essayer d'utiliser en l'état (après les avoir installés dans /usr/lib/cgi-bin et rendus exécutables). Mais ce n'est pas tout, il vous faudra aussi revenir sur l'acl "Default", pour spécifier la redirection : Ternisien d Ouville Guillaume Juillet 2005 A- 23

http://127.0.0.1/cgi-bin/squidguard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u Cette ligne part du principe que vous avez sur la machine locale un serveur HTTP en état de marche et qu'il dispose d'un script squidguard.cgi. Les paramètres transmis dans cet exemple permettent de communiquer au script toutes les informations nécessaires pour identifier les circonstances du blocage. On peut également rediriger vers n importe quel site, dans notre cas http://guicloud.free.fr/interdit.htm Bien entendu, ce script, ou un autre (page php comprise) peuvent être situés sur une machine autre, il suffit de rédiger l'uri de redirection en fonction. Et voilà. Une magnifique configuration par défaut est réalisée. Il faut maintenant relancer Squid et, sans l'état actuel des choses, plus personne ne pourra visiter quoi que ce soit, SquidGuard interdisant tout par défaut à quiconque. Nous avons actuellement un fichier squidguard.conf qui a cette allure : dbhome /var/lib/squidguard/db logdir /var/log/squid acl { default { redirect http://127.0.0.1/cgibin/squidguard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u pass none Ternisien d Ouville Guillaume Juillet 2005 A- 24

Les "Source Groups" Ce sont les groupes d'utilisateurs de votre LAN. Vous pouvez créer autant de groupes que vous voulez, ces groupes seront principalement basés sur les blocs d'ips. Ceci peut vous amener déjà à reconsidérer complètement vos stratégies d'attribution d'ips... Pour le moment, nous allons redonner un accès sans limites à tous les utilisateurs de notre LAN en créant un "source group" rassemblant toutes les IPs que nous utilisons : Un groupe nommé poétiquement LAN. Vous pourrez aisément trouver mieux... Ternisien d Ouville Guillaume Juillet 2005 A- 25

Il faut maintenant définir son contenu : Nous ajoutons un "subnet", mais beaucoup de possibilités sont proposées. User et Userlist ne seront utilisables que s'il est mis en place un système d'authentification des utilisateurs de votre LAN. La gestion par les domaines ne fonctionnera pas non plus dans la configuration Squid mise en oeuvre ici. Nous nous contenterons donc de travailler avec les IPs. Ternisien d Ouville Guillaume Juillet 2005 A- 26

Tout notre réseau local, constitué ici d'une unique classe C privée. Le réseau est 172.16.0.0 pour nous. Mais, ce choix n'est pas limitatif, nous pourrions encore ajouter d'autres membres à ce groupe. Notre fichier squidguard.conf ressemble maintenant à ceci : Ternisien d Ouville Guillaume Juillet 2005 A- 27

dbhome /var/lib/squidguard/db logdir /var/log/squid source LAN { ip 192.168.0.0/24 acl { default { redirect http://127.0.0.1/cgi-bin/squidguard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u pass none Les "Access Control Lists" Rien n'est encore changé quant aux droits d'accès, toujours rien ne passe. Nous allons maintenant créer une nouvelle ACL pour permettre au LAN de voyager sur le Net, sans aucune restriction pour le moment : Nous ajoutons une ACL pour le groupe LAN. Ternisien d Ouville Guillaume Juillet 2005 A- 28

Nous définissons maintenant cette ACL de façon laxiste (nous n'avons pas pour l'instant les moyens de faire autre chose que tout ou rien) : Nous avons maintenant un fichier de configuration qui a cette allure : Ternisien d Ouville Guillaume Juillet 2005 A- 29

dbhome /var/lib/squidguard/db logdir /var/log/squid source LAN { ip 192.168.0.0/24 acl { LAN { pass any redirect http://127.0.0.1/cgibin/squidguard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u default { redirect http://127.0.0.1/cgi-bin/squidguard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u pass none Il suffit de relancer Squid et, cette fois-ci, tout le LAN pourra passer sur le web. VI. Utilisation des logs A) les logs Les logs sont les journaux de bord des logiciels L emplacement des logs de Squid et SquidGuard est définit dans leur ficher de configuration respectif. Dans le cas présent les logs de squid sont dans «/fichier_squid/log» et ceux de SquidGuard dans «/var/log/squidguard» 1) Squid Squid utilise 3 logs : -Cache.log -Access.log -Store.log Le fichier cache.log contient les informations concernant l état de Squid. Le fichier access.log contient les informations sur les requêtes qui ont transité par Squid. Le fichier store.log contient les informations sur les objets stockés en cache. Ternisien d Ouville Guillaume Juillet 2005 A- 30

Voici une explication de la syntaxe des logs pour le fichier access.log : TCP_HIT Une copie valide se trouve dans la cache TCP_MISS Pas dans la cache TCP_REFRESH_HIT Objet dans le cache mais périmé. Squid demande au serveur d origine si une nouvelle version est disponible, la réponse étant pas de nouvelle version. TCP_REF_FAIL_HIT Objet dans la cache, mais périmé. Squid demande une mise a jour, mais n obtient pas de réponse du serveur. Il renvoie alors l ancienne version. TCP_REFRESH_MISS Objet dans le cache mais périmé. Squid demande une mise a jour qu il reçoit. TCP_CLIENT_REFRESH Le client envoie une requête avec demande de ne pas utiliser le cache. Squid envoie la requête. TCP_IMS_HIT Le client demande une mise à jour, et l objet est de la cache et est récent. Squid n envoie pas la requête. TCP_IMS_MISS Le client demande une mise à jour. Squid envoie la requête. TCP_SWAPFAIL Problème de swap. L objet semble être en cache mais n est pas accessible. TCP_DENIED Accès refusé 2) SquidGuard SquidGuard utilise un seul fichier log, avec très peu d information. B) Utilisation des log avec Webmin 1) Webalizer Webalizer est un module prêt installé sur Webmin qui permet de créer des graphiques à partir des logs. Nous allons configurer Webalizer pour qu il puisse analizer le fichier access.log Dans le module de Webalizer, il faut cliquer sur «Ajouter un nouveau fichier logs pour l analyse» Ternisien d Ouville Guillaume Juillet 2005 A- 31

Il suffit ensuite de mettre le lien vers le log, puis de choisir «Squid» dans le type de logs et enfin de mettre le chemin vers lequel sera créé le rapport. Il ne reste plus qu à cliquer sur créer. Votre fichier est maintenant configurer pour Webalizer, cliquez dessus et en bas de la page cliquez sur générer le rapport, il ne reste plus qu à regarder votre beau rapport de log! Le rapport contient beaucoup d information (cliquez sur le mois pour les voir) 2) SARG SARG (Squid Analysis Report Generator) est un logiciel spécifique pour les logs de Squid. Son module pour Webmin est pré installé. Vous pouvez télécharger le rpm sur le site http://rpmfind.net, la dernière version est la 1.4.1 pour fedora core 3. Une fois installer vous pouvez vous servir du module de Webmin pour créer des rapports de logs. Vous avez juste besoin de configurer les liens vers les log de squid, et la destination du rapport. Ternisien d Ouville Guillaume Juillet 2005 A- 32

VII. Améliorations possibles Utilisation d un fichier Pac Pou faciliter l utilisation du proxy ont peut utiliser un fichier de configuration automatique. Cela permet par exemple de définir si dans certain cas on passe ou non par le proxy. Dans mon cas je ne veux pas que le réseau local passe par le proxy, je veux juste qu il soit utiliser quand on sort sur internet. Voici mon fichier pac : function FindProxyForURL(url, host) { if (isplainhostname(host)) return «DIRECT» ; Ternisien d Ouville Guillaume Juillet 2005 A- 33

else return «PROXY 172.16.0.249:8080 ; DIRECT» ; IsPlainName(host) Cette fonction retourne vraie si l adresse demandée appartient au réseau local. Return «DIRECT» Spécifie de ne pas passer par le proxy, dans ce cas si on est sur le réseau local on ne passera pas par le proxy. return «PROXY 172.16.0.249:8080 ; DIRECT» Sinon on passe par le proxy (on donne son adresse ip et son port), si jamais on ne trouve pas le proxy on passe directement. Démarrage de Squid au Boot Squid n est pas automatiquement lancé au démarrage de votre ordinateur. Il y a deux moyens pour lancement automatiquement Squid au démarrage. -La première est d aller dans Webmin, dans la partie système. Un onglet vous permet de paramétrer les actions de démarrage et d arrêt. Il vous suffit ensuite de sélectionner Squid dans la liste et de cliquer sur le bouton «activer les sélectionnés au moment du boot» -la seconde méthode consiste à faire un script de démarrage Blacklist Vous pouvez utiliser une blacklist, générés automatiquement par des robots. Vous trouverez cette blacklist sur le site de squidguard (www.squidguard.org/blacklist). J ai cependant eu quelques problèmes pour installer cette blacklist, en effet il semblerait que le module Webmin pour squidguard reconnaisse mal certain fichier. Voici ma méthode pour bloquer les urls et les domaines de la blacklist «porn». Une fois la blacklist téléchargée décompressez le dossier «porn». Ce dossier contient 3 fichiers : domains, urls, expressions. Nous utiliserons que les deux premiers, en effet certain site non pornographique peuvent contenir des mots contenus dans le fichier expression il serait dommage de les bloquer. Allez ensuite sur webmin dans le module de SquidGuard, créons une nouvelle «Destination» nommée «porno». Dans cette destination ajouter un domaine quelconque, et une url quelconque (cela va forcer le module à créer les fichiers dans la base de donnée de SquidGuard!). Ouvrez les fichiers nouvellement créés : /home/fichier_proxy/squidguard/lib/porn.destdomainlist /home/fichier_proxy/squidguard/lib/porn.desturllist Il ne vous reste plus cas copier les domaines de la blacklist «porn» dans le fichier porn.destdomainlist, de même pour la liste des urls. Ternisien d Ouville Guillaume Juillet 2005 A- 34

Pour finir forcez SquidGuard à initialiser sa base de donnée avec la commande : /usr/bin/squidguard C all Limiter taille log Squid génère à chaque requête des logs, ceci devenant de plus en plus volumineux. Pour éviter une surcharge (plus il sont lourd plus le système aura du mal à les manier) il faut que ces log soit archiver. Nous pouvons les archiver lorsqu ils atteignent une taille limite ou par rapport à une date. Pour cela Webmin contient un module très efficace. Allez dans la catégorie système puis dans le module Log File Rotation. Ajouter les log de Squid en cliquant sur Add a new log file to rotate. Vous obtenez ceci : Ternisien d Ouville Guillaume Juillet 2005 A- 35

Ternisien d Ouville Guillaume Juillet 2005 A- 36

Indiquez maintenant l adresse du fichier log, choisissez une rotation des logs a faire toutes les semaines ou si le fichier dépasse une taille de 50 Mo. Faites attention à bien sélectionner la re-création du fichier lors de son archivage. Indiquez ensuite le répertoire ou sera archivé le log. Diverses fonctions de linux intéressante Voici pour finir quelques commandes utiles pour linux : -ps aux grep squid Permet de voir si squid et squidguard tournent, on verra de plus quel utilisateur à lancé les logiciel ainsi que le numéro PID. - id Permet d avoir le numéro UID et GID des utilisateurs. Ternisien d Ouville Guillaume Juillet 2005 A- 37