APPLICATION DE GESTION SÉCURISÉE DE RÉSEAU



Documents pareils
CRI-IUT Serveur d'authentification pour la sécurité des réseaux Wi-Fi

Windows Internet Name Service (WINS)

25/08/2013. Vue Nagios. Vue Nagios. Le réseau du lycée

Pervasive Network (Thus0 / Petrus homepage)

Authentification sur réseau sans-fil Utilisation d un serveur radius Expérience du CENBG

Installation du point d'accès Wi-Fi au réseau

Contenu. Cocher : Network Policy and Access Services > Next > Next. Cocher : Network Policy Server > Next > Install

Formateurs : Jackie DAÖN Franck DUBOIS Médiapôle de Guyancourt

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

AUTHENTIFICATION x FREERADIUS. Objectifs

Le protocole RADIUS. Objectifs. Ethernet Switch RADIUS RADIUS

TUTORIEL RADIUS. I. Qu est-ce que RADIUS? II. Création d un groupe et d utilisateur

BTS SIO option SISR Lycée Godefroy de Bouillon Clermont-Ferrand

OUAPI Guide d installation Outil d administration de parc informatique. Documentation d installation et de paramétrage

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

Charte d installation des réseaux sans-fils à l INSA de Lyon

Cours CCNA 1. Exercices

Mise en place Active Directory / DHCP / DNS

Administration de systèmes

1 DHCP sur Windows 2008 Server Introduction Installation du composant DHCP Autorisation d'un serveur DHCP...

Présentation et portée du cours : CCNA Exploration v4.0

CCNA Discovery Travailler dans une PME ou chez un fournisseur de services Internet

TAGREROUT Seyf Allah TMRIM

Les possibilités de paramétrage réseau des logiciels de virtualisation sont les suivantes quant à la connexion réseau :

COURS 5 Mettre son site en ligne! Exporter son site avec WordPress Duplicator Installer un logiciel FTP Faire le suivi des visites de son site avec

Table des matières Nouveau Plan d adressage... 3

MANUEL D INSTALLATION DE WATCHDOC 2011 (EVALUATION)

WIFI sécurisé en entreprise (sur un Active Directory 2008)

L3 informatique Réseaux : Configuration d une interface réseau

Présentation et portée du cours : CCNA Exploration v4.0

Services Réseaux - Couche Application. TODARO Cédric

Once the installation is complete, you can delete the temporary Zip files..

TUTORIEL INSTALLATION D UNE WENBOX ETHERNET DE WENGO SUR UN MODEM ROUTEUR DG834 G DE NETGEAR

TD3 - Radius et IEEE 802.1x

Documentation : Réseau

Le protocole ARP (Address Resolution Protocol) Résolution d adresses et autoconfiguration. Les protocoles ARP, RARP, TFTP, BOOTP, DHCP

Installation Windows 2000 Server

Introduction. Adresses

Tutoriel XBNE Connexion à un environnement XBMC distant

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

Windows 2000 Server Active Directory

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

Un peu de vocabulaire

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Configurer l adressage des serveurs et des clients

Installation d'un serveur RADIUS

Devenez un véritable développeur web en 3 mois!

Installation DNS, AD, DHCP

TP 6 : Wifi Sécurité

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

Protection des protocoles

Utilisation de KoXo Computers V2.1

7.1.2 Normes des réseaux locaux sans fil

Manuel d installation UCOPIA Advance

ETI/Domo. Français. ETI-Domo Config FR

Installation et configuration d un serveur DHCP (Windows server 2008 R2)

Contrôleur de communications réseau. Guide de configuration rapide DN

InstallatIon et configuration d une Infrastructure réseau sans-fil. Avec. Interface de gestion utilisateurs

Étude de l application DNS (Domain Name System)

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark

Configurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : et un masque

Partie II PRATIQUE DES CPL

Licence professionnelle Réseaux et Sécurité Projets tutorés

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

Internet. Licence Pro R&S. TD 5 - Wifi / Radius. 1 Sur le réseau de distribution (DS) 1.1 Configuration des routeurs PC6

Bravo! Vous venez d acquérir un routeur large bande à 4 ports Conceptronic C100BRS4H.

Etape 1 : Connexion de l antenne WiFi et mise en route

Ce document décrit une solution de single sign-on (SSO) sécurisée permettant d accéder à Microsoft Exchange avec des tablettes ou smartphones.

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

Le protocole RADIUS Remote Authentication Dial-In User Service

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

! "# Exposé de «Nouvelles Technologies Réseaux»

L3 informatique TP n o 2 : Les applications réseau

Les clés d un réseau privé virtuel (VPN) fonctionnel

Service On Line : Gestion des Incidents

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

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

S28 - La mise en œuvre de SSO (Single Sign On) avec EIM (Enterprise Identity Mapping)

Modules du DUT Informatique proposés pour des DCCE en 2014/2015

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

Principes de DHCP. Le mécanisme de délivrance d'une adresse IP à un client DHCP s'effectue en 4 étapes : COMMUTATEUR 1. DHCP DISCOVER 2.

