ECOLE SUPERIEURE MULTINATION M ULTINATIONALE ALE
ECOLE SUPERIEURE POLYTECHNIQUE
DES TELECOMMUNICAT TELECOMMUNICATIONS IONS DEPARTEMENT GENIE INFORMATIQUE
MEMOIRE DE FIN DE CYCLE Pour l’obtention du
:
DIPLOME DE TECHNICIEN SUPERIEUR EN TELEINFORMATIQUE (DTST) Thème:
MISE EN PLACE D'UN PROXY SQUID SECURISE AVEC AUTHENTIFICATION LDAP Lieu de stage :
Ecole Supérieure Polytechnique de Dakar
Présenté par :
Djiby Thiaw
Encadré par :
M. Abdoulaye Sall
Année universitaire : 2009 – 2010
Mémoire de fin de cycle
Promotion
2008-2010
Table des matières
Table des matières .......................................... ................................................................. ............................................. ............................................. .............................. ....... 1 Table des figures .............................. ..................................................... ............................................. ............................................. ............................................. ...................... 3 Avant-propos ............................................ .................................................................. ............................................ ............................................ ...................................... ................ 4 I ntroduction ............................................. ................................................................... ............................................ ............................................ ...................................... ................ 5 CHAPITRE I : PRESENTATION PRESENTATION GENERALE .......................................... ................................................................. ........................... .... 6
................................................................ ............................................ ........................... ..... 6 P RESENTATION DE L’ESP ..........................................
I.1. I.1.1.
H ISTORIQUE .......................................... ................................................................ ............................................ ............................................. ....................... 6
I.1.2.
O RGANISATION ......................................... ............................................................... ............................................. .......................................... ................... 6
I.1.3.
................................................................ ............................................ ........................... ..... 8 O BJECTIFS ET MISSIONS .......................................... P RESENTATION DE L’ESMT .......................................... ................................................................. ............................................. ...................... 9
I.2.
I.2.1.
Historique ............................................ ................................................................... ............................................. ......................................... ................... 9
I.2.2.
.................................................................. ............................................. ......................................... ................... 9 Formations...........................................
I.2.3.
Organigramme......................................... ............................................................... ............................................ .................................... .............. 10
CHAPITRE II : PRESENTATION DES OUTILS NECESSAIRES ................................... ................................... 11 II.1.
L E PROXY SQUID ........................................... ................................................................. ............................................ .................................... .............. 11
................................................................ ............................................ ........................................... ..................... 11 II.1.1. Définition .......................................... II.1.2. Fonctionnement et Rôles ............................................ ................................................................... ....................................... ................ 11 II.1.2.1. Fonctionnement .......................................... ................................................................ ............................................ ......................... ... 11 II.1.2.2. Rôle ............................................ .................................................................. ............................................ ........................................... ..................... 12 II.2.
L’ .................................................................. ............................................ ................................ .......... 13 ANNUAIRE LDAP ............................................
II.2.1. Définition .......................................... ................................................................ ............................................ ........................................... ..................... 13 II.2.2. Fonctions .......................................... ................................................................ ............................................ ........................................... ..................... 13 II.2.3.
................................................................. ............................................ ........................................... ..................... 14 Structure ...........................................
CHAPITRE III : MISE EN ŒUVRE ............................................. .................................................................... ....................................... ................ 16 III.1.
M ISE EN PLACE DU PROXY SQUID ............................................. .................................................................... ............................ ..... 16
III.1.1.
Configuration matérielle et logicielle .......................................... ........................................................... ................. 16
III.1.2.
................................................................. ............................................ .................................... .............. 17 Installation ...........................................
III.1.2.1. Installation manuelle ............................................ ................................................................... .................................... ............. 17 III.1.2.2. Installation automatique ........................................... .................................................................. ................................ ......... 18 III.1.3.
................................................................. ............................................ ................................ .......... 18 Configuration...........................................
Présenté et soutenu par Djiby Thiaw
1
Mémoire de fin de cycle
Promotion
2008-2010
III.1.3.1. Configuration de la section réseau .......................................... ........................................................... ................. 19 III.1.3.2. Configuration de la taille du cache ............................................ .......................................................... .............. 19
.................................................. ..... 20 III.1.3.3. Chemin d’accès aux fichiers de SQUID ............................................. III.1.3.4. Comportement avec les applications externes .......................................... .......................................... 21 III.1.3.5. Les temps d’attente ............................................. .................................................................... ....................................... ................ 22 III.1.4.
................................................................. ............................................ ......................... ... 22 Contrôle des accès ...........................................
III.1.5.
Configuration manuelle des clients et test de fonctionnalité ....................... ....................... 24
III.1.6.
Forcer le passage passage par SQUID : proxy proxy transparent ..................................... ..................................... 27
III.2.
.................................................................. ................................ ......... 28 AUTHENTIFICATION AVEC LDAP ...........................................
III.2.1.
Installation de LDAP .......................................... ................................................................. ........................................... .................... 29
III.2.2.
Configuration de LDAP ............................................ ................................................................... .................................... ............. 29
III.2.3.
........................................................ .............. 30 Ajout d’entrées dans l’annuaire LDAP ..........................................
III.2.4.
........................................ 32 Configuration de SQUID pour l’authentification ........................................
III.3.
SQUID AVEC SQUIDGUARD ............................................ ................................................................... ....................................... ................ 33
III.3.1.
............................................................... ............................................. ........................................ ................. 33 Définition .........................................
III.3.2.
Installation et Configuration ............................................. .................................................................... ............................ ..... 34
III.4.
S ECURISATION DU PROXY ............................................ ................................................................... ........................................... .................... 38
III.4.1.
................................................................. ........................................... .................... 38 Association avec SSL ..........................................
III.4.1.1. SSL avec OpenLDAP ............................................ ................................................................... .................................... ............. 38 III.4.1.2. SSL avec SQUID ............................................ ................................................................... ........................................... .................... 39 III.4.2.
................................................................... ............................ ..... 40 Association avec un antivirus ............................................
Conclusion ........................................... .................................................................. ............................................. ............................................ ....................................... ................. 42 Glossaire ........................................... ................................................................. ............................................ ............................................ ........................................... ..................... 43 Bibliographie / « Wébographie » ..................................................... ........................................................................... ....................................... ................. 44
Présenté et soutenu par Djiby Thiaw
2
Mémoire de fin de cycle
Promotion
2008-2010
Table des figures
Figures : Figure 1: Organigramme de l’ESMT ............................................ ................................................................... ........................................... .................... 10 Figure 2: Principe de fonctionnement fonctionnement ............................................... ...................................................................... ....................................... ................ 12 Figure 3: Exemple de DIT .......................................... ................................................................. ............................................. ....................................... ................. 15 Figure 4: Configuration manuelle d’Internet Explorer ........................................... ............................................................ ................. 25 Figure 5: Accès à Internet interdit au client .......................... ................................................. .............................................. ............................ ..... 25 Figure 6: Premier téléchargement téléchargement du fichier ............................................ ................................................................... ................................ ......... 26 Figure 7: Deuxième téléchargement du fichier ............................. ................................................... ........................................... ..................... 27 Figure 8: Installation Installation annuaire LDAP ............................................... ...................................................................... ....................................... ................ 29 Figure 9: Fichier ldif des entrées ............................................ .................................................................. ............................................ ............................ ...... 31 Figure 10: Ajout des entrées dans l’annuaire ........................................... .................................................................. ................................ ......... 31 Figure 11: Authentification Authentification requise par le proxy ............................................................... ..................................................................... ...... 33 Figure 12: Configuration Configuration minimum de SquidGuard ................................ ...................................................... ................................ .......... 34 Figure 13: Blocage Internet des clients par SquidGuard............................................ .......................................................... .............. 35 Figure14: Les listes de destination destination de SquidGuard ......................................... ............................................................... ......................... ... 36 Figure 15: Exemple de configuration configuration de SquidGuard......................................... .............................................................. ..................... 37 Figure 16: Installation Installation de Clamav ...................................... ............................................................ ............................................ ................................ .......... 40
Présenté et soutenu par Djiby Thiaw
3
Mémoire de fin de cycle
Promotion
2008-2010
Avant-propos
L’école supérieure polytechnique (E.S.P) forme en deux années d’études des techniciens supérieurs, et en cinq ans des ingénieurs dans plusieurs spécialités. Dans le cadre de leur formation les étudiants de fin de chaque cycle sont tenus d’effectuer un stage pratique au sein d’une entreprise ou d’un service informatique. Ce stage est effectué dans le but :
De fournir aux étudiants la possibilité de mettre en œuvre les connaissances théoriques acquises tout au long de leur formation.
D’initier les futurs techniciens supérieurs aux réalités du milieu professionnel et de leur permettre de se faire la main sur des projets d’envergures. Au terme de ce stage un mémoire doit être rédigé sur un problème qui a été étudié
durant ce stage.
Présenté et soutenu par Djiby Thiaw
4
Mémoire de fin de cycle
Promotion
2008-2010
INTRODUCTION
L’informatique L’informatique est aujourd'hui devenue très ouverte au monde extérieur du fait de la démocratisation démocratisation de l'ordinateur l'ordinateur personnel et l'avènement l'avènement de l'Internet. l'Internet. Ce dernier est un outil incontournable et il réunit plein d’utilisateurs de part le monde. On compte environ 1,73 milliards d’utilisateurs d’utilisateurs (septembre 2009) et d’après Netcraft, société anglaise spécialisée dans la sécurité internet, il y aurait en janvier 2010 plus de 207 millions de sites web dans le monde. L'internet est alors de plus en plus accessible, mais il recèle de nombreux dangers, souvent souvent ignorés par beaucoup d’utilisateurs d’où se pose un problème de sécurité. Les réseaux locaux sont fréquemment reliés à Internet via des passerelles ou routeurs, ils utilisent le plus souvent le protocole TCP/IP. Dans notre étude, nous allons utiliser un proxy pour relier notre réseau local à l’Internet. l’Internet . Tous nos utilisateurs vont alors passer par notre proxy pour l’obtention de pages Web. Notre choix de proxy s’est porté sur SQUID qui , en plus d’être libre, libre , est très souple, léger et facile à mettre en place. Le rôle initial du serveur proxy ou serveur mandataire est de relayer des requêtes HTTP entre un poste client et un serveur. En plus de ce rôle, il peut jouer une fonction de sécurité en constituant une barrière entre Internet et notre réseau local. Notre serveur proxy SQUID va aussi être couplé à un annuaire LDAP pour l’authentification de s utilisateurs de notre réseau. Nous allons y intégrer un antivirus et aussi sécuriser l’authent ification des utilisateurs avec SSL pour plus de sécurité. Pour mener à bien ce travail, tr avail, nous allons dans un premier temps faire une présentation des deux grandes écoles l’ESP et l’ESMT , ensuite nous présenterons les différentes d’un technologies et outils nécessaires pour ce travail et nous terminerons par la mise en place d’un proxy SQUID sécurisé avec une authentification via LDAP.
Présenté et soutenu par Djiby Thiaw
5
Mémoire de fin de cycle
Promotion
2008-2010
CHAPITRE I
Chapitre I : Présentation générale I.1.
Présentation de l’ESP
I.1.1. Historique I.1.1. Historique
L’Ecole Supérieure Polytechnique Polytechnique de Dakar (ESP) est un établissement public à caractère administratif doté de la personnalité juridiq ue et de l’autonomie financière. L’École Supérieure Polytechnique fait partie intégrante de l’université Cheikh Anta DIOP de Dakar. Elle a été créée par la loi n° 94-78 du 24 novembre 1994. A l’origine, l’ESP regroupait en son sein :
La division industrielle de l’Ecole Nationale Supérieure Universitaire de Technologie (ENSUT)
L’Ecole Polytechnique de Thiès (EPT)
La section technique industrielle de l’Ecole Normale Supérieure d’ Enseignement Technique et Professionnel (ENSETP)
A la suite de diverses réformes intervenues, notamment la revitalisation de l’ENSETP, la création de l’Université de Thiès et le rattachement de l’Institut Supérieure de Gestion à l’ESP, l’Ecole Supérieure PPolytechnique olytechnique est seulement composée présentement de la division tertiaire de l’ex ENSUT. ENSUT .
I.1.2. Organisation
Etablissement public à vocation régionale, sous la tutelle du Ministère de l’Education, L’Ecole Supérieure Polytechnique est rattachée à l’Université Ch eikh Anta DIOP de Dakar. Elle assure des formations dans six départements qui la composent. Ces formations se font en cours du soir comme en cours du jour, aussi bien en formation initiale qu’en formation continue pour le compte des entreprises, sociétés et particuliers. Ces six départements sont : Présenté et soutenu par Djiby Thiaw
6
Mémoire de fin de cycle
Promotion
Le département Génie Informatique :
2008-2010
Ce département forme des Techniciens
supérieurs, Assistants ingénieurs, des Ingénieurs en Informatique, TéléInformatique et en Télécommunication. Les étudiants y mènent des activités de recherche dans les domaines mentionnés ci-dessous visant au perfectionnement permanent, à l'adaptation et à la participation à l'évolution scientifique et technologique. On y procède des expertises dans le cadre de la formation à l'intention des entreprises publiques et privées. Le département génie informatique offre les formations suivantes :
DUT (Diplôme Universitaire de Technologie)
Informatique
Télécoms et réseaux
DIC (Diplôme d'Ingénieur de Conception)
Informatique
DST (Diplôme Supérieur de Technologie)
Informatique
Téléinformatique en partenariat avec l’École Supérieure Multinationale de Télécommunication (ESMT)
DIT (Diplôme d'Ingénieur Technologue)
MP (Master Professionnel)
Informatique
Téléinformatique (en partenariat avec l’ESMT )
Formation à la carte
Logiciels libres
Génie logiciel
Le département génie Mécanique
Présenté et soutenu par Djiby Thiaw
7
Mémoire de fin de cycle
Le département Génie Civil
Le département Génie Electrique
Le département Génie Chimique et Biologie Appliquée
Le département Gestion
Promotion
2008-2010
I.1.3. Objectifs et missions
L’ESP a pour pour objectif et missions de :
Former tant sur le plan théorique que pratique des :
Techniciens Supérieurs
Ingénieurs Technologues
Ingénieurs de Conception
Managers en Gestion d’Entreprises
Docteurs
Dispenser un enseignement supérieur en vue de préparer aux fonctions d'encadrement d'encadrement dans :
la Production
la Recherche Appliquée
les Services
Organiser des enseignements enseignements et des activités de recherche visant :
au perfectionnement permanent
à l'adaptation et à la participation à
l'évolution scientifique et technologique
l’évolution économique et managériale
Procéder à des expertises à l'intention des entreprises publiques et privées
Pour plus de détails, détails , on peut se référer au site officiel de l’ESP (wébographie n°1).
Présenté et soutenu par Djiby Thiaw
8
Mémoire de fin de cycle
I.2.
Promotion
2008-2010
Présentation de l’ESMT
I.2.1. Historique I.2.1. Historique
L'Ecole Supérieure Multinationale des Télécommunications (ESMT) de Dakar a été créée en 1981 à l'initiative l'initiativ e de 7 pays d'Afrique de l'Ouest qui sont le Bénin, le Burkina Faso, le Mali, la Mauritanie, le Niger, le Sénégal et le Togo avec le concours de la coopération internationale. Cette genèse s'est faite dans le cadre d'un projet de programmes des nations unies pour le développement (PNUD). Depuis 1986, l'école dispose d'un statut diplomatique. En 1998, la Guinée Conakry s'ajoutait comme pays fondateur.
I.2.2. Formations I.2.2. Formations
L’ESMT dispose des cours en formation initiale ou continue. En formation initiale, nous avons plusieurs domaines d’études qui sont :
Le Cycle Préparatoire Intégré (CPI)
Le Diplôme de Technicien Supérieur (DTS) :
avec quatre spécialisations qui sont :
Technique Télécom, Technico-commercial, Réseau et Données, Téléinformatique ( en partenariat avec L’ESP)
La Licence Professionnelle (LP) :
avec deux spécialisations qui sont la Licence
Professionnelle en TIC et la Licence Générale en Science de l’Ingénieu r
Le Diplôme d’Ingénieur :
avec trois t rois spécialisations : Ingénieur In génieur des Travaux
Télécoms (IGTT), Ingénieur de Conception (INGC), Ingénieur en Téléinformatique (en partenariat avec l’ESP)
Le Mastère Spécialisé :
en Gestion des Télécoms, Réseaux Télécoms et
Téléinformatique Téléinformatique (en partenariat avec l’ESP)
Le Mastère Professionnel :
en Politique et Régulation des TIC et Réseaux et Services
TIC
Présenté et soutenu par Djiby Thiaw
9
Mémoire de fin de cycle
Promotion
2008-2010
L'ESMT développe aussi des sessions de formation continue. Sous forme de séminaires et d'ateliers, elles participent au perfectionnement des techniciens, ingénieurs et cadres des entreprises et institutions africaines.
I.2.3. Organigramme
Le schéma ci-dessous, tiré du site officiel de L’ESMT (wébographie n°2), illustre l’organisation et la structure de L’ESMT.
Figure 1: Organigramme de l’ESMT
Présenté et soutenu par Djiby Thiaw
10
Mémoire de fin de cycle
Promotion
2008-2010
CHAPITRE II
CHAPITRE II : Présentation des outils nécessaires II.1. Le proxy SQUID II.1.1.
Définition
Un serveur proxy aussi appelé appelé serveur mandataire mandataire est à l'origine une machine machine faisant fonction d'intermédiaire entre les ordinateurs d'un réseau local et internet. La plupart du temps le serveur proxy est utilisé pour le web, il s'agit alors d'un proxy HTTP. Il nous permettra ainsi de gérer l’accès à internet aux utilisa teurs de notre réseau local en fonction des heures d’accès, des ports de destination d’un service, d’IP sources, etc. Il permet aussi de mettre en cache les sites les plus visités afin d’accélérer le trafic. Comme serveur proxy, nous allons utiliser le serveur SQUID qui est un logiciel libre distribué selon les termes de la licence GNU GPL. Son rôle initial est de relayer des requêtes HTTP entre un poste client de notre réseau local et un serveur web se trouvant sur Internet. Il peut aussi assurer d’autres fonctions essentielles.
II.1.2.
Fonctionnement et Rôles
II.1.2.1. Fonctionnement
Le principe de fonctionnement basique d'un serveur proxy est assez simple : il s'agit d'un serveur "mandaté" par une application pour effectuer une requête sur Internet à sa place. Ainsi, lorsqu'un utilisateur se connecte à internet à l'aide d'une application cliente configurée pour utiliser un serveur proxy, celle-ci va se connecter en premier lieu au serveur proxy et lui donner sa requête. Le serveur proxy va alors se connecter au serveur que l'application cliente cherche à joindre et lui transmettre la requête. Le serveur va ensuite donner sa réponse au proxy, qui va à son tour la transmettre à l'application cliente. Les objets consultés par les clients sur internet, sont stockés en cache disque par le serveur. À partir du deuxième accès, la
Présenté et soutenu par Djiby Thiaw
11
Mémoire de fin de cycle
Promotion
2008-2010
lecture se fera en cache, au lieu d'être réalisée sur le serveur d'origine. De ce fait il permet d'accélérer nos connexions à l'internet en plaçant en cache les documents les plus consultés.
Figure 2: Principe de fonctionnement
II.1.2.2. Rôle
Le serveur proxy SQUID peut assurer plusieurs rôles parmi lesquels :
Le rôle de cache :
En jargon informatique, une mémoire cache sert à conserver
localement des informations qui ont une certaine probabilité de servir à nouveau à court terme. Un serveur proxy stocke provisoirement les pages web que les utilisateurs vont chercher sur Internet. Si un internaute requiert une information qui se trouve déjà dans le cache, il sera servi plus rapidement.
Le rôle d’enregistrement :
Comme tout serveur qui se respecte, un proxy génère un
fichier journal (log file). On y trouve la trace de toutes les requêtes effectuées par tous les postes clients dépendant du serveur en question.
Le rôle de filtre :
On peut configurer un serveur proxy de telle sorte qu'il examine le
contenu des paquets qu'il reçoit pour le compte des clients, et qu'il refuse de transmettre ceux qui ne répondent pas à certains critères.
Le rôle de sécurité :
En y ajoutant certains logiciels de sécurité, le serveur proxy
assure ainsi des fonctions de sécurité pour le réseau local.
Présenté et soutenu par Djiby Thiaw
12
Mémoire de fin de cycle
Promotion
L’authentification : SQUID
2008-2010
permet d'authentifier les clients avant qu'ils accèdent à la
ressource qu'ils demandent. Nous utiliserons un serveur LDAP pour authentifier nos utilisateurs.
II.2. L’annuaire LDAP II.2.1.
Définition
Un annuaire est un recueil de données dont le but est de pouvoir retrouver facilement des ressources (généralement des personnes ou des organisations) à l'aide d'un nombre limité de critères. Cette série d'articles s'intéresse tout particulièrement à un type spécifique d'annuaires: les annuaires électroniques. L'implémentation d’un annuaire annuaire électronique peut être totalement différente d'un serveur à un autre, c'est pourquoi il a été nécessaire de définir une interface normalisée permettant d'accéder de façon standard aux différents services de l'annuaire. C'est le rôle du protocole LDAP ( Lightweight Directory Access Protocol), dont le rôle est uniquement de fournir un moyen unique (standard ouvert) d'effectuer des requêtes sur un annuaire (compatible LDAP). LDAP est un protocole basé sur TCP/IP qui permet de partager des bases de données sur un réseau interne ou externe. Elles peuvent contenir tout type d’informations, des informations sur les personnes, sur des ressources. Dans notre cas, nous utilisons l’annuaire Open Source appelé OpenLDAP qui est développé sous licence GNU GPL. Il nous est possible de faire des recherches dans la base en employant plusieurs critères et aussi de faire des modifications et suppressions. Mais contrairement à un SGBD, un annuaire est prévu pour être plus sollicité en lecture qu'en écriture. Cela signifie qu'un annuaire est conçu pour être plus souvent consulté que mis à jour. En effet, comme un annuaire est beaucoup plus lu que modifier, il a été optimisé en lecture et ne possède pas les mécanismes mécanismes de transaction complexe que les SGBD possèdent pour traiter de gros volumes de données.
II.2.2.
Fonctions
Comme l'annuaire téléphonique, la première fonction de l'annuaire LDAP est de retrouver facilement les coordonnées d'une personne : son adresse électronique, son adresse professionnelle, son téléphone professionnel en fonction de différents critères de recherche. Présenté et soutenu par Djiby Thiaw
13
Mémoire de fin de cycle
Promotion
2008-2010
De nombreuses applications nécessitant une authentification sont aujourd’hui capables d’interroger un annuaire LDAP pour vérifier l’identité d’un utilisateur grâce à un couple login et mot de passe. C’est C’es t cette fonction qui va le plus nous intéresser dans notre étude. Grâce à cet annuaire, notre proxy SQUID va pouvoir authentifier ses utilisateurs.
II.2.3.
Structure
Les données LDAP sont structurées dans une arborescence hiérarchique qu'on peut comparer au système syst ème de fichier Unix. Chaque nœud de l'arbre correspond à une entrée de l'annuaire ou Directory Service Entry (DSE) et au sommet de cette arbre, appelé Directory Information Tree (DIT), se trouve la racine ou suffixe. Ce modèle est en fait repris de X500, mais contrairement à ce dernier, conçu pour rendre un service d'annuaire mondial (ce que le DNS fait par exemple pour les noms de machines de l'Internet), l'espace de nommage d'un annuaire LDAP n'est pas inscrit dans un contexte global. Les entrées correspondent à des objets abstraits ou issus du monde réel, comme une personne, une imprimante, ou des paramètres de configuration. Elles contiennent un certain nombre de champs appelés attributs dans lesquelles sont stockées des valeurs. Chaque serveur possède une entrée spéciale, appelée root Directory Specific Entry (rootDSE) qui contient la description description de l'arbre et de son contenu. Un objet est constitué d'un ensemble de paires clés/valeurs appelées attributs permettant de définir de façon unique les caractéristiques de l'objet à stocker. Par analogie avec la terminologie objet on parle ainsi de classe d'objet pour désigner la structure d'un objet, c'est-à-dire l'ensemble des attributs qu'il doit comporter. De cette façon un objet est un ensemble d'attributs avec des valeurs particulières. LDAP utilise le format LDAP Data Interchange Format (LDIF) qui permet de représenter les données LDAP sous format texte standardisé, il est utilisé pour afficher ou modifier les données de la base.
Présenté et soutenu par Djiby Thiaw
14
Mémoire de fin de cycle
Promotion
2008-2010
dc=esp, dc=sn
ou=profs
cn=sall uid=100
ou=etudiants
cn=ouya uid=101
cn=djiby uid=200
cn=fatou uid=201
Dc : domain component Ou : organizational units Cn : common name Uid : user identifier Figure 3: Exemple de DIT
Présenté et soutenu par Djiby Thiaw
15
Mémoire de fin de cycle
Promotion
2008-2010
CHAPITRE III
Chapitre III : Mise en œuvre III.1. Mise Mise en place du proxy SQUID III.1.1.
Configuration matérielle et logicielle
Avant d’installer et d’utiliser SQUID, il est recommandé de bien choisir son matériel et le système d’exploitation du serveur. Durant son lancement, SQUID a besoin de faire beaucoup d’actions, notamment en rapport avec les caches, qui seront consommateurs de CPU. Ainsi, le matériel minimum recommandé est un Pentium III 550MHz, la RAM est un composant vital pour SQUID car il réside en mémoire RAM et y stocke ses composants et les objets les plus demandés par les clients. Lorsque le cache est activé, il faut compter 10Mb de RAM par GIGA de données en cache. On doit alors prévoir de l'espace disque suffisante pour le stockage des données manipulées par SQUID notamment le cache disque, les logs etc.. Il faut ainsi noter que le choix de la configuration matérielle du serveur est important. Le choix d’une bonne carte réseau est nécessaire parce qu’une carte réseau sous dimensionnée par rapport au réseau sur lequel est branché le Proxy provoquerait très rapidement un engorgement important et ralentira les demandes des clients. Il est donc conseil lé d’utiliser au minimum une carte réseau 100Mbps. Il faut aussi bien vérifier auparavant que la machine redémarre bien toute seule s'il y a coupure d'électricité en vérifiant dans le BIOS si il y a une option pour mettre en route la machine au rétablissement du courant, si ce n'est pas le cas l'utilisation d'une telle machine est à proscrire. Concernant les systèmes d’exploitation, SQUID est disponible sur beaucoup d’architectures et systèmes, en particulier les différentes distributions Linux. Il est pré férable d'utiliser une version de Linux récente et stable. Dans notre étude, nous installerons SQUID sur la dernière version de Ubuntu actuellement disponible qui est la 10.04. Notre réseau local est le 192.168.2.0 et notre proxy va s’appeler firewall_esp.
Présenté et soutenu par Djiby Thiaw
16
Mémoire de fin de cycle
III.1.2.
Promotion
2008-2010
Installation
III.1.2.1. Installation Installation manuelle
Avant de commencer, il faut au préalable télécharger la dernière version stable de SQUID. On peut l'acquérir sur le site officiel de SQUID qui est http://www.squid-cache.org http://www.squid-cache.org.. La dernière version actuelle stable est la version 2.7.STABLE7. Une fois le logiciel au format tar.gz (c'est à dire compressé sous ce format) téléchargé, on pourra alors l'installer et on suppose que le fichier décompressé sera placé dans le répertoire
/usr/local/src.
On le
décompresse via la commande : #tar -zxvf squid-2.7.STABLE7.tar.gz squid-2.7.STABLE7.tar.gz --directory=/usr/local/src --directory=/usr/local/src
On doit obtenir ce répertoire répertoir e : /usr/local/src/squid-2.7.STABLE7. Il convient maintenant de compiler SQUID. On se place dans le répertoire de SQUID : #cd /usr/local/src/squid /usr/local/src/squid
On passe ensuite à la configuration des options de compilation. Squid sera par défaut installé dans le répertoire /usr/local/squid mais on peut utiliser un autre répertoire via l'option --prefix. Si on souhaite avoir les messages d'erreurs en français, on ajoute l’option --enable-err-language=French mais on peut aussi faire cela au niveau de la configuration de SQUID. La commande pour la compilation est alors : #./configure --prefix=/usr/local/squid --prefix=/usr/local/squid --enable-err--enable-errlanguage=French
Si tout c'est bien passé, il ne reste plus qu'à compiler avec la commande : #make all
Puis procéder à l’installation avec la commande : #make install
Le fichier INSTALL situé dans la racine du répertoire / usr/local/src/squid2.7.STABLE7 reprend en partie ce qui vient d'être expliqué.
A la fin de l'installation, l'installation, les répertoires r épertoires suivants suivants seront créés :
Présenté et soutenu par Djiby Thiaw
17
Mémoire de fin de cycle
Promotion
2008-2010
/usr/local/squid : répertoire de base de SQUID /usr/local/squid/etc : répertoire contenant la configuration de SQUID /usr/local/squid/bin : répertoire contenant les binaires et les scripts /usr/local/squid/logs : répertoire contenant les logs
III.1.2.2. Installation automatique
L'installation automatique de SQUID est relativement facile. Il suffit juste de disposer d’une connexion internet, de se connecter en tan t que root sur le terminal de la machine et de taper la commande : #apt-get install squid
De cette manière, c'est le système qui se charge de télécharger tous les fichiers nécessaires c'est à dire la dernière version stable disponible dans les dépôts et éventuellement les dépendances s'il y en a. L'installation automatique est ainsi recommandée car cette dernière se charge d'acquérir à notre place tous les fichiers nécessaires et aussi de les placer à l'endroit qu'il faut. Le fichier de configuration de SQUID se trouvera dans le répertoire /etc/squid et portera le nom de squid.conf. Les logs se trouveront dans le répertoire /var/log/squid et le démon dans le répertoire /etc/init.d/ sous le nom de squid.
III.1.3.
SQUID
Configuration
se
configure
via
un
unique
fichier
de
configuration
qui
etc/squid/squid.conf. Celui-ci est chargé au lancement de SQUID qui s'efforcera / etc/squid/squid.conf
alors de refléter ce dernier. Chaque ligne du fichier est de la forme suivante : option paramètre [paramètre ...]
Les lignes débutant par un '#' sont des commentaires. Les options non définies auront toujours une valeur par défaut. Toutes les options de ce fichier sont dispersées dans plusieurs parties distinctes. Nous détaillerons les options les plus intéressantes de ces parties. Notons que le fichier de base fourni avec les sources est très largement commenté et contient par défaut 4963 lignes. Pour plus de renseignement renseignement et des paramètres plus poussés, il est donc préférable de consulter la documentation officielle. Présenté et soutenu par Djiby Thiaw
18
Mémoire de fin de cycle
Promotion
2008-2010
III.1.3.1. Configuration Configuration de la section réseau
Cette section concerne toutes les configurations réseau de SQUID ayant trait aux adresses IP et ports de communication. Ces configurations réseau concernent les communications entre SQUID et les serveurs distants, les clients et les caches distants. http_port : définit le port d'écoute de Squid pour les requêtes HTTP. Par défaut, le port
sera 3128. Pour plus de sécurité, nous changeons ce port par défaut et nous prenons par exemple le port 8080. http_port 8080
icp_port : définit le port d'émission et d'écoute des requêtes ICP. Par défaut, le port est
3130. Ceci nous permet de communiquer avec des proxy parents ou voisins. La La valeur 0 permet de ne pas utiliser ce service visible_hostname : Nous indiquons ici le nom de notre serveur proxy. Nous
l’appelons firewall_esp error_directory : Nous indiquins via cette option le répertoire où se trouvent les
messages
d'erreurs
destinés
à
l'utilisateur. l'utilisateur.
Par
défaut,
on
a:
/usr/share/squid/errors/en et pour avoir ces messages en français, on met le
répertoire /usr/share/squid/errors/fr à la place. Les messages d'erreurs qui apparaitront sur le navigateur du client seront ainsi en français.
III.1.3.2. Configuration de la taille du cache
cache_mem : correspond au 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. Nous décidons d'utiliser 100MB. cache_mem 100 MB
maximum_object_size: permet de spécifier la taille maximale des objets qui seront
stockés dans le cache. La taille par défaut est de 20480 KB.
Présenté et soutenu par Djiby Thiaw
19
Mémoire de fin de cycle
Promotion
2008-2010
minimum_object_size: permet de spécifier la taille minimale des objets qui seront
stockés dans le cache. La taille par défaut est de 0 KB ce qui signifie qu’il n’y a pas de minimum pour les objets. ipcache_size: permet de spécifier le nombre d'adresses IP qui seront enregistrées. Sa
valeur par défaut est de 1024
III.1.3.3. Chemin d’accès aux fichiers de SQUID Cache_dir Type RépertoireSource MOctets Level1 Level2 :
permet de définir un cache. il est possible de définir plusieurs fois cette option afin de multiplier le nombre de cache. Détaillons les options de ce paramètre :
Type : le type de stockage qui sera utilisé par Squid pour écrire ses données. Ce
paramètre modifie le comportement de SQUID lors de l'écriture sur le disque, ses accès au disque, sa répartition de données sur l'espace qui lui est consacrée, etc.. Une liste des types supportés est détaillée dans le fichier de configuration de SQUID. Le type utilisé par défaut est ufs
RépertoireSource : le répertoire source de l'arborescence du cache. Le cache
de SQUID se présente sous forme d'une arborescence dans laquelle les objets sont répartis
MOctets : la taille en Mo à réserver sur le disque pour ce cache ;
Level1 : le nombre de répertoire de niveau 1 dans l'arborescence du cache.
Level2 : le nombre de répertoire de niveau 2 dans l'arborescence du cache.
Par défaut, on a un cache de 100 MB se trouvant dans le répertoire /var/spool/squid. On peut ajouter si on veut un autre cache avec le répertoire de son choix avec la taille que l'on veut. cache_dir ufs /var/spool/squid2 /var/spool/squid2 1000 16 256
Présenté et soutenu par Djiby Thiaw
20
Mémoire de fin de cycle
Promotion
2008-2010
access_log DirectoryPath/filename : c’est le chemin vers le fichier de access.log qui contient tous les accès au cache. Par défaut c'est le fichier /var/log/squid/access.log
cache_log DirectoryPath/filename : idem que pour access_log avec le
fichier /var/log/squid/cache.log qui contient toutes les informations des activités de SQUID. cache_store_log DirectoryPath/filename : idem que pour access_log
avec le fichier /var/log/squid/store.log qui contient toutes les entrées et sorties des objets dans le cache Pour ces trois options précédentes, si on ne souhaite pas avoir de log, on met le paramètre none à la place du nom de fichier.
debug_options : c'est le niveau de debug. Indiquer 9 pour avoir toutes les traces à la
place de 1 utilisé par défaut. Attention cela donne de gros fichiers.
III.1.3.4. Comportement avec les applications applications externes
Cette section définit certains paramètres qui modifieront le comportement de SQUID envers les applications qui lui sont extérieurs comme les serveurs distant ou ses applications déléguées. ftp_user : permet de spécifier quel sera le nom d'utilisateur envoyé à un serveur FTP par
SQUID lors d'une connexion en anonymous ftp_list_width : permet de définir la longueur maximale des noms de fichier dans une
liste. Une fois cette taille dépassée, le nom sera tronqué et des points de suspensions ajoutés ftp_passive on|off : permet de spécifier le mode de connexion FTP utilisé dns_children : le nombre de processus de demande de DNS résidant en mémoire. Plus
le serveur sera sollicité, plus ce nombre devra être grand dns_timeout : permet de spécifier un timeout à partir duquel SQUID considèrera le
serveur DNS distant comme étant indisponible
Présenté et soutenu par Djiby Thiaw
21
Mémoire de fin de cycle
Promotion
2008-2010
dns_nameservers : permet de définir une liste d'adresse IP de serveur DNS qui
remplacera celle lue par défaut dans le fichier de configuration /etc/resolv.conf sous Linux authenticate_program : permet de spécifier le chemin vers le programme chargé de
l'authentification des utilisateurs. En fonction du type d'authentification, un chemin vers le fichier de profil peut être nécessaire en deuxième option authenticate_children : le nombre de processus d'authentification à conserver en
mémoire RAM.
III.1.3.5. Les temps d’attente
Cette section permet de configurer les différents timeouts de SQUID connect_timeout : le temps d'attente d'une réponse du serveur distant avant de
retourner une page d'erreur de type "connection timeout" au client ; request_timeout : le temps d'attente de Squid entre deux requêtes HTTP avant de
fermer la connexion ; client_lifetime : le temps maximum qu'un client a le droit de rester connecter à
SQUID pconn_timeout : le temps d'attente de SQUID avant de fermer une connexion de type
persistante ; ident_timeout : le temps maximum d'attente d'une authentification.
III.1.4.
Contrôle des accès
Il s’agit des options concernant les restrictions d’accès aux ressources. Pour contrôler tout ce qui passe par votre serveur proxy, vous pouvez utiliser ce que l'on appelle les ACL (Access Control List). Les ACL sont des règles que le serveur applique. Cela permet par exemple d'autoriser ou d'interdire certaines transactions. On peut autoriser ou interdire en
Présenté et soutenu par Djiby Thiaw
22
Mémoire de fin de cycle
Promotion
2008-2010
fonction du domaine, du protocole, de l'adresse IP, du numéro de port, d'un mot et aussi limiter l’accès sur des plages horaires. La syntaxe d'une ACL est la suivante : acl aclname acltype string[string2] string[string2] http_access allow|deny aclname aclname : peut être n'importe quel nom attribué par l'utilisateur à un élément ACL 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
dst (pour la destination) : idem que pour src, mais on vise l'adresse IP de
l'ordinateur cible.
srcdomain : Le domaine du client
dstdomain : Le domaine de destination
time : heure du jour et jour de la semaine
url_regex : Une chaîne contenue dans l'URL
urlpath_regex : Une chaîne comparée avec le chemin de l'URL
proto : Pour le protocole
proxy_auth : Procédé externe d'authentification d'un utilisateur
maxconn : Nombre maximum de connexions pour une adresse IP cliente
string[string2]: paramètres de l’ACL Exemple 1: Interdire l'accès à un domaine
: supposons que nous souhaitions interdire l'accès
à un domaine (par exemple le domaine pas_beau.fr). On a donc acl domaine_bloqué dstdomain pas_beau.fr http_access deny domaine_bloqué domaine_bloqué
Exemple 2: interdire l'accès aux pages contenant le mot jeu.
acl bloqué_jeu url_regex jeu http_access deny bloqué_jeu
Présenté et soutenu par Djiby Thiaw
23
Mémoire de fin de cycle
Promotion
2008-2010
Attention url_regex est sensible aux majuscules/minuscules. Pour interdire JEU, il faut aussi ajouter JEU dans votre ACL. Il n'est pas besoin de réécrire toute l'ACL. On peut ajouter JEU derrière jeu en laissant un blanc comme séparation (cela correspondant à l'opérateur logique OU). Exemple 3: Interdire les accès pendant les pl ages horaires 8h−12h et 14h−18h en semaine .
“S Sunday M Monday T Tuesday W Wednesday H Thursday F Friday A Saturday ” acl matin time MTWH 08:00−12:00 acl soir time MTWH 14:00−18:00 http_access deny matin reseau_esp http_access deny soir reseau_esp
III.1.5.
Configuration manuelle des clients et test de fonctionnalité
Nous allons procéder à une configuration manuelle des clients c'est-à-dire des utilisateurs de notre proxy. Pour ce faire, il faut indiquer au navigateur du client de passer par notre proxy pour pouvoir accéder à l’internet. Nous allons faire la configuration sur les deux navigateurs les plus utilisés au monde qui sont Mozilla Firefox et Internet Explorer
Mozilla Firefox
1. 2. 3. 4. 5.
Au niveau du menu navigateur, allez dans Outils => Options Cliquez sur l’onglet Avancé Sélectionner le sous-onglet Réseau Cliquer sur le bouton Paramètres Et enfin sélectionner Configuration manuelle du proxy puis remplir les champs en donnant l’adresse IP du proxy et le port
Internet Explorer
1. 2. 3. 4.
Au niveau du menu navigateur, allez dans Outils => Options Internet Cliquez sur l’onglet Connexions Cliquez sur Paramètres Réseau Et enfin sélectionner Utilisez un serveur proxy… puis remplir les champs en donnant l’adresse l’adresse IP du proxy p roxy et le port
Présenté et soutenu par Djiby Thiaw
24
Mémoire de fin de cycle
Promotion
2008-2010
Figure 4: Configuration manuelle d’Internet Explorer
De cette manière, nos clients sont configurés pour passer par notre proxy avant de pouvoir accéder à internet. Mais par défaut, SQUID bloque toute les connexions vers internet et l’image ci-dessous ci-dessous nous le démontre.
Figure 5: Accès à Internet interdit au client
Présenté et soutenu par Djiby Thiaw
25
Mémoire de fin de cycle
Promotion
2008-2010
Pour que nos clients puissent bénéficier d’une connexion à Internet, nous devons éditer le fichier squid.conf en déclarant notre réseau local et permettre la connexion à internet. On y ajoute ces lignes : acl reseau_esp src 192.168.2.0/255.255.255.0 http_access allow reseau_esp reseau_esp est le nom ACL et la ligne suivante est la règle qui s'applique. 192.168.2.0 désigne l'adresse réseau dont le masque correspond à 255.255.255.0. La
ligne suivante autorise l’accès à internet à l’acl du nom de reseau_esp c'est-à-dire la ligne précédente. On quitte le fichier en enregistrant les modifications apportées puis on redémarre le serveur via la commande : #/etc/init.d/squid #/etc/init.d/squid restart
Notre serveur est alors opérationnel pour notre réseau local et joue bien son rôle. Pour en avoir la preuve, on décide de télécharger deux fois de suite un même fichier sur le même site et aussi on supprime complètement ce fichier de notre disque dur avant de le retélécharger.
Figure 6: Premier téléchargement du fichier
Présenté et soutenu par Djiby Thiaw
26
Mémoire de fin de cycle
Promotion
2008-2010
Figure 7: Deuxième téléchargement du fichier
On remarque que le téléchargement du fichier de 18,5 Mo a duré pour la première fois 3min43s et que la vitesse de téléchargement a été en moyenne de 85,2 Ko/s. Pour le second téléchargement, ce temps a beaucoup baissé et est de 1min2s avec une augmentation de la vitesse moyenne de téléchargement qui est pour cette fois ci de 306 Ko/s. On en déduit alors que notre proxy fonctionne bien et joue son rôle de cache car pour le second téléchargement le temps a fortement diminué et la vitesse moyenne qui est de 306 Ko/s nous montre que le téléchargement s’est effectué depuis notre serveur proxy qui a mis en cache ce fichier lors du 1 er téléchargement.
III.1.6.
Forcer le passage par SQUID : proxy transparent
Utiliser un proxy nécessite normalemen t qu’on configure manuellement les navigateurs de tous nos utilisateurs de manière à ce qu'ils interrogent toujours le proxy, quelle que soit la cible. Cette tâche s’avère alors difficile si nous avons un très grand nombre d’utilisateurs et aussi nos utilisateurs ont la main sur ce paramétrage, et pourront probablement passer outre le proxy, s'ils le décident, contournant par le fait toutes vos stratégies. Il existe cependant un moyen d'éviter ceci en rendant le proxy transparent, ce qui
Présenté et soutenu par Djiby Thiaw
27
Mémoire de fin de cycle
Promotion
2008-2010
veut dire que configurés ou non, les requêtes http passeront quand même par le proxy. Pour arriver à ce résultat, il faut réaliser deux opérations :
Rediriger en PREROUTING les ports 80 et 43 vers le port proxy sur son port 8080 et ceci se fait sans problèmes sur notre routeur NAT avec IPtables
Configurer correctement SQUID pour qu'il interprète convenablement convenablement les requêtes HTTP qu'il reçoit
Voici la règle à ajouter sur notre passerelle, en admettant que notre réseau est dans 192.168.2.0 et que notre proxy possède l'adresse 192.168.2.3. Nous supposons que le proxy est installé sur la machine qui assure également le rôle de passerelle : #iptables -t nat -A PREROUTING -s 192.168.2.0/255.255.255.0 192.168.2.0/255.255.255.0 -p tcp –m multiport --dport 80,43 -j REDIRECT --to-ports 8080
Le client HTTP n'agit pas de la même manière suivant qu'il a affaire à un proxy ou non. Ici, le client ne sait pas qu'il y a un proxy, il agit donc comme s'il interrogeait directement le serveur cible, alors que ce n'est pas le cas. Ca ne fonctionnera bien entendu pas, si SQUID n'est pas informé de cette situation. Mais Squid sait contourner la difficulté, de façon très simple depuis la version 2.6 au moins, en ajoutant simplement le mot « transparent » sur la ligne de définition du port utilisé : http_port 8080 transparent
III.2. Authentification Authentification avec LDAP Dans la mise en œuvre jusqu'ici, nous ne faisions pas de contrôle sur les utilisateurs, seulement sur les IPs des machines clientes. Nous pouvons identifier nos utilisateurs lorsqu'ils vont surfer sur le Net. Dans ce cas, il nous faudra mettre en place un système d'identification. Il y a plusieurs méthodes disponibles pour authentifier nos utilisateurs du proxy. Elles font toutes appel à un programme extérieur, différent suivant le moyen choisi. Nous allons utiliser l’annuaire LDAP pour cette authentification.
Présenté et soutenu par Djiby Thiaw
28
Mémoire de fin de cycle
III.2.1.
Promotion
2008-2010
Installation de LDAP
Comme annuaire LDAP, nous allons utiliser le logiciel OpenLDAP qui est un logiciel libre basé sous la licence GNU GPL. La dernière version actuelle stable est le 2.4.23. Nous allons procéder à une installation automatique afin d’obtenir toutes les dépendances nécessaires. L’installation se fait via la commande : #apt-get install slapd
Figure 8: Installation annuaire LDAP
On remarque ainsi que le paquet slapd est installé avec quatre autres paquets supplémentaires qui participent au bon fonctionnement de l’annuaire.
III.2.2.
Configuration de LDAP
Il faut tout d’abord indiquer dans le fichier /etc/default/slapd la localisation du fichier de configuration de OpenLdap qui est /etc/ldap/slapd.conf. Pour le faire, on doit ajouter cette ligne dans ce fichier : SLAPD_CONF="/etc/ldap/slapd.conf"
Il faut par la suite modifier le fichier /etc/ldap/slapd.conf. Il faut autoriser les clients qui utilisent le protocole LDAPv2 (par défaut seuls ceux utilisant LDAPv3 sont autorisés). En effet, SQUID peut utiliser LDAPv2, donc dans ce cas il faut décommenter cette ligne qui devient indispensable : allow bind_v2
On ajoute aussi ces lignes suivantes : Présenté et soutenu par Djiby Thiaw
29
Mémoire de fin de cycle
Promotion
2008-2010
suffix "dc=esp,dc=sn" "dc=esp,dc=sn" rootdn "cn=admin,dc=esp,dc=sn" "cn=admin,dc=esp,dc=sn" directory "/var/lib/ldap" "/var/lib/ldap" rootpw secret
Pour la dernière ligne, il faut remplacer secret par un vrai mot de passe qui apparait alors en clair ce qui est déconseillé. On peut crypter ce mot de passe via la commande : #slappasswd
Puis on copie le résultat de cette commande à la place de secret. On modifie enfin le fichier /etc/ldap/ldap.conf et on ajoute ces deux lignes : BASE dc=esp,dc=sn URI ldap://127.0.0.1:389 ldap://127.0.0.1:389
Pour terminer, on redémarre le serveur : /etc/init.d/slapd /etc/init.d/slapd restart
III.2.3.
Ajout d’entrées dans l’annuaire LDAP
Ensuite, on peut consulter l'annuaire, ajouter, modifier, ou retirer des entrées au moyen des commandes ldapsearch, ldapadd, ldapmodify, ldapdelete (fournis avec OpenLDAP
) et de fichiers LDIF (LDAP Data Interchange Format) ou bien à l'aide d'outils
graphiques comme l'interface php phpLDAPadmin. On définit par exemple l’annuaire ci dessous avec ce fichier ldif :
Présenté et soutenu par Djiby Thiaw
30
Mémoire de fin de cycle
Promotion
2008-2010
Figure 9: Fichier ldif des entrées
Puis on ajoute ces informations dans l’annua ire de la manière ci-dessous :
Figure 10: Ajout des entrées dans l’annuaire
On peut aussi ajouter d’autres utilisateurs grâce aux fichiers ldif ou bien à l’aide d’outils graphiques tel que phpLDAPadmin.
Présenté et soutenu par Djiby Thiaw
31
Mémoire de fin de cycle
III.2.4.
Promotion
2008-2010
Configuration Configuration de SQUID pour l’authentification l’authentification
Pour la configuration de SQUID, on utilise l’option squid_ldap_auth qui est ce qu'on appelle un « authentication helper » , c'est-à-dire un petit programme qui détermine si un couple login/pass est correct : dans ce cas-ci, il communique avec un annuaire LDAP afin de voir s'il existe une entrée dans l'annuaire ayant le login indiqué dans un champ uid (ou cn ou autre si on le précise), et le pass correspondant dans un champ userPassword. Ce programme doit renvoyer la chaîne de caractères "OK" en cas de succès et "ERR" en cas d'échec. On ajoute dans squid.conf les lignes suivantes : auth_param basic program /usr/lib/squid/ldap_auth -b ou=profs,dc=esp,dc=sn ou=profs,dc=esp,dc=sn -u cn –h 127.0.0.1 auth_param basic children 5 auth_param basic realm Identification requise par firewall_esp auth_param basic credentialsttl 2 hours
Les paramètres utilisés pour squid_ldap_auth sont :
-b ou=profs,dc=esp,dc=sn ou=profs,dc=esp,dc=sn : indique la base de l'arborescence de l'annuaire à
partir de laquelle on recherche l'utilisateur qui essaie de s'authentifier
-u cn : indique le type du login que l'on tape pour s'authentifier (par exemple cn,
uid...)
-h 127.0.0.1 : adresse du serveur LDAP, il est ici sur la même machine que le
proxy Les trois dernières lignes servent à :
auth_param basic children 5 : le nombre de processus d'authentification
qui seront lancés en permanence sur le serveur, chacun ne pouvant servir qu'une demande à la fois
auth_param
basic
realm
Identification
requise
par
firewall_esp : la chaîne de caractères qui suit realm sera affichée par le
navigateur utilisé lors de la demande d'authentification, elle permet donc d'indiquer à l'utilisateur que c'est au proxy qu'il essaie de se connecter
auth_param basic credentialsttl 2 hours : la durée au bout de
laquelle l’ authentication helper sera relancé. Cela ne veut pas dire que la fenêtre demandant le login/pass va se réafficher (cela ne dépend pas de SQUID, mais du navigateur utilisé). Concrètement, au bout du temps indiqué, il y aura de nouveau un Présenté et soutenu par Djiby Thiaw
32
Mémoire de fin de cycle
Promotion
2008-2010
échange de paquets LDAP entre Squid et le serveur LDAP pour authentifier l'utilisateur, et éventuellement lui interdire l'accès. Pour terminer on ajoute ces deux règles acl et on redémarre le serveur : acl password proxy_auth REQUIRED http_access allow password
Cette règle indique que tous les utilisateurs authentifiés auront un accès http mais suivant sa position par rapport à d'autres règles d'accès, cet accès sera peut-être restreint. La capture ci-dessous illustre bien cette authentification.
Figure 11: Authentification requise par le proxy
III.3.SQUID III.3. SQUID avec SquidGuard III.3.1.
Définition
SquidGuard est un module pour le serveur proxy SQUID. Ce module ajoute des fonctionnalités plus avancées en matière de filtrage basé sur une liste noire de sites web à bloquer et une liste blanche de sites à ignorer. SquidGuard est ainsi un programme redirecteur distribué sous licence GPL, GPL , c’est-à-dire c’est-à-dire que toutes les trames HTTP seront redirigées vers SquidGuard pour être analysées puis filtrées. Il est néce ssaire pour cela d’indiquer à Squid que les trames devront transitées par SquidGuard avant de passer dans le cache du Proxy. La fonction de filtre de SQUID est alors optimisée dans le programme SquidGuard ce qui lui permet d’analyser des listes d’URLS en un temps record. Une fois lancé, SquidGuard apparaîtra comme un processus fils de SQUID. Présenté et soutenu par Djiby Thiaw
33
Mémoire de fin de cycle
III.3.2.
Promotion
2008-2010
Installation et Configuration
L’installation se fait de manière automatique et simple avec la commande : #apt-get install squidguard
L'installation a créé un répertoire /var/lib/squidguard/db, mais il est vide. Il est destiné à contenir nos listes noires et blanches et deux scripts cgi dont nous verrons l'utilité plus tard. Elle crée aussi le fichier de configuration /etc/squid/squidGuard.conf. Nous n'avons pas encore les moyens de travailler efficacement, nous n'avons pas encore de base de données de destinations, mais nous pouvons déjà écrire un fichier de configuration pour SquidGuard, pour nous mettre un peu dans le bain.
Figure 12: Configuration minimum de SquidGuard
Les deux premières lignes indiquent à SquidGuard où trouver la base de données des listes (que nous n’avons pas encore) ainsi que l’endroit où l’on désire récupérer les logs. Les sources sont là pour définir des groupes de clients. On les emploie avec des adresses IP de notre réseau et lorsque l’identification du client est requise, on peut alors définir des noms d’utilisateurs dans les sources.
Présenté et soutenu par Djiby Thiaw
34
Mémoire de fin de cycle
Promotion
2008-2010
Enfin, les « acl » permettent de définir quelle source peut aller (ou ne pas aller) vers quelle(s) destination(s). Dans cette configuration seule la machine 192.168.2.3 (le serveur) peut aller dans n’importe quel site alors que les autres clients de notre réseau n’ont accès à aucuns s ites comme le montre la figure 13. Il faut maintenant placer le script cgi sur notre serveur apache : #gunzip /usr/share/doc/squidguard/e /usr/share/doc/squidguard/examples/squid xamples/squidGuard.cgi.gz Guard.cgi.gz #mv /usr/share/doc/squidguard/e /usr/share/doc/squidguard/examples/squid xamples/squidGuard.cgi Guard.cgi /usr/lib/cgi-bin/ #chmod +x /usr/lib/cgi-bin/squidGua /usr/lib/cgi-bin/squidGuard.cgi rd.cgi
Il faut enfin modifier le fichier de configuration de SQUID pour qu’il invoque SquidGuard en ajoutant ces dans le fichier et redémarrer le serveur url_rewrite_program url_rewrite_program /usr/bin/squidGuard /usr/bin/squidGuard –c /etc/squid/squidGuard.conf url_rewrite_children url_rewrite_children 5
Figure 13: Blocage Internet des clients par SquidGuard
Présenté et soutenu par Djiby Thiaw
35
Mémoire de fin de cycle
Promotion
2008-2010
Nous allons après ceci configurer les destinations. Un ensemble de destinations est activement maintenu à jour par le Centre de Ressources Informatiques de l’Université de Toulouse que nous trouverons à la wébographie n°10. Nous allons choisir l’archive qui les contient toutes qui est l’archive blacklists.tar.gz. #cd /var/lib/squidguard/db/ /var/lib/squidguard/db/ #wget ftp://ftp.univ-tlse1.fr/bla ftp://ftp.univ-tlse1.fr/blacklist/blackl cklist/blacklists.tar.gz ists.tar.gz #tar -xzvf blacklists.tar.gz blacklists.tar.gz #cd blacklists
Figure14: Les listes de destination de SquidGuard
Nous avons toutes les destinations souhaitables qui sont organisées par catégorie par exemple : audio-video, chat, child, drogue, forums, game, hacking, manga, porn, publicite, radio, violence etc.. Avant d'oublier ce détail majeur, tout le contenu de /var/lib/squidguard/db/blacklists doit être accessible en lecture et en écriture
par l'utilisateur sous l'identité duquel SQUID tourne. Pour nous, c'est l'utilisateur « proxy » : #cd /var/lib/squidguard/db/ /var/lib/squidguard/db/ #chown -R proxy:proxy blacklists
Présenté et soutenu par Djiby Thiaw
36
Mémoire de fin de cycle
Promotion
2008-2010
Nous allons par exemple bloquer une liste de destination. Notre fichier de configuration de SquidGuard est ainsi structuré :
Figure 15: Exemple de configuration de SquidGuard
Dans cette configuration, comme à la figure 12, nous avons la localisation des blacklists et les logs et la source de l’admin. Nous avons à la suite ajouté une source « users » qui indique les utilisateurs de notre réseau. On a ajouté à la configuration la destination « video » en indiquant les fichiers de la liste. Dans les « acl », l’administrateur a accès à tous les sites tandis que les autres utilisateurs n’ont pas accès aux sites de type audio -vidéo qui sont définis dans ces listes.
Présenté et soutenu par Djiby Thiaw
37
Mémoire de fin de cycle
Promotion
2008-2010
SquidGuard, pour pouvoir travailler rapidement, n'utilise pas les fichiers texte, mais des bases de données. Nous devons alors construire ces bases avant le démarrage de SQUID (et donc de squidGuard) par la commande ci-dessous puis on redémarre le serveur. #squidGuard –C all
Lorsqu’on teste en entrant par exemple le site de « youtube » (site de partage de vidéo), nous nous rendons compte que l’accès à ce site est bloqué . Tous les domaines ou URL de type audio-vidéo seront ainsi bloqués. SquidGuard offre ainsi un filtrage très poussé. SquidGuard permet un filtrage par URL, par adresses IP, par authentification, authentification, par plage horaire etc..
III.4.Sécurisation III.4. Sécurisation du proxy III.4.1.
Association avec SSL
Afin de sécuriser les échanges d'informations avec les différents serveurs LDAP, on peut utiliser SSL (Secure Sockets Layer), qui est en fait une couche se rajoutant dans les paquets transmis, et permettant de crypter les données transmises. On va ainsi utiliser SSL avec OpenLDAP et SQUID.
III.4.1.1. SSL avec OpenLDAP
Pour pouvoir utiliser SSL avec OpenLDAP, il faut y intégrer le support SSL/TLS (TLS : Transport Layer Security). Il faut aussi au préalable avoir installé OpenSSL. Pour pouvoir utiliser SSL, il faut créer les certificats, reconfigurer le serveur, et le relancer en lui indiquant d'utiliser SSL. Pour créer les certificats, on crée d’abord un répertoire accessible par OpenLDAP puis on les crée avec les commandes suivantes : #openssl genrsa –out serverkey.pem 1024 #openssl req –new –key serverkey.pem –out servercert.req servercert.req #openssl genrsa –out cakey.pem 1024
Présenté et soutenu par Djiby Thiaw
38
Mémoire de fin de cycle
Promotion
2008-2010
#openssl req –new –x509 –key cakey.pem –out cacert.pem #openssl x509 –req –in servercert.req –out servercert.pem –CA cacert.pem –Cakey cakey.pem –CAcreateserial
De nouveaux fichiers seront ainsi créer. Pour vérifier leur validé, on utilise la commande : #openssl verify –CAfile cacert.pem servercert.pem servercert.pem
Nous avons utilisé des clés de 1024 bits pour plus de sécurité. Une fois qu'on a les certificats nécessaires, nécessaires , on configure le serveur OpenLDAP pour qu’il utilise SSL. Pour le faire, on copie les fichiers qu’on à généré à la création des certificats à un endroit accessible par OpenLDAP par exemple /usr/local/etc/openldap puis on modifier le fichier slapd.conf en ajoutant à la fin les lignes suivantes : TLSCertificateFile
/usr/local/etc/openldap/servercert.pem
TLSCertificateKeyFile /usr/local/etc/openldap/serverkey.pem TLSCACertificateFile
/usr/local/etc/openldap/cacert.pem
Notre serveur OpenLDAP est ainsi correctement configuré pour gérer le SSL. Nous modifions ensuite le fichier /et c/default/slapd en intégrant dans les services le port sécurisé de LDAP SLAPD_SERVICES="ldaps:127. SLAPD_SERVICES="ldaps:127.0.0.1:636" 0.0.1:636"
Nous configurons aussi les clients afin de leur indiquer l’emplacem ent du certificat. Il faut aussi dire aux clients d’utiliser le port sécurisé de LDAP qui est le 636. Pour cela on modifie le fichier ldap.conf. ssl on URI ldaps://127.0.0.1:636 ldaps://127.0.0.1:636 TLS_CACERT /usr/local/etc/openldap/ca /usr/local/etc/openldap/cacert.pem cert.pem
Dorénavant, lorsqu'on s'authentifie auprès du serveur LDAP, le mot de passe ne circule plus en clair sur le réseau, et on ne peut plus l'intercepter à l'aide d'un sniffer.
III.4.1.2. SSL avec SQUID
Maintenant que notre annuaire fonctionne correctement avec SSL, on peut passer à la configuration de SQUID. A priori, la seule chose à faire pour que SQUID utilise SSL pour
Présenté et soutenu par Djiby Thiaw
39
Mémoire de fin de cycle
Promotion
2008-2010
communiquer avec le serveur LDAP est de rajouter ldaps:// en tête de l'adresse du serveur dans l’appel de squid_ldap_auth. auth_param basic program /usr/lib/squid/ldap_auth /usr/lib/squid/ldap_auth -b ou=profs,dc=esp,dc=sn ou=profs,dc=esp,dc=sn -u cn -h ldaps://127.0.0.1:636 ldaps://127.0.0.1:636
Il ne reste plus qu'à relancer le serveur SQUID, et maintenant l'authentification s'effectue de manière cryptée par SSL/TLS et ainsi aucun mot de passe ne circule plus en clair sur le réseau lors de la demande d’authentification.
III.4.2.
Association avec un antivirus
Il nous est possible d’intégrer un antivirus à notre proxy SQUID. Il n ous faut alors un antivirus fonctionnel sur notre système. Nous décidons d’utiliser l’antivirus Clamav qui un antivirus libre OpenSource. Clamav est un antivirus sous licence GPL, qui fonctionne sur le principe d'une base de données de signatures, comme la plupart des antivirus commerciaux. Son installation ne pose aucun problème particulier. Il faut juste installer les paquets clamav et clamav-freshclam. Ce dernier s’occupe de la mis à jour de la base de données de l’antivirus. Cette mis à jour est automatique.
Figure 16: Installation de Clamav
Une fois l’installation terminée, Clamav tourne par défaut sous le nom d'un utilisateur fictif clamav , créé lors de l'installation du paquetage. Le démarrage de l’antivirus est
Présenté et soutenu par Djiby Thiaw
40
Mémoire de fin de cycle
Promotion
2008-2010
automatique et juste après l’installation il commence déjà à jouer son rôle. Pour une configuration plus approfondie, on peut se référer à la documentation officielle. Avec un antivirus installé sur la machine où tourne notre serveur SQUID, nos requêtes HTTP destinées à nos clients seront ainsi scannées. De cette manière, nous nous assurons que notre proxy SQUID n’enverra pas de virus à nos clients. Ceci n’exclut pas non plus que nos clients peuvent se dispenser d’un antivirus installé sur leur poste. Une sécurité supplémentaire est toujours la bienvenue.
Présenté et soutenu par Djiby Thiaw
41
Mémoire de fin de cycle
Promotion
2008-2010
CONCLUSION
Nous avons essayé dans ce document de mettre en place un proxy SQUID sécurisé avec une authentification authent ification des utilisateurs via l’annuaire LDAP. De nos jours l’Internet, qui est un réseau mondial public avec plusieurs menaces, est très utilisé et tout le monde y a accès. Se trouvant dans un réseau privé et sécurisé, nous devons ainsi mettre en place une passerelle sécurisée entre notre réseau et Internet. Notre choix de passerelle c’est ainsi porté sur le proxy SQUID. Nous avons vu dans ce document que son rôle primordial est le cache c'est-à-dire garder les pages HTTP en local et les restituer aux clients. Il joue aussi le rôle de filtre et de sécurité. Nous avons vu que SQUID peut bloquer l’accès à l’Internet à certains utilisateurs selon des critères bien définis ou même bloquer l’accès à certains sites que l’on l’o n juge dangereux ou inutiles. Nous avons aussi vu que SQUID pouvait être couplé à un annuaire LDAP de telle sorte que seuls nos utilisateurs de notre réseau disposant d’un compte dans l’annuaire avec login et mot de passe peuvent avoir l’Internet. Pour plus de sécurité, on peut crypter ces écha nges de login et mot de passe avec SSL. Nous SSL. Nous avons aussi installé l’antivirus clamav sur la machine serveur Néanmoins, nous tenons à rappeler qu’un proxy n’est pas une solution absolue et complète de sécurité. sécurité . Comme on l’a déjà dit , il joue primordialement une fonction de cache et de filtre. Donc il n’assure pas entièrement la sécurité de notre réseau. Il faut en plus trouver d’autres d’autres moyens de sécurité en mettant par exemple en place un firewall correctement configuré qui remplie entièrement un rôle de séc urité. Notons aussi qu’en matière de sécurité informatique, il n'y a ni recette miracle, ni solution définitive.
Présenté et soutenu par Djiby Thiaw
42
Mémoire de fin de cycle
Promotion
2008-2010
GLOSSAIRE
ACL: Access Control List BIOS: Basic Input Output Unit CPU: Central Processing Unit DIT: Directory Information Tree DNS: Domain Name System DSE: Directory Service Entry GNU GPL: GNU General Public License HTTP: HyperText Transfer Protocol LDAP: Lightweight LDIF:
Directory Access Protocol
LDAP Data Interchange Format
RAM: Random Access Memory SGBD: Système de Gestion de Base de Données TCP/IP: Transfer Control Protocol /
Présenté et soutenu par Djiby Thiaw
Internet Protocol
43
Mémoire de fin de cycle
Promotion
2008-2010
WEBOGRAPHIE
1. http://www.esp.sn 2. http://www.esmt.sn 3. http://www.monassistance.fr/CCM/lan/proxy.php 4. http://www.deckle.co.za/squid-users-guide/Main_Page 5. http://www-i http://www-igm.univ-mlv.fr/ gm.univ-mlv.fr/~dr/XPOSE2003 ~dr/XPOSE2003/Squid/ch01 /Squid/ch01s02.html s02.html 6. http://www.locoche.net/proxy.php 7. http://fr.wikipedia.org/wiki/Ldap 8. http://www.espace-groupware.com/squid/authentification-ldap/doc.html 9. http://irp.nain-t.net/doku.php/220squid:start 10. ftp://ftp.uni ftp://ftp.univ-tlse1.fr/bla v-tlse1.fr/blacklist/ cklist/ 11. http://doc.ubuntu-fr.org/clamav
Présenté et soutenu par Djiby Thiaw
44