CONTACT EXPRESS 2011 ASPIRATEUR D S

SUJET DES FINALES NATIONALES Sujet jour 1 version 1

Spécialiste Systèmes et Réseaux

A. Présentation. LanScanner2006

>> Lisez-moi d abord... Connecter le ZyXEL Prestige 650HW/HW-I

Plan. École Supérieure d Économie Électronique. Plan. Chap 9: Composants et systèmes de sécurité. Rhouma Rhouma. 21 Juillet 2014

Armand PY-PATINEC 2010

Préparation à l installation d Active Directory

Sur un ordinateur exécutant Windows 2000 Server Ayant une adresse IP statique

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

VAMT 2.0. Activation de Windows 7 en collège

Mise en place de la G4100 pack avec Livebox

Dans l'épisode précédent

COMMUNICATION TECHNIQUE N TCV060 Ed. 01. OmniVista 4760 Nb de pages : 18 Date : URGENTE NON URGENTE TEMPORAIRE DEFINITIVE

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

NFS Maestro 8.0. Nouvelles fonctionnalités

Internet - Outils. Nicolas Delestre. À partir des cours Outils réseaux de Paul Tavernier et Nicolas Prunier

Transcription:

APPLICATION DE GESTION SÉCURISÉE DE RÉSEAU Stage de DUT réalisé par Cyril Bos du 7 avril au 12 juin 2015 Maître de stage : Pascal Pajot Enseignant responsable : Olivier Guibert Année universitaire 2014-2015

1

RÉSUMÉ Résumé Afin d en sécuriser l accès, l Institut des Sciences Moléculaires souhaite modifier l architecture de son réseau en changeant certains de ses équipements par des switch (commutateurs) manageables régis par un serveur qui gérera l authentification de toutes machines connectées. Mon stage a donc consisté à développer une application web PHP permettant de gérer plus facilement ce serveur et de tester le bon fonctionnement de la solution envisagée par le service informatique de l institut. Le projet a finalement abouti et M. Pajot et M. Forlini ont pu mettre en production le travail que j ai réalisé. Abstract In order to improve its security, the Institute of Molecular Sciences wants to update its network architecture by changing some of its equipments with managed switches ruled by a RADIUS server which will handle the authentications of all connected computers. Therefore my placement consisted in developing a PHP web application to make it easier to run this server and in testing the functioning of the solution proposed by the IT department. The project has been finalized and Mr. Pajot and Mr. Forlini have been able to put my work into production. 2

3

REMERCIEMENTS Je tiens à remercier tout particulièrement mon maître de stage Monsieur Pascal Pajot et son collègue Monsieur Fabrice Forlini pour l opportunité qu ils m ont offert avec ce stage, pour l attention qu ils m ont porté durant et pour les moyens qu ils ont mis en œuvre pour le succès de ce projet. Merci à l ensemble de l administration pour leur apport d informations diverses. Je remercie également mon enseignant tuteur Monsieur Olivier Guibert pour le suivi de mon stage, ainsi que le reste de l équipe pédagogique de l IUT de Bordeaux pour m avoir transmis un savoir-faire solide qui a pu faire ses preuves dans un milieu professionnel exigeant. 4

5

TABLE DES MATIÈRES Introduction... 10 PrÉsentation de l organisme... 11 L Institut des Sciences Moléculaires... 11 Organigramme...13 Le Service Informatique... 14 Projet : Analyse et conception... 16 Analyse du besoin... 16 Conception... 17 Projet : Développement... 22 Outils utilisés... 22 Base de données... 22 Développement applicatif... 22 Tests... 26 Problèmes rencontrés...31 Conclusion... 32 Annexes... 34 Glossaire... 34 6

7

TABLE DES FIGURES Figure 1 : répartition du personnel par statut.. 11 Figure 2 : répartition du budget. 12 Figure 3 : répartition des recettes. 12 Figure 4 : organigramme de l ISM 13 Figure 5 : illustration de la norme 802.1x. 17 Figure 6 : MCD. 18 Figure 7 : MPD 19 Figure 8 : page de gestion des configurations. 23 Figure 9 : modification d une configuration. 24 Figure 10 : page d historique des modifications 25 Figure 11 : architecture du réseau de l environnement de test 26 8

9

INTRODUCTION Mon stage de fin de DUT s est déroulé au sein du service Informatique de L Institut des Sciences Moléculaires, sous la direction de M. Pascal Pajot. J ai également pu obtenir l aide de son collègue Fabrice Forlini, afin de développer une application de gestion du réseau rattachée à l actuelle application de gestion du personnel. Son objectif est de leur faciliter la gestion des accès réseaux des différents équipements, afin d en garantir la connaissance et la sécurité. J ai donc dû dans un premier temps comprendre le besoin fonctionnel et l architecture technique de l application afin d y intégrer au mieux mon propre module. Le rapport de stage présentera tout d abord le laboratoire en lui-même, puis expliquera les choix pris pendant la phase de conception et d analyse, et enfin détaillera les développements qui en ont découlé. 10

PRÉSENTATION DE L ORGANISME L Institut des Sciences Moléculaires L Institut des Sciences Moléculaires est une Unité Mixte de Recherche (UMR) regroupant le CNRS, l Université de Bordeaux et l Institut Polytechnique de Bordeaux. Spécialisé dans la chimie, le laboratoire est subdivisé en dix groupes thématiques (chimie durable, chimie théorique, nanosciences, spectroscopie, ). Il a été créé en 2007 à partir de 5 laboratoires (le LCOO, le LPCM, le LPCT, le LACReM et le CESAMO). Il permet à plus de 240 personnes de travailler dans ces différents domaines, un peu plus de la moitié d entre elles étant permanentes (techniciens, chercheurs permanents du CNRS, enseignants-chercheurs de l Université), les autres étant pour la plupart stagiaires, thésards ou post-doctorants. Le CNRS distingue ainsi les ITA (Ingénieurs, Techniciens et Administratifs) des chercheurs. Figure 1 : répartition du personnel par statut Financé à hauteur de 3 581 k par l université, le CNRS, l IPB et surtout ses divers contrats de recherche, l ISM répartit ce budget entre les achats et maintiens d équipements, les divers frais de fonctionnements de la recherche (achats de produits chimiques, ), les frais de fonctionnement généraux, et les salaires du personnel (voir figure 2). Il est donc organisé autour des actions des différentes équipes de recherche, épaulées par l administration de l institut. 11

Figure 2 : répartition du budget Les principales sources de financement sont les contrats de recherche (majoritairement aquitains), et l Agence Nationale de Recherche (l ANR), un organisme qui se charge de financer directement les équipes de recherches (aussi bien publiques que privées). Par abus de langage, le financement en lui-même est souvent désigné par le terme «une ANR». Figure 3 : répartition des recettes 12

Organigramme Figure 4 : organigramme de l ISM 13

Le Service Informatique Le service Informatique est rattaché au groupe des Services Communs, situé au rez-dechaussée du bâtiment A12, aile Ouest. Il s occupe autant de gérer l infrastructure informatique (gestion du parc informatique, commandes de matériel, installation de logiciels ) que du développement d applications de gestion (gestion du personnel, de demandes d achats de produits chimiques), souvent à l aide de stagiaires provenant de l IUT. Le budget annuel qui lui est attribué est de l ordre de 8 000. Il travaille donc essentiellement en collaboration avec l administration, mais aussi avec le personnel chercheur. Certaines machines, notamment pour les manipulations, fonctionnent sous des systèmes d exploitation anciens (Windows 3.1 par exemple) et nécessitent de stocker du matériel compatible. Il entretient ainsi un stock de matériel qui, en cas de problème matériel, permet d effectuer la réparation rapidement (si le matériel nécessaire est disponible) tout en passant la commande pour en renouveler le stock. Ce fonctionnement offre alors la possibilité d éviter de passer par le cheminement parfois tortueux d une commande habituelle. 14

15

PROJET : ANALYSE ET CONCEPTION Analyse du besoin Le réseau de l ISM est actuellement régi par un serveur DHCP, dont la configuration des adresses IP est statique : à chaque adresse MAC enregistrée est affectée une adresse IP. Un nouvel utilisateur pour pouvoir se connecter via le protocole DHCP doit donc passer au service informatique afin qu une adresse IP soit attribuée à son matériel personnel. Ce système présente une faille : il est possible de «spoofer» (terme technique de l anglais «spoof», soit «usurper» en bon français) l adresse IP de quelqu un d autre en paramétrant manuellement son adresse. Il y a alors possibilité d accès au réseau avec l adresse IP d autrui, et possibilité de duplication de l adresse IP, dont le résultat n est pas facilement prévisible (l un des deux matériels n aura en principe pas accès au réseau, l autre prenant sa place, ceci dépendant de quel matériel est resté en mémoire en dernier dans le cache du serveur DHCP). Il n y a également pas d automatisation d archivage des accès de connexion : une personne non permanente peut continuer à se connecter au réseau avec son matériel tant que son accès n a pas été supprimé manuellement. Pour y remédier, M. Pajot et son collègue M. Forlini ont épluché différentes solutions et ont retenu celle de l authentification MAC par RADIUS, déjà utilisée dans un autre organisme au sein de l Université. C est un principe qui respecte la norme IEEE 802.1x : 1. un client demande à un authentificateur l accès à une ressource extérieure présente sur le réseau, en présentant ses accréditations (login, mot de passe, clé, ) 2. L authentificateur (switch manageable supportant les protocoles RADIUS et EAP) transmet ces informations à un serveur d authentification 3. Le serveur d authentification traite la demande en vérifiant les accréditations ainsi transmises (est-ce que l utilisateur est connu? Est-ce le bon mot de passe?), puis envoie sa réponse à l authentificateur 4. L authentificateur transmet la réponse au client, et en fonction de cette dernière autorise ou non le trafic de la requête. Il sera toujours possible de passer outre cette sécurité en usurpant cette fois-ci l adresse MAC, mais il est beaucoup moins évident d y penser et de l effectuer (sur Windows, il est souvent nécessaire de passer par un utilitaire externe pour modifier son adresse MAC). Le switch mangeable permet également d authentifier par un mot de passe, mais qui est le même pour tous. Pour une plus grande sécurité, il serait plus envisageable de mettre en place grâce au serveur RADIUS une authentification nom d utilisateur mot de passe à l aide du LDAP (annuaire) de l ENT par exemple. 16

Figure 5 : illustration de la norme 802.1x Avant mon arrivée, M. Pajot et M. Forlini ont pu configurer un switch manageable HP A5120, ainsi qu un serveur freeradius et tester leur bon fonctionnement. Ma tâche principale a donc consisté à développer une application pour en faciliter la gestion à travers une base de données des configurations (stocker la configuration du réseau, les adresses IP et MAC et d autres informations), rattachée à la base de données déjà existante du personnel. Conception A partir des fichiers de configuration DHCP et RADIUS fournis par M. Forlini, j ai mené une rétro-ingénierie des diverses informations nécessaires à leur bonne génération. J ai alors défini ce qu est une configuration : la configuration réseau d un matériel se résumant alors à un nom d hôte, une adresse IP unique, une adresse MAC également unique, une date de début et une date de fin. D autres informations complémentaires (à des fins de statistiques et d administration) s ajoutent : un type de matériel (PC, imprimante, Mac, ordinateur portable, ), le groupe et nom de la personne responsable du matériel. Cette réflexion a ainsi mené à la conception d un Modèle Conceptuel de Données suivant la méthode Merise. 17

Figure 6 : MCD Une configuration représente donc toutes les informations correspondant à l identification d un matériel et de son accès au réseau : adresse MAC de sa carte réseau, adresse IP attribuée par le DHCP, date de début et de fin de l accès, et nom d hôte généré à partir de son type de matériel, du groupe et nom du responsable du matériel et d une éventuelle information supplémentaire. Une configuration est obligatoirement affectée à un domaine contrôlé par au moins un contrôleur de domaine, dit «principal», et éventuellement par d autres contrôleurs dits «secondaires». Il y a à l heure actuelle 3 domaines sous Windows Server à l ISM : lpcm, win, lscm. Les machines à l intérieur de ces domaines doivent avoir les adresses IP de ces domaines Il faut également un domaine par défaut pour permettre l automatisation et l évolutivité de l attribution des serveurs DNS par défaut, même si ce domaine n existe pas techniquement. L entité sous-réseau représente les paramètres obligatoires pour leur bonne configuration dans le fichier DHCP (adresse_ip, masque de sous-réseau, adresse ip du routeur, adresse ip de diffusion) ainsi que des paramètres déjà présents dans les fichiers qui ont mené à cette conception («deny unknown-clients» pour le champ refus_clients_inconnus et «allow client-updates» pour le champ autorisation_maj_clients). Cette première option permet d interdire l attribution d une adresse IP à une machine dont l adresse MAC est inconnue du serveur. L autre autorise un client à mettre à jour son «enregistrement A», c est-à-dire l association nom adresse IP (par exemple www.google.com 216.58.208.196 est un enregistrement A). 18

Exemple de configuration : Configuration d Id 198, d adresse MAC b2:4f:dd:23:ea:ff, d adresse IP 147.210.59.142, attribué au PC de Cyril BOS, avec pour information complémentaire «stage», dont le nom d hôte résultant est donc SC-PC-NOPERM-BOS-STAGE, et les dates de début et de fin correspondant aux dates de stage (avec un délai supplémentaire d une semaine) : 07/04/15 au 19/06/15. A partir de ce MCD, j ai pu générer (et corriger divers détails manuellement) le Modèle Physique de Données correspondant (SGBDR MySQL et moteur InnoDB), relié à certaines tables de la base de données du personnel déjà présente. Figure 7 : MPD 19

J ai conçu les tables préfixées par dhcp, celles préfixées par personnel étaient déjà existantes. Les adresses IP pourraient être représentées par des entiers pour des raisons d optimisation, il a cependant été retenu de les conserver sous forme de chaîne de caractères de taille maximale de 15 caractères (4 paquets de 3 chiffres, chaque paquet étant séparé par un point «.») pour assurer une meilleure lisibilité et facilité de traitement (par exemple utilisation de LIKE 147.210.59.% pour trouver toutes les configurations affectées au sous réseau 147.210.59.0). En parallèle de la conception de la base de données, j ai écrit des scripts permettant de récupérer les données déjà présentes dans les fichiers de configuration (nom d hôte, adresse IP et MAC correspondante, type de matériel) et de remplir les tables correspondantes. J ai rajouté des champs nommés «dhcp» (selon les directives de M. Pajot) qui permettent de stocker des valeurs utiles à mes scripts (une abbréviation pour chaque groupe de la table personnel_groupe). Contraintes notables : Adresses IP et MAC uniques et non nulles (pour les configurations, sous-réseaux, contrôleurs de domaine) : pour assurer le bon fonctionnement des configurations DHCP Différentes contraintes d intégrité référentielle usuelles (clés étrangères) pour assurer des données complètes Principe d historisation : Par initiative personnelle, j ai proposé de satisfaire plus facilement la capacité de l application à historiser toute affectation d adresse IP et MAC à une personne, deux tables (dhcp_configuration_modifiee et dhcp_configuration_archivee) permettront d enregistrer toutes les modifications et suppressions de la table dhcp_configuration. En outre, cette dernière représentera la liste des configurations actives, tandis que la table dhcp_configuration_modifiee contiendra les configurations avant modification et la table dhcp_configuration_archivee les configurations supprimées. Ceci permettra à M. Pajot de facilement fournir une information dans l éventualité d une requête de nature judiciaire. 20

21

PROJET : DEVELOPPEMENT Outils utilisés La base de données a été développé en MySQL avec comme moteur de base de données InnoDB. Pour les diverses opérations d administration de la base, j ai pu utiliser phpmyadmin puis MySQL Workbench. L application est écrite en PHP pour les traitements serveur, HTML5/CSS3 et Javascript pour l affichage et le contrôle. La librairie jquery et son extension DataTables ont fortement été utilisées. J ai essentiellement utilisé Sublime Text et ses plugins pour l écriture du code. L environnement de travail WAMP ne me permettait pas d utiliser les fonctions de la librairie SSH2, j ai donc finalement opté pour la librairie phpseclib. Elle m a permis de simplifier le transfert des fichiers vers les serveurs DHCP et RADIUS par SFTP et l exécution des commandes grâce à un terminal interactif SSH. Les diverses tâches d administration système des serveurs s est faite sous terminal par SSH grâce à PuTTY (notamment pour les phases de tests et pour la récupération des logs des services). Base de données Après la phase de conception, la première tâche a été de générer la base de données à l aide de MySQL Workbench et de l enrichir de ses diverses contraintes. J ai ensuite été amené à écrire deux déclencheurs pour satisfaire l historisation décrite plus haut : sur les évènements ON DELETE et ON UPDATE, on copie les anciennes valeurs dans la table correspondante avant l application de la suppression ou de la modification. Développement applicatif Une fois la base de données opérationnelle, j ai été chargé du développement du module permettant sa gestion et de son intégration à l application web de gestion du personnel. Le fonctionnement de l application permet d ajouter facilement un nouveau module aux autres déjà présents (accessibles depuis la liste déroulante à gauche) : il suffit de créer un dossier dans le répertoire «modules» du site, et de rentrer le nom du dossier ainsi créé dans la table «menu» de la base de données. On peut également lui rajouter un titre, un niveau de droits pour gérer l accès des utilisateurs à ce module. Le module que j ai développé consiste principalement en deux pages, la première permettant d afficher la liste des configurations, de les modifier, de les supprimer, d en ajouter une et de valider les changements afin de générer les fichiers de configuration DHCP et RADIUS et de relancer les services respectifs. I 22

Figure 8 : page de gestion des configurations Cette liste utilise le plugin jquery DataTables, dont l intérêt est de facilement pouvoir paginer (avec la possibilité de changer le nombre de lignes par page, en haut à gauche), de rechercher globalement sur toutes les colonnes une valeur précise (en haut à droite), de classifier par colonne. J y ai implémenté la possibilité de rechercher par colonne précise à l aide des champs correspondants en bas de la liste. Le thème visuel utilise le framework HTML/CSS/Javascript Bootstrap, principalement les classes de formulaires (form-inline, ) et de couleurs (btn-info, btn-warning par exemple). Le design de ce module est donc responsive et permettra de faciliter plus tard une adaptation du reste de l application dans une optique de mobilité. Il est possible de sélectionner une configuration en cliquant sur la ligne correspondante (elle apparaît alors en bleu), puis de la supprimer ou de la modifier à l aide des boutons de suppression (rouge) et modification (orange). 23

Figure 9 : modification d une configuration Lors de l appui sur le bouton «modifier», le formulaire en dessous de la liste se remplit automatiquement avec les valeurs de la ligne sélectionnée. Lors de l appui sur le bouton nouveau, ce formulaire prend des valeurs par défaut. Les valeurs des champs de saisie sont régulés par des expressions régulières (pour l adresse MAC par exemple : ). Les listes (domaine, sous-réseau, responsable, ) sont initialisées suivant les lignes enregistrées dans les tables correspondantes de la base de données. La liste des adresses IP est générée en calculant les adresses IP non utilisées pour éviter un doublon et faciliter le choix de l adresse. Il est possible de prévisualiser le nom d hôte résultant. La validation de toutes les modifications s effectue suite à l appui sur le bouton «valider les changements» en bas de la page dans le menu «Actions». Il génère alors les fichiers de configuration DHCP (dhcpd.conf), RADIUS (usersdhcp), et les transfère aux serveurs correspondants par SFTP grâce à la librairie phpseclib. Cette même librairie permet également d utiliser un terminal intéractif par lecture/écriture, ce qui m a permis d utiliser des commandes via sudo pour écrire les fichiers dans les répertoires accessibles uniquement par le root et effectuer des sauvegardes de ces fichiers avant de les remplacer. Les sauvegardes sont stockées sur le serveur (en RAID 1 pour éviter la perte 24

des données) dans un dossier par année, un sous-dossier par mois et enfin le jour et l heure sont dans le nom du fichier. Cyril Bos La deuxième page permet de visualiser l historique des configurations. Chaque ligne jaune représente une modification, et chaque ligne orange une suppression (archivage). Il est toujours possible de modifier la pagination, de rechercher dans toutes les colonnes et de rechercher par colonne. Figure 10 : page d historique des configurations On peut ainsi facilement suivre l évolution d une même configuration en recherchant son identifiant (qui correspond l identifiant qu elle occupait dans la table dhcp_configuration, celles des configurations encore actives, et qui est différent de l identifiant de la modification ou de la suppression). Les modifications et les suppressions étant enregistrées dans deux tables différentes par souci d optimisation et d élégance, j ai dû réécrire une partie de l extension jquery DataTables pour lui permettre de fonctionner sur des requêtes plus complexes, notamment comportant des UNION et des jointures, sans en retirer les fonctionnalités (pagination, filtres, recherche, ). 25

Il est envisageable de demander aux développeurs de fournir leur jeu de tests unitaires pour en garantir le bon fonctionnement. J ai d ailleurs pour cela installé et configuré la librairie de tests unitaires PHPUnit. Tests La nouvelle architecture envisagée par le service informatique ne modifierait que la méthode d accès à internet : les baies redirigeraient vers des switch dits manageables, c est-à-dire qu ils ont leur propre adresse IP, gérés par un serveur RADIUS (peut-être également un deuxième en cas de panne). Figure 11 : architecture du réseau de l environnement de test Scénarios de tests : Dans les trames qui suivent, «noop» signifie No Operation, c est-à-dire un passage à l instruction suivante sans traitement quelconque. Il est également notable que le protocole d authentification utilisé est PAP. 26

Mise en route du service RADIUS, les machines étant autorisées, puis connexion des machines au switch. Résultat (traces du mode Debug du service RADIUS) : Ready to process requests. rad_recv: Access-Request packet from host 147.210.164.56 port 3106, id=249, length=200 User-Name = "0023ae1ffda0" User-Password = "0023ae1ffda0" NAS-IP-Address = 147.210.164.56 NAS-Identifier = "HP" NAS-Port = 16793601 NAS-Port-Id = "slot=1;subslot=0;port=4;vlanid=1" NAS-Port-Type = Ethernet Service-Type = Call-Check Framed-Protocol = PPP Calling-Station-Id = "00-23-AE-1F-FD-A0" Acct-Session-Id = "10003280437eae010" H3C-Connect_Id = 15429633 H3C-Product-ID = "HP A5120-24G EI Switch" H3C-NAS-Startup-Timestamp = 956750405 # Executing section authorize from file /etc/raddb/sites-enabled/default +- entering group authorize {...} ++[preprocess] returns ok ++[chap] returns noop ++[mschap] returns noop ++[digest] returns noop [suffix] No '@' in User-Name = "0023ae1ffda0", looking up realm NULL [suffix] No such realm "NULL" ++[suffix] returns noop [eap] No EAP-Message, not doing EAP ++[eap] returns noop [files] users: Matched entry 0023ae1ffda0 at line 402 ++[files] returns ok [expiration] Checking Expiration time: '07 May 2015 14:00' ++[expiration] returns ok ++[logintime] returns noop ++[pap] returns updated Found Auth-Type = PAP # Executing group from file /etc/raddb/sites-enabled/default +- entering group PAP {...} [pap] login attempt with password "0023ae1ffda0" [pap] Using clear text password "0023ae1ffda0" [pap] User authenticated successfully 27

28 ++[pap] returns ok # Executing section post-auth from file /etc/raddb/sites-enabled/default +- entering group post-auth {...} ++[exec] returns noop Sending Access-Accept of id 249 to 147.210.164.56 port 3106 Session-Timeout = 16683 Finished request 0. Going to the next request Waking up in 4.9 seconds. Cleaning up request 0 ID 249 with timestamp +62 Ready to process requests. Le serveur reçoit la demande d accès (l adresse IP 147.210.164.56 correspond à l adresse du switch manageable), confirme la connaissance de l utilisateur (l adresse MAC), puis la validité de la date d expiration, et enfin la validité du mot de passe transmis (également l adresse MAC). Le délai de détection d expiration est paramétrable pour éviter de surcharger le serveur en nombre de requêtes à traiter. Mise en route du serveur RADIUS, les machines cette fois n étant pas autorisées (date de validité expirée), branchement des machines au switch Résultat : Ready to process requests. rad_recv: Access-Request packet from host 147.210.164.56 port 3106, id=243, length=200 User-Name = "0023ae1ffda0" User-Password = "0023ae1ffda0" NAS-IP-Address = 147.210.164.56 NAS-Identifier = "HP" NAS-Port = 16793601 NAS-Port-Id = "slot=1;subslot=0;port=4;vlanid=1" NAS-Port-Type = Ethernet Service-Type = Call-Check Framed-Protocol = PPP Calling-Station-Id = "00-23-AE-1F-FD-A0" Acct-Session-Id = "10003280419ea8010" H3C-Connect_Id = 15405057 H3C-Product-ID = "HP A5120-24G EI Switch" H3C-NAS-Startup-Timestamp = 956750405 # Executing section authorize from file /etc/raddb/sites-enabled/default +- entering group authorize {...} ++[preprocess] returns ok ++[chap] returns noop ++[mschap] returns noop ++[digest] returns noop

[suffix] No '@' in User-Name = "0023ae1ffda0", looking up realm NULL [suffix] No such realm "NULL" ++[suffix] returns noop [eap] No EAP-Message, not doing EAP ++[eap] returns noop [files] users: Matched entry 0023ae1ffda0 at line 402 ++[files] returns ok [expiration] Checking Expiration time: '06 May 2015 14:00' [expiration] Account has expired [expiration] expand: Password Has Expired -> Password Has Expired ++[expiration] returns userlock Using Post-Auth-Type Reject # Executing group from file /etc/raddb/sites-enabled/default +- entering group REJECT {...} [attr_filter.access_reject] expand: %{User-Name} -> 0023ae1ffda0 attr_filter: Matched entry DEFAULT at line 11 ++[attr_filter.access_reject] returns updated Delaying reject of request 0 for 1 seconds Going to the next request Waking up in 0.9 seconds. Sending delayed reject for request 0 Sending Access-Reject of id 243 to 147.210.164.56 port 3106 Reply-Message += "Password Has Expired\r\n" Waking up in 4.9 seconds. Cleaning up request 0 ID 243 with timestamp +6 Ready to process requests. Cyril Bos Le serveur reçoit la demande d accès, confirme la connaissance de l utilisateur (l adresse MAC), mais détecte que le mot de passe attribué a expiré. Il renvoie alors un message de type «Access-Reject» après un délai d une seconde (pour permettre le traitement d éventuelles autres requêtes). L accès à internet est effectivement bloqué, mais Windows ne détecte pas toujours le problème de lui-même. Mise en route du service RADIUS, machines non enregistrées dans la configuration, branchement des machines au switch Résultat : Ready to process requests. rad_recv: Access-Request packet from host 147.210.164.56 port 3106, id=60, length=200 User-Name = "c81f66ab193b" User-Password = "c81f66ab193b" NAS-IP-Address = 147.210.164.56 NAS-Identifier = "HP" 29

NAS-Port = 16785409 NAS-Port-Id = "slot=1;subslot=0;port=2;vlanid=1" NAS-Port-Type = Ethernet Service-Type = Call-Check Framed-Protocol = PPP Calling-Station-Id = "C8-1F-66-AB-19-3B" Acct-Session-Id = "10004020624ff0010" H3C-Connect_Id = 16752641 H3C-Product-ID = "HP A5120-24G EI Switch" H3C-NAS-Startup-Timestamp = 956750405 # Executing section authorize from file /etc/raddb/sites-enabled/default +- entering group authorize {...} ++[preprocess] returns ok ++[chap] returns noop ++[mschap] returns noop ++[digest] returns noop [suffix] No '@' in User-Name = "c81f66ab193b", looking up realm NULL [suffix] No such realm "NULL" ++[suffix] returns noop [eap] No EAP-Message, not doing EAP ++[eap] returns noop [files] users: Matched entry DEFAULT at line 177 ++[files] returns ok [pap] WARNING! No "known good" password found for the user. Authentication may fail because of this. ++[pap] returns noop ERROR: No authenticate method (Auth-Type) found for the request: Rejecting the user Failed to authenticate the user. Using Post-Auth-Type Reject # Executing group from file /etc/raddb/sites-enabled/default +- entering group REJECT {...} [attr_filter.access_reject] expand: %{User-Name} -> c81f66ab193b attr_filter: Matched entry DEFAULT at line 11 ++[attr_filter.access_reject] returns updated Delaying reject of request 2 for 1 seconds Going to the next request Waking up in 0.9 seconds. Sending delayed reject for request 2 Sending Access-Reject of id 60 to 147.210.164.56 port 3106 Le serveur ne trouve pas l utilisateur dans son fichier de configuration. Il rejette donc la demande et envoie cette réponse, toujours avec le délai d une seconde. 30

J ai également envisagé d analyser les paquets échangés à l aide d un outil de capture de trafic tel que Wireshark et son filtre prédéfini RADIUS, mais ça n est apparemment pas possible entre le client et le switch. Je n ai pas pu essayer entre le switch et le serveur RADIUS (qui n a pas d interface graphique). Problèmes rencontrés Outre l apprentissage nécessaire de l application existante et de ses principes de fonctionnement et de paramétrage, j ai pu rencontrer certains problèmes et ce dès les premiers jours de conception. J ai par exemple soulevé le problème des équipements communs (imprimantes sur le réseau par exemple) : pour satisfaire les contraintes de la base de données, ces équipements doivent obligatoirement être rattachés à un responsable enregistré dans la table du personnel. J ai donc proposé à M. Pajot de créer des «anonymes» pour chacun des groupes de l Institut, qui permettent alors de conserver l intégrité de la base et le caractère commun de ces équipements. Cette solution a été adoptée et développée. Il a fallu aussi résoudre certaines interrogations sur les dates de début et de fin. Il a été décidé que par défaut la date de début serait la date d entrée de la nouvelle configuration (mais cela reste modifiable), et la date de fin serait par défaut NULL si le responsable est permanent, la date prévue de fin du contrat sinon. A cette date de fin s accorde un délai d une semaine pour permettre à l utilisateur de récupérer toute ressource qui lui est propre. 31

CONCLUSION Ce stage m a donc permis d une part d acquérir de l expérience en conception de modèles de données et d améliorer ma maîtrise du langage PHP mais surtout de mieux appréhender des connaissances en réseau peu approfondies à l IUT dans un contexte pratique, concret et actuel. Suite à sa validation, une première version de l application que j ai développée au cours de ce projet est maintenant mise en production et remplace l interface Webmin auparavant utilisée. Le dialogue avec les utilisateurs, ici mon maître de stage et son collègue, a été primordial pour la bonne compréhension de leurs besoins, autant fonctionnels que techniques : l application devait certes répondre à leur demande, mais aussi pouvoir permettre facilement une reprise efficace de son code en vue d une quelconque évolution. M. Pajot n a pas voulu que je lui fournisse une documentation technique, il a cependant tenu à ce que je commente le code de façon claire et complète. J ai pu travailler les derniers jours sur une extension qui permettrait de choisir à ce que certaines configurations ne soient pas gérées par le DHCP mais quand même filtrées par le RADIUS. Il reste à tester son bon fonctionnement. En effet divers ajouts sont possibles, notamment pour accompagner d éventuels changements de l architecture et du fonctionnement du réseau. Il est par exemple envisageable d adapter l application et la base de données pour qu elles soient compatibles avec des adresses IPv6, ou bien de généraliser certains traitements au niveau des adresses IP et des masques de sous-réseau, car actuellement certains problèmes ont été traité en tenant compte de certaines hypothèses susceptibles d évoluer. Il a aussi été discuté avec la DSI de l Université du problème des bornes Wi-Fi : elles ne communiquent pas au RADIUS les adresses MAC des machines connectées mais leur propre adresse. Il faudrait donc acheter des bornes Wi-Fi supportant le protocole RADIUS, ce qui représente un coût supplémentaire non négligeable. Le service informatique de l ISM est très satisfait de ma participation à ce projet, tout comme je le suis d avoir pu découvrir des solutions inédites à des problématiques intéressantes et intrinsèques aux questions de l actualité informatique portant sur la sécurité des réseaux et des données. 32

33

ANNEXES Glossaire Notions de réseau : Adresse IP : numéro stocké sous 4 octets (souvent représenté par 4 paquets de 3 chiffres séparés par des points) permettant l identification d un appareil connecté à un réseau. Adresse MAC : identifiant stocké sur 48 bits (souvent représenté par 6 paquets de 2 chiffres ou caractères hexadécimaux, soit 0-9 et A-E) unique d une carte réseau. Elle correspond à la deuxième couche du modèle OSI (couche de liaison). DHCP : (Dynamic Host Configuration Protocol) protocole réseau permettant d attribuer automatiquement des adresses IP aux machines. RADIUS : (Remote Authentication Dial In User Service) protocole client-serveur permettant de réguler l accès à un réseau (filtrage sur le port ethernet) grâce à des données d authentification. EAP : (Extensive Authentication Protocol) protocole de communication réseau permettant l authentification à un réseau filaire ou sans-fil. DNS : (Domain Name System) service permettant la résolution de noms de domaine en adresse IP pour permettre à la machine d y envoyer ses paquets. LDAP : (Lightweight Directory Access Protocol) protocole permettant l interrogation et la modification des services d annuaire, reposant sur TCP/IP. Notions de développement web : HTML : (HyperText Markup Language) langage standardisé d écriture de pages web, interprété par le navigateur pour l affichage. CSS : (Cascading Style Sheet) langage décrivant l apparence et le format d un document, le plus souvent écrit en HTML. Javascript : langage de programmation dynamique qui permet de manipuler le code HTML d une page web au cours de l exécution. PHP : (Hypertext PreProcessor) langage de script permettant de générer du code HTML par le serveur au chargement d une page web. 34